NeuralOS
GuideAdvanced

Hooks de Claude Code · automatise ton flux avec les événements du cycle de vie de l'agent

Tu sais déjà écrire un bon contrat pour ton agent : tu lui dis dans l'AGENTS.md comment tu veux qu'il travaille. Le problème, c'est qu'un LLM lit ce contrat et redécide à chaque tour — du coup la règle critique est respectée presque toujours, et ce « presque » est justement celui qui te mord. Les hooks sont l'échelon suivant : tu sors la règle de la tête du modèle et tu la mets dans l'infrastructure, pour qu'elle passe à 100 % sans dépendre de son jugement. Je t'explique les événements du cycle de vie où tu t'accroches, l'anatomie du JSON, où vit chaque hook et pourquoi ça compte, et je te laisse trois hooks réels prêts à coller (auto-formatage, blocage de commandes dangereuses, notification de bureau) tirés de la documentation officielle d'Anthropic. Un seul prompt maître pour monter ton premier avec la sécurité activée — parce qu'un hook exécute du shell avec tes permissions. C'est le saut de « écris le contrat » à « fais en sorte que le contrat s'exécute tout seul ».

Jul 19, 202614 min
Pour qui est-ce ?
Pour toi, qui construis déjà avec l'IA dans Claude Code et qui répètes depuis des semaines la même phrase : « n'oublie pas de formater », « ne touche pas au .env », « lance les tests avant de commiter ». Toi tu oublies, l'IA oublie, et un jour un changement qui ne devait pas passer se glisse. Les hooks sont le saut de « je lui demande de s'en souvenir » à « ça arrive toujours, même si personne ne s'en souvient ». Pas besoin d'être programmeur : il faut comprendre un motif et copier trois blocs de JSON.

1. Le moment · quand tu découvres que « demander à l'IA » ne suffit pas

Il arrive un point, dans tout projet avec IA, où tu cesses de te fier à la bonne volonté du modèle. Tu lui as écrit dans ton AGENTS.md de formater le code, de ne pas toucher aux fichiers sensibles, de lancer les tests. Et 90 % du temps il le fait. Mais les 10 % restants sont justement ceux qui te mordent : la fois où il a édité le .env de production, la fois où il a sauté le formatage et où le commit est resté sale, la fois où il a exécuté un rm -rf sur le mauvais dossier parce que « ça avait l'air temporaire ».

Le moment des hooks, c'est quand tu penses : « et si ça ne dépendait pas de la décision du modèle de bien faire ? Et si ça arrivait tout simplement, toujours, sans dépendre de son jugement ? ». C'est exactement la promesse que la documentation officielle de Claude Code place au centre de la page des hooks : ils donnent un « contrôle déterministe » sur le comportement de l'agent, « en garantissant que certaines actions se produisent toujours au lieu de dépendre du choix du LLM de les exécuter » (traduction fidèle de l'original en anglais). Cette phrase est la thèse entière de la ressource.

Imagine-le comme ça
Un contrat (ton AGENTS.md), c'est comme le règlement affiché sur le mur d'une usine : il dit comment les choses doivent être faites, et tu comptes sur chaque opérateur pour le lire et le respecter. Un hook, c'est le capteur sur le tapis roulant qui arrête la machine physiquement si une pièce sort défectueuse. Le règlement persuade ; le capteur oblige. Les hooks sont le capteur — ils ne demandent pas s'il te plaît, ils coupent le courant.

2. La douleur · d'où elle vient et pourquoi elle arrive

La douleur n'est pas une apocalypse, c'est une érosion. Tu as demandé à l'IA de faire quelque chose « toujours » et parfois elle ne le fait pas, parce qu'un LLM n'est pas déterministe : à chaque tour il redécide, et dans un tour chargé de contexte, ton rappel de formater peut se retrouver enseveli sous mille tokens d'autre chose. Ce n'est pas que l'IA soit désobéissante — c'est que tu demandes de la constance à un système probabiliste. C'est comme demander à quelqu'un de brillant mais distrait de ne jamais oublier de fermer le robinet de gaz : la plupart des soirs il le ferme, et c'est justement pour ça que tu baisses la garde.

