Vai al contenuto principale
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. Gli hook sono configurati in formato JSON. Inseriscili nella directory .devin/ del tuo progetto (o in una configurazione a livello utente) e Devin CLI li esegue in corrispondenza degli eventi del ciclo di vita corrispondenti. Anche gli hook esistenti nelle directory .claude/ vengono rilevati automaticamente — vedi Dove si trovano gli hook.

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:
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: 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:

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 (vedi Formato di output di seguito). Input (stdin):
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.

Formato di output

Un hook di comando può stampare un oggetto JSON su stdout per controllare l’esito. Per approvare o bloccare un’azione, restituisci una decision di primo livello (con un reason facoltativo):
Per aggiungere testo al contesto dell’agente, restituisci additionalContext all’interno di un oggetto hookSpecificOutput contrassegnato con il nome dell’evento:
Per riscrivere in modo trasparente l’input di uno strumento prima che venga eseguito, restituisci updatedInput all’interno di un hookSpecificOutput PreToolUse. I campi in updatedInput vengono integrati negli argomenti dello strumento, quindi puoi aggiornarne un sottoinsieme (ad es. solo command):

Codici di uscita


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

A livello di utente (globale)

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:

Prossimi passaggi

Hook del ciclo di vita

Approfondisci ogni tipo di evento e i dati disponibili.

Configurazione

Controlla da quali percorsi di configurazione Devin CLI legge gli hook.