Module 10 / 12
Hooks
Automatiser des actions et imposer des règles autour du cycle de vie de l'agent.
Le principe des hooks
Les hooks sont des commandes shell que Claude Code exécute automatiquement à des moments précis du cycle de vie de l'agent : avant d'utiliser un outil, après, quand une session démarre ou se termine, etc. Ils permettent d'imposer des règles déterministes (pas soumises à l'interprétation du modèle) : formatage automatique, blocage de commandes interdites, notifications, journalisation.
Les événements disponibles
| Événement | Déclenché... |
|---|---|
PreToolUse | avant l'exécution d'un outil — peut bloquer l'appel |
PostToolUse | après l'exécution d'un outil — peut réagir au résultat |
UserPromptSubmit | quand l'utilisateur envoie un message |
SessionStart / SessionEnd | au démarrage / à la fin d'une session |
Stop | quand l'agent termine sa réponse |
Notification | sur certains événements informatifs |
Exemple : formater automatiquement après chaque édition
.claude/settings.json :
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{ "type": "command", "command": "npx prettier --write \"$CLAUDE_FILE_PATHS\"" }]
}
]
}
}
Ici, chaque fois que Claude Code utilise Edit ou Write, Prettier reformate automatiquement le ou les fichiers concernés — sans dépendre du modèle pour s'en souvenir.
Exemple : bloquer une commande dangereuse
Un hook PreToolUse peut inspecter la commande proposée et la refuser (code de sortie non nul, ou sortie JSON {"decision":"block"}) avant qu'elle ne s'exécute :
#!/bin/bash
# .claude/hooks/block-force-push.sh
if echo "$CLAUDE_TOOL_INPUT" | grep -q "push --force"; then
echo "Force-push bloqué par hook de sécurité" >&2
exit 2
fi
Les hooks tournent avec les permissions de votre utilisateur système : ils sont puissants, mais doivent être audités comme du code de production — un hook mal écrit peut bloquer (ou pire, casser) des actions légitimes.
Points clés à retenir
- Les hooks exécutent des commandes shell à des points précis du cycle de vie de l'agent.
- PreToolUse peut bloquer un appel d'outil ; PostToolUse réagit après coup.
- Ils servent à imposer des règles déterministes : formatage auto, blocage de commandes, logs.
- Un hook s'exécute avec vos permissions système — à auditer comme du code de prod.
Tester ce module
12 questions corrigées sur « Hooks »