Symptômes que tu as besoin de hooks
Tu répètes la même instruction à chaque session (« formate », « ne touche pas à X », « lance les tests ») et malgré tout parfois elle saute.
Tu as découvert après coup que l'IA a édité un fichier qu'elle ne devait jamais toucher : .env, un package-lock.json, quelque chose dans .git/.
Un commit s'est glissé avec un formatage incohérent et a sali le diff de toute l'équipe.
Ça te fait un peu peur de laisser l'IA avec des permissions larges parce qu'il n'y a pas de filet de sécurité qui ne dépende pas d'elle-même.
Ton AGENTS.md a des règles critiques écrites en prose, et « écrit » n'est pas la même chose que « garanti ».
Le malentendu le plus courant
Beaucoup croient que s'ils écrivent la règle en MAJUSCULES avec des points d'exclamation dans l'AGENTS.md, elle est déjà « forcée ». Elle ne l'est pas. Aussi emphatique soit-elle, elle reste du texte que le modèle lit et décide d'obéir ou non. La seule façon que quelque chose arrive vraiment — 100 % du temps, sans exception — c'est de le sortir de la tête du LLM et de le mettre dans l'infrastructure. Ça, ce sont les hooks.

Et voici l'angle qui rend cette ressource avancée : si tu as déjà lu sur l'écriture d'un bon contrat pour ton agent (l'AGENTS.md), les hooks sont l'échelon suivant. Tu passes de « écris le contrat » (déclaratif : tu dis ce que tu veux) à « fais en sorte que le contrat s'exécute tout seul » (déterministe : la machine le respecte pour toi). C'est la différence entre une loi écrite sur un papier et un policier posté au coin de la rue.

3. Qu'est-ce qu'un hook (sans fumée, en une phrase)

Un hook est une commande shell que Claude Code exécute automatiquement à un point précis de son cycle de vie. Tu le déclares une fois dans un fichier settings.json ; à partir de là, chaque fois que ce point du cycle survient, ta commande tourne. Ce n'est pas le modèle qui le déclenche avec son jugement : c'est l'événement qui le déclenche. Voilà la magie — c'est déterministe, pas discutable.

L'idée de fond
Claude Code émet des signaux pendant qu'il travaille : « je viens de recevoir un prompt », « je suis sur le point d'utiliser un outil », « j'ai fini d'éditer un fichier », « je vais compresser le contexte », « j'ai fini de répondre ». Un hook, c'est s'accrocher à l'un de ces signaux et dire : « quand ça arrive, exécute CECI ». S'accrocher (to hook) — d'où le nom et l'emoji 🪝.

