Workbranch › Guides

Guide

Comment utiliser les hooks dans Claude Code

Vous voulez qu'une action ait lieu à chaque fois, comme formater un fichier après une modification de Claude ou recevoir une alerte quand Claude vous attend, sans espérer qu'il s'en souvienne. C'est exactement le rôle des hooks. Ce guide explique ce qu'ils sont, vous accompagne dans un premier hook et montre où les placer.

Mis à jour le 30 octobre 2026

Réponse rapide : un hook est une commande shell que Claude Code exécute automatiquement à un moment précis, par exemple avant le lancement d'un outil, après la modification d'un fichier ou quand Claude a besoin de votre intervention. Vous ajoutez les hooks sous une clé hooks dans un fichier de paramètres comme ~/.claude/settings.json (tous les projets) ou .claude/settings.json (un projet), puis tapez /hooks pour vérifier que Claude Code les voit.

Les noms d'événements, emplacements de fichiers et comportements ci-dessous proviennent de la documentation Claude Code d'Anthropic en octobre 2026. Claude Code évolue souvent : lancez claude update s'il manque quelque chose.

Ce que sont les hooks et pourquoi ils sont utiles

Les instructions d'un prompt ou d'un fichier CLAUDE.md sont des suggestions : Claude les suit généralement, mais c'est lui qui décide. Un hook, c'est différent. Claude Code lui-même exécute votre commande chaque fois que l'événement se produit : l'action est donc déterministe. Usages typiques tirés du guide d'Anthropic :

Parmi les événements les plus utilisés : SessionStart (une session démarre ou reprend), UserPromptSubmit (vous envoyez un prompt), PreToolUse (avant un appel d'outil, qu'il peut bloquer), PostToolUse (après un appel d'outil réussi), Notification, Stop (Claude a fini de répondre), PreCompact et SessionEnd. La liste complète de la référence des hooks est bien plus longue.

Configurer votre premier hook : une notification de bureau

Cet exemple, adapté de la démonstration d'Anthropic, vous alerte sur macOS chaque fois que Claude Code a besoin de votre attention.

  1. Ouvrez ~/.claude/settings.json dans un éditeur de texte. Créez le fichier s'il n'existe pas.
  2. Ajoutez un objet hooks avec une entrée Notification. Elle contient une liste de groupes de matchers ; chacun a un matcher (laissez une chaîne vide pour qu'il se déclenche à chaque notification) et une liste hooks avec un élément "type": "command".
  3. Définissez la commande sur osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'. Sous Linux, l'exemple d'Anthropic utilise plutôt notify-send. Pensez à échapper les guillemets doubles intérieurs en JSON.
  4. Si le fichier a déjà une clé hooks, ajoutez Notification à côté des événements existants au lieu de remplacer tout l'objet.
  5. Dans Claude Code, tapez /hooks. Le navigateur de hooks doit afficher votre nouveau hook sous Notification. Appuyez sur Échap pour revenir.
  6. Demandez à Claude quelque chose qui nécessite une permission et passez à une autre fenêtre. Une notification doit apparaître.

Pour ne réagir qu'à certaines notifications, définissez le matcher sur un type comme permission_prompt (une demande de permission attend depuis environ six secondes) ou idle_prompt (Claude a terminé et vous n'avez rien tapé depuis environ une minute).

Un deuxième exemple : formater les fichiers après modification

Pour un hook de projet, placez la configuration dans .claude/settings.json à la racine du projet. Utilisez l'événement PostToolUse avec le matcher Edit|Write, pour qu'il ne s'exécute qu'après les outils de modification de fichiers. La commande d'exemple d'Anthropic lit le chemin modifié dans le JSON que Claude Code transmet sur l'entrée standard et le passe à Prettier : jq -r '.tool_input.file_path' | xargs npx prettier --write. Il faut que jq soit installé. Un hook réussi n'affiche rien dans la conversation ; vous verrez simplement le fichier reformaté.

Où configurer les hooks

EmplacementS'applique àPartagé ?
~/.claude/settings.jsonTous vos projetsNon, uniquement votre machine
.claude/settings.jsonUn projetOui, peut être committé
.claude/settings.local.jsonUn projetNon, tenu hors de git
Paramètres de politique gérésToute l'organisationDéfinis par les administrateurs
Le hooks/hooks.json d'un pluginTant que le plugin est activéFourni avec le plugin
Frontmatter d'un skillLe reste de la session après l'appel du skillDans le fichier du skill
Frontmatter d'un subagentPendant l'exécution de ce subagentDans le fichier du subagent

Pour désactiver les hooks, définissez "disableAllHooks": true dans un fichier de paramètres. Les hooks des paramètres gérés continuent de s'exécuter, sauf si ce réglage y est aussi défini.

Comment un hook répond

Quand un événement se produit, Claude Code envoie ses détails en JSON sur l'entrée standard de votre commande. Votre commande répond par son code de sortie :

Pour un contrôle plus fin, terminez avec le code 0 et affichez plutôt un objet JSON. Choisissez une seule approche par hook.

Bon à savoir

Si cela ne fonctionne pas

Suivez ce que chaque session laisse en suspens

Le plugin Workbranch pour Claude Code utilise un récapitulatif au démarrage de session : dans un dossier lié à un projet Workbranch, il affiche ce qui reste ouvert quand une session commence, et dire « save this to Workbranch » classe les tâches, décisions et questions ouvertes de la session dans ce projet. Voir Workbranch pour Claude. Vous débutez avec Claude Code ? Commencez par bien démarrer avec Claude Code.

Sources

Questions fréquentes

Claude peut-il écrire un hook pour moi ?

Oui. Le guide d'Anthropic indique que vous pouvez décrire le hook voulu dans le prompt de Claude Code et demander à Claude de l'ajouter à vos paramètres. Vérifiez ensuite le résultat avec /hooks.

Un hook peut-il arrêter Claude même en mode bypass ?

Un hook PreToolUse qui renvoie une décision deny bloque l'outil dans tous les modes de permission, y compris bypassPermissions. C'est ce qui rend les hooks utiles pour des règles qu'on ne peut pas contourner en changeant de mode.

Existe-t-il des hooks qui utilisent un modèle plutôt qu'un script ?

Oui. En plus des commandes shell, un hook peut être une requête HTTP, un appel d'outil MCP, un prompt unique évalué par un modèle Claude, ou un hook agent expérimental avec accès aux outils.