Von KI-Agenten geschrieben, von mir kuratiert und geprüft.
Inference Hooks: das Veto sitzt vor der Inferenz, der Server bei Ihnen
- Claude
- Verification
- Agentic Engineering
Anthropic hat am 5. August Inference Hooks als Beta für Claude-Enterprise-Organisationen angekündigt. Der Mechanismus ist in den Release Notes knapp beschrieben: Sie richten Claude auf den KI-Sicherheitsserver Ihrer Organisation, und jeder erfasste Prompt auf claude.ai, in Cowork und in Claude Code wird angehalten, bis dieser Server ein Urteil fällt, allow oder deny, bevor die Inferenz weiterläuft. Anfragen sind signiert, die Fehlerbehandlung ist konfigurierbar, und jede Ablehnung wird im Activity Feed der Compliance festgehalten. Meine These: Der Kontrollpunkt sitzt damit an der richtigen Stelle, vor dem Modell statt im Protokoll danach. Der Preis steht im Kleingedruckten. Ab diesem Moment betreiben Sie einen Dienst im kritischen Pfad jeder Anfrage.
Was sind Inference Hooks?
Inference Hooks leiten jede erfasste Anfrage einer Claude-Enterprise-Organisation durch einen KI-Sicherheitsserver, bevor das Modell rechnet. Dieser Server ist ein HTTPS-Dienst, den die Organisation selbst oder ihr Sicherheitsanbieter betreibt. Anthropic schickt das Konversationstranskript dorthin und wartet auf allow oder deny. Eine abgelehnte Anfrage erreicht das Modell nie.
Entscheidend ist, wo der Haken sitzt: auf Anthropics Servern, nachdem die Anfrage den Client verlassen hat und bevor die Inferenz beginnt. Auf den Geräten der Nutzer ist nichts zu installieren. Ein Hook gilt für Konversationen auf claude.ai, in Cowork und in Claude-Code-Sitzungen, ob im Web, in der Desktop-App oder in der CLI. Auf Amazon Bedrock und Google Cloud gibt es die Funktion nicht, Platform-Organisationen mit API-Zugang sind ausgenommen, Voice Mode ist nicht abgedeckt. Nebenanfragen wie das Erzeugen eines Gesprächstitels gehen nicht an Ihren Endpunkt.
Es gibt heute genau ein Hook-Ereignis: prompt, einmal pro erfasster Inferenzanfrage, vor der Inferenz. Eine Prüfung der Antwort ist als späteres Ereignis angekündigt, existiert also noch nicht. Konfigurieren darf, wer in claude.ai die Berechtigung organization:manage hält, also Admin, Owner und Primary owner.
Wie läuft eine Runde ab?
Anthropic schickt einen HTTPS-POST an die konfigurierte URL. Der Body ist das Transkript bis zum Zeitpunkt der Inferenz, signiert nach der Spezifikation Standard Webhooks, sobald Ihre Organisation ein Signaturgeheimnis erzeugt hat. Drei Header tragen die Signatur: webhook-id, webhook-timestamp und webhook-signature, letzterer eine HMAC-SHA256 über {webhook-id}.{webhook-timestamp}.{Rohbytes des Body}. Sie prüfen sie über die Rohbytes, mit konstanter Vergleichszeit, und weisen Zeitstempel ab, die mehr als fünf Minuten von Ihrer Uhr abweichen.
Die Antwort ist klein: {"action": "allow"} lässt die Inferenz laufen. Ein deny trägt zwei zusätzliche Felder. deny_reason ist der Text, den der Mensch am anderen Ende zu sehen bekommt, höchstens 500 Zeichen, ergänzt um eine feste Nachricht, die Ihre Administratoren hinterlegen. reference_id ist Ihre eigene Kennung für diese Bewertung, höchstens 50 Zeichen, wird der Nutzerin nie gezeigt und landet an der Compliance-Aktivität inference_hooks_request_denied. Darüber verbinden Sie eine Ablehnung im Activity Feed mit dem Datensatz in Ihrem eigenen System.
Ein Detail aus dem Ablaufdiagramm ist leicht zu übersehen: Gehakt wird nicht nur der ankommende Prompt, sondern auch die Rückkehr eines Werkzeugergebnisses. Beides ist eine Inferenzanfrage, beides löst eine eigene Runde mit Ihrem Server aus. Für agentische Läufe heißt das: Nicht die eine Eingabe wird geprüft, sondern jeder Schritt, an dem das Modell erneut denkt.
Was Ihr Server sieht, und was nicht
Ihr Server sieht, was die Nutzerin sieht: Transkripttext, Werkzeugaufrufe und deren Ergebnisse, aus Anhängen extrahierten Text, dazu Felder wie actor, source.application, model und session_id. Er sieht nicht: Systemprompts, Werkzeugdefinitionen, Anthropic-interne Kontexte, Claudes verborgenes Denken und rohe Datei- oder Bildbytes.
Diese Grenze hat eine praktische Folge, die in der Dokumentation offen als Einschränkung steht. Anhänge kommen als Metadaten plus extrahierter Text an, also wird reiner Bildinhalt nicht inspiziert. Der Screenshot eines Dokuments passiert Ihre Prüfung. Zweitens sind Urteile binär, allow oder deny. Einen Prompt umzuschreiben oder zu schwärzen ist nicht vorgesehen. Wer sich eine inline arbeitende Redaktionsschicht erhofft hat, bekommt ein Tor, keinen Filter.
Wo die Entscheidung wirklich fällt
Nicht im Regelwerk Ihres Scanners, sondern in der Fehlerbehandlung. Ihre Administratoren setzen ein Zeitlimit zwischen 1 und 10.000 Millisekunden, voreingestellt sind 5.000. Das Budget umfasst Verbindung, TLS-Handschlag, Anfrage und Antwort. Anthropic wiederholt genau einmal, nach 100 Millisekunden, und nur wenn schon der Verbindungsversuch scheitert. Hat Ihr Server geantwortet, wird nichts wiederholt.
Alles andere als HTTP 200 mit lesbarem Urteil ist ein Webhook-Fehler, auch eine Weiterleitung, auch ein zu großer Antwort-Body. Ein solcher Fehler wird nie zu einem deny. Stattdessen greift Ihre Einstellung: Die Anfrage blockieren oder ungeprüft durchlassen. Halten die Fehler an, öffnet ein Sicherungsschalter die Strecke ganz. Anthropic hört auf, Ihren Server zu fragen, und die Fehlerbehandlung gilt für jede Anfrage. Zurück kommen Sie nur über die Administration, indem jemand die Durchsetzung wieder einschaltet.
Das schärfste Beispiel steht in der Entwicklerdokumentation. Transkripte werden ungekürzt gesendet, bis zu einer Obergrenze von 10 MB. Nginx begrenzt den Body per Voreinstellung auf 1 MB, express.json() auf 100 kB. Ein abgewiesener Body zählt als Webhook-Fehler. Unter der Einstellung „Anfrage durchlassen“ erreicht damit ausgerechnet der lange Prompt mit den großen Anhängen das Modell ungeprüft. Die Anfrage, die Ihre Prüfung am dringendsten brauchte, rutscht durch, weil ein Standardwert im Reverse Proxy nicht angehoben wurde.
Immerhin muss niemand am ersten Tag blockiert werden. Ein Schattenmodus beobachtet Urteile auf echtem Verkehr, ohne etwas zu blockieren, ein Prozentsatz begrenzt den Anteil der geprüften Anfragen, und Ausnahmen nehmen Mitglieder gewählter Rollen ganz heraus.
Was heißt das für Ihre Arbeit?
Erstens, rechnen Sie die Latenz ein. Die Durchsetzung addiert den Rundlauf zu Ihrem Server auf jede erfasste Anfrage der ganzen Organisation. Anthropic empfiehlt ausdrücklich, den Server vor dem Ausrollen unter Last zu testen. Ein Urteil, das im Median 800 Millisekunden braucht, ist bei einer Handvoll Nutzern unsichtbar und bei tausend Nutzern ein spürbar zäheres Produkt.
Zweitens, entscheiden Sie fail open oder fail closed bewusst und schriftlich. Das ist keine Betriebseinstellung, das ist Ihre Sicherheitsrichtlinie in einem Schalter. „Durchlassen“ heißt: Bei jedem Ausfall Ihres Servers ist die Kontrolle für die Dauer des Ausfalls weg. „Blockieren“ heißt: Ihr Scanner ist ab sofort so verfügbar wie Claude selbst. Beides ist vertretbar, nur nicht nebenbei.
Drittens, schreiben Sie deny_reason für Menschen. Der Text ist das, was eine Kollegin sieht, wenn ihre Anfrage geblockt wird. Ein Scannercode hilft dort niemandem. Sagen Sie, was zu ändern ist.
Viertens, die Aufgabenteilung. Anthropic stellt Inference Hooks ausdrücklich neben die Compliance API: der Hook inline vor der Inferenz, die API danach für Audit und Export. Beide zusammen decken die Frage ab, was passieren durfte und was passiert ist. Keine der beiden beantwortet, ob die Antwort gut war. Ein allow ist keine Abnahme des Ergebnisses, heute nicht einmal eine Prüfung der Antwort, denn geprüft wird nur die Eingabeseite.
Das Muster kennen Sie aus den Obergrenzen in Claude Code: Verlässlichkeit entsteht nicht im Modell, sondern in der Architektur drumherum, und jede neue Leitplanke verschiebt Arbeit zu dem, der sie betreibt. Genau das ist die Linie im Agentic Engineering. Inference Hooks geben Ihnen einen echten Kontrollpunkt vor dem Modell. Ob daraus Kontrolle wird, entscheidet der Code, den Sie an dieser Stelle schreiben, und die Verantwortung dafür bleibt bei Ihnen.