4. Les événements du cycle de vie (les points où tu t'accroches)

La documentation officielle liste beaucoup d'événements du cycle de vie — il y en a un pour presque tout moment du travail de l'agent. N'apprends pas le nombre ni la liste complète : apprends l'idée et retiens ceux que tu vas vraiment utiliser 95 % du temps. Les voici, avec leurs vrais noms tels qu'ils apparaissent dans la doc :

Les événements qui comptent (vrais noms de la doc officielle)
`SessionStart` — quand une session démarre ou reprend. Idéal pour injecter du contexte frais (ex. tes conventions, les derniers commits). Sa sortie sur stdout s'ajoute au contexte de Claude.
`UserPromptSubmit` — juste au moment où tu envoies un prompt, avant que Claude le traite. Tu peux ajouter du contexte ou même bloquer le prompt.
`PreToolUse`avant qu'un outil s'exécute. Celui-ci peut bloquer l'action. C'est ton garde du corps : ici tu freines un rm -rf ou une édition sur un fichier protégé.
`PostToolUse`après qu'un outil a réussi. Ici tu formates le fichier fraîchement édité, tu lances un lint, ce que tu veux.
`Notification` — quand Claude a besoin de toi (il demande une permission ou il attend). Parfait pour une notification de bureau.
`Stop` / `SubagentStop` — quand Claude (ou un sous-agent) finit de répondre. Utile pour un contrôle final avant de considérer le tour clos.
`PreCompact` (et SessionStart avec matcher compact) — autour de la compactation du contexte, pour ne pas perdre l'essentiel quand la mémoire se comprime.
`SessionEnd` — quand la session se termine. Pour nettoyer les fichiers temporaires, fermer des choses.
La distinction qui éclaire tout · Pre vs. Post
`PreToolUse` survient AVANT et PEUT bloquer (l'outil ne s'est pas encore exécuté, donc tu peux le refuser). `PostToolUse` survient APRÈS et NE PEUT PAS défaire (l'outil a déjà tourné ; la doc le dit sans détour). Règle mentale : si tu veux empêcher quelque chose, accroche-toi à Pre. Si tu veux réagir à quelque chose qui a déjà eu lieu (formater, prévenir, journaliser), accroche-toi à Post.

5. Comment se déclare un hook (l'anatomie du JSON)

Tout hook vit à l'intérieur d'un bloc "hooks" dans ton settings.json. La structure est toujours la même poupée russe : le nom de l'événement → un matcher (à quoi il s'applique) → une liste de hooks avec type: "command" et la command à exécuter. Regarde-le une fois et tu ne l'oublies plus :

json
{
  "hooks": {
    "PostToolUse": [                    // 1. l'ÉVÉNEMENT du cycle de vie
      {
        "matcher": "Edit|Write",         // 2. À QUELS outils il s'applique
        "hooks": [
          {
            "type": "command",           // 3. c'est une commande shell
            "command": "...ta commande..." // 4. QUOI exécuter quand ça survient
          }
        ]
      }
    ]
  }
}
Le matcher, en simple
Le matcher filtre à quoi s'applique le hook. Pour les événements d'outil (PreToolUse, PostToolUse) il filtre par nom d'outil : "Edit|Write" signifie « seulement quand j'utilise Edit ou Write », "Bash" seulement les commandes shell. Un matcher vide ("") se déclenche toujours, pour tout. La barre | sépare des alternatives (dans les versions récentes de Claude Code la virgule marche aussi : "Edit, Write" est équivalent).

6. Où vit un hook (et pourquoi l'endroit compte)

L'endroit où tu mets le hook définit sa portée. C'est essentiel : un hook de projet se partage avec ton équipe (il est commité au repo) ; un hook global n'est qu'à toi. Le tableau officiel résume où va chaque chose :

Les trois endroits où un hook peut vivre
`~/.claude/settings.json` — global, s'applique à tous tes projets. Ne se partage pas, il est propre à ta machine. C'est là que vont tes hooks personnels (notifications de bureau, par exemple).
`.claude/settings.json` (dans le repo) — uniquement ce projet, et peut être commité : toute ton équipe hérite de la règle. C'est là que vont les règles du projet (formatage, fichiers protégés).
`.claude/settings.local.json` — uniquement ce projet, privé : Claude Code l'ajoute au gitignore quand il le crée. Pour tes réglages locaux que tu ne veux pas partager.
La règle d'or de l'endroit
Si la règle doit être respectée par quiconque travaille sur ce repo (formater, ne pas toucher aux fichiers sensibles), elle va dans .claude/settings.json et se commite. Ainsi le contrat cesse de vivre dans la tête d'une personne et se met à voyager avec le code. C'est ça le vrai pouvoir : la discipline devient partie du dépôt, pas un post-it que quelqu'un doit se rappeler.

7. Trois hooks copier-coller qui valent leur pesant d'or

Assez de théorie. Voici trois hooks réels, tirés de la documentation officielle, prêts à coller. Commence par celui qui te fait le plus mal aujourd'hui.

a) Auto-formater après chaque édition (PostToolUse)

Le classique. Chaque fois que Claude édite ou écrit un fichier, Prettier passe automatiquement. Plus jamais un commit au formatage incohérent. Ça va dans le .claude/settings.json de ton projet :

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}
Comment ça marche à l'intérieur (pour que ce ne soit pas de la magie)
Quand l'événement se déclenche, Claude Code passe à ta commande un JSON par l'entrée standard (stdin) avec les données : quel outil il a utilisé, sur quel fichier, etc. Ici jq -r '.tool_input.file_path' extrait le chemin du fichier édité de ce JSON, et xargs npx prettier --write le passe à Prettier. jq est un lecteur de JSON en ligne de commande — installe-le avec brew install jq sur macOS ou apt-get install jq sur Debian/Ubuntu.

b) Bloquer les commandes dangereuses comme rm -rf (PreToolUse)

C'est celui qui t'enlève la peur. Un hook PreToolUse qui examine chaque commande Bash avant de l'exécuter et la refuse si elle contient quelque chose de destructeur. Ici un détail technique compte, que la doc rend très clair : on bloque en sortant avec le code 2, et ce que tu écris sur stderr parvient à Claude comme explication pour qu'il se corrige. D'abord le script :

bash
#!/bin/bash
# .claude/hooks/block-rm-rf.sh
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

if echo "$COMMAND" | grep -q "rm -rf"; then
  echo "Bloque : 'rm -rf' n'est pas autorise. Supprime des chemins precis, pas de recursif-force." >&2
  exit 2   # exit 2 = bloque l'action ; stderr parvient a Claude comme feedback
