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
.devin/hooks.v1.json nel tuo progetto:
./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
| Evento | Quando si attiva |
|---|---|
PreToolUse | Prima dell’esecuzione di uno strumento |
PostToolUse | Dopo il completamento di uno strumento |
PermissionRequest | Quando è necessaria una decisione su un’autorizzazione |
UserPromptSubmit | Quando l’utente invia un messaggio |
Stop | Quando l’agente vuole interrompersi |
SessionStart | Quando inizia una sessione |
SessionEnd | Quando termina una sessione |
Formato degli hook
command o prompt), un matcher facoltativo (regex sul tool_name dell’evento hook) e una configurazione:
| Field | Descrizione |
|---|---|
matcher | Espressione 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. |
command | Comando shell da eseguire (per il tipo command). |
prompt | Prompt LLM da valutare (per il tipo prompt). |
timeout | Timeout in secondi (facoltativo). |
Hook di comando
| Campo di output | Descrizione |
|---|---|
decision | "approve", "block" o "deny" |
reason | Spiegazione mostrata all’agente |
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
| Codice | Significato |
|---|---|
| 0 | Successo — l’hook continua normalmente |
| 2 | Blocco — l’azione viene negata |
| Altri | Errore — viene registrato ma non blocca |
Dove si trovano gli hook
A livello di progetto
| Percorso | Descrizione |
|---|---|
.devin/hooks.v1.json | File hooks indipendente (consigliato) |
.devin/config.json | chiave "hooks" nel file di configurazione |
.devin/config.local.json | chiave "hooks" (override locale, ignorato da git) |
.claude/settings.json | chiave "hooks" (formato Claude Code) |
.claude/settings.local.json | chiave "hooks" (formato Claude Code) |
A livello di utente (globale)
| Posizione | Descrizione |
|---|---|
~/.config/devin/config.json (%APPDATA%\devin\config.json in Windows) | chiave "hooks" nella configurazione utente |
~/.claude.json | chiave "hooks" (formato Claude Code) |
~/.claude/settings.json | chiave "hooks" (formato Claude Code) |
~/.claude/settings.local.json | chiave "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
/hooks per visualizzare tutti gli hook attualmente caricati e i relativi file sorgente:
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.
