Vai al contenuto principale

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.

Gli hook ti consentono di eseguire logica personalizzata in risposta agli eventi del ciclo di vita dell’agente. Puoi usare gli hook per applicare policy, aggiungere contesto, registrare azioni, modificare le autorizzazioni o integrarti con sistemi esterni. Devin CLI utilizza un formato di hook compatibile con gli hook di Claude Code. Se hai già hook configurati per Claude Code, funzioneranno automaticamente con Devin CLI.

Cosa possono fare gli Hook?

Applicare policy

Bloccare comandi pericolosi, richiedere conferma per azioni specifiche o limitare l’accesso ai file.

Aggiungere contesto

Inserire istruzioni o informazioni aggiuntive quando vengono richiamati strumenti specifici.

Eseguire effetti collaterali

Eseguire script, inviare notifiche o registrare eventi quando si verificano determinate condizioni.

Modificare le autorizzazioni

Concedere o limitare dinamicamente le autorizzazioni in base al contesto.

Esempio rapido

Crea .devin/hooks.v1.json nel tuo progetto:
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/check-command.sh"
        }
      ]
    }
  ]
}
Viene eseguito ./scripts/check-command.sh prima di ogni esecuzione di un comando shell. Lo script riceve i dati dell’evento su stdin e può bloccare l’azione restituendo un codice di uscita non zero.

Eventi degli hook

Gli hook possono rispondere a questi eventi del ciclo di vita:
EventoQuando si attiva
PreToolUsePrima dell’esecuzione di uno strumento
PostToolUseDopo il completamento di uno strumento
PermissionRequestQuando è necessaria una decisione su un’autorizzazione
UserPromptSubmitQuando l’utente invia un messaggio
StopQuando l’agente vuole interrompersi
SessionStartQuando inizia una sessione
SessionEndQuando termina una sessione
Per i dettagli su ciascun evento e sui dati disponibili, consulta Hook del ciclo di vita.

Formato degli hook

Ogni hook ha un tipo (command o prompt), un matcher facoltativo (regex sul tool_name dell’evento hook) e una configurazione:
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/validate.sh",
          "timeout": 10
        }
      ]
    }
  ]
}
FieldDescrizione
matcherEspressione regolare confrontata con tool_name dell’evento hook. Una stringa vuota o l’omissione di matcher corrisponde a tutti i nomi degli strumenti.
type"command" per eseguire un comando shell oppure "prompt" per valutare un prompt LLM.
commandComando shell da eseguire (per il tipo command).
promptPrompt LLM da valutare (per il tipo prompt).
timeoutTimeout in secondi (facoltativo).

Hook di comando

Gli hook di comando eseguono un comando shell. I dati dell’evento vengono passati come JSON su stdin e il comando può restituire JSON su stdout per determinare l’esito. Input (stdin):
{
  "hook_event_name": "PreToolUse",
  "tool_name": "exec",
  "tool_input": {
    "command": "rm -rf /"
  }
}
Output (stdout — facoltativo):
{
  "decision": "block",
  "reason": "Destructive command blocked by policy"
}
Campo di outputDescrizione
decision"approve", "block" o "deny"
reasonSpiegazione mostrata all’agente
La variabile di ambiente DEVIN_PROJECT_DIR viene impostata automaticamente sulla directory radice del progetto. Consulta Using the Matcher per i nomi degli strumenti integrati e il formato dei nomi degli strumenti MCP che puoi abbinare.

Codici di uscita

CodiceSignificato
0Successo — l’hook continua normalmente
2Blocco — l’azione viene negata
AltriErrore — viene registrato ma non blocca

Dove si trovano gli hook

Devin CLI legge gli hook nelle seguenti posizioni. In tutti i casi, il formato JSON è lo stesso.

A livello di progetto

PercorsoDescrizione
.devin/hooks.v1.jsonFile hooks indipendente (consigliato)
.devin/config.jsonchiave "hooks" nel file di configurazione
.devin/config.local.jsonchiave "hooks" (override locale, ignorato da git)
.claude/settings.jsonchiave "hooks" (formato Claude Code)
.claude/settings.local.jsonchiave "hooks" (formato Claude Code)

A livello di utente (globale)

PosizioneDescrizione
~/.config/devin/config.json (%APPDATA%\devin\config.json in Windows)chiave "hooks" nella configurazione utente
~/.claude.jsonchiave "hooks" (formato Claude Code)
~/.claude/settings.jsonchiave "hooks" (formato Claude Code)
~/.claude/settings.local.jsonchiave "hooks" (formato Claude Code)
In .devin/hooks.v1.json, l’oggetto hooks coincide con l’intero file (non è necessaria alcuna chiave contenitore). In tutte le altre posizioni, hooks è annidato sotto la chiave "hooks" in un file Settings.
Gli hook dei percorsi .claude/ vengono caricati quando read_config_from.claude è abilitato (per impostazione predefinita). Se necessario, puoi disabilitarlo nella tua configurazione utente.

Verifica degli hook

Usa il comando slash /hooks per visualizzare tutti gli hook attualmente caricati e i relativi file sorgente:
/hooks

Prossimi passaggi

Hook del ciclo di vita

Approfondisci ogni tipo di evento e i dati disponibili.

Documentazione degli hook di Claude Code

Riferimento completo per il formato degli hook.