fi

exit 0     # exit 0 = pas d'objection ; le flux normal de permissions continue

Rends-le exécutable et enregistre-le dans tes settings en pointant vers le script :

bash
chmod +x .claude/hooks/block-rm-rf.sh
json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm-rf.sh"
          }
        ]
      }
    ]
  }
}
Honnêteté · ce grep est une démo, pas un cadenas hermétique
Un grep -q "rm -rf" attrape le cas évident, mais un rm -fr, un rm -rf avec des espaces bizarres ou un rm --recursive --force lui échappent. Il sert de filet visible et de feedback pédagogique pour l'IA, mais ne le confonds pas avec un blindage. La doc elle-même le dit sans détour : le filtrage des hooks est best-effort et « échoue ouvert » (s'il n'arrive pas à parser la commande, il la laisse passer), donc pour une interdiction DURE que personne ne puisse contourner, utilise le système de permissions (permissions.deny), pas un hook. Le bon motif est : un hook pour réagir et prévenir ; des permission rules pour le vrai cadenas.
Le détail qui te sauve pour de vrai · le hook gagne même en mode bypass
C'est le plus puissant et presque personne ne le sait : selon la doc officielle, un PreToolUse qui renvoie une décision de blocage refuse l'outil MÊME en `bypassPermissions` ou avec `--dangerously-skip-permissions`. Autrement dit : même si toi (ou l'IA) avez baissé toutes les barrières de permissions, ton hook de blocage tient toujours. La règle est asymétrique et c'est voulu exprès : les hooks peuvent durcir la politique, jamais l'assouplir au-delà de ce que permettent les règles de permissions. Un hook de blocage est une règle que même toi tu ne peux pas contourner par accident.

c) Notification de bureau quand l'IA a besoin de toi (Notification)

Pour arrêter de surveiller le terminal. Quand Claude termine ou a besoin de ta permission, une notification de bureau s'affiche et tu vas faire autre chose. Ça va dans ton ~/.claude/settings.json global (exemple de macOS avec osascript) :

json
{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code a besoin de ton attention\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}
Sur Linux et Windows
Le même hook, en changeant la commande : sur Linux utilise notify-send 'Claude Code' 'Claude Code a besoin de ton attention' ; sur Windows (PowerShell) un MessageBox de System.Windows.Forms. La structure du JSON est identique — seule change la ligne du command. Astuce macOS documentée par le guide lui-même : si la notification n'apparaît pas, lance une fois osascript -e 'display notification "test"' puis donne la permission à Script Editor dans Réglages Système → Notifications.

8. L'habitude · quand penser à un hook (et quand NON)

Les hooks ne servent pas à tout. La règle mentale est simple : si quelque chose doit arriver toujours, de façon mécanique et sans jugement, c'est un hook. Si quelque chose exige un jugement au cas par cas, ne le force pas avec un hook déterministe — laisse le modèle décider (ou utilise les hooks de type prompt/agent que la doc supporte aussi, mais c'est une autre catégorie).

Moments où tu devrais TOUJOURS penser à un hook
Chaque fois que tu te surprends à écrire « n'oublie pas de… » pour la troisième fois dans ton AGENTS.md. Si tu le répètes, transforme-le en hook.
Quand il y a une action qui ne doit jamais avoir lieu (toucher au .env, supprimer en récursif, écrire dans .git/) : c'est un PreToolUse de blocage — appuyé par une règle de permissions pour le cadenas dur.
Quand il y a une action qui doit toujours avoir lieu après édition (formater, trier les imports, lancer un lint) : c'est un PostToolUse.
Quand tu veux qu'un contexte critique soit ré-injecté après chaque compactation, pour que l'IA n'« oublie » pas tes conventions au milieu de la session.
La limite honnête des hooks
Un hook de commande exécute du shell déterministe : il sert aux règles mécaniques (ce chemin oui, celui-ci non), pas aux jugements nuancés (« ce changement est-il une bonne idée ? »). Et attention avec PostToolUse : il ne peut pas défaire ce qui a déjà eu lieu — il ne fait que réagir. Pour empêcher, toujours PreToolUse. Mettre trop de logique complexe dans un hook le rend fragile ; garde-les courts et à but unique.
Sécurité · les hooks exécutent du shell avec TES permissions
La doc officielle le prévient sans détour et il faut le répéter : un hook exécute des commandes shell arbitraires avec tes identifiants, automatiquement. Ne colle jamais un hook que tu ne comprends pas, ne copie jamais un hook d'une source qui n'est pas de confiance, et relis chaque commande avant de l'enregistrer. Un hook malveillant est une commande malveillante qui tourne toute seule. Lis-les comme tu lirais n'importe quel script que tu vas exécuter sur ta machine.

