tool_name de l’événement de hook) pour filtrer les invocations d’outil qui déclenchent votre hook.
PreToolUse
Exemple — Bloquer les commandes destructrices :
hookSpecificOutput.updatedInput sur stdout (voir Format de sortie). Par exemple, un script de hook qui fait passer les commandes shell par un wrapper :
PostToolUse
Exemple — Journaliser toutes les commandes shell :
PermissionRequest
Exemple — Approbation automatique des commandes git :
UserPromptSubmit
Exemple — Injecter du contexte pour chaque prompt :
additionalContext dans un objet hookSpecificOutput sur stdout, associé au nom de l’événement. Ce texte est injecté dans le contexte de l’agent :
Stop
Exemple — Rappeler à l’agent d’exécuter des tests :
PostCompaction
Exemple — Journaliser les événements de compactage :
SessionStart
Exemple — Exécuter le script de configuration :
additionalContext dans un objet hookSpecificOutput sur stdout :
SessionEnd
Associer plusieurs événements
Utiliser le matcher
matcher est une regex appliquée au tool_name de l’événement de hook. Il est disponible pour les événements liés aux outils : PreToolUse, PostToolUse et PermissionRequest.
Pour les événements non liés aux outils (UserPromptSubmit, Stop, PostCompaction, SessionStart et SessionEnd), il n’y a pas de tool_name ; utilisez "" ou omettez le matcher pour exécuter le hook sur chaque événement de ce type.
Le matcher n’est pas un motif glob d’autorisation. Des motifs comme
mcp__github__* sont utiles dans les autorisations, mais les matchers de hook sont des regex. Utilisez mcp__github__.* dans un matcher de hook.Noms d’outils que vous pouvez faire correspondre
tool_name. Les noms d’outils exacts disponibles peuvent varier selon le mode CLI, le modèle et les intégrations activées.
Les noms d’outils publics de base les plus courants sont :
readeditgrepglobexec
mcp__<server>__<tool>. Par exemple, un outil d’un serveur MCP github nommé create_issue apparaît sous la forme mcp__github__create_issue.
Pour les autres outils, faites correspondre exactement le tool_name affiché sur stdin par le hook. Pour confirmer l’ensemble complet disponible dans votre session actuelle, ajoutez un hook PostToolUse temporaire avec matcher: "" et consignez la charge utile reçue sur stdin.
