Enregistreur de vol et scanner de secrets pour les agents de codage IA. Lit ce que Claude Code, Codex, Gemini CLI et 9 autres ont exécuté, et signale les actions risquées et les clés divulguées. Fonctionne localement, sans télémétrie, MIT.
Un enregistreur de vol pour les agents IA, et un scanner pour l'autorité qu'ils détiennent. Sécurité des agents de codage IA pour Claude Code et onze autres agents de codage, exécuté sur votre propre machine. Pas de compte, pas de télémétrie, pas de dépendances.
Site web et documentation : https://ranwhat.com
Votre agent de codage a votre shell, vos clés et votre dépôt. ranwhat lit
ce qu'il a réellement exécuté et fait ressortir la poignée d'actions irréversibles qui valent
la peine d'être connues.
$ ranwhat watch --days 90
ranwhat watch · local agent flight recorder
----------------------------------------------------------------------------
Read Claude Code: 4 transcripts, last 90 days
2 critical 2 high
* Credential material accessed 2026-09-30 18:13:00 Bash
cat ~/.ssh/id_rsa
-> The agent read a file whose only purpose is to hold secrets. Whatever
it read is now in a model context you do not control.
* Bulk or recursive deletion 2026-09-28 14:42:00 Bash
…rm -rf '@'
-> Recursive deletion. Recoverable only if something else was backing it
up.
* Package or release published 2026-09-21 11:05:00 Bash
npm publish
-> Something was pushed to a registry other people may install from.
Supply-chain reach, and usually irreversible.
* Destructive git operation 2026-09-15 17:30:00 Bash
git push --force origin main
-> History rewriting or branch deletion. This is the class of action
that destroys the record of what else happened.
----------------------------------------------------------------------------
Read locally. Nothing was transmitted.
Claude Code supprime la transcription d'une session que vous n'avez pas utilisée depuis plus de
cleanupPeriodDays,
30 jours par défaut. Donc --days 90 en trouve davantage si vous l'avez augmenté, si une session
que vous avez reprise durant cette période contient des actions plus anciennes, ou pour les sessions
démarrées ou poursuivies pour la dernière fois dans Claude Desktop ou Cowork, que Claude Code
v2.1.248 et versions ultérieures
conserve à tout âge par défaut.
Exécutez-le une fois, sans rien installer :
uvx ranwhat check
Ou mettez-le dans votre PATH :
pipx install ranwhat
pip install ranwhat
Ensuite ranwhat demo montre un scan d'autorité sur un exemple fourni.
Python 3.9+. Aucune dépendance, et rien n'est compilé sur votre machine.
ranwhat check : tout ce qui vaut la peine d'être su, en une seule passe en lecture seuleExécute watch et clean ensemble et ne change rien.
Sur un terminal, check, watch et clean gardent une ligne de statut sur stderr pendant
qu'ils lisent, comptant les transcriptions à chaque passe : indexing secrets
((first run) la première fois), checking actions, looking for secrets.
Rien n'y est écrit quand stderr n'est pas un terminal, ou avec --json.
ranwhat watch : auditez ce que Claude Code et vos autres agents ont exécutéLit ce que Claude Code et vos autres agents de codage ont déjà écrit sur le disque. Pas de wrapper, pas de proxy, rien dans votre chemin critique. Chaque agent ci-dessous est lu par défaut, chacun depuis l'endroit où il conserve son historique (la variable entre crochets le déplace, comme elle déplace l'agent lui-même) ; un agent qui n'est pas sur votre machine est ignoré.
| Source | Emplacement | Format |
|---|---|---|
| Claude Code | ~/.claude/projects/*/*.jsonl et les subagents/**/agent-*.jsonl de chaque session, ou les mêmes sous $CLAUDE_CONFIG_DIR/projects lorsqu'il est défini | JSONL |
| Codex (CLI, extension IDE, application de bureau) | ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl et archived_sessions/ ($CODEX_HOME) ; history.jsonl, shell_snapshots/ et son index de threads SQLite sont fouillés pour des secrets | JSONL ; SQLite en lecture seule ; .jsonl.zst en lecture seule, sur Python 3.14 ou avec la commande zstd |
| Gemini CLI | ~/.gemini/tmp/<project>/chats/session-*.jsonl et les plus anciens session-*.json ($GEMINI_CLI_HOME) | JSONL, JSON |
| GitHub Copilot CLI | ~/.copilot/session-state/<session>/events.jsonl ($COPILOT_HOME) | JSONL |
| Qwen Code | ~/.qwen/projects/<project>/chats/*.jsonl et les plus anciens tmp/<hash>/chats/session-*.json ($QWEN_RUNTIME_DIR, $QWEN_HOME) | JSONL, JSON |
| Grok Build | ~/.grok/sessions/<folder>/<session>/updates.jsonl ($GROK_HOME) | JSONL |
| Droid | ~/.factory/sessions/*.jsonl, et -<cwd>/*.jsonl et btw/*.jsonl en dessous ($FACTORY_HOME_OVERRIDE) | JSONL |
| Kimi Code | ~/.kimi-code/sessions/<folder>/<session>/agents/*/wire.jsonl ($KIMI_CODE_HOME) | JSONL |
| Kimi CLI | ~/.kimi/sessions/<folder>/<session>/wire.jsonl et context*.jsonl ($KIMI_SHARE_DIR) | JSONL |
| Pi | ~/.pi/agent/sessions/--<cwd>--/*.jsonl ($PI_CODING_AGENT_DIR) | JSONL |
| Muse Code | ~/.local/share/muse/sessions/YYYY/MM/DD/<session>/session.jsonl ($XDG_DATA_HOME/muse) | JSONL |
| OpenClaw | $OPENCLAW_STATE_DIR/agents/*/agent/openclaw-agent.sqlite | SQLite, en lecture seule |
Meta Muse s'exécute dans le cloud de Meta et ne conserve rien sur votre machine, donc il n'y a rien à lire ; Muse Code, le CLI de codage de Meta, est pris en charge. Grok Bot conserve son historique dans le cloud de xAI, même pour les commandes qu'il exécute sur votre machine ; Grok Build, le CLI de codage de xAI, est pris en charge. L'Amp actuel conserve ses threads sur ampcode.com. Cursor est le prochain, une fois son format vérifié par rapport à une source primaire.
Neuf règles : accès aux identifiants, chaînes ressemblant à des secrets dans les appels d'outils, publication de paquets, modifications de ressources cloud, appels d'API financières, altération de journaux, git destructif, suppression récursive, et fichiers locaux téléversés avec curl. Les appels d'outils de chaque agent sont jugés par les mêmes règles ; chaque action indique quel agent l'a exécutée.
ranwhat watch --days 30
ranwhat watch --source codex # one agent (repeatable)
ranwhat watch --path codex=~/work/.codex # an agent's history elsewhere
ranwhat watch --json
ranwhat sources # every agent, where it looked, what it found
--root et --state-dir fonctionnent toujours, comme noms de
--path claude-code= et --path openclaw=.
ranwhat clean : trouvez des secrets dans les transcriptions de Claude Code et d'autres agentsQuand un agent exécute cat .env, la sortie est écrite dans la transcription :
le mot de passe de votre base de données, votre secret JWT, vos jetons de fournisseur, en clair,
dans un fichier que Claude Code conserve 30 jours par défaut.
ranwhat clean # report, then open a review session
ranwhat clean --apply # mask everything without asking
clean parcourt l'historique de chaque agent, et masque une valeur uniquement dans un fichier
que l'agent lui permet de réécrire : un fichier JSONL, JSON ou texte brut auquel rien n'a
écrit durant les deux dernières minutes. Les bases de données (l'index de threads de Codex,
les bases de données d'agents d'OpenClaw) et les fichiers compressés sont en lecture seule : le rapport
nomme chacun de ceux qui contiennent un secret et comment le supprimer dans l'agent
à la place.
Scanner un historique réel prend du temps, donc la session reste ouverte sur ce qu'elle vient de trouver plutôt que de vous faire rescanner pour agir dessus :