9. Le protocole d'usage · monte ton premier hook utile

Voici le détail pratique : la doc elle-même te recommande de demander à Claude de t'écrire le hook en le lui décrivant. Mais pour que ça se passe bien — et que ce soit sûr — mieux vaut lui donner une mission structurée, pas un « mets-moi un hook ». Voici LE prompt maître de la ressource : un seul, puissant, qui conçoit ton premier hook avec les freins de sécurité activés.

Prompt maître · conçois ton premier hook utile (avec sécurité)texte
Je veux monter mon premier hook de Claude Code pour automatiser une règle de mon flux. La règle que je veux garantir TOUJOURS est : [DÉCRIS LA RÈGLE, ex : "formater avec prettier chaque fichier que tu édites" / "bloquer toute commande qui supprime des fichiers de façon récursive" / "empêcher qu'on édite le .env ou quoi que ce soit dans .git/" / "me prévenir par notification quand tu as fini"].

Avant d'écrire quoi que ce soit, aide-moi à bien le concevoir en répondant à ceci en langage clair (moi je ne programme pas) :

1. L'ÉVÉNEMENT correct du cycle de vie pour cette règle. Si la règle est d'EMPÊCHER quelque chose, ça doit être PreToolUse (survient avant et peut bloquer). Si c'est de RÉAGIR à quelque chose de déjà fait (formater, prévenir, journaliser), ça doit être PostToolUse ou Notification. Dis-moi lequel tu choisis et pourquoi.

