Échec fermé ou échec ouvert
Quand un hook plante ou dépasse son délai, il faut décider s'il bloque (échec fermé) ou laisse passer (échec ouvert). Les secrets et l'irréversible bloquent ; le formatage laisse passer.
- fail-closed
- fail-open
- échec fermé
- échec ouvert
- timeout
- hooks
Syntaxe
Échec fermé (fail-closed) : en cas d'erreur, l'action est refusée → git push, lecture de secrets, productionÉchec ouvert (fail-open) : en cas d'erreur, l'action continue et l'erreur est journalisée → formatage, rappelsToujours : un filet indépendant du hook (permission deny) pour les actions critiquesExemple
Hook « bloquer git push --force », Node absent sur le poste d'un stagiaire : écrit en échec ouvert : le script plante, le push forcé passe ← à éviter écrit en échec fermé : un wrapper shell refuse si le script ne répond pasHook « prettier après édition », délai dépassé : la sauvegarde continue, l'erreur est journaliséeRésultat attendu : aucune panne d'outillage ne laisse passer un push forcé,et aucune panne du formateur ne bloque le travail.À retenir
- Vérifiez le comportement par défaut de votre outil : dans Claude Code, un hook qui plante avec un code d'erreur ordinaire ne bloque pas ; seuls le code de sortie 2 ou une décision deny explicite bloquent. L'échec fermé se programme.
- Journalisez chaque refus avec son motif : sans trace, impossible de comprendre pourquoi l'agent a été bloqué.
- Réglez un délai adapté : un délai trop court sur un hook en échec fermé bloque toute l'équipe à la première lenteur.
- Piège : un try/catch global qui traite toutes les erreurs de la même façon. Il rend tous les hooks ouverts, ou tous fermés ; décidez hook par hook.
Voir aussi
- Hooks d'agent (Cursor et Claude Code)Un hook est un petit programme que l'outil lance automatiquement à un moment précis, par exemple avant une commande shell : il peut l'autoriser, la bloquer avec un motif ou formater un fichier.
- Garde-fous du dépôt (Claude Code et Cursor)Un dépôt confié à un agent se protège en couches : des consignes pour guider, des permissions pour interdire, des hooks pour contrôler chaque action et des fichiers ignorés pour cacher les secrets.
- Consultatif ou déterministeUne consigne en Markdown est un conseil que le modèle peut ignorer ; une permission deny ou un hook est une règle appliquée par l'outil. Tout ce qui est irréversible relève de la seconde catégorie.