Claude Code hooks : automatiser les actions de Claude
Sommaire
▶️ En Bref
Un hook Claude Code est une commande shell exécutée automatiquement avant ou après certaines actions de Claude (édition de fichier, lancement de commande, fin de session…). Configurés dans ~/.claude/settings.json, les hooks automatisent vos contrôles qualité : formatter le code après modification, lancer les tests, valider les commits, bloquer des actions risquées. Ils tournent côté harness (donc fiables, pas dépendants de la mémoire de Claude).
Les hooks sont l’outil parfait pour automatiser vos garde-fous. Au lieu de demander à Claude « formate avec Prettier après chaque modification » à chaque session, vous le configurez une fois et c’est appliqué automatiquement, sans dépendre de la mémoire de Claude.
Qu’est-ce qu’un hook Claude Code ?
Un hook est une commande shell que le harness (Claude Code en tant que programme) exécute automatiquement quand un événement se produit. Ce n’est pas Claude qui choisit de l’exécuter — c’est le système.
📖 Hook vs instruction Claude
Demander à Claude « formate après chaque modification » = il peut oublier. Configurer un hook PostToolUse qui lance Prettier = c’est garanti, à chaque fois, sans exception.
Les hooks sont parfaits pour les comportements automatiques (« quand X se passe, fais Y ») que la mémoire ou les préférences ne peuvent pas garantir.
Les événements disponibles
Claude Code expose plusieurs hooks selon les événements de la session :
- UserPromptSubmit : avant que Claude reçoive le prompt utilisateur
- PreToolUse : avant d’exécuter un outil (Bash, Edit, Write…)
- PostToolUse : après l’exécution réussie d’un outil
- Stop : à la fin du tour de Claude
- SessionEnd : à la fin de la session Claude Code
- Notification : quand Claude affiche une notification système
Chaque hook reçoit un JSON via stdin avec les détails de l’événement (nom de l’outil, paramètres, résultat…). Le hook peut renvoyer un JSON via stdout pour bloquer l’action ou ajouter du contexte.
Configurer un hook dans settings.json
Les hooks vivent dans ~/.claude/settings.json sous la clé hooks. Structure :
“hooks”: {
“PostToolUse”: [
{
“matcher”: “Edit|Write”,
“hooks”: [{
“type”: “command”,
“command”: “prettier –write $CLAUDE_HOOK_FILE_PATH”
}]
}
]
}
}
Le matcher filtre par nom d’outil (regex). Le command est la commande shell à exécuter.
5 exemples de hooks utiles
1. Formater automatiquement après édition
Événement : PostToolUse (Edit, Write)
Commande : prettier --write ou black selon le langage
Bénéfice : code toujours propre, pas besoin de demander à Claude
2. Lancer les tests après modifications
Événement : PostToolUse (Edit sur fichiers .ts ou .js)
Commande : npm test --silent
Bénéfice : feedback immédiat si une modif casse les tests
3. Bloquer les modifs sur fichiers protégés
Événement : PreToolUse (Edit, Write)
Commande : script qui retourne {"decision": "block"} si le fichier est dans config/production/*
Bénéfice : sécurité contre les modifs accidentelles
4. Notification desktop quand Claude finit
Événement : Stop
Commande : osascript -e 'display notification "Claude a fini"' (macOS) ou notify-send (Linux)
Bénéfice : vous pouvez faire autre chose pendant l’exécution
5. Logger toutes les commandes exécutées
Événement : PostToolUse (Bash)
Commande : echo "$(date): $CLAUDE_HOOK_TOOL_INPUT" >> ~/claude-bash.log
Bénéfice : audit complet de ce que Claude a lancé
Bloquer une action avec un hook
Un hook PreToolUse peut annuler une action. Pour cela, il doit retourner du JSON sur stdout :
“hookSpecificOutput”: {
“hookEventName”: “PreToolUse”,
“permissionDecision”: “deny”,
“permissionDecisionReason”: “Modification de prod interdite”
}
}
Claude reçoit la raison du blocage et peut s’adapter (proposer une alternative, demander confirmation, etc.).
💡 Cas d’usage : protéger l’environnement
Un hook PreToolUse sur Bash peut interdire les commandes destructrices : rm -rf, git reset --hard, DROP TABLE, etc. Vous gardez Claude productif sans risque.
Bonnes pratiques
- Garder les hooks rapides : ils s’exécutent à chaque événement. Un hook lent ralentit toute la session.
- Logger en cas de doute : un hook qui plante silencieusement est difficile à debugger. Ajouter
2>>~/hook-error.logaide. - Versionner les hooks : mettre
~/.claude/settings.jsondans Git (sans les secrets). - Tester avant production : un hook bogué peut bloquer Claude sur tous vos projets.
- Préférer les hooks aux instructions : si quelque chose doit toujours être appliqué, c’est un hook, pas une note dans CLAUDE.md.
FAQ
Les hooks sont-ils sécurisés ?
Oui, ils tournent avec vos privilèges utilisateur, comme n’importe quel script shell. Mais attention : un hook mal écrit peut casser votre setup. Testez toujours en isolé.
Comment debugger un hook ?
Lancez Claude Code avec claude --debug pour voir les logs détaillés. Les hooks affichent leurs sorties et erreurs.
Hook au niveau projet ?
Oui, créez un fichier .claude/settings.json à la racine du projet. Les hooks de ce fichier ne s’appliquent qu’à ce projet.
Différence entre hook et skill ?
Un hook est exécuté par le harness, c’est mécanique. Une skill est une instruction donnée à Claude qui peut choisir de l’appliquer ou non. Voir : Claude Code skills.
Combien de hooks puis-je avoir ?
Pas de limite. Tant qu’ils sont rapides, vous pouvez en avoir des dizaines.
✅ Ce qu’il faut retenir
- Hook = commande shell exécutée automatiquement par le harness Claude Code
- Configurés dans
~/.claude/settings.jsonsoushooks - Événements : PreToolUse, PostToolUse, Stop, SessionEnd, etc.
- Cas d’usage : formatage auto, tests, blocage actions risquées, notifications
- Plus fiable que demander à Claude (pas de dépendance à sa mémoire)
- Testez toujours avant de déployer en routine
Pour des extensions plus poussées : Skills, MCP et Agents et subagents. Vue d’ensemble : Comment utiliser Claude Code.
Envie d’aller plus loin ?
Découvrez nos formations complètes avec accompagnement personnalisé.
Voir la formation%20(1).png)