Que sont les hooks de Claude Code ? Exécuter des commandes shell de façon déterministe
Les hooks de Claude Code sont des commandes shell définies par l'utilisateur qui s'exécutent automatiquement à des points précis du cycle de vie de Claude Code, rendant « cela doit toujours se produire » réel et déterministe sans dépendre du jugement du LLM. Les événements classiques sont au nombre de neuf — SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Notification, Stop, SubagentStop, SessionEnd, PreCompact — dont PreToolUse et d'autres peuvent bloquer (en empêchant les éditions de fichiers protégés ou les commandes dangereuses). Vous les configurez dans settings.json sous la clé "hooks" sous la forme nom d'événement -> matcher -> type + command. Le contrat d'E/S : un hook reçoit du JSON sur stdin (session_id, tool_input, etc.) et renvoie via un code de sortie 0 (succès) / 2 (bloquer, avec stderr transmis à Claude) ou du JSON structuré (continue, decision:block, permissionDecision : deny/allow/ask). Le principe clé est « les hooks peuvent resserrer mais pas assouplir les restrictions » (le refus l'emporte toujours, bloque même sous bypassPermissions). Cas d'usage classiques : formatage automatique après les éditions (PostToolUse + Edit|Write), protection des fichiers critiques, blocage des commandes dangereuses, réinjection de contexte (SessionStart), notifications/journal d'audit, et tester avant de s'arrêter (Stop). Côté sécurité, les hooks exécutent des commandes shell arbitraires avec vos privilèges, donc ne configurez que ceux de confiance et validez/mettez les entrées entre guillemets ; la configuration des hooks est capturée au démarrage de la session (une fonction de sécurité) de sorte que les modifications en cours de session ne s'appliquent pas. Sur la base de la documentation officielle, ancré sur les neuf événements classiques et le contrat d'E/S.