Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt

Use this file to discover all available pages before exploring further.

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. Devin CLI utilise un format de hooks compatible avec les hooks de Claude Code. Si vous avez déjà des hooks configurés pour Claude Code, ils fonctionneront automatiquement avec Devin CLI.

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 :
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/check-command.sh"
        }
      ]
    }
  ]
}
./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 :
ÉvénementQuand il se déclenche
PreToolUseAvant l’exécution d’un outil
PostToolUseAprès l’exécution d’un outil
PermissionRequestLorsqu’une décision d’autorisation est requise
UserPromptSubmitLorsque l’utilisateur envoie un message
StopLorsque l’agent souhaite s’arrêter
SessionStartLorsqu’une session démarre
SessionEndLorsqu’une session se termine
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 :
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/validate.sh",
          "timeout": 10
        }
      ]
    }
  ]
}
ChampDescription
matcherExpression régulière appliquée à tool_name de l’événement de hook. Une chaîne vide ou l’absence de matcher correspond à tous les noms d’outil.
type"command" pour exécuter une commande shell, ou "prompt" pour évaluer un prompt de LLM.
commandCommande shell à exécuter (pour le type command).
promptPrompt de LLM à évaluer (pour le type prompt).
timeoutDélai d’expiration en secondes (facultatif).

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. Entrée (stdin):
{
  "hook_event_name": "PreToolUse",
  "tool_name": "exec",
  "tool_input": {
    "command": "rm -rf /"
  }
}
Sortie (stdout — optionnel) :
{
  "decision": "block",
  "reason": "Destructive command blocked by policy"
}
Champ de sortieDescription
decision"approve", "block" ou "deny"
reasonExplication affichée à l’agent
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.

Codes de sortie

CodeSignification
0Succès — le hook continue normalement
2Blocage — l’action est refusée
AutreErreur — consignée dans les logs, mais ne bloque pas

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

EmplacementDescription
.devin/hooks.v1.jsonFichier de hooks autonome (recommandé)
.devin/config.jsonClé "hooks" dans le fichier de configuration
.devin/config.local.jsonClé "hooks" (surcharge locale, ignorée par Git)
.claude/settings.jsonClé "hooks" (format Claude Code)
.claude/settings.local.jsonClé "hooks" (format Claude Code)

Niveau utilisateur (global)

EmplacementDescription
~/.config/devin/config.json (%APPDATA%\devin\config.json sous Windows)Clé "hooks" dans la configuration utilisateur
~/.claude.jsonClé "hooks" (format Claude Code)
~/.claude/settings.jsonClé "hooks" (format Claude Code)
~/.claude/settings.local.jsonClé "hooks" (format Claude Code)
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 :
/hooks

Étapes suivantes

Hooks du cycle de vie

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

Documentation des hooks de Claude Code

Référence complète du format des hooks.