Les événements des hooks Claude Code
La référence recense plus de trente événements. Voici ceux qu’utilisent la plupart des hooks ; un matcher limite un hook à certains outils, fichiers ou sources.
| Événement | Quand il se déclenche | Usage courant |
|---|---|---|
SessionStart | Une session démarre ou reprend | Charger du contexte, vérifier l’environnement |
UserPromptSubmit | Vous envoyez un prompt, avant que Claude ne le voie | Ajouter du contexte, bloquer les prompts sensibles |
PreToolUse | Avant l’exécution d’un appel d’outil ; peut le bloquer | Bloquer les commandes dangereuses, protéger des fichiers |
PermissionRequest | Un appel d’outil nécessite une décision d’autorisation | Approuver ou refuser automatiquement certaines demandes |
PostToolUse | Après la réussite d’un appel d’outil | Formater, linter ou tester les fichiers modifiés |
Notification | Claude Code envoie une notification | Alertes sur le bureau quand Claude a besoin de vous |
SubagentStart, SubagentStop | Un subagent démarre ou se termine | Journaliser ou vérifier le travail délégué |
Stop | Claude a fini de répondre | Vérifier que la tâche est vraiment terminée |
PreCompact, PostCompact | Autour de la compaction du contexte | Sauvegarder ou réinjecter le contexte essentiel |
FileChanged, CwdChanged | Un fichier surveillé ou le répertoire de travail change | Recharger l’environnement, reformater des fichiers |
SessionEnd | La session se termine | Faire le ménage, écrire un journal |
Où placer les hooks
| Emplacement | Portée | Partagé |
|---|---|---|
~/.claude/settings.json | Tous vos projets | Non |
.claude/settings.json | Un projet | Oui, à committer |
.claude/settings.local.json | Un projet | Non, ignoré par git |
| Paramètres de stratégie gérés | Toute l’organisation | Contrôlé par l’administrateur |
hooks/hooks.json d’un plugin | Tant que le plugin est activé | Oui, avec le plugin |
| Frontmatter d’une skill ou d’un subagent | Une fois la skill invoquée, ou pendant l’exécution du subagent | Oui, dans le fichier |
Exemples de hooks Claude Code, étape par étape
Ajoutez chaque bloc sous la clé hooks d’un fichier de paramètres ; si le fichier contient déjà un objet hooks, ajoutez l’événement comme clé voisine au lieu de le remplacer. Lancez /hooks pour vérifier que Claude Code l’a chargé. Vous pouvez aussi demander à Claude d’écrire le hook pour vous.
Recevoir une notification sur le bureau quand Claude a besoin de vous
Un hook
Notificationdans~/.claude/settings.json. Celui-ci utiliseosascriptsur macOS ; utiliseznotify-sendsous Linux ou PowerShell sous Windows.{ "hooks": { "Notification": [ { "matcher": "", "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" } ] } ] } }Formater automatiquement chaque fichier que Claude modifie
Un hook
PostToolUseavec le matcherEdit|Writelit avecjqle chemin modifié dans le JSON reçu sur stdin et lance Prettier dessus. Placez-le dans.claude/settings.jsonpour que toute l’équipe en profite.{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" } ] } ] } }Bloquer une commande dangereuse
Un hook
PreToolUsesurBashexécute ce script. Le code de sortie 2 bloque l’appel, et ce que vous écrivez sur stderr devient le retour adressé à Claude, qui peut alors changer de cap. Sortir avec 0 signifie aucune décision : les autorisations normales s’appliquent toujours.#!/bin/bash # .claude/hooks/block-drop-table.sh, exécuté comme hook PreToolUse sur Bash INPUT=$(cat) COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command') if echo "$COMMAND" | grep -q "drop table"; then echo "Blocked: dropping tables is not allowed" >&2 # devient le retour adressé à Claude exit 2 # 2 = bloquer l’action fi exit 0 # aucune décision : le flux d’autorisations normal s’appliqueFaire travailler Claude jusqu’à ce que la tâche soit finie
Un hook
Stopde typepromptdemande à un modèle si tout est terminé. S’il répondok: false, Claude continue de travailler avec lereasoncomme instruction suivante. C’est l’exemple classique de hook Stop.{ "hooks": { "Stop": [ { "hooks": [ { "type": "prompt", "prompt": "Check if all tasks are complete. If not, respond with {\"ok\": false, \"reason\": \"what remains to be done\"}." } ] } ] } }
Source : documentation de Claude Code, Automate actions with hooks
Comment les hooks décident de ce qui se passe
- Entrée : chaque hook reçoit l’événement en JSON sur stdin, par exemple le nom de l’outil et
tool_input, l’ID de session etcwd. - Sortie 0 : aucune objection. Pour quelques événements, comme
SessionStartetUserPromptSubmit, le texte écrit sur stdout est ajouté au contexte de Claude. - Sortie 2 : blocage, lorsque l’événement le permet. Stderr est renvoyé à Claude ou à vous, selon l’événement.
- JSON sur stdout : un contrôle plus fin, comme
hookSpecificOutputavec une décision d’autorisation,updatedInputpour réécrire l’entrée d’un outil, ouadditionalContext. - Autres codes de sortie : en général une erreur non bloquante, sauf si le hook définit
onFailure: "block". - Les hooks correspondant à un même événement s’exécutent en parallèle.
Hooks command, prompt, agent et HTTP
| Type | Ce qui s’exécute | Délai par défaut |
|---|---|---|
command | Une commande shell | 10 minutes |
http | Un POST du JSON de l’événement vers une URL ; le corps de la réponse fonctionne comme la sortie d’une commande | 10 minutes |
mcp_tool | Un outil d’un serveur MCP configuré | 10 minutes |
prompt | Un unique appel au modèle qui répond ok ou non | 30 secondes |
agent | Un subagent qui peut lire des fichiers et lancer des outils avant de décider (expérimental) | 60 secondes |
Hooks, skills ou CLAUDE.md, et autres pièges
- Le CLAUDE.md et les skills sont des instructions que Claude suit en général ; les hooks s’exécutent toujours. Mettez dans un hook tout ce qui ne doit jamais être sauté.
PostToolUsene peut pas annuler une action déjà exécutée ; utilisezPreToolUsepour l’empêcher.Stopse déclenche chaque fois que Claude termine une réponse, pas seulement à la fin d’une tâche, et pas lors d’une interruption par l’utilisateur.- Les hooks ne peuvent ni lancer de commandes slash ni appeler eux-mêmes des outils ; ils ne répondent que par codes de sortie, stdout, stderr ou JSON.
"disableAllHooks": truedésactive les hooks ; les hooks gérés continuent de s’exécuter, sauf si les paramètres gérés les désactivent aussi.- Les hooks sont propres à votre installation de Claude Code. Les contrôles à l’échelle de l’organisation sur tous les produits Claude relèvent d’une autre fonctionnalité : les inference hooks de Claude.
- Un hook PreToolUse qui filtre la sortie des tests est aussi l’un des meilleurs moyens de réduire la consommation de tokens.
Les hooks tiennent Claude Code dans le droit chemin. Crewmark le fait travailler.
Les hooks sont ce qui rend sûr un agent laissé sans surveillance : formatage, tests et garde-fous s’exécutent à chaque fois. Crewmark transforme une session Claude Code, Codex, DeepSeek Harness ou OpenCode en employé IA avec un rôle, un objectif et des horaires de travail, et la réveille à chaque pulsation pour qu’elle prenne la prochaine issue d’un tableau, avec les hooks de votre projet en place.
Committez vos hooks
Les hooks de
.claude/settings.jsonse chargent dans la session de l’employé comme dans la vôtre : ses modifications sont formatées et ses commandes risquées bloquées.Laissez la pulsation lancer le travail
Pendant ses horaires de travail, l’employé se réveille toutes les 15, 30 ou 60 minutes dans la même conversation ; voir comment rendre Claude Code proactif.
Ne répondez qu’à ce qui a besoin de vous
Il commente ses issues et vous écrit quand il a besoin d’une décision. Découvrez ce qu’est un employé IA.
FAQ hooks Claude Code
Que sont les hooks de Claude Code ?
Des commandes, appels HTTP ou vérifications par un modèle, définis par l’utilisateur, que Claude Code exécute automatiquement à certains événements du cycle de vie, par exemple avant l’exécution d’un outil ou quand Claude termine. Ils offrent un contrôle déterministe au lieu de compter sur Claude pour se souvenir d’une instruction.
Où configurer les hooks de Claude Code ?
Sous hooks dans ~/.claude/settings.json (tous les projets), .claude/settings.json (partagé avec l’équipe) ou .claude/settings.local.json (pour vous seul). Les plugins, les skills et les subagents peuvent aussi embarquer des hooks. Lancez /hooks pour voir ce qui est chargé.
Comment bloquer une commande avec un hook ?
Utilisez un hook PreToolUse avec le matcher Bash. Lisez la commande dans le JSON reçu sur stdin, puis sortez avec le code 2 et une raison sur stderr pour la bloquer ; Claude voit la raison et s’adapte.
Qu’est-ce qu’un hook Stop ?
Un hook sur l’événement Stop, qui se déclenche quand Claude a fini de répondre. Un hook Stop de type prompt peut vérifier si la tâche est terminée et, sinon, renvoyer Claude au travail avec une raison.
Hooks ou skills : quelle différence ?
Les skills sont des instructions et des fichiers que Claude charge quand ils sont pertinents et qu’il suit en général. Les hooks sont du code que Claude Code exécute à chaque déclenchement d’un événement, quoi que décide Claude.
Pourquoi mon hook ne se déclenche-t-il pas ?
Vérifiez qu’il apparaît dans /hooks, que le nom de l’événement et le matcher sont orthographiés exactement, que le script est exécutable et que la sortie de votre profil shell ne corrompt pas son JSON. Lancez Claude Code avec un journal de débogage pour voir ce que chaque hook a fait.
Les hooks de Claude Code sont-ils la même chose que les inference hooks ?
Non. Les hooks de Claude Code s’exécutent sur votre machine, pour vos sessions. Les inference hooks sont une fonctionnalité de Claude Enterprise qui envoie chaque prompt de l’organisation à un serveur de sécurité avant que Claude ne s’exécute.
Vérifié dans la documentation de Claude Code (guide et référence des hooks) le 6 novembre 2026.