Aller au contenu
Pratique agentique

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.

  • hooks
  • pretooluse
  • posttooluse
  • beforeShellExecution
  • afterFileEdit
  • stop

Syntaxe

Modèle
Avant une action : Claude Code PreToolUse (outil Bash, Edit…) ≈ Cursor beforeShellExecutionAprès une action : Claude Code PostToolUse ≈ Cursor afterFileEditFin de tour      : Claude Code Stop ≈ Cursor stopEntrée : JSON sur stdin (outil, commande, fichier) · Sortie : décision en JSON sur stdout · Journaux : stderr

Exemple

Exemple concret
Hook PreToolUse sur l'outil Bash (Claude Code)Entrée reçue :{"tool_name": "Bash", "tool_input": {"command": "git push origin main"}}Sortie du hook :{"hookSpecificOutput": {   "hookEventName": "PreToolUse",   "permissionDecision": "deny",   "permissionDecisionReason": "Push bloqué : il faut une demande explicite de l'utilisateur."}}Résultat attendu : la commande n'est pas exécutée et l'agent explique pourquoi.

À retenir

  1. Trois hooks utiles et rapides valent mieux que vingt hooks lents que l'équipe finira par désactiver.
  2. Écrivez un motif de refus actionnable : l'agent le lit et peut proposer une alternative au lieu de réessayer.
  3. Un hook de fin de tour sert à rappeler une vérification (lint, tests), pas à bloquer des actions déjà effectuées.
  4. Piège : afficher des messages de débogage sur stdout. La sortie standard est lue comme la réponse du hook, et un print() parasite rend le JSON illisible ; les journaux vont sur stderr.

Voir aussi