tool_name des Hook-Ereignisses abgeglichen wird), um zu filtern, welche Tool-Aufrufe den Hook auslösen.
PreToolUse
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
Beispiel — Alle Shell-Befehle protokollieren:
PermissionRequest
Beispiel — Git-Befehle automatisch genehmigen:
UserPromptSubmit
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
Beispiel — Agenten daran erinnern, Tests auszuführen:
PostCompaction
Beispiel — Komprimierungsereignisse protokollieren:
SessionStart
Beispiel — Setup-Skript ausführen:
additionalContext in einem hookSpecificOutput-Objekt an stdout ausgegeben wird:
SessionEnd
Mehrere Ereignisse abgleichen
Den Matcher verwenden
matcher 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
tool_name erhalten. Welche Tool-Namen genau verfügbar sind, kann je nach CLI-Modus, Modell und aktivierten Integrationen variieren.
Die gängigsten öffentlichen Core-Tool-Namen sind:
readeditgrepglobexec
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.
