Workbranch › Guide

Guida

Come usare gli hook in Claude Code

Vuoi che qualcosa succeda ogni volta, come formattare un file dopo che Claude lo ha modificato o ricevere un avviso quando Claude ti sta aspettando, senza sperare che Claude se ne ricordi. Gli hook fanno esattamente questo. Questa guida spiega cosa sono, ti accompagna nella creazione di un primo hook e mostra dove metterli.

Aggiornato 30 ottobre 2026

In breve: un hook è un comando di shell che Claude Code esegue automaticamente in un momento preciso, per esempio prima che venga eseguito uno strumento, dopo la modifica di un file o quando Claude ha bisogno di una tua risposta. Aggiungi gli hook sotto una chiave hooks in un file di impostazioni come ~/.claude/settings.json (tutti i progetti) o .claude/settings.json (un progetto), poi digita /hooks per verificare che Claude Code li veda.

Nomi degli eventi, posizioni dei file e comportamento descritti qui sotto provengono dalla documentazione di Claude Code di Anthropic a ottobre 2026. Claude Code si aggiorna spesso, quindi esegui claude update se manca qualcosa.

Cosa sono gli hook e perché aiutano

Le istruzioni in un prompt o in un file CLAUDE.md sono suggerimenti: Claude di solito le segue, ma decide lui. Un hook è diverso. È Claude Code stesso a eseguire il tuo comando ogni volta che si verifica l'evento, quindi l'azione è deterministica. Usi tipici dalla guida di Anthropic:

Tra gli eventi più usati ci sono SessionStart (una sessione inizia o riprende), UserPromptSubmit (invii un prompt), PreToolUse (prima di una chiamata a uno strumento, e può bloccarla), PostToolUse (dopo che una chiamata a uno strumento è riuscita), Notification, Stop (Claude finisce di rispondere), PreCompact e SessionEnd. L'elenco completo nella documentazione di riferimento degli hook è molto più lungo.

Configura il tuo primo hook: una notifica sul desktop

Questo esempio, adattato dalla guida passo passo di Anthropic, ti avvisa su macOS ogni volta che Claude Code ha bisogno della tua attenzione.

  1. Apri ~/.claude/settings.json in un editor di testo. Crea il file se non esiste.
  2. Aggiungi un oggetto hooks con una voce Notification. Al suo interno va un elenco di gruppi matcher; ognuno ha un matcher (lascialo come stringa vuota per attivarlo a ogni notifica) e un elenco hooks con un elemento di "type": "command".
  3. Imposta il comando su osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'. Su Linux, l'esempio di Anthropic usa invece notify-send. Ricordati di fare l'escape delle virgolette doppie interne nel JSON.
  4. Se il file ha già una chiave hooks, aggiungi Notification accanto agli eventi esistenti invece di sostituire l'intero oggetto.
  5. In Claude Code, digita /hooks. Il browser degli hook dovrebbe mostrare il nuovo hook sotto Notification. Premi Esc per tornare indietro.
  6. Chiedi a Claude qualcosa che richiede un permesso e passa a un'altra finestra. Dovrebbe comparire una notifica.

Per attivarlo solo per alcune notifiche, imposta il matcher su un tipo come permission_prompt (una richiesta di permesso è in attesa da circa sei secondi) o idle_prompt (Claude ha finito e tu non scrivi da circa un minuto).

Un secondo esempio: formattare i file dopo le modifiche

Per un hook di progetto, metti la configurazione in .claude/settings.json nella radice del progetto. Usa l'evento PostToolUse con il matcher Edit|Write, così viene eseguito solo dopo gli strumenti che modificano i file. Il comando di esempio di Anthropic legge il percorso modificato dal JSON che Claude Code passa sullo standard input e lo passa a Prettier: jq -r '.tool_input.file_path' | xargs npx prettier --write. Richiede che jq sia installato. Un hook riuscito non mostra nulla nella conversazione; vedrai semplicemente il file riformattato.

Dove si configurano gli hook

PosizioneVale perCondiviso?
~/.claude/settings.jsonTutti i tuoi progettiNo, solo sul tuo computer
.claude/settings.jsonUn progettoSì, se ne può fare il commit
.claude/settings.local.jsonUn progettoNo, resta fuori da git
Impostazioni di policy gestiteTutta l'organizzazioneImpostate dagli amministratori
Il file hooks/hooks.json di un pluginFinché il plugin è attivoIncluso nel plugin
Frontmatter di una skillIl resto della sessione dopo che la skill è stata richiamataNel file della skill
Frontmatter di un subagentMentre quel subagent è in esecuzioneNel file del subagent

Per disattivare gli hook, imposta "disableAllHooks": true in un file di impostazioni. Gli hook delle impostazioni gestite continuano a funzionare, a meno che non sia impostato anche lì.

Come risponde un hook

Quando si verifica un evento, Claude Code invia i dettagli dell'evento in JSON allo standard input del tuo comando. Il comando risponde con il suo exit code:

Per un controllo più preciso, esci con 0 e stampa invece un oggetto JSON. Scegli un solo approccio per ogni hook.

Da sapere

Se non funziona

Tieni traccia di ciò che ogni sessione lascia in sospeso

Il plugin Workbranch per Claude Code usa un riepilogo all'avvio della sessione: in una cartella collegata a un progetto Workbranch, mostra cosa è ancora aperto quando inizia una sessione, e se dici "save this to Workbranch" (salva questo su Workbranch) archivia in quel progetto i compiti, le decisioni e le domande aperte della sessione. Vedi Workbranch per Claude. Sei alle prime armi con Claude Code? Parti da come iniziare con Claude Code.

Fonti

Domande frequenti

Claude può scrivere un hook al posto mio?

Sì. La guida di Anthropic dice che puoi descrivere l'hook che vuoi nel prompt di Claude Code e chiedere a Claude di aggiungerlo alle tue impostazioni. Controlla poi il risultato con /hooks.

Un hook può fermare Claude anche in modalità bypass?

Un hook PreToolUse che restituisce una decisione deny blocca lo strumento in ogni modalità di permesso, compresa bypassPermissions. È questo che rende gli hook utili per regole che non si possono aggirare cambiando modalità.

Esistono hook che usano un modello invece di uno script?

Sì. Oltre ai comandi di shell, un hook può essere una richiesta HTTP, una chiamata a uno strumento MCP, un singolo prompt valutato da un modello Claude oppure un hook agente sperimentale con accesso agli strumenti.