35La tabella seguente riassume quando si attiva ogni evento. La sezione [Hook events](#hook-events) documenta lo schema di input completo e le opzioni di controllo della decisione per ognuno.35La tabella seguente riassume quando si attiva ogni evento. La sezione [Hook events](#hook-events) documenta lo schema di input completo e le opzioni di controllo della decisione per ognuno.
36 36
37| Evento | Quando si attiva |37| Evento | Quando si attiva |
38| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |38| :- | :- |
39| `SessionStart` | Quando una sessione inizia o riprende |39| `SessionStart` | Quando una sessione inizia o riprende |
40| `Setup` | Quando avvii Claude Code con `--init-only`, o con `--init` o `--maintenance` in modalità `-p`. Per la preparazione una tantum in CI o script |40| `Setup` | Quando avvii Claude Code con `--init-only`, o con `--init` o `--maintenance` in modalità `-p`. Per la preparazione una tantum in CI o script |
41| `UserPromptSubmit` | Quando invii un prompt, prima che Claude lo elabori |41| `UserPromptSubmit` | Quando invii un prompt, prima che Claude lo elabori |
259Il luogo in cui definisci un hook determina il suo ambito:259Il luogo in cui definisci un hook determina il suo ambito:
260 260
261| Posizione | Ambito | Condivisibile |261| Posizione | Ambito | Condivisibile |
262| :------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------- |262| :- | :- | :- |
263| `~/.claude/settings.json` | Tutti i tuoi progetti | No, locale sulla tua macchina |263| `~/.claude/settings.json` | Tutti i tuoi progetti | No, locale sulla tua macchina |
264| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repo |264| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repo |
265| `.claude/settings.local.json` | Singolo progetto | No, gitignored quando Claude Code salva un'impostazione in esso |265| `.claude/settings.local.json` | Singolo progetto | No, gitignored quando Claude Code salva un'impostazione in esso |
297Il campo `matcher` filtra quando gli hook si attivano. Come viene valutato un matcher dipende dai caratteri che contiene:297Il campo `matcher` filtra quando gli hook si attivano. Come viene valutato un matcher dipende dai caratteri che contiene:
298 298
299| Valore matcher | Valutato come | Esempio |299| Valore matcher | Valutato come | Esempio |
300| :------------------------------------------------ | :-------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |300| :- | :- | :- |
301| `"*"`, `""`, o omesso | Corrisponde a tutto | si attiva ad ogni occorrenza dell'evento |301| `"*"`, `""`, o omesso | Corrisponde a tutto | si attiva ad ogni occorrenza dell'evento |
302| Solo lettere, cifre, `_`, `-`, spazi, `,`, e `\|` | Stringa esatta, o lista di stringhe esatte separate da `\|` o `,` con spazi bianchi opzionali circostanti | `Bash` corrisponde solo allo strumento Bash; `Edit\|Write` e `Edit, Write` corrispondono ciascuno a uno dei due strumenti esattamente; `code-reviewer` corrisponde solo a quel tipo di agente |302| Solo lettere, cifre, `_`, `-`, spazi, `,`, e `\|` | Stringa esatta, o lista di stringhe esatte separate da `\|` o `,` con spazi bianchi opzionali circostanti | `Bash` corrisponde solo allo strumento Bash; `Edit\|Write` e `Edit, Write` corrispondono ciascuno a uno dei due strumenti esattamente; `code-reviewer` corrisponde solo a quel tipo di agente |
303| Contiene qualsiasi altro carattere | Espressione regolare JavaScript, non ancorata | `^Notebook` corrisponde a qualsiasi strumento il cui nome inizia con `Notebook`; `mcp__memory__.*` corrisponde a ogni strumento dal server `memory` |303| Contiene qualsiasi altro carattere | Espressione regolare JavaScript, non ancorata | `^Notebook` corrisponde a qualsiasi strumento il cui nome inizia con `Notebook`; `mcp__memory__.*` corrisponde a ogni strumento dal server `memory` |
313Ogni tipo di evento corrisponde su un campo diverso:313Ogni tipo di evento corrisponde su un campo diverso:
314 314
315| Evento | Cosa filtra il matcher | Valori matcher di esempio |315| Evento | Cosa filtra il matcher | Valori matcher di esempio |
316| :------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |316| :- | :- | :- |
317| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome dello strumento | `Bash`, `Edit\|Write`, `mcp__.*` |317| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome dello strumento | `Bash`, `Edit\|Write`, `mcp__.*` |
318| `SessionStart` | come è iniziata la sessione | `startup`, `resume`, `clear`, `compact`, `fork` |318| `SessionStart` | come è iniziata la sessione | `startup`, `resume`, `clear`, `compact`, `fork` |
319| `Setup` | quale flag CLI ha attivato il setup | `init`, `maintenance` |319| `Setup` | quale flag CLI ha attivato il setup | `init`, `maintenance` |
438Questi campi si applicano a tutti i tipi di hook:438Questi campi si applicano a tutti i tipi di hook:
439 439
440| Campo | Obbligatorio | Descrizione |440| Campo | Obbligatorio | Descrizione |
441| :-------------- | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |441| :- | :- | :- |
442| `type` | sì | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, o `"agent"` |442| `type` | sì | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, o `"agent"` |
443| `if` | no | Sintassi della regola di permesso per filtrare quando questo hook viene eseguito, come `"Bash(git *)"` o `"Edit(*.ts)"`. Il comando hook viene eseguito solo se la chiamata dello strumento corrisponde al pattern. Vedi la tabella [Bash matching](#bash-if-matching) sotto per come i pattern Bash vengono valutati rispetto ai sottocomandi, `$()`, e backtick. Valutato solo su eventi dello strumento: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, e `PermissionDenied`. Su altri eventi, un hook con `if` impostato non viene mai eseguito. Utilizza la stessa sintassi delle [regole di permesso](/docs/it/permissions) |443| `if` | no | Sintassi della regola di permesso per filtrare quando questo hook viene eseguito, come `"Bash(git *)"` o `"Edit(*.ts)"`. Il comando hook viene eseguito solo se la chiamata dello strumento corrisponde al pattern. Vedi la tabella [Bash matching](#bash-if-matching) sotto per come i pattern Bash vengono valutati rispetto ai sottocomandi, `$()`, e backtick. Valutato solo su eventi dello strumento: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, e `PermissionDenied`. Su altri eventi, un hook con `if` impostato non viene mai eseguito. Utilizza la stessa sintassi delle [regole di permesso](/docs/it/permissions) |
444| `timeout` | no | Secondi prima di annullare. Claude Code non lo applica su un hook di comando che esegui con [`async: true`](#run-hooks-in-the-background). Impostazioni predefinite: 600 per `command`, `http`, e `mcp_tool`; 30 per `prompt`; 60 per `agent`. Claude Code abbassa l'impostazione predefinita di `command`, `http`, e `mcp_tool` a 30 su [`UserPromptSubmit`](#userpromptsubmit), [`PreModelSwitch`](#premodelswitch), e [`PostModelSwitch`](#postmodelswitch), e a 10 su [`MessageDisplay`](#messagedisplay). Gli hook [`SessionEnd`](#sessionend) condividono un budget di 1,5 secondi; se le tue impostazioni impostano un `timeout` per hook più lungo, Claude Code aumenta il budget per corrispondere, fino a 60 secondi |444| `timeout` | no | Secondi prima di annullare. Claude Code non lo applica su un hook di comando che esegui con [`async: true`](#run-hooks-in-the-background). Impostazioni predefinite: 600 per `command`, `http`, e `mcp_tool`; 30 per `prompt`; 60 per `agent`. Claude Code abbassa l'impostazione predefinita di `command`, `http`, e `mcp_tool` a 30 su [`UserPromptSubmit`](#userpromptsubmit), [`PreModelSwitch`](#premodelswitch), e [`PostModelSwitch`](#postmodelswitch), e a 10 su [`MessageDisplay`](#messagedisplay). Gli hook [`SessionEnd`](#sessionend) condividono un budget di 1,5 secondi; se le tue impostazioni impostano un `timeout` per hook più lungo, Claude Code aumenta il budget per corrispondere, fino a 60 secondi |
452<span id="bash-if-matching" />Per i pattern Bash, se il tuo comando hook viene eseguito dipende dalla forma del pattern e dal comando Bash che Claude sta invocando. Gli assegnamenti `VAR=value` iniziali vengono rimossi prima della corrispondenza.452<span id="bash-if-matching" />Per i pattern Bash, se il tuo comando hook viene eseguito dipende dalla forma del pattern e dal comando Bash che Claude sta invocando. Gli assegnamenti `VAR=value` iniziali vengono rimossi prima della corrispondenza.
453 453
454| Pattern `if` | Comando Bash | L'hook viene eseguito? | Perché |454| Pattern `if` | Comando Bash | L'hook viene eseguito? | Perché |
455| :----------------- | :-------------------------- | :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |455| :- | :- | :- | :- |
456| `Bash(git *)` | `FOO=bar git push` | sì | gli assegnamenti iniziali vengono rimossi; `git push` corrisponde |456| `Bash(git *)` | `FOO=bar git push` | sì | gli assegnamenti iniziali vengono rimossi; `git push` corrisponde |
457| `Bash(git *)` | `npm test && git push` | sì | ogni sottocomando viene controllato; `git push` corrisponde |457| `Bash(git *)` | `npm test && git push` | sì | ogni sottocomando viene controllato; `git push` corrisponde |
458| `Bash(rm *)` | `echo $(rm -rf /)` | sì | i comandi dentro `$()` e backtick vengono controllati; `rm -rf /` corrisponde |458| `Bash(rm *)` | `echo $(rm -rf /)` | sì | i comandi dentro `$()` e backtick vengono controllati; `rm -rf /` corrisponde |
470Oltre ai [campi comuni](#common-fields), gli hook di comando accettano questi campi:470Oltre ai [campi comuni](#common-fields), gli hook di comando accettano questi campi:
471 471
472| Campo | Obbligatorio | Descrizione |472| Campo | Obbligatorio | Descrizione |
473| :------------ | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |473| :- | :- | :- |
474| `command` | sì | Comando shell da eseguire. Con `args`, l'eseguibile da generare direttamente. Vedi [Exec form e shell form](#exec-form-and-shell-form) |474| `command` | sì | Comando shell da eseguire. Con `args`, l'eseguibile da generare direttamente. Vedi [Exec form e shell form](#exec-form-and-shell-form) |
475| `args` | no | Lista di argomenti. Quando presente, `command` viene risolto come un eseguibile e generato direttamente con `args` come vettore di argomenti, senza shell coinvolto. Vedi [Exec form e shell form](#exec-form-and-shell-form) |475| `args` | no | Lista di argomenti. Quando presente, `command` viene risolto come un eseguibile e generato direttamente con `args` come vettore di argomenti, senza shell coinvolto. Vedi [Exec form e shell form](#exec-form-and-shell-form) |
476| `async` | no | Se `true`, viene eseguito in background senza bloccare. Vedi [Run hooks in the background](#run-hooks-in-the-background) |476| `async` | no | Se `true`, viene eseguito in background senza bloccare. Vedi [Run hooks in the background](#run-hooks-in-the-background) |
529Oltre ai [campi comuni](#common-fields), gli hook HTTP accettano questi campi:529Oltre ai [campi comuni](#common-fields), gli hook HTTP accettano questi campi:
530 530
531| Campo | Obbligatorio | Descrizione |531| Campo | Obbligatorio | Descrizione |
532| :--------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |532| :- | :- | :- |
533| `url` | sì | URL a cui inviare la richiesta POST |533| `url` | sì | URL a cui inviare la richiesta POST |
534| `headers` | no | Header HTTP aggiuntivi come coppie chiave-valore. I valori supportano l'interpolazione delle variabili di ambiente utilizzando la sintassi `$VAR_NAME` o `${VAR_NAME}`. Solo le variabili elencate in `allowedEnvVars` vengono risolte |534| `headers` | no | Header HTTP aggiuntivi come coppie chiave-valore. I valori supportano l'interpolazione delle variabili di ambiente utilizzando la sintassi `$VAR_NAME` o `${VAR_NAME}`. Solo le variabili elencate in `allowedEnvVars` vengono risolte |
535| `allowedEnvVars` | no | Lista di nomi di variabili di ambiente che possono essere interpolate nei valori degli header. I riferimenti alle variabili non elencate vengono sostituiti con stringhe vuote. Obbligatorio affinché avvenga qualsiasi interpolazione di variabili di ambiente |535| `allowedEnvVars` | no | Lista di nomi di variabili di ambiente che possono essere interpolate nei valori degli header. I riferimenti alle variabili non elencate vengono sostituiti con stringhe vuote. Obbligatorio affinché avvenga qualsiasi interpolazione di variabili di ambiente |
570Oltre ai [campi comuni](#common-fields), gli hook MCP tool accettano questi campi:570Oltre ai [campi comuni](#common-fields), gli hook MCP tool accettano questi campi:
571 571
572| Campo | Obbligatorio | Descrizione |572| Campo | Obbligatorio | Descrizione |
573| :------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |573| :- | :- | :- |
574| `server` | sì | Nome di un server MCP configurato. Per un [server fornito da plugin](/docs/it/mcp#plugin-provided-mcp-servers), questo è il nome con scope `plugin:<plugin-name>:<server-name>`, come `plugin:my-plugin:db`, non la chiave del server nudo. Il server deve essere già connesso; l'hook non attiva mai un flusso OAuth o di connessione |574| `server` | sì | Nome di un server MCP configurato. Per un [server fornito da plugin](/docs/it/mcp#plugin-provided-mcp-servers), questo è il nome con scope `plugin:<plugin-name>:<server-name>`, come `plugin:my-plugin:db`, non la chiave del server nudo. Il server deve essere già connesso; l'hook non attiva mai un flusso OAuth o di connessione |
575| `tool` | sì | Nome del tool da chiamare su quel server |575| `tool` | sì | Nome del tool da chiamare su quel server |
576| `input` | no | Argomenti passati al tool. I valori stringa supportano la sostituzione `${path}` dall'[input JSON](#hook-input-and-output) dell'hook, come `"${tool_input.file_path}"` |576| `input` | no | Argomenti passati al tool. I valori stringa supportano la sostituzione `${path}` dall'[input JSON](#hook-input-and-output) dell'hook, come `"${tool_input.file_path}"` |
634Oltre ai [campi comuni](#common-fields), gli hook prompt e agent accettano questi campi:634Oltre ai [campi comuni](#common-fields), gli hook prompt e agent accettano questi campi:
635 635
636| Campo | Obbligatorio | Descrizione |636| Campo | Obbligatorio | Descrizione |
637| :------- | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |637| :- | :- | :- |
638| `prompt` | sì | Testo del prompt da inviare al modello. Utilizza `$ARGUMENTS` come placeholder per l'input JSON dell'hook. Sfuggi con una barra rovesciata per includere testo letterale: `\$1.00` viene renderizzato come `$1.00` |638| `prompt` | sì | Testo del prompt da inviare al modello. Utilizza `$ARGUMENTS` come placeholder per l'input JSON dell'hook. Sfuggi con una barra rovesciata per includere testo letterale: `\$1.00` viene renderizzato come `$1.00` |
639| `model` | no | Modello da utilizzare per la valutazione. Impostazione predefinita a un modello veloce |639| `model` | no | Modello da utilizzare per la valutazione. Impostazione predefinita a un modello veloce |
640 640
786Gli hook event ricevono questi campi come JSON, oltre ai campi specifici dell'evento documentati in ogni sezione [hook event](#hook-events). Per i command hook, questo JSON arriva tramite stdin. Per gli HTTP hook, arriva come corpo della richiesta POST.786Gli hook event ricevono questi campi come JSON, oltre ai campi specifici dell'evento documentati in ogni sezione [hook event](#hook-events). Per i command hook, questo JSON arriva tramite stdin. Per gli HTTP hook, arriva come corpo della richiesta POST.
787 787
788| Campo | Descrizione |788| Campo | Descrizione |
789| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |789| :- | :- |
790| `session_id` | Identificatore della sessione corrente |790| `session_id` | Identificatore della sessione corrente |
791| `prompt_id` | UUID che identifica il prompt dell'utente attualmente in elaborazione. Corrisponde all'attributo [`prompt.id` sugli eventi OpenTelemetry](/docs/it/monitoring-usage#event-correlation-attributes), quindi è possibile correlare l'output del hook con la telemetria per un singolo prompt. Assente fino al primo input dell'utente. Richiede Claude Code v2.1.196 o successivo |791| `prompt_id` | UUID che identifica il prompt dell'utente attualmente in elaborazione. Corrisponde all'attributo [`prompt.id` sugli eventi OpenTelemetry](/docs/it/monitoring-usage#event-correlation-attributes), quindi è possibile correlare l'output del hook con la telemetria per un singolo prompt. Assente fino al primo input dell'utente. Richiede Claude Code v2.1.196 o successivo |
792| `transcript_path` | Percorso al JSON della conversazione. Il file della trascrizione viene scritto in modo asincrono e potrebbe rimanere indietro rispetto alla conversazione in memoria, quindi potrebbe non includere ancora i messaggi più recenti del turno corrente quando un hook si attiva. Gli hook che necessitano del testo dell'assistente finale del turno corrente dovrebbero utilizzare `last_assistant_message` su [Stop](#stop) e [SubagentStop](#subagentstop) invece di leggere la trascrizione |792| `transcript_path` | Percorso al JSON della conversazione. Il file della trascrizione viene scritto in modo asincrono e potrebbe rimanere indietro rispetto alla conversazione in memoria, quindi potrebbe non includere ancora i messaggi più recenti del turno corrente quando un hook si attiva. Gli hook che necessitano del testo dell'assistente finale del turno corrente dovrebbero utilizzare `last_assistant_message` su [Stop](#stop) e [SubagentStop](#subagentstop) invece di leggere la trascrizione |
799Quando si esegue con `--agent` o all'interno di un subagent, vengono inclusi due campi aggiuntivi:799Quando si esegue con `--agent` o all'interno di un subagent, vengono inclusi due campi aggiuntivi:
800 800
801| Campo | Descrizione |801| Campo | Descrizione |
802| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |802| :- | :- |
803| `agent_id` | Identificatore univoco per il subagent. Presente solo quando l'hook si attiva all'interno di una chiamata di subagent. Utilizzare questo per distinguere le chiamate del hook del subagent dalle chiamate del thread principale. |803| `agent_id` | Identificatore univoco per il subagent. Presente solo quando l'hook si attiva all'interno di una chiamata di subagent. Utilizzare questo per distinguere le chiamate del hook del subagent dalle chiamate del thread principale. |
804| `agent_type` | Nome dell'agente (ad esempio, `"Explore"` o `"security-reviewer"`). Presente quando la sessione utilizza `--agent` o l'hook si attiva all'interno di un subagent. Per i subagent, il tipo del subagent ha la precedenza sul valore `--agent` della sessione. Consultare [SubagentStart](#subagentstart) per i valori che i subagent personalizzati e plugin segnalano e come scrivere un matcher rispetto a un nome con ambito plugin. |804| `agent_type` | Nome dell'agente (ad esempio, `"Explore"` o `"security-reviewer"`). Presente quando la sessione utilizza `--agent` o l'hook si attiva all'interno di un subagent. Per i subagent, il tipo del subagent ha la precedenza sul valore `--agent` della sessione. Consultare [SubagentStart](#subagentstart) per i valori che i subagent personalizzati e plugin segnalano e come scrivere un matcher rispetto a un nome con ambito plugin. |
805 805
926Exit code 2 è il modo in cui un hook segnala "fermarsi, non farlo". L'effetto dipende dall'evento, perché alcuni eventi rappresentano azioni che possono essere bloccate (come una chiamata dello strumento che non è ancora accaduta) e altri rappresentano cose che sono già accadute o non possono essere prevenute.926Exit code 2 è il modo in cui un hook segnala "fermarsi, non farlo". L'effetto dipende dall'evento, perché alcuni eventi rappresentano azioni che possono essere bloccate (come una chiamata dello strumento che non è ancora accaduta) e altri rappresentano cose che sono già accadute o non possono essere prevenute.
927 927
928| Hook event | Può bloccare? | Cosa accade su exit 2 |928| Hook event | Può bloccare? | Cosa accade su exit 2 |
929| :-------------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |929| :- | :- | :- |
930| `PreToolUse` | Sì | Blocca la chiamata dello strumento |930| `PreToolUse` | Sì | Blocca la chiamata dello strumento |
931| `PermissionRequest` | No | Il codice di uscita 2 non è onorato per questo evento e il flusso di autorizzazione procede invariato. Nega attraverso l'oggetto [`decision`](#permissionrequest-decision-control) invece |931| `PermissionRequest` | No | Il codice di uscita 2 non è onorato per questo evento e il flusso di autorizzazione procede invariato. Nega attraverso l'oggetto [`decision`](#permissionrequest-decision-control) invece |
932| `UserPromptSubmit` | Sì | Blocca l'elaborazione del prompt e cancella il prompt |932| `UserPromptSubmit` | Sì | Blocca l'elaborazione del prompt e cancella il prompt |
1003* **`hookSpecificOutput`** è un oggetto annidato per gli eventi che necessitano di un controllo più ricco. Richiede un campo `hookEventName` impostato sul nome dell'evento.1003* **`hookSpecificOutput`** è un oggetto annidato per gli eventi che necessitano di un controllo più ricco. Richiede un campo `hookEventName` impostato sul nome dell'evento.
1004 1004
1005| Campo | Predefinito | Descrizione |1005| Campo | Predefinito | Descrizione |
1006| :----------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1006| :- | :- | :- |
1007| `continue` | `true` | Se `false`, Claude interrompe completamente l'elaborazione dopo l'esecuzione del hook. Ha la precedenza su qualsiasi campo di decisione specifico dell'evento |1007| `continue` | `true` | Se `false`, Claude interrompe completamente l'elaborazione dopo l'esecuzione del hook. Ha la precedenza su qualsiasi campo di decisione specifico dell'evento |
1008| `stopReason` | nessuno | Messaggio mostrato all'utente quando `continue` è `false`. Rimane nella conversazione, quindi Claude lo vede se la conversazione continua |1008| `stopReason` | nessuno | Messaggio mostrato all'utente quando `continue` è `false`. Rimane nella conversazione, quindi Claude lo vede se la conversazione continua |
1009| `suppressOutput` | `false` | Non ha effetto: Claude Code accetta il campo ma non agisce su di esso. Lo stdout di un hook riuscito non viene mai mostrato nella trascrizione e viene registrato nel log di debug |1009| `suppressOutput` | `false` | Non ha effetto: Claude Code accetta il campo ma non agisce su di esso. Lo stdout di un hook riuscito non viene mai mostrato nella trascrizione e viene registrato nel log di debug |
1101Non ogni evento supporta il blocco o il controllo del comportamento attraverso JSON. Gli eventi che lo fanno utilizzano ciascuno un insieme diverso di campi per esprimere quella decisione. Usa questa tabella come riferimento rapido prima di scrivere un hook:1101Non ogni evento supporta il blocco o il controllo del comportamento attraverso JSON. Gli eventi che lo fanno utilizzano ciascuno un insieme diverso di campi per esprimere quella decisione. Usa questa tabella come riferimento rapido prima di scrivere un hook:
1102 1102
1103| Eventi | Modello di decisione | Campi chiave |1103| Eventi | Modello di decisione | Campi chiave |
1104| :---------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1104| :- | :- | :- |
1105| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` di livello superiore | `decision: "block"`, `reason`. Stop e SubagentStop accettano anche `hookSpecificOutput.additionalContext` per [feedback non-errore che continua la conversazione](#stop-decision-control) |1105| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` di livello superiore | `decision: "block"`, `reason`. Stop e SubagentStop accettano anche `hookSpecificOutput.additionalContext` per [feedback non-errore che continua la conversazione](#stop-decision-control) |
1106| TeammateIdle, TaskCompleted | Codice di uscita o `continue: false` | Il codice di uscita 2 blocca l'azione con feedback stderr. JSON `{"continue": false, "stopReason": "..."}` interrompe anche completamente il compagno di squadra, corrispondendo al comportamento dell'hook `Stop`; [TaskCompleted lo ignora quando lo strumento `TaskUpdate` ha attivato l'evento](#taskcompleted-decision-control) |1106| TeammateIdle, TaskCompleted | Codice di uscita o `continue: false` | Il codice di uscita 2 blocca l'azione con feedback stderr. JSON `{"continue": false, "stopReason": "..."}` interrompe anche completamente il compagno di squadra, corrispondendo al comportamento dell'hook `Stop`; [TaskCompleted lo ignora quando lo strumento `TaskUpdate` ha attivato l'evento](#taskcompleted-decision-control) |
1107| TaskCreated | Codice di uscita o `decision` di livello superiore | Il codice di uscita 2 o `decision: "block"` [annulla l'attività](#taskcreated-decision-control) e restituisce il messaggio a Claude. `continue: false` viene ignorato |1107| TaskCreated | Codice di uscita o `decision` di livello superiore | Il codice di uscita 2 o `decision: "block"` [annulla l'attività](#taskcreated-decision-control) e restituisce il messaggio a Claude. `continue: false` viene ignorato |
1192Il valore del matcher corrisponde a come la sessione è stata avviata:1192Il valore del matcher corrisponde a come la sessione è stata avviata:
1193 1193
1194| Matcher | Quando si attiva |1194| Matcher | Quando si attiva |
1195| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |1195| :- | :- |
1196| `startup` | Nuova sessione |1196| `startup` | Nuova sessione |
1197| `resume` | `--resume`, `--continue`, o `/resume` |1197| `resume` | `--resume`, `--continue`, o `/resume` |
1198| `clear` | `/clear` |1198| `clear` | `/clear` |
1216Oltre ai [common input fields](#common-input-fields), gli hook SessionStart ricevono `source` e opzionalmente `model`, `agent_type`, e `session_title`:1216Oltre ai [common input fields](#common-input-fields), gli hook SessionStart ricevono `source` e opzionalmente `model`, `agent_type`, e `session_title`:
1217 1217
1218| Field | Description |1218| Field | Description |
1219| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1219| :- | :- |
1220| `source` | Come la sessione è stata avviata: `"startup"` per nuove sessioni, `"resume"` per sessioni riprese, `"clear"` dopo `/clear`, `"compact"` dopo la compattazione, o `"fork"` per una nuova sessione creata da una sessione esistente |1220| `source` | Come la sessione è stata avviata: `"startup"` per nuove sessioni, `"resume"` per sessioni riprese, `"clear"` dopo `/clear`, `"compact"` dopo la compattazione, o `"fork"` per una nuova sessione creata da una sessione esistente |
1221| `model` | L'identificatore del modello attivo. Può essere omesso, ad esempio dopo `/clear` o quando una sessione viene ripristinata tramite il recupero della conversazione, quindi controlla il campo prima di leggerlo |1221| `model` | L'identificatore del modello attivo. Può essere omesso, ad esempio dopo `/clear` o quando una sessione viene ripristinata tramite il recupero della conversazione, quindi controlla il campo prima di leggerlo |
1222| `agent_type` | Il nome dell'agente, presente quando avvii Claude Code con `claude --agent <name>` |1222| `agent_type` | Il nome dell'agente, presente quando avvii Claude Code con `claude --agent <name>` |
1225Quando `source` è `"resume"` o `"fork"` e la trascrizione contiene almeno una risposta da Claude, gli hook SessionStart ricevono anche i quattro campi seguenti. Il tuo hook può usarli per segnalare quale costo ha riprendere una conversazione obsoleta prima della prima richiesta, ad esempio in un [`systemMessage`](#json-output). Questi campi richiedono Claude Code v2.1.251 o successivo.1225Quando `source` è `"resume"` o `"fork"` e la trascrizione contiene almeno una risposta da Claude, gli hook SessionStart ricevono anche i quattro campi seguenti. Il tuo hook può usarli per segnalare quale costo ha riprendere una conversazione obsoleta prima della prima richiesta, ad esempio in un [`systemMessage`](#json-output). Questi campi richiedono Claude Code v2.1.251 o successivo.
1226 1226
1227| Field | Description |1227| Field | Description |
1228| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1228| :- | :- |
1229| `seconds_since_last_response` | Secondi di tempo reale dal momento dell'ultima risposta nella trascrizione ripresa |1229| `seconds_since_last_response` | Secondi di tempo reale dal momento dell'ultima risposta nella trascrizione ripresa |
1230| `context_tokens` | Token che la prima richiesta della sessione ripresa invia di nuovo come suo prompt |1230| `context_tokens` | Token che la prima richiesta della sessione ripresa invia di nuovo come suo prompt |
1231| `prompt_cache_likely_expired` | `true` quando l'ultima risposta è più vecchia della [prompt cache lifetime](/docs/it/prompt-caching#cache-lifetime) della sessione o una compattazione successiva ha sostituito la conversazione memorizzata nella cache |1231| `prompt_cache_likely_expired` | `true` quando l'ultima risposta è più vecchia della [prompt cache lifetime](/docs/it/prompt-caching#cache-lifetime) della sessione o una compattazione successiva ha sostituito la conversazione memorizzata nella cache |
1255Claude Code aggiunge stdout che [tratta come testo semplice](#exit-code-0) al contesto di Claude. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, puoi restituire questi campi specifici dell'evento:1255Claude Code aggiunge stdout che [tratta come testo semplice](#exit-code-0) al contesto di Claude. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, puoi restituire questi campi specifici dell'evento:
1256 1256
1257| Field | Description |1257| Field | Description |
1258| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1258| :- | :- |
1259| `additionalContext` | Stringa aggiunta al contesto di Claude all'inizio della conversazione, prima del primo prompt. Vedi [Add context for Claude](#add-context-for-claude) per come il testo viene consegnato e cosa metterci |1259| `additionalContext` | Stringa aggiunta al contesto di Claude all'inizio della conversazione, prima del primo prompt. Vedi [Add context for Claude](#add-context-for-claude) per come il testo viene consegnato e cosa metterci |
1260| `initialUserMessage` | Stringa usata come primo messaggio utente della sessione. Si applica in [non-interactive mode](/docs/it/headless) con il flag `-p`, dove diventa il primo turno anche se non viene fornito alcun prompt. Se viene fornito un prompt, segue come turno successivo. A differenza di `additionalContext`, che si allega a un turno esistente, questo crea il turno |1260| `initialUserMessage` | Stringa usata come primo messaggio utente della sessione. Si applica in [non-interactive mode](/docs/it/headless) con il flag `-p`, dove diventa il primo turno anche se non viene fornito alcun prompt. Se viene fornito un prompt, segue come turno successivo. A differenza di `additionalContext`, che si allega a un turno esistente, questo crea il turno |
1261| `sessionTitle` | Imposta il titolo della sessione, con lo stesso effetto di `/rename`. Usa per nominare le sessioni automaticamente dalla cartella di lancio, dal ramo git, o dal nome del worktree. Si applica quando `source` è `"startup"`, `"resume"`, o `"fork"`; ignorato su `"clear"` e `"compact"` |1261| `sessionTitle` | Imposta il titolo della sessione, con lo stesso effetto di `/rename`. Usa per nominare le sessioni automaticamente dalla cartella di lancio, dal ramo git, o dal nome del worktree. Si applica quando `source` è `"startup"`, `"resume"`, o `"fork"`; ignorato su `"clear"` e `"compact"` |
1339Il valore del matcher corrisponde al flag CLI che ha attivato l'hook:1339Il valore del matcher corrisponde al flag CLI che ha attivato l'hook:
1340 1340
1341| Matcher | Quando si attiva |1341| Matcher | Quando si attiva |
1342| :------------ | :---------------------------------------- |1342| :- | :- |
1343| `init` | `claude --init-only` o `claude -p --init` |1343| `init` | `claude --init-only` o `claude -p --init` |
1344| `maintenance` | `claude -p --maintenance` |1344| `maintenance` | `claude -p --maintenance` |
1345 1345
1392Oltre ai [common input fields](#common-input-fields), gli hook InstructionsLoaded ricevono questi campi:1392Oltre ai [common input fields](#common-input-fields), gli hook InstructionsLoaded ricevono questi campi:
1393 1393
1394| Field | Description |1394| Field | Description |
1395| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1395| :- | :- |
1396| `file_path` | Percorso assoluto al file di istruzioni che è stato caricato |1396| `file_path` | Percorso assoluto al file di istruzioni che è stato caricato |
1397| `memory_type` | Ambito del file: `"User"`, `"Project"`, `"Local"`, o `"Managed"` |1397| `memory_type` | Ambito del file: `"User"`, `"Project"`, `"Local"`, o `"Managed"` |
1398| `load_reason` | Perché il file è stato caricato: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, o `"compact"`. Il valore `"compact"` si attiva quando i file di istruzioni vengono ricaricati dopo un evento di compattazione |1398| `load_reason` | Perché il file è stato caricato: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, o `"compact"`. Il valore `"compact"` si attiva quando i file di istruzioni vengono ricaricati dopo un evento di compattazione |
1463Per bloccare un prompt, restituisci un oggetto JSON con `decision` impostato su `"block"`:1463Per bloccare un prompt, restituisci un oggetto JSON con `decision` impostato su `"block"`:
1464 1464
1465| Field | Description |1465| Field | Description |
1466| :----------------------- | :------------------------------------------------------------------------------------------------------------------------ |1466| :- | :- |
1467| `decision` | `"block"` impedisce l'elaborazione del prompt e lo cancella dal contesto. Ometti per consentire al prompt di procedere |1467| `decision` | `"block"` impedisce l'elaborazione del prompt e lo cancella dal contesto. Ometti per consentire al prompt di procedere |
1468| `reason` | Mostrato all'utente quando `decision` è `"block"`. Non aggiunto al contesto |1468| `reason` | Mostrato all'utente quando `decision` è `"block"`. Non aggiunto al contesto |
1469| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al prompt inviato. Vedi [Add context for Claude](#add-context-for-claude) |1469| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al prompt inviato. Vedi [Add context for Claude](#add-context-for-claude) |
1522Gli hook `UserPromptExpansion` possono bloccare l'espansione o aggiungere contesto. Tutti i [JSON output fields](#json-output) sono disponibili.1522Gli hook `UserPromptExpansion` possono bloccare l'espansione o aggiungere contesto. Tutti i [JSON output fields](#json-output) sono disponibili.
1523 1523
1524| Field | Description |1524| Field | Description |
1525| :------------------ | :----------------------------------------------------------------------------------------------------------------------- |1525| :- | :- |
1526| `decision` | `"block"` impedisce l'espansione del comando. Ometti per consentire a esso di procedere |1526| `decision` | `"block"` impedisce l'espansione del comando. Ometti per consentire a esso di procedere |
1527| `reason` | Mostrato all'utente quando `decision` è `"block"` |1527| `reason` | Mostrato all'utente quando `decision` è `"block"` |
1528| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al prompt espanso. Vedi [Add context for Claude](#add-context-for-claude) |1528| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al prompt espanso. Vedi [Add context for Claude](#add-context-for-claude) |
1567Oltre ai [common input fields](#common-input-fields), gli hook MessageDisplay ricevono identificatori per il turno e il messaggio, la posizione di questa chiamata all'interno del messaggio, e il nuovo testo in `delta`. I confini dei batch dipendono da come il testo viene trasmesso, quindi usa `index` e `final` per tracciare il progresso attraverso un messaggio piuttosto che aspettarsi che le righe siano raggruppate in un modo particolare.1567Oltre ai [common input fields](#common-input-fields), gli hook MessageDisplay ricevono identificatori per il turno e il messaggio, la posizione di questa chiamata all'interno del messaggio, e il nuovo testo in `delta`. I confini dei batch dipendono da come il testo viene trasmesso, quindi usa `index` e `final` per tracciare il progresso attraverso un messaggio piuttosto che aspettarsi che le righe siano raggruppate in un modo particolare.
1568 1568
1569| Field | Description |1569| Field | Description |
1570| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1570| :- | :- |
1571| `turn_id` | UUID del turno corrente |1571| `turn_id` | UUID del turno corrente |
1572| `message_id` | UUID del messaggio dell'assistente visualizzato. Stabile su ogni batch dello stesso messaggio. Questo non è l'ID API `msg_…`, quindi non può essere correlato con gli ID dei messaggi della trascrizione |1572| `message_id` | UUID del messaggio dell'assistente visualizzato. Stabile su ogni batch dello stesso messaggio. Questo non è l'ID API `msg_…`, quindi non può essere correlato con gli ID dei messaggi della trascrizione |
1573| `index` | Indice a base zero di questo batch all'interno del messaggio |1573| `index` | Indice a base zero di questo batch all'interno del messaggio |
1595Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, gli hook MessageDisplay possono restituire `displayContent` per sostituire il delta sullo schermo:1595Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, gli hook MessageDisplay possono restituire `displayContent` per sostituire il delta sullo schermo:
1596 1596
1597| Field | Description |1597| Field | Description |
1598| :--------------- | :--------------------------------------------------------------------------- |1598| :- | :- |
1599| `displayContent` | Testo visualizzato al posto del delta. Omettilo per visualizzare l'originale |1599| `displayContent` | Testo visualizzato al posto del delta. Omettilo per visualizzare l'originale |
1600 1600
1601Gli hook MessageDisplay non hanno controllo delle decisioni. Non possono bloccare il messaggio o cambiare ciò che viene archiviato nella trascrizione o inviato a Claude. Claude Code agisce su `displayContent` dal loro output JSON e scarta `systemMessage` e `continue`.1601Gli hook MessageDisplay non hanno controllo delle decisioni. Non possono bloccare il messaggio o cambiare ciò che viene archiviato nella trascrizione o inviato a Claude. Claude Code agisce su `displayContent` dal loro output JSON e scarta `systemMessage` e `continue`.
1736Esegue comandi shell.1736Esegue comandi shell.
1737 1737
1738| Field | Type | Example | Description |1738| Field | Type | Example | Description |
1739| :------------------ | :------ | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |1739| :- | :- | :- | :- |
1740| `command` | string | `"npm test"` | Il comando shell da eseguire |1740| `command` | string | `"npm test"` | Il comando shell da eseguire |
1741| `description` | string | `"Run test suite"` | Descrizione facoltativa di cosa fa il comando |1741| `description` | string | `"Run test suite"` | Descrizione facoltativa di cosa fa il comando |
1742| `timeout` | number | `120000` | Timeout facoltativo in millisecondi. I valori superiori al [massimo](/docs/it/tools-reference#bash-tool-behavior) vengono ridotti al massimo piuttosto che rifiutati |1742| `timeout` | number | `120000` | Timeout facoltativo in millisecondi. I valori superiori al [massimo](/docs/it/tools-reference#bash-tool-behavior) vengono ridotti al massimo piuttosto che rifiutati |
1753`changedFiles` e `files` elencano ciò che il comando ha cambiato; i campi rimanenti dicono quanto è completo e quanto è affidabile quell'elenco.1753`changedFiles` e `files` elencano ciò che il comando ha cambiato; i campi rimanenti dicono quanto è completo e quanto è affidabile quell'elenco.
1754 1754
1755| Field | Type | Example | Description |1755| Field | Type | Example | Description |
1756| :------------- | :------ | :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1756| :- | :- | :- | :- |
1757| `changedFiles` | array | `["/path/to/src/app.ts"]` | Percorsi assoluti dei file che il comando ha cambiato, al massimo 200. Presente ogni volta che `files` contiene un diff o `moreFiles` è superiore a zero |1757| `changedFiles` | array | `["/path/to/src/app.ts"]` | Percorsi assoluti dei file che il comando ha cambiato, al massimo 200. Presente ogni volta che `files` contiene un diff o `moreFiles` è superiore a zero |
1758| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff di fino a 5 file modificati, per la visualizzazione. `created` o `deleted` è `true` per un file che il comando ha aggiunto o rimosso |1758| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff di fino a 5 file modificati, per la visualizzazione. `created` o `deleted` è `true` per un file che il comando ha aggiunto o rimosso |
1759| `moreFiles` | number | `2` | Conteggio dei file modificati senza diff in `files` |1759| `moreFiles` | number | `2` | Conteggio dei file modificati senza diff in `files` |
1772I campi corrispondono allo strumento Bash, con la stringa di comando in `command`:1772I campi corrispondono allo strumento Bash, con la stringa di comando in `command`:
1773 1773
1774| Field | Type | Example | Description |1774| Field | Type | Example | Description |
1775| :------------------ | :------ | :------------------------- | :-------------------------------------------- |1775| :- | :- | :- | :- |
1776| `command` | string | `"Get-ChildItem -Recurse"` | Il comando PowerShell da eseguire |1776| `command` | string | `"Get-ChildItem -Recurse"` | Il comando PowerShell da eseguire |
1777| `description` | string | `"List files recursively"` | Descrizione facoltativa di cosa fa il comando |1777| `description` | string | `"List files recursively"` | Descrizione facoltativa di cosa fa il comando |
1778| `timeout` | number | `120000` | Timeout facoltativo in millisecondi |1778| `timeout` | number | `120000` | Timeout facoltativo in millisecondi |
1791Crea o sovrascrive un file.1791Crea o sovrascrive un file.
1792 1792
1793| Field | Type | Example | Description |1793| Field | Type | Example | Description |
1794| :---------- | :----- | :-------------------- | :------------------------------------ |1794| :- | :- | :- | :- |
1795| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da scrivere |1795| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da scrivere |
1796| `content` | string | `"file content"` | Contenuto da scrivere nel file |1796| `content` | string | `"file content"` | Contenuto da scrivere nel file |
1797 1797
1802Sostituisce una stringa in un file esistente.1802Sostituisce una stringa in un file esistente.
1803 1803
1804| Field | Type | Example | Description |1804| Field | Type | Example | Description |
1805| :------------ | :------ | :-------------------- | :-------------------------------------- |1805| :- | :- | :- | :- |
1806| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da modificare |1806| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da modificare |
1807| `old_string` | string | `"original text"` | Testo da trovare e sostituire |1807| `old_string` | string | `"original text"` | Testo da trovare e sostituire |
1808| `new_string` | string | `"replacement text"` | Testo di sostituzione |1808| `new_string` | string | `"replacement text"` | Testo di sostituzione |
1815Legge i contenuti del file.1815Legge i contenuti del file.
1816 1816
1817| Field | Type | Example | Description |1817| Field | Type | Example | Description |
1818| :---------- | :----- | :-------------------- | :---------------------------------------------------- |1818| :- | :- | :- | :- |
1819| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da leggere |1819| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da leggere |
1820| `offset` | number | `10` | Numero di riga facoltativo da cui iniziare la lettura |1820| `offset` | number | `10` | Numero di riga facoltativo da cui iniziare la lettura |
1821| `limit` | number | `50` | Numero facoltativo di righe da leggere |1821| `limit` | number | `50` | Numero facoltativo di righe da leggere |
1827Trova file che corrispondono a un modello glob.1827Trova file che corrispondono a un modello glob.
1828 1828
1829| Field | Type | Example | Description |1829| Field | Type | Example | Description |
1830| :-------- | :----- | :--------------- | :---------------------------------------------------------------------------------- |1830| :- | :- | :- | :- |
1831| `pattern` | string | `"**/*.ts"` | Modello glob per corrispondere ai file |1831| `pattern` | string | `"**/*.ts"` | Modello glob per corrispondere ai file |
1832| `path` | string | `"/path/to/dir"` | Directory facoltativa in cui cercare. Predefinito alla directory di lavoro corrente |1832| `path` | string | `"/path/to/dir"` | Directory facoltativa in cui cercare. Predefinito alla directory di lavoro corrente |
1833 1833
1838Cerca i contenuti dei file con espressioni regolari.1838Cerca i contenuti dei file con espressioni regolari.
1839 1839
1840| Field | Type | Example | Description |1840| Field | Type | Example | Description |
1841| :------------ | :------ | :--------------- | :------------------------------------------------------------------------------------- |1841| :- | :- | :- | :- |
1842| `pattern` | string | `"TODO.*fix"` | Modello di espressione regolare da cercare |1842| `pattern` | string | `"TODO.*fix"` | Modello di espressione regolare da cercare |
1843| `path` | string | `"/path/to/dir"` | File o directory facoltativo in cui cercare |1843| `path` | string | `"/path/to/dir"` | File o directory facoltativo in cui cercare |
1844| `glob` | string | `"*.ts"` | Modello glob facoltativo per filtrare i file |1844| `glob` | string | `"*.ts"` | Modello glob facoltativo per filtrare i file |
1853Recupera ed elabora il contenuto web.1853Recupera ed elabora il contenuto web.
1854 1854
1855| Field | Type | Example | Description |1855| Field | Type | Example | Description |
1856| :------- | :----- | :---------------------------- | :------------------------------------------ |1856| :- | :- | :- | :- |
1857| `url` | string | `"https://example.com/api"` | URL da cui recuperare il contenuto |1857| `url` | string | `"https://example.com/api"` | URL da cui recuperare il contenuto |
1858| `prompt` | string | `"Extract the API endpoints"` | Prompt da eseguire sul contenuto recuperato |1858| `prompt` | string | `"Extract the API endpoints"` | Prompt da eseguire sul contenuto recuperato |
1859 1859
1864Cerca il web.1864Cerca il web.
1865 1865
1866| Field | Type | Example | Description |1866| Field | Type | Example | Description |
1867| :---------------- | :----- | :----------------------------- | :--------------------------------------------------- |1867| :- | :- | :- | :- |
1868| `query` | string | `"react hooks best practices"` | Query di ricerca |1868| `query` | string | `"react hooks best practices"` | Query di ricerca |
1869| `allowed_domains` | array | `["docs.example.com"]` | Facoltativo: includi solo risultati da questi domini |1869| `allowed_domains` | array | `["docs.example.com"]` | Facoltativo: includi solo risultati da questi domini |
1870| `blocked_domains` | array | `["spam.example.com"]` | Facoltativo: escludi risultati da questi domini |1870| `blocked_domains` | array | `["spam.example.com"]` | Facoltativo: escludi risultati da questi domini |
1876Genera un [subagent](/docs/it/sub-agents).1876Genera un [subagent](/docs/it/sub-agents).
1877 1877
1878| Field | Type | Example | Description |1878| Field | Type | Example | Description |
1879| :-------------- | :----- | :------------------------- | :------------------------------------------------------------- |1879| :- | :- | :- | :- |
1880| `prompt` | string | `"Find all API endpoints"` | Il compito per l'agente da eseguire |1880| `prompt` | string | `"Find all API endpoints"` | Il compito per l'agente da eseguire |
1881| `description` | string | `"Find API endpoints"` | Breve descrizione del compito |1881| `description` | string | `"Find API endpoints"` | Breve descrizione del compito |
1882| `subagent_type` | string | `"Explore"` | Tipo di agente specializzato da usare |1882| `subagent_type` | string | `"Explore"` | Tipo di agente specializzato da usare |
1885Quando una chiamata Agent in primo piano si completa, il tuo hook [PostToolUse](#posttooluse) riceve il testo finale del subagent e la telemetria di esecuzione in `tool_response`. Leggi questi campi per ispezionare l'esecuzione; per i rollup di token e costi tra i subagent, usa i [token and cost counters](/docs/it/monitoring-usage#token-counter) filtrati a `query_source` `"subagent"`, poiché `totalTokens` e `usage` coprono solo la richiesta finale:1885Quando una chiamata Agent in primo piano si completa, il tuo hook [PostToolUse](#posttooluse) riceve il testo finale del subagent e la telemetria di esecuzione in `tool_response`. Leggi questi campi per ispezionare l'esecuzione; per i rollup di token e costi tra i subagent, usa i [token and cost counters](/docs/it/monitoring-usage#token-counter) filtrati a `query_source` `"subagent"`, poiché `totalTokens` e `usage` coprono solo la richiesta finale:
1886 1886
1887| Field | Type | Example | Description |1887| Field | Type | Example | Description |
1888| :------------------ | :----- | :---------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1888| :- | :- | :- | :- |
1889| `status` | string | `"completed"` | `"completed"` per i subagent in primo piano, `"async_launched"` per i subagent in background. A partire dalla v2.1.198, i subagent si eseguono in background per impostazione predefinita, quindi un `run_in_background` omesso produce anche `"async_launched"` |1889| `status` | string | `"completed"` | `"completed"` per i subagent in primo piano, `"async_launched"` per i subagent in background. A partire dalla v2.1.198, i subagent si eseguono in background per impostazione predefinita, quindi un `run_in_background` omesso produce anche `"async_launched"` |
1890| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificatore per l'esecuzione del subagent |1890| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identificatore per l'esecuzione del subagent |
1891| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | I blocchi di testo finali del subagent, o, per un subagent il cui rapporto passa attraverso `SubagentHandback`, una breve nota su quel hand-back al loro posto |1891| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | I blocchi di testo finali del subagent, o, per un subagent il cui rapporto passa attraverso `SubagentHandback`, una breve nota su quel hand-back al loro posto |
1911Chiede all'utente da una a quattro domande a scelta multipla.1911Chiede all'utente da una a quattro domande a scelta multipla.
1912 1912
1913| Field | Type | Example | Description |1913| Field | Type | Example | Description |
1914| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1914| :- | :- | :- | :- |
1915| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Domande da presentare, ciascuna con una stringa `question`, un breve `header`, un array `options`, e un flag `multiSelect` facoltativo |1915| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Domande da presentare, ciascuna con una stringa `question`, un breve `header`, un array `options`, e un flag `multiSelect` facoltativo |
1916| `answers` | object | `{"Which framework?": "React"}` | Facoltativo. Mappa il testo della domanda all'etichetta dell'opzione selezionata. Le risposte multi-select uniscono le etichette con virgole. Claude non imposta questo campo; forniscilo tramite `updatedInput` per rispondere programmaticamente |1916| `answers` | object | `{"Which framework?": "React"}` | Facoltativo. Mappa il testo della domanda all'etichetta dell'opzione selezionata. Le risposte multi-select uniscono le etichette con virgole. Claude non imposta questo campo; forniscilo tramite `updatedInput` per rispondere programmaticamente |
1917 1917
1922Presenta un piano e chiede all'utente di approvarlo prima che Claude lasci la [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode). Claude scrive il piano in un file su disco prima di chiamare lo strumento, quindi il `tool_input` letterale dal modello è tipicamente vuoto. Claude Code inietta il contenuto del piano e il percorso del file prima di passare l'input agli hook.1922Presenta un piano e chiede all'utente di approvarlo prima che Claude lasci la [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode). Claude scrive il piano in un file su disco prima di chiamare lo strumento, quindi il `tool_input` letterale dal modello è tipicamente vuoto. Claude Code inietta il contenuto del piano e il percorso del file prima di passare l'input agli hook.
1923 1923
1924| Field | Type | Example | Description |1924| Field | Type | Example | Description |
1925| :--------------- | :----- | :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |1925| :- | :- | :- | :- |
1926| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenuto del piano in Markdown. Iniettato dal file del piano su disco |1926| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenuto del piano in Markdown. Iniettato dal file del piano su disco |
1927| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Percorso al file del piano. Iniettato |1927| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Percorso al file del piano. Iniettato |
1928| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecato. Claude Code accetta il campo ma lo ignora. Prima della v2.1.205, portava permessi basati su prompt che Claude ha richiesto per implementare il piano |1928| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecato. Claude Code accetta il campo ma lo ignora. Prima della v2.1.205, portava permessi basati su prompt che Claude ha richiesto per implementare il piano |
1936Gli hook `PreToolUse` possono controllare se una chiamata di strumento procede. A differenza di altri hook che usano un campo `decision` di livello superiore, PreToolUse restituisce la sua decisione all'interno di un oggetto `hookSpecificOutput`. Questo gli dà un controllo più ricco: quattro risultati (consenti, nega, chiedi, o rinvia) più la capacità di modificare l'input dello strumento prima dell'esecuzione.1936Gli hook `PreToolUse` possono controllare se una chiamata di strumento procede. A differenza di altri hook che usano un campo `decision` di livello superiore, PreToolUse restituisce la sua decisione all'interno di un oggetto `hookSpecificOutput`. Questo gli dà un controllo più ricco: quattro risultati (consenti, nega, chiedi, o rinvia) più la capacità di modificare l'input dello strumento prima dell'esecuzione.
1937 1937
1938| Field | Description |1938| Field | Description |
1939| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1939| :- | :- |
1940| `permissionDecision` | `"allow"` salta il prompt di permesso, tranne per le [azioni che nessuna modalità auto-approva](/docs/it/permission-modes#actions-no-mode-auto-approves) e per `AskUserQuestion` e `ExitPlanMode`, che hanno bisogno di [`updatedInput` accoppiato con esso](#allow-with-updatedinput). `"deny"` impedisce la chiamata dello strumento. `"ask"` chiede all'utente di confermare. `"defer"` esce correttamente in modo che lo strumento possa essere ripreso più tardi. Le [regole di negazione e richiesta](/docs/it/permissions#manage-permissions) vengono comunque valutate indipendentemente da ciò che l'hook restituisce |1940| `permissionDecision` | `"allow"` salta il prompt di permesso, tranne per le [azioni che nessuna modalità auto-approva](/docs/it/permission-modes#actions-no-mode-auto-approves) e per `AskUserQuestion` e `ExitPlanMode`, che hanno bisogno di [`updatedInput` accoppiato con esso](#allow-with-updatedinput). `"deny"` impedisce la chiamata dello strumento. `"ask"` chiede all'utente di confermare. `"defer"` esce correttamente in modo che lo strumento possa essere ripreso più tardi. Le [regole di negazione e richiesta](/docs/it/permissions#manage-permissions) vengono comunque valutate indipendentemente da ciò che l'hook restituisce |
1941| `permissionDecisionReason` | Per `"allow"` e `"ask"`, mostrato all'utente ma non a Claude. Per `"deny"`, mostrato a Claude. Per `"defer"`, ignorato |1941| `permissionDecisionReason` | Per `"allow"` e `"ask"`, mostrato all'utente ma non a Claude. Per `"deny"`, mostrato a Claude. Per `"defer"`, ignorato |
1942| `updatedInput` | Modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includi i campi invariati insieme a quelli modificati. Claude Code valuta le regole di permesso e l'idoneità di [auto-background](/docs/it/tools-reference#background-commands) di un comando Bash rispetto all'input che il tuo hook restituisce, non l'input che Claude ha inviato. Combina con `"allow"` per auto-approvare, o `"ask"` per mostrare l'input modificato all'utente. Per `"defer"`, ignorato |1942| `updatedInput` | Modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includi i campi invariati insieme a quelli modificati. Claude Code valuta le regole di permesso e l'idoneità di [auto-background](/docs/it/tools-reference#background-commands) di un comando Bash rispetto all'input che il tuo hook restituisce, non l'input che Claude ha inviato. Combina con `"allow"` per auto-approvare, o `"ask"` per mostrare l'input modificato all'utente. Per `"defer"`, ignorato |
2069Gli hook `PermissionRequest` possono consentire o negare le richieste di permesso. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire un oggetto `decision` con questi campi specifici dell'evento:2069Gli hook `PermissionRequest` possono consentire o negare le richieste di permesso. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire un oggetto `decision` con questi campi specifici dell'evento:
2070 2070
2071| Field | Description |2071| Field | Description |
2072| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2072| :- | :- |
2073| `behavior` | `"allow"` concede il permesso, `"deny"` lo nega. Le [regole di negazione e richiesta](/docs/it/permissions#manage-permissions) vengono comunque valutate, quindi un hook che restituisce `"allow"` non sovrascrive una regola di negazione corrispondente |2073| `behavior` | `"allow"` concede il permesso, `"deny"` lo nega. Le [regole di negazione e richiesta](/docs/it/permissions#manage-permissions) vengono comunque valutate, quindi un hook che restituisce `"allow"` non sovrascrive una regola di negazione corrispondente |
2074| `updatedInput` | Solo per `"allow"`: modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includi i campi invariati insieme a quelli modificati. L'input modificato viene rivalutato rispetto alle regole di negazione e richiesta |2074| `updatedInput` | Solo per `"allow"`: modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includi i campi invariati insieme a quelli modificati. L'input modificato viene rivalutato rispetto alle regole di negazione e richiesta |
2075| `updatedPermissions` | Solo per `"allow"`: array di [permission update entries](#permission-update-entries) da applicare, come aggiungere una regola di consentimento o cambiare il modo di permesso della sessione |2075| `updatedPermissions` | Solo per `"allow"`: array di [permission update entries](#permission-update-entries) da applicare, come aggiungere una regola di consentimento o cambiare il modo di permesso della sessione |
2099Il campo di output `updatedPermissions` e il campo di input [`permission_suggestions`](#permissionrequest-input) usano entrambi lo stesso array di oggetti di voce. Ogni voce ha un `type` che determina i suoi altri campi, e una `destination` che controlla dove viene scritta la modifica.2099Il campo di output `updatedPermissions` e il campo di input [`permission_suggestions`](#permissionrequest-input) usano entrambi lo stesso array di oggetti di voce. Ogni voce ha un `type` che determina i suoi altri campi, e una `destination` che controlla dove viene scritta la modifica.
2100 2100
2101| `type` | Fields | Effect |2101| `type` | Fields | Effect |
2102| :------------------ | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2102| :- | :- | :- |
2103| `addRules` | `rules`, `behavior`, `destination` | Aggiunge regole di permesso. `rules` è un array di oggetti `{toolName, ruleContent?}`. Ometti `ruleContent` per corrispondere all'intero strumento. `behavior` è `"allow"`, `"deny"`, o `"ask"` |2103| `addRules` | `rules`, `behavior`, `destination` | Aggiunge regole di permesso. `rules` è un array di oggetti `{toolName, ruleContent?}`. Ometti `ruleContent` per corrispondere all'intero strumento. `behavior` è `"allow"`, `"deny"`, o `"ask"` |
2104| `replaceRules` | `rules`, `behavior`, `destination` | Sostituisce tutte le regole del `behavior` dato alla `destination` con le `rules` fornite |2104| `replaceRules` | `rules`, `behavior`, `destination` | Sostituisce tutte le regole del `behavior` dato alla `destination` con le `rules` fornite |
2105| `removeRules` | `rules`, `behavior`, `destination` | Rimuove le regole corrispondenti del `behavior` dato |2105| `removeRules` | `rules`, `behavior`, `destination` | Rimuove le regole corrispondenti del `behavior` dato |
2116Il campo `destination` su ogni voce determina se la modifica rimane in memoria o persiste in un file di impostazioni.2116Il campo `destination` su ogni voce determina se la modifica rimane in memoria o persiste in un file di impostazioni.
2117 2117
2118| `destination` | Writes to |2118| `destination` | Writes to |
2119| :---------------- | :--------------------------------------------------- |2119| :- | :- |
2120| `session` | solo in memoria, scartato quando la sessione termina |2120| `session` | solo in memoria, scartato quando la sessione termina |
2121| `localSettings` | `.claude/settings.local.json` |2121| `localSettings` | `.claude/settings.local.json` |
2122| `projectSettings` | `.claude/settings.json` |2122| `projectSettings` | `.claude/settings.json` |
2165```2165```
2166 2166
2167| Field | Description |2167| Field | Description |
2168| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------ |2168| :- | :- |
2169| `duration_ms` | Facoltativo. Tempo di esecuzione dello strumento in millisecondi. Esclude il tempo trascorso nei prompt di permesso e negli hook PreToolUse |2169| `duration_ms` | Facoltativo. Tempo di esecuzione dello strumento in millisecondi. Esclude il tempo trascorso nei prompt di permesso e negli hook PreToolUse |
2170 2170
2171<h4 id="posttooluse-decision-control">2171<h4 id="posttooluse-decision-control">
2175Gli hook `PostToolUse` possono fornire feedback a Claude dopo l'esecuzione dello strumento. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:2175Gli hook `PostToolUse` possono fornire feedback a Claude dopo l'esecuzione dello strumento. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:
2176 2176
2177| Field | Description |2177| Field | Description |
2178| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2178| :- | :- |
2179| `decision` | `"block"` aggiunge il `reason` accanto al risultato dello strumento. Claude vede comunque l'output originale; per sostituirlo, usa `updatedToolOutput` |2179| `decision` | `"block"` aggiunge il `reason` accanto al risultato dello strumento. Claude vede comunque l'output originale; per sostituirlo, usa `updatedToolOutput` |
2180| `reason` | Spiegazione mostrata a Claude quando `decision` è `"block"` |2180| `reason` | Spiegazione mostrata a Claude quando `decision` è `"block"` |
2181| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al risultato dello strumento. Vedi [Add context for Claude](#add-context-for-claude) |2181| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al risultato dello strumento. Vedi [Add context for Claude](#add-context-for-claude) |
2277```2277```
2278 2278
2279| Field | Description |2279| Field | Description |
2280| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2280| :- | :- |
2281| `error` | Stringa che descrive cosa è andato storto. Il formato dipende dallo strumento che ha fallito |2281| `error` | Stringa che descrive cosa è andato storto. Il formato dipende dallo strumento che ha fallito |
2282| `is_interrupt` | Booleano facoltativo. True quando il fallimento ha raggiunto Claude Code come un'interruzione piuttosto che come un errore che lo strumento ha segnalato. L'annullamento di uno strumento in esecuzione non attiva questo hook; il risultato dello strumento porta il messaggio di interruzione invece |2282| `is_interrupt` | Booleano facoltativo. True quando il fallimento ha raggiunto Claude Code come un'interruzione piuttosto che come un errore che lo strumento ha segnalato. L'annullamento di uno strumento in esecuzione non attiva questo hook; il risultato dello strumento porta il messaggio di interruzione invece |
2283| `duration_ms` | Facoltativo. Tempo di esecuzione dello strumento in millisecondi. Esclude il tempo trascorso nei prompt di permesso e negli hook PreToolUse |2283| `duration_ms` | Facoltativo. Tempo di esecuzione dello strumento in millisecondi. Esclude il tempo trascorso nei prompt di permesso e negli hook PreToolUse |
2295Gli hook `PostToolUseFailure` possono fornire contesto a Claude dopo un fallimento dello strumento. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:2295Gli hook `PostToolUseFailure` possono fornire contesto a Claude dopo un fallimento dello strumento. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:
2296 2296
2297| Field | Description |2297| Field | Description |
2298| :------------------ | :---------------------------------------------------------------------------------------------------------------- |2298| :- | :- |
2299| `additionalContext` | Stringa aggiunta al contesto di Claude insieme all'errore. Vedi [Add context for Claude](#add-context-for-claude) |2299| `additionalContext` | Stringa aggiunta al contesto di Claude insieme all'errore. Vedi [Add context for Claude](#add-context-for-claude) |
2300 2300
2301```json theme={null}2301```json theme={null}
2356Gli hook `PostToolBatch` possono iniettare contesto per Claude. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:2356Gli hook `PostToolBatch` possono iniettare contesto per Claude. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:
2357 2357
2358| Field | Description |2358| Field | Description |
2359| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |2359| :- | :- |
2360| `additionalContext` | Stringa di contesto iniettata una volta prima della prossima chiamata del modello. Vedi [Add context for Claude](#add-context-for-claude) per i dettagli di consegna, cosa metterci, e come le sessioni riprese gestiscono i valori passati |2360| `additionalContext` | Stringa di contesto iniettata una volta prima della prossima chiamata del modello. Vedi [Add context for Claude](#add-context-for-claude) per i dettagli di consegna, cosa metterci, e come le sessioni riprese gestiscono i valori passati |
2361 2361
2362```json theme={null}2362```json theme={null}
2402```2402```
2403 2403
2404| Field | Description |2404| Field | Description |
2405| :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2405| :- | :- |
2406| `reason` | Il motivo della negazione. Per un verdetto del classificatore, nella maggior parte delle sessioni nomina la regola corrispondente tra parentesi quadre, come `[Data Exfiltration]`; vedi [Review denials](/docs/it/auto-mode-config#review-denials) per le altre forme. Per una [negazione senza verdetto](#permissiondenied-decision-control), inizia con `Auto mode could not evaluate this action and is blocking it for safety`. Per una negazione perché il modello del classificatore non era disponibile, è il testo fisso `Classifier unavailable` |2406| `reason` | Il motivo della negazione. Per un verdetto del classificatore, nella maggior parte delle sessioni nomina la regola corrispondente tra parentesi quadre, come `[Data Exfiltration]`; vedi [Review denials](/docs/it/auto-mode-config#review-denials) per le altre forme. Per una [negazione senza verdetto](#permissiondenied-decision-control), inizia con `Auto mode could not evaluate this action and is blocking it for safety`. Per una negazione perché il modello del classificatore non era disponibile, è il testo fisso `Classifier unavailable` |
2407 2407
2408<h4 id="permissiondenied-decision-control">2408<h4 id="permissiondenied-decision-control">
2433Ricevi questi eventi hook anche con le notifiche desktop disattivate: l'impostazione `preferredNotifChannel`, incluso `notifications_disabled`, cambia solo come sei avvisato, non se il tuo hook si esegue.2433Ricevi questi eventi hook anche con le notifiche desktop disattivate: l'impostazione `preferredNotifChannel`, incluso `notifications_disabled`, cambia solo come sei avvisato, non se il tuo hook si esegue.
2434 2434
2435| Matcher | Quando si attiva |2435| Matcher | Quando si attiva |
2436| :--------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2436| :- | :- |
2437| `permission_prompt` | Claude ha bisogno della tua approvazione per usare uno strumento o la [richiesta di rete](/docs/it/sandboxing#network-isolation) di un comando sandboxed, e il prompt ha atteso circa sei secondi |2437| `permission_prompt` | Claude ha bisogno della tua approvazione per usare uno strumento o la [richiesta di rete](/docs/it/sandboxing#network-isolation) di un comando sandboxed, e il prompt ha atteso circa sei secondi |
2438| `idle_prompt` | Claude ha finito di rispondere circa 60 secondi fa e non hai digitato da allora |2438| `idle_prompt` | Claude ha finito di rispondere circa 60 secondi fa e non hai digitato da allora |
2439| `auth_success` | L'autenticazione si completa |2439| `auth_success` | L'autenticazione si completa |
2550Gli hook SubagentStart non possono bloccare la creazione del subagent, ma possono iniettare contesto nel subagent. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, puoi restituire:2550Gli hook SubagentStart non possono bloccare la creazione del subagent, ma possono iniettare contesto nel subagent. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, puoi restituire:
2551 2551
2552| Field | Description |2552| Field | Description |
2553| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |2553| :- | :- |
2554| `additionalContext` | Stringa aggiunta al contesto del subagent all'inizio della sua conversazione, prima del suo primo prompt. Vedi [Add context for Claude](#add-context-for-claude) |2554| `additionalContext` | Stringa aggiunta al contesto del subagent all'inizio della sua conversazione, prima del suo primo prompt. Vedi [Add context for Claude](#add-context-for-claude) |
2555 2555
2556```json theme={null}2556```json theme={null}
2632```2632```
2633 2633
2634| Field | Description |2634| Field | Description |
2635| :----------------- | :------------------------------------------------------------------------------------- |2635| :- | :- |
2636| `task_id` | Identificatore del compito che viene creato |2636| `task_id` | Identificatore del compito che viene creato |
2637| `task_subject` | Titolo del compito |2637| `task_subject` | Titolo del compito |
2638| `task_description` | Descrizione dettagliata del compito. Potrebbe essere assente |2638| `task_description` | Descrizione dettagliata del compito. Potrebbe essere assente |
2693```2693```
2694 2694
2695| Field | Description |2695| Field | Description |
2696| :----------------- | :------------------------------------------------------------------------------------- |2696| :- | :- |
2697| `task_id` | Identificatore del compito che viene completato |2697| `task_id` | Identificatore del compito che viene completato |
2698| `task_subject` | Titolo del compito |2698| `task_subject` | Titolo del compito |
2699| `task_description` | Descrizione dettagliata del compito. Potrebbe essere assente |2699| `task_description` | Descrizione dettagliata del compito. Potrebbe essere assente |
2748Ogni voce in `background_tasks` descrive un compito in volo e usa questi campi:2748Ogni voce in `background_tasks` descrive un compito in volo e usa questi campi:
2749 2749
2750| Field | Description |2750| Field | Description |
2751| :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2751| :- | :- |
2752| `id` | Identificatore del compito |2752| `id` | Identificatore del compito |
2753| `type` | Etichetta del tipo di compito amichevole come `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, o `MCP task`. Ogni etichetta identifica quale funzione di Claude Code ha creato il compito. Ritorna al discriminante grezzo per i tipi non riconosciuti |2753| `type` | Etichetta del tipo di compito amichevole come `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, o `MCP task`. Ogni etichetta identifica quale funzione di Claude Code ha creato il compito. Ritorna al discriminante grezzo per i tipi non riconosciuti |
2754| `status` | Stato del compito corrente |2754| `status` | Stato del compito corrente |
2762Ogni voce in `session_crons` descrive un risveglio programmato con ambito di sessione, proveniente da `CronCreate`, `ScheduleWakeup`, e `/loop`:2762Ogni voce in `session_crons` descrive un risveglio programmato con ambito di sessione, proveniente da `CronCreate`, `ScheduleWakeup`, e `/loop`:
2763 2763
2764| Field | Description |2764| Field | Description |
2765| :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |2765| :- | :- |
2766| `id` | Identificatore del compito cron |2766| `id` | Identificatore del compito cron |
2767| `schedule` | Espressione cron, ad esempio `0 9 * * 1-5` |2767| `schedule` | Espressione cron, ad esempio `0 9 * * 1-5` |
2768| `recurring` | `false` per i risvegli una tantum il cui programma codifica un sing olo tempo di attivazione, `true` per i compiti che si riattivano su ogni corrispondenza |2768| `recurring` | `false` per i risvegli una tantum il cui programma codifica un sing olo tempo di attivazione, `true` per i compiti che si riattivano su ogni corrispondenza |
2806Gli hook `Stop` e `SubagentStop` possono controllare se Claude continua. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:2806Gli hook `Stop` e `SubagentStop` possono controllare se Claude continua. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, il tuo script hook può restituire questi campi specifici dell'evento:
2807 2807
2808| Field | Description |2808| Field | Description |
2809| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2809| :- | :- |
2810| `decision` | `"block"` impedisce a Claude di fermarsi. Ometti per consentire a Claude di fermarsi |2810| `decision` | `"block"` impedisce a Claude di fermarsi. Ometti per consentire a Claude di fermarsi |
2811| `reason` | Richiesto quando `decision` è `"block"`. Dice a Claude perché dovrebbe continuare |2811| `reason` | Richiesto quando `decision` è `"block"`. Dice a Claude perché dovrebbe continuare |
2812| `hookSpecificOutput.additionalContext` | Feedback non di errore per Claude. La conversazione continua in modo che Claude possa agire su di esso, ma a differenza di `decision: "block"` viene mostrato nella trascrizione come feedback dell'hook piuttosto che come errore dell'hook |2812| `hookSpecificOutput.additionalContext` | Feedback non di errore per Claude. La conversazione continua in modo che Claude possa agire su di esso, ma a differenza di `decision: "block"` viene mostrato nella trascrizione come feedback dell'hook piuttosto che come errore dell'hook |
2844Oltre ai [common input fields](#common-input-fields), gli hook StopFailure ricevono `error`, `error_details` facoltativo, e `last_assistant_message` facoltativo. Il campo `error` identifica il tipo di errore ed è usato per il filtraggio del matcher.2844Oltre ai [common input fields](#common-input-fields), gli hook StopFailure ricevono `error`, `error_details` facoltativo, e `last_assistant_message` facoltativo. Il campo `error` identifica il tipo di errore ed è usato per il filtraggio del matcher.
2845 2845
2846| Field | Description |2846| Field | Description |
2847| :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2847| :- | :- |
2848| `error` | Tipo di errore: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, o `unknown` |2848| `error` | Tipo di errore: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, o `unknown` |
2849| `error_details` | Dettagli aggiuntivi sull'errore, quando disponibili |2849| `error_details` | Dettagli aggiuntivi sull'errore, quando disponibili |
2850| `last_assistant_message` | Il testo di errore renderizzato mostrato nella conversazione. A differenza di `Stop` e `SubagentStop`, dove questo campo contiene l'output conversazionale di Claude, per `StopFailure` contiene la stringa di errore API stessa, come `"API Error: Rate limit reached"` |2850| `last_assistant_message` | Il testo di errore renderizzato mostrato nella conversazione. A differenza di `Stop` e `SubagentStop`, dove questo campo contiene l'output conversazionale di Claude, per `StopFailure` contiene la stringa di errore API stessa, come `"API Error: Rate limit reached"` |
2890```2890```
2891 2891
2892| Field | Description |2892| Field | Description |
2893| :-------------- | :------------------------------------------------------------------------------------- |2893| :- | :- |
2894| `teammate_name` | Nome del teammate che sta per andare inattivo |2894| `teammate_name` | Nome del teammate che sta per andare inattivo |
2895| `team_name` | Deprecato. Nome del team derivato dalla sessione; verrà rimosso in una versione futura |2895| `team_name` | Deprecato. Nome del team derivato dalla sessione; verrà rimosso in una versione futura |
2896 2896
2927Il matcher filtra sulla fonte di configurazione:2927Il matcher filtra sulla fonte di configurazione:
2928 2928
2929| Matcher | Quando si attiva |2929| Matcher | Quando si attiva |
2930| :----------------- | :---------------------------------------------------------------- |2930| :- | :- |
2931| `user_settings` | `~/.claude/settings.json` cambia |2931| `user_settings` | `~/.claude/settings.json` cambia |
2932| `project_settings` | `.claude/settings.json` cambia |2932| `project_settings` | `.claude/settings.json` cambia |
2933| `local_settings` | `.claude/settings.local.json` cambia |2933| `local_settings` | `.claude/settings.local.json` cambia |
2978Gli hook ConfigChange possono bloccare i cambiamenti di configurazione dal prendere effetto. Usa il codice di uscita 2 o un JSON `decision` per prevenire il cambiamento. Quando bloccato, le nuove impostazioni non vengono applicate alla sessione in esecuzione.2978Gli hook ConfigChange possono bloccare i cambiamenti di configurazione dal prendere effetto. Usa il codice di uscita 2 o un JSON `decision` per prevenire il cambiamento. Quando bloccato, le nuove impostazioni non vengono applicate alla sessione in esecuzione.
2979 2979
2980| Field | Description |2980| Field | Description |
2981| :--------- | :--------------------------------------------------------------------------------------------------------- |2981| :- | :- |
2982| `decision` | `"block"` impedisce l'applicazione del cambiamento di configurazione. Ometti per consentire il cambiamento |2982| `decision` | `"block"` impedisce l'applicazione del cambiamento di configurazione. Ometti per consentire il cambiamento |
2983| `reason` | Accettato ma mai mostrato |2983| `reason` | Accettato ma mai mostrato |
2984 2984
3027Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, gli hook CwdChanged possono restituire `watchPaths` per impostare dinamicamente quali percorsi di file [FileChanged](#filechanged) osserva:3027Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, gli hook CwdChanged possono restituire `watchPaths` per impostare dinamicamente quali percorsi di file [FileChanged](#filechanged) osserva:
3028 3028
3029| Field | Description |3029| Field | Description |
3030| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3030| :- | :- |
3031| `watchPaths` | Array di percorsi assoluti. Sostituisce l'elenco di osservazione dinamico corrente. I percorsi dalla tua configurazione `matcher` vengono sempre osservati. Restituire un array vuoto cancella l'elenco dinamico, che è tipico quando si entra in una nuova directory |3031| `watchPaths` | Array di percorsi assoluti. Sostituisce l'elenco di osservazione dinamico corrente. I percorsi dalla tua configurazione `matcher` vengono sempre osservati. Restituire un array vuoto cancella l'elenco dinamico, che è tipico quando si entra in una nuova directory |
3032 3032
3033Gli hook CwdChanged non hanno controllo delle decisioni. Non possono bloccare il cambiamento di directory.3033Gli hook CwdChanged non hanno controllo delle decisioni. Non possono bloccare il cambiamento di directory.
3053Il matcher filtra su come la directory è stata aggiunta:3053Il matcher filtra su come la directory è stata aggiunta:
3054 3054
3055| Matcher | Quando si attiva |3055| Matcher | Quando si attiva |
3056| :------------------- | :-------------------------------------------------------------------------------------- |3056| :- | :- |
3057| `slash_command` | Aggiungi una directory con `/add-dir` |3057| `slash_command` | Aggiungi una directory con `/add-dir` |
3058| `register_repo_root` | Un client SDK aggiunge una directory con la richiesta di controllo `register_repo_root` |3058| `register_repo_root` | Un client SDK aggiunge una directory con la richiesta di controllo `register_repo_root` |
3059 3059
3064Oltre ai [common input fields](#common-input-fields), gli hook DirectoryAdded ricevono `directory` e `source`.3064Oltre ai [common input fields](#common-input-fields), gli hook DirectoryAdded ricevono `directory` e `source`.
3065 3065
3066| Field | Description |3066| Field | Description |
3067| :---------- | :----------------------------------------------------------------------------------------------------------------------------------- |3067| :- | :- |
3068| `directory` | Percorso assoluto della directory che è stata aggiunta |3068| `directory` | Percorso assoluto della directory che è stata aggiunta |
3069| `source` | Come la directory è stata aggiunta, `"slash_command"` per `/add-dir` o `"register_repo_root"` per la richiesta di controllo dell'SDK |3069| `source` | Come la directory è stata aggiunta, `"slash_command"` per `/add-dir` o `"register_repo_root"` per la richiesta di controllo dell'SDK |
3070 3070
3138Oltre ai [common input fields](#common-input-fields), gli hook FileChanged ricevono `file_path` e `event`.3138Oltre ai [common input fields](#common-input-fields), gli hook FileChanged ricevono `file_path` e `event`.
3139 3139
3140| Field | Description |3140| Field | Description |
3141| :---------- | :----------------------------------------------------------------------------------------------------------------- |3141| :- | :- |
3142| `file_path` | Percorso assoluto al file che è cambiato |3142| `file_path` | Percorso assoluto al file che è cambiato |
3143| `event` | Cosa è accaduto: `"change"` per un file modificato, `"add"` per un file creato, o `"unlink"` per un file eliminato |3143| `event` | Cosa è accaduto: `"change"` per un file modificato, `"add"` per un file creato, o `"unlink"` per un file eliminato |
3144 3144
3160Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, gli hook FileChanged possono restituire `watchPaths` per aggiornare dinamicamente quali percorsi di file vengono osservati:3160Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, gli hook FileChanged possono restituire `watchPaths` per aggiornare dinamicamente quali percorsi di file vengono osservati:
3161 3161
3162| Field | Description |3162| Field | Description |
3163| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3163| :- | :- |
3164| `watchPaths` | Array di percorsi assoluti. Sostituisce l'elenco di osservazione dinamico corrente. I percorsi dalla tua configurazione `matcher` vengono sempre osservati. Usalo quando il tuo script hook scopre file aggiuntivi da osservare in base al file modificato |3164| `watchPaths` | Array di percorsi assoluti. Sostituisce l'elenco di osservazione dinamico corrente. I percorsi dalla tua configurazione `matcher` vengono sempre osservati. Usalo quando il tuo script hook scopre file aggiuntivi da osservare in base al file modificato |
3165 3165
3166Gli hook FileChanged non hanno controllo delle decisioni. Non possono bloccare il cambiamento del file dal verificarsi.3166Gli hook FileChanged non hanno controllo delle decisioni. Non possono bloccare il cambiamento del file dal verificarsi.
3296Il valore del matcher indica se la compattazione è stata attivata manualmente o automaticamente:3296Il valore del matcher indica se la compattazione è stata attivata manualmente o automaticamente:
3297 3297
3298| Matcher | Quando si attiva |3298| Matcher | Quando si attiva |
3299| :------- | :------------------------------------------------------------------------------------------------------------------------- |3299| :- | :- |
3300| `manual` | `/compact` |3300| `manual` | `/compact` |
3301| `auto` | Auto-compact quando la conversazione raggiunge la [finestra di auto-compact](/docs/it/model-config#set-the-auto-compact-window) |3301| `auto` | Auto-compact quando la conversazione raggiunge la [finestra di auto-compact](/docs/it/model-config#set-the-auto-compact-window) |
3302 3302
3332Gli stessi valori di matcher si applicano come per `PreCompact`:3332Gli stessi valori di matcher si applicano come per `PreCompact`:
3333 3333
3334| Matcher | Quando si attiva |3334| Matcher | Quando si attiva |
3335| :------- | :------------------------------------------------------------------------------------------------------------------------------ |3335| :- | :- |
3336| `manual` | Dopo `/compact` |3336| `manual` | Dopo `/compact` |
3337| `auto` | Dopo auto-compact quando la conversazione raggiunge la [finestra di auto-compact](/docs/it/model-config#set-the-auto-compact-window) |3337| `auto` | Dopo auto-compact quando la conversazione raggiunge la [finestra di auto-compact](/docs/it/model-config#set-the-auto-compact-window) |
3338 3338
3450Oltre ai [common input fields](#common-input-fields), gli hook PreModelSwitch ricevono i campi in questa tabella. Gli ultimi cinque descrivono quale costo ha l'invio della conversazione al nuovo modello, quindi un hook può mostrare quella cifra prima che il cambio accada.3450Oltre ai [common input fields](#common-input-fields), gli hook PreModelSwitch ricevono i campi in questa tabella. Gli ultimi cinque descrivono quale costo ha l'invio della conversazione al nuovo modello, quindi un hook può mostrare quella cifra prima che il cambio accada.
3451 3451
3452| Field | Type | Description |3452| Field | Type | Description |
3453| :-------------------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |3453| :- | :- | :- |
3454| `from_model` | string | ID del modello da cui il cambio cambia |3454| `from_model` | string | ID del modello da cui il cambio cambia |
3455| `to_model` | string | ID del modello a cui il cambio cambia. Il matcher confronta rispetto al nome canonico di questo modello |3455| `to_model` | string | ID del modello a cui il cambio cambia. Il matcher confronta rispetto al nome canonico di questo modello |
3456| `requested_model` | string or `null` | Il modello che la richiesta ha nominato: un alias come `opus`, un ID di modello completo, o `null` quando la richiesta era per il modello predefinito |3456| `requested_model` | string or `null` | Il modello che la richiesta ha nominato: un alias come `opus`, un ID di modello completo, o `null` quando la richiesta era per il modello predefinito |
3490Per un controllo più fine, restituisci `permissionDecision` e `permissionDecisionReason` in un oggetto `hookSpecificOutput`, come su [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` accetta `"allow"`, `"deny"`, e `"ask"`. Non accetta `"defer"`, `updatedInput`, o `additionalContext`. La tabella seguente descrive entrambi i campi:3490Per un controllo più fine, restituisci `permissionDecision` e `permissionDecisionReason` in un oggetto `hookSpecificOutput`, come su [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` accetta `"allow"`, `"deny"`, e `"ask"`. Non accetta `"defer"`, `updatedInput`, o `additionalContext`. La tabella seguente descrive entrambi i campi:
3491 3491
3492| Field | Description |3492| Field | Description |
3493| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3493| :- | :- |
3494| `permissionDecision` | `"allow"` procede e salta la [conferma che Claude Code mostra mentre la prompt cache è calda](/docs/it/prompt-caching#switching-models). `"deny"` annulla il cambio. `"ask"` chiede all'utente di confermarlo |3494| `permissionDecision` | `"allow"` procede e salta la [conferma che Claude Code mostra mentre la prompt cache è calda](/docs/it/prompt-caching#switching-models). `"deny"` annulla il cambio. `"ask"` chiede all'utente di confermarlo |
3495| `permissionDecisionReason` | Per `"deny"`, mostrato all'utente come motivo per cui il cambio è stato bloccato, o restituito come errore per una richiesta `set_model`. Per `"ask"`, mostrato nel prompt di conferma. Ignorato per `"allow"` |3495| `permissionDecisionReason` | Per `"deny"`, mostrato all'utente come motivo per cui il cambio è stato bloccato, o restituito come errore per una richiesta `set_model`. Per `"ask"`, mostrato nel prompt di conferma. Ignorato per `"allow"` |
3496 3496
3570Claude Code prende il tuo stdout in testo semplice dell'hook [plain-text stdout](#exit-code-0) all'uscita 0, o `additionalContext` dall'output JSON, e lo consegna a Claude con la richiesta successiva dopo il cambio. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, puoi restituire:3570Claude Code prende il tuo stdout in testo semplice dell'hook [plain-text stdout](#exit-code-0) all'uscita 0, o `additionalContext` dall'output JSON, e lo consegna a Claude con la richiesta successiva dopo il cambio. Oltre ai [JSON output fields](#json-output) disponibili per tutti gli hook, puoi restituire:
3571 3571
3572| Field | Description |3572| Field | Description |
3573| :------------------ | :------------------------------------------------------------------------------------------------------------------------- |3573| :- | :- |
3574| `additionalContext` | Stringa aggiunta al contesto di Claude con la richiesta successiva. Vedi [Add context for Claude](#add-context-for-claude) |3574| `additionalContext` | Stringa aggiunta al contesto di Claude con la richiesta successiva. Vedi [Add context for Claude](#add-context-for-claude) |
3575 3575
3576Se l'hook non finisce entro cinque secondi dopo che invii la richiesta successiva, Claude Code invia quella richiesta senza l'output e lo allega alla richiesta seguente invece. Se il modello cambia diverse volte prima della richiesta successiva, Claude Code consegna solo l'output per il modello target dell'ultimo cambio.3576Se l'hook non finisce entro cinque secondi dopo che invii la richiesta successiva, Claude Code invia quella richiesta senza l'output e lo allega alla richiesta seguente invece. Se il modello cambia diverse volte prima della richiesta successiva, Claude Code consegna solo l'output per il modello target dell'ultimo cambio.
3584Il campo `reason` nell'input dell'hook indica perché la sessione è terminata:3584Il campo `reason` nell'input dell'hook indica perché la sessione è terminata:
3585 3585
3586| Reason | Description |3586| Reason | Description |
3587| :---------------------------- | :-------------------------------------------------------------------------------------- |3587| :- | :- |
3588| `clear` | Sessione cancellata con il comando `/clear` |3588| `clear` | Sessione cancellata con il comando `/clear` |
3589| `resume` | Sessione passata tramite `/resume` interattivo |3589| `resume` | Sessione passata tramite `/resume` interattivo |
3590| `logout` | Utente disconnesso |3590| `logout` | Utente disconnesso |
3688```3688```
3689 3689
3690| Field | Values | Description |3690| Field | Values | Description |
3691| :-------- | :---------------------------- | :---------------------------------------------------------------------------- |3691| :- | :- | :- |
3692| `action` | `accept`, `decline`, `cancel` | Se accettare, rifiutare, o annullare la richiesta |3692| `action` | `accept`, `decline`, `cancel` | Se accettare, rifiutare, o annullare la richiesta |
3693| `content` | object | Valori dei campi del modulo da inviare. Usato solo quando `action` è `accept` |3693| `content` | object | Valori dei campi del modulo da inviare. Usato solo quando `action` è `accept` |
3694 3694
3741```3741```
3742 3742
3743| Field | Values | Description |3743| Field | Values | Description |
3744| :-------- | :---------------------------- | :--------------------------------------------------------------------------------------- |3744| :- | :- | :- |
3745| `action` | `accept`, `decline`, `cancel` | Sovrascrive l'azione dell'utente |3745| `action` | `accept`, `decline`, `cancel` | Sovrascrive l'azione dell'utente |
3746| `content` | object | Sovrascrive i valori dei campi del modulo. Significativo solo quando `action` è `accept` |3746| `content` | object | Sovrascrive i valori dei campi del modulo. Significativo solo quando `action` è `accept` |
3747 3747
3831```3831```
3832 3832
3833| Campo | Obbligatorio | Descrizione |3833| Campo | Obbligatorio | Descrizione |
3834| :---------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3834| :- | :- | :- |
3835| `type` | sì | Deve essere `"prompt"` |3835| `type` | sì | Deve essere `"prompt"` |
3836| `prompt` | sì | Il testo del prompt da inviare all'LLM. Utilizzare `$ARGUMENTS` come segnaposto per l'input JSON del hook. Se `$ARGUMENTS` non è presente, l'input JSON viene aggiunto al prompt |3836| `prompt` | sì | Il testo del prompt da inviare all'LLM. Utilizzare `$ARGUMENTS` come segnaposto per l'input JSON del hook. Se `$ARGUMENTS` non è presente, l'input JSON viene aggiunto al prompt |
3837| `model` | no | Modello da utilizzare per la valutazione. Impostazione predefinita: un modello veloce |3837| `model` | no | Modello da utilizzare per la valutazione. Impostazione predefinita: un modello veloce |
3853```3853```
3854 3854
3855| Campo | Descrizione |3855| Campo | Descrizione |
3856| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |3856| :- | :- |
3857| `ok` | `true` per consentire. Per `false`, vedere il comportamento per evento di seguito |3857| `ok` | `true` per consentire. Per `false`, vedere il comportamento per evento di seguito |
3858| `reason` | Obbligatorio quando `ok` è `false` |3858| `reason` | Obbligatorio quando `ok` è `false` |
3859| `impossible` | Facoltativo. Il modello lo restituisce con `ok: false` quando giudica che la condizione non può mai essere soddisfatta. Su `Stop` e `SubagentStop`, Claude Code consente quindi al turno di terminare invece di reinviare il motivo. Gli hook agenti e altri eventi lo ignorano |3859| `impossible` | Facoltativo. Il modello lo restituisce con `ok: false` quando giudica che la condizione non può mai essere soddisfatta. Su `Stop` e `SubagentStop`, Claude Code consente quindi al turno di terminare invece di reinviare il motivo. Gli hook agenti e altri eventi lo ignorano |