Definir un hook
Definir un hook
Creer un hook implique quatre etapes principales :
- Choisir le type — PreToolUse (avant) ou PostToolUse (apres). Les hooks PreToolUse peuvent empecher l’execution, les PostToolUse ne le peuvent pas.
- Determiner les outils a surveiller — specifier exactement quels outils doivent declencher votre hook.
- Ecrire la commande — un script qui recoit les donnees de l’appel d’outil via l’entree standard (stdin).
- Renvoyer du feedback — le code de sortie de votre commande indique a Claude s’il doit autoriser ou bloquer l’operation.
Les outils disponibles
Claude Code fournit plusieurs outils integres que vous pouvez surveiller avec des hooks. Pour voir exactement quels outils sont disponibles dans votre configuration actuelle, demandez directement a Claude :
Liste tous les outils disponibles
C’est particulierement utile car les outils disponibles peuvent changer quand vous ajoutez des serveurs MCP personnalises.
Structure des donnees d’un appel d’outil
Quand votre commande hook s’execute, Claude envoie des donnees JSON via l’entree standard :
{
"session_id": "2d6a1e4d-6...",
"transcript_path": "/Users/sg/...",
"hook_event_name": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "/code/projet/.env"
}
}
Votre commande lit ce JSON depuis stdin, l’analyse, puis decide d’autoriser ou bloquer l’operation.
Codes de sortie et flux de controle
| Code | Signification |
|---|---|
| 0 | Tout est OK — l’appel d’outil peut continuer |
| 2 | Bloquer l’appel d’outil (hooks PreToolUse uniquement) |
Quand vous sortez avec le code 2, tout message ecrit sur la sortie d’erreur standard (stderr) sera envoye a Claude comme feedback.
Cas d’utilisation courant
Un cas classique est d’empecher Claude de lire des fichiers sensibles comme les fichiers .env. Comme les outils Read et Grep peuvent tous deux acceder au contenu des fichiers, vous voudriez surveiller les deux types d’outils et verifier s’ils essaient d’acceder a des chemins de fichiers restreints.