
AI कोडिंग एजेंट्स के लिए फ़्लाइट रिकॉर्डर और सीक्रेट स्कैनर। यह पढ़ता है कि Claude Code, Codex, Gemini CLI और 9 अन्य ने क्या चलाया, और जोखिम भरी कार्रवाइयों तथा लीक हुई कुंजियों को फ़्लैग करता है। स्थानीय रूप से चलता है, कोई टेलीमेट्री नहीं, MIT।
एआई एजेंटों के लिए एक फ्लाइट रिकॉर्डर, और उनके पास मौजूद अधिकार के लिए एक स्कैनर। क्लाउड कोड और ग्यारह अन्य कोडिंग एजेंटों के लिए एआई कोडिंग एजेंट सुरक्षा, आपकी अपनी मशीन पर चलाएं। कोई खाता नहीं, कोई टेलीमेट्री नहीं, कोई निर्भरता नहीं।
वेबसाइट और दस्तावेज़: https://ranwhat.com
आपके कोडिंग एजेंट के पास आपका शेल, आपकी कुंजियाँ और आपका रेपो है। ranwhat पढ़ता है
कि उसने वास्तव में क्या चलाया और उन कुछ अपरिवर्तनीय कार्रवाइयों को सामने लाता है जिनके बारे में
जानना ज़रूरी है।
$ 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.
क्लाउड कोड उस सत्र का प्रतिलेख हटा देता है जिसका आपने उपयोग नहीं किया है
cleanupPeriodDays
से अधिक समय तक, डिफ़ॉल्ट रूप से 30 दिन। तो --days 90 अधिक पाता है यदि आपने इसे बढ़ाया है, यदि
किसी सत्र में जिसे आपने उस अवधि के भीतर फिर से शुरू किया है, उसमें पुरानी कार्रवाइयाँ हैं, या
क्लाउड डेस्कटॉप या कोवर्क में शुरू किए गए या अंतिम बार जारी रखे गए सत्रों के लिए, जिसे क्लाउड कोड
v2.1.248 और बाद के संस्करण
डिफ़ॉल्ट रूप से किसी भी उम्र में रखते हैं।
इसे एक बार चलाएँ, बिना कुछ इंस्टॉल किए:
uvx ranwhat check
या इसे अपने पाथ पर रखें:
pipx install ranwhat
pip install ranwhat
फिर ranwhat demo एक बंडल किए गए उदाहरण पर एक अथॉरिटी स्कैन दिखाता है।
Python 3.9+। कोई निर्भरता नहीं, और आपकी मशीन पर कुछ भी नहीं बनाया गया है।
ranwhat check: जानने लायक सब कुछ, एक रीड-ओनली पास मेंवॉच और क्लीन को एक साथ चलाता है और कुछ भी नहीं बदलता है।
एक टर्मिनल पर, चेक, वॉच और क्लीन stderr पर एक स्टेटस लाइन रखते हैं जब वे पढ़ते हैं, प्रत्येक पास के माध्यम से प्रतिलेखों की गिनती करते हैं: indexing secrets (पहली बार (first run)), checking actions, looking for secrets। जब stderr एक टर्मिनल नहीं होता है, या --json के साथ, तो वहाँ कुछ भी नहीं लिखा जाता है।
ranwhat watch: ऑडिट करें कि क्लाउड कोड और आपके अन्य एजेंटों ने क्या चलायापढ़ता है कि क्लाउड कोड और आपके अन्य कोडिंग एजेंटों ने पहले ही डिस्क पर क्या लिखा है। कोई रैपर नहीं, कोई प्रॉक्सी नहीं, आपके महत्वपूर्ण पाथ में कुछ भी नहीं। नीचे दिए गए प्रत्येक एजेंट को डिफ़ॉल्ट रूप से पढ़ा जाता है, प्रत्येक को वहाँ से जहाँ वह अपना इतिहास रखता है (कोष्ठक में चर इसे स्थानांतरित करता है, जैसे यह एजेंट को ही स्थानांतरित करता है); जो आपकी मशीन पर नहीं है उसे छोड़ दिया जाता है।
| स्रोत | स्थान | प्रारूप |
|---|---|---|
| Claude Code | ~/.claude/projects/*/*.jsonl और प्रत्येक सत्र का subagents/**/agent-*.jsonl, या $CLAUDE_CONFIG_DIR/projects के तहत वही जब सेट हो | JSONL |
| Codex (CLI, IDE एक्सटेंशन, डेस्कटॉप ऐप) | ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl और archived_sessions/ ($CODEX_HOME); history.jsonl, shell_snapshots/ और इसका SQLite थ्रेड इंडेक्स रहस्यों के लिए खोजा जाता है | JSONL; SQLite केवल पढ़ने के लिए; .jsonl.zst केवल पढ़ने के लिए, Python 3.14 पर या zstd कमांड के साथ |
| Gemini CLI | ~/.gemini/tmp/<project>/chats/session-*.jsonl और पुराने 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 और पुराने 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, और -<cwd>/*.jsonl और btw/*.jsonl इसके नीचे ($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 और 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, केवल पढ़ने के लिए |
मेटा म्यूज़ मेटा के क्लाउड में चलता है और आपकी मशीन पर कुछ भी नहीं रखता है, इसलिए पढ़ने के लिए कुछ भी नहीं है; म्यूज़ कोड, मेटा का कोडिंग सीएलआई, समर्थित है। ग्रोक बॉट अपना इतिहास xAI के क्लाउड में रखता है, भले ही वह आपकी मशीन पर कमांड चलाता हो; ग्रोक बिल्ड, xAI का कोडिंग सीएलआई, समर्थित है। वर्तमान एम्प अपने थ्रेड्स ampcode.com पर रखता है। कर्सर अगला है, एक बार जब इसका प्रारूप प्राथमिक स्रोत के विरुद्ध जांच लिया जाता है।
नौ नियम: क्रेडेंशियल एक्सेस, टूल कॉल में गुप्त-आकार की स्ट्रिंग, पैकेज प्रकाशन, क्लाउड संसाधन परिवर्तन, वित्तीय एपीआई कॉल, लॉग छेड़छाड़, विनाशकारी गिट, रिकर्सिव डिलीशन, और कर्ल के साथ अपलोड की गई स्थानीय फाइलें। प्रत्येक एजेंट के टूल कॉल को उन्हीं नियमों से आंका जाता है; प्रत्येक कार्रवाई बताती है कि किस एजेंट ने इसे चलाया।
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 और --state-dir अभी भी काम करते हैं, जैसे --path claude-code= और --path openclaw= के नाम।
ranwhat clean: क्लाउड कोड और अन्य एजेंटों के प्रतिलेखों में रहस्य खोजेंजब कोई एजेंट cat .env चलाता है, तो आउटपुट प्रतिलेख में लिखा जाता है: आपका डेटाबेस पासवर्ड, आपका JWT रहस्य, आपके प्रदाता टोकन, सादे पाठ में, एक फ़ाइल में जिसे क्लाउड कोड डिफ़ॉल्ट रूप से 30 दिनों के लिए रखता है।
ranwhat clean # report, then open a review session
ranwhat clean --apply # mask everything without asking
clean प्रत्येक एजेंट के इतिहास को खोजता है, और एक मान को केवल एक फ़ाइल में मास्क करता है जिसे एजेंट इसे फिर से लिखने देता है: एक सादा JSONL, JSON या टेक्स्ट फ़ाइल जिसे पिछले दो मिनट में किसी ने नहीं लिखा है। डेटाबेस (कोडेक्स का थ्रेड इंडेक्स, ओपनक्लाव के एजेंट डेटाबेस) और संपीड़ित फ़ाइलें केवल पढ़ने के लिए हैं: रिपोर्ट प्रत्येक उस फ़ाइल का नाम बताती है जिसमें एक रहस्य होता है और एजेंट में इसे कैसे हटाया जाए।
एक वास्तविक इतिहास को स्कैन करने में थोड़ा समय लगता है, इसलिए सत्र उस पर खुला रहता है जो उसे अभी मिला है, बजाय इसके कि आपको उस पर कार्रवाई करने के लिए फिर से स्कैन करना पड़े:
ranwhat> list the findings again
ranwhat> show 3 where it appears, and what to roll it at
ranwhat> mask 3 mask just that one
ranwhat> mask all mask everything listed
ranwhat> keep 3 leave it alone
ranwhat> rotate what to rotate, grouped by provider
प्रत्येक खोज बताती है कि यह किस प्रोजेक्ट में पाई गई थी और, जब प्रतिलेख इसका नाम बताता है, तो वह फ़ाइल जिससे इसे पढ़ा गया था, क्योंकि 64-वर्णों की स्ट्रिंग यह जाने बिना बेकार है कि यह किस .env से निकली है:
* Stripe live secret key sk_…dc 32 chars seen 8x
read from api/.env
in /Users/you/Desktop/app