tool_name dell’evento hook) per filtrare quali invocazioni di tool attivano il tuo hook.
PreToolUse
Esempio — Bloccare i comandi distruttivi:
hookSpecificOutput.updatedInput nello stdout (vedi Formato di output). Per esempio, uno script hook che inoltra i comandi della shell tramite un wrapper:
PostToolUse
Esempio — Registra tutti i comandi shell:
PermissionRequest
Esempio — approvazione automatica dei comandi git:
UserPromptSubmit
Esempio — Inserisci contesto in ogni prompt:
additionalContext all’interno di un oggetto hookSpecificOutput su stdout, etichettato con il nome dell’evento. Questo testo viene inserito nel contesto dell’agente:
Stop
Esempio — Ricorda all’agente di eseguire i test:
PostCompaction
Esempio — Registra gli eventi di compattazione nei log:
SessionStart
Esempio — Esegui lo script di configurazione:
additionalContext all’interno di un oggetto hookSpecificOutput su stdout:
SessionEnd
Corrispondenza di più eventi
Uso del matcher
matcher è una regex applicata al tool_name dell’evento hook. È disponibile per gli eventi relativi ai tool: PreToolUse, PostToolUse e PermissionRequest.
Per gli eventi non relativi ai tool (UserPromptSubmit, Stop, PostCompaction, SessionStart e SessionEnd), tool_name non è presente; usa "" oppure ometti il matcher per eseguire l’hook per ogni evento di quel tipo.
Il matcher non è un glob di autorizzazione. Pattern come
mcp__github__* sono utili nelle autorizzazioni, ma i matcher degli hook sono regex. In un matcher di hook, usa mcp__github__.*.Nomi di tool che puoi usare per la corrispondenza
tool_name. I nomi esatti dei tool disponibili possono variare in base alla modalità CLI, al modello e alle integrazioni abilitate.
I nomi più comuni dei tool core pubblici sono:
readeditgrepglobexec
mcp__<server>__<tool>. Per esempio, un tool di un server MCP github denominato create_issue appare come mcp__github__create_issue.
Per gli altri tool, fai corrispondere esattamente il tool_name mostrato nello stdin dell’hook. Per confermare l’insieme completo disponibile nella sessione corrente, aggiungi temporaneamente un hook PostToolUse con matcher: "" e registra il payload ricevuto su stdin.
