
Geheimnisse finden und schwärzen in Verläufen von KI-Code-Agenten (Claude Code und mehr).

Finde und schwärze Geheimnisse im lokalen Verlauf deines KI-Code-Agenten. Vollständig offline.
Prävention: Füge keine API-Schlüssel in cloudgestützte KI-Agenten ein – der Schlüssel durchläuft die Server des Anbieters, bevor er deine Festplatte erreicht.
Wenn du es bereits getan hast: agentsweep entfernt den verbleibenden lokalen Angriffsvektor – Supply-Chain-Malware und kompromittierte Pakete, die deine Festplatte nach Anmeldeinformationen durchsuchen. Deine Dateien verlassen niemals deinen Rechner.
29 Agenten unterstützt: Claude Code · Codex · OpenCode · Cursor · Windsurf · Aider · Cline · Kilo Code · Roo Code · PearAI · Trae · Void · Gemini CLI · Qwen Code · Continue · Open Interpreter · GitHub Copilot Chat · OpenClaw · Hermes · Goose · Warp · Grok CLI · Kiro CLI · Zed · Codebuff · Plandex · Junie · Mentat · JetBrains AI
Experimentelle Quellen (Warp, Grok CLI, Kiro CLI, Zed, Codebuff, Plandex, Qwen Code, PearAI, Trae, Void, Junie, Mentat, JetBrains AI) haben Speicherpfade/-formate, die aus Recherchen abgeleitet, aber noch nicht an einer echten Installation verifiziert wurden. Das Scannen ist sicher – ein falscher Pfad findet einfach nichts –, aber sie könnten unterrepräsentieren, bis bestätigt. Sie werden im Auswahlmenü als
(experimentell)gekennzeichnet und geben beim Scannen einen Hinweis aus.
191 Erkennungsregeln – AWS, GitHub, Stripe, OpenAI, Anthropic, Google, Slack, Discord, HuggingFace, JWT, PEM-Schlüssel, DB-URLs, BIP-39-Seed-Phrasen und viele weitere
Alpha – jeder destruktive Schritt wird gesichert, geschützt und mit einem Befehl rückgängig gemacht
Claude Code (und jeder andere KI-Code-CLI) speichert deinen vollständigen Gesprächsverlauf als Klartext-JSONL auf der Festplatte – unter ~/.claude/projects/ für Claude Code, ~/.codex/sessions/ für OpenAI Codex. Alles, was du einfügst – ein AWS-Schlüssel, eine .env-Datei, eine Datenbank-URL – liegt auf unbestimmte Zeit im Klartext vor. Der Verlauf eines typischen Entwicklers sammelt im Laufe der Monate Dutzende von Geheimnissen an, oft ohne dass es ihnen bewusst ist.
agentsweep durchsucht diesen Verlauf, teilt dir mit, was durchgesickert ist, und kann die Geheimniswerte an Ort und Stelle schwärzen, während die JSONL-Struktur bytegenau erhalten bleibt. Es sagt dir auch, welche Schlüssel du rotieren lassen solltest, mit der richtigen Widerruf-URL für jeden Anbieter.
Schutzumfang: agentsweep selbst ist vollständig lokal und offline – es liest und schreibt nur Dateien auf deinem Rechner und tätigt keine Netzwerkaufrufe. Es entfernt einen Angriffsvektor: Geheimnisse, die in lokalen Verlaufsdateien liegen. Es hat keine Auswirkung darauf, was dein KI-Anbieter bereits erhalten hat: Wenn du einen Schlüssel in Claude Code, Cursor oder einen anderen cloudgestützten Agenten einfügst, hat dieser Schlüssel bereits die Server des Anbieters durchlaufen, bevor er auf die Festplatte gelangte. Wenn dich das beunruhigt, ziehe ein lokal gehostetes Modell in Betracht (Ollama, LM Studio, OpenCode), bei dem nichts deinen Rechner verlässt – agentsweep passt besonders gut zu lokalen Modell-Setups.
Supply-Chain-Angriffe nehmen zu. In den Jahren 2024–2025 wurde eine Welle bösartiger npm- und PyPI-Pakete – sha256-universal, shailulid, Hunderte von Typosquats – dabei erwischt, genau eine Sache zu tun: Entwickler-Anmeldeinformationen von dem Rechner zu exfiltrieren, auf dem sie installiert wurden. Sie zielen auf Umgebungsvariablen, .env-Dateien, Shell-Verlauf, SSH-Schlüssel und jetzt auch auf KI-Agent-Verlaufsdateien.
KI-Programmierassistenten haben eine neue Kategorie von Credential-Exposition geschaffen, die es vor zwei Jahren noch nicht gab:
~/.claude/projects/*/conversations/*.jsonlpostinstall aus → scannt gängige Pfade → findet deine JSONL-Verläufe → exfiltriert 50 API-Schlüssel in einer einzigen Anfrage.env, bei dem du eine KI um Hilfe gebeten hast, jede DB-URL, die du zum Debuggen geteilt hast, jedes Token, das du für einen Einzeiler eingefügt hastKI-Agent-Verlauf ist das neue .bash_history – nur dass er den vollständigen Kontext enthält, nicht nur Befehle. Die Angriffswerkzeuge wissen das bereits. agentsweep existiert, um aufzuräumen, bevor es ausgenutzt wird.
pip install uv # uv holen (überspringen, falls bereits vorhanden)
uv tool install agentsweep # installieren – fügt `agentsweep` und `asweep` zum PATH hinzu
asweep # ausführen – interaktives Menü führt dich durch alles
Das war's. Kein virtualenv zum Aktivieren, kein PATH-Gebastel – uv tool install gibt dem Befehl seine eigene isolierte Umgebung.
agentsweep durchläuft eine feste 5-stufige Pipeline. scan endet nach Stufe 3; fix fährt bis zur Schwärzung fort.
flowchart LR
A("🔍 DISCOVER\nwalk history dirs\nstream file list") --> B("⚡ SCAN\nAho-Corasick pre-filter\n191 regex rules + BIP-39")
B --> C{"secrets\nfound?"}
C -- "none" --> D("✅ CLEAN\nexit 0")
C -- "found" --> E("📋 FINDINGS\nshow report\nexit 1")
E -. "scan only" .-> F("⚠️ ROTATE\nkeys still live")
E -- "type REDACT" --> G("✏️ REDACT\natomic write · .bak backup\npost-write JSON validation")
G --> H("🔑 ROTATE\nper-provider\nrevocation links")
style A fill:#1e3a5f,color:#fff,stroke:#2d5986
style B fill:#1e3a5f,color:#fff,stroke:#2d5986
style C fill:#4a3728,color:#fff,stroke:#7a5c3f
style D fill:#1a4731,color:#fff,stroke:#2d7a52
style E fill:#4a3a1e,color:#fff,stroke:#7a6030
style F fill:#4a2020,color:#fff,stroke:#8b3a3a
style G fill:#1e3a5f,color:#fff,stroke:#2d5986
style H fill:#2d1e4a,color:#fff,stroke:#5a3a8bJeder Schreibvorgang ist durch 8 Sicherheitsinvarianten geschützt – atomares Ersetzen, obligatorische .bak-Sicherung, Symlink-Ablehnung, mtime/Prozess-Sperren und JSONL-Validierung nach dem Schreiben. agentsweep undo stellt aus den Backups wieder her.
Empfohlen – isoliert, keine venv-Konflikte:
uv tool install agentsweep # einmalige Installation
uv tool upgrade agentsweep # auf die neueste Version aktualisieren
Ausprobieren ohne Installation (immer die neueste Version):
uvx agentsweep@latest
Klassisches pip:
pip install agentsweep
pip install --upgrade agentsweep
Hast du
uvnicht?pip install uvoder siehe astral.sh/uv. Erfordert Python 3.11+.
Ohne Argumente in einem Terminal ausführen und du erhältst das vollständige Erlebnis – Banner,
nummeriertes Menü, bestätigte Eingaben vor zerstörerischen Aktionen und Einschritt-Rückgängig (stellt die .bak-Backups wieder her). Jeder interaktive Scan, der Geheimnisse findet, endet mit einem Angebot, sie sofort zu schwärzen (REDACT zur Bestätigung eingeben):
agentsweep
Die Skripterstellung wird nicht beeinträchtigt: Jegliches Flag oder ein gepipter/umgeleiteter Stream überspringt das Menü und verhält sich genau wie unten dokumentiert.
Die veraltete Flag-Form agentsweep --fix wird ebenfalls akzeptiert und verhält sich identisch zu agentsweep fix.
Wähle mit --source aus, auf welchen Agentenverlauf abgezielt werden soll. Standard ist claude-code.
agentsweep scan --source claude-code # ~/.claude/projects/ (Standard)
agentsweep scan --source codex # ~/.codex/sessions/
agentsweep scan --source opencode # OpenCode SQLite Store
agentsweep scan --source cursor # Cursor-Verlauf
agentsweep scan --source windsurf # Windsurf-Verlauf
agentsweep scan --source aider # ~/.aider/
agentsweep scan --source cline # Cline-Verlauf
agentsweep scan --source gemini-cli # Gemini CLI-Verlauf
agentsweep scan --source continue-vscode # Continue (VS Code)-Verlauf
agentsweep scan --source github-copilot-chat # GitHub Copilot Chat-Verlauf
agentsweep scan --source openclaw # OpenClaw ~/.openclaw/
agentsweep scan --source hermes # Hermes Agent ~/.hermes/state.db
agentsweep scan --source goose # Goose ~/.local/share/goose/
Nicht sicher, welche Agenten du installiert hast? list-sources gibt jede unterstützte Quelle, ihren Verlaufsort und aus, ob dieser Verlauf auf diesem Rechner existiert – damit du weißt, welche --source-Werte es wert sind, gescannt zu werden. Es liest nichts und schreibt nichts.
agentsweep list-sources # alle 29 Quellen + welche auf der Platte sind
agentsweep list-sources --detected # nur die auf diesem Rechner gefundenen
agentsweep list-sources --json # maschinenlesbar (für Skripte/CI)
Scanne jeden registrierten Agenten in einem Durchlauf (aggregierte Funde; Schwärzung bleibt pro Quelle):
agentsweep scan --all # alle registrierten Quellen
agentsweep scan --all --detected # nur Quellen mit einem Verlaufsstamm auf der Platte
agentsweep scan --all --json # aggregiertes JSON (jeder Fund enthält "source")
agentsweep scan --all --json -o out.json
Überschreibe das Standard-Stammverzeichnis, um einen beliebigen Ordner zu scannen:
agentsweep scan --root ~/backups/claude-history
agentsweep fix --root /tmp/history-copy --allow-production
# Maschinenlesbares JSON auf stdout (Exit 0 = sauber, 1 = Funde vorhanden, 2 = Fehler)
agentsweep scan --json
# Funde-JSON in eine Datei statt stdout schreiben
agentsweep scan --json -o findings.json
agentsweep scan --json --output /tmp/report.json
# .agentsweepignore-Dateien überspringen
agentsweep scan --no-ignore
# Claude Code-Verlauf in place schwärzen (--allow-production für Standard-Stämme während Alpha erforderlich)
agentsweep fix --allow-production
# Keine .bak-Backups erstellen (nicht empfohlen)
agentsweep fix --allow-production --no-backup
# Weiche Sicherheitsprüfungen umgehen: mtime-Sperre (vor <60 s geänderte Dateien) und laufende Prozess-Sperre
agentsweep fix --allow-production --force
# Kombinieren: nicht-interaktive JSON-Schwärzung gegen ein benutzerdefiniertes Stammverzeichnis
agentsweep fix --root ~/history-copy --json
# Schwärzungen für eine bestimmte Quelle rückgängig machen
agentsweep undo --source codex
# Rückgängig gegen ein benutzerdefiniertes Stammverzeichnis
agentsweep undo --root ~/history-copy
Ein Schwärzer, der deinen Verlauf beschädigt, ist streng genommen schlimmer als das Leck, das er behebt. agentsweep erzwingt diese Invarianten bei jedem --fix:
fsync() → os.replace() über dem Original. Ein Absturz in jedem Augenblick hinterlässt entweder die vollständige alte Datei oder die vollständige neue Datei – niemals einen zerrissenen Schreibvorgang.PRAGMA integrity_check. Wenn die Prüfung fehlschlägt, wird der Schreibvorgang abgebrochen und das Original bleibt unberührt..bak-Sicherung standardmäßig. Wird nur lesbar für den Besitzer erstellt (Modus 0600), da es die Geheimnisse vor der Schwärzung enthält; weigert sich, wenn bereits ein .bak existiert (damit frühere Sicherungen nicht überschrieben werden können).~/.codeium/windsurf/memories/).Jede geschwärzte Datei hat eine Geschwisterdatei *.bak mit den ursprünglichen Bytes. Der einfachste Weg, alle Schwärzungen für eine Quelle rückgängig zu machen, ist:
agentsweep undo # Claude Code rückgängig (Standard)
agentsweep undo --source codex # eine bestimmte Quelle rückgängig machen
agentsweep undo --root ~/history-copy # rückgängig gegen ein benutzerdefiniertes Stammverzeichnis
Wenn du eine einzelne Datei manuell wiederherstellen musst (z. B. weil du die Quelle des Rückgängig-Befehls gelöscht hast):
mv session.jsonl.bak session.jsonl
Die Backups enthalten die Originale vor der Schwärzung – Klartext-Geheimnisse, daher ist eine Säuberung erst abgeschlossen, wenn die durchgesickerten Schlüssel rotiert und die Backups gelöscht wurden. Sobald du rotiert hast:
agentsweep purge # Claude Code-Backups löschen (fragt zuerst)
agentsweep purge --source windsurf # Backups einer bestimmten Quelle löschen
agentsweep purge --yes # nicht-interaktiv (Skripte / CI)
191 hochpräzise Muster plus ein prüfsummenvalidierter Krypto-Seed-Phrasen-Detektor – BIP-39-Mnemonics (12/15/18/21/24 Wörter; das Wallet-Format hinter BTC, ETH, SOL, BNB, ADA, DOGE, LTC, DOT, AVAX und praktisch jeder großen Chain) und Electrum-Seeds werden kryptografisch bestätigt (BIP-39-Prüfsumme / Electrum-Versionstag), sodass englische Prosa, die zufällig Wallet-Wörter verwendet, niemals falsch positiv ist.
Die Muster: AWS-Zugriffsschlüssel, GitHub-Token (PAT/OAuth/App/feingranular), Stripe live/test, OpenAI, Anthropic, Google API, Slack bot/user/webhook, Hugging Face, JWT, PEM-Private-Keys, DB-URLs mit eingebetteten Passwörtern, npm/PyPI/SendGrid/Twilio-Token – plus 167 Regeln, die aus dem gitleaks-Paket portiert wurden und GitLab, Grafana, HashiCorp Vault/Terraform, DigitalOcean, Shopify, PlanetScale, Databricks, Atlassian, Azure AD, 1Password, Sentry, New Relic, Mailgun, Datadog, Twilio, Twitter/X, Twitch, Yandex, JFrog, Snyk, Mailchimp, curl-Anmeldeinformationen in der Befehlszeile und viele mehr abdecken. Die Muster sind hochpräzise – falsch Positive sind selten, und anbieterkontextbezogene Regeln sind stichwortgeschützt, sodass große Einfügungen schnell bleiben.
Für eine tiefere Erkennung führe gitleaks oder trufflehog zusammen mit agentsweep aus – deren Regelpakete sind umfassender. agentsweeps Wert liegt in der agentenverlaufsspezifischen Oberfläche, nicht in der Erkennungsengine.
Warum zeigt uvx agentsweep eine alte Version an?
uvx speichert Tools lokal zwischen. Verwende uvx agentsweep@latest, um immer die neueste Version auszuführen (empfohlen), oder erzwinge eine Cache-Aktualisierung mit uvx --reinstall agentsweep.
Wo ist OpenCode im Menü?
OpenCode-Unterstützung wurde in v0.1.1 hinzugefügt. Führe pip install --upgrade agentsweep oder uvx agentsweep@latest aus, um sie zu erhalten.
Sendet agentsweep meine Daten irgendwohin? Nein. Es ist vollständig offline – null Netzwerkaufrufe während des Scannens oder Schwärzens. Der einzige optionale Netzwerkaufruf ist die Hintergrund-Update-Prüfung, die lediglich die neueste Versionsnummer von PyPI abruft.
Danke an alle, die Code, Fehlerberichte und Ideen beigetragen haben.
MIT. Siehe LICENSE.
| Befehl | Wirkung |
|---|
agentsweep scan | Nur scannen – schreibgeschützt, keine Dateien werden verändert (Standard, wenn kein Verb angegeben) |
agentsweep fix | Scannen, dann anbieten, die Funde in place zu schwärzen (REDACT zur Bestätigung eingeben) |
agentsweep undo | Alle .bak-Backups wiederherstellen, wodurch vorherige Schwärzungen rückgängig gemacht werden |
agentsweep purge | Alle .bak-Backups löschen, sobald die durchgesickerten Schlüssel rotiert wurden (endgültig – undo funktioniert dann nicht mehr) |
agentsweep list-sources | Jeden unterstützten Agenten auflisten und anzeigen, welche auf diesem Rechner einen Verlauf haben (schreibgeschützt) |
agentsweep --version / -V | Installierte Version ausgeben |
agentsweep --update | PyPI auf eine neuere Version überprüfen |
--force überschreibt.--force überschreibt.--fix gegen das Standard-Stammverzeichnis ~/.claude/projects/ erfordert --allow-production bis v1.0.~/.agentsweep/audit.jsonl an.