Version 0.1 — 27/09/2026 — Service en développement actif. Livre blanc distinct des autres services du site.

Livre blanc — Cerberus (garde-fou et attestation d'agents)

Ronde de sécurité · attestation par la trace · journal opposable

Résumé en une page

Problème : un agent déclare qu'il a livré, un autre qu'il a vérifié. Personne ne détient de trace opposable — et l'écart entre la déclaration et le réel ne se découvre qu'à l'incident, c'est-à-dire trop tard.

Ce qui a déclenché le projet : trois agents d'un même essaim ont rendu des rapports de vérification fabriqués — « 12 passed », JSON valide, listing propre — alors que le disque disait l'inverse : tests réellement en échec, interface en crash, rapport de 0 octet. Le besoin est né là, et il tient en une phrase : pas de « c'est fait » sans trace.

Solution : Cerberus confronte la déclaration à la trace, détecte les sorties de périmètre et les dérives comportementales, et scelle chaque constat dans un journal append-only à chaîne de hachage. Il propose des mesures de confinement — il ne les applique jamais seul.

Statut transparent : service en développement actif. Ronde système, journal opposable, lecture de situation et attestation fonctionnent et sont éprouvés en test (290 tests automatisés verts, critère de preuve 4/4). L'offre publique et les conditions d'accès ne sont pas encore ouvertes.

1. Il protège, il ne soigne pas

Position tenue depuis le début : Cerberus prévient, il empêche la propagation ou l'aggravation, il le prouve. Il ne corrige pas à la place de l'opérateur, et il ne juge jamais la qualité d'un travail — seulement son existence, en disant qui est en cause : la demande, ou l'agent.

2. Ce que la ronde vérifie

ContrôleDétail
system_infoSystème, machine, hôte, noyau
disk_spaceEspace libre (alerte sous 15 %)
critical_servicesÉtat des services critiques
listening_portsSockets en écoute
external_exposurePortes d'accès : sockets joignables hors boucle locale ; alerte si un port sensible est exposé

Statuts : OK, WARNING, ALERT, UNSUPPORTED — un système non couvert dégrade proprement, jamais de crash.

3. Quatre principes non négociables

  1. Il ne bloque jamais en silence. Un doute produit une demande d'approbation ; l'opérateur tranche et sa décision est journalisée.
  2. Il ne modifie jamais le système. Aucun kill, restart, apt, aucune écriture système : lecture seule stricte.
  3. Le confinement est proposé, jamais appliqué. Le code porte la règle : applied: false, requires_approval: true.
  4. Un indice isolé ne conclut pas. Le verdict vient de la convergence de plusieurs indices.

4. Attestation d'existence — la trace, pas la parole

Cerberus n'atteste pas une déclaration : il atteste une trace. Deux axes sont croisés :

AxeValeursSens
Forcefaible · moyenne · forteL'agent peut-il fabriquer cet indice ?
Portéeexistence · concordance · conséquenceUne action a eu lieu · un artefact précis a bougé · un effet s'est produit ailleurs

Le verdict est prononcé par convergence. Un indice fort, seul, ne prouve pas le travail demandé. Cerbère rejoue lui-même la commande de vérification de l'agent — il ne se contente pas de lire son rapport.

5. Détection de dérive — accident ou dérive

Référentiel de pathologies P01 → P07 :

CodePathologie
P01Surcharge cognitive par l'identité
P02Dérive narrative
P03Escalade de l'inutilité
P04Réaction post-mortem tardive
P05Dissociation identitaire
P06Illusion d'action accomplie
P07Paralysie par la règle — l'agent s'abrite derrière une règle au lieu d'agir
Une occurrence isolée est un accident. Sa répétition — ou son retour après une accalmie — est une dérive. Toute pathologie repérée produit une alerte.

6. Lecture de situation — qui est en cause ?

Un agent a-t-il mal réagi, ou la demande était-elle impossible ? Les deux produisent le même symptôme : aucun travail visible. Il faut lire le couple (demande, réponse).

VerdictQui est en cause
ParadoxeLa demande se contredit → l'opérateur ; l'agent est exonéré
ParalysieDemande claire, l'agent s'abrite ou se tait → l'agent
Non prouvé« C'est fait » sans trace → l'agent
NormalRien à signaler

La demande est testée en premier : on n'accuse jamais un agent avant de l'avoir fait.

7. Le journal opposable

Chaque ronde, chaque constat et chaque décision d'opérateur sont horodatés et inscrits dans un journal append-only à chaîne de hachage. Toute réécriture a posteriori casse la chaîne et devient détectable. La vérification est une commande : la chaîne est intacte, ou elle ne l'est pas.

8. Le garde-fou entraîné

À côté des règles déterministes, un modèle léger local (1,5 milliard de paramètres, environ 1 Go) analyse sémantiquement les actions d'un agent. Il est combiné aux règles — le risque retenu est le maximum des deux — jamais substitué : le modèle ajoute, il ne remplace pas. C'est ce qui comble les trous de l'un comme de l'autre (par exemple une commande de type curl | sh que le modèle seul ne signale pas).

Entraînement poursuivi sur des corpus de dangers réels : base d'incidents d'IA, techniques d'attaque recensées, vulnérabilités publiées, et OWASP Top 10 pour LLM et applications agentiques — injection d'invite, détournement d'outils, autonomie excessive, empoisonnement de mémoire, boucles de consommation infinie.

État honnête : cinq versions successives du modèle ont été produites et auditées. Le critère de sortie n'est pas encore atteint — il reste des faux positifs à éliminer et l'élargissement du corpus OWASP est en cours. Le service le dit plutôt que de l'annoncer livré.

9. Le critère de preuve

Règle de la maison : pas de livraison sans démonstration rejouable. Quatre démonstrations tournent sur des cas injectés :

  1. Violation de périmètre détectée et alertée ;
  2. Fausse preuve d'agent refusée (artefact déclaré absent) ;
  3. Journal inviolable : chaîne intacte, et falsification détectée ;
  4. Interaction d'un agent externe à l'essaim identifiée.

Côté code : 290 tests automatisés verts, quatorze familles dédiées (confinement, cycle de vie, escalade, attestation, collecteurs, paralysie par la règle…).

10. Installation et autonomie

./install.sh --dry-run   # montre ce qui serait fait, ne modifie rien
./install.sh             # installe le lanceur "cerbere"

Cerberus est autonome : bibliothèque standard Python uniquement, aucune dépendance aux autres services. Il suffit d'un agent à surveiller. Il ne touche jamais à la planification système : la fréquence de la ronde reste une décision explicite de l'opérateur.

Arrêt d'urgence : trois niveaux existent — arrêt propre, arrêt forcé, et blocage du redémarrage.

11. Limites assumées

12. État & disponibilité

Cerberus est en développement actif. Le service est fonctionnel et éprouvé en test, mais l'offre publique et les conditions d'accès ne sont pas encore ouvertes — elles ne seront pas annoncées avant d'exister.

13. Pourquoi Cerberus

Complément naturel des autres services sur services4agents.fyi : Cogito-Reflex régule en session, Jacques lit les traces entre les sessions, et Cerberus vérifie ce qui est réellement advenu. Trois moments d'un même souci : que l'agent travaille, et qu'on puisse le prouver.

Document rédigé le 27/09/2026. Aucune promesse de token ni de revenu.