Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
agent-sweep — Détecter et masquer les secrets dans les historiques des agents de codage IA (Claude Code, et plus). | Kitploit
Outils/GitHubGitHub/ishannaik/agent-sweep
Exfiltration de DonnéesAnalyse ForensiqueRécupération de DonnéesDétection de SecretsSécurité de la Chaîne LogistiqueRéponse aux Incidents
GitHubishannaik/agent-sweep

agent-sweep

Détecter et masquer les secrets dans les historiques des agents de codage IA (Claude Code, et plus).

Voir le dépôt
57384il y a 3 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

AgentSweep

AgentSweep

Détectez et masquez les secrets dans l'historique local de votre agent de codage IA. Entièrement hors ligne.

PyPI version PyPI downloads CI License: MIT Python 3.11+ Offline GitHub Stars Visitors

Prévention : ne collez pas du tout de clés API dans des agents IA hébergés dans le cloud — la clé transite par les serveurs du fournisseur avant même d'atteindre votre disque.

Si vous l'avez déjà fait : agentsweep élimine le vecteur d'attaque local restant — les malwares de la chaîne d'approvisionnement et les paquets compromis qui analysent votre disque à la recherche d'identifiants. Vos fichiers ne quittent jamais votre machine.


29 agents pris en charge : 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

Sources expérimentales (Warp, Grok CLI, Kiro CLI, Zed, Codebuff, Plandex, Qwen Code, PearAI, Trae, Void, Junie, Mentat, JetBrains AI) ont des chemins/formats de stockage issus de recherches mais pas encore vérifiées sur une installation réelle. L'analyse est sûre — un mauvais chemin ne trouve simplement rien — mais elles peuvent sous-rapporter tant que ce n'est pas confirmé. Elles sont marquées (expérimental) dans le sélecteur et affichent un avis lors de l'analyse.

191 règles de détection — AWS, GitHub, Stripe, OpenAI, Anthropic, Google, Slack, Discord, HuggingFace, JWT, clés PEM, URL de base de données, phrases de récupération BIP-39, et bien d'autres

Alpha — chaque étape destructrice est verrouillée, sauvegardée et réversible avec une seule commande

Le problème

Claude Code (et tous les autres CLI de codage IA) stocke l'intégralité de votre historique de conversation sous forme de JSONL en texte brut sur le disque — sous ~/.claude/projects/ pour Claude Code, ~/.codex/sessions/ pour OpenAI Codex. Tout ce que vous collez — une clé AWS, un fichier .env, une URL de base de données — reste en clair indéfiniment. L'historique d'un développeur typique accumule des dizaines de secrets au fil des mois, souvent sans qu'il s'en aperçoive.

agentsweep analyse cet historique, vous dit ce qui a fuité, et peut masquer les valeurs secrètes sur place tout en préservant la structure JSONL octet pour octet. Il vous indique également quelles clés faire pivoter, avec la bonne URL de révocation pour chaque fournisseur.

Périmètre de protection : agentsweep lui-même est entièrement local et hors ligne — il ne lit et n'écrit que des fichiers sur votre machine et n'effectue aucun appel réseau. Il supprime un vecteur d'attaque : les secrets présents dans les fichiers d'historique locaux. Il n'affecte pas ce que votre fournisseur d'IA a déjà reçu : lorsque vous collez une clé dans Claude Code, Cursor ou tout agent hébergé dans le cloud, cette clé a déjà transité par les serveurs du fournisseur avant d'atteindre le disque. Si cela vous préoccupe, envisagez un modèle hébergé localement (Ollama, LM Studio, OpenCode) où rien ne quitte votre machine — agentsweep se marie particulièrement bien avec les configurations de modèles locaux.

Pourquoi c'est important maintenant

Les attaques de la chaîne d'approvisionnement s'accélèrent. En 2024-2025, une vague de paquets npm et PyPI malveillants — sha256-universal, shailulid, des centaines de typosquats — a été surprise en train de faire une seule chose : exfiltrer les identifiants de développeurs de la machine qui les avait installés. Ils ciblent les variables d'environnement, les fichiers .env, l'historique du shell, les clés SSH et désormais les fichiers d'historique des agents IA.

