Source: https://aiprimetech.io/it/claude-code/hooks/ [Home](/it/) › [Claude Code](/it/claude-code/) › Hook [Panoramica](/it/claude-code/)[Installazione](/it/claude-code/install/)[riferimento della CLI](/it/claude-code/cli/)[Prezzi e limiti](/it/claude-code/pricing/)[Agent SDK](/it/claude-code/sdk/)[Skill e plugin](/it/claude-code/skills/)[GitHub](/it/claude-code/github/)[Web, desktop e IDE](/it/claude-code/web-and-desktop/)[Modelli](/it/claude-code/models/)[Errori](/it/claude-code/errors/)[È open source?](/it/claude-code/open-source/)[Tutorial](/it/claude-code/tutorial/)[Per studenti](/it/claude-code/for-students/)[Automazione QA](/it/claude-code/qa-automation/)[Confronto con Cursor](/it/claude-code/vs-cursor/)[Confronto con Codex e OpenCode](/it/claude-code/vs-codex/)[Subagenti](/it/claude-code/subagents/)[Hook](/it/claude-code/hooks/)[MCP](/it/claude-code/mcp/)[Ecosistema](/it/claude-code/ecosystem/)[VS Code](/it/claude-code/vscode/)[OpenRouter](/it/claude-code/openrouter/)[Limiti di frequenza](/it/claude-code/rate-limits/)[Guida in cinese](/claude-code/zh/) Ultimo aggiornamento: 11 ottobre 2026 # Hook di Claude Code: controllo deterministico su ciò che fa l'agente Gli hook sono comandi shell che Claude Code esegue in punti prestabiliti del proprio ciclo: prima di una chiamata a uno strumento, dopo una chiamata, quando invii un prompt e quando termina. A differenza delle istruzioni in CLAUDE.md, che il modello può seguire o meno, un hook viene sempre eseguito. Sono il modo per rendere vincolanti le regole. ## TLDR - Configurati in .claude/settings.json (progetto) oppure ~/.claude/settings.json (utente), oppure con /hooks. - Eventi: PreToolUse, PostToolUse, UserPromptSubmit, Notification, Stop, SubagentStop, PreCompact, SessionStart. - L'hook riceve JSON su stdin (nome dello strumento, input, sessione); il codice di uscita 0 consente l'operazione, il codice di uscita 2 la blocca e restituisce stderr a Claude. - Usi tipici: formattazione dopo ogni modifica, blocco dei comandi pericolosi, test obbligatori prima di terminare, notifiche desktop. ## Struttura di un hook ``` { "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "npx prettier --write \"$(jq -r .tool_input.file_path)\"" } ] } ] } } ``` Tre parti: l'evento, un matcher (una regex sul nome dello strumento per gli eventi degli strumenti; omettilo per includere tutto) e uno o più comandi. Il comando riceve su stdin un oggetto JSON che descrive l'evento; per gli eventi degli strumenti include tool_name e tool_input, che permette all'esempio precedente di individuare il file appena modificato. Inseriscilo in .claude/settings.json per condividerlo con il repository, ~/.claude/settings.json per uso personale, oppure esegui /hooks e lascia che sia Claude Code a scriverlo. ## Gli eventi - PreToolUse — prima dell'esecuzione di uno strumento. L'unico evento che può bloccare: il codice di uscita 2 annulla la chiamata e Claude legge stderr come motivo. - PostToolUse — dopo che uno strumento ha completato l'operazione con successo. Formattatori, linter e controlli dei tipi sul file modificato. - UserPromptSubmit — quando invii un prompt; può aggiungere contesto o rifiutare il prompt. - Stop / SubagentStop — quando l'agente (o un sottoagente) sta per terminare. Qui il codice di uscita 2 significa "non è ancora finita": l'uso classico è impedire l'arresto finché i test falliscono. - PreCompact — prima di /compact; salva tutto ciò che ti serve dalla trascrizione completa. - SessionStart — quando una sessione inizia o riprende; carica l'ambiente, stampa promemoria. - Notification — quando Claude Code richiede la tua attenzione (richiesta di autorizzazione, inattività); collegalo a una notifica desktop o Slack. ## Bloccare i comandi pericolosi ``` #!/usr/bin/env bash # .claude/hooks/guard.sh -- PreToolUse, matcher: Bash cmd=$(jq -r '.tool_input.command') if echo "$cmd" | grep -Eq 'rm -rf|git push --force|DROP TABLE|--no-verify'; then echo "blocked by guard.sh: $cmd" >&2 exit 2 fi exit 0 ``` Il codice di uscita 2 definisce il comportamento: la chiamata allo strumento non viene eseguita e tutto ciò che l'hook ha scritto su stderr diventa la spiegazione mostrata a Claude, che può così scegliere un approccio diverso anziché riprovare la stessa operazione. Qualsiasi altro codice di uscita diverso da zero viene registrato, ma non blocca l'operazione. ## "Non fermarti finché i test non passano" ``` #!/usr/bin/env bash # Stop hook: refuse to finish while the suite is red if ! npm test --silent >/tmp/claude-test.log 2>&1; then echo "Tests are failing; fix them before finishing:" >&2 tail -n 40 /tmp/claude-test.log >&2 exit 2 fi ``` Abbinalo a un limite di --max-turns nelle esecuzioni senza interfaccia, così un errore davvero irrisolvibile non genera un ciclo infinito. ## Hook, CLAUDE.md e autorizzazioni a confronto CLAUDE.md contiene indicazioni che il modello legge; /permissions è un elenco di ciò che può fare senza chiedere; gli hook sono codice che viene eseguito in ogni caso. Usa CLAUDE.md per lo stile e il contesto, le autorizzazioni per stabilire cosa è consentito e cosa richiede conferma, e gli hook per tutto ciò che deve essere garantito ogni volta: formattazione, scansione dei segreti, controlli obbligatori dei test, log di audit. Si combinano: un'autorizzazione consente l'esecuzione di Bash(git *) , mentre un hook PreToolUse blocca comunque git push --force. ## Gli hook e il gateway Gli hook vengono eseguiti localmente e non accedono mai all'API, quindi non cambia nulla quando Claude Code punta a ANTHROPIC_BASE_URL=https://aiprimetech.io. Una combinazione utile: un hook Stop che stampa /costcome riepilogo dell'utilizzo ricavato dai tuoi log, così un team che usa crediti a consumo vede il costo di ogni sessione alla sua conclusione. ## Provalo prima gratuitamente I nuovi account ricevono $5 di credito API gratuito con il codice CLAUDECODE — abbastanza per una serata con Claude Code su Sonnet — poi crediti pari a 7.69231× il valore nominale. ``` export ANTHROPIC_BASE_URL=https://aiprimetech.io export ANTHROPIC_API_KEY=your_key ``` [Crea un account con il codice CLAUDECODE](/register?promo=CLAUDECODE) ## Domande frequenti Che cosa sono gli hook di Claude Code? Comandi shell che Claude Code esegue automaticamente in corrispondenza degli eventi del proprio ciclo: prima e dopo le chiamate agli strumenti, all'invio di un prompt e all'arresto. Sono deterministici, a differenza delle istruzioni in CLAUDE.md.Come posso bloccare un comando con un hook? Con un hook PreToolUse con matcher Bash che esamina tool_input.command da stdin e termina con il codice 2; il testo di stderr viene mostrato a Claude come motivo.Dove si inseriscono gli hook? In .claude/settings.json nel progetto (condivisi) oppure in ~/.claude/settings.json (personali), sotto la chiave hooks; /hooks permette di modificarli in modo interattivo. ## Esegui Claude Code sul gateway Stessi modelli, due variabili d'ambiente, crediti pari a 7.69231× il valore nominale — oppure un piano illimitato a tariffa fissa. Nuovi account: $5 di credito API gratuito con il codice CLAUDECODE.[Ottieni una chiave API](/register?promo=CLAUDECODE) [Scopri i piani illimitati](/it/plans/) AI Prime Tech è un gateway API indipendente e non è affiliato ad Anthropic, né approvato o sponsorizzato da Anthropic. «Claude» e «Claude Code» sono marchi di Anthropic. Le funzionalità di Claude Code descritte qui rispecchiano la documentazione pubblica di Anthropic al momento della stesura e cambiano frequentemente; i prezzi e gli elenchi dei modelli presenti in questa pagina vengono letti dalle impostazioni attuali di questo gateway. ## Altre guide su Claude Code [Claude Code: la guida completa](/it/claude-code/)[Come installare Claude Code](/it/claude-code/install/)[Documentazione della CLI di Claude Code: comandi e flag](/it/claude-code/cli/)[Prezzi e limiti di Claude Code, spiegati](/it/claude-code/pricing/)[L'SDK di Claude Code, ora Claude Agent SDK](/it/claude-code/sdk/)[Skill e plugin di Claude Code](/it/claude-code/skills/)[Claude Code in GitHub: App, Action e @claude](/it/claude-code/github/)[Claude Code ha un'interfaccia web? Le versioni web, desktop e per IDE spiegate](/it/claude-code/web-and-desktop/)[Quale modello usa Claude Code e come cambiarlo](/it/claude-code/models/)[Errori di Claude Code e come risolverli](/it/claude-code/errors/)[Claude Code è open source?](/it/claude-code/open-source/)[Tutorial di Claude Code: la tua prima sessione reale](/it/claude-code/tutorial/)[Claude per studenti: Claude Code, l'API e ciò che offre davvero il settore education](/it/claude-code/for-students/)[Come usare Claude Code per l'automazione QA](/it/claude-code/qa-automation/)[Claude Code e Cursor a confronto: quale scegliere, quando — e come usarli entrambi](/it/claude-code/vs-cursor/)[Claude Code vs Codex vs OpenCode: confronto tra gli agenti da terminale](/it/claude-code/vs-codex/)[Subagenti di Claude Code: come funzionano, come definirli e team di agenti](/it/claude-code/subagents/)[MCP in Claude Code: connessione ai server, ambiti, MCP remoto ed esempi concreti](/it/claude-code/mcp/)[L'ecosistema Claude Code: router, framework, plugin e gli elenchi che li raccolgono](/it/claude-code/ecosystem/)[Claude Code in VS Code: l'estensione, l'uso dal terminale e gli errori](/it/claude-code/vscode/)[Come usare OpenRouter in Claude Code (e quando evitarlo)](/it/claude-code/openrouter/)[Errore di limite di frequenza di Claude: cosa significa "Errore API: limite di frequenza raggiunto" e come risolverlo](/it/claude-code/rate-limits/)[Come usare Claude Code: dall'installazione all'uso quotidiano](/claude-code/zh/)