2. Le MATCHER exact (à quels outils il s'applique : Edit|Write, Bash, ou vide pour tous) et pourquoi celui-là et pas un autre. Garde-le le plus ÉTROIT possible : un matcher trop large déclenche le hook là où il ne devrait pas.

3. L'ENDROIT où doit vivre le settings.json :
   - Si la règle doit être respectée par toute l'équipe sur ce repo → .claude/settings.json (se commite).
   - Si c'est seulement pour ma machine et tous mes projets → ~/.claude/settings.json.
   - Si c'est local et privé → .claude/settings.local.json.
   Dis-moi lequel et pourquoi.

4. Le BLOC JSON complet, prêt à coller, avec le hook déjà monté. S'il a besoin d'un script à part (typique pour les blocages avec PreToolUse), donne-moi aussi le script .sh complet et rappelle-moi de le rendre exécutable avec chmod +x.

5. SI C'EST UN HOOK DE BLOCAGE : utilise-le avec exit 2 et un message clair sur stderr qui m'explique pourquoi ça a été bloqué, pour que toi-même (Claude) reçoives la raison et te corriges. Ne le fais pas silencieux. Et PRÉVIENS-MOI si cette règle mérite en plus une règle de permissions (permissions.deny) comme cadenas dur, car un grep dans un hook est best-effort et peut être contourné.

6. SÉCURITÉ, obligatoire : explique-moi en une phrase QUELLE commande shell ce hook va exécuter et confirme-moi qu'elle ne fait rien de destructeur ni n'envoie de données nulle part. Rappelle-moi qu'un hook exécute du shell avec mes permissions et que je ne dois enregistrer que des commandes que je comprends.

7. COMMENT JE LE TESTE : dis-moi comment vérifier que le hook est enregistré (la commande /hooks dans Claude Code) et une façon de tester qu'il se déclenche vraiment, sans rien casser de réel.

Montre-moi d'abord SEULEMENT la conception (événement, matcher, endroit), ensuite le JSON et le script si nécessaire, et à la fin l'explication de sécurité et le test. Ne modifie pas encore mon settings.json : je veux relire le bloc avant de le coller moi-même.

Remarque le motif : d'abord tu conçois, tu vérifies la sécurité, et c'est toi qui colles le bloc. Tu ne laisses jamais un hook apparaître dans ta configuration sans l'avoir compris. C'est la même discipline en deux temps qui protège toute automatisation puissante : la machine propose, tu approuves.

10. Les chemins les plus faciles · ce que tu fais par chat et ce que tu fais par fichier

Pour que ça ne s'emmêle pas, voici ce que tu peux déléguer à l'IA par le chat et ce qui reste ton affaire :

Ce que l'IA fait pour toi (par le chat)
T'écrire le bloc JSON du hook complet si tu lui décris la règle (la doc officielle le recommande explicitement).
Te générer le script .sh pour les hooks de blocage, avec son jq, son exit 2 et son message sur stderr.
T'expliquer quel événement et quel matcher collent avec ta règle, et dans quel settings.json il doit vivre.
Te rappeler les étapes d'installation : chmod +x du script, brew install jq s'il te manque.
Ce que TU décides et fais (ne le délègue pas)
Coller le bloc dans ton settings.json — après l'avoir lu et compris. Le filet de sécurité ne peut pas être du code que tu n'as pas relu.
Choisir l'endroit (repo partagé vs. global vs. local) : c'est ce qui définit qui hérite de la règle.
Confirmer que la commande du hook est sûre (elle exécute du shell avec tes permissions : si tu ne la comprends pas, tu ne l'enregistres pas).
Vérifier avec `/hooks` dans Claude Code qu'il est bien enregistré, et tester qu'il se déclenche sans rien casser de réel.
L'astuce pour vérifier
Dans Claude Code, tape `/hooks` pour ouvrir le navigateur de hooks : tu verras tous ceux qui sont configurés, regroupés par événement, avec leur matcher et leur commande. C'est en lecture seule (pour éditer, tu touches au JSON ou tu le demandes à l'IA), mais c'est ta confirmation que le hook existe et qu'il est là où il doit être. S'il n'apparaît pas, vérifie que le JSON est valide (pas de virgules pendantes ni de commentaires) et que le fichier est au bon chemin ; parfois il suffit de redémarrer la session pour que le file watcher le prenne en compte.

Résumé · ta checklist de hooks

Avant de considérer un hook comme monté, confirme
J'ai choisi le bon événement : PreToolUse pour empêcher, PostToolUse/Notification pour réagir.
Le matcher est le plus étroit possible (il ne se déclenche pas là où il ne doit pas).
Il est au bon endroit : repo partagé, global à toi, ou local privé.
S'il bloque, il utilise `exit 2` avec un message clair sur stderr pour que l'IA se corrige — et si c'est une interdiction dure, je l'ai appuyée avec une règle de permissions.
Je comprends la commande qu'il exécute (shell avec mes permissions) : je n'ai rien enregistré que je n'ai pas relu.
Je l'ai vérifié avec `/hooks` et testé qu'il se déclenche sans rien casser de réel.
J'ai sorti la règle de la prose de mon AGENTS.md et l'ai transformée en quelque chose qui arrive toujours.
Dans NeuralOS · la même discipline, à l'échelle de la plateforme
Les hooks matérialisent une idée que dans NeuralOS nous prenons au sérieux : la couche où les règles critiques ne dépendent du jugement de personne parce que l'infrastructure elle-même les impose. C'est exactement ce que fait, à l'intérieur, le gate d'advisors de Supabase de la plateforme : avant de sceller le moindre changement de base de données, un contrôle automatique tourne tout seul et bloque le merge si quelque chose viole les règles de sécurité. Personne n'a besoin de « se rappeler » de le vérifier — ça arrive toujours, comme un PreToolUse qui refuse ce qui ne doit pas entrer. C'est la même philosophie qu'un hook, appliquée à une équipe entière au lieu d'un terminal : que la qualité ne soit pas une promesse que quelqu'un se rappelle, mais un capteur sur le tapis qu'on ne peut pas contourner. Toi tu poses la règle une fois ; le système la respecte pour toujours.
Le protocole C-A-R · construire sans bugs
Les hooks sont le bras déterministe du C-A-R : là où le protocole exige de la discipline, un hook la rend automatique. Le duo parfait pour que la qualité ne dépende pas du fait de s'en souvenir.
Loop engineering · l'IA travaille seule vers l'objectif
Quand tu laisses l'IA itérer seule dans une boucle, les hooks sont ses freins et ses garde-fous : ils garantissent que certaines choses arrivent (ou N'arrivent PAS) à chaque tour, sans dépendre de son jugement.
Documentation officielle · Automate actions with hooks (Anthropic)
La source de tout ce qui figure dans cette ressource : les événements du cycle de vie, les exemples copier-coller et les considérations de sécurité. Lis-la avant de déployer des hooks dans un environnement partagé.
#hooks#Claude Code#automatisation#cycle de vie#avancé#déterminisme
Ready to build?

Start building in
under 3 minutes

Join 4,200+ builders. No credit card. Build your first app with AI in minutes.