Les assistants de codage IA ont créé une nouvelle catégorie d'exposition d'identifiants qui n'existait pas il y a deux ans :

  • Vous collez une clé API de production dans Claude Code pour déboguer quelque chose → elle se retrouve pour toujours dans ~/.claude/projects/*/conversations/*.jsonl
  • Un paquet npm compromis exécute postinstall → analyse les chemins courants → trouve votre historique JSONL → exfiltre 50 clés API en une seule requête
  • Vous faites pivoter la clé utilisée en public mais oubliez la douzaine d'autres dans votre historique
  • Pendant ce temps, votre historique grossit : chaque .env pour lequel vous avez demandé de l'aide à une IA, chaque URL de base de données partagée pour déboguer, chaque jeton collé pour une commande d'une ligne

L'historique des agents IA est le nouveau .bash_history — sauf qu'il contient le contexte complet, pas seulement les commandes. Les outils d'attaque le savent déjà. agentsweep existe pour nettoyer avant que cela ne soit exploité.

Démarrage rapide

root@kitploit:~
pip install uv                  # get uv (skip if you already have it)
uv tool install agentsweep      # install — adds `agentsweep` and `asweep` to PATH
asweep                          # run — interactive menu guides you through everything

C'est tout. Aucun virtualenv à activer, pas de bidouillage du PATH — uv tool install donne à la commande son propre environnement isolé.

Comment ça marche

agentsweep exécute un pipeline fixe en 5 étapes. scan s'arrête après l'étape 3 ; fix poursuit jusqu'au masquage.

root@kitploit:~
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:#5a3a8b

Chaque écriture est protégée par 8 invariants de sécurité — remplacement atomique, sauvegarde .bak obligatoire, rejet des liens symboliques, verrous mtime/processus et validation JSONL après écriture. agentsweep undo restaure à partir des sauvegardes.

Installation

Recommandé — isolé, sans conflits de venv :

root@kitploit:~
uv tool install agentsweep      # one-time install
uv tool upgrade agentsweep      # update to latest

Essayez sans installer (exécute toujours la dernière version) :

root@kitploit:~
uvx agentsweep@latest

Pip classique :

root@kitploit:~
pip install agentsweep
pip install --upgrade agentsweep

Pas de uv ? pip install uv ou consultez astral.sh/uv. Nécessite Python 3.11+.

Utilisation

Mode interactif

Exécutez-le sans argument dans un terminal et vous obtenez l'expérience complète — bannière, menu numéroté, confirmations tapées avant toute action destructrice et annulation en une touche (restaure les sauvegardes .bak). Toute analyse interactive qui trouve des secrets se termine par une offre de les masquer sur-le-champ (tapez REDACT pour confirmer) :

root@kitploit:~
agentsweep

Le scripting n'est pas affecté : tout flag, ou un flux pipé/redirigé, ignore entièrement le menu et se comporte exactement comme documenté ci-dessous.

Verbes

La forme historique avec flag agentsweep --fix est toujours acceptée et se comporte à l'identique de agentsweep fix.

Sélection de la source

Choisissez l'historique de quel agent cibler avec --source. La valeur par défaut est claude-code.

root@kitploit:~
agentsweep scan --source claude-code          # ~/.claude/projects/ (default)
agentsweep scan --source codex                # ~/.codex/sessions/
agentsweep scan --source opencode             # OpenCode SQLite store
agentsweep scan --source cursor               # Cursor history
agentsweep scan --source windsurf             # Windsurf history
agentsweep scan --source aider                # ~/.aider/
agentsweep scan --source cline                # Cline history
agentsweep scan --source gemini-cli           # Gemini CLI history
agentsweep scan --source continue-vscode      # Continue (VS Code) history
agentsweep scan --source github-copilot-chat  # GitHub Copilot Chat history
agentsweep scan --source openclaw             # OpenClaw ~/.openclaw/
agentsweep scan --source hermes               # Hermes Agent ~/.hermes/state.db
agentsweep scan --source goose                # Goose ~/.local/share/goose/

Vous ne savez pas quels agents sont installés ? list-sources affiche chaque source prise en charge, son emplacement d'historique et si cet historique existe sur cette machine — pour savoir quelles valeurs --source valent la peine d'être analysées. Il ne lit rien et n'écrit rien.

root@kitploit:~
agentsweep list-sources             # all 29 sources + which are on disk
agentsweep list-sources --detected  # only the ones found on this machine
agentsweep list-sources --json      # machine-readable (for scripts/CI)

Analysez tous les agents enregistrés en une seule passe (résultats agrégés ; le masquage reste par source) :

root@kitploit:~
agentsweep scan --all                 # all registered sources
agentsweep scan --all --detected      # only sources with a history root on disk
agentsweep scan --all --json          # aggregated JSON (each finding has "source")
agentsweep scan --all --json -o out.json

Remplacez le répertoire racine par défaut pour analyser n'importe quel dossier :

root@kitploit:~
agentsweep scan --root ~/backups/claude-history
agentsweep fix  --root /tmp/history-copy --allow-production

Flags de scan / fix

root@kitploit:~
# Machine-readable JSON to stdout (exit 0 = clean, 1 = findings found, 2 = error)
agentsweep scan --json

# Write findings JSON to a file instead of stdout
agentsweep scan --json -o findings.json
agentsweep scan --json --output /tmp/report.json

# Skip .agentsweepignore files
agentsweep scan --no-ignore

Flags réservés au fix

root@kitploit:~
# Redact Claude Code history in place (--allow-production required for default roots during alpha)
agentsweep fix --allow-production

# Skip creating .bak backups (not recommended)
agentsweep fix --allow-production --no-backup

# Bypass soft safety checks: mtime gate (files modified <60 s ago) and running-process gate
agentsweep fix --allow-production --force

# Combine: non-interactive JSON-mode redaction against a custom root
agentsweep fix --root ~/history-copy --json

Flags d'annulation

root@kitploit:~
# Undo redactions for a specific source
agentsweep undo --source codex

# Undo against a custom root
agentsweep undo --root ~/history-copy

Garanties contre la corruption

Un outil de masquage qui corrompt votre historique est strictement pire que la fuite qu'il corrige. agentsweep applique ces invariants à chaque --fix :

  1. Le masquage se fait dans le JSON parsé, pas sur les octets bruts. Les secrets sont remplacés en tant que valeurs de chaînes dans la structure parsée, puis resérialisés. Les dommages structurels sont impossibles par construction.
  2. Écritures atomiques. Chaque réécriture se déroule ainsi : fichier temporaire → fsync() → os.replace() sur l'original. Un crash à n'importe quel instant laisse soit l'ancien fichier complet, soit le nouveau fichier complet — jamais une écriture interrompue.
  3. Validation après écriture. Avant de valider, le nouveau contenu doit réussir une vérification adaptée au format : JSONL — chaque ligne non vide est parsée comme du JSON et le nombre de lignes correspond à l'original ; JSON sur tout le fichier — le document est parsé ; markdown/texte brut — le nombre de lignes correspond à l'original ; SQLite — la copie réécrite réussit PRAGMA integrity_check. Si la vérification échoue, l'écriture est abandonnée et l'original reste intact.
  4. Sauvegarde .bak par défaut. Créée lisible uniquement par le propriétaire (mode 0600) car elle contient les secrets avant masquage ; refuse de s'exécuter si un .bak existe déjà (afin que les sauvegardes précédentes ne puissent pas être écrasées).
  5. Confinement des chemins. Refuse toute cible qui ne se résout pas dans l'une des arborescences d'historique de la source (par ex. le répertoire User de Windsurf et son ~/.codeium/windsurf/memories/).
  6. Rejet des liens symboliques. Refuse les liens symboliques sans appel.

Récupération

Chaque fichier masqué possède un fichier *.bak voisin contenant les octets d'origine. Le moyen le plus simple d'annuler tous les masquages pour une source est :

root@kitploit:~
agentsweep undo                        # undo Claude Code (default)
agentsweep undo --source codex         # undo a specific source
agentsweep undo --root ~/history-copy  # undo against a custom root

Si vous devez restaurer manuellement un seul fichier (par ex. vous avez supprimé la source de la commande undo) :

root@kitploit:~
mv session.jsonl.bak session.jsonl

Les sauvegardes contiennent les originaux d'avant masquage — des secrets en clair, donc un nettoyage n'est terminé qu'une fois les clés fuitées pivotées et les sauvegardes supprimées. Une fois que vous les avez fait pivoter :

root@kitploit:~
agentsweep purge                       # delete Claude Code backups (asks first)
agentsweep purge --source windsurf     # delete a specific source's backups
agentsweep purge --yes                 # non-interactive (scripts / CI)

Ce qui est détecté

191 modèles à haute confiance plus un détecteur de phrases de récupération crypto validé par somme de contrôle — les mnémoniques BIP-39 (12/15/18/21/24 mots ; le format de portefeuille derrière BTC, ETH, SOL, BNB, ADA, DOGE, LTC, DOT, AVAX et pratiquement toutes les grandes chaînes) et les graines Electrum sont confirmés cryptographiquement (somme de contrôle BIP-39 / étiquette de version Electrum), donc un texte anglais qui utilise par hasard des mots de portefeuille ne produit jamais de faux positifs.

Les modèles : clés d'accès AWS, jetons GitHub (PAT/OAuth/App/fine-grained), Stripe live/test, OpenAI, Anthropic, Google API, Slack bot/utilisateur/webhook, Hugging Face, JWT, clés privées PEM, URL de base de données avec mots de passe intégrés, jetons npm/PyPI/SendGrid/Twilio — plus 167 règles portées depuis le pack gitleaks couvrant 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, identifiants curl en ligne de commande, et bien d'autres. Les modèles sont très précis — les faux positifs sont rares, et les règles contextuelles par fournisseur sont limitées par mots-clés pour que les gros collages restent rapides.

Ce qui n'est PAS détecté

  • Secrets personnalisés/propriétaires sans préfixe reconnaissable.
  • Phrases de récupération Monero (25 mots issus de la propre liste de mots de Monero — prévu).
  • Jetons inconnus qui ressemblent à du base64 arbitraire.
  • Secrets répartis sur plusieurs messages.
  • Tout ce qui se trouve dans un fichier binaire/non UTF-8.

Pour une détection plus poussée, exécutez gitleaks ou trufflehog en complément d'agentsweep — leurs packs de règles sont plus exhaustifs. La valeur d'agentsweep réside dans la surface spécifique à l'historique des agents, pas dans le moteur de détection.

FAQ

Pourquoi uvx agentsweep affiche-t-il une ancienne version ? uvx met en cache les outils localement. Utilisez uvx agentsweep@latest pour toujours exécuter la version la plus récente (recommandé), ou forcez l'actualisation du cache avec uvx --reinstall agentsweep.

Où est OpenCode dans le menu ? La prise en charge d'OpenCode a été ajoutée dans la v0.1.1. Exécutez pip install --upgrade agentsweep ou uvx agentsweep@latest pour l'obtenir.

Est-ce qu'agentsweep envoie mes données quelque part ? Non. Il est entièrement hors ligne — zéro appel réseau pendant l'analyse ou le masquage. Le seul appel réseau facultatif est la vérification de mise à jour en arrière-plan, qui ne récupère que le numéro de la dernière version depuis PyPI.

Contributeurs

Merci à tous ceux qui ont contribué du code, des signalements de bugs et des idées.

Contributors

Licence

MIT. Voir LICENSE.

Télécharger l’outil
CommandeEffet
agentsweep scanAnalyse uniquement — lecture seule, aucun fichier modifié (comportement par défaut si aucun verbe n'est donné)
agentsweep fixAnalyse, puis propose de masquer les résultats sur place (tapez REDACT pour confirmer)
agentsweep undoRestaure toutes les sauvegardes .bak, annulant tout masquage précédent
agentsweep purgeSupprime toutes les sauvegardes .bak une fois les clés fuitées pivotées (définitif — undo ne fonctionne plus)
agentsweep list-sourcesListe chaque agent pris en charge et indique lesquels ont un historique sur cette machine (lecture seule)
agentsweep --version / -VAffiche la version installée
agentsweep --updateVérifie sur PyPI qu'une version plus récente existe
  • Fenêtre mtime. Refuse les fichiers modifiés dans les 60 dernières secondes (probablement une session active). --force passe outre.
  • Vérification des processus en cours. Refuse si un processus Claude Code semble en cours d'exécution. --force passe outre.
  • Verrou de production en phase alpha. --fix sur la racine par défaut ~/.claude/projects/ exige --allow-production jusqu'à la v1.0.
  • Journal d'audit. Chaque écriture ajoute le SHA256 avant/après et le chemin dans ~/.agentsweep/audit.jsonl.