Passer au contenu principal
Les hooks vous permettent d’exécuter une logique personnalisée en réaction à des événements du cycle de vie de l’agent. Vous pouvez utiliser des hooks pour appliquer des politiques, ajouter du contexte, consigner des actions, modifier des autorisations ou vous intégrer à des systèmes externes. Les hooks sont configurés au format JSON. Placez-les dans le répertoire .devin/ de votre projet (ou dans une configuration niveau utilisateur), et Devin CLI les exécute lors des événements correspondants du cycle de vie. Les hooks existants dans les répertoires .claude/ sont également détectés automatiquement — voir Où se trouvent les hooks.

Que peuvent faire les hooks ?

Appliquer des politiques

Bloquer les commandes dangereuses, exiger une confirmation pour des actions spécifiques ou restreindre l’accès aux fichiers.

Ajouter du contexte

Injecter des instructions ou des informations supplémentaires lorsque des outils spécifiques sont appelés.

Déclencher des effets secondaires

Exécuter des scripts, envoyer des notifications ou consigner des événements lors de certains événements.

Modifier les autorisations

Accorder ou restreindre dynamiquement les autorisations selon la situation.

Exemple rapide

Créez .devin/hooks.v1.json dans votre projet :
./scripts/check-command.sh est exécuté avant chaque exécution de commande shell. Le script reçoit les données d’événement via stdin et peut bloquer l’opération en renvoyant un code de sortie non nul.

Événements des hooks

Les hooks peuvent réagir aux événements de cycle de vie suivants : Consultez les hooks de cycle de vie pour en savoir plus sur chaque événement et les données disponibles associées.

Format des hooks

Chaque hook comporte un type (command ou prompt), un matcher facultatif (une regex appliquée au tool_name de l’événement du hook) et une configuration :

Hooks de commande

Les hooks de commande lancent une commande shell. Les données d’événement sont transmises au format JSON sur stdin, et la commande peut renvoyer du JSON sur stdout pour en contrôler le résultat (consultez Format de sortie ci-dessous). Entrée (stdin):
La variable d’environnement DEVIN_PROJECT_DIR est automatiquement définie sur le répertoire racine du projet. Consultez Utiliser le Matcher pour connaître les noms des outils intégrés et le format des noms d’outils MCP sur lesquels vous pouvez effectuer une correspondance.

Format de sortie

Un hook de commande peut afficher un objet JSON sur stdout pour contrôler l’issue. Pour approuver ou bloquer une action, renvoyez un champ decision à la racine (avec un champ reason facultatif) :
Pour injecter du texte dans le contexte de l’agent, renvoyez additionalContext dans un objet hookSpecificOutput identifié par le nom de l’événement :
Pour réécrire de manière transparente l’entrée d’un outil avant son exécution, renvoyez updatedInput dans un objet hookSpecificOutput identifié par PreToolUse. Les champs de updatedInput sont fusionnés avec les arguments de l’outil, vous pouvez donc en mettre à jour un sous-ensemble (p. ex. seulement command) :

Codes de sortie


Où se trouvent les hooks

Devin CLI lit les hooks aux emplacements suivants. Ils utilisent tous le même format JSON.

Au niveau du projet

Niveau utilisateur (global)

Dans .devin/hooks.v1.json, l’objet hooks correspond à l’intégralité du fichier (sans clé enveloppante). Dans tous les autres emplacements, les hooks sont imbriqués sous la clé "hooks" dans un fichier de configuration.
Les hooks issus des chemins .claude/ sont chargés lorsque read_config_from.claude est activé (par défaut). Vous pouvez désactiver ce comportement dans votre configuration utilisateur si nécessaire.

Vérifier les hooks

Utilisez la commande /hooks pour afficher tous les hooks actuellement chargés ainsi que leurs fichiers sources :

Étapes suivantes

hook de cycle de vie

Découvrez en détail chaque type d’événement et les données disponibles.

Configuration

Contrôlez les emplacements de configuration depuis lesquels Devin CLI lit les hooks.