tool_name des Hook-Ereignisses abgeglichen wird), um zu filtern, welche Tool-Aufrufe den Hook auslösen.
Zusätzlich zu den unten stehenden ereignisspezifischen Feldern enthält jede stdin-Payload eine stabile session_id pro Sitzung und eine prompt_id pro Eingabe (wird bei jedem Nutzer-Prompt rotiert; fehlt bei Ereignissen, die vor dem ersten Nutzer-Prompt ausgelöst werden, z. B. SessionStart) — siehe Command Hooks.
PreToolUse
Wird vor der Ausführung eines Tools ausgelöst. Verwenden Sie dies, um Tool-Aufrufe zu blockieren, zu ändern oder mit zusätzlichem Kontext zu versehen. Stdin-Daten:
Beispiel — Destruktive Befehle blockieren:
hookSpecificOutput.updatedInput auf stdout ausgegeben wird (siehe Output format). Zum Beispiel ein Hook-Skript, das Shell-Befehle über einen Wrapper leitet:
PostToolUse
Wird ausgelöst, nachdem ein Tool seine Ausführung beendet hat. Verwende dies zur Protokollierung, Validierung oder zum Auslösen von Folgeaktionen. Stdin-Daten:
Beispiel — Alle Shell-Befehle protokollieren:
PermissionRequest
Wird ausgelöst, wenn der Agent eine Entscheidung über eine Berechtigung benötigt. Damit können Sie benutzerdefinierte Genehmigungslogik implementieren. Stdin-Daten:
Beispiel — Git-Befehle automatisch genehmigen:
UserPromptSubmit
Wird ausgelöst, wenn der Nutzer eine Nachricht absendet. Verwenden Sie dies, um Kontext hinzuzufügen oder Workflows auszulösen. Stdin-Daten:
Beispiel — Kontext bei jedem Prompt hinzufügen:
additionalContext innerhalb eines hookSpecificOutput-Objekts auf stdout aus, versehen mit dem Ereignisnamen. Dieser Text wird in den Kontext des Agenten eingefügt:
Stop
Wird ausgelöst, wenn der Agent entscheidet, anzuhalten (seinen Zug zu beenden). Verwenden Sie dies, um nachfolgende Anweisungen hinzuzufügen oder ein vorzeitiges Anhalten zu verhindern. Stdin-Daten:
Beispiel — Agenten daran erinnern, Tests auszuführen:
PostCompaction
Wird nach erfolgreichem Abschluss der Kontextkomprimierung ausgelöst. Verwenden Sie dies für die Protokollierung, das Auslösen nachgelagerter Aktionen oder das erneute Einfügen von Kontext, der während der Komprimierung verloren gegangen sein könnte. Stdin-Daten:
Beispiel — Komprimierungsereignisse protokollieren:
SessionStart
Wird ausgelöst, wenn eine neue Sitzung beginnt. Verwenden Sie es zur Initialisierung, Protokollierung oder für das Environment-Setup. Stdin-Daten:
Beispiel — Setup-Skript ausführen:
additionalContext in einem hookSpecificOutput-Objekt an stdout ausgegeben wird:
SessionEnd
Wird ausgelöst, wenn eine Sitzung endet. Verwenden Sie dieses Ereignis für Bereinigungen oder die abschließende Protokollierung. Stdin-Daten:Mehrere Ereignisse abgleichen
In einer einzelnen Hooks-Datei können Hooks für mehrere Ereignisse definiert werden:Den Matcher verwenden
Das Feldmatcher ist ein Regex, das mit dem tool_name des Hook-Ereignisses abgeglichen wird. Es ist für toolbezogene Ereignisse verfügbar: PreToolUse, PostToolUse und PermissionRequest.
Bei Nicht-Tool-Ereignissen (UserPromptSubmit, Stop, PostCompaction, SessionStart und SessionEnd) gibt es kein tool_name; verwende "" oder lasse den Matcher weg, um den Hook für jedes Ereignis dieses Typs auszuführen.
Der Matcher ist kein Berechtigungs-Glob. Muster wie
mcp__github__* sind für Berechtigungen nützlich, Hook-Matcher sind jedoch Regexe. Verwende in einem Hook-Matcher mcp__github__.*.Tool-Namen, die Sie abgleichen können
Hook-Matcher werden anhand derselben extern sichtbaren Tool-Namen ausgeführt, die Hook-Skripte über stdin alstool_name erhalten. Welche Tool-Namen genau verfügbar sind, kann je nach CLI-Modus, Modell und aktivierten Integrationen variieren.
Die Core-Tool-Namen nach Kategorie:
Tools auf einem MCP-Server erscheinen als
mcp__<server>__<tool>. Zum Beispiel erscheint ein github-Tool auf einem MCP-Server mit dem Namen create_issue als mcp__github__create_issue.
Bei anderen Tools gleichen Sie den exakten tool_name ab, der in Hook-stdin angezeigt wird. Um den in Ihrer aktuellen Sitzung vollständig verfügbaren Satz zu bestätigen, fügen Sie einen temporären PostToolUse-Hook mit matcher: "" hinzu und protokollieren Sie die stdin-Payload.
