SpyBara
Go Premium

Documentation 2026-10-06 23:59 UTC to 2026-10-07 19:00 UTC

53 files changed +742 −684. View all changes and history on the product overview
2026
Wed 7 20:01 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59

agent-sdk/hooks.md +61 −61

Details

15* **Tracciare il ciclo di vita della sessione** per gestire lo stato, pulire le risorse o inviare notifiche15* **Tracciare il ciclo di vita della sessione** per gestire lo stato, pulire le risorse o inviare notifiche

16 16 

17<h2 id="how-hooks-work">17<h2 id="how-hooks-work">

18 Come funzionano gli hooks18 Come funzionano gli hook

19</h2>19</h2>

20 20 

21<Steps>21<Steps>

22 <Step title="Un evento si attiva">22 <Step title="Un evento si attiva">

23 Qualcosa accade durante l'esecuzione dell'agente e l'SDK attiva un evento: uno strumento sta per essere chiamato (`PreToolUse`), uno strumento ha restituito un risultato (`PostToolUse`), un subagente è stato avviato o interrotto, l'agente è inattivo o l'esecuzione è terminata. Consultate l'[elenco completo degli eventi](#available-hooks).23 Qualcosa accade durante l'esecuzione dell'agente e l'SDK attiva un evento: uno strumento sta per essere chiamato (`PreToolUse`), uno strumento ha restituito un risultato (`PostToolUse`), un subagent è stato avviato o interrotto, l'agente è inattivo o l'esecuzione è terminata. Consulta l'[elenco completo degli eventi](#available-hooks).

24 </Step>24 </Step>

25 25 

26 <Step title="L'SDK raccoglie gli hooks registrati">26 <Step title="L'SDK raccoglie gli hook registrati">

27 L'SDK verifica la presenza di hooks registrati per quel tipo di evento. Questo include gli hooks di callback che passate in `options.hooks` e gli hooks dei comandi shell dai file di impostazioni quando la voce [`settingSources`](/docs/it/agent-sdk/typescript#settingsource) o [`setting_sources`](/docs/it/agent-sdk/python#settingsource) corrispondente è abilitata, come avviene per le opzioni predefinite di `query()`.27 L'SDK verifica la presenza di hook registrati per quel tipo di evento. Questo include gli hook di callback che passi in `options.hooks` e gli hook dei comandi shell dai file di impostazioni quando la voce [`settingSources`](/docs/it/agent-sdk/typescript#settingsource) o [`setting_sources`](/docs/it/agent-sdk/python#settingsource) corrispondente è abilitata, come avviene per le opzioni predefinite di `query()`.

28 </Step>28 </Step>

29 29 

30 <Step title="I matcher filtrano quali hooks vengono eseguiti">30 <Step title="I matcher filtrano quali hook vengono eseguiti">

31 Se un hook ha un modello [`matcher`](#matchers) (come `"Write|Edit"`), l'SDK lo testa rispetto al target dell'evento (ad esempio, il nome dello strumento). Gli hooks senza un matcher vengono eseguiti per ogni evento di quel tipo.31 Se un hook ha un modello [`matcher`](#matchers) (come `"Write|Edit"`), l'SDK lo testa rispetto al target dell'evento (ad esempio, il nome dello strumento). Gli hook senza un matcher vengono eseguiti per ogni evento di quel tipo.

32 </Step>32 </Step>

33 33 

34 <Step title="Le funzioni di callback vengono eseguite">34 <Step title="Le funzioni di callback vengono eseguite">

35 Ogni hook corrispondente riceve la sua [funzione di callback](#callback-functions) con input su ciò che sta accadendo: il nome dello strumento, i suoi argomenti, l'ID della sessione e altri dettagli specifici dell'evento.35 La [funzione di callback](#callback-functions) di ogni hook corrispondente riceve input su ciò che sta accadendo: il nome dello strumento, i suoi argomenti, l'ID della sessione e altri dettagli specifici dell'evento.

36 </Step>36 </Step>

37 37 

38 <Step title="Il vostro callback restituisce una decisione">38 <Step title="Il tuo callback restituisce una decisione">

39 Dopo aver eseguito qualsiasi operazione (registrazione, chiamate API, convalida), il vostro callback restituisce un [oggetto di output](#outputs) che dice all'agente cosa fare: consentire l'operazione, bloccarla, modificare l'input o iniettare contesto nella conversazione.39 Dopo aver eseguito qualsiasi operazione (log, chiamate API, convalida), il tuo callback restituisce un [oggetto di output](#outputs) che dice all'agente cosa fare: consentire l'operazione, bloccarla, modificare l'input o iniettare contesto nella conversazione.

40 </Step>40 </Step>

41</Steps>41</Steps>

42 42 


140 ```140 ```

141</CodeGroup>141</CodeGroup>

142 142 

143Quando eseguite uno dei due script, Claude tenta di creare il file `.env`, l'hook nega la chiamata dello strumento e la risposta finale di Claude spiega che non può creare file `.env`.143Quando esegui uno dei due script, Claude tenta di creare il file `.env` e l'hook nega la chiamata allo strumento.

144 144 

145<h2 id="available-hooks">145<h2 id="available-hooks">

146 Hook disponibili146 Hook disponibili


179| `ConfigChange` | No | Sì | Il file di configurazione cambia | Ricaricare le impostazioni dinamicamente |179| `ConfigChange` | No | Sì | Il file di configurazione cambia | Ricaricare le impostazioni dinamicamente |

180| `InstructionsLoaded` | No | Sì | Un file `CLAUDE.md` o di regole viene caricato nel contesto | Controllare quali file di istruzioni vengono caricati |180| `InstructionsLoaded` | No | Sì | Un file `CLAUDE.md` o di regole viene caricato nel contesto | Controllare quali file di istruzioni vengono caricati |

181| `WorktreeCreate` | No | Sì | Git worktree creato | Tracciare gli spazi di lavoro isolati |181| `WorktreeCreate` | No | Sì | Git worktree creato | Tracciare gli spazi di lavoro isolati |

182| `WorktreeRemove` | No | Sì | Git worktree rimosso | Pulire le risorse dello spazio di lavoro |182| `WorktreeRemove` | No | Sì | Un worktree creato da un hook `WorktreeCreate` viene rimosso | Pulire le risorse del workspace |

183| `CwdChanged` | No | Sì | La directory di lavoro cambia durante una sessione | Ricaricare le variabili di ambiente per directory |183| `CwdChanged` | No | Sì | La directory di lavoro cambia durante una sessione | Ricaricare le variabili di ambiente per directory |

184| `FileChanged` | No | Sì | Un file monitorato viene modificato, creato o eliminato | Ricaricare la configurazione quando i file del progetto cambiano |184| `FileChanged` | No | Sì | Un file monitorato viene modificato, creato o eliminato | Ricaricare la configurazione quando i file del progetto cambiano |

185| `DirectoryAdded` | No | Sì | Una directory di lavoro viene aggiunta durante una sessione | Installare le dipendenze per un repository aggiunto a metà sessione |185| `DirectoryAdded` | No | Sì | Una directory di lavoro viene aggiunta durante una sessione | Installare le dipendenze per un repository aggiunto a metà sessione |

186 186 

187<h2 id="configure-hooks">187<h2 id="configure-hooks">

188 Configurare gli hooks188 Configurare gli hook

189</h2>189</h2>

190 190 

191Per configurare un hook, passatelo nel campo `hooks` delle opzioni dell'agente (`ClaudeAgentOptions` in Python, l'oggetto `options` in TypeScript). Questo snippet presuppone che abbiate già definito un callback hook, come `protect_env_files` in Python o `protectEnvFiles` in TypeScript dall'esempio precedente:191Per configurare un hook, passalo nel campo `hooks` delle opzioni dell'agente (`ClaudeAgentOptions` in Python, l'oggetto `options` in TypeScript). Questo snippet presuppone che tu abbia già definito un callback hook, come `protect_env_files` in Python o `protectEnvFiles` in TypeScript dall'esempio precedente:

192 192 

193<CodeGroup>193<CodeGroup>

194 ```python Python theme={null}194 ```python Python theme={null}


219L'opzione `hooks` è un dizionario in Python o un oggetto in TypeScript, dove:219L'opzione `hooks` è un dizionario in Python o un oggetto in TypeScript, dove:

220 220 

221* **Le chiavi**: [nomi degli eventi hook](#available-hooks) come `'PreToolUse'`, `'PostToolUse'` e `'Stop'`221* **Le chiavi**: [nomi degli eventi hook](#available-hooks) come `'PreToolUse'`, `'PostToolUse'` e `'Stop'`

222* **I valori**: array di [matcher](#matchers), ognuno contenente un modello di filtro opzionale e le vostre [funzioni di callback](#callback-functions)222* **I valori**: array di [matcher](#matchers), ognuno contenente un modello di filtro opzionale e le tue [funzioni di callback](#callback-functions)

223 223 

224<h3 id="matchers">224<h3 id="matchers">

225 Matchers225 Matcher

226</h3>226</h3>

227 227 

228Utilizzate i matcher per filtrare quando i vostri callback si attivano. Il campo `matcher` corrisponde a un valore diverso a seconda del tipo di evento hook. Ad esempio, gli hook basati su strumenti corrispondono al nome dello strumento, mentre gli hook `Notification` corrispondono al tipo di notifica.228Utilizza i matcher per filtrare quando i tuoi callback si attivano. Il campo `matcher` corrisponde a un valore diverso a seconda del tipo di evento hook. Ad esempio, gli hook basati su strumenti corrispondono al nome dello strumento, mentre gli hook `Notification` corrispondono al tipo di notifica.

229 229 

230I matcher SDK seguono le stesse regole dei [matcher nei file di impostazioni](/docs/it/hooks#matcher-patterns). Quella sezione documenta i percorsi di valutazione di stringa esatta e espressione regolare, i loro requisiti di versione e i valori di matcher per ogni tipo di evento.230I matcher SDK seguono le stesse regole dei [matcher nei file di impostazioni](/docs/it/hooks#matcher-patterns). Quella sezione documenta i percorsi di valutazione di stringa esatta e espressione regolare, i loro requisiti di versione e i valori di matcher per ogni tipo di evento.

231 231 

232| Opzione | Tipo | Predefinito | Descrizione |232| Opzione | Tipo | Predefinito | Descrizione |

233| - | - | - | - |233| - | - | - | - |

234| `matcher` | `string` | `undefined` | Modello abbinato al campo di filtro dell'evento, seguendo le [regole per i matcher nei file di impostazioni](/docs/it/hooks#matcher-patterns). Per gli hook degli strumenti, questo è il nome dello strumento. Gli strumenti incorporati includono `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` e altri (consultate [Tipi di input degli strumenti](/docs/it/agent-sdk/typescript#tool-input-types) per l'elenco completo). Gli strumenti MCP utilizzano il modello `mcp__<server>__<action>`, dove `<server>` è la chiave che utilizzate nella configurazione `mcpServers`. |234| `matcher` | `string` | `undefined` | Modello abbinato al campo di filtro dell'evento, seguendo le [regole per i matcher nei file di impostazioni](/docs/it/hooks#matcher-patterns). Per gli hook degli strumenti, questo è il nome dello strumento. Gli strumenti incorporati includono `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` e altri (consulta [Tipi di input degli strumenti](/docs/it/agent-sdk/typescript#tool-input-types) per l'elenco completo). Gli strumenti MCP utilizzano il modello `mcp__<server>__<action>`, dove `<server>` è la chiave che utilizzi nella configurazione `mcpServers`. |

235| `hooks` | `HookCallback[]` | - | Obbligatorio. Array di funzioni di callback da eseguire quando il modello corrisponde |235| `hooks` | `HookCallback[]` | - | Obbligatorio. Array di funzioni di callback da eseguire quando il modello corrisponde |

236| `timeout` | `number` | `undefined` | Timeout in secondi. Quando omesso, Claude Code applica il [timeout predefinito dell'evento](#hook-timeout). I vostri callback SDK seguono i valori predefiniti dell'hook `command` |236| `timeout` | `number` | `undefined` | Timeout in secondi. Quando omesso, Claude Code applica il [timeout predefinito dell'evento](#hook-timeout). I tuoi callback SDK seguono i valori predefiniti dell'hook `command` |

237 237 

238Utilizzate il modello `matcher` per indirizzare strumenti specifici quando possibile. Un matcher con `'Bash'` viene eseguito solo per i comandi Bash, mentre omettere il modello esegue i vostri callback per ogni occorrenza dell'evento. Omettete intenzionalmente per registrare ogni chiamata a uno strumento che la vostra sessione effettua.238Utilizza il modello `matcher` per indirizzare strumenti specifici quando possibile. Un matcher con `'Bash'` viene eseguito solo per i comandi Bash, mentre omettere il modello esegue i tuoi callback per ogni occorrenza dell'evento. Omettilo intenzionalmente per registrare ogni chiamata a uno strumento che la tua sessione effettua.

239 239 

240<h3 id="callback-functions">240<h3 id="callback-functions">

241 Funzioni di callback241 Funzioni di callback


247 247 

248Ogni callback hook riceve tre argomenti:248Ogni callback hook riceve tre argomenti:

249 249 

250* **Dati di input:** un oggetto tipizzato contenente i dettagli dell'evento. Ogni tipo di hook ha la sua forma di input. Ad esempio, `PreToolUseHookInput` include `tool_name` e `tool_input`, mentre `NotificationHookInput` include `message`. Consultate le definizioni di tipo complete nei riferimenti SDK [TypeScript](/docs/it/agent-sdk/typescript#hookinput) e [Python](/docs/it/agent-sdk/python#hookinput).250* **Dati di input:** un oggetto tipizzato contenente i dettagli dell'evento. Ogni tipo di hook ha la sua forma di input. Ad esempio, `PreToolUseHookInput` include `tool_name` e `tool_input`, mentre `NotificationHookInput` include `message`. Consulta le definizioni di tipo complete nei riferimenti SDK [TypeScript](/docs/it/agent-sdk/typescript#hookinput) e [Python](/docs/it/agent-sdk/python#hookinput).

251 * Tutti gli input hook condividono `session_id`, `cwd` e `hook_event_name`.251 * Tutti gli input hook condividono `session_id`, `cwd` e `hook_event_name`.

252 * `agent_id` e `agent_type` vengono popolati quando l'hook si attiva all'interno di un subagente. In TypeScript, questi si trovano sull'input hook di base e sono disponibili per tutti i tipi di hook. In Python, sono campi opzionali su `PreToolUse`, `PostToolUse`, `PostToolUseFailure` e `PermissionRequest`, e campi obbligatori su `SubagentStart` e `SubagentStop`.252 * `agent_id` e `agent_type` vengono popolati quando l'hook si attiva all'interno di un subagent. In TypeScript, questi si trovano sull'input hook di base e sono disponibili per tutti i tipi di hook. In Python, sono campi opzionali su `PreToolUse`, `PostToolUse`, `PostToolUseFailure` e `PermissionRequest`, e campi obbligatori su `SubagentStart` e `SubagentStop`.

253* **ID di utilizzo dello strumento** (`str | None` / `string | undefined`): correla gli eventi `PreToolUse` e `PostToolUse` per la stessa chiamata a uno strumento.253* **ID di utilizzo dello strumento** (`str | None` / `string | undefined`): correla gli eventi `PreToolUse` e `PostToolUse` per la stessa chiamata a uno strumento.

254* **Contesto:** in TypeScript, contiene una proprietà `signal` (`AbortSignal`) per l'annullamento. In Python, questo argomento è riservato per uso futuro.254* **Contesto:** in TypeScript, contiene una proprietà `signal` (`AbortSignal`) per l'annullamento. In Python, questo argomento è riservato per uso futuro.

255 255 


257 Output257 Output

258</h4>258</h4>

259 259 

260Il vostro callback restituisce un oggetto con due categorie di campi:260Il tuo callback restituisce un oggetto con due categorie di campi:

261 261 

262* **Campi di livello superiore** sono accettati su ogni evento: `systemMessage` mostra un messaggio all'utente, e `continue` (`continue_` in Python) determina se l'agente continua a funzionare dopo questo hook. Alcuni eventi li scartano o li consegnano altrove. La sezione di ogni [evento](/docs/it/hooks#hook-events) sulla pagina degli hooks dice dove finiscono.262* **Campi di livello superiore** sono accettati su ogni evento: `systemMessage` mostra un messaggio all'utente, e `continue` (`continue_` in Python) determina se l'agente continua a funzionare dopo questo hook. Alcuni eventi li scartano o li consegnano altrove. La sezione di ogni [evento](/docs/it/hooks#hook-events) sulla pagina degli hook dice dove finiscono.

263* **`hookSpecificOutput`** controlla l'operazione corrente. I campi che imposti all'interno dipendono dal tipo di evento hook:263* **`hookSpecificOutput`** controlla l'operazione corrente. I campi che imposti all'interno dipendono dal tipo di evento hook:

264 * Per gli hook `PreToolUse`, è qui che imposti `permissionDecision` (`"allow"`, `"deny"`, `"ask"` o `"defer"`), `permissionDecisionReason` e `updatedInput`. Se restituisci `"defer"`, il turno termina con un messaggio di risultato il cui `stop_reason` è `"tool_deferred"`, in modo da poter [riprendere la chiamata in seguito](/docs/it/hooks#defer-a-tool-call-for-later).264 * Per gli hook `PreToolUse`, è qui che imposti `permissionDecision` (`"allow"`, `"deny"`, `"ask"` o `"defer"`), `permissionDecisionReason` e `updatedInput`. Se restituisci `"defer"`, il turno termina con un messaggio di risultato il cui `stop_reason` è `"tool_deferred"`, in modo da poter [riprendere la chiamata in seguito](/docs/it/hooks#defer-a-tool-call-for-later).

265 * Per gli hook `PostToolUse`, puoi impostare `additionalContext` per aggiungere informazioni al risultato dello strumento. Per sostituire l'output dello strumento prima che Claude lo veda, imposta `updatedToolOutput`, che funziona per qualsiasi strumento in entrambi gli SDK. Il campo più vecchio `updatedMCPToolOutput` sostituisce solo l'output dello strumento MCP ed è deprecato.265 * Per gli hook `PostToolUse`, puoi impostare `additionalContext` per aggiungere informazioni al risultato dello strumento. Per sostituire l'output dello strumento prima che Claude lo veda, imposta `updatedToolOutput`, che funziona per qualsiasi strumento in entrambi gli SDK. Il campo più vecchio `updatedMCPToolOutput` sostituisce solo l'output dello strumento MCP.

266 * Nel TypeScript SDK, un callback `PostToolUse` può anche restituire `classifierContext`, una breve nota sul risultato della chiamata allo strumento per il classificatore dei permessi della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode). Poiché il tuo callback viene eseguito nel processo della tua applicazione, il classificatore può pesare una dichiarazione dell'utente che inoltri nella nota come intenzione dell'utente. Il campo richiede TypeScript Agent SDK v0.3.236 o successivo. [Annotare un risultato per il classificatore della modalità auto](/docs/it/hooks#annotate-a-result-for-the-auto-mode-classifier) copre il limite di lunghezza, la regola solo sincrona e cosa non mettere nella nota.266 * Nel TypeScript SDK, un callback `PostToolUse` può anche restituire `classifierContext`, una breve nota sul risultato della chiamata allo strumento per il classificatore dei permessi della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode). Poiché il tuo callback viene eseguito nel processo della tua applicazione, il classificatore può pesare una dichiarazione dell'utente che inoltri nella nota come intenzione dell'utente. Il campo richiede TypeScript Agent SDK v0.3.236 o successivo. [Annotare un risultato per il classificatore della modalità auto](/docs/it/hooks#annotate-a-result-for-the-auto-mode-classifier) copre il limite di lunghezza, la regola solo sincrona e cosa non mettere nella nota.

267 267 

268Restituite `{}` per consentire l'operazione senza modifiche. Gli hook di callback SDK utilizzano lo stesso formato di output JSON degli [hook dei comandi shell di Claude Code](/docs/it/hooks#json-output), che documenta ogni campo e opzione specifica dell'evento. Per le definizioni di tipo SDK, consultate i riferimenti SDK [TypeScript](/docs/it/agent-sdk/typescript#synchookjsonoutput) e [Python](/docs/it/agent-sdk/python#synchookjsonoutput).268Restituisci `{}` per consentire l'operazione senza modifiche. Gli hook di callback SDK utilizzano lo stesso formato di output JSON degli [hook dei comandi shell di Claude Code](/docs/it/hooks#json-output), che documenta ogni campo e opzione specifica dell'evento. Per le definizioni di tipo SDK, consulta i riferimenti SDK [TypeScript](/docs/it/agent-sdk/typescript#synchookjsonoutput) e [Python](/docs/it/agent-sdk/python#synchookjsonoutput).

269 269 

270<Note>270<Note>

271 Quando si applicano più hook o regole di autorizzazione, `deny` ha priorità su `defer`, che ha priorità su `ask`, che ha priorità su `allow`. Se un hook restituisce `deny`, l'operazione viene bloccata indipendentemente dagli altri hook.271 Quando si applicano più hook o regole di permesso, `deny` ha priorità su `defer`, che ha priorità su `ask`, che ha priorità su `allow`. Se un hook restituisce `deny`, l'operazione viene bloccata indipendentemente dagli altri hook.

272</Note>272</Note>

273 273 

274<h4 id="asynchronous-output">274<h4 id="asynchronous-output">

275 Output asincrono275 Output asincrono

276</h4>276</h4>

277 277 

278Per impostazione predefinita, l'agente attende che il vostro hook restituisca prima di procedere. Se il vostro hook esegue un effetto collaterale, come la registrazione o l'invio di un webhook, e non ha bisogno di influenzare il comportamento dell'agente, potete restituire un output asincrono. Questo dice all'agente di continuare immediatamente senza attendere il completamento dell'hook. In questo snippet, `send_to_logging_service` in Python e `sendToLoggingService` in TypeScript rappresentano qualsiasi funzione di registrazione che definite:278Per impostazione predefinita, l'agente attende che il tuo hook restituisca prima di procedere. Se il tuo hook esegue un effetto collaterale, come la registrazione di log o l'invio di un webhook, e non ha bisogno di influenzare il comportamento dell'agente, puoi restituire un output asincrono. Questo dice all'agente di continuare immediatamente senza attendere il completamento dell'hook. In questo snippet, `send_to_logging_service` in Python e `sendToLoggingService` in TypeScript rappresentano qualsiasi funzione di logging che definisci:

279 279 

280<CodeGroup>280<CodeGroup>

281 ```python Python theme={null}281 ```python Python theme={null}


296 296 

297| Campo | Tipo | Descrizione |297| Campo | Tipo | Descrizione |

298| - | - | - |298| - | - | - |

299| `async` | `true` | Segnala la modalità asincrona. L'agente procede senza attendere. In Python, utilizzate `async_` per evitare la parola chiave riservata. |299| `async` | `true` | Segnala la modalità asincrona. L'agente procede senza attendere. In Python, utilizza `async_` per evitare la parola chiave riservata. |

300| `asyncTimeout` | `number` | Timeout opzionale in millisecondi per l'operazione in background |300| `asyncTimeout` | `number` | Timeout opzionale in millisecondi per l'operazione in background |

301 301 

302<Note>302<Note>

303 Gli output asincroni non possono bloccare, modificare o iniettare contesto nell'operazione poiché l'agente ha già proseguito. Utilizzateli solo per effetti collaterali come registrazione, metriche o notifiche.303 Gli output asincroni non possono bloccare, modificare o iniettare contesto nell'operazione poiché l'agente ha già proseguito. Utilizzali solo per effetti collaterali come logging, metriche o notifiche.

304</Note>304</Note>

305 305 

306<h2 id="examples">306<h2 id="examples">


801 Hook non si attiva801 Hook non si attiva

802</h3>802</h3>

803 803 

804* Verificate che il nome dell'evento hook sia corretto e sensibile alle maiuscole (`PreToolUse`, non `preToolUse`)804* Verifica che il nome dell'evento hook sia corretto e sensibile alle maiuscole (`PreToolUse`, non `preToolUse`)

805* Controllate che il vostro modello di matcher corrisponda esattamente al nome dello strumento805* Controlla che il tuo pattern di matcher corrisponda esattamente al nome dello strumento

806* Assicuratevi che l'hook sia sotto il tipo di evento corretto in `options.hooks`806* Assicurati che l'hook sia sotto il tipo di evento corretto in `options.hooks`

807* Per gli hook non basati su strumenti che supportano matcher, come `Notification` e `SubagentStop`, i matcher corrispondono a campi diversi, e `Stop` ignora completamente i matcher (consultate [modelli di matcher](/docs/it/hooks#matcher-patterns))807* Per gli hook non basati su strumenti che supportano matcher, come `Notification` e `SubagentStop`, i matcher corrispondono a campi diversi, e `Stop` ignora completamente i matcher (consulta [pattern di matcher](/docs/it/hooks#matcher-patterns))

808* Gli hooks potrebbero non attivarsi quando l'agente raggiunge il limite [`max_turns`](/docs/it/agent-sdk/python#claudeagentoptions) perché la sessione termina prima che gli hooks possano essere eseguiti808* Gli hook potrebbero non attivarsi quando l'agente raggiunge il limite [`max_turns`](/docs/it/agent-sdk/python#claudeagentoptions) perché la sessione termina prima che gli hook possano essere eseguiti

809 809 

810<h3 id="matcher-not-filtering-as-expected">810<h3 id="matcher-not-filtering-as-expected">

811 Matcher non filtra come previsto811 Matcher non filtra come previsto

812</h3>812</h3>

813 813 

814I matcher corrispondono solo ai nomi degli strumenti, non ai percorsi dei file o ad altri argomenti. Per filtrare per percorso di file, controllate `tool_input.file_path` all'interno del vostro hook:814I matcher corrispondono solo ai nomi degli strumenti, non ai percorsi dei file o ad altri argomenti. Per filtrare per percorso di file, controlla `tool_input.file_path` all'interno del tuo hook:

815 815 

816```typescript theme={null}816```typescript theme={null}

817const myHook: HookCallback = async (input, toolUseID, { signal }) => {817const myHook: HookCallback = async (input, toolUseID, { signal }) => {


828 Timeout dell'hook828 Timeout dell'hook

829</h3>829</h3>

830 830 

831Claude Code esegue ogni callback con un timeout, che impostate in secondi con il campo `timeout` sul suo `HookMatcher`. Quando non ne impostate uno, Claude Code utilizza il valore predefinito dell'evento: 600 secondi per la maggior parte degli eventi, 30 secondi per `UserPromptSubmit`, `PreModelSwitch` e `PostModelSwitch`, e 10 secondi per `MessageDisplay`. Claude Code esegue i callback `SessionEnd` durante l'arresto con il budget di timeout più breve [`SessionEnd timeout budget`](/docs/it/hooks#sessionend-input), 1,5 secondi per impostazione predefinita.831Claude Code esegue ogni callback con un timeout, che imposti in secondi con il campo `timeout` sul suo `HookMatcher`. Quando non ne imposti uno, Claude Code utilizza il valore predefinito dell'evento: 600 secondi per la maggior parte degli eventi, 30 secondi per `UserPromptSubmit`, `PreModelSwitch` e `PostModelSwitch`, e 10 secondi per `MessageDisplay`. Claude Code esegue i callback `SessionEnd` durante l'arresto con il [budget di timeout di SessionEnd](/docs/it/hooks#sessionend-input) più breve, 1,5 secondi per impostazione predefinita.

832 832 

833Quando un callback supera il suo timeout, Claude Code lo annulla e scarta l'output, e la sessione continua piuttosto che bloccarsi. Quello che accade dopo dipende dall'evento:833Quando un callback supera il suo timeout, Claude Code lo annulla e scarta il suo output, e la sessione continua anziché bloccarsi. Quello che accade dopo dipende dall'evento:

834 834 

835* `PreToolUse`: Claude Code non esegue la chiamata dello strumento, Claude riceve un risultato dello strumento che indica che l'hook non ha risposto prima del suo timeout, e il turno continua. Se un altro hook `PreToolUse` ha restituito un rifiuto esplicito, Claude riceve invece quel rifiuto anziché l'errore di timeout. Prima della v2.1.210, Claude Code segnalava il timeout a Claude come un rifiuto dell'utente, il che faceva fermare le sessioni incustodite e attendere l'input.835* `PreToolUse`: Claude Code non esegue la chiamata allo strumento, Claude riceve un risultato dello strumento che indica che l'hook non ha risposto prima del suo timeout, e il turno continua. Se un altro hook `PreToolUse` ha restituito un rifiuto esplicito, Claude riceve quel rifiuto anziché l'errore di timeout. Prima della v2.1.210, Claude Code segnalava il timeout a Claude come un rifiuto dell'utente, il che faceva fermare le sessioni incustodite in attesa di input.

836* `PostToolUse` e `PostToolUseFailure`: Claude Code mantiene il risultato dello strumento e il turno continua.836* `PostToolUse` e `PostToolUseFailure`: Claude Code mantiene il risultato dello strumento e il turno continua.

837* `UserPromptSubmit` e [`UserPromptExpansion`](/docs/it/hooks#userpromptexpansion): Claude Code blocca il prompt con un messaggio che nomina l'hook e il timeout, e la sessione continua. Poiché un callback su questi eventi può agire come un gate di policy, Claude Code non lascia mai passare un prompt scaduto senza controllo. Prima della v2.1.208, Claude Code terminava la query con `error_during_execution` quando un callback su questi eventi scadeva.837* `UserPromptSubmit` e [`UserPromptExpansion`](/docs/it/hooks#userpromptexpansion): Claude Code blocca il prompt con un messaggio che nomina l'hook e il timeout, e la sessione continua. Poiché un callback su questi eventi può agire come un gate di policy, Claude Code non lascia mai passare un prompt scaduto senza controllo. Prima della v2.1.208, Claude Code terminava la query con `error_during_execution` quando un callback su questi eventi scadeva.

838* `Stop` e `SubagentStop`: il callback scaduto conta come se non avesse restituito alcuna decisione. L'agente o il subagente si ferma come se quel callback lo avesse consentito, e una decisione dai vostri altri hook sull'evento si applica comunque. Prima di Claude Code v2.1.273, un callback `Stop` o `SubagentStop` scaduto contava come un'esecuzione di hook non riuscita, e Claude Code scartava le decisioni dei vostri altri hook sull'evento.838* `Stop` e `SubagentStop`: il callback scaduto conta come se non avesse restituito alcuna decisione. L'agente o il subagent si ferma come se quel callback lo avesse consentito, e una decisione dei tuoi altri hook sull'evento si applica comunque. Prima di Claude Code v2.1.273, un callback `Stop` o `SubagentStop` scaduto contava come un'esecuzione di hook non riuscita, e Claude Code scartava le decisioni dei tuoi altri hook sull'evento.

839* `SessionStart`: il callback scaduto conta come se non avesse restituito alcun output, e la sessione continua con l'output dei vostri altri hook `SessionStart`.839* `SessionStart`: il callback scaduto conta come se non avesse restituito alcun output, e la sessione continua con l'output dei tuoi altri hook `SessionStart`.

840* `PreModelSwitch`: Claude Code blocca il cambio di modello. Un hook che non risponde non ha approvato il cambio.840* `PreModelSwitch`: Claude Code blocca il cambio di modello. Un hook che non risponde non ha approvato il cambio.

841* Altri eventi, come `Notification`, `PreCompact` e `PostModelSwitch`: Claude Code registra l'errore e continua.841* Altri eventi, come `Notification`, `PreCompact` e `PostModelSwitch`: Claude Code registra l'errore nei log e continua.

842 842 

843La prima volta che un callback `Stop` o `SessionStart` scade nella sessione principale, Claude Code aggiunge anche un [`SDKInformationalMessage`](/docs/it/agent-sdk/typescript#sdkinformationalmessage) al flusso dei messaggi dicendo che l'app che guida la sessione non ha risposto. I timeout successivi non ripetono quel messaggio mentre la vostra app rimane non responsiva.843La prima volta che un callback `Stop` o `SessionStart` scade nella sessione principale, Claude Code aggiunge anche un [`SDKInformationalMessage`](/docs/it/agent-sdk/typescript#sdkinformationalmessage) al flusso dei messaggi indicando che l'app che guida la sessione non ha risposto. I timeout successivi non ripetono quel messaggio finché la tua app rimane non responsiva.

844 844 

845Se interrompete la query mentre un callback è in sospeso, Claude Code annulla la chiamata dello strumento in sospeso. Prima della v2.1.208, la chiamata dello strumento potrebbe ancora procedere se interrompevate durante un callback `PreToolUse` in sospeso.845Se interrompi la query mentre un callback è in sospeso, Claude Code annulla la chiamata allo strumento in sospeso. Prima della v2.1.208, la chiamata allo strumento poteva ancora procedere se interrompevi durante un callback `PreToolUse` in sospeso.

846 846 

847Se il vostro callback ha bisogno di più tempo, impostate un `timeout` più alto sul suo `HookMatcher`. In TypeScript, utilizzate `AbortSignal` dal terzo argomento del callback per gestire l'annullamento con eleganza quando il timeout si attiva.847Se il tuo callback ha bisogno di più tempo, imposta un `timeout` più alto sul suo `HookMatcher`. In TypeScript, utilizza l'`AbortSignal` dal terzo argomento del callback per gestire l'annullamento in modo pulito quando scatta il timeout.

848 848 

849<h3 id="tool-blocked-unexpectedly">849<h3 id="tool-blocked-unexpectedly">

850 Strumento bloccato inaspettatamente850 Strumento bloccato inaspettatamente

851</h3>851</h3>

852 852 

853* Controllate tutti gli hook `PreToolUse` per i ritorni `permissionDecision: 'deny'`853* Controlla tutti gli hook `PreToolUse` per i ritorni `permissionDecision: 'deny'`

854* Aggiungete la registrazione ai vostri hook per vedere quale `permissionDecisionReason` stanno restituendo854* Aggiungi dei log ai tuoi hook per vedere quale `permissionDecisionReason` stanno restituendo

855* Verificate che i modelli di matcher non siano troppo ampi: un matcher vuoto corrisponde a tutti gli strumenti855* Verifica che i pattern di matcher non siano troppo ampi: un matcher vuoto corrisponde a tutti gli strumenti

856 856 

857<h3 id="modified-input-not-applied">857<h3 id="modified-input-not-applied">

858 Input modificato non applicato858 Input modificato non applicato

859</h3>859</h3>

860 860 

861* Assicuratevi che `updatedInput` sia all'interno di `hookSpecificOutput`, non al livello superiore:861* Assicurati che `updatedInput` sia all'interno di `hookSpecificOutput`, non al livello superiore:

862 862 

863 ```typescript theme={null}863 ```typescript theme={null}

864 return {864 return {


870 };870 };

871 ```871 ```

872 872 

873* Non abbinate `updatedInput` con `permissionDecision: 'defer'`, che scarta l'input modificato. Omettere `permissionDecision` va bene: l'input modificato si applica comunque attraverso la valutazione delle autorizzazioni normale. Potete anche restituire `'allow'` per approvare automaticamente l'input modificato o `'ask'` per mostrarlo all'utente per l'approvazione873* Non abbinare `updatedInput` a `permissionDecision: 'defer'`, che scarta l'input modificato. Omettere `permissionDecision` va bene: l'input modificato si applica comunque attraverso la normale valutazione dei permessi. Puoi anche restituire `'allow'` per approvare automaticamente l'input modificato o `'ask'` per mostrarlo all'utente per l'approvazione

874 874 

875* Includete `hookEventName` in `hookSpecificOutput` per identificare quale tipo di hook è l'output875* Includi `hookEventName` in `hookSpecificOutput` per identificare a quale tipo di hook si riferisce l'output

876 876 

877<h3 id="session-hooks-not-available-in-python">877<h3 id="session-hooks-not-available-in-python">

878 Hook di sessione non disponibili in Python878 Hook di sessione non disponibili in Python

879</h3>879</h3>

880 880 

881`SessionStart` e `SessionEnd` possono essere registrati come hook di callback SDK in TypeScript, ma non sono disponibili nell'SDK Python perché il suo tipo `HookEvent` li omette. In Python, sono disponibili solo come [hook dei comandi shell](/docs/it/hooks#hook-events) definiti nei file di impostazioni come `.claude/settings.json`. Per caricare gli hook dei comandi shell dalla vostra applicazione SDK, includete la fonte di impostazione appropriata con [`setting_sources`](/docs/it/agent-sdk/python#settingsource) o [`settingSources`](/docs/it/agent-sdk/typescript#settingsource):881`SessionStart` e `SessionEnd` possono essere registrati come hook di callback SDK in TypeScript, ma non sono disponibili nell'SDK Python perché il suo tipo `HookEvent` li omette. In Python, sono disponibili solo come [hook di comandi shell](/docs/it/hooks#hook-events) definiti in file di impostazioni come `.claude/settings.json`. Quali file di impostazioni carica la tua applicazione SDK dipende da [`setting_sources`](/docs/it/agent-sdk/python#settingsource) o [`settingSources`](/docs/it/agent-sdk/typescript#settingsource). Se imposti quell'opzione, includi la fonte che contiene gli hook:

882 882 

883<CodeGroup>883<CodeGroup>

884 ```python Python theme={null}884 ```python Python theme={null}


894 ```894 ```

895</CodeGroup>895</CodeGroup>

896 896 

897Per eseguire la logica di inizializzazione come callback SDK Python, utilizzate il primo messaggio da `client.receive_response()` come trigger.897Per eseguire invece la logica di inizializzazione come callback dell'SDK Python, utilizza il primo messaggio da `client.receive_response()` come trigger.

898 898 

899<h3 id="subagent-permission-prompts-multiplying">899<h3 id="subagent-permission-prompts-multiplying">

900 I prompt di autorizzazione dei subagenti si moltiplicano900 Le richieste di permesso dei subagent si moltiplicano

901</h3>901</h3>

902 902 

903Quando si avviano più subagenti, ognuno potrebbe richiedere autorizzazioni separatamente per le proprie chiamate di strumenti. Per evitare prompt ripetuti, utilizzate gli hook `PreToolUse` per approvare automaticamente strumenti specifici, o configurate regole di autorizzazione, che i subagenti [ereditano dalla conversazione genitore](/docs/it/sub-agents#permission-modes).903Quando avvii più subagent, ognuno potrebbe richiedere permessi separatamente per le proprie chiamate agli strumenti. Per evitare richieste ripetute, utilizza gli hook `PreToolUse` per approvare automaticamente strumenti specifici, oppure configura regole di permesso, che i subagent [ereditano dalla conversazione principale](/docs/it/sub-agents#permission-modes).

904 904 

905<h3 id="recursive-hook-loops-with-subagents">905<h3 id="recursive-hook-loops-with-subagents">

906 Loop ricorsivi di hook con subagenti906 Loop ricorsivi di hook con subagent

907</h3>907</h3>

908 908 

909Un hook `UserPromptSubmit` che avvia subagenti può creare loop infiniti se quei subagenti attivano lo stesso hook. Per prevenire questo:909Un hook `UserPromptSubmit` che avvia subagent può creare loop infiniti se quei subagent attivano lo stesso hook. Per prevenire questo:

910 910 

911* Utilizzate una variabile condivisa o lo stato della sessione per tracciare se siete già all'interno di un subagente911* Utilizza una variabile condivisa o lo stato della sessione per tenere traccia del fatto che ti trovi già all'interno di un subagent

912* Limitate gli hook per l'esecuzione solo per la sessione dell'agente di livello superiore912* Limita gli hook in modo che vengano eseguiti solo per la sessione dell'agente di livello superiore

913 913 

914<h3 id="systemmessage-not-appearing-in-output">914<h3 id="systemmessage-not-appearing-in-output">

915 systemMessage non appare nell'output915 systemMessage non appare nell'output

916</h3>916</h3>

917 917 

918Il campo `systemMessage` mostra un messaggio all'utente, non al modello. Su Claude Code v2.1.227 o successivo, il `systemMessage` di un hook può emergere nel flusso dei messaggi come un [`SDKInformationalMessage`](/docs/it/agent-sdk/typescript#sdkinformationalmessage). Se lo fa dipende dall'evento. Ogni [sezione dell'evento](/docs/it/hooks#hook-events) sulla pagina degli hooks dice come emerge l'output. Per passare il contesto al modello, restituite [`additionalContext`](/docs/it/hooks#add-context-for-claude).918Il campo `systemMessage` mostra un messaggio all'utente, non al modello. Su Claude Code v2.1.227 o successivo, il `systemMessage` di un hook può emergere nel flusso dei messaggi come un [`SDKInformationalMessage`](/docs/it/agent-sdk/typescript#sdkinformationalmessage). Che ciò avvenga dipende dall'evento. La [sezione di ogni evento](/docs/it/hooks#hook-events) nella pagina degli hook indica come emerge l'output. Per passare invece il contesto al modello, restituisci [`additionalContext`](/docs/it/hooks#add-context-for-claude).

919 919 

920Prima della v2.1.227, l'SDK faceva emergere l'output degli hook nel flusso dei messaggi solo per gli hook `SessionStart` e `Setup`. Per qualsiasi altro evento, l'output appariva solo negli eventi del ciclo di vita che [`includeHookEvents`](/docs/it/agent-sdk/typescript#options) (`include_hook_events` in Python) aggiunge. La voce di quell'opzione copre quali eventi del ciclo di vita ogni evento hook produce.920Prima della v2.1.227, l'SDK faceva emergere l'output degli hook nel flusso dei messaggi solo per gli hook `SessionStart` e `Setup`. Per qualsiasi altro evento, l'output appariva solo negli eventi del ciclo di vita che [`includeHookEvents`](/docs/it/agent-sdk/typescript#options) (`include_hook_events` in Python) aggiunge. La voce di quell'opzione descrive quali eventi del ciclo di vita produce ogni evento hook.

921 921 

922Se avete bisogno di far emergere le decisioni degli hook alla vostra applicazione in modo affidabile, registratele separatamente o utilizzate un canale di output dedicato.922Se hai bisogno di far emergere in modo affidabile le decisioni degli hook nella tua applicazione, registrale separatamente nei log o utilizza un canale di output dedicato.

923 923 

924<h2 id="related-resources">924<h2 id="related-resources">

925 Risorse correlate925 Risorse correlate

agent-sdk/python.md +149 −148

Details

44 Funzioni44 Funzioni

45</h2>45</h2>

46 46 

47<Note>I blocchi di firma e i frammenti `async for` / `async with` nudi in questa pagina sono illustrativi. Per eseguirli, avvolgete il corpo in `async def main(): ...` e chiamate `asyncio.run(main())`.</Note>47<Note>I blocchi di firma e i frammenti `async for` / `async with` nudi in questa pagina sono illustrativi. Per eseguirli, avvolgi il corpo in `async def main(): ...` e chiama `asyncio.run(main())`.</Note>

48 48 

49<h3 id="query">49<h3 id="query">

50 `query()`50 `query()`

51</h3>51</h3>

52 52 

53Crea una nuova sessione per ogni interazione con Claude Code per impostazione predefinita. Restituisce un iteratore asincrono che produce messaggi man mano che arrivano. Ogni chiamata a `query()` inizia da zero senza memoria di interazioni precedenti a meno che non passiate `continue_conversation=True` o `resume` in [`ClaudeAgentOptions`](#claudeagentoptions). Vedi [Sessions](/docs/it/agent-sdk/sessions).53Crea una nuova sessione per ogni interazione con Claude Code per impostazione predefinita. Restituisce un iteratore asincrono che produce messaggi man mano che arrivano. Ogni chiamata a `query()` inizia da zero senza memoria di interazioni precedenti a meno che non passi `continue_conversation=True` o `resume` in [`ClaudeAgentOptions`](#claudeagentoptions). Vedi [Sessions](/docs/it/agent-sdk/sessions).

54 54 

55```python theme={null}55```python theme={null}

56async def query(56async def query(


194 `ToolAnnotations`194 `ToolAnnotations`

195</h4>195</h4>

196 196 

197Suggerimenti comportamentali per uno strumento, passati come argomento `annotations` di [`tool()`](#tool). `ToolAnnotations` estende `mcp.types.ToolAnnotations` dell'SDK MCP con un campo `maxResultSizeChars`, e potete scrivere ogni suggerimento in camelCase o snake\_case: `ToolAnnotations(readOnlyHint=True)` e `ToolAnnotations(read_only_hint=True)` sono equivalenti. Potete anche passare un semplice `mcp.types.ToolAnnotations` ovunque l'SDK accetti annotazioni.197Suggerimenti comportamentali per uno strumento, passati come argomento `annotations` di [`tool()`](#tool). `ToolAnnotations` estende `mcp.types.ToolAnnotations` dell'SDK MCP con un campo `maxResultSizeChars`, e puoi scrivere ogni suggerimento in camelCase o snake\_case: `ToolAnnotations(readOnlyHint=True)` e `ToolAnnotations(read_only_hint=True)` sono equivalenti. Per rileggere un suggerimento dall'oggetto, usa la grafia dichiarata dal pacchetto `mcp` installato: `.readOnlyHint` su `mcp` 1.x e `.read_only_hint` su 2.x, mentre `.maxResultSizeChars` funziona su entrambi. Puoi anche passare un semplice `mcp.types.ToolAnnotations` ovunque l'SDK accetti annotazioni.

198 198 

199I nomi snake\_case e il campo tipizzato `maxResultSizeChars` richiedono Python Agent SDK 0.2.140 o successivo. Le versioni da 0.1.31 a 0.2.139 riesportano `mcp.types.ToolAnnotations` senza modifiche. Nelle versioni da 0.1.55 a 0.2.139 potete comunque passare `maxResultSizeChars` come argomento di parola chiave: la classe MCP accetta campi extra e l'SDK invia il valore a Claude Code.199I nomi snake\_case e il campo tipizzato `maxResultSizeChars` richiedono Python Agent SDK 0.2.140 o successivo. Le versioni da 0.1.31 a 0.2.139 riesportano `mcp.types.ToolAnnotations` senza modifiche. Nelle versioni da 0.1.55 a 0.2.139 puoi comunque passare `maxResultSizeChars` come argomento di parola chiave: la classe MCP accetta campi extra e l'SDK invia il valore a Claude Code.

200 200 

201Tutti i campi sono opzionali. I client non dovrebbero fare affidamento sui suggerimenti per decisioni di sicurezza.201Tutti i campi sono opzionali. I client non dovrebbero fare affidamento sui suggerimenti per decisioni di sicurezza.

202 202 


318| Proprietà | Tipo | Descrizione |318| Proprietà | Tipo | Descrizione |

319| :- | :- | :- |319| :- | :- | :- |

320| `session_id` | `str` | Identificatore di sessione univoco |320| `session_id` | `str` | Identificatore di sessione univoco |

321| `summary` | `str` | Titolo di visualizzazione: titolo personalizzato, riepilogo generato automaticamente o primo prompt |321| `summary` | `str` | Titolo di visualizzazione: titolo personalizzato, prompt più recente, riepilogo generato automaticamente o primo prompt |

322| `last_modified` | `int` | Ora dell'ultima modifica in millisecondi dall'epoca |322| `last_modified` | `int` | Ora dell'ultima modifica in millisecondi dall'epoca |

323| `file_size` | `int \| None` | Dimensione del file di sessione in byte (`None` per backend di archiviazione remota) |323| `file_size` | `int \| None` | Dimensione del file di sessione in byte (`None` per backend di archiviazione remota) |

324| `custom_title` | `str \| None` | Titolo della sessione impostato dall'utente |324| `custom_title` | `str \| None` | Titolo della sessione: il titolo impostato dall'utente, o il titolo generato automaticamente quando non ne è impostato nessuno |

325| `first_prompt` | `str \| None` | Primo prompt utente significativo nella sessione |325| `first_prompt` | `str \| None` | Primo prompt utente significativo nella sessione |

326| `git_branch` | `str \| None` | Ramo Git alla fine della sessione |326| `git_branch` | `str \| None` | Branch Git alla fine della sessione |

327| `cwd` | `str \| None` | Directory di lavoro per la sessione |327| `cwd` | `str \| None` | Directory di lavoro per la sessione |

328| `tag` | `str \| None` | Tag della sessione impostato dall'utente (vedi [`tag_session()`](#tag_session)) |328| `tag` | `str \| None` | Tag della sessione impostato dall'utente (vedi [`tag_session()`](#tag_session)) |

329| `created_at` | `int \| None` | Ora di creazione della sessione in millisecondi dall'epoca |329| `created_at` | `int \| None` | Ora di creazione della sessione in millisecondi dall'epoca |


782</h2>782</h2>

783 783 

784<Note>784<Note>

785 **`@dataclass` vs `TypedDict`:** Questo SDK utilizza due tipi di tipi. Le classi decorate con `@dataclass` (come `ResultMessage`, `AgentDefinition`, `TextBlock`) sono istanze di oggetti in fase di esecuzione e supportano l'accesso agli attributi: `msg.result`. Le classi definite con `TypedDict` (come `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) sono **dicts semplici in fase di esecuzione** e richiedono l'accesso alle chiavi: `config["budget_tokens"]`, non `config.budget_tokens`. La sintassi di chiamata `ClassName(field=value)` funziona per entrambi, ma solo le dataclass producono oggetti con attributi.785 **`@dataclass` vs `TypedDict`:** Questo SDK utilizza due tipi di tipi. Le classi decorate con `@dataclass` (come `ResultMessage`, `AgentDefinition`, `TextBlock`) sono istanze di oggetti in fase di esecuzione e supportano l'accesso agli attributi: `msg.result`. Le classi definite con `TypedDict` (come `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) sono **dict semplici in fase di esecuzione** e richiedono l'accesso alle chiavi: `config["budget_tokens"]`, non `config.budget_tokens`. La sintassi di chiamata `ClassName(field=value)` funziona per entrambi, ma solo le dataclass producono oggetti con attributi.

786</Note>786</Note>

787 787 

788<h3 id="sdkmcptool">788<h3 id="sdkmcptool">


919| Proprietà | Tipo | Predefinito | Descrizione |919| Proprietà | Tipo | Predefinito | Descrizione |

920| :- | :- | :- | :- |920| :- | :- | :- | :- |

921| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configurazione degli strumenti. Usa `{"type": "preset", "preset": "claude_code"}` per gli strumenti predefiniti di Claude Code |921| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configurazione degli strumenti. Usa `{"type": "preset", "preset": "claude_code"}` per gli strumenti predefiniti di Claude Code |

922| `allowed_tools` | `list[str]` | `[]` | Strumenti da approvare automaticamente senza chiedere. Questo non limita Claude a solo questi strumenti. Se nomini uno dei [strumenti di tracciamento delle attività](/docs/it/agent-sdk/todo-tracking#model-availability) qui, Claude Code opta anche la sessione. Gli altri strumenti non elencati ricadono in `permission_mode` e `can_use_tool`. Usa `disallowed_tools` per bloccare gli strumenti. Vedi [Autorizzazioni](/docs/it/agent-sdk/permissions#allow-and-deny-rules) |922| `allowed_tools` | `list[str]` | `[]` | Strumenti da approvare automaticamente senza chiedere. Questo non limita Claude a solo questi strumenti. Se nomini uno degli [strumenti di tracciamento delle attività](/docs/it/agent-sdk/todo-tracking#model-availability) qui, Claude Code abilita anche la sessione. Gli altri strumenti non elencati passano a `permission_mode` e `can_use_tool`. Usa `disallowed_tools` per bloccare gli strumenti. Vedi [Permessi](/docs/it/agent-sdk/permissions#allow-and-deny-rules) |

923| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, `{"type": "preset", "preset": "claude_code"}` per il prompt di sistema di Claude Code con `"append"` opzionale, `{"type": "custom", "prompt": "..."}` per un prompt personalizzato che può anche impostare `"snapshot"`, o `{"type": "file", "path": "..."}` per caricare un prompt grande da disco. Vedi [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom), e [`SystemPromptFile`](#systempromptfile) |923| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, `{"type": "preset", "preset": "claude_code"}` per il prompt di sistema di Claude Code con `"append"` opzionale, `{"type": "custom", "prompt": "..."}` per un prompt personalizzato che può anche impostare `"snapshot"`, o `{"type": "file", "path": "..."}` per caricare un prompt grande da disco. Vedi [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom), e [`SystemPromptFile`](#systempromptfile) |

924| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configurazioni del server MCP o percorso al file di configurazione |924| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configurazioni del server MCP o percorso al file di configurazione |

925| `strict_mcp_config` | `bool` | `False` | Quando `True`, usa solo i server passati in `mcp_servers` e ignora il progetto `.mcp.json`, le impostazioni utente, i server MCP forniti dai plugin e i [connettori claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai). Mappa al flag CLI `--strict-mcp-config` |925| `strict_mcp_config` | `bool` | `False` | Quando `True`, usa solo i server passati in `mcp_servers` e ignora il progetto `.mcp.json`, le impostazioni utente, i server MCP forniti dai plugin e i [connettori claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai). Mappa al flag CLI `--strict-mcp-config` |

926| `permission_mode` | `PermissionMode \| None` | `None` | Modalità di autorizzazione per l'utilizzo dello strumento |926| `permission_mode` | `PermissionMode \| None` | `None` | Modalità di permesso per l'utilizzo degli strumenti |

927| `continue_conversation` | `bool` | `False` | Continua la conversazione più recente |927| `continue_conversation` | `bool` | `False` | Continua la conversazione più recente |

928| `resume` | `str \| None` | `None` | ID della sessione da riprendere |928| `resume` | `str \| None` | `None` | ID della sessione da riprendere |

929| `session_id` | `str \| None` | `None` | Usa un ID di sessione specifico invece di uno generato automaticamente. Deve essere un UUID valido. Non può essere combinato con `continue_conversation` o `resume` a meno che `fork_session` non sia anche impostato |929| `session_id` | `str \| None` | `None` | Usa un ID di sessione specifico invece di uno generato automaticamente. Deve essere un UUID valido. Non può essere combinato con `continue_conversation` o `resume` a meno che `fork_session` non sia anche impostato |

930| `max_turns` | `int \| None` | `None` | Numero massimo di turni agentici (round trip di utilizzo dello strumento) |930| `max_turns` | `int \| None` | `None` | Numero massimo di turni agentici (round trip di utilizzo degli strumenti) |

931| `max_budget_usd` | `float \| None` | `None` | Interrompi la query quando la stima del costo lato client raggiunge questo valore in USD. Conta solo la spesa della chiamata stessa; i totali ripristinati da una sessione ripresa non contano. Per le avvertenze di accuratezza e il comportamento di ripristino, vedi [Traccia costo e utilizzo](/docs/it/agent-sdk/cost-tracking) |931| `max_budget_usd` | `float \| None` | `None` | Interrompi la query quando la stima del costo lato client raggiunge questo valore in USD. Conta solo la spesa della chiamata stessa; i totali ripristinati da una sessione ripresa non contano. Per le avvertenze di accuratezza e il comportamento di ripristino, vedi [Traccia costo e utilizzo](/docs/it/agent-sdk/cost-tracking) |

932| `disallowed_tools` | `list[str]` | `[]` | Strumenti da negare. Un nome semplice come `"Bash"` rimuove lo strumento dal contesto di Claude. Una regola con ambito come `"Bash(rm *)"` lascia lo strumento disponibile e nega le chiamate corrispondenti in ogni modalità di autorizzazione, incluso `bypassPermissions`, per il comando [come scritto](/docs/it/permissions#bash-rule-limits). Vedi [Autorizzazioni](/docs/it/agent-sdk/permissions#allow-and-deny-rules) |932| `disallowed_tools` | `list[str]` | `[]` | Strumenti da negare. Un nome semplice come `"Bash"` rimuove lo strumento dal contesto di Claude. Una regola con ambito come `"Bash(rm *)"` lascia lo strumento disponibile e nega le chiamate corrispondenti in ogni modalità di permesso, incluso `bypassPermissions`, per il comando [come scritto](/docs/it/permissions#bash-rule-limits). Vedi [Permessi](/docs/it/agent-sdk/permissions#allow-and-deny-rules) |

933| `enable_file_checkpointing` | `bool` | `False` | Abilita il tracciamento dei cambiamenti dei file per il rewind. Vedi [File checkpointing](/docs/it/agent-sdk/file-checkpointing) |933| `enable_file_checkpointing` | `bool` | `False` | Abilita il tracciamento dei cambiamenti dei file per il rewind. Vedi [File checkpointing](/docs/it/agent-sdk/file-checkpointing) |

934| `model` | `str \| None` | `None` | Alias del modello Claude o nome completo del modello. Vedi [valori accettati e ID specifici del provider](/docs/it/model-config#available-models) |934| `model` | `str \| None` | `None` | Alias del modello Claude o nome completo del modello. Vedi [valori accettati e ID specifici del provider](/docs/it/model-config#available-models) |

935| `fallback_model` | `str \| None` | `None` | Modello di fallback da utilizzare se il modello primario fallisce. Accetta un elenco separato da virgole. Per indicazioni, vedi [Scegli un modello](/docs/it/agent-sdk/configuration#choose-a-model) |935| `fallback_model` | `str \| None` | `None` | Modello di fallback da utilizzare se il modello primario fallisce. Accetta un elenco separato da virgole. Per indicazioni, vedi [Scegli un modello](/docs/it/agent-sdk/configuration#choose-a-model) |

936| `betas` | `list[SdkBeta]` | `[]` | Funzionalità beta da abilitare. Vedi [`SdkBeta`](#sdkbeta) per le opzioni disponibili |936| `betas` | `list[SdkBeta]` | `[]` | Funzionalità beta da abilitare. Vedi [`SdkBeta`](#sdkbeta) per le opzioni disponibili |

937| `output_format` | `dict[str, Any] \| None` | `None` | Formato di output per risposte strutturate (ad es. `{"type": "json_schema", "schema": {...}}`). Vedi [Output strutturati](/docs/it/agent-sdk/structured-outputs) per i dettagli |937| `output_format` | `dict[str, Any] \| None` | `None` | Formato di output per risposte strutturate (ad es. `{"type": "json_schema", "schema": {...}}`). Vedi [Output strutturati](/docs/it/agent-sdk/structured-outputs) per i dettagli |

938| `permission_prompt_tool_name` | `str \| None` | `None` | Nome dello strumento MCP per i prompt di autorizzazione |938| `permission_prompt_tool_name` | `str \| None` | `None` | Nome dello strumento MCP per le richieste di permesso |

939| `cwd` | `str \| Path \| None` | `None` | Directory di lavoro corrente |939| `cwd` | `str \| Path \| None` | `None` | Directory di lavoro corrente |

940| `cli_path` | `str \| Path \| None` | `None` | Percorso personalizzato all'eseguibile CLI di Claude Code |940| `cli_path` | `str \| Path \| None` | `None` | Percorso personalizzato all'eseguibile CLI di Claude Code |

941| `settings` | `str \| None` | `None` | Percorso al file di impostazioni o una stringa JSON inline |941| `settings` | `str \| None` | `None` | Percorso al file di impostazioni o una stringa JSON inline |

942| `add_dirs` | `list[str \| Path]` | `[]` | Directory aggiuntive a cui Claude può accedere. L'SDK passa ogni voce a Claude Code come `--add-dir`, quindi con l'impostazione della fonte `project` Claude Code [carica anche le skills, i comandi e i subagenti della directory](/docs/it/permissions#additional-directories-grant-file-access-not-configuration) |942| `add_dirs` | `list[str \| Path]` | `[]` | Directory aggiuntive a cui Claude può accedere. L'SDK passa ogni voce a Claude Code come `--add-dir`, quindi con la fonte di impostazioni `project` Claude Code [carica anche le skill, i comandi e i subagent della directory](/docs/it/permissions#additional-directories-grant-file-access-not-configuration) |

943| `env` | `dict[str, str]` | `{}` | Variabili di ambiente unite in cima all'ambiente del processo ereditato. Vedi [Variabili di ambiente](/docs/it/env-vars) per le variabili che la CLI sottostante legge, e [Gestisci risposte API lente o bloccate](#handle-slow-or-stalled-api-responses) per le variabili relative ai timeout. Imposta `CLAUDE_AGENT_SDK_CLIENT_APP` per identificare la tua app nell'intestazione User-Agent |943| `env` | `dict[str, str]` | `{}` | Variabili d'ambiente unite in cima all'ambiente del processo ereditato. Vedi [Variabili d'ambiente](/docs/it/env-vars) per le variabili che la CLI sottostante legge, e [Gestisci risposte API lente o bloccate](#handle-slow-or-stalled-api-responses) per le variabili relative ai timeout. Imposta `CLAUDE_AGENT_SDK_CLIENT_APP` per identificare la tua app nell'intestazione User-Agent |

944| `extra_args` | `dict[str, str \| None]` | `{}` | Argomenti CLI aggiuntivi da passare direttamente alla CLI |944| `extra_args` | `dict[str, str \| None]` | `{}` | Argomenti CLI aggiuntivi da passare direttamente alla CLI |

945| `max_buffer_size` | `int \| None` | `None` | Byte massimi durante il buffering dell'stdout della CLI |945| `max_buffer_size` | `int \| None` | `None` | Byte massimi durante il buffering dello stdout della CLI |

946| `debug_stderr` | `Any` | `sys.stderr` | *Deprecato* - L'SDK ignora questo valore. Usa il callback `stderr` per l'output stderr della CLI |946| `debug_stderr` | `Any` | `sys.stderr` | *Deprecato* - L'SDK ignora questo valore. Usa il callback `stderr` per l'output stderr della CLI |

947| `stderr` | `Callable[[str], None] \| None` | `None` | Funzione di callback per l'output stderr dalla CLI |947| `stderr` | `Callable[[str], None] \| None` | `None` | Funzione di callback per l'output stderr dalla CLI |

948| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Funzione di callback per l'autorizzazione dello strumento, invocata solo quando il [flusso di autorizzazione](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated) ricade in un prompt. Non invocata per le chiamate auto-approvate da `allowed_tools`, regole di autorizzazione, o `permission_mode`. Una regola di autorizzazione non pre-approva le [azioni che nessuna modalità auto-approva](/docs/it/permission-modes#actions-no-mode-auto-approves). Vedi [`CanUseTool`](#canusetool) per i dettagli |948| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Funzione di callback per i permessi degli strumenti, invocata solo quando il [flusso dei permessi](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated) arriva a una richiesta di permesso. Non invocata per le chiamate approvate automaticamente da `allowed_tools`, regole di consenso, o `permission_mode`. Una regola di consenso non pre-approva le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves). Vedi [`CanUseTool`](#canusetool) per i dettagli |

949| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurazioni hook per intercettare gli eventi |949| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurazioni degli hook per intercettare gli eventi |

950| `user` | `str \| None` | `None` | Su piattaforme POSIX, l'account utente del sistema operativo in cui viene eseguito il subprocess Claude Code. Claude Code mantiene l'ambiente del processo genitore, incluso `HOME`, e viene eseguito in `cwd` |950| `user` | `str \| None` | `None` | Su piattaforme POSIX, l'account utente del sistema operativo con cui viene eseguito il subprocess Claude Code. Claude Code mantiene l'ambiente del processo genitore, incluso `HOME`, e viene eseguito in `cwd` |

951| `include_partial_messages` | `bool` | `False` | Includi eventi di streaming di messaggi parziali. Se abilitato, i messaggi [`StreamEvent`](#streamevent) vengono prodotti |951| `include_partial_messages` | `bool` | `False` | Includi eventi di streaming di messaggi parziali. Se abilitato, vengono prodotti i messaggi [`StreamEvent`](#streamevent) |

952| `include_hook_events` | `bool` | `False` | Includi eventi del ciclo di vita dei hook nel flusso di messaggi come oggetti `HookEventMessage` |952| `include_hook_events` | `bool` | `False` | Includi eventi del ciclo di vita degli hook nel flusso di messaggi come oggetti `HookEventMessage` |

953| `forward_subagent_text` | `bool` | `False` | Inoltra i blocchi di testo e pensiero dei subagenti nel flusso di messaggi. Senza questa opzione, Claude Code emette blocchi `tool_use` e `tool_result` dei subagenti ma non testo o pensiero. Richiede Python Agent SDK 0.2.140 o successivo |953| `forward_subagent_text` | `bool` | `False` | Inoltra i blocchi di testo e di ragionamento dei subagent nel flusso di messaggi. Senza questa opzione, Claude Code emette i blocchi `tool_use` e `tool_result` dei subagent ma non testo o ragionamento. Richiede Python Agent SDK 0.2.140 o successivo |

954| `verbatim_prompts` | `bool` | `False` | Consegna ogni prompt come scritto. L'SDK invia ogni messaggio utente con `client_composed` impostato a `True`. Vedi [`client_composed`](/docs/it/agent-sdk/typescript#sdkusermessage) per ciò che Claude Code salta su quei messaggi. Usa questa opzione quando il testo del prompt include contenuto che l'utente finale non ha digitato. Per il controllo per turno, lascialo disattivato e imposta `"client_composed": True` su singoli messaggi trasmessi invece. Mentre l'opzione è attiva, l'SDK sovrascrive qualsiasi valore `client_composed` che imposti. Richiede Python Agent SDK 0.2.158 o successivo e Claude Code v2.1.248 o successivo; la CLI fornita con quelle versioni dell'SDK soddisfa il requisito di Claude Code |954| `verbatim_prompts` | `bool` | `False` | Consegna ogni prompt come scritto. L'SDK invia ogni messaggio utente con `client_composed` impostato a `True`. Vedi [`client_composed`](/docs/it/agent-sdk/typescript#sdkusermessage) per ciò che Claude Code salta su quei messaggi. Usa questa opzione quando il testo del prompt include contenuto che l'utente finale non ha digitato. Per il controllo per turno, lasciala disattivata e imposta invece `"client_composed": True` su singoli messaggi trasmessi in streaming. Mentre l'opzione è attiva, l'SDK sovrascrive qualsiasi valore `client_composed` che imposti. Richiede Python Agent SDK 0.2.158 o successivo e Claude Code v2.1.248 o successivo; la CLI fornita con quelle versioni dell'SDK soddisfa il requisito di Claude Code |

955| `fork_session` | `bool` | `False` | Quando si riprende con `resume`, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale |955| `fork_session` | `bool` | `False` | Quando si riprende con `resume`, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale |

956| `resume_session_at` | `str \| None` | `None` | Quando si riprende, carica la conversazione solo fino a e includendo il messaggio con questo UUID. Usa con `resume`, e solitamente `fork_session`, per ramificarsi da un punto precedente. Richiede Python Agent SDK 0.2.137 o successivo |956| `resume_session_at` | `str \| None` | `None` | Quando si riprende, carica la conversazione solo fino al messaggio con questo UUID, incluso. Usa con `resume`, e solitamente `fork_session`, per creare un branch da un punto precedente. Richiede Python Agent SDK 0.2.137 o successivo |

957| `resume_drops_turn` | `str \| None` | `None` | UUID del prompt utente il cui turno un troncamento `resume_session_at` scarta. Quando impostato, la CLI rifiuta la ripresa se l'intervallo scartato contiene voci non attribuibili a quel turno. Richiede Python Agent SDK 0.2.137 o successivo e Claude Code v2.1.223 o successivo; la CLI fornita con quelle versioni dell'SDK soddisfa il requisito di Claude Code |957| `resume_drops_turn` | `str \| None` | `None` | UUID del prompt utente il cui turno un troncamento `resume_session_at` scarta. Quando impostato, la CLI rifiuta la ripresa se l'intervallo scartato contiene voci non attribuibili a quel turno. Richiede Python Agent SDK 0.2.137 o successivo e Claude Code v2.1.223 o successivo; la CLI fornita con quelle versioni dell'SDK soddisfa il requisito di Claude Code |

958| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagenti definiti programmaticamente |958| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagent definiti programmaticamente |

959| `plugins` | `list[SdkPluginConfig]` | `[]` | Carica plugin personalizzati da percorsi locali. Vedi [Plugin](/docs/it/agent-sdk/plugins) per i dettagli |959| `plugins` | `list[SdkPluginConfig]` | `[]` | Carica plugin personalizzati da percorsi locali. Vedi [Plugin](/docs/it/agent-sdk/plugins) per i dettagli |

960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configura il comportamento della sandbox a livello di programmazione. Vedi [Impostazioni sandbox](#sandboxsettings) per i dettagli |960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configura il comportamento della sandbox a livello di programmazione. Vedi [Impostazioni sandbox](#sandboxsettings) per i dettagli |

961| `setting_sources` | `list[SettingSource] \| None` | `None` (Impostazioni predefinite CLI: tutte le fonti) | Controlla quali impostazioni del filesystem caricare. Passa `[]` per disabilitare le impostazioni utente, progetto e locali. Con `skills` impostato e questo campo non impostato, solo le fonti utente e progetto si caricano. Imposta `setting_sources` esplicitamente per mantenere le impostazioni locali. La politica gestita dall'endpoint si carica indipendentemente; le impostazioni gestite dal server vengono recuperate quando la sessione si autentica con una credenziale organizzativa su una [configurazione idonea](/docs/it/server-managed-settings#platform-availability). Per gli input letti indipendentemente da questa opzione, vedi [Cosa settingSources non controlla](/docs/it/agent-sdk/claude-code-features#what-settingsources-does-not-control) |961| `setting_sources` | `list[SettingSource] \| None` | `None` (Impostazioni predefinite CLI: tutte le fonti) | Controlla quali impostazioni del filesystem caricare. Passa `[]` per disabilitare le impostazioni utente, progetto e locali. Con `skills` impostato e questo campo non impostato, si caricano solo le fonti utente e progetto. Imposta `setting_sources` esplicitamente per mantenere le impostazioni locali. La politica gestita dall'endpoint si carica indipendentemente; le impostazioni gestite dal server vengono recuperate quando la sessione si autentica con una credenziale dell'organizzazione su una [configurazione idonea](/docs/it/server-managed-settings#platform-availability). Per gli input letti indipendentemente da questa opzione, vedi [Cosa settingSources non controlla](/docs/it/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

962| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills disponibili per la sessione. Passa `"all"` per abilitare ogni skill scoperta, o un elenco di nomi di skill. Passa solo nomi esatti. L'SDK rifiuta i nomi malformati e in forma wildcard con un `ValueError` prima di avviare il processo Claude Code; questo controllo richiede Python Agent SDK 0.2.129 o successivo. Quando impostato, l'SDK aggiunge lo strumento Skill a `allowed_tools` automaticamente. Se passi anche `tools`, includi `"Skill"` in quell'elenco. Vedi [Skills](/docs/it/agent-sdk/skills) |962| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skill disponibili per la sessione. Passa `"all"` per abilitare ogni skill scoperta, o un elenco di nomi di skill. Passa solo nomi esatti. L'SDK rifiuta i nomi malformati e in forma wildcard con un `ValueError` prima di avviare il processo Claude Code; questo controllo richiede Python Agent SDK 0.2.129 o successivo. Quando impostato, l'SDK aggiunge automaticamente lo strumento Skill a `allowed_tools`. Se passi anche `tools`, includi `"Skill"` in quell'elenco. Vedi [Skill](/docs/it/agent-sdk/skills) |

963| `max_thinking_tokens` | `int \| None` | `None` | *Deprecato* - Token massimi per i blocchi di pensiero. Usa `thinking` invece |963| `max_thinking_tokens` | `int \| None` | `None` | *Deprecato* - Token massimi per i blocchi di ragionamento. Usa invece `thinking` |

964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Controlla il comportamento del pensiero esteso. Ha la precedenza su `max_thinking_tokens` |964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Controlla il comportamento del ragionamento esteso. Ha la precedenza su `max_thinking_tokens` |

965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Livello di sforzo per la profondità del pensiero. Vedi [regola il livello di sforzo](/docs/it/model-config#adjust-effort-level) |965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Livello di sforzo per la profondità del ragionamento. Vedi [regola il livello di sforzo](/docs/it/model-config#adjust-effort-level) |

966| `session_store` | [`SessionStore`](/docs/it/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Specchia i trascritti di sessione in un backend esterno in modo che qualsiasi host possa riprenderli. Vedi [Persisti le sessioni nell'archiviazione esterna](/docs/it/agent-sdk/session-storage) |966| `session_store` | [`SessionStore`](/docs/it/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Replica le trascrizioni di sessione in un backend esterno in modo che un altro host possa riprenderle. Vedi [Persisti le sessioni nell'archiviazione esterna](/docs/it/agent-sdk/session-storage) |

967| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Quando eseguire il flush delle voci di trascritto mirrorato a `session_store`. `"batched"` esegue il flush una volta per turno o quando il buffer si riempie; `"eager"` attiva un flush in background dopo ogni frame. Ignorato quando `session_store` è `None` |967| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Quando eseguire il flush delle voci di trascrizione replicate in `session_store`. `"batched"` esegue il flush una volta per turno o quando il buffer si riempie; `"eager"` attiva un flush in background dopo ogni frame. Ignorato quando `session_store` è `None` |

968| `load_timeout_ms` | `int` | `60000` | Timeout per chiamata per `session_store.load()` e `list_subkeys()` durante la materializzazione della ripresa, in millisecondi |968| `load_timeout_ms` | `int` | `60000` | Timeout per chiamata per `session_store.load()` e `list_subkeys()` durante la materializzazione della ripresa, in millisecondi |

969| `task_budget` | `TaskBudget \| None` | `None` | Budget di token lato API. Inviato come `output_config.task_budget` con l'intestazione beta `task-budgets-2026-03-13`. Passa `{"total": <int>}`. |969| `task_budget` | `TaskBudget \| None` | `None` | Budget di token lato API. Inviato come `output_config.task_budget` con l'intestazione beta `task-budgets-2026-03-13`. Passa `{"total": <int>}`. |

970 970 


972 Gestisci risposte API lente o bloccate972 Gestisci risposte API lente o bloccate

973</h4>973</h4>

974 974 

975Il subprocess CLI legge diverse variabili di ambiente che controllano i timeout dell'API e il rilevamento dei blocchi. Passale attraverso `ClaudeAgentOptions.env`:975Il subprocess CLI legge diverse variabili d'ambiente che controllano i timeout dell'API e il rilevamento dei blocchi. Passale attraverso `ClaudeAgentOptions.env`:

976 976 

977```python theme={null}977```python theme={null}

978from claude_agent_sdk import ClaudeAgentOptions978from claude_agent_sdk import ClaudeAgentOptions


986)986)

987```987```

988 988 

989* `API_TIMEOUT_MS`: timeout per richiesta sul client Anthropic, in millisecondi. Predefinito `600000`. Si applica al ciclo principale e a tutti i subagenti.989* `API_TIMEOUT_MS`: timeout per richiesta sul client Anthropic, in millisecondi. Predefinito `600000`. Si applica al ciclo principale e a tutti i subagent.

990* `CLAUDE_CODE_MAX_RETRIES`: numero massimo di tentativi API. Predefinito `10`, limitato a `15`. Ogni tentativo ottiene la propria finestra `API_TIMEOUT_MS`, quindi il tempo di parete nel caso peggiore è approssimativamente `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` più backoff. Per esecuzioni incustodite che devono attendere interruzioni più lunghe, imposta [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/it/errors#tune-retry-behavior): ritenta gli errori di capacità transitori indefinitamente e, a partire da Claude Code v2.1.199, aumenta il valore predefinito per altri errori transitori a `300` e rimuove il limite su questa variabile.990* `CLAUDE_CODE_MAX_RETRIES`: numero massimo di nuovi tentativi API. Predefinito `10`, limitato a `15`. Ogni nuovo tentativo ottiene la propria finestra `API_TIMEOUT_MS`, quindi il tempo reale nel caso peggiore è approssimativamente `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` più backoff. Per esecuzioni incustodite che devono attendere interruzioni più lunghe, imposta [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/it/errors#tune-retry-behavior): riprova indefinitamente in caso di errori di capacità transitori e, a partire da Claude Code v2.1.199, aumenta il valore predefinito per altri errori transitori a `300` e rimuove il limite su questa variabile.

991* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog di blocco per i subagenti. Mentre il watchdog del flusso è attivo, il predefinito è `CLAUDE_STREAM_IDLE_TIMEOUT_MS` più 5 minuti, che ammonta a `600000` a meno che non aumenti quella variabile. Con il watchdog del flusso disattivato, il predefinito è `600000`. Prima di v2.1.257, il predefinito era sempre `600000`.991* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog di blocco per i subagent. Mentre il watchdog del flusso è attivo, il predefinito è `CLAUDE_STREAM_IDLE_TIMEOUT_MS` più 5 minuti, che ammonta a `600000` a meno che non aumenti quella variabile. Con il watchdog del flusso disattivato, il predefinito è `600000`. Prima di v2.1.257, il predefinito era sempre `600000`.

992 992 

993 Il timer si ripristina su ogni evento di flusso. In caso di blocco, Claude Code interrompe il subagente e segnala il blocco al genitore. Per un subagente in background, contrassegna anche l'attività come non riuscita e allega qualsiasi risultato parziale.993 Il timer si azzera a ogni evento del flusso. In caso di blocco, Claude Code interrompe il subagent e segnala il blocco al genitore. Per un subagent in background, contrassegna anche l'attività come non riuscita e allega qualsiasi risultato parziale.

994* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog del flusso che interrompe la richiesta quando le intestazioni sono arrivate ma il corpo della risposta smette di trasmettere. Il watchdog è attivo per impostazione predefinita per tutti i provider; imposta `CLAUDE_ENABLE_STREAM_WATCHDOG=0` per disabilitarlo. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` predefinito a `300000` e viene bloccato a quel minimo. Dopo l'interruzione, [Tentativi automatici](/docs/it/errors#automatic-retries) copre cosa Claude Code fa, in base a quanto la risposta aveva progredito.994* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog del flusso che interrompe la richiesta quando le intestazioni sono arrivate ma il corpo della risposta smette di essere trasmesso in streaming. Il watchdog è attivo per impostazione predefinita per tutti i provider; imposta `CLAUDE_ENABLE_STREAM_WATCHDOG=0` per disabilitarlo. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ha come predefinito `300000` e non può scendere sotto quel minimo. Dopo l'interruzione, [Nuovi tentativi automatici](/docs/it/errors#automatic-retries) descrive cosa fa Claude Code, in base a quanto la risposta era avanzata.

995 995 

996 Mentre il watchdog attende una risposta che un gateway dietro `ANTHROPIC_BASE_URL` tiene aperta con ping keep-alive, un host che imposta `include_partial_messages` continua a ricevere messaggi [`StreamEvent`](#streamevent) di `ping`. Leggi quei frame come vivacità piuttosto che cronometrare la sessione su silenzio. Prima di v2.1.257, i frame si fermavano 5 minuti dopo l'ultimo evento di flusso reale.996 Mentre il watchdog attende una risposta che un gateway dietro `ANTHROPIC_BASE_URL` tiene aperta con ping keep-alive, un host che imposta `include_partial_messages` continua a ricevere messaggi [`StreamEvent`](#streamevent) di `ping`. Interpreta quei frame come segnali di attività invece di far scadere la sessione per inattività. Prima di v2.1.257, i frame si fermavano 5 minuti dopo l'ultimo evento di flusso reale.

997 997 

998<h3 id="outputformat">998<h3 id="outputformat">

999 `OutputFormat`999 `OutputFormat`


1035| `preset` | Sì | Deve essere `"claude_code"` per utilizzare il prompt di sistema di Claude Code |1035| `preset` | Sì | Deve essere `"claude_code"` per utilizzare il prompt di sistema di Claude Code |

1036| `append` | No | Istruzioni aggiuntive da aggiungere al prompt di sistema preset |1036| `append` | No | Istruzioni aggiuntive da aggiungere al prompt di sistema preset |

1037| `exclude_dynamic_sections` | No | Sposta il contesto per utente, come la posizione della memoria automatica, dal prompt di sistema nel primo messaggio utente. Migliora il riutilizzo della cache dei prompt tra utenti e macchine. Vedi [Modifica i prompt di sistema](/docs/it/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |1037| `exclude_dynamic_sections` | No | Sposta il contesto per utente, come la posizione della memoria automatica, dal prompt di sistema nel primo messaggio utente. Migliora il riutilizzo della cache dei prompt tra utenti e macchine. Vedi [Modifica i prompt di sistema](/docs/it/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

1038| `snapshot` | No | Imposta a `False` per ricostruire il prompt di sistema su ogni richiesta invece di [riutilizzare il prompt che la sessione ha registrato alla sua prima richiesta](/docs/it/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Richiede `claude-agent-sdk` v0.2.153 o successivo |1038| `snapshot` | No | Imposta a `False` per ricostruire il prompt di sistema a ogni richiesta invece di [riutilizzare il prompt che la sessione ha registrato alla sua prima richiesta](/docs/it/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Richiede `claude-agent-sdk` v0.2.153 o successivo |

1039 1039 

1040<h3 id="systempromptcustom">1040<h3 id="systempromptcustom">

1041 `SystemPromptCustom`1041 `SystemPromptCustom`


1053| Campo | Obbligatorio | Descrizione |1053| Campo | Obbligatorio | Descrizione |

1054| :- | :- | :- |1054| :- | :- | :- |

1055| `type` | Sì | Deve essere `"custom"` |1055| `type` | Sì | Deve essere `"custom"` |

1056| `prompt` | Sì | Il testo del prompt di sistema. Passato alla CLI come argomento della riga di comando, quindi i [limiti di lunghezza della riga di comando](#systempromptfile) si applicano |1056| `prompt` | Sì | Il testo del prompt di sistema. Passato alla CLI come argomento della riga di comando, quindi si applicano i [limiti di lunghezza della riga di comando](#systempromptfile) |

1057| `snapshot` | No | Uguale a [`SystemPromptPreset.snapshot`](#systempromptpreset), applicato a `prompt` |1057| `snapshot` | No | Uguale a [`SystemPromptPreset.snapshot`](#systempromptpreset), applicato a `prompt` |

1058 1058 

1059<h3 id="systempromptfile">1059<h3 id="systempromptfile">

1060 `SystemPromptFile`1060 `SystemPromptFile`

1061</h3>1061</h3>

1062 1062 

1063Configurazione per il caricamento di un prompt di sistema personalizzato da un file invece di passarlo come stringa. L'SDK mappa questo al flag CLI [`--system-prompt-file`](/docs/it/cli-reference#system-prompt-flags). Usa il modulo file quando il prompt è grande: l'SDK passa una stringa `system_prompt` sull'argv del subprocess CLI, che è soggetto ai limiti di lunghezza della riga di comando del sistema operativo prima che l'SDK invii qualsiasi richiesta API. Su Linux un singolo argomento più lungo di circa 128 KB fallisce al spawn del processo con `Argument list too long`. Su Windows l'intera riga di comando è limitata a circa 32 KB, quindi il modulo stringa fallisce a una soglia inferiore.1063Configurazione per il caricamento di un prompt di sistema personalizzato da un file invece di passarlo come stringa. L'SDK mappa questo al flag CLI [`--system-prompt-file`](/docs/it/cli-reference#system-prompt-flags). Usa la forma file quando il prompt è grande: l'SDK passa una stringa `system_prompt` sull'argv del subprocess CLI, che è soggetto ai limiti di lunghezza della riga di comando del sistema operativo prima che l'SDK invii qualsiasi richiesta API. Su Linux un singolo argomento più lungo di circa 128 KB fallisce all'avvio del processo con `Argument list too long`. Su Windows l'intera riga di comando è limitata a circa 32 KB, quindi la forma stringa fallisce a una soglia inferiore.

1064 1064 

1065```python theme={null}1065```python theme={null}

1066class SystemPromptFile(TypedDict):1066class SystemPromptFile(TypedDict):


1077 `SettingSource`1077 `SettingSource`

1078</h3>1078</h3>

1079 1079 

1080Controlla quali fonti di configurazione basate su filesystem l'SDK carica le impostazioni da.1080Controlla da quali fonti di configurazione basate su filesystem l'SDK carica le impostazioni.

1081 1081 

1082```python theme={null}1082```python theme={null}

1083SettingSource = Literal["user", "project", "local"]1083SettingSource = Literal["user", "project", "local"]


1086| Valore | Descrizione | Posizione |1086| Valore | Descrizione | Posizione |

1087| :- | :- | :- |1087| :- | :- | :- |

1088| `"user"` | Impostazioni utente globali | `~/.claude/settings.json` |1088| `"user"` | Impostazioni utente globali | `~/.claude/settings.json` |

1089| `"project"` | Impostazioni di progetto condivise (controllate dalla versione) | `.claude/settings.json` |1089| `"project"` | Impostazioni di progetto condivise (sotto controllo di versione) | `.claude/settings.json` |

1090| `"local"` | Impostazioni di progetto locali, gitignored quando Claude Code salva un'impostazione in essa | `.claude/settings.local.json` |1090| `"local"` | Impostazioni di progetto locali, aggiunte a gitignore quando Claude Code vi salva un'impostazione | `.claude/settings.local.json` |

1091 1091 

1092<h4 id="default-behavior">1092<h4 id="default-behavior">

1093 Comportamento predefinito1093 Comportamento predefinito

1094</h4>1094</h4>

1095 1095 

1096Quando `setting_sources` è omesso o `None` e `skills` non è impostato, `query()` carica le stesse impostazioni del filesystem della CLI di Claude Code: utente, progetto e locale. Con `skills` impostato, la riga [`setting_sources`](#claudeagentoptions) descrive il valore predefinito corrente. La politica gestita dall'endpoint viene caricata in tutti i casi; le impostazioni gestite dal server vengono recuperate quando la sessione si autentica con una credenziale organizzativa su una [configurazione idonea](/docs/it/server-managed-settings#platform-availability). Per ulteriori informazioni, vedi [Cosa settingSources non controlla](/docs/it/agent-sdk/claude-code-features#what-settingsources-does-not-control).1096Quando `setting_sources` è omesso o `None` e `skills` non è impostato, `query()` carica le stesse impostazioni del filesystem della CLI di Claude Code: utente, progetto e locale. Con `skills` impostato, la riga [`setting_sources`](#claudeagentoptions) descrive il valore predefinito corrente. La politica gestita dall'endpoint viene caricata in tutti i casi; le impostazioni gestite dal server vengono recuperate quando la sessione si autentica con una credenziale dell'organizzazione su una [configurazione idonea](/docs/it/server-managed-settings#platform-availability). Per ulteriori informazioni, vedi [Cosa settingSources non controlla](/docs/it/agent-sdk/claude-code-features#what-settingsources-does-not-control).

1097 1097 

1098<h4 id="why-use-setting_sources">1098<h4 id="why-use-setting_sources">

1099 Perché usare setting\_sources1099 Perché usare setting\_sources


1192 `AgentDefinition`1192 `AgentDefinition`

1193</h3>1193</h3>

1194 1194 

1195Configurazione per un subagente definito programmaticamente.1195Configurazione per un subagent definito programmaticamente.

1196 1196 

1197```python theme={null}1197```python theme={null}

1198@dataclass1198@dataclass


1216| :- | :- | :- |1216| :- | :- | :- |

1217| `description` | Sì | Descrizione in linguaggio naturale di quando utilizzare questo agente |1217| `description` | Sì | Descrizione in linguaggio naturale di quando utilizzare questo agente |

1218| `prompt` | Sì | Il prompt di sistema dell'agente |1218| `prompt` | Sì | Il prompt di sistema dell'agente |

1219| `tools` | No | Array di nomi di strumenti consentiti. Se omesso, eredita ogni [strumento disponibile ai subagenti](/docs/it/sub-agents#available-tools) |1219| `tools` | No | Array di nomi di strumenti consentiti. Se omesso, eredita ogni [strumento disponibile ai subagent](/docs/it/sub-agents#available-tools) |

1220| `disallowedTools` | No | Array di nomi di strumenti da rimuovere dal set di strumenti dell'agente. Sono accettati anche i pattern a livello di server MCP: `mcp__server` o `mcp__server__*` rimuove ogni strumento da quel server, e `mcp__*` rimuove ogni strumento MCP da qualsiasi server |1220| `disallowedTools` | No | Array di nomi di strumenti da rimuovere dal set di strumenti dell'agente. Sono accettati anche i pattern a livello di server MCP: `mcp__server` o `mcp__server__*` rimuove ogni strumento da quel server, e `mcp__*` rimuove ogni strumento MCP da qualsiasi server |

1221| `model` | No | Override del modello per questo agente. Accetta un alias come `"sonnet"`, `"opus"`, `"haiku"`, o `"inherit"`, o un ID modello completo. Quando lo ometti, Claude Code sceglie il modello nell'[ordine del modello subagente](/docs/it/sub-agents#choose-a-model) |1221| `model` | No | Override del modello per questo agente. Accetta un alias come `"sonnet"`, `"opus"`, `"haiku"`, o `"inherit"`, o un ID modello completo. Quando lo ometti, Claude Code sceglie il modello secondo l'[ordine dei modelli dei subagent](/docs/it/sub-agents#choose-a-model) |

1222| `skills` | No | Elenco dei nomi di skills da precaricare nel contesto dell'agente all'avvio. Le skills non elencate rimangono invocabili attraverso lo strumento Skill |1222| `skills` | No | Elenco dei nomi di skill da precaricare nel contesto dell'agente all'avvio. Le skill non elencate rimangono invocabili attraverso lo strumento Skill |

1223| `memory` | No | Fonte di memoria per questo agente: `"user"`, `"project"`, o `"local"` |1223| `memory` | No | Fonte di memoria per questo agente: `"user"`, `"project"`, o `"local"` |

1224| `mcpServers` | No | Server MCP disponibili per questo agente. Ogni voce è un nome di server o un dict `{name: config}` inline |1224| `mcpServers` | No | Server MCP disponibili per questo agente. Ogni voce è un nome di server o un dict `{name: config}` inline |

1225| `initialPrompt` | No | Auto-inviato come il primo turno utente quando questo agente viene eseguito come agente del thread principale |1225| `initialPrompt` | No | Inviato automaticamente come primo turno utente quando questo agente viene eseguito come agente del thread principale |

1226| `maxTurns` | No | Numero massimo di turni agentici prima che l'agente si fermi |1226| `maxTurns` | No | Numero massimo di turni agentici prima che l'agente si fermi |

1227| `background` | No | Esegui questo agente come attività in background non bloccante quando invocato |1227| `background` | No | Esegui questo agente come attività in background non bloccante quando invocato |

1228| `effort` | No | Livello di sforzo di ragionamento per questo agente. Accetta un livello denominato o un numero intero. Vedi [`EffortLevel`](#effortlevel) |1228| `effort` | No | Livello di sforzo di ragionamento per questo agente. Accetta un livello denominato o un numero intero. Vedi [`EffortLevel`](#effortlevel) |

1229| `permissionMode` | No | Modalità di autorizzazione per l'esecuzione dello strumento all'interno di questo agente. Le [regole di eredità del subagente](/docs/it/agent-sdk/permissions#available-modes) decidono quando si applica. Vedi [`PermissionMode`](#permissionmode) |1229| `permissionMode` | No | Modalità di permesso per l'esecuzione degli strumenti all'interno di questo agente. Le [regole di ereditarietà dei subagent](/docs/it/agent-sdk/permissions#available-modes) decidono quando si applica. Vedi [`PermissionMode`](#permissionmode) |

1230 1230 

1231<Note>1231<Note>

1232 I nomi dei campi `AgentDefinition` usano camelCase, come `disallowedTools`, `permissionMode` e `maxTurns`. Questi nomi si mappano direttamente al formato wire condiviso con TypeScript SDK. Questo differisce da `ClaudeAgentOptions`, che usa Python snake\_case per i campi di livello superiore equivalenti come `disallowed_tools` e `permission_mode`. Poiché `AgentDefinition` è una dataclass, passare una parola chiave snake\_case genera un `TypeError` al momento della costruzione.1232 I nomi dei campi di `AgentDefinition` usano camelCase, come `disallowedTools`, `permissionMode` e `maxTurns`. Questi nomi si mappano direttamente al formato wire condiviso con TypeScript SDK. Questo differisce da `ClaudeAgentOptions`, che usa lo snake\_case di Python per i campi di livello superiore equivalenti come `disallowed_tools` e `permission_mode`. Poiché `AgentDefinition` è una dataclass, passare una parola chiave snake\_case genera un `TypeError` al momento della costruzione.

1233</Note>1233</Note>

1234 1234 

1235<h3 id="permissionmode">1235<h3 id="permissionmode">

1236 `PermissionMode`1236 `PermissionMode`

1237</h3>1237</h3>

1238 1238 

1239Modalità di autorizzazione per controllare l'esecuzione dello strumento.1239Modalità di permesso per controllare l'esecuzione degli strumenti.

1240 1240 

1241```python theme={null}1241```python theme={null}

1242PermissionMode = Literal[1242PermissionMode = Literal[


1253 `EffortLevel`1253 `EffortLevel`

1254</h3>1254</h3>

1255 1255 

1256Livelli di sforzo per guidare la profondità del pensiero.1256Livelli di sforzo per guidare la profondità del ragionamento.

1257 1257 

1258```python theme={null}1258```python theme={null}

1259EffortLevel = Literal[1259EffortLevel = Literal[


1269 `CanUseTool`1269 `CanUseTool`

1270</h3>1270</h3>

1271 1271 

1272Alias di tipo per le funzioni di callback di autorizzazione dello strumento.1272Alias di tipo per le funzioni di callback dei permessi degli strumenti.

1273 1273 

1274```python theme={null}1274```python theme={null}

1275CanUseTool = Callable[1275CanUseTool = Callable[


1283* `input_data`: I parametri di input dello strumento1283* `input_data`: I parametri di input dello strumento

1284* `context`: Un `ToolPermissionContext` con informazioni aggiuntive1284* `context`: Un `ToolPermissionContext` con informazioni aggiuntive

1285 1285 

1286Restituisce un `PermissionResult` (sia `PermissionResultAllow` che `PermissionResultDeny`).1286Restituisce un `PermissionResult` (`PermissionResultAllow` oppure `PermissionResultDeny`).

1287 1287 

1288Il callback è il sostituto SDK per il prompt di autorizzazione interattivo: viene invocato solo quando il [flusso di valutazione delle autorizzazioni](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated) si risolve in un prompt. Le chiamate dello strumento già approvate da una voce `allowed_tools`, una regola di autorizzazione nelle impostazioni, o la modalità di autorizzazione, come `acceptEdits` o `bypassPermissions`, non lo invocano mai. Per controllare ogni chiamata dello strumento, usa un [hook `PreToolUse`](/docs/it/agent-sdk/hooks) invece.1288Il callback è il sostituto SDK della richiesta di permesso interattiva: viene invocato solo quando il [flusso di valutazione dei permessi](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated) si risolve in una richiesta di permesso. Le chiamate agli strumenti già approvate da una voce `allowed_tools`, da una regola di consenso nelle impostazioni, o dalla modalità di permesso, come `acceptEdits` o `bypassPermissions`, non lo invocano mai. Per controllare ogni chiamata a uno strumento, usa invece un [hook `PreToolUse`](/docs/it/agent-sdk/hooks).

1289 1289 

1290Una regola di autorizzazione non pre-approva le [azioni che nessuna modalità auto-approva](/docs/it/permission-modes#actions-no-mode-auto-approves); vedi [Come vengono valutate le autorizzazioni](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated) per quali di esse raggiungono il callback e cosa accade in modalità `dontAsk` e `auto`.1290Una regola di consenso non pre-approva le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves); vedi [Come vengono valutati i permessi](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated) per sapere quali di esse raggiungono il callback e cosa accade in modalità `dontAsk` e `auto`.

1291 1291 

1292<h3 id="toolpermissioncontext">1292<h3 id="toolpermissioncontext">

1293 `ToolPermissionContext`1293 `ToolPermissionContext`

1294</h3>1294</h3>

1295 1295 

1296Informazioni di contesto passate ai callback di autorizzazione dello strumento.1296Informazioni di contesto passate ai callback dei permessi degli strumenti.

1297 1297 

1298```python theme={null}1298```python theme={null}

1299@dataclass1299@dataclass


1312| Campo | Tipo | Descrizione |1312| Campo | Tipo | Descrizione |

1313| :- | :- | :- |1313| :- | :- | :- |

1314| `signal` | `Any \| None` | Riservato per il supporto futuro del segnale di interruzione |1314| `signal` | `Any \| None` | Riservato per il supporto futuro del segnale di interruzione |

1315| `suggestions` | `list[PermissionUpdate]` | Suggerimenti di aggiornamento delle autorizzazioni dalla CLI. I prompt Bash includono un suggerimento con la destinazione `localSettings`, quindi restituirlo in `updated_permissions` scrive la regola in `.claude/settings.local.json` e persiste tra le sessioni. |1315| `suggestions` | `list[PermissionUpdate]` | Suggerimenti di aggiornamento dei permessi dalla CLI. Le richieste di permesso di Bash includono un suggerimento con la destinazione `localSettings`, quindi restituirlo in `updated_permissions` scrive la regola in `.claude/settings.local.json` e persiste tra le sessioni. |

1316| `tool_use_id` | `str \| None` | Identificatore della chiamata dello strumento specifica per cui è questo prompt. Sempre popolato quando consegnato a `can_use_tool` |1316| `tool_use_id` | `str \| None` | Identificatore della specifica chiamata allo strumento a cui si riferisce questa richiesta. Sempre popolato quando consegnato a `can_use_tool` |

1317| `agent_id` | `str \| None` | ID del sub-agente quando la chiamata proviene da un subagente; `None` per l'agente principale |1317| `agent_id` | `str \| None` | ID del subagent quando la chiamata proviene da un subagent; `None` per l'agente principale |

1318| `blocked_path` | `str \| None` | Percorso del file che ha attivato la richiesta di autorizzazione, se applicabile. Ad esempio, quando un comando Bash tenta di accedere a un percorso al di fuori delle directory consentite |1318| `blocked_path` | `str \| None` | Percorso del file che ha attivato la richiesta di permesso, se applicabile. Ad esempio, quando un comando Bash tenta di accedere a un percorso al di fuori delle directory consentite |

1319| `decision_reason` | `str \| None` | Motivo per cui questa richiesta di autorizzazione è stata attivata. Inoltrato dal `permissionDecisionReason` di un hook PreToolUse quando l'hook ha restituito `"ask"` |1319| `decision_reason` | `str \| None` | Motivo per cui questa richiesta di permesso è stata attivata. Inoltrato dal `permissionDecisionReason` di un hook PreToolUse quando l'hook ha restituito `"ask"` |

1320| `title` | `str \| None` | Frase completa del prompt di autorizzazione, come `Claude wants to read foo.txt`. Usa come testo del prompt principale quando presente |1320| `title` | `str \| None` | Frase completa della richiesta di permesso, come `Claude wants to read foo.txt`. Usala come testo principale della richiesta quando presente |

1321| `display_name` | `str \| None` | Breve frase nominale per l'azione dello strumento, come `Read file`, adatta per etichette di pulsanti |1321| `display_name` | `str \| None` | Breve frase nominale per l'azione dello strumento, come `Read file`, adatta per etichette di pulsanti |

1322| `description` | `str \| None` | Sottotitolo leggibile per l'interfaccia utente di autorizzazione |1322| `description` | `str \| None` | Sottotitolo leggibile per l'interfaccia utente dei permessi |

1323 1323 

1324<h3 id="permissionresult">1324<h3 id="permissionresult">

1325 `PermissionResult`1325 `PermissionResult`

1326</h3>1326</h3>

1327 1327 

1328Tipo di unione per i risultati del callback di autorizzazione.1328Tipo di unione per i risultati del callback dei permessi.

1329 1329 

1330```python theme={null}1330```python theme={null}

1331PermissionResult = PermissionResultAllow | PermissionResultDeny1331PermissionResult = PermissionResultAllow | PermissionResultDeny


1335 `PermissionResultAllow`1335 `PermissionResultAllow`

1336</h3>1336</h3>

1337 1337 

1338Risultato che indica che la chiamata dello strumento deve essere consentita.1338Risultato che indica che la chiamata allo strumento deve essere consentita.

1339 1339 

1340```python theme={null}1340```python theme={null}

1341@dataclass1341@dataclass


1349| :- | :- | :- | :- |1349| :- | :- | :- | :- |

1350| `behavior` | `Literal["allow"]` | `"allow"` | Deve essere "allow" |1350| `behavior` | `Literal["allow"]` | `"allow"` | Deve essere "allow" |

1351| `updated_input` | `dict[str, Any] \| None` | `None` | Input modificato da utilizzare al posto dell'originale |1351| `updated_input` | `dict[str, Any] \| None` | `None` | Input modificato da utilizzare al posto dell'originale |

1352| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Aggiornamenti delle autorizzazioni da applicare |1352| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Aggiornamenti dei permessi da applicare |

1353 1353 

1354<h3 id="permissionresultdeny">1354<h3 id="permissionresultdeny">

1355 `PermissionResultDeny`1355 `PermissionResultDeny`

1356</h3>1356</h3>

1357 1357 

1358Risultato che indica che la chiamata dello strumento deve essere negata.1358Risultato che indica che la chiamata allo strumento deve essere negata.

1359 1359 

1360```python theme={null}1360```python theme={null}

1361@dataclass1361@dataclass


1375 `PermissionUpdate`1375 `PermissionUpdate`

1376</h3>1376</h3>

1377 1377 

1378Configurazione per l'aggiornamento delle autorizzazioni a livello di programmazione.1378Configurazione per l'aggiornamento dei permessi a livello di programmazione.

1379 1379 

1380```python theme={null}1380```python theme={null}

1381@dataclass1381@dataclass


1399 1399 

1400| Campo | Tipo | Descrizione |1400| Campo | Tipo | Descrizione |

1401| :- | :- | :- |1401| :- | :- | :- |

1402| `type` | `Literal[...]` | Il tipo di operazione di aggiornamento delle autorizzazioni |1402| `type` | `Literal[...]` | Il tipo di operazione di aggiornamento dei permessi |

1403| `rules` | `list[PermissionRuleValue] \| None` | Regole per le operazioni add/replace/remove |1403| `rules` | `list[PermissionRuleValue] \| None` | Regole per le operazioni add/replace/remove |

1404| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Comportamento per le operazioni basate su regole |1404| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Comportamento per le operazioni basate su regole |

1405| `mode` | `PermissionMode \| None` | Modalità per l'operazione setMode |1405| `mode` | `PermissionMode \| None` | Modalità per l'operazione setMode |

1406| `directories` | `list[str] \| None` | Directory per le operazioni add/remove directory |1406| `directories` | `list[str] \| None` | Directory per le operazioni add/remove directory |

1407| `destination` | `Literal[...] \| None` | Dove applicare l'aggiornamento delle autorizzazioni |1407| `destination` | `Literal[...] \| None` | Dove applicare l'aggiornamento dei permessi |

1408 1408 

1409<h3 id="permissionrulevalue">1409<h3 id="permissionrulevalue">

1410 `PermissionRuleValue`1410 `PermissionRuleValue`

1411</h3>1411</h3>

1412 1412 

1413Una regola da aggiungere, sostituire o rimuovere in un aggiornamento delle autorizzazioni.1413Una regola da aggiungere, sostituire o rimuovere in un aggiornamento dei permessi.

1414 1414 

1415```python theme={null}1415```python theme={null}

1416@dataclass1416@dataclass


1435 `ThinkingConfig`1435 `ThinkingConfig`

1436</h3>1436</h3>

1437 1437 

1438Controlla il comportamento del pensiero esteso. Un'unione di tre configurazioni:1438Controlla il comportamento del ragionamento esteso. Un'unione di tre configurazioni:

1439 1439 

1440```python theme={null}1440```python theme={null}

1441ThinkingDisplay = Literal["summarized", "omitted"]1441ThinkingDisplay = Literal["summarized", "omitted"]


1461 1461 

1462| Variante | Campi | Descrizione |1462| Variante | Campi | Descrizione |

1463| :- | :- | :- |1463| :- | :- | :- |

1464| `adaptive` | `type`, `display` | Claude decide adattivamente quando pensare |1464| `adaptive` | `type`, `display` | Claude decide in modo adattivo quando ragionare |

1465| `enabled` | `type`, `budget_tokens`, `display` | Abilita il pensiero con un budget di token specifico |1465| `enabled` | `type`, `budget_tokens`, `display` | Abilita il ragionamento con un budget di token specifico |

1466| `disabled` | `type` | Disabilita il pensiero |1466| `disabled` | `type` | Disabilita il ragionamento |

1467 1467 

1468Il campo opzionale `display` controlla se il testo di pensiero viene restituito `"summarized"` o `"omitted"`. Su Claude Opus 4.7 e versioni successive, l'impostazione predefinita dell'API è `"omitted"`, quindi imposta `"summarized"` per ricevere il contenuto di pensiero negli output [`ThinkingBlock`](#thinkingblock). Claude Code non invia `display` ad Amazon Bedrock o alla piattaforma agente di Google Cloud, quindi su quei provider Opus 4.7 e versioni successive restituiscono output `ThinkingBlock` vuoti anche quando imposti `display` a `"summarized"`.1468Il campo opzionale `display` controlla se il testo del ragionamento viene restituito `"summarized"` o `"omitted"`. Su Claude Opus 4.7 e versioni successive, l'impostazione predefinita dell'API è `"omitted"`, quindi imposta `"summarized"` per ricevere il contenuto del ragionamento negli output [`ThinkingBlock`](#thinkingblock). Claude Code omette `display` dalle richieste verso alcuni provider, come Amazon Bedrock e l'Agent Platform di Google Cloud. Su quei provider, Opus 4.7 e versioni successive restituiscono output `ThinkingBlock` vuoti anche quando imposti `display` a `"summarized"`.

1469 1469 

1470Poiché queste sono classi `TypedDict`, sono dicts semplici in fase di esecuzione. Costruiscile come letterali dict o chiama la classe come costruttore; entrambi producono un `dict`. Accedi ai campi con `config["budget_tokens"]`, non `config.budget_tokens`:1470Poiché queste sono classi `TypedDict`, sono dict semplici in fase di esecuzione. Costruiscile come letterali dict o chiama la classe come un costruttore; entrambi producono un `dict`. Accedi ai campi con `config["budget_tokens"]`, non `config.budget_tokens`:

1471 1471 

1472```python theme={null}1472```python theme={null}

1473from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled1473from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled


1577 `McpServerStatusConfig`1577 `McpServerStatusConfig`

1578</h3>1578</h3>

1579 1579 

1580La configurazione di un server MCP come riportato da [`get_mcp_status()`](#methods). Questa è l'unione di tutte le varianti di trasporto [`McpServerConfig`](#mcpserverconfig) più una variante di output-only `claudeai-proxy` per i server proxy attraverso claude.ai.1580La configurazione di un server MCP come riportata da [`get_mcp_status()`](#methods). Questa è l'unione di tutte le varianti di trasporto di [`McpServerConfig`](#mcpserverconfig) più una variante di solo output `claudeai-proxy` per i server instradati tramite proxy attraverso claude.ai.

1581 1581 

1582```python theme={null}1582```python theme={null}

1583McpServerStatusConfig = (1583McpServerStatusConfig = (


1589)1589)

1590```1590```

1591 1591 

1592`McpSdkServerConfigStatus` è la forma serializzabile di [`McpSdkServerConfig`](#mcpsdkserverconfig) con solo i campi `type` (`"sdk"`) e `name` (`str`); l'`instance` in-process viene omesso. `McpClaudeAIProxyServerConfig` ha i campi `type` (`"claudeai-proxy"`), `url` (`str`), e `id` (`str`).1592`McpSdkServerConfigStatus` è la forma serializzabile di [`McpSdkServerConfig`](#mcpsdkserverconfig) con solo i campi `type` (`"sdk"`) e `name` (`str`); l'`instance` in-process viene omessa. `McpClaudeAIProxyServerConfig` ha i campi `type` (`"claudeai-proxy"`), `url` (`str`), e `id` (`str`).

1593 1593 

1594<h3 id="mcpstatusresponse">1594<h3 id="mcpstatusresponse">

1595 `McpStatusResponse`1595 `McpStatusResponse`

1596</h3>1596</h3>

1597 1597 

1598Risposta da [`ClaudeSDKClient.get_mcp_status()`](#methods). Avvolge l'elenco degli stati del server sotto la chiave `mcpServers`.1598Risposta da [`ClaudeSDKClient.get_mcp_status()`](#methods). Racchiude l'elenco degli stati dei server sotto la chiave `mcpServers`.

1599 1599 

1600```python theme={null}1600```python theme={null}

1601class McpStatusResponse(TypedDict):1601class McpStatusResponse(TypedDict):


1622| Campo | Tipo | Descrizione |1622| Campo | Tipo | Descrizione |

1623| :- | :- | :- |1623| :- | :- | :- |

1624| `name` | `str` | Nome del server |1624| `name` | `str` | Nome del server |

1625| `status` | `str` | Uno di `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, o `"disabled"` |1625| `status` | `str` | Uno tra `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, o `"disabled"` |

1626| `serverInfo` | `dict` (opzionale) | Nome e versione del server (`{"name": str, "version": str}`) |1626| `serverInfo` | `dict` (opzionale) | Nome e versione del server (`{"name": str, "version": str}`) |

1627| `error` | `str` (opzionale) | Messaggio di errore se il server non si è connesso |1627| `error` | `str` (opzionale) | Messaggio di errore se il server non si è connesso |

1628| `config` | [`McpServerStatusConfig`](#mcpserverstatusconfig) (opzionale) | Configurazione del server. Stessa forma di [`McpServerConfig`](#mcpserverconfig) (stdio, SSE, HTTP, o SDK), più una variante `claudeai-proxy` per i server connessi tramite claude.ai |1628| `config` | [`McpServerStatusConfig`](#mcpserverstatusconfig) (opzionale) | Configurazione del server. Stessa forma di [`McpServerConfig`](#mcpserverconfig) (stdio, SSE, HTTP, o SDK), più una variante `claudeai-proxy` per i server connessi tramite claude.ai |


1633 `ContextUsageResponse`1633 `ContextUsageResponse`

1634</h3>1634</h3>

1635 1635 

1636Risposta da [`ClaudeSDKClient.get_context_usage()`](#methods). Questo è lo stesso payload che Claude Code renderizza per il comando `/context` in una sessione interattiva, quindi insieme ai conteggi dei token contiene campi di visualizzazione come `color` e `gridRows` che Claude Code utilizza per disegnare la griglia di utilizzo `/context`.1636Risposta da [`ClaudeSDKClient.get_context_usage()`](#methods). Questo è lo stesso payload che Claude Code visualizza per il comando `/context` in una sessione interattiva, quindi insieme ai conteggi dei token contiene campi di visualizzazione come `color` e `gridRows` che Claude Code utilizza per disegnare la griglia di utilizzo di `/context`.

1637 1637 

1638Claude Code costruisce questo payload inviando diverse richieste all'API di [token-counting](https://platform.claude.com/docs/en/build-with-claude/token-counting). Queste richieste non appaiono nel flusso di messaggi, quindi il tracciamento dei costi che legge il flusso non le vedrà. Sull'API Anthropic, il conteggio dei token non viene fatturato.1638Claude Code costruisce questo payload inviando diverse richieste all'API di [token-counting](https://platform.claude.com/docs/en/build-with-claude/token-counting). Queste richieste non appaiono nel flusso di messaggi, quindi il tracciamento dei costi che legge il flusso non le vedrà. Sull'API Anthropic, il conteggio dei token non viene fatturato.

1639 1639 


1660 apiUsage: NotRequired[dict[str, Any] | None]1660 apiUsage: NotRequired[dict[str, Any] | None]

1661```1661```

1662 1662 

1663Ogni voce `ContextUsageCategory` contiene `name`, `tokens`, `color` e un flag opzionale `isDeferred`. `totalTokens` è l'utilizzo del contesto corrente della sessione, e `maxTokens` è la finestra rispetto alla quale viene misurato l'utilizzo. Quella finestra è la finestra di contesto del modello, o la finestra di auto-compattazione inferiore quando se ne applica una, e `rawMaxTokens` contiene lo stesso valore di `maxTokens`. `apiUsage` contiene l'utilizzo dalla risposta API più recente, non un totale in esecuzione per la sessione. Claude Code lascia i campi opzionali `deferredBuiltinTools`, `systemTools` e `systemPromptSections` non impostati, quindi aspettati che siano assenti anche se il tipo li dichiara.1663Ogni voce `ContextUsageCategory` contiene `name`, `tokens`, `color` e un flag opzionale `isDeferred`. `totalTokens` è l'utilizzo del contesto corrente della sessione, e `maxTokens` è la finestra rispetto alla quale viene misurato l'utilizzo. Quella finestra è la finestra di contesto del modello, o la finestra di compattazione automatica inferiore quando se ne applica una, e `rawMaxTokens` contiene lo stesso valore di `maxTokens`. `apiUsage` contiene l'utilizzo dalla risposta API più recente, non un totale progressivo per la sessione. Claude Code lascia non impostate le chiavi opzionali `deferredBuiltinTools`, `systemTools` e `systemPromptSections`, quindi aspettati che siano assenti anche se il tipo le dichiara.

1664 1664 

1665<h3 id="sdkpluginconfig">1665<h3 id="sdkpluginconfig">

1666 `SdkPluginConfig`1666 `SdkPluginConfig`


1738 1738 

1739L'SDK passa `tool_use_result` attraverso dalla CLI senza modifiche. Per uno strumento su un server MCP esterno il cui risultato contiene blocchi `resource_link`, il dict ha una chiave `resourceLinks` che contiene un elenco di dict con le chiavi del tipo TypeScript [`SDKMcpResourceLink`](/docs/it/agent-sdk/typescript#sdkmcpresourcelink). Claude riceve ogni link come una riga di testo nel risultato dello strumento. Per renderizzare i file restituiti dal server, leggi `resourceLinks` invece di analizzare quel testo. La chiave `resourceLinks` richiede Python Agent SDK 0.2.150 o successivo e Claude Code v2.1.257 o successivo; la CLI fornita con quella versione dell'SDK soddisfa il requisito di Claude Code.1739L'SDK passa `tool_use_result` attraverso dalla CLI senza modifiche. Per uno strumento su un server MCP esterno il cui risultato contiene blocchi `resource_link`, il dict ha una chiave `resourceLinks` che contiene un elenco di dict con le chiavi del tipo TypeScript [`SDKMcpResourceLink`](/docs/it/agent-sdk/typescript#sdkmcpresourcelink). Claude riceve ogni link come una riga di testo nel risultato dello strumento. Per renderizzare i file restituiti dal server, leggi `resourceLinks` invece di analizzare quel testo. La chiave `resourceLinks` richiede Python Agent SDK 0.2.150 o successivo e Claude Code v2.1.257 o successivo; la CLI fornita con quella versione dell'SDK soddisfa il requisito di Claude Code.

1740 1740 

1741La CLI omette la chiave quando il risultato non ha link e sui risultati dei subagenti. La CLI mantiene al massimo 50 link per risultato e smette di aggiungere link una volta che l'elenco raggiunge 64 KiB di JSON serializzato. Uno strumento che definisci in-process con [`tool()`](#tool) non produce mai la chiave, perché l'SDK appiattisce i suoi blocchi `resource_link` a testo prima che la CLI veda il risultato.1741La CLI omette la chiave quando il risultato non ha link e sui risultati dei subagent. La CLI mantiene al massimo 50 link per risultato e smette di aggiungere link una volta che l'elenco raggiunge 64 KiB di JSON serializzato. Uno strumento che definisci in-process con [`tool()`](#tool) non produce mai la chiave, perché l'SDK appiattisce i suoi blocchi `resource_link` a testo prima che la CLI veda il risultato.

1742 1742 

1743<h3 id="assistantmessage">1743<h3 id="assistantmessage">

1744 `AssistantMessage`1744 `AssistantMessage`


1847* `terminal_reason`: perché il ciclo di query è terminato, come `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, o `"aborted_tools"`. Un valore di `"aborted_streaming"` o `"aborted_tools"` significa che il turno è stato interrotto prima del completamento. Le cause comuni sono [`interrupt()`](#claudesdkclient) e un callback di permesso che restituisce [`PermissionResultDeny`](#permissionresultdeny) con `interrupt=True`. `None` su versioni CLI che precedono il campo, su risultati da comandi locali come `/voice` o `/usage`, che bypassano il ciclo di query, o su risultati di errore sintetizzati emessi quando la sessione fallisce fatalmente. Rispecchia il [`SDKResultMessage.terminal_reason`](/docs/it/agent-sdk/typescript#sdkresultmessage) dell'SDK TypeScript, che elenca l'insieme completo di valori.1847* `terminal_reason`: perché il ciclo di query è terminato, come `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, o `"aborted_tools"`. Un valore di `"aborted_streaming"` o `"aborted_tools"` significa che il turno è stato interrotto prima del completamento. Le cause comuni sono [`interrupt()`](#claudesdkclient) e un callback di permesso che restituisce [`PermissionResultDeny`](#permissionresultdeny) con `interrupt=True`. `None` su versioni CLI che precedono il campo, su risultati da comandi locali come `/voice` o `/usage`, che bypassano il ciclo di query, o su risultati di errore sintetizzati emessi quando la sessione fallisce fatalmente. Rispecchia il [`SDKResultMessage.terminal_reason`](/docs/it/agent-sdk/typescript#sdkresultmessage) dell'SDK TypeScript, che elenca l'insieme completo di valori.

1848* `origin`: origine del messaggio utente che ha attivato questo turno. In [modalità input streaming](/docs/it/agent-sdk/streaming-vs-single-mode), controlla questo per distinguere il risultato del tuo prompt, dove `origin` è `None` o `{"kind": "human"}`, dal risultato di un turno iniettato come una notifica di attività in background. Richiede Python Agent SDK 0.2.137 o successivo.1848* `origin`: origine del messaggio utente che ha attivato questo turno. In [modalità input streaming](/docs/it/agent-sdk/streaming-vs-single-mode), controlla questo per distinguere il risultato del tuo prompt, dove `origin` è `None` o `{"kind": "human"}`, dal risultato di un turno iniettato come una notifica di attività in background. Richiede Python Agent SDK 0.2.137 o successivo.

1849 1849 

1850Il dict `usage` copre solo il ciclo dell'agente principale ed esclude i subagenti e altre chiamate di modello nidificate o ausiliarie. In [modalità input streaming](/docs/it/agent-sdk/streaming-vs-single-mode), i valori sono per turno. Preferisci `model_usage` per la contabilità dei token e dei costi. Il dict `usage` contiene le seguenti chiavi quando presenti:1850Il dict `usage` copre solo il ciclo dell'agente principale ed esclude i subagent e altre chiamate di modello nidificate o ausiliarie. In [modalità input streaming](/docs/it/agent-sdk/streaming-vs-single-mode), i valori sono per turno. Preferisci `model_usage` per la contabilità dei token e dei costi. Il dict `usage` contiene le seguenti chiavi quando presenti:

1851 1851 

1852| Chiave | Tipo | Descrizione |1852| Chiave | Tipo | Descrizione |

1853| - | - | - |1853| - | - | - |

1854| `input_tokens` | `int` | Token di input consumati dal ciclo dell'agente di livello superiore. [I token dei subagenti non sono inclusi](/docs/it/agent-sdk/cost-tracking#get-the-total-cost-of-a-query); usa `model_usage` per la contabilità dell'intero albero. |1854| `input_tokens` | `int` | Token di input consumati dal ciclo dell'agente di livello superiore. [I token dei subagent non sono inclusi](/docs/it/agent-sdk/cost-tracking#get-the-total-cost-of-a-query); usa `model_usage` per la contabilità dell'intero albero. |

1855| `output_tokens` | `int` | Token di output generati dal ciclo dell'agente di livello superiore. I token dei subagenti non sono inclusi. |1855| `output_tokens` | `int` | Token di output generati dal ciclo dell'agente di livello superiore. I token dei subagent non sono inclusi. |

1856| `cache_creation_input_tokens` | `int` | Token utilizzati per creare nuove voci di cache. |1856| `cache_creation_input_tokens` | `int` | Token utilizzati per creare nuove voci di cache. |

1857| `cache_read_input_tokens` | `int` | Token letti dalle voci di cache esistenti. |1857| `cache_read_input_tokens` | `int` | Token letti dalle voci di cache esistenti. |

1858 1858 

1859Il dict `model_usage` mappa i nomi dei modelli all'utilizzo per modello. Copre ogni chiamata di modello effettuata attraverso la pipeline di query: il ciclo principale, i subagenti e le chiamate interne come la compattazione e gli agenti Workflow. Le chiamate helper al di fuori di quella pipeline, come il classificatore di permessi e le richieste di conteggio dei token, sono escluse da `model_usage`. Tratta `model_usage` come una stima, non come un estratto conto di fatturazione.1859Il dict `model_usage` mappa i nomi dei modelli all'utilizzo per modello. Copre ogni chiamata di modello effettuata attraverso la pipeline di query: il ciclo principale, i subagent e le chiamate interne come la compattazione e gli agenti Workflow. Le chiamate helper al di fuori di quella pipeline, come il classificatore di permessi e le richieste di conteggio dei token, sono escluse da `model_usage`. Tratta `model_usage` come una stima, non come un estratto conto di fatturazione.

1860 1860 

1861In [modalità input streaming](/docs/it/agent-sdk/streaming-vs-single-mode), `model_usage` e `total_cost_usd` sono cumulativi tra i turni, quindi leggi il risultato più recente piuttosto che sommare tra i risultati. Una chiamata che riprende una sessione conta anche i [totali ripristinati dalle chiamate precedenti della sessione](/docs/it/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Vedi [Traccia i costi in modalità input streaming](/docs/it/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) per i ripristini e [Recupera i totali dopo un crash della sessione](/docs/it/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) per i risultati azzerati.1861In [modalità input streaming](/docs/it/agent-sdk/streaming-vs-single-mode), `model_usage` e `total_cost_usd` sono cumulativi tra i turni, quindi leggi il risultato più recente piuttosto che sommare tra i risultati. Una chiamata che riprende una sessione conta anche i [totali ripristinati dalle chiamate precedenti della sessione](/docs/it/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Vedi [Traccia i costi in modalità input streaming](/docs/it/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) per i ripristini e [Recupera i totali dopo un crash della sessione](/docs/it/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) per i risultati azzerati.

1862 1862 


1869| `cacheReadInputTokens` | `int` | Token di lettura della cache per questo modello. |1869| `cacheReadInputTokens` | `int` | Token di lettura della cache per questo modello. |

1870| `cacheCreationInputTokens` | `int` | Token di creazione della cache per questo modello. |1870| `cacheCreationInputTokens` | `int` | Token di creazione della cache per questo modello. |

1871| `webSearchRequests` | `int` | Richieste di ricerca web effettuate da questo modello. |1871| `webSearchRequests` | `int` | Richieste di ricerca web effettuate da questo modello. |

1872| `thinkingTokens` | `int` | Token di thinking generati da questo modello, già contati in `outputTokens`. Assenti fino a quando un turno non viene eseguito su una versione di Claude Code che lo registra, e non dichiarati sul TypedDict, quindi leggilo con `.get()`. Richiede Python Agent SDK 0.2.150 o successivo, il cui CLI fornito lo registra. |1872| `thinkingTokens` | `int` | Token di ragionamento generati da questo modello, già contati in `outputTokens`. Assenti fino a quando un turno non viene eseguito su una versione di Claude Code che lo registra, e non dichiarati sul TypedDict, quindi leggilo con `.get()`. Richiede Python Agent SDK 0.2.150 o successivo, il cui CLI fornito lo registra. |

1873| `costUSD` | `float` | Costo stimato in USD per questo modello, calcolato lato client. Vedi [Traccia costo e utilizzo](/docs/it/agent-sdk/cost-tracking) per avvertenze di fatturazione. |1873| `costUSD` | `float` | Costo stimato in USD per questo modello, calcolato lato client. Vedi [Traccia costo e utilizzo](/docs/it/agent-sdk/cost-tracking) per avvertenze di fatturazione. |

1874| `contextWindow` | `int` | Dimensione della finestra di contesto per questo modello. |1874| `contextWindow` | `int` | Dimensione della finestra di contesto per questo modello. |

1875| `maxOutputTokens` | `int` | Limite massimo di token di output per questo modello. |1875| `maxOutputTokens` | `int` | Limite massimo di token di output per questo modello. |

1876| `canonicalModel` | `str` | ID del modello canonico utilizzato per la ricerca dei prezzi. Può differire dalla stringa del modello grezzo per cui la voce è codificata, come un ID specifico del provider o un alias. Non sempre presente. |1876| `canonicalModel` | `str` | ID del modello canonico utilizzato per la ricerca dei prezzi. Può differire dalla stringa del modello grezzo per cui la voce è codificata, come un ID specifico del provider o un alias. Non sempre presente. |

1877| `provider` | `str` | Provider API che ha servito questo modello, come `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, o `gateway`. Non sempre presente. |1877| `provider` | `str` | Provider API che ha servito questo modello, come `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, o `gateway`. Non sempre presente. |

1878| `costBasis` | `str` | Tabella dei prezzi usata per calcolare il prezzo dell'ultima richiesta di questo modello: `list` per il prezzo di listino, `managed` per una tabella [`modelPricing`](/docs/it/settings-reference#modelpricing), o `unknown` quando nessuna delle due corrispondeva all'ID del modello. Non sempre presente, e non dichiarato sul TypedDict, quindi leggilo con `.get()`. Richiede Claude Code v2.1.246 o successivo. |

1878 1879 

1879<h3 id="streamevent">1880<h3 id="streamevent">

1880 `StreamEvent`1881 `StreamEvent`


1896| `uuid` | `str` | Identificatore univoco per questo evento |1897| `uuid` | `str` | Identificatore univoco per questo evento |

1897| `session_id` | `str` | Identificatore di sessione |1898| `session_id` | `str` | Identificatore di sessione |

1898| `event` | `dict[str, Any]` | I dati dell'evento di flusso dell'API Claude grezzo |1899| `event` | `dict[str, Any]` | I dati dell'evento di flusso dell'API Claude grezzo |

1899| `parent_tool_use_id` | `str \| None` | Sempre `None`. Gli eventi di flusso vengono emessi solo per la sessione principale. Per l'attribuzione dei subagenti, utilizza messaggi completi come [`AssistantMessage`](#assistantmessage) |1900| `parent_tool_use_id` | `str \| None` | Sempre `None`. Gli eventi di flusso vengono emessi solo per la sessione principale. Per l'attribuzione dei subagent, utilizza messaggi completi come [`AssistantMessage`](#assistantmessage) |

1900 1901 

1901<h3 id="ratelimitevent">1902<h3 id="ratelimitevent">

1902 `RateLimitEvent`1903 `RateLimitEvent`

1903</h3>1904</h3>

1904 1905 

1905Emesso quando lo stato del limite di velocità cambia (ad esempio, da `"allowed"` a `"allowed_warning"`). Usalo per avvertire gli utenti prima che raggiungano un limite rigido, o per fare backoff quando lo stato è `"rejected"`.1906Emesso quando lo stato del rate limit cambia (ad esempio, da `"allowed"` a `"allowed_warning"`). Usalo per avvertire gli utenti prima che raggiungano un limite rigido, o per fare backoff quando lo stato è `"rejected"`.

1906 1907 

1907```python theme={null}1908```python theme={null}

1908@dataclass1909@dataclass


1914 1915 

1915| Campo | Tipo | Descrizione |1916| Campo | Tipo | Descrizione |

1916| :- | :- | :- |1917| :- | :- | :- |

1917| `rate_limit_info` | [`RateLimitInfo`](#ratelimitinfo) | Stato del limite di velocità corrente |1918| `rate_limit_info` | [`RateLimitInfo`](#ratelimitinfo) | Stato corrente del rate limit |

1918| `uuid` | `str` | Identificatore di evento univoco |1919| `uuid` | `str` | Identificatore di evento univoco |

1919| `session_id` | `str` | Identificatore di sessione |1920| `session_id` | `str` | Identificatore di sessione |

1920 1921 


1922 `RateLimitInfo`1923 `RateLimitInfo`

1923</h3>1924</h3>

1924 1925 

1925Stato del limite di velocità trasportato da [`RateLimitEvent`](#ratelimitevent).1926Stato del rate limit trasportato da [`RateLimitEvent`](#ratelimitevent).

1926 1927 

1927```python theme={null}1928```python theme={null}

1928RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]1929RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]


1946| Campo | Tipo | Descrizione |1947| Campo | Tipo | Descrizione |

1947| :- | :- | :- |1948| :- | :- | :- |

1948| `status` | `RateLimitStatus` | Stato corrente, uno di `"allowed"`, `"allowed_warning"`, o `"rejected"`. `"allowed_warning"` significa avvicinarsi al limite; `"rejected"` significa che il limite è stato raggiunto |1949| `status` | `RateLimitStatus` | Stato corrente, uno di `"allowed"`, `"allowed_warning"`, o `"rejected"`. `"allowed_warning"` significa avvicinarsi al limite; `"rejected"` significa che il limite è stato raggiunto |

1949| `resets_at` | `int \| None` | Timestamp Unix quando la finestra del limite di velocità si ripristina |1950| `resets_at` | `int \| None` | Timestamp Unix quando la finestra del rate limit si ripristina |

1950| `rate_limit_type` | `RateLimitType \| None` | Quale finestra del limite di velocità si applica |1951| `rate_limit_type` | `RateLimitType \| None` | Quale finestra del rate limit si applica |

1951| `utilization` | `float \| None` | Frazione del limite di velocità consumato (0.0 a 1.0) |1952| `utilization` | `float \| None` | Frazione del rate limit consumata (0.0 a 1.0) |

1952| `overage_status` | `RateLimitStatus \| None` | Stato dell'utilizzo di overage pay-as-you-go, se applicabile |1953| `overage_status` | `RateLimitStatus \| None` | Stato dell'utilizzo di overage pay-as-you-go, se applicabile |

1953| `overage_resets_at` | `int \| None` | Timestamp Unix quando la finestra di overage si ripristina |1954| `overage_resets_at` | `int \| None` | Timestamp Unix quando la finestra di overage si ripristina |

1954| `overage_disabled_reason` | `str \| None` | Perché l'overage non è disponibile, se lo stato è `"rejected"` |1955| `overage_disabled_reason` | `str \| None` | Perché l'overage non è disponibile, se lo stato è `"rejected"` |


1978 `TaskStartedMessage`1979 `TaskStartedMessage`

1979</h3>1980</h3>

1980 1981 

1981Emesso quando un'attività in background inizia. Un'attività in background è qualsiasi cosa tracciata al di fuori del turno principale: un comando Bash in background, un watch [Monitor](#monitor), un subagente generato tramite lo strumento Agent, o un agente remoto. Il campo `task_type` ti dice quale. Questo nome non è correlato al rinomina dello strumento `Task`-to-`Agent`.1982Emesso quando un'attività in background inizia. Un'attività in background è qualsiasi cosa tracciata al di fuori del turno principale: un comando Bash in background, un watch [Monitor](#monitor), un subagent generato tramite lo strumento Agent, o un agente remoto. Il campo `task_type` ti dice quale. Questo nome non è correlato alla rinomina dello strumento da `Task` ad `Agent`.

1982 1983 

1983```python theme={null}1984```python theme={null}

1984@dataclass1985@dataclass


2045 `TaskNotificationMessage`2046 `TaskNotificationMessage`

2046</h3>2047</h3>

2047 2048 

2048Emesso quando un'attività in background si completa, fallisce o viene interrotta. Le attività in background includono comandi Bash `run_in_background`, watch Monitor e subagenti in background.2049Emesso quando un'attività in background si completa, fallisce o viene interrotta. Le attività in background includono comandi Bash `run_in_background`, watch Monitor e subagent in background.

2049 2050 

2050```python theme={null}2051```python theme={null}

2051@dataclass2052@dataclass


2071| `tool_use_id` | `str \| None` | ID di utilizzo dello strumento associato |2072| `tool_use_id` | `str \| None` | ID di utilizzo dello strumento associato |

2072| `usage` | `TaskUsage \| None` | Utilizzo dei token finale per l'attività |2073| `usage` | `TaskUsage \| None` | Utilizzo dei token finale per l'attività |

2073 2074 

2074Quando la CLI [sposta una lunga chiamata di strumento MCP in background](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls), il risultato dello strumento per quella chiamata contiene solo un placeholder e il risultato reale della chiamata arriva in questo messaggio. Su una notifica `"completed"` per tale chiamata, la CLI aggiunge una chiave `resource_links` che elenca i file restituiti dallo strumento per riferimento, con le stesse voci e limiti della chiave `resourceLinks` su [`UserMessage.tool_use_result`](#usermessage). La chiave `resource_links` richiede Python Agent SDK 0.2.150 o successivo e Claude Code v2.1.257 o successivo; la CLI fornita con quella versione dell'SDK soddisfa il requisito di Claude Code.2075Quando la CLI [sposta una lunga chiamata a uno strumento MCP in background](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls), il risultato dello strumento per quella chiamata contiene solo un placeholder e il risultato reale della chiamata arriva in questo messaggio. Su una notifica `"completed"` per tale chiamata, la CLI aggiunge una chiave `resource_links` che elenca i file restituiti dallo strumento per riferimento, con le stesse voci e limiti della chiave `resourceLinks` su [`UserMessage.tool_use_result`](#usermessage). La chiave `resource_links` richiede Python Agent SDK 0.2.150 o successivo e Claude Code v2.1.257 o successivo; la CLI fornita con quella versione dell'SDK soddisfa il requisito di Claude Code.

2075 2076 

2076La dataclass non ha un campo per `resource_links`. Leggilo dal dict `data` che il messaggio eredita da [`SystemMessage`](#systemmessage): `message.data.get("resource_links")`. Abbina la notifica alla chiamata con `tool_use_id`. La CLI omette la chiave quando il risultato non aveva link e su notifiche per attività che non sono chiamate di strumento MCP.2077La dataclass non ha un campo per `resource_links`. Leggilo dal dict `data` che il messaggio eredita da [`SystemMessage`](#systemmessage): `message.data.get("resource_links")`. Abbina la notifica alla chiamata con `tool_use_id`. La CLI omette la chiave quando il risultato non aveva link e su notifiche per attività che non sono chiamate a strumenti MCP.

2077 2078 

2078<h2 id="content-block-types">2079<h2 id="content-block-types">

2079 Tipi di blocco di contenuto2080 Tipi di blocco di contenuto


2153 Tipi di errore2154 Tipi di errore

2154</h2>2155</h2>

2155 2156 

2156I tipi di seguito definiscono cosa il vostro codice cattura. Per le voci associate ai messaggi di errore che questi tipi generano, con la causa e la correzione per ciascuno, consultate [Troubleshooting](/docs/it/agent-sdk/troubleshooting).2157I tipi di seguito definiscono cosa il tuo codice cattura. Per le voci associate ai messaggi di errore che questi tipi generano, con la causa e la correzione per ciascuno, consulta [Risoluzione dei problemi](/docs/it/agent-sdk/troubleshooting).

2157 2158 

2158<h3 id="claudesdkerror">2159<h3 id="claudesdkerror">

2159 `ClaudeSDKError`2160 `ClaudeSDKError`


2166 """Base error for Claude SDK."""2167 """Base error for Claude SDK."""

2167```2168```

2168 2169 

2169Quando una singola `query()` termina con un risultato di errore, ad esempio un errore di limite di turni, l'SDK genera un [`ResultError`](#resulterror) dopo aver restituito il messaggio di risultato finale. Le versioni di Python Agent SDK precedenti alla 0.2.140 generavano una semplice `Exception` che non era una sottoclasse di `ClaudeSDKError`.2170Quando una singola `query()` termina con un risultato di errore, ad esempio un errore di limite di turni, l'SDK genera un [`ResultError`](#resulterror).

2170 2171 

2171<h3 id="clinotfounderror">2172<h3 id="clinotfounderror">

2172 `CLINotFoundError`2173 `CLINotFoundError`


2216 `ResultError`2217 `ResultError`

2217</h3>2218</h3>

2218 2219 

2219Generato dopo il [`ResultMessage`](#resultmessage) finale quando il processo Claude Code esce perché l'esecuzione è terminata con un risultato di errore, come un errore di limite di turni o un errore API. `ResultError` è una sottoclasse di `ProcessError`, quindi un gestore `except ProcessError` esistente lo cattura anche. I suoi attributi contengono i campi di quel messaggio di risultato, quindi potete distinguere il motivo del fallimento dell'esecuzione senza analizzare il testo del messaggio. Richiede Python Agent SDK 0.2.140 o successivo.2220Generato quando il processo Claude Code esce perché l'esecuzione è terminata con un [messaggio di risultato](#resultmessage) di errore, come un errore di limite di turni o un errore API. `ResultError` è una sottoclasse di `ProcessError`, quindi un gestore `except ProcessError` esistente lo cattura anche. I suoi attributi contengono i campi di quel messaggio di risultato, quindi puoi distinguere il motivo del fallimento dell'esecuzione senza analizzare il testo del messaggio. Richiede Python Agent SDK 0.2.140 o successivo.

2220 2221 

2221```python theme={null}2222```python theme={null}

2222class ResultError(ProcessError):2223class ResultError(ProcessError):

2223 subtype: str | None # "error_max_turns", "error_during_execution", ...; "success" quando l'esecuzione è terminata su una richiesta non riuscita2224 subtype: str | None # "error_max_turns", "error_during_execution", ...; "success" when the run ended on a failed request

2224 errors: list[str] # un elenco vuoto quando il messaggio di risultato non ne ha segnalati2225 errors: list[str] # an empty list when the result message reported none

2225 result: str | None2226 result: str | None

2226 api_error_status: int | None2227 api_error_status: int | None

2227 terminal_reason: str | None # "max_turns", "api_error", ...; controllate questo prima di subtype2228 terminal_reason: str | None # "max_turns", "api_error", ...; check this before subtype

2228 session_id: str | None2229 session_id: str | None

2229 data: dict[str, Any] # il payload del messaggio di risultato grezzo2230 data: dict[str, Any] # the raw result message payload

2230```2231```

2231 2232 

2232Per distinguere i fallimenti, controllate `terminal_reason` prima di `subtype`. Quando la richiesta finale fallisce, ad esempio su un errore API, Claude Code segnala `subtype` `"success"` con la causa in `terminal_reason`, ad esempio `"api_error"`; quando un limite che avete impostato termina l'esecuzione, come `max_turns` o `max_budget_usd`, segnala un `subtype` di tipo `error_*`.2233Per distinguere i fallimenti, controlla `terminal_reason` prima di `subtype`. Quando la richiesta finale fallisce, ad esempio su un errore API, Claude Code segnala `subtype` `"success"` con la causa in `terminal_reason`, ad esempio `"api_error"`; quando un limite che hai impostato termina l'esecuzione, come `max_turns` o `max_budget_usd`, segnala un `subtype` di tipo `error_*`.

2233 2234 

2234<h3 id="clijsondecodeerror">2235<h3 id="clijsondecodeerror">

2235 `CLIJSONDecodeError`2236 `CLIJSONDecodeError`


2253 Tipi di Hook2254 Tipi di Hook

2254</h2>2255</h2>

2255 2256 

2256Per una guida completa sull'utilizzo degli hooks con esempi e modelli comuni, vedi la [guida Hooks](/docs/it/agent-sdk/hooks).2257Per una guida completa sull'utilizzo degli hook con esempi e modelli comuni, vedi la [guida Hooks](/docs/it/agent-sdk/hooks).

2257 2258 

2258<h3 id="hookevent">2259<h3 id="hookevent">

2259 `HookEvent`2260 `HookEvent`


2368| Campo | Tipo | Descrizione |2369| Campo | Tipo | Descrizione |

2369| :- | :- | :- |2370| :- | :- | :- |

2370| `session_id` | `str` | Identificatore di sessione corrente |2371| `session_id` | `str` | Identificatore di sessione corrente |

2371| `transcript_path` | `str` | Percorso al file di trascritto della sessione |2372| `transcript_path` | `str` | Percorso al file di trascrizione della sessione |

2372| `cwd` | `str` | Directory di lavoro corrente |2373| `cwd` | `str` | Directory di lavoro corrente |

2373| `permission_mode` | `str` (opzionale) | Modalità di autorizzazione corrente |2374| `permission_mode` | `str` (opzionale) | Modalità di permesso corrente |

2374 2375 

2375<h3 id="pretoolusehookinput">2376<h3 id="pretoolusehookinput">

2376 `PreToolUseHookInput`2377 `PreToolUseHookInput`


2394| `tool_name` | `str` | Nome dello strumento che sta per essere eseguito |2395| `tool_name` | `str` | Nome dello strumento che sta per essere eseguito |

2395| `tool_input` | `dict[str, Any]` | Parametri di input per lo strumento |2396| `tool_input` | `dict[str, Any]` | Parametri di input per lo strumento |

2396| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |2397| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |

2397| `agent_id` | `str` (opzionale) | Identificatore del subagente, presente quando l'hook si attiva all'interno di un subagente |2398| `agent_id` | `str` (opzionale) | Identificatore del subagent, presente quando l'hook si attiva all'interno di un subagent |

2398| `agent_type` | `str` (opzionale) | Tipo di subagente, presente quando l'hook si attiva all'interno di un subagente |2399| `agent_type` | `str` (opzionale) | Tipo di subagent, presente quando l'hook si attiva all'interno di un subagent |

2399 2400 

2400<h3 id="posttoolusehookinput">2401<h3 id="posttoolusehookinput">

2401 `PostToolUseHookInput`2402 `PostToolUseHookInput`


2421| `tool_input` | `dict[str, Any]` | Parametri di input che sono stati utilizzati |2422| `tool_input` | `dict[str, Any]` | Parametri di input che sono stati utilizzati |

2422| `tool_response` | `Any` | Risposta dall'esecuzione dello strumento |2423| `tool_response` | `Any` | Risposta dall'esecuzione dello strumento |

2423| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |2424| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |

2424| `agent_id` | `str` (opzionale) | Identificatore del subagente, presente quando l'hook si attiva all'interno di un subagente |2425| `agent_id` | `str` (opzionale) | Identificatore del subagent, presente quando l'hook si attiva all'interno di un subagent |

2425| `agent_type` | `str` (opzionale) | Tipo di subagente, presente quando l'hook si attiva all'interno di un subagente |2426| `agent_type` | `str` (opzionale) | Tipo di subagent, presente quando l'hook si attiva all'interno di un subagent |

2426 2427 

2427<h3 id="posttoolusefailurehookinput">2428<h3 id="posttoolusefailurehookinput">

2428 `PostToolUseFailureHookInput`2429 `PostToolUseFailureHookInput`


2450| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |2451| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |

2451| `error` | `str` | Messaggio di errore dall'esecuzione fallita |2452| `error` | `str` | Messaggio di errore dall'esecuzione fallita |

2452| `is_interrupt` | `bool` (opzionale) | True quando il fallimento è arrivato a Claude Code come un'interruzione piuttosto che come un errore segnalato dallo strumento. L'annullamento di uno strumento in esecuzione con `interrupt()` non attiva questo hook; il risultato dello strumento contiene il messaggio di interruzione |2453| `is_interrupt` | `bool` (opzionale) | True quando il fallimento è arrivato a Claude Code come un'interruzione piuttosto che come un errore segnalato dallo strumento. L'annullamento di uno strumento in esecuzione con `interrupt()` non attiva questo hook; il risultato dello strumento contiene il messaggio di interruzione |

2453| `agent_id` | `str` (opzionale) | Identificatore del subagente, presente quando l'hook si attiva all'interno di un subagente |2454| `agent_id` | `str` (opzionale) | Identificatore del subagent, presente quando l'hook si attiva all'interno di un subagent |

2454| `agent_type` | `str` (opzionale) | Tipo di subagente, presente quando l'hook si attiva all'interno di un subagente |2455| `agent_type` | `str` (opzionale) | Tipo di subagent, presente quando l'hook si attiva all'interno di un subagent |

2455 2456 

2456<h3 id="userpromptsubmithookinput">2457<h3 id="userpromptsubmithookinput">

2457 `UserPromptSubmitHookInput`2458 `UserPromptSubmitHookInput`


2506| :- | :- | :- |2507| :- | :- | :- |

2507| `hook_event_name` | `Literal["SubagentStop"]` | Sempre "SubagentStop" |2508| `hook_event_name` | `Literal["SubagentStop"]` | Sempre "SubagentStop" |

2508| `stop_hook_active` | `bool` | Se l'hook di arresto è attivo |2509| `stop_hook_active` | `bool` | Se l'hook di arresto è attivo |

2509| `agent_id` | `str` | Identificatore univoco per il subagente |2510| `agent_id` | `str` | Identificatore univoco per il subagent |

2510| `agent_transcript_path` | `str` | Percorso al file di trascritto del subagente |2511| `agent_transcript_path` | `str` | Percorso al file di trascrizione del subagent |

2511| `agent_type` | `str` | Tipo del subagente |2512| `agent_type` | `str` | Tipo del subagent |

2512 2513 

2513<h3 id="precompacthookinput">2514<h3 id="precompacthookinput">

2514 `PreCompactHookInput`2515 `PreCompactHookInput`


2566| Campo | Tipo | Descrizione |2567| Campo | Tipo | Descrizione |

2567| :- | :- | :- |2568| :- | :- | :- |

2568| `hook_event_name` | `Literal["SubagentStart"]` | Sempre "SubagentStart" |2569| `hook_event_name` | `Literal["SubagentStart"]` | Sempre "SubagentStart" |

2569| `agent_id` | `str` | Identificatore univoco per il subagente |2570| `agent_id` | `str` | Identificatore univoco per il subagent |

2570| `agent_type` | `str` | Tipo del subagente |2571| `agent_type` | `str` | Tipo del subagent |

2571 2572 

2572<h3 id="permissionrequesthookinput">2573<h3 id="permissionrequesthookinput">

2573 `PermissionRequestHookInput`2574 `PermissionRequestHookInput`

2574</h3>2575</h3>

2575 2576 

2576Dati di input per gli eventi hook `PermissionRequest`. Consente agli hook di gestire le decisioni di autorizzazione a livello di programmazione.2577Dati di input per gli eventi hook `PermissionRequest`. Consente agli hook di gestire le decisioni di permesso a livello di programmazione.

2577 2578 

2578```python theme={null}2579```python theme={null}

2579class PermissionRequestHookInput(BaseHookInput):2580class PermissionRequestHookInput(BaseHookInput):


2588| Campo | Tipo | Descrizione |2589| Campo | Tipo | Descrizione |

2589| :- | :- | :- |2590| :- | :- | :- |

2590| `hook_event_name` | `Literal["PermissionRequest"]` | Sempre "PermissionRequest" |2591| `hook_event_name` | `Literal["PermissionRequest"]` | Sempre "PermissionRequest" |

2591| `tool_name` | `str` | Nome dello strumento che richiede l'autorizzazione |2592| `tool_name` | `str` | Nome dello strumento che richiede il permesso |

2592| `tool_input` | `dict[str, Any]` | Parametri di input per lo strumento |2593| `tool_input` | `dict[str, Any]` | Parametri di input per lo strumento |

2593| `permission_suggestions` | `list[Any]` (opzionale) | Aggiornamenti di autorizzazione suggeriti dalla CLI |2594| `permission_suggestions` | `list[Any]` (opzionale) | Aggiornamenti dei permessi suggeriti dalla CLI |

2594| `agent_id` | `str` (opzionale) | Identificatore del subagente, presente quando l'hook si attiva all'interno di un subagente |2595| `agent_id` | `str` (opzionale) | Identificatore del subagent, presente quando l'hook si attiva all'interno di un subagent |

2595| `agent_type` | `str` (opzionale) | Tipo di subagente, presente quando l'hook si attiva all'interno di un subagente |2596| `agent_type` | `str` (opzionale) | Tipo di subagent, presente quando l'hook si attiva all'interno di un subagent |

2596 2597 

2597<h3 id="hookjsonoutput">2598<h3 id="hookjsonoutput">

2598 `HookJSONOutput`2599 `HookJSONOutput`


2634 `HookSpecificOutput`2635 `HookSpecificOutput`

2635</h4>2636</h4>

2636 2637 

2637Un'unione discriminata di tipi di output specifici dell'evento `TypedDict`. Il campo `hookEventName` determina quali campi sono validi. Per i dettagli completi sui campi disponibili per evento hook, vedi [Controlla l'esecuzione con gli hooks](/docs/it/agent-sdk/hooks#outputs).2638Un'unione discriminata di tipi di output specifici dell'evento `TypedDict`. Il campo `hookEventName` determina quali campi sono validi. Per i dettagli completi sui campi disponibili per evento hook, vedi [Controlla l'esecuzione con gli hook](/docs/it/agent-sdk/hooks#outputs).

2638 2639 

2639```python theme={null}2640```python theme={null}

2640class PreToolUseHookSpecificOutput(TypedDict):2641class PreToolUseHookSpecificOutput(TypedDict):


2649 hookEventName: Literal["PostToolUse"]2650 hookEventName: Literal["PostToolUse"]

2650 additionalContext: NotRequired[str]2651 additionalContext: NotRequired[str]

2651 updatedToolOutput: NotRequired[Any]2652 updatedToolOutput: NotRequired[Any]

2652 updatedMCPToolOutput: NotRequired[Any] # Deprecated: use updatedToolOutput, which works for all tools2653 updatedMCPToolOutput: NotRequired[Any] # MCP tools only. Prefer updatedToolOutput, which works for all tools

2653 2654 

2654 2655 

2655class PostToolUseFailureHookSpecificOutput(TypedDict):2656class PostToolUseFailureHookSpecificOutput(TypedDict):


2708 Esempio di utilizzo di Hook2709 Esempio di utilizzo di Hook

2709</h3>2710</h3>

2710 2711 

2711Questo esempio registra due hook: uno che blocca i comandi bash pericolosi come `rm -rf /`, e un altro che registra tutto l'utilizzo dello strumento per il controllo. L'hook di sicurezza viene eseguito solo sui comandi Bash (tramite il `matcher`), mentre l'hook di registrazione viene eseguito su tutti gli strumenti.2712Questo esempio registra due hook: uno che blocca i comandi Bash pericolosi come `rm -rf /`, e un altro che registra nei log tutto l'utilizzo degli strumenti per il controllo. L'hook di sicurezza viene eseguito solo sui comandi Bash (tramite il `matcher`), mentre l'hook di logging viene eseguito su tutti gli strumenti.

2712 2713 

2713```python theme={null}2714```python theme={null}

2714import asyncio2715import asyncio


2767 Tipi di input/output dello strumento2768 Tipi di input/output dello strumento

2768</h2>2769</h2>

2769 2770 

2770Documentazione degli schemi di input/output per tutti gli strumenti Claude Code integrati. Mentre Python SDK non esporta questi come tipi, rappresentano la struttura degli input e output dello strumento nei messaggi.2771Documentazione degli schemi di input/output per gli strumenti Claude Code integrati. Mentre Python SDK non esporta questi come tipi, rappresentano la struttura degli input e output dello strumento nei messaggi.

2771 2772 

2772Ogni output mostrato è il valore che leggete da [`UserMessage.tool_use_result`](#usermessage) per quello strumento. I nomi delle chiavi appaiono esattamente come Claude Code li emette. Una chiave annotata `| None` con un commento "presente quando" o "opzionale" viene omessa quando non si applica.2773Ogni output mostrato è il valore che leggi da [`UserMessage.tool_use_result`](#usermessage) per quello strumento. I nomi delle chiavi appaiono esattamente come Claude Code li emette. Una chiave annotata `| None` con un commento "presente quando" o "opzionale" viene omessa quando non si applica.

2773 2774 

2774<h3 id="agent">2775<h3 id="agent">

2775 Agent2776 Agent


2788 "run_in_background": bool | None, # Gli agenti vengono eseguiti in background per impostazione predefinita; impostare su False per eseguire in modo sincrono2789 "run_in_background": bool | None, # Gli agenti vengono eseguiti in background per impostazione predefinita; impostare su False per eseguire in modo sincrono

2789 "name": str | None, # Nome per l'agente generato2790 "name": str | None, # Nome per l'agente generato

2790 "team_name": str | None, # Deprecato; ignorato2791 "team_name": str | None, # Deprecato; ignorato

2791 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Deprecato; ignorato. Le regole di ereditarietà dei subagenti decidono la modalità di autorizzazione di un subagente2792 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Deprecato; ignorato. Le regole di ereditarietà dei subagent decidono la modalità di permesso di un subagent

2792 "isolation": "worktree" | "remote" | None, # Modalità di isolamento per le modifiche dell'agente2793 "isolation": "worktree" | "remote" | None, # Modalità di isolamento per le modifiche dell'agente

2793}2794}

2794```2795```


2873}2874}

2874```2875```

2875 2876 

2876Restituisce il risultato dal subagente. L'output è discriminato sul campo `status`: `"completed"` per compiti terminati, `"async_launched"` per compiti in background, e `"remote_launched"` per compiti che Claude Code ha inviato a una sessione cloud, dove `sessionUrl` si collega a quella sessione e `taskId` l'identifica. Se Claude Code [ha mantenuto il worktree isolato del subagente](/docs/it/worktrees#isolate-subagents-with-worktrees), `worktreePath` sulla variante `completed` è dove trovarlo, e `worktreeBranch` è il suo ramo quando Claude Code ha creato il worktree con git.2877Restituisce il risultato dal subagent. L'output è discriminato sul campo `status`: `"completed"` per compiti terminati, `"async_launched"` per compiti in background, e `"remote_launched"` per compiti che Claude Code ha inviato a una sessione cloud, dove `sessionUrl` si collega a quella sessione e `taskId` l'identifica. Se Claude Code [ha mantenuto il worktree isolato del subagent](/docs/it/worktrees#isolate-subagents-with-worktrees), `worktreePath` sulla variante `completed` è dove trovarlo, e `worktreeBranch` è il suo branch quando Claude Code ha creato il worktree con git.

2877 2878 

2878Sulla variante `completed`, `resolvedModel` nomina il modello su cui il subagente ha iniziato, che può differire dal `model` input richiesto quando [`availableModels`](/docs/it/model-config#restrict-model-selection) o un altro override si applica. Questo campo richiede Claude Code v2.1.174 o successivo. Sulla variante `async_launched`, `resolvedModel` nomina il modello in uso quando l'agente si è spostato in background, quindi uno scambio che è accaduto prima del backgrounding si riflette lì. Il campo `modelsUsed` su entrambe le varianti elenca i modelli utilizzati in ordine, con ripetizioni consecutive compresse; è impostato solo quando il modello è stato scambiato durante l'esecuzione. `modelsUsed` e il comportamento di `resolvedModel` al momento del backgrounding richiedono Claude Code v2.1.212 o successivo.2879Sulla variante `completed`, `resolvedModel` nomina il modello su cui il subagent ha iniziato, che può differire dal `model` input richiesto quando [`availableModels`](/docs/it/model-config#restrict-model-selection) o un altro override si applica. Questo campo richiede Claude Code v2.1.174 o successivo. Sulla variante `async_launched`, `resolvedModel` nomina il modello in uso quando l'agente si è spostato in background, quindi uno scambio che è accaduto prima del backgrounding si riflette lì. Il campo `modelsUsed` su entrambe le varianti elenca i modelli utilizzati in ordine, con ripetizioni consecutive compresse; è impostato solo quando il modello è stato scambiato durante l'esecuzione. `modelsUsed` e il comportamento di `resolvedModel` al momento del backgrounding richiedono Claude Code v2.1.212 o successivo.

2879 2880 

2880Claude Code riempie `usage` e `totalTokens` dalla richiesta API finale del subagent, non dall'intera esecuzione. Quando presente, `thinking_tokens` sotto `output_tokens_details` in `usage` è il numero di token di output di quella richiesta che erano token di ragionamento. La chiave `output_tokens_details` richiede Python SDK v0.2.136 o successivo, che raggruppa Claude Code v2.1.228. La chiave `fallback_credit` richiede Python SDK v0.2.162 o successivo, che raggruppa Claude Code v2.1.285.2881Claude Code riempie `usage` e `totalTokens` dalla richiesta API finale del subagent, non dall'intera esecuzione. Quando presente, `thinking_tokens` sotto `output_tokens_details` in `usage` è il numero di token di output di quella richiesta che erano token di ragionamento. La chiave `output_tokens_details` richiede Python SDK v0.2.136 o successivo, che raggruppa Claude Code v2.1.228. La chiave `fallback_credit` richiede Python SDK v0.2.162 o successivo, che raggruppa Claude Code v2.1.285.

2881 2882 


2906 }2907 }

2907 ],2908 ],

2908 "answers": dict[str, str] | None,2909 "answers": dict[str, str] | None,

2909 # Risposte dell'utente popolate dal sistema di autorizzazione. Le risposte2910 # Risposte dell'utente popolate dal sistema di permessi. Le risposte

2910 # multi-select sono una stringa unita da virgole delle etichette selezionate; un2911 # multi-select sono una stringa unita da virgole delle etichette selezionate; un

2911 # elenco di etichette è accettato su input e coercizzato in quella forma2912 # elenco di etichette è accettato su input e coercizzato in quella forma

2912 "annotations": dict[str, dict] | None,2913 "annotations": dict[str, dict] | None,


2933 # Le risposte multi-select sono separate da virgole2934 # Le risposte multi-select sono separate da virgole

2934 "response": str | None,2935 "response": str | None,

2935 # Risposta in testo libero digitata invece di rispondere alle domande; quando impostato,2936 # Risposta in testo libero digitata invece di rispondere alle domande; quando impostato,

2936 # Claude riceve "L'utente ha risposto: ..." al posto dell'elenco di risposte2937 # Claude riceve "The user responded: ..." al posto dell'elenco di risposte

2937 "annotations": dict[str, dict] | None, # "preview" e "notes" per domanda dalle selezioni dell'utente2938 "annotations": dict[str, dict] | None, # "preview" e "notes" per domanda dalle selezioni dell'utente

2938 "afkTimeoutMs": int | None, # Impostato quando la finestra di dialogo si è auto-risolta dopo questo numero di millisecondi di inattività dell'utente; assente quando l'utente ha risposto2939 "afkTimeoutMs": int | None, # Impostato quando la finestra di dialogo si è auto-risolta dopo questo numero di millisecondi di inattività dell'utente; assente quando l'utente ha risposto

2939}2940}


2976 2977 

2977**Nome dello strumento:** `Monitor`2978**Nome dello strumento:** `Monitor`

2978 2979 

2979Esegue una sorgente in background e fornisce ogni evento a Claude in modo che possa reagire senza polling: `command` esegue uno script e emette un evento per riga stdout, e `ws` apre un WebSocket ed emette un evento per frame di testo. Fornire esattamente uno tra `command` o `ws`.2980Esegue una sorgente in background e fornisce ogni evento a Claude in modo che possa reagire senza polling: `command` esegue uno script e emette un evento per riga stdout, e `ws` apre un WebSocket ed emette un evento per frame di testo. Fornisci esattamente uno tra `command` o `ws`.

2980 2981 

2981Quando Monitor esegue un comando, segue le stesse regole di autorizzazione di Bash; un monitoraggio WebSocket richiede l'approvazione separatamente. L'origine `ws` richiede Claude Code v2.1.195 o successivo. Vedi il [riferimento dello strumento Monitor](/docs/it/tools-reference#monitor-tool) per il comportamento e la disponibilità del provider.2982Quando Monitor esegue un comando, segue le stesse regole di permesso di Bash; un monitoraggio WebSocket richiede l'approvazione separatamente. L'origine `ws` richiede Claude Code v2.1.195 o successivo. Vedi il [riferimento dello strumento Monitor](/docs/it/tools-reference#monitor-tool) per il comportamento e la disponibilità del provider.

2982 2983 

2983**Input:**2984**Input:**

2984 2985 


3065}3066}

3066```3067```

3067 3068 

3068L'output assume una delle seguenti forme a seconda di ciò che Claude ha letto. Controllare la chiave `type` per distinguerle.3069L'output assume una delle seguenti forme a seconda di ciò che Claude ha letto. Controlla la chiave `type` per distinguerle.

3069 3070 

3070**Output (type: `"text"`):**3071**Output (type: `"text"`):**

3071 3072 


3150 "file": {3151 "file": {

3151 "filePath": str,3152 "filePath": str,

3152 },3153 },

3153 "source": "seeded" | None, # Presente quando la copia precedente proveniva da un file CLAUDE.md o memory caricato all'avvio piuttosto che da una chiamata Read3154 "source": "seeded" | None, # Presente quando la copia precedente proveniva da un file CLAUDE.md o di memoria caricato all'avvio piuttosto che da una chiamata Read

3154}3155}

3155```3156```

3156 3157 


3544 TaskOutput3545 TaskOutput

3545</h3>3546</h3>

3546 3547 

3547Rimosso in Claude Code v2.1.277. In precedenza recuperava l'output da un'attività in background o completata in esecuzione, con `BashOutput` accettato come alias; Claude legge il file di output di un'attività in background con `Read` invece.3548Rimosso in Claude Code v2.1.277. In precedenza recuperava l'output da un'attività in background in esecuzione o completata, con `BashOutput` accettato come alias; Claude legge invece il file di output di un'attività in background con `Read`.

3548 3549 

3549Una voce `disallowed_tools` o una regola di negazione che ancora nomina uno dei due nomi viene ignorata senza un avviso.3550Una voce `disallowed_tools` o una regola di negazione che ancora nomina uno dei due nomi viene ignorata senza un avviso.

3550 3551 


3584 3585 

3585```python theme={null}3586```python theme={null}

3586{3587{

3587 "plan": str # Il piano da eseguire dall'utente per l'approvazione3588 "plan": str # Il piano da sottoporre all'utente per l'approvazione

3588}3589}

3589```3590```

3590 3591 


3593```python theme={null}3594```python theme={null}

3594{3595{

3595 "plan": str | None, # Il piano che è stato presentato all'utente3596 "plan": str | None, # Il piano che è stato presentato all'utente

3596 "isAgent": bool, # True quando un subagente ha chiamato lo strumento3597 "isAgent": bool, # True quando un subagent ha chiamato lo strumento

3597 "filePath": str | None, # Presente quando il piano è stato salvato in un file3598 "filePath": str | None, # Presente quando il piano è stato salvato in un file

3598 "hasTaskTool": bool | None, # Opzionale; se lo strumento Agent è disponibile nel contesto corrente3599 "hasTaskTool": bool | None, # Opzionale; se lo strumento Agent è disponibile nel contesto corrente

3599 "planWasEdited": bool | None, # Presente e True quando l'utente ha modificato il piano prima di approvarlo3600 "planWasEdited": bool | None, # Presente e True quando l'utente ha modificato il piano prima di approvarlo

Details

60 60 

61Per utilizzare gli output strutturati, definire uno [JSON Schema](https://json-schema.org/understanding-json-schema/about) che descriva la forma dei dati desiderati, quindi passarlo a `query()` tramite l'opzione `outputFormat` (TypeScript) o `output_format` (Python). Quando l'agente termina, il messaggio di risultato include un campo `structured_output` con dati convalidati corrispondenti allo schema.61Per utilizzare gli output strutturati, definire uno [JSON Schema](https://json-schema.org/understanding-json-schema/about) che descriva la forma dei dati desiderati, quindi passarlo a `query()` tramite l'opzione `outputFormat` (TypeScript) o `output_format` (Python). Quando l'agente termina, il messaggio di risultato include un campo `structured_output` con dati convalidati corrispondenti allo schema.

62 62 

63L'esempio seguente chiede all'agente di ricercare Anthropic e restituire il nome dell'azienda, l'anno di fondazione e la sede come output strutturato.63Prima di eseguire gli esempi in questa pagina, installa il Claude Agent SDK seguendo la [guida rapida](/docs/it/agent-sdk/quickstart#setup). L'esempio seguente chiede all'agente di ricercare Anthropic e restituire il nome dell'azienda, l'anno di fondazione e la sede come output strutturato.

64 64 

65<CodeGroup>65<CodeGroup>

66 ```typescript TypeScript theme={null}66 ```typescript TypeScript theme={null}


390 Gestione degli errori390 Gestione degli errori

391</h2>391</h2>

392 392 

393La generazione di output strutturati può non riuscire quando l'agente non può produrre JSON valido corrispondente allo schema. Questo accade in genere quando lo schema è troppo complesso per l'attività, l'attività stessa è ambigua o l'agente raggiunge il limite di tentativi cercando di correggere gli errori di convalida. Può anche accadere senza alcun errore di convalida: un [fallback del modello](/docs/it/model-config#automatic-model-fallback) può ritirare un output già completato a metà flusso, e se nessun nuovo tentativo lo sostituisce, l'esecuzione termina con lo stesso errore. Controllare l'elenco `errors` sul messaggio di risultato per distinguere le due cause prima di eseguire il debug dello schema.393La generazione di output strutturati può non riuscire quando l'agente non può produrre JSON valido corrispondente al tuo schema. Questo accade in genere quando lo schema è troppo complesso per l'attività, l'attività stessa è ambigua o l'agente raggiunge il limite di tentativi cercando di correggere gli errori di convalida. Può anche accadere senza alcun errore di convalida: un [fallback del modello](/docs/it/model-config#automatic-model-fallback) può ritirare un output già completato a metà flusso, e se nessun nuovo tentativo lo sostituisce, l'esecuzione termina con lo stesso errore. Controlla l'elenco `errors` sul messaggio di risultato per distinguere le due cause prima di eseguire il debug del tuo schema.

394 394 

395Quando si verifica un errore, il messaggio di risultato ha un `subtype` che indica cosa è andato storto:395Quando si verifica un errore, il messaggio di risultato ha un `subtype` che indica cosa è andato storto:

396 396 

Details

186 console.error("Claim failed:", error.message);186 console.error("Claim failed:", error.message);

187});187});

188 188 

189for await (const message of claimedQuery) {189try {

190 for await (const message of claimedQuery) {

190 console.log(message);191 console.log(message);

192 }

193} catch (error) {

194 // Dopo un claim rifiutato, la query rivendicata genera un'eccezione una volta prodotto il risultato di errore

195 console.error(`Session ended with an error: ${error}`);

191}196}

192```197```

193 198 


717| `accountInfo()` | Restituisce le informazioni dell'account |722| `accountInfo()` | Restituisce le informazioni dell'account |

718| `reconnectMcpServer(serverName)` | Ricollega un server MCP per nome. Se il nome corrisponde anche a una voce in un file di impostazioni come `.mcp.json` o `~/.claude.json`, Claude Code ricollega il server che hai configurato tramite [`mcpServers`](#options) o `setMcpServers()`, non la voce del file di impostazioni. Quell'ordine di risoluzione richiede Claude Code v2.1.257 o successivo |723| `reconnectMcpServer(serverName)` | Ricollega un server MCP per nome. Se il nome corrisponde anche a una voce in un file di impostazioni come `.mcp.json` o `~/.claude.json`, Claude Code ricollega il server che hai configurato tramite [`mcpServers`](#options) o `setMcpServers()`, non la voce del file di impostazioni. Quell'ordine di risoluzione richiede Claude Code v2.1.257 o successivo |

719| `toggleMcpServer(serverName, enabled)` | Abilita o disabilita un server MCP per nome, con la stessa risoluzione dei nomi di `reconnectMcpServer()`. Disabilitare un server lo disconnette e ne rimuove gli strumenti. Consulta [`toggleMcpServer()`](#togglemcpserver) per la versione di Claude Code necessaria per ciascun tipo di server |724| `toggleMcpServer(serverName, enabled)` | Abilita o disabilita un server MCP per nome, con la stessa risoluzione dei nomi di `reconnectMcpServer()`. Disabilitare un server lo disconnette e ne rimuove gli strumenti. Consulta [`toggleMcpServer()`](#togglemcpserver) per la versione di Claude Code necessaria per ciascun tipo di server |

720| `setMcpServers(servers)` | Sostituisci dinamicamente l'insieme dei server MCP per questa sessione. Si risolve con un [`McpSetServersResult`](#mcpsetserversresult) che nomina quali server sono stati aggiunti e rimossi, e eventuali errori |725| `setMcpServers(servers)` | Sostituisce i server MCP gestiti da questo metodo: i server aggiunti tramite esso e i [server SDK in-process](#createsdkmcpserver). Si risolve con un [`McpSetServersResult`](#mcpsetserversresult) che indica quali server sono stati aggiunti e rimossi, ed eventuali errori; quella sezione spiega quali altri server restano connessi |

721| `readMcpResource(serverName, uri)` | *Alpha.* Legge una risorsa MCP Apps `ui://` da un server MCP connesso in modo che la tua applicazione possa rendere il widget di uno strumento. Si risolve con un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Richiede TypeScript Agent SDK v0.3.280 o successivo |726| `readMcpResource(serverName, uri)` | *Alpha.* Legge una risorsa MCP Apps `ui://` da un server MCP connesso in modo che la tua applicazione possa rendere il widget di uno strumento. Si risolve con un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Richiede TypeScript Agent SDK v0.3.280 o successivo |

722| `streamInput(stream)` | Trasmetti i messaggi di input alla query per conversazioni multi-turno |727| `streamInput(stream)` | Trasmetti i messaggi di input alla query per conversazioni multi-turno |

723| `stopTask(taskId)` | Interrompi un'attività in background in esecuzione per ID |728| `stopTask(taskId)` | Interrompi un'attività in background in esecuzione per ID |


844 849 

845`options.cwd` è richiesto. Una rivendicazione può anche impostare `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, un overlay flag-settings in `settings`, `appendSystemPrompt`, `title`, `agents`, e token per-sessione in `env`.850`options.cwd` è richiesto. Una rivendicazione può anche impostare `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, un overlay flag-settings in `settings`, `appendSystemPrompt`, `title`, `agents`, e token per-sessione in `env`.

846 851 

847Claude Code può rifiutare una rivendicazione, ad esempio per una cartella che non esiste o una le cui impostazioni del progetto impostano `env`, `agent`, o `model`. Quando `claimed` rifiuta con un messaggio che inizia con `option_not_applied`, la sessione è in esecuzione senza il `model` o `maxThinkingTokens` che hai richiesto. Dopo qualsiasi altro rifiuto il tuo prompt non ha eseguito, quindi avvia la sessione con `query()` invece.852Claude Code può rifiutare una rivendicazione, ad esempio per una cartella che non esiste o per una le cui impostazioni di progetto impostano `env`, `agent` o `model`. Dopo un rifiuto, un prompt che `claim()` ha già inviato riceve un risultato di errore il cui testo inizia con `not_claimed`, e la query restituita genera quindi un'eccezione. Racchiudi il loop della query in un blocco try per proseguire oltre l'eccezione. Quando `claimed` viene rifiutata con un messaggio che inizia con `option_not_applied`, la sessione è in esecuzione senza il `model` o il `maxThinkingTokens` che hai richiesto. Dopo qualsiasi altro rifiuto il tuo prompt non è stato eseguito, quindi avvia invece la sessione con `query()`.

848 853 

849<h3 id="sdkcontrolinitializeresponse">854<h3 id="sdkcontrolinitializeresponse">

850 `SDKControlInitializeResponse`855 `SDKControlInitializeResponse`


1337| `mcpServer` | `{ name: string; source: string }` | Per uno strumento `mcp__*`, il server MCP che lo serve e da dove proviene la definizione di quel server, con i campi di [`McpServerProvenance`](#mcpserverprovenance). Assente per altri strumenti. Richiede Agent SDK v0.3.274 o successivo |1342| `mcpServer` | `{ name: string; source: string }` | Per uno strumento `mcp__*`, il server MCP che lo serve e da dove proviene la definizione di quel server, con i campi di [`McpServerProvenance`](#mcpserverprovenance). Assente per altri strumenti. Richiede Agent SDK v0.3.274 o successivo |

1338| `decisionReason` | `string` | Spiega perché questa richiesta di permesso è stata attivata |1343| `decisionReason` | `string` | Spiega perché questa richiesta di permesso è stata attivata |

1339| `defaultToNo` | `boolean` | Quando `true`, un singolo tasto errato non deve approvare questa richiesta: apri il tuo prompt sulla sua opzione di declino, non pre-selezionare approvazione, e non offrire alcuna scorciatoia di approvazione con un tasto. Richiede Agent SDK v0.3.268 o successivo |1344| `defaultToNo` | `boolean` | Quando `true`, un singolo tasto errato non deve approvare questa richiesta: apri il tuo prompt sulla sua opzione di declino, non pre-selezionare approvazione, e non offrire alcuna scorciatoia di approvazione con un tasto. Richiede Agent SDK v0.3.268 o successivo |

1340| `suppressAlwaysAllowRule` | `boolean` | Quando `true`, non offrire una scelta persistente sempre-consenti per questa richiesta, perché la regola che scriverebbe concede più dell'azione della richiesta stessa. Richiede Agent SDK v0.3.268 o successivo |1345| `suppressAlwaysAllowRule` | `boolean` | Quando è `true`, non offrire una scelta persistente "consenti sempre" per questa richiesta. Richiede Agent SDK v0.3.268 o successiva |

1341| `toolUseID` | `string` | Identificatore univoco per questa specifica chiamata dello strumento all'interno del messaggio dell'assistente |1346| `toolUseID` | `string` | Identificatore univoco per questa specifica chiamata dello strumento all'interno del messaggio dell'assistente |

1342| `agentID` | `string` | Se in esecuzione all'interno di un sub-agente, l'ID del sub-agente |1347| `agentID` | `string` | Se in esecuzione all'interno di un sub-agente, l'ID del sub-agente |

1343| `requestId` | `string` | L'`request_id` dell'envelope `control_request`. Un `control_response` che la tua applicazione invia al di fuori dell'SDK, come un POST HTTP firmato, deve echeggiare questo valore in modo che il processo Claude Code possa abbinare la risposta alla richiesta |1348| `requestId` | `string` | L'`request_id` dell'envelope `control_request`. Un `control_response` che la tua applicazione invia al di fuori dell'SDK, come un POST HTTP firmato, deve echeggiare questo valore in modo che il processo Claude Code possa abbinare la risposta alla richiesta |


3790};3795};

3791```3796```

3792 3797 

3793Segnala i risultati della revisione del codice come un elenco strutturato in modo che Claude Code possa renderli invece di stamparli come testo. `level` è il livello di sforzo con cui è stata eseguita la revisione. I risultati sono ordinati dal più grave al meno grave, con al massimo 32 per chiamata, e l'array è vuoto quando nessuno è sopravvissuto. Richiede Claude Code v2.1.196 o successivo.3798Segnala i risultati della code review come un elenco strutturato in modo che Claude Code possa renderli invece di stamparli come testo. I risultati sono ordinati dal più grave al meno grave, con al massimo 32 per chiamata, e l'array è vuoto quando nessuno è sopravvissuto. Richiede Claude Code v2.1.196 o successivo.

3799 

3800`level` è facoltativo e contiene il livello di sforzo che Claude riporta per la revisione. Claude Code non lo confronta con il livello con cui è stata eseguita la revisione, quindi i due possono differire.

3794 3801 

3795Ogni risultato contiene questi campi:3802Ogni risultato contiene questi campi:

3796 3803 


4840};4847};

4841```4848```

4842 4849 

4843Restituisce il numero di risultati segnalati, il livello di sforzo con cui la revisione è stata eseguita, e i risultati ripetuti per il corpo del risultato. Richiede Claude Code v2.1.196 o successivo. Il campo `short_summary` ripetuto richiede Claude Code v2.1.212 o successivo.4850Restituisce il numero di risultati segnalati, il valore `level` passato da Claude, e i risultati ripetuti per il corpo del risultato. Richiede Claude Code v2.1.196 o successivo. Il campo `short_summary` ripetuto richiede Claude Code v2.1.212 o successivo.

4844 4851 

4845<h3 id="artifact-2">4852<h3 id="artifact-2">

4846 Artifact4853 Artifact


5103 `ApiKeySource`5110 `ApiKeySource`

5104</h3>5111</h3>

5105 5112 

5106Da dove proviene la chiave API per le richieste della sessione, segnalata come `apiKeySource` nel messaggio di inizializzazione [`SDKSystemMessage`](#sdksystemmessage).5113La provenienza della chiave API usata per le richieste della sessione, riportata come `apiKeySource` nel messaggio init [`SDKSystemMessage`](#sdksystemmessage).

5107 5114 

5108```typescript theme={null}5115```typescript theme={null}

5109type ApiKeySource =5116type ApiKeySource =


5118 | "oauth";5125 | "oauth";

5119```5126```

5120 5127 

5121Claude Code segnala uno di quattro valori:5128Claude Code riporta uno di quattro valori:

5122 5129 

5123| Valore | Chiave in uso |5130| Valore | Chiave in uso |

5124| - | - |5131| - | - |

5125| `ANTHROPIC_API_KEY` | La chiave nella variabile d'ambiente `ANTHROPIC_API_KEY` |5132| `ANTHROPIC_API_KEY` | La chiave nella variabile d'ambiente `ANTHROPIC_API_KEY` |

5126| `apiKeyHelper` | La chiave restituita dal tuo comando [`apiKeyHelper`](/docs/it/settings-reference#apikeyhelper) |5133| `apiKeyHelper` | La chiave restituita dal tuo comando [`apiKeyHelper`](/docs/it/settings-reference#apikeyhelper) |

5127| `/login managed key` | La chiave che Claude Code ha memorizzato quando hai effettuato l'accesso con un [account Claude Console](/docs/it/authentication#claude-console-authentication) |5134| `/login managed key` | La chiave che Claude Code ha memorizzato quando hai effettuato l'accesso con un [account Claude Console](/docs/it/authentication#claude-console-authentication) |

5128| `none` | Nessuna chiave API. La sessione si autentica in un altro modo, ad esempio un accesso a claude.ai, un token bearer, o un provider cloud |5135| `none` | Nessuna chiave API. La sessione si autentica in un altro modo, ad esempio con un accesso a claude.ai, un bearer token o un provider cloud |

5129 5136 

5130Agent SDK v0.3.234 e versioni successive elencano questi quattro valori nel tipo. Il tipo mantiene anche `user`, `project`, `org`, `temporary` e `oauth` affinché il codice più vecchio continui a compilarsi, e Claude Code non li segnala.5137Agent SDK v0.3.234 e versioni successive elencano questi quattro valori nel tipo. Il tipo mantiene anche `user`, `project`, `org`, `temporary` e `oauth` affinché il codice meno recente continui a compilare, ma Claude Code non li riporta.

5131 5138 

5132<h3 id="sdkbeta">5139<h3 id="sdkbeta">

5133 `SdkBeta`5140 `SdkBeta`

5134</h3>5141</h3>

5135 5142 

5136Funzioni beta disponibili che possono essere abilitate tramite l'opzione `betas`. Vedi [Intestazioni beta](https://platform.claude.com/docs/en/api/beta-headers) per ulteriori informazioni.5143Funzionalità beta disponibili che possono essere abilitate tramite l'opzione `betas`. Per maggiori informazioni, consulta [Beta headers](https://platform.claude.com/docs/en/api/beta-headers).

5137 5144 

5138```typescript theme={null}5145```typescript theme={null}

5139type SdkBeta = "context-1m-2025-08-07";5146type SdkBeta = "context-1m-2025-08-07";

5140```5147```

5141 5148 

5142<Warning>5149<Warning>

5143 Sull'API Claude, la beta `context-1m-2025-08-07` è ritirata per Claude Sonnet 4.5 e Claude Sonnet 4. Se la passi ancora con uno dei due modelli, le richieste che superano la finestra di contesto standard di 200K token restituiscono un errore, quindi rimuovila da `betas`. Per eseguire una sessione con una finestra di contesto di 1M token, imposta `model` su un modello che [usa la finestra da 1M per impostazione predefinita](/docs/it/model-config#extended-context), come `claude-sonnet-5-5` o `claude-opus-5-5`. Per un modello che raggiunge 1M solo tramite la sua variante `[1m]`, aggiungi il suffisso all'ID del modello, come in `claude-opus-4-6[1m]`.5150 Sulla Claude API, la beta `context-1m-2025-08-07` è stata ritirata per Claude Sonnet 4.5 e Claude Sonnet 4. Se la passi ancora con uno di questi modelli, le richieste che superano la finestra di contesto standard di 200K token restituiscono un errore, quindi rimuovila da `betas`. Per eseguire una sessione con una finestra di contesto da 1M token, imposta `model` su un modello che [funziona con la finestra da 1M per impostazione predefinita](/docs/it/model-config#extended-context), come `claude-sonnet-5-5` o `claude-opus-5-5`. Per un modello che raggiunge 1M solo tramite la sua variante `[1m]`, aggiungi il suffisso all'ID del modello, come in `claude-opus-4-6[1m]`.

5144</Warning>5151</Warning>

5145 5152 

5146<h3 id="slashcommand">5153<h3 id="slashcommand">


5159};5166};

5160```5167```

5161 5168 

5162`builtin` è `true` su una riga quando il comando è proprio di Claude Code e digitare `/name` lo esegue. È assente per un comando definito da un utente, progetto, plugin, o server MCP, e per un comando in bundle che uno di quelli [sostituisce per nome](/docs/it/skills#resolve-skills-that-share-a-name). Richiede Agent SDK v0.3.277 o successivo.5169`builtin` è `true` su una riga quando il comando è proprio di Claude Code e digitare `/name` lo esegue. È assente per un comando definito da un utente, un progetto, un plugin o un server MCP, e per un comando incluso che uno di questi [sostituisce per nome](/docs/it/skills#resolve-skills-that-share-a-name). Richiede Agent SDK v0.3.277 o versioni successive.

5163 5170 

5164<h3 id="modelinfo">5171<h3 id="modelinfo">

5165 `ModelInfo`5172 `ModelInfo`


5184| Campo | Tipo | Descrizione |5191| Campo | Tipo | Descrizione |

5185| :- | :- | :- |5192| :- | :- | :- |

5186| `value` | `string` | Identificatore del modello da passare nelle chiamate API |5193| `value` | `string` | Identificatore del modello da passare nelle chiamate API |

5187| `resolvedModel` | `string \| undefined` | L'ID del modello a cui si risolve il `value` di questa voce, come `claude-sonnet-5-5` per la voce dell'alias `sonnet`. Richiede Claude Code v2.1.197 o successivo. |5194| `resolvedModel` | `string \| undefined` | L'ID del modello a cui si risolve il `value` di questa voce, ad esempio `claude-sonnet-5-5` per la voce dell'alias `sonnet`. Richiede Claude Code v2.1.197 o versioni successive. |

5188| `displayName` | `string` | Nome di visualizzazione leggibile dall'uomo |5195| `displayName` | `string` | Nome visualizzato leggibile |

5189| `description` | `string` | Descrizione delle capacità del modello |5196| `description` | `string` | Descrizione delle capacità del modello |

5190| `supportsEffort` | `boolean \| undefined` | Se questo modello supporta i livelli di sforzo |5197| `supportsEffort` | `boolean \| undefined` | Se questo modello supporta i livelli di sforzo |

5191| `supportedEffortLevels` | `("low" \| "medium" \| "high" \| "xhigh" \| "max")[] \| undefined` | Livelli di sforzo che questo modello accetta |5198| `supportedEffortLevels` | `("low" \| "medium" \| "high" \| "xhigh" \| "max")[] \| undefined` | Livelli di sforzo accettati da questo modello |

5192| `supportsAdaptiveThinking` | `boolean \| undefined` | Se questo modello supporta il ragionamento adattivo, dove Claude decide quando e quanto ragionare |5199| `supportsAdaptiveThinking` | `boolean \| undefined` | Se questo modello supporta il ragionamento adattivo, in cui Claude decide quando e quanto ragionare |

5193| `supportsFastMode` | `boolean \| undefined` | Se questo modello supporta la modalità veloce |5200| `supportsFastMode` | `boolean \| undefined` | Se questo modello supporta la modalità veloce |

5194| `supportsAutoMode` | `boolean \| undefined` | Se questo modello supporta la modalità auto |5201| `supportsAutoMode` | `boolean \| undefined` | Se questo modello supporta la modalità auto |

5195 5202 


5211| :- | :- | :- |5218| :- | :- | :- |

5212| `name` | `string` | Identificatore del tipo di agente (ad esempio, `"Explore"`, `"general-purpose"`) |5219| `name` | `string` | Identificatore del tipo di agente (ad esempio, `"Explore"`, `"general-purpose"`) |

5213| `description` | `string` | Descrizione di quando usare questo agente |5220| `description` | `string` | Descrizione di quando usare questo agente |

5214| `model` | `string \| undefined` | Modello che questo agente usa: un alias o un ID di modello, o `'inherit'` per il modello del genitore. Quando è `undefined`, Claude Code sceglie il modello nell'[ordine del modello del subagent](/docs/it/sub-agents#choose-a-model) |5221| `model` | `string \| undefined` | Modello usato da questo agente: un alias o un ID di modello, oppure `'inherit'` per il modello del genitore. Quando è `undefined`, Claude Code sceglie il modello secondo l'[ordine dei modelli dei subagent](/docs/it/sub-agents#choose-a-model) |

5215 5222 

5216<h3 id="mcpserverprovenance">5223<h3 id="mcpserverprovenance">

5217 `McpServerProvenance`5224 `McpServerProvenance`

5218</h3>5225</h3>

5219 5226 

5220Il server MCP che serve uno strumento `mcp__*`, e da dove proviene la definizione di quel server. Gli input degli hook [`PreToolUse`](#pretoolusehookinput), `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied` lo portano come `mcp_server`, e le opzioni [`CanUseTool`](#canusetool) lo portano come `mcpServer`. Entrambi lo omettono per gli strumenti che non provengono da un server MCP.5227Il server MCP che fornisce uno strumento `mcp__*` e la provenienza della definizione di quel server. Gli input degli hook [`PreToolUse`](#pretoolusehookinput), `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied` lo riportano come `mcp_server`, e le opzioni di [`CanUseTool`](#canusetool) lo riportano come `mcpServer`. Entrambi lo omettono per gli strumenti che non provengono da un server MCP.

5221 5228 

5222```typescript theme={null}5229```typescript theme={null}

5223type McpServerProvenance = {5230type McpServerProvenance = {


5228 5235 

5229| Campo | Tipo | Descrizione |5236| Campo | Tipo | Descrizione |

5230| :- | :- | :- |5237| :- | :- | :- |

5231| `name` | `string` | Il nome con cui il server è registrato, lo stesso valore che [`mcpServerStatus()`](#query-object) segnala per esso |5238| `name` | `string` | Il nome con cui il server è registrato, lo stesso valore che [`mcpServerStatus()`](#query-object) riporta per esso |

5232| `source` | `string` | Da dove proviene la definizione del server: `sdk`, `plugin`, o un ambito di configurazione |5239| `source` | `string` | La provenienza della definizione del server: `sdk`, `plugin` o un ambito di configurazione |

5233 5240 

5234`source` assume uno dei seguenti valori. L'insieme è aperto, quindi tratta un valore che non riconosci come una fonte configurata, mai come `sdk`:5241`source` assume uno dei seguenti valori. L'insieme è aperto, quindi tratta un valore che non riconosci come una sorgente configurata, mai come `sdk`:

5235 5242 

5236* **`sdk`**: un server in-process che la tua applicazione ha registrato. Solo l'applicazione host dell'SDK può registrarne uno, quindi un server configurato non segnala mai `sdk`, qualunque sia il suo nome.5243* **`sdk`**: un server in-process registrato dalla tua applicazione. Solo l'applicazione host dell'SDK può registrarne uno, quindi un server configurato non riporta mai `sdk`, qualunque sia il suo nome.

5237* **`plugin`**: un server che un [plugin](/docs/it/agent-sdk/plugins) fornisce. Il suo `name` è la forma con ambito `plugin:<plugin-name>:<server-name>` descritta sotto [server MCP forniti da plugin](/docs/it/mcp#plugin-provided-mcp-servers).5244* **`plugin`**: un server fornito da un [plugin](/docs/it/agent-sdk/plugins). Il suo `name` è nella forma con ambito `plugin:<plugin-name>:<server-name>` descritta in [server MCP forniti dai plugin](/docs/it/mcp#plugin-provided-mcp-servers).

5238* **Un ambito di configurazione**: `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai`, o `agent`. Un server `.mcp.json` segnala `project`, e [ambiti di installazione MCP](/docs/it/mcp#mcp-installation-scopes) definisce `local`, `project` e `user`. I server che la tua applicazione passa nell'opzione [`mcpServers`](#options), diversi dai server SDK in-process, segnalano `dynamic`.5245* **Un ambito di configurazione**: `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai` o `agent`. Un server di `.mcp.json` riporta `project`, e [ambiti di installazione MCP](/docs/it/mcp#mcp-installation-scopes) definisce `local`, `project` e `user`. I server che la tua applicazione passa nell'[opzione `mcpServers`](#options), ad eccezione dei server SDK in-process, riportano `dynamic`.

5239 5246 

5240Basa le decisioni di fiducia su `source`, non su `name` o il prefisso del nome dello strumento `mcp__<server>__`. Per qualsiasi fonte diversa da `sdk`, `name` è testo non attendibile: eseguine l'escape prima della visualizzazione.5247Basa le decisioni di fiducia su `source`, non su `name` né sul prefisso `mcp__<server>__` del nome dello strumento. Per qualsiasi sorgente diversa da `sdk`, `name` è testo non attendibile: eseguine l'escape prima di visualizzarlo.

5241 5248 

5242`McpServerProvenance` e i campi che lo portano richiedono Agent SDK v0.3.274 o successivo.5249`McpServerProvenance` e i campi che lo riportano richiedono Agent SDK v0.3.274 o versioni successive.

5243 5250 

5244<h3 id="mcpserverstatus">5251<h3 id="mcpserverstatus">

5245 `McpServerStatus`5252 `McpServerStatus`


5272};5279};

5273```5280```

5274 5281 

5275`source` dice da dove proviene la definizione del server, con gli stessi valori e regola di fiducia di [`McpServerProvenance`](#mcpserverprovenance) `source`. Il campo richiede Agent SDK v0.3.274 o successivo ed è assente nelle versioni precedenti.5282`source` indica la provenienza della definizione del server, con gli stessi valori e la stessa regola di fiducia del `source` di [`McpServerProvenance`](#mcpserverprovenance). Il campo richiede Agent SDK v0.3.274 o versioni successive ed è assente nelle versioni precedenti.

5276 5283 

5277`_meta` su una voce `tools` contiene i membri MCP Apps di `_meta` di quello strumento, quindi la tua applicazione può trovare la risorsa `ui://` da rendere con [`readMcpResource()`](#query-object). Claude Code passa attraverso l'oggetto `ui` e la stringa deprecata `ui/resourceUri`, e trattiene ogni altra chiave. All'interno di `ui`, `resourceUri` è una stringa `ui://` e `visibility` è un array di `"model"` e `"app"` quando il server li imposta, e qualsiasi altro membro passa attraverso invariato. Claude Code scarta entrambe le chiavi quando il valore è malformato, e omette `_meta` da uno strumento che non dichiara nessuna delle due. Il campo è presente solo quando le [`capabilities`](#sdksystemmessage) del messaggio di inizializzazione includono `mcp_tool_ui_meta_v1`, e richiede TypeScript Agent SDK v0.3.280 o successivo.5284`_meta` in una voce di `tools` riporta i membri MCP Apps del `_meta` di quello strumento, in modo che la tua applicazione possa trovare la risorsa `ui://` da visualizzare con [`readMcpResource()`](#query-object). Claude Code inoltra l'oggetto `ui` e la stringa piatta deprecata `ui/resourceUri`, e trattiene ogni altra chiave. All'interno di `ui`, `resourceUri` è una stringa `ui://` e `visibility` un array di `"model"` e `"app"` quando il server li imposta, e qualsiasi altro membro viene inoltrato invariato. Claude Code scarta ciascuna delle due chiavi il cui valore sia malformato, e omette `_meta` da uno strumento che non dichiara nessuna delle due. Il campo è presente solo quando le [`capabilities`](#sdksystemmessage) del messaggio init includono `mcp_tool_ui_meta_v1`, e richiede TypeScript Agent SDK v0.3.280 o versioni successive.

5278 5285 

5279<h3 id="mcpserverstatusconfig">5286<h3 id="mcpserverstatusconfig">

5280 `McpServerStatusConfig`5287 `McpServerStatusConfig`

5281</h3>5288</h3>

5282 5289 

5283La configurazione di un server MCP come segnalato da `mcpServerStatus()`. Questa è l'unione di tutti i tipi di trasporto del server MCP.5290La configurazione di un server MCP come riportata da `mcpServerStatus()`. È l'unione di tutti i tipi di trasporto dei server MCP.

5284 5291 

5285```typescript theme={null}5292```typescript theme={null}

5286type McpServerStatusConfig =5293type McpServerStatusConfig =


5291 | McpClaudeAIProxyServerConfig;5298 | McpClaudeAIProxyServerConfig;

5292```5299```

5293 5300 

5294Vedi [`McpServerConfig`](#mcpserverconfig) per i dettagli su ogni tipo di trasporto.5301Consulta [`McpServerConfig`](#mcpserverconfig) per i dettagli su ciascun tipo di trasporto.

5295 5302 

5296<h3 id="accountinfo">5303<h3 id="accountinfo">

5297 `AccountInfo`5304 `AccountInfo`

5298</h3>5305</h3>

5299 5306 

5300Informazioni sull'account per l'utente autenticato.5307Informazioni sull'account dell'utente autenticato.

5301 5308 

5302```typescript theme={null}5309```typescript theme={null}

5303type AccountInfo = {5310type AccountInfo = {


5313 `ModelUsage`5320 `ModelUsage`

5314</h3>5321</h3>

5315 5322 

5316Statistiche di utilizzo per modello restituite nei messaggi di risultato. Il valore `costUSD` è una stima lato client. Vedi [Traccia costo e utilizzo](/docs/it/agent-sdk/cost-tracking) per le avvertenze di fatturazione.5323Statistiche di utilizzo per modello restituite nei messaggi di risultato. Il valore `costUSD` è una stima lato client. Consulta [Monitorare costi e utilizzo](/docs/it/agent-sdk/cost-tracking) per le avvertenze sulla fatturazione.

5317 5324 

5318```typescript theme={null}5325```typescript theme={null}

5319type ModelUsage = {5326type ModelUsage = {


5332};5339};

5333```5340```

5334 5341 

5335`thinkingTokens` conta i token di ragionamento che questo modello ha generato. `outputTokens` li include già, quindi non sommare i due insieme. Il campo è assente fino a quando un turno non viene eseguito su una versione di Claude Code che lo registra, quindi una sessione ripresa che è iniziata su una versione precedente segnala un conteggio parziale. `thinkingTokens` richiede Agent SDK v0.3.257 o successivo.5342`thinkingTokens` conta i token di ragionamento generati da questo modello. `outputTokens` li include già, quindi non sommare i due valori. Il campo è assente finché un turno non viene eseguito su una versione di Claude Code che lo registra, quindi una sessione ripresa iniziata su una versione precedente riporta un conteggio parziale. `thinkingTokens` richiede Agent SDK v0.3.257 o versioni successive.

5336 5343 

5337I campi `canonicalModel` e `provider` richiedono Claude Code v2.1.218 o successivo. `canonicalModel` è l'ID del modello canonico che la ricerca dei prezzi utilizza; può differire dalla stringa del modello grezzo che fa da chiave alla voce, ad esempio quando quella stringa è un ID specifico del provider o un alias.5344I campi `canonicalModel` e `provider` richiedono Claude Code v2.1.218 o versioni successive. `canonicalModel` è l'ID canonico del modello usato per la ricerca dei prezzi; può differire dalla stringa grezza del modello che funge da chiave per la voce, ad esempio quando tale stringa è un ID specifico del provider o un alias.

5338 5345 

5339`provider` nomina il backend API che ha servito il modello, come `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, o `gateway`.5346`provider` indica il backend API che ha servito il modello, come `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` o `gateway`.

5340 5347 

5341`costBasis` nomina la tabella dei prezzi che ha prezzato la richiesta più recente del modello: `list` per il prezzo di listino, `managed` per una tabella [`modelPricing`](/docs/it/settings-reference#modelpricing), o `unknown` quando nessuno dei due ha corrisposto all'ID del modello. Il campo richiede Claude Code v2.1.246 o successivo.5348`costBasis` indica la tabella dei prezzi usata per la richiesta più recente del modello: `list` per il prezzo di listino, `managed` per una tabella [`modelPricing`](/docs/it/settings-reference#modelpricing), oppure `unknown` quando nessuna delle due corrisponde all'ID del modello. Il campo richiede Claude Code v2.1.246 o versioni successive.

5342 5349 

5343<h3 id="configscope">5350<h3 id="configscope">

5344 `ConfigScope`5351 `ConfigScope`


5352 `NonNullableUsage`5359 `NonNullableUsage`

5353</h3>5360</h3>

5354 5361 

5355Una versione di [`Usage`](#usage) con tutti i campi nullable resi non-nullable tranne `fallback_credit`, che può ancora essere `null`.5362Una versione di [`Usage`](#usage) in cui ogni campo nullable è reso non-nullable tranne `fallback_credit`, che può ancora essere `null`.

5356 5363 

5357```typescript theme={null}5364```typescript theme={null}

5358type NonNullableUsage = {5365type NonNullableUsage = {


5366 `Usage`5373 `Usage`

5367</h3>5374</h3>

5368 5375 

5369Statistiche di utilizzo dei token. Questo è il tipo `BetaUsage` da `@anthropic-ai/sdk`.5376Statistiche di utilizzo dei token. È il tipo `BetaUsage` di `@anthropic-ai/sdk`.

5370 5377 

5371```typescript theme={null}5378```typescript theme={null}

5372type Usage = {5379type Usage = {


5390 5397 

5391`BetaServerToolUsage`, `BetaIterationsUsage`, `BetaOutputTokensDetails` e `BetaFallbackCreditUsage` sono definiti in `@anthropic-ai/sdk`.5398`BetaServerToolUsage`, `BetaIterationsUsage`, `BetaOutputTokensDetails` e `BetaFallbackCreditUsage` sono definiti in `@anthropic-ai/sdk`.

5392 5399 

5393`output_tokens_details` suddivide l'output fatturato per categoria. Attualmente contiene un campo, `thinking_tokens: number`, che conta i token di output che il modello ha generato come ragionamento interno, inclusi i delimitatori del blocco di ragionamento. Il campo `output_tokens_details` richiede TypeScript SDK v0.3.228 o successivo, che include Claude Code v2.1.228.5400`output_tokens_details` suddivide l'output fatturato per categoria. Attualmente contiene un solo campo, `thinking_tokens: number`, che conta i token di output generati dal modello come ragionamento interno, inclusi i delimitatori dei blocchi di ragionamento. Il campo `output_tokens_details` richiede TypeScript SDK v0.3.228 o versioni successive, che include Claude Code v2.1.228.

5394 5401 

5395* **Fatturazione**: leggi la suddivisione per l'osservabilità, non per la fatturazione. `output_tokens` rimane il totale autorevole, e `output_tokens - thinking_tokens` approssima l'output non di ragionamento.5402* **Fatturazione**: leggi la suddivisione per l'osservabilità, non per la fatturazione. `output_tokens` rimane il totale autorevole, e `output_tokens - thinking_tokens` approssima l'output non di ragionamento.

5396* **Cosa copre il conteggio**: il ragionamento grezzo che il modello ha prodotto, che può essere più lungo del testo di ragionamento restituito nel corpo della risposta. L'API lo calcola ritokenizzando quel testo grezzo, quindi può differire dal conteggio esatto della generazione del modello di alcuni token.5403* **Cosa copre il conteggio**: il ragionamento grezzo prodotto dal modello, che può essere più lungo del testo di ragionamento restituito nel corpo della risposta. L'API lo calcola ri-tokenizzando quel testo grezzo, quindi può differire di alcuni token dal conteggio esatto della generazione del modello.

5397* **Streaming**: sui messaggi dell'assistente trasmessi in streaming questa suddivisione, come `output_tokens`, è un placeholder `message_start` e non contiene un conteggio reale, quindi leggila da `usage` del messaggio di risultato come descritto in [Leggi i token di output dal messaggio di risultato](/docs/it/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message). Nel messaggio di risultato, `thinking_tokens` vale `0` quando il modello o il provider non segnala alcuna suddivisione.5404* **Streaming**: nei messaggi dell'assistente trasmessi in streaming questa suddivisione, come `output_tokens`, è un segnaposto di `message_start` e non contiene un conteggio reale, quindi leggila dallo `usage` del messaggio di risultato come descritto in [Leggere i token di output dal messaggio di risultato](/docs/it/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message). Nel messaggio di risultato, `thinking_tokens` vale `0` quando il modello o il provider non riporta alcuna suddivisione.

5398* **Casi `null`**: `output_tokens_details` stesso è `null` sui messaggi dell'assistente che Claude Code sintetizza, come i messaggi di errore API.5405* **Casi `null`**: `output_tokens_details` stesso è `null` nei messaggi dell'assistente sintetizzati da Claude Code, come i messaggi di errore API.

5399 5406 

5400Se `Usage` contiene `fallback_credit` dipende dal `@anthropic-ai/sdk` che hai installato, che lo ha aggiunto nella versione 0.115.0.5407La presenza di `fallback_credit` in `Usage` dipende dalla versione installata di `@anthropic-ai/sdk`, che lo ha aggiunto nella 0.115.0.

5401 5408 

5402<h3 id="calltoolresult">5409<h3 id="calltoolresult">

5403 `CallToolResult`5410 `CallToolResult`

5404</h3>5411</h3>

5405 5412 

5406Tipo di risultato dello strumento MCP (da `@modelcontextprotocol/sdk/types.js`). `structuredContent` è un oggetto JSON che può essere restituito insieme a `content`, inclusi blocchi di immagini. Vedi [Restituisci dati strutturati](/docs/it/agent-sdk/custom-tools#return-structured-data).5413Tipo di risultato degli strumenti MCP (da `@modelcontextprotocol/sdk/types.js`). `structuredContent` è un oggetto JSON che può essere restituito insieme a `content`, inclusi i blocchi immagine. Consulta [Restituire dati strutturati](/docs/it/agent-sdk/custom-tools#return-structured-data).

5407 5414 

5408```typescript theme={null}5415```typescript theme={null}

5409type CallToolResult = {5416type CallToolResult = {

5410 content: Array<{5417 content: Array<{

5411 type: "text" | "image" | "audio" | "resource" | "resource_link";5418 type: "text" | "image" | "audio" | "resource" | "resource_link";

5412 // I campi aggiuntivi variano in base al tipo5419 // Additional fields vary by type

5413 }>;5420 }>;

5414 structuredContent?: Record<string, unknown>;5421 structuredContent?: Record<string, unknown>;

5415 isError?: boolean;5422 isError?: boolean;


5420 `SDKMcpResourceLink`5427 `SDKMcpResourceLink`

5421</h3>5428</h3>

5422 5429 

5423Un file che uno strumento MCP ha restituito per riferimento. Claude Code crea ogni voce da un blocco `resource_link` nel risultato dello strumento e fornisce l'elenco come `resourceLinks` su [`SDKUserMessage.tool_use_result`](#sdkusermessage), o come `resource_links` su [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) quando la chiamata è terminata in background. Richiede Agent SDK v0.3.257 o successivo.5430Un file restituito per riferimento da uno strumento MCP. Claude Code costruisce ogni voce da un blocco `resource_link` nel risultato dello strumento e consegna l'elenco come `resourceLinks` in [`SDKUserMessage.tool_use_result`](#sdkusermessage), oppure come `resource_links` in [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) quando la chiamata è terminata in background. Richiede Agent SDK v0.3.257 o versioni successive.

5424 5431 

5425```typescript theme={null}5432```typescript theme={null}

5426type SDKMcpResourceLink = {5433type SDKMcpResourceLink = {


5434};5441};

5435```5442```

5436 5443 

5437Claude Code scarta un blocco il cui `uri` o `name` non è una stringa, e omette un campo opzionale il cui valore non è del tipo elencato.5444Claude Code scarta un blocco il cui `uri` o `name` non è una stringa, e omette un campo facoltativo il cui valore non è del tipo indicato.

5438 5445 

5439| Campo | Tipo | Descrizione |5446| Campo | Tipo | Descrizione |

5440| :- | :- | :- |5447| :- | :- | :- |

5441| `uri` | `string` | URI della risorsa, come il server l'ha restituito |5448| `uri` | `string` | URI della risorsa, così come restituito dal server |

5442| `name` | `string` | Nome che il server ha dato alla risorsa |5449| `name` | `string` | Nome che il server ha dato alla risorsa |

5443| `title` | `string \| undefined` | Titolo di visualizzazione, quando il server ne ha impostato uno |5450| `title` | `string \| undefined` | Titolo visualizzato, quando il server ne ha impostato uno |

5444| `description` | `string \| undefined` | Descrizione, quando il server ne ha impostata una |5451| `description` | `string \| undefined` | Descrizione, quando il server ne ha impostata una |

5445| `mimeType` | `string \| undefined` | Tipo MIME, quando il server ne ha impostato uno |5452| `mimeType` | `string \| undefined` | Tipo MIME, quando il server ne ha impostato uno |

5446| `size` | `number \| undefined` | Dimensione in byte, quando il server ne ha impostata una |5453| `size` | `number \| undefined` | Dimensione in byte, quando il server l'ha impostata |

5447| `annotations` | `Record<string, unknown> \| undefined` | L'oggetto annotazioni MCP del blocco, quando il server ne ha impostato uno |5454| `annotations` | `Record<string, unknown> \| undefined` | L'oggetto delle annotazioni MCP del blocco, quando il server ne ha impostato uno |

5448 5455 

5449<h3 id="thinkingconfig">5456<h3 id="thinkingconfig">

5450 `ThinkingConfig`5457 `ThinkingConfig`


5456type ThinkingDisplay = "summarized" | "omitted";5463type ThinkingDisplay = "summarized" | "omitted";

5457 5464 

5458type ThinkingConfig =5465type ThinkingConfig =

5459 | { type: "adaptive"; display?: ThinkingDisplay } // Il modello determina quando e quanto ragionare (Opus 4.6+)5466 | { type: "adaptive"; display?: ThinkingDisplay } // The model determines when and how much to reason (Opus 4.6+)

5460 | { type: "enabled"; budgetTokens?: number; display?: ThinkingDisplay } // Budget di token di ragionamento fisso5467 | { type: "enabled"; budgetTokens?: number; display?: ThinkingDisplay } // Fixed thinking token budget

5461 | { type: "disabled" }; // Nessun ragionamento esteso5468 | { type: "disabled" }; // No extended thinking

5462```5469```

5463 5470 

5464Il campo opzionale `display` controlla se il testo di ragionamento viene restituito `"summarized"` o `"omitted"`. Su Claude Opus 4.7 e versioni successive, l'impostazione predefinita dell'API è `"omitted"`, quindi imposta `"summarized"` per ricevere il contenuto di ragionamento nei blocchi `thinking`. Claude Code non invia `display` ad Amazon Bedrock o alla piattaforma Agent di Google Cloud, quindi su quei provider Opus 4.7 e versioni successive restituiscono blocchi `thinking` vuoti anche quando imposti `display` su `"summarized"`.5471Il campo facoltativo `display` controlla se il testo di ragionamento viene restituito `"summarized"` o `"omitted"`. Su Claude Opus 4.7 e versioni successive, il valore predefinito dell'API è `"omitted"`, quindi imposta `"summarized"` per ricevere il contenuto del ragionamento nei blocchi `thinking`. Claude Code omette `display` dalle richieste verso alcuni provider, come Amazon Bedrock e Agent Platform di Google Cloud. Su questi provider, Opus 4.7 e versioni successive restituiscono blocchi `thinking` vuoti anche quando imposti `display` su `"summarized"`.

5465 5472 

5466<h3 id="spawnedprocess">5473<h3 id="spawnedprocess">

5467 `SpawnedProcess`5474 `SpawnedProcess`

5468</h3>5475</h3>

5469 5476 

5470Interfaccia per la generazione di processi personalizzati (usata con l'opzione `spawnClaudeCodeProcess`). `ChildProcess` soddisfa già questa interfaccia.5477Interfaccia per la creazione personalizzata di processi (usata con l'opzione `spawnClaudeCodeProcess`). `ChildProcess` soddisfa già questa interfaccia.

5471 5478 

5472```typescript theme={null}5479```typescript theme={null}

5473interface SpawnedProcess {5480interface SpawnedProcess {


5498 `SpawnOptions`5505 `SpawnOptions`

5499</h3>5506</h3>

5500 5507 

5501Opzioni passate alla funzione di generazione personalizzata.5508Opzioni passate alla funzione di spawn personalizzata.

5502 5509 

5503```typescript theme={null}5510```typescript theme={null}

5504interface SpawnOptions {5511interface SpawnOptions {


5511```5518```

5512 5519 

5513<Note>5520<Note>

5514 Il campo `signal` comunica alla tua funzione di generazione quando smontare il processo. Passalo come opzione `signal` al `spawn()` di Node, oppure passalo al tuo gestore di smontaggio della VM o del contenitore.5521 Il campo `signal` indica alla tua funzione di spawn quando terminare il processo. Passalo come opzione `signal` a `spawn()` di Node, oppure passalo al gestore di terminazione della tua VM o del tuo container.

5515 5522 

5516 Questo segnale non si attiva nell'istante in cui [`Options.abortController`](#options) si interrompe. L'SDK prima chiude lo stdin del processo e attende circa due secondi affinché la CLI si arresti correttamente, quindi interrompe questo segnale. Per reagire invece nel momento in cui il chiamante si interrompe, ascolta il tuo `Options.abortController.signal`, che la tua funzione di generazione può referenziare dal suo ambito di chiusura.5523 Questo segnale non si attiva nell'istante in cui [`Options.abortController`](#options) esegue l'abort. L'SDK chiude prima lo stdin del processo e attende circa due secondi affinché la CLI possa arrestarsi correttamente, poi esegue l'abort di questo segnale. Per reagire invece nel momento in cui il chiamante esegue l'abort, rimani in ascolto sul tuo `Options.abortController.signal`, a cui la tua funzione di spawn può fare riferimento dallo scope che la racchiude.

5517</Note>5524</Note>

5518 5525 

5519<h3 id="mcpsetserversresult">5526<h3 id="mcpsetserversresult">


5532 5539 

5533Quando chiami `setMcpServers()`, Claude Code applica queste regole:5540Quando chiami `setMcpServers()`, Claude Code applica queste regole:

5534 5541 

5535* **Server che la chiamata non nomina**: Claude Code mantiene i server forniti dai plugin in esecuzione. Richiede Agent SDK v0.3.210 o successivo.5542* **Server non indicati dalla chiamata**: al di fuori di una [sessione cloud](/docs/it/claude-code-on-the-web), Claude Code disconnette i server aggiunti da una precedente chiamata `setMcpServers()` e i server SDK in-process, e li elenca in `removed`. Gli altri server continuano a funzionare e non sono elencati in `removed`, tra cui i server stdio, HTTP e SSE dell'opzione [`mcpServers`](#options), i server dei file di impostazioni e i server forniti dai plugin.

5536* **Server che la chiamata nomina**: ad eccezione dei server integrati che la CLI ha avviato all'avvio, Claude Code sostituisce un server in esecuzione solo quando la sua configurazione differisce da quella che hai passato.5543* **Server indicati dalla chiamata**: Claude Code sostituisce un server stdio, HTTP o SSE aggiunto da una precedente chiamata `setMcpServers()` solo quando la sua configurazione differisce da quella che hai passato. Un server SDK in-process già registrato con quel nome rimane invariato, quindi per sostituirne uno, omettilo in una chiamata e aggiungilo in quella successiva.

5537* **Server integrati che la CLI ha avviato all'avvio**: se la chiamata ne nomina uno, Claude Code scarta quella voce e la segnala in `errors`.5544* **Server integrati avviati dalla CLI all'avvio**: se la chiamata ne indica uno, Claude Code scarta quella voce e la riporta in `errors`.

5538 5545 

5539La promessa si risolve dopo che i server stdio, HTTP e SSE appena aggiunti si connettono o falliscono, quindi gli strumenti dai server che si sono connessi sono disponibili al turno successivo.5546La promise si risolve dopo che i server stdio, HTTP e SSE appena aggiunti si sono connessi o non sono riusciti a farlo, quindi gli strumenti dei server che si sono connessi sono disponibili al turno successivo.

5540 5547 

5541`added` elenca i server che Claude Code ha aggiunto o sostituito, indipendentemente dal fatto che si siano connessi. Un server che non si è connesso appare sia in `added` che in `errors`, con il testo di errore sotto `errors` e una riga `failed` in [`mcpServerStatus()`](#methods). Prima di Claude Code v2.1.257, un server il cui tentativo di connessione ha lanciato un'eccezione era segnalato solo sotto `errors`.5548`added` elenca i server che Claude Code ha aggiunto o sostituito, indipendentemente dal fatto che si siano connessi. Un server che non è riuscito a connettersi compare sia in `added` sia in `errors`, con il testo dell'errore in `errors` e una riga `failed` in [`mcpServerStatus()`](#methods). Prima di Claude Code v2.1.257, un server il cui tentativo di connessione generava un'eccezione veniva riportato solo in `errors`.

5542 5549 

5543<h3 id="rewindfilesresult">5550<h3 id="rewindfilesresult">

5544 `RewindFilesResult`5551 `RewindFilesResult`


5557};5564};

5558```5565```

5559 5566 

5560`skippedLinks` conta i percorsi tracciati che il rewind ha rifiutato di ripristinare o eliminare per la sicurezza dei link: un collegamento simbolico, hard link, o altro file non regolare nel percorso tracciato, una directory padre che non si risolve più a dove puntava quando il checkpoint è stato creato, o un backup che non poteva essere letto in sicurezza. Il campo richiede Claude Code v2.1.216 o successivo. Una chiamata di anteprima con `rewindFiles(userMessageId, { dryRun: true })` non lo imposta mai.5567`skippedLinks` conta i percorsi tracciati che il rewind si è rifiutato di ripristinare o eliminare per la sicurezza dei collegamenti: un collegamento simbolico, un hard link o un altro file non regolare nel percorso tracciato, una directory padre che non si risolve più nella posizione a cui puntava quando è stato creato il checkpoint, oppure un backup che non è stato possibile leggere in modo sicuro. Il campo richiede Claude Code v2.1.216 o versioni successive. Una chiamata di anteprima con `rewindFiles(userMessageId, { dryRun: true })` non lo imposta mai.

5561 5568 

5562<h3 id="sdkstatusmessage">5569<h3 id="sdkstatusmessage">

5563 `SDKStatusMessage`5570 `SDKStatusMessage`

5564</h3>5571</h3>

5565 5572 

5566Messaggio di aggiornamento dello stato (ad esempio, compattazione).5573Messaggio di aggiornamento di stato (ad esempio, compattazione in corso).

5567 5574 

5568```typescript theme={null}5575```typescript theme={null}

5569type SDKStatusMessage = {5576type SDKStatusMessage = {


5580 `SDKTaskNotificationMessage`5587 `SDKTaskNotificationMessage`

5581</h3>5588</h3>

5582 5589 

5583Notifica quando un'attività in background si completa, fallisce o viene interrotta. Le attività in background includono i comandi Bash `run_in_background`, i watch [Monitor](#monitor) e i subagent in background. Per il campo `ambient`, vedi [`SDKTaskStartedMessage`](#sdktaskstartedmessage), che lo definisce insieme al suo requisito di versione.5590Notifica inviata quando un'attività in background viene completata, fallisce o viene arrestata. Le attività in background includono i comandi Bash `run_in_background`, le osservazioni [Monitor](#monitor) e i subagent in background. Per il campo `ambient`, consulta [`SDKTaskStartedMessage`](#sdktaskstartedmessage), che lo definisce insieme al relativo requisito di versione.

5584 5591 

5585```typescript theme={null}5592```typescript theme={null}

5586type SDKTaskNotificationMessage = {5593type SDKTaskNotificationMessage = {


5603};5610};

5604```5611```

5605 5612 

5606Quando Claude Code [sposta una lunga chiamata a uno strumento MCP in background](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls), il blocco `tool_result` per quella chiamata contiene solo un placeholder e il risultato reale della chiamata arriva in questa notifica. Abbina la notifica alla chiamata con `tool_use_id`. Su una notifica `completed`, `resource_links` elenca i file che lo strumento ha restituito per riferimento come voci [`SDKMcpResourceLink`](#sdkmcpresourcelink), con gli stessi limiti di 50 link e 64 KiB di [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code omette `resource_links` quando il risultato non aveva link e sulle notifiche per attività che non sono chiamate a strumenti MCP. `resource_links` richiede Agent SDK v0.3.257 o successivo.5613Quando Claude Code [sposta in background una lunga chiamata a uno strumento MCP](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls), il blocco `tool_result` di quella chiamata contiene solo un segnaposto e il risultato reale della chiamata arriva in questa notifica. Associa la notifica alla chiamata tramite `tool_use_id`. In una notifica `completed`, `resource_links` elenca i file restituiti per riferimento dallo strumento come voci [`SDKMcpResourceLink`](#sdkmcpresourcelink), con gli stessi limiti di 50 link e 64 KiB di [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code omette `resource_links` quando il risultato non conteneva link e nelle notifiche per attività che non sono chiamate a strumenti MCP. `resource_links` richiede Agent SDK v0.3.257 o versioni successive.

5607 5614 

5608Claude Code antepone un avviso a ogni notifica di attività che invia al modello, ad eccezione delle consegne contrassegnate con il sottotipo [`scheduled-trigger`](#task-notification-subkinds), che portano invece un inquadramento di attività assegnata. L'avviso afferma che non si è verificato alcun input umano, quindi il modello non tratta la notifica come un'istruzione o un'approvazione dell'utente.5615Claude Code antepone un avviso a ogni notifica di attività che invia al modello, tranne le consegne contrassegnate con il [subkind `scheduled-trigger`](#task-notification-subkinds), che riportano invece un'impostazione da attività assegnata. L'avviso indica che non c'è stato alcun input umano, in modo che il modello non tratti la notifica come un'istruzione o un'approvazione dell'utente.

5609 5616 

5610Per rilevare un turno di notifica di attività, controlla `origin.kind === "task-notification"` su [`SDKUserMessage`](#sdkusermessage) o [`SDKResultMessage`](#sdkresultmessage) piuttosto che abbinare il testo dell'avviso. Leggi `subkind` dallo stesso campo se hai bisogno di sapere cosa l'ha sollevato. Prima di v2.1.205, Claude Code ometteva l'avviso dalle notifiche che arrivavano mentre la sessione era inattiva.5617Per rilevare un turno di notifica di attività, verifica `origin.kind === "task-notification"` su [`SDKUserMessage`](#sdkusermessage) o [`SDKResultMessage`](#sdkresultmessage) invece di confrontare il testo dell'avviso. Leggi `subkind` dallo stesso campo se devi sapere cosa l'ha generata. Prima della v2.1.205, Claude Code ometteva l'avviso dalle notifiche arrivate mentre la sessione era inattiva.

5611 5618 

5612<h3 id="sdktoolusesummarymessage">5619<h3 id="sdktoolusesummarymessage">

5613 `SDKToolUseSummaryMessage`5620 `SDKToolUseSummaryMessage`

5614</h3>5621</h3>

5615 5622 

5616Riepilogo dell'uso degli strumenti in una conversazione.5623Riepilogo dell'utilizzo degli strumenti in una conversazione.

5617 5624 

5618```typescript theme={null}5625```typescript theme={null}

5619type SDKToolUseSummaryMessage = {5626type SDKToolUseSummaryMessage = {


5631 5638 

5632Emesso quando un hook inizia l'esecuzione.5639Emesso quando un hook inizia l'esecuzione.

5633 5640 

5634Claude Code fornisce questo messaggio, [`SDKHookProgressMessage`](#sdkhookprogressmessage), e [`SDKHookResponseMessage`](#sdkhookresponsemessage) al flusso di messaggi immediatamente, incluso mentre un hook `SessionStart` o `Setup` è ancora in esecuzione durante l'avvio della sessione. Claude Code dalla v2.1.169 alla v2.1.203 ha fornito questi messaggi in un unico batch dopo che un hook `SessionStart` o `Setup` era completato; la v2.1.204 ha ripristinato la consegna dal vivo.5641Claude Code consegna questo messaggio, [`SDKHookProgressMessage`](#sdkhookprogressmessage) e [`SDKHookResponseMessage`](#sdkhookresponsemessage) al flusso dei messaggi immediatamente, anche mentre un hook `SessionStart` o `Setup` è ancora in esecuzione durante l'avvio della sessione. Claude Code dalla v2.1.169 alla v2.1.203 consegnava questi messaggi in un unico blocco dopo il completamento di un hook `SessionStart` o `Setup`; la v2.1.204 ha ripristinato la consegna in tempo reale.

5635 5642 

5636```typescript theme={null}5643```typescript theme={null}

5637type SDKHookStartedMessage = {5644type SDKHookStartedMessage = {


5649 `SDKHookProgressMessage`5656 `SDKHookProgressMessage`

5650</h3>5657</h3>

5651 5658 

5652Emesso mentre un hook è in esecuzione, con output stdout/stderr.5659Emesso mentre un hook è in esecuzione, con l'output stdout/stderr.

5653 5660 

5654```typescript theme={null}5661```typescript theme={null}

5655type SDKHookProgressMessage = {5662type SDKHookProgressMessage = {


5670 `SDKHookResponseMessage`5677 `SDKHookResponseMessage`

5671</h3>5678</h3>

5672 5679 

5673Emesso quando un hook finisce l'esecuzione.5680Emesso quando un hook termina l'esecuzione.

5674 5681 

5675```typescript theme={null}5682```typescript theme={null}

5676type SDKHookResponseMessage = {5683type SDKHookResponseMessage = {


5693 `SDKToolProgressMessage`5700 `SDKToolProgressMessage`

5694</h3>5701</h3>

5695 5702 

5696Emesso periodicamente mentre uno strumento è in esecuzione per indicare il progresso.5703Emesso periodicamente durante l'esecuzione di uno strumento per indicarne l'avanzamento.

5697 5704 

5698```typescript theme={null}5705```typescript theme={null}

5699type SDKToolProgressMessage = {5706type SDKToolProgressMessage = {


5718};5725};

5719```5726```

5720 5727 

5721Mentre una chiamata a uno strumento viene eseguita nella conversazione principale, Claude Code emette un messaggio `tool_progress` ogni 30 secondi con `heartbeat: true`. Ogni heartbeat contiene il nome dello strumento e i secondi trascorsi, quindi puoi distinguere una chiamata di lunga durata da una sessione bloccata. Claude Code non emette heartbeat per le chiamate agli strumenti all'interno di un subagent. Il campo `heartbeat` richiede Agent SDK v0.3.214 o successivo. Prima di v2.1.257, Claude Code non emetteva heartbeat nemmeno per una chiamata allo strumento Agent in primo piano.5728Mentre una chiamata a uno strumento è in esecuzione nella conversazione principale, Claude Code emette un messaggio `tool_progress` ogni 30 secondi con `heartbeat: true`. Ogni heartbeat riporta il nome dello strumento e i secondi trascorsi, così puoi distinguere una chiamata di lunga durata da una sessione bloccata. Claude Code non emette heartbeat per le chiamate agli strumenti all'interno di un subagent. Il campo `heartbeat` richiede Agent SDK v0.3.214 o versioni successive. Prima della v2.1.257, Claude Code non emetteva heartbeat nemmeno per una chiamata allo strumento Agent in primo piano.

5722 5729 

5723Sui messaggi `tool_progress` per lo strumento Agent diversi dagli heartbeat, `subagent_type` nomina il tipo di subagent in esecuzione, come `general-purpose`. `subagent_retry` è presente mentre quel subagent attende un backoff di errore API, come un rate limit o un sovraccarico, con un messaggio per ogni nuovo tentativo. Entrambi i campi richiedono Agent SDK v0.3.214 o successivo.5730Nei messaggi `tool_progress` per lo strumento Agent diversi dagli heartbeat, `subagent_type` indica il tipo di subagent in esecuzione, come `general-purpose`. `subagent_retry` è presente mentre quel subagent attende il backoff dopo un errore API, come un rate limit o un sovraccarico, con un messaggio per ogni nuovo tentativo. Entrambi i campi richiedono Agent SDK v0.3.214 o versioni successive.

5724 5731 

5725Per rendere un indicatore di nuovo tentativo da `subagent_retry`:5732Per visualizzare un indicatore di nuovo tentativo a partire da `subagent_retry`:

5726 5733 

5727* Traccia l'indicatore per `parent_tool_use_id`, che è univoco per subagent. `tool_use_id` è condiviso da subagent paralleli di uno stesso turno dell'assistente, quindi tracciare per esso lascerebbe che l'aggiornamento di un subagent cancelli l'indicatore di un altro.5734* Traccia l'indicatore tramite `parent_tool_use_id`, che è univoco per ogni subagent. `tool_use_id` è condiviso dai subagent paralleli avviati da uno stesso turno dell'assistente, quindi tracciarlo in base a esso permetterebbe all'aggiornamento di un subagent di cancellare l'indicatore di un altro.

5728* Cancella l'indicatore quando un successivo `tool_progress` per lo stesso `parent_tool_use_id` arriva senza `subagent_retry` né `heartbeat: true`, o quando arriva il messaggio di risultato dello strumento. I frame con `heartbeat: true` segnalano solo che il processo è attivo, quindi mantieni l'indicatore quando ne arriva uno. `attempt` può superare `max_retries` in caso di nuovi tentativi persistenti, quindi non derivare la cancellazione dai contatori.5735* Cancella l'indicatore quando arriva un successivo `tool_progress` per lo stesso `parent_tool_use_id` senza né `subagent_retry` né `heartbeat: true`, oppure quando arriva il messaggio di risultato dello strumento. I frame con `heartbeat: true` segnalano solo che la sessione è attiva, quindi mantieni l'indicatore quando ne arriva uno. `attempt` può superare `max_retries` in caso di nuovi tentativi persistenti, quindi non basare la cancellazione sui contatori.

5729* Tratta `error_category` come un token per scegliere il tuo testo di messaggio, non come testo di visualizzazione. I valori sono `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error` e `unknown`. Gestisci un valore che non riconosci come gestisci `unknown`, perché le versioni successive possono aggiungere valori.5736* Tratta `error_category` come un token per scegliere il testo del tuo messaggio, non come testo da visualizzare. I valori sono `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error` e `unknown`. Gestisci un valore che non riconosci come gestisci `unknown`, perché le versioni future possono aggiungere valori.

5730 5737 

5731<h3 id="sdkauthstatusmessage">5738<h3 id="sdkauthstatusmessage">

5732 `SDKAuthStatusMessage`5739 `SDKAuthStatusMessage`


5749 `SDKTaskStartedMessage`5756 `SDKTaskStartedMessage`

5750</h3>5757</h3>

5751 5758 

5752Emesso quando un'attività inizia. Il campo `task_type` è `"local_bash"` per i comandi Bash e i watch [Monitor](#monitor), `"local_agent"` per i subagent, o `"remote_agent"`.5759Emesso quando un'attività inizia. Il campo `task_type` è `"local_bash"` per i comandi Bash e le osservazioni [Monitor](#monitor), `"local_agent"` per i subagent, oppure `"remote_agent"`.

5753 5760 

5754```typescript theme={null}5761```typescript theme={null}

5755type SDKTaskStartedMessage = {5762type SDKTaskStartedMessage = {


5767};5774};

5768```5775```

5769 5776 

5770`ambient` è `true` per le attività che non fanno parte del lavoro della sessione, come le attività che Claude Code esegue per il proprio funzionamento. Anche i watcher di aggiornamento dal vivo sono ambient, inclusi i watcher che l'utente ha richiesto. Escludi le attività ambient dagli indicatori di attività. Il campo richiede Agent SDK v0.3.247 o successivo.5777`ambient` è `true` per le attività che non fanno parte del lavoro della sessione, come le attività che Claude Code esegue per il proprio funzionamento. Anche gli osservatori di aggiornamenti in tempo reale sono ambient, compresi quelli richiesti dall'utente. Escludi le attività ambient dagli indicatori di attività. Il campo richiede Agent SDK v0.3.247 o versioni successive.

5771 5778 

5772`ambient` appare anche su [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) e sulle voci di [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).5779`ambient` compare anche in [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) e nelle voci di [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).

5773 5780 

5774`is_backgrounded` e `spawn_depth` descrivono come Claude Code ha avviato l'attività. Entrambi i campi richiedono Agent SDK v0.3.238 o successivo.5781`is_backgrounded` e `spawn_depth` descrivono come Claude Code ha avviato l'attività. Entrambi i campi richiedono Agent SDK v0.3.238 o versioni successive.

5775 5782 

5776* `is_backgrounded`: Claude Code lo imposta su attività `"local_agent"` e `"local_bash"`. `true` significa che l'attività viene eseguita in background. `false` significa che l'attività viene eseguita in primo piano, e la chiamata allo strumento che l'ha avviata rimane bloccata fino a quando l'attività non finisce o si sposta in background.5783* `is_backgrounded`: Claude Code lo imposta sulle attività `"local_agent"` e `"local_bash"`. `true` significa che l'attività viene eseguita in background. `false` significa che l'attività viene eseguita in primo piano, e la chiamata allo strumento che l'ha avviata resta bloccata finché l'attività non termina o non passa in background.

5777* `spawn_depth`: Claude Code lo imposta solo su attività `"local_agent"`. Un subagent che il thread principale ha generato ha profondità `1`. Un subagent che un subagent di profondità `1` ha generato ha profondità `2`, e così via.5784* `spawn_depth`: Claude Code lo imposta solo sulle attività `"local_agent"`. Un subagent avviato dal thread principale ha profondità `1`. Un subagent avviato da un subagent di profondità `1` ha profondità `2`, e così via.

5778 5785 

5779Un [subagent ripreso](/docs/it/agent-sdk/subagents#resume-subagents) segnala sempre `is_backgrounded: true`, perché Claude Code esegue ogni subagent ripreso in background. Quando un'attività in primo piano si sposta in background in seguito, Claude Code segnala il nuovo valore `is_backgrounded` in un messaggio [`task_updated`](#sdktaskupdatedmessage) piuttosto che inviare un secondo `task_started`.5786Un [subagent ripreso](/docs/it/agent-sdk/subagents#resume-subagents) riporta sempre `is_backgrounded: true`, perché Claude Code esegue ogni subagent ripreso in background. Quando un'attività in primo piano passa in seguito in background, Claude Code riporta il nuovo valore di `is_backgrounded` in un messaggio [`task_updated`](#sdktaskupdatedmessage) invece di inviare un secondo `task_started`.

5780 5787 

5781<h3 id="sdktaskprogressmessage">5788<h3 id="sdktaskprogressmessage">

5782 `SDKTaskProgressMessage`5789 `SDKTaskProgressMessage`


5784 5791 

5785Emesso periodicamente mentre un subagent o un'attività in background è in esecuzione.5792Emesso periodicamente mentre un subagent o un'attività in background è in esecuzione.

5786 5793 

5787Per un'attività di subagent, il campo `summary` contiene un riepilogo del progresso generato dal modello ed è popolato solo quando [`agentProgressSummaries`](#options) è abilitato. Per una [chiamata a uno strumento MCP messa in background](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls), `summary` contiene il progresso più recente segnalato dal server MCP e non dipende da questa opzione.5794Per un'attività di subagent, il campo `summary` contiene un riepilogo dell'avanzamento generato dal modello ed è popolato solo quando [`agentProgressSummaries`](#options) è abilitato. Per una [chiamata a uno strumento MCP spostata in background](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls), `summary` contiene l'ultimo avanzamento riportato dal server MCP e non dipende da tale opzione.

5788 5795 

5789```typescript theme={null}5796```typescript theme={null}

5790type SDKTaskProgressMessage = {5797type SDKTaskProgressMessage = {


5810 `SDKTaskUpdatedMessage`5817 `SDKTaskUpdatedMessage`

5811</h3>5818</h3>

5812 5819 

5813Emesso quando lo stato di un'attività in background cambia, ad esempio quando passa da `running` a `completed`. Esegui il merge di `patch` nella tua mappa locale delle attività con chiave `task_id`. Il campo `end_time` è un timestamp Unix epoch in millisecondi, confrontabile con `Date.now()`.5820Emesso quando lo stato di un'attività in background cambia, ad esempio quando passa da `running` a `completed`. Fai il merge di `patch` nella tua mappa locale delle attività con chiave `task_id`. Il campo `end_time` è un timestamp Unix epoch in millisecondi, confrontabile con `Date.now()`.

5814 5821 

5815```typescript theme={null}5822```typescript theme={null}

5816type SDKTaskUpdatedMessage = {5823type SDKTaskUpdatedMessage = {


5834 `SDKBackgroundTasksChangedMessage`5841 `SDKBackgroundTasksChangedMessage`

5835</h3>5842</h3>

5836 5843 

5837Emesso ogni volta che l'insieme delle attività in background attive cambia: un'attività inizia, si completa, viene terminata, un agente in primo piano viene messo in background, o il campo `description` o `ambient` di un'attività cambia.5844Emesso ogni volta che l'insieme delle attività in background attive cambia: un'attività inizia, viene completata, viene terminata, un agente in primo piano passa in background, oppure cambia il campo `description` o `ambient` di un'attività.

5838 5845 

5839L'array `tasks` è l'insieme completo attivo. Sostituisci qualsiasi insieme memorizzato nella cache con ogni payload invece di abbinare gli eventi `task_started` e `task_notification`, in modo che il prossimo cambio di appartenenza corregga qualsiasi evento che hai perso.5846L'array `tasks` è l'intero insieme attivo. Sostituisci qualsiasi insieme memorizzato nella cache con ogni payload invece di abbinare gli eventi `task_started` e `task_notification`, in modo che la successiva modifica dell'insieme corregga qualsiasi evento che ti sei perso.

5840 5847 

5841L'ordine relativo a quegli eventi per attività non è specificato, quindi non correlare i due flussi.5848L'ordinamento rispetto a quegli eventi per singola attività non è specificato, quindi non correlare i due flussi.

5842 5849 

5843Nulla viene emesso all'avvio. Reimposta a un insieme vuoto ogni volta che il processo CLI della sessione si avvia o si riavvia e lascia che il prossimo cambio di appartenenza lo ripopoli.5850All'avvio non viene emesso nulla. Reimposta su un insieme vuoto ogni volta che il processo CLI della sessione si avvia o si riavvia e lascia che la successiva modifica dell'insieme lo ripopoli.

5844 5851 

5845Quando invii una richiesta di controllo `initialize` ripetuta a una sessione in esecuzione, ad esempio con [`reinitialize()`](#query-object) dopo un'interruzione del trasporto, Claude Code fa seguire alla risposta uno snapshot dell'insieme attivo corrente, anche quando è vuoto. Un host che si ricollega quindi apprende cosa è in esecuzione senza aspettare il prossimo cambio di appartenenza. Prima di Agent SDK v0.3.239, Claude Code non inviava snapshot dopo un `initialize` ripetuto.5852Quando invii una richiesta di controllo `initialize` ripetuta a una sessione in esecuzione, ad esempio con [`reinitialize()`](#query-object) dopo un'interruzione del trasporto, Claude Code fa seguire alla risposta un'istantanea dell'insieme attivo corrente, anche quando è vuoto. Un host che si riconnette scopre quindi cosa è in esecuzione senza attendere la successiva modifica dell'insieme. Prima di Agent SDK v0.3.239, Claude Code non inviava alcuna istantanea dopo un `initialize` ripetuto.

5846 5853 

5847Richiede Claude Code v2.1.203 o successivo.5854Richiede Claude Code v2.1.203 o versioni successive.

5848 5855 

5849```typescript theme={null}5856```typescript theme={null}

5850type SDKBackgroundTasksChangedMessage = {5857type SDKBackgroundTasksChangedMessage = {


5865 `SDKThinkingTokensMessage`5872 `SDKThinkingTokensMessage`

5866</h3>5873</h3>

5867 5874 

5868Emesso mentre Claude sta producendo un blocco di ragionamento, incluso uno redatto. `estimated_tokens` è una stima progressiva dei token di ragionamento generati finora nel blocco corrente, e `estimated_tokens_delta` è l'incremento portato da questo frame. Usa queste stime per la visualizzazione del progresso.5875Emesso mentre Claude produce un blocco di ragionamento, incluso uno oscurato. `estimated_tokens` è una stima progressiva dei token di ragionamento generati finora nel blocco corrente, e `estimated_tokens_delta` è l'incremento riportato da questo frame. Usa queste stime per visualizzare l'avanzamento.

5869 5876 

5870Quando il modello o il provider segnala una suddivisione, il conteggio finale per il ciclo dell'agente di primo livello è il [`usage.output_tokens_details.thinking_tokens`](#usage) del messaggio di risultato, che [non include i token dei subagent](/docs/it/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).5877Quando il modello o il provider riporta una suddivisione, il conteggio finale per il ciclo dell'agente di primo livello è [`usage.output_tokens_details.thinking_tokens`](#usage) del messaggio di risultato, che [non include i token dei subagent](/docs/it/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).

5871 5878 

5872Richiede Claude Code v2.1.153 o successivo.5879Richiede Claude Code v2.1.153 o versioni successive.

5873 5880 

5874```typescript theme={null}5881```typescript theme={null}

5875type SDKThinkingTokensMessage = {5882type SDKThinkingTokensMessage = {


5887 `SDKSessionStateChangedMessage`5894 `SDKSessionStateChangedMessage`

5888</h3>5895</h3>

5889 5896 

5890Emesso quando Claude Code segnala lo stato della sessione. Per ricevere questi messaggi, imposta [`CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1`](/docs/it/env-vars#variables). Claude Code può segnalare lo stesso stato più di una volta, quindi leggi un messaggio come lo stato corrente della sessione piuttosto che come una transizione.5897Emesso quando Claude Code riporta lo stato della sessione. Per ricevere questi messaggi, imposta [`CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1`](/docs/it/env-vars#variables). Claude Code può riportare lo stesso stato più di una volta, quindi interpreta un messaggio come lo stato corrente della sessione piuttosto che come una transizione.

5891 5898 

5892Il campo `state` contiene uno di questi valori:5899Il campo `state` contiene uno di questi valori:

5893 5900 

5894* `running`: la sessione sta lavorando.5901* `running`: la sessione sta lavorando.

5895* `idle`: Claude Code è in attesa del tuo prossimo prompt.5902* `idle`: Claude Code è in attesa del tuo prossimo prompt.

5896* `requires_action`: la sessione è bloccata in attesa della risposta a una richiesta che ha inviato al tuo host, come una richiesta di permesso.5903* `requires_action`: la sessione è bloccata in attesa di una risposta a una richiesta inviata al tuo host, come una richiesta di permesso.

5897 5904 

5898Il messaggio `idle` di un turno e il suo messaggio `result` possono arrivare in qualsiasi ordine. Per cambiare se `idle` attende il lavoro in background, come un subagent in background o l'esecuzione di un [workflow](/docs/it/workflows), vedi [`CLAUDE_CODE_BG_TASKS_REPORT_RUNNING`](/docs/it/env-vars#variables).5905Il messaggio `idle` di un turno e il suo messaggio `result` possono arrivare in qualsiasi ordine. Per cambiare se `idle` attende il lavoro in background, come un subagent in background o un'esecuzione di un [workflow](/docs/it/workflows), consulta [`CLAUDE_CODE_BG_TASKS_REPORT_RUNNING`](/docs/it/env-vars#variables).

5899 5906 

5900```typescript theme={null}5907```typescript theme={null}

5901type SDKSessionStateChangedMessage = {5908type SDKSessionStateChangedMessage = {


5911 `SDKFilesPersistedEvent`5918 `SDKFilesPersistedEvent`

5912</h3>5919</h3>

5913 5920 

5914Emesso quando i checkpoint dei file vengono persistiti su disco.5921Emesso quando i checkpoint dei file vengono salvati su disco.

5915 5922 

5916```typescript theme={null}5923```typescript theme={null}

5917type SDKFilesPersistedEvent = {5924type SDKFilesPersistedEvent = {


5947};5954};

5948```5955```

5949 5956 

5950Quando `errorCode` è `"credits_required"`, il rifiuto proviene da un abbonamento claude.ai il cui utilizzo incluso è esaurito, e la sessione non può continuare fino a quando l'utente non acquista crediti di utilizzo. `canUserPurchaseCredits` indica se l'utente autenticato può acquistare crediti per l'account, e `hasChargeableSavedPaymentMethod` indica se un metodo di pagamento salvato è registrato. Tutti e tre i campi sono assenti negli eventi di rate limit che non sono rifiuti con crediti richiesti. Richiede Claude Code v2.1.181 o successivo.5957Quando `errorCode` è `"credits_required"`, il rifiuto proviene da un abbonamento claude.ai il cui utilizzo incluso è esaurito, e la sessione non può continuare finché l'utente non acquista crediti di utilizzo. `canUserPurchaseCredits` indica se l'utente autenticato può acquistare crediti per l'account, e `hasChargeableSavedPaymentMethod` indica se è registrato un metodo di pagamento salvato. Tutti e tre i campi sono assenti negli eventi di rate limit che non sono rifiuti per crediti richiesti. Richiede Claude Code v2.1.181 o versioni successive.

5951 5958 

5952<h3 id="sdklocalcommandoutputmessage">5959<h3 id="sdklocalcommandoutputmessage">

5953 `SDKLocalCommandOutputMessage`5960 `SDKLocalCommandOutputMessage`


5969 `SDKCommandsChangedMessage`5976 `SDKCommandsChangedMessage`

5970</h3>5977</h3>

5971 5978 

5972Emesso quando l'insieme dei comandi disponibili cambia durante la sessione, ad esempio quando Claude Code scopre skill mentre l'agente entra in una sottodirectory. L'array `commands` è l'elenco completo aggiornato, quindi sostituisci qualsiasi elenco di comandi memorizzato nella cache con questo payload. Chiamare [`supportedCommands()`](#query-object) dopo questo messaggio restituisce lo stesso elenco aggiornato, perché il metodo traccia l'ultimo push; questo richiede Agent SDK v0.3.216 o successivo. Nelle versioni SDK precedenti, `supportedCommands()` restituisce lo snapshot acquisito all'inizializzazione e non riflette mai i cambiamenti durante la sessione.5979Emesso quando l'insieme dei comandi disponibili cambia durante la sessione, ad esempio quando Claude Code scopre delle skill mentre l'agente entra in una sottodirectory. L'array `commands` è l'intero elenco aggiornato, quindi sostituisci qualsiasi elenco di comandi memorizzato nella cache con questo payload. Chiamare [`supportedCommands()`](#query-object) dopo questo messaggio restituisce lo stesso elenco aggiornato, perché il metodo segue l'invio più recente; questo richiede Agent SDK v0.3.216 o versioni successive. Nelle versioni precedenti dell'SDK, `supportedCommands()` restituisce l'istantanea acquisita all'inizializzazione e non riflette mai le modifiche durante la sessione.

5973 5980 

5974Claude Code emette questo messaggio anche quando i [prompt](/docs/it/mcp#use-mcp-prompts-as-commands) di un server MCP entrano o escono dall'elenco, ad esempio quando un server finisce di connettersi dopo l'avvio della sessione. Questo richiede Claude Code v2.1.281 o successivo.5981Claude Code emette questo messaggio anche quando i [prompt](/docs/it/mcp#use-mcp-prompts-as-commands) di un server MCP entrano o escono dall'elenco, ad esempio quando un server termina la connessione dopo l'avvio della sessione. Questo richiede Claude Code v2.1.281 o versioni successive.

5975 5982 

5976```typescript theme={null}5983```typescript theme={null}

5977type SDKCommandsChangedMessage = {5984type SDKCommandsChangedMessage = {


5987 `SDKPromptSuggestionMessage`5994 `SDKPromptSuggestionMessage`

5988</h3>5995</h3>

5989 5996 

5990Emesso dopo un turno quando [`promptSuggestions`](#options) è abilitato e Claude Code ha generato un suggerimento per quel turno. Contiene il prompt utente successivo previsto. Per i turni che non ne ricevono, vedi [Quando Claude Code salta i suggerimenti](/docs/it/interactive-mode#when-claude-code-skips-suggestions).5997Emesso dopo un turno quando [`promptSuggestions`](#options) è abilitato e Claude Code ha generato un suggerimento per quel turno. Contiene il prossimo prompt dell'utente previsto. Per i turni che non ne ricevono, consulta [Quando Claude Code salta i suggerimenti](/docs/it/interactive-mode#when-claude-code-skips-suggestions).

5991 5998 

5992```typescript theme={null}5999```typescript theme={null}

5993type SDKPromptSuggestionMessage = {6000type SDKPromptSuggestionMessage = {


6016};6023};

6017```6024```

6018 6025 

6019I campi opzionali descrivono il ripristino:6026I campi facoltativi descrivono il reset:

6020 6027 

6021* `trigger`: cosa ha scartato la conversazione. Ripristina la tua trascrizione su ogni messaggio `conversation_reset`, incluso uno in cui questo campo è assente o contiene un valore che non riconosci.6028* `trigger`: cosa ha scartato la conversazione. Reimposta la tua trascrizione a ogni messaggio `conversation_reset`, incluso uno in cui questo campo è assente o contiene un valore che non riconosci.

6022* `user_message_uuid`: l'`uuid` del messaggio utente che conteneva il `/clear`. Usalo per abbinare il ripristino a quel messaggio.6029* `user_message_uuid`: l'`uuid` del messaggio dell'utente che conteneva il `/clear`. Usalo per associare il reset a quel messaggio.

6023* `timestamp`: quando è avvenuto il ripristino, come una stringa ISO 8601 in UTC. Usalo per la visualizzazione, non per ordinare i messaggi.6030* `timestamp`: quando è avvenuto il reset, come stringa ISO 8601 in UTC. Usalo per la visualizzazione, non per ordinare i messaggi.

6024 6031 

6025I campi `trigger`, `user_message_uuid` e `timestamp` richiedono Claude Code v2.1.281 o successivo.6032I campi `trigger`, `user_message_uuid` e `timestamp` richiedono Claude Code v2.1.281 o versioni successive.

6026 6033 

6027I tipi pubblicati dall'SDK dichiarano `SDKConversationResetMessage` in Claude Code v2.1.203 e successivo. Prima di v2.1.203, `SDKMessage` faceva riferimento al tipo senza dichiararlo, quindi il restringimento su `type === "conversation_reset"` non superava il controllo dei tipi quando `skipLibCheck` era disabilitato.6034Le tipizzazioni pubblicate dell'SDK dichiarano `SDKConversationResetMessage` in Claude Code v2.1.203 e versioni successive. Prima della v2.1.203, `SDKMessage` faceva riferimento al tipo senza dichiararlo, quindi il restringimento su `type === "conversation_reset"` non superava il controllo dei tipi quando `skipLibCheck` era disabilitato.

6028 6035 

6029<h3 id="aborterror">6036<h3 id="aborterror">

6030 `AbortError`6037 `AbortError`

6031</h3>6038</h3>

6032 6039 

6033Classe di errore personalizzata per le operazioni di interruzione.6040Classe di errore personalizzata per le operazioni di abort.

6034 6041 

6035```typescript theme={null}6042```typescript theme={null}

6036class AbortError extends Error {}6043class AbortError extends Error {}

6037```6044```

6038 6045 

6039`AbortError` è l'unica classe di errore nell'API tipizzata dell'SDK. Altri errori, come il processo Claude Code che esce o non riesce ad avviarsi, rifiutano l'iterazione dei messaggi con errori che non portano alcuna classe SDK su cui fare il confronto. [Risoluzione dei problemi](/docs/it/agent-sdk/troubleshooting) cataloga quegli errori per messaggio, con la causa e la correzione per ciascuno.6046`AbortError` è l'unica classe di errore nell'API tipizzata dell'SDK. Gli altri errori, come l'uscita o il mancato avvio del processo Claude Code, rifiutano l'iterazione dei messaggi con errori che non hanno alcuna classe dell'SDK su cui fare il confronto. [Risoluzione dei problemi](/docs/it/agent-sdk/troubleshooting) classifica questi errori in base al messaggio, con la causa e la soluzione per ciascuno.

6040 6047 

6041<h2 id="sandbox-configuration">6048<h2 id="sandbox-configuration">

6042 Configurazione della sandbox6049 Configurazione della sandbox

agent-view.md +1 −0

Details

819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Elimina una sessione la cui eliminazione è stata rifiutata a causa di commit non sottoposti a push, scartando il worktree insieme al suo branch e ai commit. Passa il valore esatto che il rifiuto ha stampato; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). Richiede v2.1.260 o successivo |819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Elimina una sessione la cui eliminazione è stata rifiutata a causa di commit non sottoposti a push, scartando il worktree insieme al suo branch e ai commit. Passa il valore esatto che il rifiuto ha stampato; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). Richiede v2.1.260 o successivo |

820| `claude rm <id> --force-remove-worktree <worktree-id>` | Elimina una sessione la cui eliminazione è stata rifiutata perché git o l'hook `WorktreeRemove` non potevano rimuovere il suo worktree, eliminando comunque la directory del worktree e lasciando il suo branch nel repository. Passa il valore esatto che il rifiuto ha stampato; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). Richiede v2.1.268 o successivo |820| `claude rm <id> --force-remove-worktree <worktree-id>` | Elimina una sessione la cui eliminazione è stata rifiutata perché git o l'hook `WorktreeRemove` non potevano rimuovere il suo worktree, eliminando comunque la directory del worktree e lasciando il suo branch nel repository. Passa il valore esatto che il rifiuto ha stampato; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). Richiede v2.1.268 o successivo |

821| `claude daemon status` | Stampa lo stato del [supervisore](#the-supervisor-process), la versione, la directory socket e il numero di worker |821| `claude daemon status` | Stampa lo stato del [supervisore](#the-supervisor-process), la versione, la directory socket e il numero di worker |

822| `claude daemon logs` | Segue il file di log del supervisore, [`~/.claude/daemon.log`](#where-state-is-stored), stampando le nuove righe man mano che arrivano finché non premi `Ctrl+C` |

822| `claude daemon stop --any` | Ferma il processo supervisore e le sessioni in background che ospita. Passa `--keep-workers` per lasciare le sessioni in background in esecuzione in modo che il supervisore successivo si riconnetta ad esse. Il prossimo `claude agents` o `claude --bg` avvia un supervisore nuovo |823| `claude daemon stop --any` | Ferma il processo supervisore e le sessioni in background che ospita. Passa `--keep-workers` per lasciare le sessioni in background in esecuzione in modo che il supervisore successivo si riconnetta ad esse. Il prossimo `claude agents` o `claude --bg` avvia un supervisore nuovo |

823 824 

824`claude attach` e `claude logs` possono accettare parte del nome di una sessione in esecuzione al posto dell'ID, come in `claude logs "auth refactor"`. Passare un nome richiede Claude Code v2.1.290 o successivo.825`claude attach` e `claude logs` possono accettare parte del nome di una sessione in esecuzione al posto dell'ID, come in `claude logs "auth refactor"`. Passare un nome richiede Claude Code v2.1.290 o successivo.

agents.md +1 −1

Details

20 20 

21Tre ulteriori strumenti supportano questo lavoro senza essere un modo per eseguire agenti stessi:21Tre ulteriori strumenti supportano questo lavoro senza essere un modo per eseguire agenti stessi:

22 22 

23* [Worktrees](/docs/it/worktrees) danno a ogni sessione un checkout git separato, così le sessioni parallele non modificano mai gli stessi file. Usateli per le sessioni che eseguite voi stessi. Una sessione che inviate da visualizzazione agenti [si sposta nel suo proprio worktree prima di modificare i file](/docs/it/agent-view#how-file-edits-are-isolated), e i subagenti che generate possono ottenerne uno anche loro.23* I [worktree](/docs/it/worktrees) danno a ogni sessione un checkout git separato, così ogni sessione parallela modifica la propria copia dei file. Usali per le sessioni che esegui tu stesso. Una sessione che invii dalla visualizzazione agenti [si sposta in un proprio worktree prima di modificare i file](/docs/it/agent-view#how-file-edits-are-isolated), e anche i subagent che generi possono ottenerne uno ciascuno.

24* [Messaggistica tra sessioni](/docs/it/cross-session-messaging) consente a Claude di elencare e inviare messaggi alle Vostre altre sessioni Claude Code su questa macchina, su un'altra macchina, o [nel cloud](/docs/it/claude-code-on-the-web), così le sessioni che eseguite voi stessi possono passare risultati e stato tra di loro.24* [Messaggistica tra sessioni](/docs/it/cross-session-messaging) consente a Claude di elencare e inviare messaggi alle Vostre altre sessioni Claude Code su questa macchina, su un'altra macchina, o [nel cloud](/docs/it/claude-code-on-the-web), così le sessioni che eseguite voi stessi possono passare risultati e stato tra di loro.

25* [`/batch`](/docs/it/commands) è una [skill](/docs/it/skills) che ha Claude dividere un grande cambiamento in 5 a 30 subagenti isolati da worktree. È un uso confezionato di subagenti e worktrees, non uno stile di coordinamento separato.25* [`/batch`](/docs/it/commands) è una [skill](/docs/it/skills) che ha Claude dividere un grande cambiamento in 5 a 30 subagenti isolati da worktree. È un uso confezionato di subagenti e worktrees, non uno stile di coordinamento separato.

26 26 

Details

681 681 

682Amazon Bedrock trasmette le risposte `InvokeModelWithResponseStream` in un formato binario event-stream con l'intestazione `Content-Type: application/vnd.amazon.eventstream`. Un gateway o proxy tra Claude Code e Amazon Bedrock deve inoltrare il corpo della risposta e le sue intestazioni, incluso `Content-Type`, così come Amazon Bedrock le ha inviate.682Amazon Bedrock trasmette le risposte `InvokeModelWithResponseStream` in un formato binario event-stream con l'intestazione `Content-Type: application/vnd.amazon.eventstream`. Un gateway o proxy tra Claude Code e Amazon Bedrock deve inoltrare il corpo della risposta e le sue intestazioni, incluso `Content-Type`, così come Amazon Bedrock le ha inviate.

683 683 

684Se il gateway riscrive `Content-Type` in un altro valore, Claude Code rifiuta la risposta con un errore che inizia con `Bedrock streaming response has content-type`, indicando il valore che ha ricevuto. La riscrittura comune è `text/event-stream`, da un'integrazione che ri-emette il flusso come server-sent events.684Se il gateway riscrive `Content-Type` in un altro valore, Claude Code rifiuta la risposta con un errore che inizia con `Bedrock streaming response has content-type`, indicando il valore che ha ricevuto. La riscrittura comune è `text/event-stream`, da un'integrazione che ri-emette il flusso come server-sent events. Per la variabile `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` indicata dal messaggio di errore, consulta [Bedrock streaming response has an unexpected content-type](/docs/it/errors#bedrock-streaming-response-has-an-unexpected-content-type).

685 685 

686Se il gateway elimina o cancella l'intestazione, Claude Code presume che il corpo sia il flusso di eventi di Amazon Bedrock e lo decodifica, quindi un corpo che il gateway ha fatto passare senza modifiche continua a trasmettere.686Se il gateway elimina o cancella l'intestazione, Claude Code presume che il corpo sia il flusso di eventi di Amazon Bedrock e lo decodifica, quindi un corpo che il gateway ha fatto passare senza modifiche continua a trasmettere.

687 687 

Details

12 Accedi a Claude Code12 Accedi a Claude Code

13</h2>13</h2>

14 14 

15Dopo aver [installato Claude Code](/docs/it/setup#install-claude-code), eseguite `claude` nel vostro terminale. Al primo avvio, Claude Code apre una finestra del browser per consentirvi di accedere. Se avete impostato la variabile di ambiente `ANTHROPIC_API_KEY`, Claude Code salta il prompt di accesso e vi chiede invece di approvare la chiave.15Dopo aver [installato Claude Code](/docs/it/setup#install-claude-code), esegui `claude` nel tuo terminale. Al primo avvio, Claude Code apre una finestra del browser per consentirti di accedere. Se hai impostato la variabile d'ambiente `ANTHROPIC_API_KEY` e approvi la chiave quando Claude Code ti chiede se utilizzarla, Claude Code salta il prompt di accesso.

16 16 

17Se il browser non si apre automaticamente, premete `c` per copiare l'URL di accesso negli appunti, quindi incollatelo nel vostro browser.17Se il browser non si apre automaticamente, premete `c` per copiare l'URL di accesso negli appunti, quindi incollatelo nel vostro browser.

18 18 

Details

349}349}

350```350```

351 351 

352Ottieni feedback AI sulle tue regole `allow`, `soft_deny` e `hard_deny` personalizzate:352Ottieni feedback AI sulle tue voci `allow`, `soft_deny`, `hard_deny` e `environment` personalizzate:

353 353 

354```bash theme={null}354```bash theme={null}

355claude auto-mode critique355claude auto-mode critique

chrome.md +1 −1

Details

343 343 

344| Errore | Causa | Soluzione |344| Errore | Causa | Soluzione |

345| - | - | - |345| - | - | - |

346| "Browser extension is not connected" | L'host di messaggistica nativa non può raggiungere l'estensione, oppure l'allowlist IP della tua organizzazione rifiuta la connessione a `bridge.claudeusercontent.com` | Riavvia Chrome e Claude Code, quindi esegui `/chrome` per riconnetterti. Se la tua organizzazione utilizza l'allowlist IP e l'errore persiste, vedi [Organization IP allowlists and proxy egress](/docs/it/network-config#organization-ip-allowlists-and-proxy-egress) |346| "Browser extension is not connected" | L'host di messaggistica nativa non può raggiungere l'estensione, oppure l'allowlist IP della tua organizzazione rifiuta la connessione a `bridge.claudeusercontent.com` | Verifica che nell'estensione sia stato effettuato l'accesso allo stesso account claude.ai di Claude Code, riavvia Chrome e Claude Code, quindi esegui `/chrome` per riconnetterti. Se la tua organizzazione utilizza l'allowlist IP e l'errore persiste, vedi [Organization IP allowlists and proxy egress](/docs/it/network-config#organization-ip-allowlists-and-proxy-egress) |

347| Extension shows "Not detected" in `/chrome` | L'estensione Chrome non è installata o è disabilitata | Installa o abilita l'estensione in `chrome://extensions` |347| Extension shows "Not detected" in `/chrome` | L'estensione Chrome non è installata o è disabilitata | Installa o abilita l'estensione in `chrome://extensions` |

348| "No tab available" | Claude ha tentato di agire prima che una scheda fosse pronta | Chiedi a Claude di creare una nuova scheda e riprovare |348| "No tab available" | Claude ha tentato di agire prima che una scheda fosse pronta | Chiedi a Claude di creare una nuova scheda e riprovare |

349| "Receiving end does not exist" | Il service worker dell'estensione è diventato inattivo | Esegui `/chrome` e seleziona "Reconnect extension" |349| "Receiving end does not exist" | Il service worker dell'estensione è diventato inattivo | Esegui `/chrome` e seleziona "Reconnect extension" |

Details

75| - | - |75| - | - |

76| Claude Code v2.1.195 o successivo | Il sottocomando `claude gateway` e il flusso di accesso al gateway vengono spediti in v2.1.195. Le build pubbliche precedenti non le includono. Sia la macchina che esegue il server gateway che la macchina di ogni sviluppatore devono essere su v2.1.195 o successivo; esegui `claude update` per ottenere l'ultimo rilascio. L'[upstream Claude Platform su AWS](/docs/it/claude-apps-gateway-config#claude-platform-on-aws) richiede Claude Code v2.1.198 o successivo sul server gateway. |76| Claude Code v2.1.195 o successivo | Il sottocomando `claude gateway` e il flusso di accesso al gateway vengono spediti in v2.1.195. Le build pubbliche precedenti non le includono. Sia la macchina che esegue il server gateway che la macchina di ogni sviluppatore devono essere su v2.1.195 o successivo; esegui `claude update` per ottenere l'ultimo rilascio. L'[upstream Claude Platform su AWS](/docs/it/claude-apps-gateway-config#claude-platform-on-aws) richiede Claude Code v2.1.198 o successivo sul server gateway. |

77| Provider di identità OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, o Dex, o qualsiasi altro IdP conforme a OIDC come PingFederate. Il gateway esegue il discovery OIDC standard e il flusso del codice di autorizzazione rispetto ad esso. SAML e LDAP non sono supportati. |77| Provider di identità OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, o Dex, o qualsiasi altro IdP conforme a OIDC come PingFederate. Il gateway esegue il discovery OIDC standard e il flusso del codice di autorizzazione rispetto ad esso. SAML e LDAP non sono supportati. |

78| PostgreSQL 14 o successivo | Supporta il flusso di accesso del dispositivo, dove il callback del browser scrive e il CLI di polling legge, più contatori di limite di velocità. Qualsiasi Postgres gestito funziona, incluso il livello più piccolo. Senza limiti di spesa configurati, il gateway archivia pochi KB di stato di autenticazione di breve durata; con [limiti di spesa](/docs/it/claude-apps-gateway-spend-limits), contiene anche tabelle di spesa durevole, audit e identità che dovrebbero essere sottoposte a backup. TLS tramite `?sslmode=require` è consigliato. |78| PostgreSQL 11 o successivo | Supporta il flusso di accesso del dispositivo e i contatori dei rate limit. Funziona un servizio PostgreSQL gestito, incluso il livello più piccolo; vedi [quali database sono supportati](/docs/it/claude-apps-gateway-deploy#postgres). Con [limiti di spesa](/docs/it/claude-apps-gateway-spend-limits), contiene anche tabelle di spesa durevole, audit e identità che dovrebbero essere sottoposte a backup. TLS tramite `?sslmode=require` è consigliato. PostgreSQL 11, 12 e 13 richiedono Claude Code v2.1.290 o successivo sul server gateway. Il progetto PostgreSQL non mantiene più quelle versioni, quindi usane una più recente dove puoi. |

79| Upstream del modello | Credenziali Amazon Bedrock, credenziali Claude Platform su AWS, credenziali Google Cloud, una risorsa Microsoft Foundry o una chiave API Anthropic. Sono supportati più upstream con failover. |79| Upstream del modello | Credenziali Amazon Bedrock, credenziali Claude Platform su AWS, credenziali Google Cloud, una risorsa Microsoft Foundry o una chiave API Anthropic. Sono supportati più upstream con failover. |

80| HTTPS | Il gateway deve essere raggiungibile su `https://` dai laptop degli sviluppatori e da qualsiasi browser utilizzato per l'accesso; il gateway serve la pagina di verifica del dispositivo sullo stesso listener. Fornisci un certificato TLS tramite `listen.tls` o esegui dietro un ingresso che termina TLS, e imposta `listen.public_url` all'origine esterna in entrambi i casi. Su `/login`, Claude Code accetta un'origine `http://` semplice solo quando l'host del gateway è loopback: `localhost`, `127.0.0.1`, o `::1`. |80| HTTPS | Il gateway deve essere raggiungibile su `https://` dai laptop degli sviluppatori e da qualsiasi browser utilizzato per l'accesso; il gateway serve la pagina di verifica del dispositivo sullo stesso listener. Fornisci un certificato TLS tramite `listen.tls` o esegui dietro un ingresso che termina TLS, e imposta `listen.public_url` all'origine esterna in entrambi i casi. Su `/login`, Claude Code accetta un'origine `http://` semplice solo quando l'host del gateway è loopback: `localhost`, `127.0.0.1`, o `::1`. |

81| Indirizzo di rete privata | Su `/login`, Claude Code richiede che il nome host o l'indirizzo IP del gateway si risolvano solo in indirizzi privati: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, o loopback. Per un gateway che ospiti, qualsiasi indirizzo pubblico al di fuori di un blocco che dichiari è rifiutato; vedi il [modello di minaccia](/docs/it/claude-apps-gateway-deploy#threat-model-summary) nella guida di distribuzione. Se le macchine degli sviluppatori instradano HTTPS attraverso un proxy aziendale, l'accesso richiede anche che l'host proxy si risolva in indirizzi privati; se non lo fa, aggiungi l'host del gateway a `NO_PROXY` in modo che il CLI si connetta direttamente. Se la tua rete interna è numerata da spazio IPv4 pubblico che la tua organizzazione possiede, [dichiara quei blocchi](#allow-a-gateway-on-public-address-space-you-own) in modo che `/login` accetti un gateway lì. |81| Indirizzo di rete privata | Su `/login`, Claude Code richiede che il nome host o l'indirizzo IP del gateway si risolvano solo in indirizzi privati: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, o loopback. Per un gateway che ospiti, qualsiasi indirizzo pubblico al di fuori di un blocco che dichiari è rifiutato; vedi il [modello di minaccia](/docs/it/claude-apps-gateway-deploy#threat-model-summary) nella guida di distribuzione. Se le macchine degli sviluppatori instradano HTTPS attraverso un proxy aziendale, l'accesso richiede anche che l'host proxy si risolva in indirizzi privati; se non lo fa, aggiungi l'host del gateway a `NO_PROXY` in modo che il CLI si connetta direttamente. Se la tua rete interna è numerata da spazio IPv4 pubblico che la tua organizzazione possiede, [dichiara quei blocchi](#allow-a-gateway-on-public-address-space-you-own) in modo che `/login` accetti un gateway lì. |


91 </Step>91 </Step>

92 92 

93 <Step title="Provisioning di un database PostgreSQL">93 <Step title="Provisioning di un database PostgreSQL">

94 Qualsiasi Postgres 14 o successivo funziona, incluso il livello gestito più piccolo. Il gateway esegue le proprie migrazioni dello schema all'avvio, quindi il ruolo del database ha bisogno dei diritti per creare e alterare le tabelle; vedi [`store`](/docs/it/claude-apps-gateway-config#store).94 Usa PostgreSQL 11 o successivo. Il livello gestito più piccolo è sufficiente. Il gateway esegue le proprie migrazioni dello schema all'avvio, quindi il ruolo del database ha bisogno dei diritti per creare e alterare le tabelle; vedi [`store`](/docs/it/claude-apps-gateway-config#store).

95 </Step>95 </Step>

96 96 

97 <Step title="Scrivi gateway.yaml">97 <Step title="Scrivi gateway.yaml">

Details

158Il gateway legge la chiave e il certificato una sola volta all'avvio, quindi un file modificato ha effetto solo dopo un riavvio. Esegui la rotazione in questo ordine in modo che nessuna richiesta di token presenti un certificato che l'IdP non ha:158Il gateway legge la chiave e il certificato una sola volta all'avvio, quindi un file modificato ha effetto solo dopo un riavvio. Esegui la rotazione in questo ordine in modo che nessuna richiesta di token presenti un certificato che l'IdP non ha:

159 159 

1601. Carica il nuovo certificato sull'IdP accanto a quello vecchio.1601. Carica il nuovo certificato sull'IdP accanto a quello vecchio.

1612. Sostituisci i file della chiave e del certificato che `gateway.yaml` carica, quindi riavvia il gateway.1612. Sostituisci i file della chiave e del certificato che `gateway.yaml` carica, quindi riavvia il gateway. Se esegui più repliche, un [riavvio progressivo](/docs/it/claude-apps-gateway-deploy#upgrades) funziona, perché l'IdP ha entrambi i certificati finché non rimuovi quello vecchio.

1623. Rimuovi il vecchio certificato dall'IdP.1623. Dopo che ogni replica si è riavviata, rimuovi il vecchio certificato dall'IdP.

163 163 

164<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

165 Richieste IdP attraverso un forward proxy165 Richieste IdP attraverso un forward proxy


227 227 

228| Campo | Obbligatorio | Descrizione |228| Campo | Obbligatorio | Descrizione |

229| - | - | - |229| - | - | - |

230| `postgres_url` | Sì | URL `postgres://` o `postgresql://`. Obbligatorio: il punto d'incontro della concessione del dispositivo, dove il callback del browser scrive e la CLI in polling legge, richiede uno stato condiviso tra repliche. Il gateway esegue le proprie migrazioni dello schema all'avvio e all'aggiornamento, quindi il ruolo ha bisogno dei diritti per creare e modificare tabelle sullo schema di destinazione. Consulta [Aggiornamenti](/docs/it/claude-apps-gateway-deploy#upgrades) e [Postgres](/docs/it/claude-apps-gateway-deploy#postgres). |230| `postgres_url` | Sì | URL `postgres://` o `postgresql://` con un solo host, non un elenco separato da virgole. Il gateway esegue le proprie migrazioni dello schema all'avvio e all'aggiornamento, quindi il ruolo ha bisogno dei diritti per creare e modificare tabelle sullo schema di destinazione. Consulta [Aggiornamenti](/docs/it/claude-apps-gateway-deploy#upgrades) e [Postgres](/docs/it/claude-apps-gateway-deploy#postgres). |

231| `username` | No | Sovrascrive l'utente in `postgres_url` |231| `username` | No | Sovrascrive l'utente in `postgres_url` |

232| `password` | No | Credenziale del database. Impostala qui anziché in `postgres_url` in modo che la credenziale rimanga fuori dall'URL. Accetta qualsiasi carattere e ha la precedenza sulle credenziali dell'URL. |232| `password` | No | Credenziale del database. Impostala qui anziché in `postgres_url` in modo che la credenziale rimanga fuori dall'URL. Accetta qualsiasi carattere e ha la precedenza sulle credenziali dell'URL. |

233| `max_connections` | No | Dimensione del pool di connessioni Postgres per replica. Predefinito `5`, che è conservativo e adatto ai database condivisi. Con i [limiti di spesa](#admin) abilitati, il percorso critico esegue alcune operazioni per richiesta di inferenza, quindi aumentalo per un database dedicato sotto carico e mantieni repliche × questo valore al di sotto del `max_connections` del database. |233| `max_connections` | No | Dimensione del pool di connessioni Postgres per replica. Predefinito `5`, che è conservativo e adatto ai database condivisi. Con i [limiti di spesa](#admin) abilitati, il percorso critico esegue alcune operazioni per richiesta di inferenza, quindi aumentalo per un database dedicato sotto carico e mantieni repliche × questo valore al di sotto del `max_connections` del database. |

Details

249 Postgres249 Postgres

250</h3>250</h3>

251 251 

252Il gateway memorizza il suo stato in un database PostgreSQL:

253 

254* **Database**: PostgreSQL stesso, self-hosted o gestito, alla [versione minima](/docs/it/claude-apps-gateway#prerequisites) o successiva. I database che implementano solo il protocollo Postgres, come i database SQL distribuiti, non sono supportati.

255* **Indirizzo**: `store.postgres_url` accetta un solo host. Se il database ha più nodi, usa l'indirizzo che si trova davanti a essi, come l'endpoint del tuo servizio gestito, un load balancer o un IP virtuale. Imposta un [periodo di grazia della readiness](#readiness-grace-period) più lungo di quanto impiega un failover.

256 

252Il gateway contiene cinque tabelle di dati più una tabella `_migrations`, tutte create dalle sue migrazioni al momento dell'avvio:257Il gateway contiene cinque tabelle di dati più una tabella `_migrations`, tutte create dalle sue migrazioni al momento dell'avvio:

253 258 

254| Tabella | Contenuti | Conservazione |259| Tabella | Contenuti | Conservazione |


396| CLI `/login`: `Could not resolve the configured HTTP proxy` | Il nome host in `HTTPS_PROXY` o `HTTP_PROXY` non si risolve dalla macchina dello sviluppatore, tipicamente perché non è connesso alla rete aziendale | Chiedi allo sviluppatore di connettersi alla tua rete o VPN e riprovare, oppure correggi l'URL del proxy |401| CLI `/login`: `Could not resolve the configured HTTP proxy` | Il nome host in `HTTPS_PROXY` o `HTTP_PROXY` non si risolve dalla macchina dello sviluppatore, tipicamente perché non è connesso alla rete aziendale | Chiedi allo sviluppatore di connettersi alla tua rete o VPN e riprovare, oppure correggi l'URL del proxy |

397| CLI `/login`: `Could not resolve gateway host <host>` | La macchina non può risolvere il nome DNS interno del gateway, tipicamente perché non è sulla rete aziendale | Chiedi allo sviluppatore di connettersi alla tua rete o VPN, quindi riprova `/login` |402| CLI `/login`: `Could not resolve gateway host <host>` | La macchina non può risolvere il nome DNS interno del gateway, tipicamente perché non è sulla rete aziendale | Chiedi allo sviluppatore di connettersi alla tua rete o VPN, quindi riprova `/login` |

398| L'avvio esce con un errore di convalida della configurazione che nomina `store.postgres_url` | Nessun Postgres configurato; il gateway richiede Postgres | Imposta `store.postgres_url`. Per lo sviluppo locale, utilizza un container usa e getta: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |403| L'avvio esce con un errore di convalida della configurazione che nomina `store.postgres_url` | Nessun Postgres configurato; il gateway richiede Postgres | Imposta `store.postgres_url`. Per lo sviluppo locale, utilizza un container usa e getta: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

404| L'avvio esce: `store.postgres_url in <path> is not a URL the gateway can read`, oppure, prima di v2.1.290, un semplice `Invalid URL` o `URI error` | L'URL non può essere analizzato, ad esempio perché elenca più di un host o la sua password contiene un `/`, `?`, `#` o `%` non codificato | Indica [un solo host](#postgres) e sposta la password in [`store.password`](/docs/it/claude-apps-gateway-config#store) |

399| L'avvio esce: `requires the native binary` | In esecuzione sotto Node invece del binario nativo | Installa Claude Code con uno dei [metodi di installazione standalone](/docs/it/setup) |405| L'avvio esce: `requires the native binary` | In esecuzione sotto Node invece del binario nativo | Installa Claude Code con uno dei [metodi di installazione standalone](/docs/it/setup) |

400| L'avvio esce con un errore di scoperta OIDC dopo `config.load` | `oidc.issuer` non raggiungibile, oppure la catena TLS non è attendibile | Controlla che l'emittente sia raggiungibile dal pod e serva `/.well-known/openid-configuration`. Imposta `ca_cert_pem` per PKI privata. Se il pod raggiunge l'IdP solo attraverso un proxy forward, imposta [`oidc.use_proxy: true`](/docs/it/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); nelle versioni precedenti a v2.1.227, fornisci al pod una rotta diretta a ciascuno degli endpoint dell'IdP invece. Se il pod inoltre non può risolvere il nome host dell'IdP, oppure il proxy rifiuta `CONNECT` a un indirizzo IP, vedi [Proxy-only egress](/docs/it/claude-apps-gateway-config#proxy-only-egress), che richiede v2.1.277 o successivo. |406| L'avvio esce con un errore di scoperta OIDC dopo `config.load` | `oidc.issuer` non raggiungibile, oppure la catena TLS non è attendibile | Controlla che l'emittente sia raggiungibile dal pod e serva `/.well-known/openid-configuration`. Imposta `ca_cert_pem` per PKI privata. Se il pod raggiunge l'IdP solo attraverso un proxy forward, imposta [`oidc.use_proxy: true`](/docs/it/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); nelle versioni precedenti a v2.1.227, fornisci al pod una rotta diretta a ciascuno degli endpoint dell'IdP invece. Se il pod inoltre non può risolvere il nome host dell'IdP, oppure il proxy rifiuta `CONNECT` a un indirizzo IP, vedi [Proxy-only egress](/docs/it/claude-apps-gateway-config#proxy-only-egress), che richiede v2.1.277 o successivo. |

401| L'avvio esce con un errore di permessi Postgres | Il ruolo del database manca dei diritti DDL sul suo schema | Concedi al ruolo `CREATE` sullo schema del gateway in modo che possa creare e alterare le sue tabelle all'avvio |407| L'avvio esce con un errore di permessi Postgres | Il ruolo del database manca dei diritti DDL sul suo schema | Concedi al ruolo `CREATE` sullo schema del gateway in modo che possa creare e alterare le sue tabelle all'avvio |

402| Log: `could not connect to Postgres at boot, attempt 1 of 3` | Il database non era raggiungibile quando il gateway è stato avviato, ad esempio su un'istanza fredda la cui rete è ancora in fase di avvio | Se il gateway finisce di avviarsi, non è necessaria alcuna azione. Quando il database non è raggiungibile, il gateway tenta la connessione tre volte, due secondi di distanza, prima di uscire. Se esce con `could not connect to Postgres`, controlla `store.postgres_url` e il percorso di rete al database. Se i tentativi scadono piuttosto che essere rifiutati, aumenta [`store.connect_timeout_seconds`](/docs/it/claude-apps-gateway-config#store) per dare a ciascuno più tempo. |408| Log: `could not connect to Postgres at boot, attempt 1 of 3` | Il database non era raggiungibile quando il gateway è stato avviato, ad esempio su un'istanza fredda la cui rete è ancora in fase di avvio | Se il gateway finisce di avviarsi, non è necessaria alcuna azione. Quando il database non è raggiungibile, il gateway tenta la connessione tre volte, due secondi di distanza, prima di uscire. Se esce con `could not connect to Postgres`, controlla `store.postgres_url`, verificando anche che indichi un solo host, e il percorso di rete al database. Se i tentativi scadono piuttosto che essere rifiutati, aumenta [`store.connect_timeout_seconds`](/docs/it/claude-apps-gateway-config#store) per dare a ciascuno più tempo. |

403| `/oauth/callback` mostra "Sign-in could not be completed" | Dominio email rifiutato, convalida id\_token non riuscita, oppure `email_verified` è esplicitamente `false`, che il gateway rifiuta sempre senza override | Controlla `allowed_email_domains` e che l'IdP restituisca un'attestazione `email` verificata. Per `email_verified: false`, correggi la verifica lato IdP. Se il tuo IdP emette email con un nome di attestazione diverso, imposta `oidc.email_claim`. |409| `/oauth/callback` mostra "Sign-in could not be completed" | Dominio email rifiutato, convalida id\_token non riuscita, oppure `email_verified` è esplicitamente `false`, che il gateway rifiuta sempre senza override | Controlla `allowed_email_domains` e che l'IdP restituisca un'attestazione `email` verificata. Per `email_verified: false`, correggi la verifica lato IdP. Se il tuo IdP emette email con un nome di attestazione diverso, imposta `oidc.email_claim`. |

404| Log: `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP non include `email` nell'id\_token per impostazione predefinita. Questo rifiuto si attiva solo quando `allowed_email_domains` è impostato; senza di esso, un'email mancante conia una sessione senza email | Configura l'IdP per emettere `email` nell'id\_token. Okta: aggiungi `email` alle attestazioni del token ID di un server di autorizzazione personalizzato. Entra: aggiungi `email` come attestazione facoltativa sulla registrazione dell'app. PingFederate: abilita una Politica OpenID Connect che emette `email`. Se l'IdP serve `email` dall'endpoint userinfo ma non lo includerà nell'id\_token, come il server di autorizzazione dell'organizzazione Okta, imposta `oidc.userinfo_fallback: true`. |410| Log: `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP non include `email` nell'id\_token per impostazione predefinita. Questo rifiuto si attiva solo quando `allowed_email_domains` è impostato; senza di esso, un'email mancante conia una sessione senza email | Configura l'IdP per emettere `email` nell'id\_token. Okta: aggiungi `email` alle attestazioni del token ID di un server di autorizzazione personalizzato. Entra: aggiungi `email` come attestazione facoltativa sulla registrazione dell'app. PingFederate: abilita una Politica OpenID Connect che emette `email`. Se l'IdP serve `email` dall'endpoint userinfo ma non lo includerà nell'id\_token, come il server di autorizzazione dell'organizzazione Okta, imposta `oidc.userinfo_fallback: true`. |

405| Log: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, e gli sviluppatori vedono `Cloud gateway session expired` ogni `session.ttl_hours` | L'IdP ha accettato il token di aggiornamento ma non ha restituito alcun id\_token con esso, quindi il gateway ha chiesto all'endpoint userinfo dell'IdP le attestazioni dell'utente. L'IdP ha rifiutato il token di accesso aggiornato lì. Il gateway risponde `temporarily_unavailable`, quindi Claude Code mantiene il token di aggiornamento ma non può rinnovare la sessione. Le versioni del gateway precedenti a v2.1.260 registrano la stessa riga senza il dettaglio `(at …)`. | Imposta [`oidc.scope_on_refresh: true`](/docs/it/claude-apps-gateway-config#oidc), disponibile nel gateway v2.1.260 o successivo, in modo che la richiesta di aggiornamento chieda di nuovo `openid`. Alcuni IdP, come Okta, restituiscono un id\_token all'aggiornamento solo quando richiesto. Su PingFederate, abilita **Return ID Token On Refresh Grant** in **Applications > OAuth > OpenID Connect Policy Management** invece. La chiave non cambia il comportamento di PingFederate. Per altri IdP che ancora lo omettono, controlla se l'endpoint userinfo accetta token di accesso emessi da un aggiornamento. Come misura temporanea, aumenta [`session.ttl_hours`](/docs/it/claude-apps-gateway-config#session). Vedi [Identity provider setup](#identity-provider-setup) per il compromesso di deprovisioning. |411| Log: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, e gli sviluppatori vedono `Cloud gateway session expired` ogni `session.ttl_hours` | L'IdP ha accettato il token di aggiornamento ma non ha restituito alcun id\_token con esso, quindi il gateway ha chiesto all'endpoint userinfo dell'IdP le attestazioni dell'utente. L'IdP ha rifiutato il token di accesso aggiornato lì. Il gateway risponde `temporarily_unavailable`, quindi Claude Code mantiene il token di aggiornamento ma non può rinnovare la sessione. Le versioni del gateway precedenti a v2.1.260 registrano la stessa riga senza il dettaglio `(at …)`. | Imposta [`oidc.scope_on_refresh: true`](/docs/it/claude-apps-gateway-config#oidc), disponibile nel gateway v2.1.260 o successivo, in modo che la richiesta di aggiornamento chieda di nuovo `openid`. Alcuni IdP, come Okta, restituiscono un id\_token all'aggiornamento solo quando richiesto. Su PingFederate, abilita **Return ID Token On Refresh Grant** in **Applications > OAuth > OpenID Connect Policy Management** invece. La chiave non cambia il comportamento di PingFederate. Per altri IdP che ancora lo omettono, controlla se l'endpoint userinfo accetta token di accesso emessi da un aggiornamento. Come misura temporanea, aumenta [`session.ttl_hours`](/docs/it/claude-apps-gateway-config#session). Vedi [Identity provider setup](#identity-provider-setup) per il compromesso di deprovisioning. |

Details

70```70```

71 71 

72<h2 id="deploy-the-gateway">72<h2 id="deploy-the-gateway">

73 Distribuire il gateway73 Eseguire il deploy del gateway

74</h2>74</h2>

75 75 

76I passaggi seguenti eseguono il provisioning della distribuzione completa con comandi `aws`.76I passaggi seguenti eseguono il provisioning del deploy completo con comandi `aws`.

77 77 

78<Steps>78<Steps>

79 <Step title="Creare i gruppi di sicurezza">79 <Step title="Creare i gruppi di sicurezza">

80 Tre gruppi di sicurezza concatenano il percorso del traffico: la vostra rete aziendale raggiunge il load balancer sulla porta 443, il load balancer raggiunge il gateway sulla porta 8080 e il gateway raggiunge Postgres sulla porta 5432. Nient'altro è raggiungibile. Come li collegate dipende dal percorso di calcolo:80 Tre gruppi di sicurezza concatenano il percorso del traffico: la tua rete aziendale raggiunge il load balancer sulla porta 443, il load balancer raggiunge il gateway sulla porta 8080 e il gateway raggiunge Postgres sulla porta 5432. Nient'altro è raggiungibile. Il modo in cui li colleghi dipende dal percorso di calcolo:

81 81 

82 * Su ECS Fargate, il passaggio di distribuzione allega `$ALB_SG` al load balancer e `$GW_SG` al servizio.82 * Su ECS Fargate, il passaggio di deploy collega `$ALB_SG` al load balancer e `$GW_SG` al servizio.

83 * Su EKS, AWS Load Balancer Controller crea il proprio gruppo di sicurezza frontend per l'ALB, quindi `$ALB_SG` e `$GW_SG` non vengono utilizzati: l'annotazione `inbound-cidrs` del passaggio di distribuzione limita il listener alla vostra rete aziendale e il gruppo di sicurezza del database ammette il gruppo di sicurezza del cluster al posto di `$GW_SG`.83 * Su EKS, AWS Load Balancer Controller crea il proprio gruppo di sicurezza frontend per l'ALB, quindi `$ALB_SG` e `$GW_SG` non vengono utilizzati: l'annotazione `inbound-cidrs` del passaggio di deploy limita il listener alla tua rete aziendale e il gruppo di sicurezza del database ammette invece il gruppo di sicurezza del cluster.

84 84 

85 ```bash theme={null}85 ```bash theme={null}

86 ALB_SG="$(aws ec2 create-security-group --group-name claude-gateway-alb \86 ALB_SG="$(aws ec2 create-security-group --group-name claude-gateway-alb \


103 </Step>103 </Step>

104 104 

105 <Step title="Creare i ruoli IAM e inviare il modulo del caso d'uso">105 <Step title="Creare i ruoli IAM e inviare il modulo del caso d'uso">

106 Il gateway viene eseguito con un ruolo di attività dedicato la cui unica autorizzazione è invocare i modelli Claude su Bedrock. Secondo il [riferimento upstream Bedrock](/docs/it/claude-apps-gateway-config#amazon-bedrock), la politica deve coprire sia gli ARN del profilo di inferenza cross-region che gli ARN del modello di base sottostante:106 Il gateway viene eseguito con un ruolo di attività dedicato il cui unico permesso è invocare i modelli Claude su Bedrock. Secondo il [riferimento upstream Bedrock](/docs/it/claude-apps-gateway-config#amazon-bedrock), la policy deve coprire sia gli ARN dei profili di inferenza cross-region sia gli ARN dei modelli di base sottostanti:

107 107 

108 ```bash theme={null}108 ```bash theme={null}

109 cat > bedrock-invoke.json <<EOF109 cat > bedrock-invoke.json <<EOF


136 --policy-name bedrock-invoke --policy-document file://bedrock-invoke.json136 --policy-name bedrock-invoke --policy-document file://bedrock-invoke.json

137 ```137 ```

138 138 

139 ECS ha anche bisogno di un ruolo di esecuzione, che l'agente ECS stesso utilizza per estrarre l'immagine da ECR e iniettare i valori di Secrets Manager creati in seguito. È separato dal ruolo di attività che l'AWS SDK del gateway utilizza in fase di esecuzione:139 ECS ha anche bisogno di un ruolo di esecuzione, che l'agente ECS stesso utilizza per scaricare l'immagine da ECR e iniettare i valori di Secrets Manager creati in seguito. È separato dal ruolo di attività che l'AWS SDK del gateway utilizza in fase di esecuzione:

140 140 

141 ```bash theme={null}141 ```bash theme={null}

142 aws iam create-role --role-name claude-gateway-execution \142 aws iam create-role --role-name claude-gateway-execution \


161 --policy-name read-gateway-secrets --policy-document file://secrets-read.json161 --policy-name read-gateway-secrets --policy-document file://secrets-read.json

162 ```162 ```

163 163 

164 I nomi della politica specificano un ARN per segreto piuttosto che un wildcard semplice `gateway-*`, che in un account condiviso corrisponderebbe anche a segreti non correlati; il suffisso finale `-??????` corrisponde esattamente al suffisso di sei caratteri casuale che Secrets Manager aggiunge all'ARN di ogni segreto. Un `-*` finale sarebbe un glob di prefisso semplice e corrisponderebbe anche a nomi più lunghi come `gateway-postgres-url-prod`.164 La policy specifica un ARN per ogni segreto anziché un semplice wildcard `gateway-*`, che in un account condiviso corrisponderebbe anche a segreti non correlati; il suffisso finale `-??????` corrisponde esattamente al suffisso casuale di sei caratteri che Secrets Manager aggiunge all'ARN di ogni segreto. Un `-*` finale sarebbe un semplice glob di prefisso e corrisponderebbe anche a nomi più lunghi come `gateway-postgres-url-prod`.

165 165 

166 La politica IAM concede al gateway il permesso di chiamare Bedrock, e Bedrock abilita l'accesso al modello per impostazione predefinita nelle regioni commerciali. Il gate rimanente a livello di account è il modulo del caso d'uso una tantum di Anthropic: se nessuno nel vostro account lo ha inviato, aprite la [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/), selezionate un modello Anthropic dal catalogo dei modelli e completate il modulo. L'accesso viene concesso immediatamente dopo l'invio; consultate [Claude Code su Amazon Bedrock](/docs/it/amazon-bedrock#1-submit-use-case-details) per il modulo AWS Organizations e i permessi IAM di cui il mittente ha bisogno.166 La policy IAM concede al gateway il permesso di chiamare Bedrock, e Bedrock abilita l'accesso ai modelli per impostazione predefinita nelle regioni commerciali. Il vincolo rimanente a livello di account è il modulo del caso d'uso una tantum di Anthropic: se nessuno nel tuo account lo ha inviato, apri la [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/), seleziona un modello Anthropic dal catalogo dei modelli e compila il modulo. L'accesso viene concesso immediatamente dopo l'invio; consulta [Claude Code su Amazon Bedrock](/docs/it/amazon-bedrock#1-submit-use-case-details) per il modulo AWS Organizations e i permessi IAM di cui ha bisogno chi lo invia.

167 167 

168 Il percorso EKS riutilizza entrambi i documenti della politica su un ruolo IRSA al posto dei due ruoli ECS; consultate il passaggio di distribuzione.168 Il percorso EKS riutilizza entrambi i documenti di policy su un ruolo IRSA al posto dei due ruoli ECS; consulta il passaggio di deploy.

169 </Step>169 </Step>

170 170 

171 <Step title="Eseguire il provisioning di Amazon RDS per PostgreSQL">171 <Step title="Eseguire il provisioning di Amazon RDS per PostgreSQL">

172 L'istanza viene eseguita nelle subnet private senza indirizzo pubblico e con crittografia dell'archiviazione attivata. La versione del motore è fissata a Postgres 16, che soddisfa il limite supportato del gateway di PostgreSQL 14 e garantisce che la famiglia del gruppo di parametri sottostante corrisponda all'istanza.172 L'istanza esegue Postgres 16 nelle subnet private, senza indirizzo pubblico e con la crittografia dell'archiviazione attivata.

173 173 

174 Per prima cosa, create il gruppo di subnet che posiziona il database nelle subnet private e un gruppo di parametri con `rds.force_ssl=1` in modo che il server rifiuti le connessioni in testo semplice. La versione del motore è fissata una volta perché la famiglia del gruppo di parametri deve corrispondere alla versione principale del motore che l'istanza esegue:174 Per prima cosa, crea il gruppo di subnet che colloca il database nelle subnet private e un gruppo di parametri con `rds.force_ssl=1` in modo che il server rifiuti le connessioni in testo semplice. La versione del motore viene fissata una sola volta perché la famiglia del gruppo di parametri deve corrispondere alla versione principale del motore eseguita dall'istanza:

175 175 

176 ```bash theme={null}176 ```bash theme={null}

177 aws rds create-db-subnet-group --db-subnet-group-name claude-gateway-db \177 aws rds create-db-subnet-group --db-subnet-group-name claude-gateway-db \


186 --parameters "ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate"186 --parameters "ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate"

187 ```187 ```

188 188 

189 Quindi create l'istanza con una password principale generata:189 Quindi crea l'istanza con una password principale generata:

190 190 

191 ```bash theme={null}191 ```bash theme={null}

192 PGPASS="$(openssl rand -hex 24)"192 PGPASS="$(openssl rand -hex 24)"


201 --no-publicly-accessible --storage-encrypted201 --no-publicly-accessible --storage-encrypted

202 ```202 ```

203 203 

204 L'argomento letterale `--master-user-password` è visibile nella tabella dei processi e nei log di audit/EDR mentre il comando viene eseguito, la stessa esposizione che la nota del passaggio dei segreti copre. Su un host condiviso o monitorato, passate la password tramite `--cli-input-json` da un file `0600` al posto, il modo in cui `setup.sh` del bundle lo fa.204 L'argomento letterale `--master-user-password` è visibile nella tabella dei processi e nei log di audit/EDR mentre il comando è in esecuzione, la stessa esposizione trattata nella nota del passaggio dei segreti. Su un host condiviso o monitorato, passa invece la password tramite `--cli-input-json` da un file `0600`, come fa il `setup.sh` del bundle.

205 205 

206 Attendete che l'istanza si avvii, il che può richiedere diversi minuti, quindi leggete il suo endpoint privato e assemblate la stringa di connessione che il gateway utilizzerà:206 Attendi che l'istanza sia disponibile, il che può richiedere diversi minuti, quindi leggi il suo endpoint privato e componi la stringa di connessione che il gateway utilizzerà:

207 207 

208 ```bash theme={null}208 ```bash theme={null}

209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db


212 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${DB_HOST}:5432/claude_gateway?sslmode=verify-full"212 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${DB_HOST}:5432/claude_gateway?sslmode=verify-full"

213 ```213 ```

214 214 

215 `sslmode=verify-full` fa sì che il gateway verifichi la catena del certificato del server RDS e il nome host, non solo crittografare. L'ancora di fiducia è il [bundle di certificati AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), che il passaggio di compilazione dell'immagine sottostante copia in `/etc/claude/rds-global-bundle.pem` e affida tramite `NODE_EXTRA_CA_CERTS`. Non aggiungete un parametro `sslrootcert=` in stile libpq all'URL: il driver del gateway legge solo `sslmode` dalla stringa di query e inoltrerebbe `sslrootcert` a Postgres come parametro di avvio, che il server rifiuta.215 `sslmode=verify-full` fa sì che il gateway verifichi la catena e il nome host del certificato del server RDS, e non si limiti a crittografare. L'ancora di fiducia è il [bundle di certificati AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), che il passaggio di build dell'immagine più avanti copia in `/etc/claude/rds-global-bundle.pem` e considera attendibile tramite `NODE_EXTRA_CA_CERTS`. Non aggiungere all'URL un parametro `sslrootcert=` in stile libpq: il driver del gateway legge solo `sslmode` dalla stringa di query e inoltrerebbe `sslrootcert` a Postgres come parametro di avvio, che il server rifiuta.

216 216 

217 Il servizio ECS o i pod EKS devono essere eseguiti in questo VPC in modo che possano raggiungere l'endpoint privato dell'istanza, e il gruppo di sicurezza `claude-gateway-db` ammette solo il gruppo di sicurezza del gateway.217 Il servizio ECS o i pod EKS devono essere eseguiti in questo VPC per poter raggiungere l'endpoint privato dell'istanza, e il gruppo di sicurezza `claude-gateway-db` ammette solo il gruppo di sicurezza del gateway.

218 </Step>218 </Step>

219 219 

220 <Step title="Scrivere gateway.yaml">220 <Step title="Scrivere gateway.yaml">

221 Il blocco `upstreams` punta a Bedrock con `auth: {}`, quindi il gateway si autentica tramite la catena di credenziali predefinita di AWS dal ruolo di attività su ECS o dal ruolo IRSA su EKS. Consultate il [riferimento di configurazione](/docs/it/claude-apps-gateway-config) per ogni campo.221 Il blocco `upstreams` punta a Bedrock con `auth: {}`, quindi il gateway si autentica tramite la catena di credenziali predefinita di AWS, dal ruolo di attività su ECS o dal ruolo IRSA su EKS. Consulta il [riferimento di configurazione](/docs/it/claude-apps-gateway-config) per ogni campo.

222 222 

223 Due campi `listen` descrivono cosa sta davanti al gateway:223 Due campi `listen` descrivono ciò che sta davanti al gateway:

224 224 

225 * `public_url`: l'origine esterna `https://`, obbligatoria per qualsiasi bind non-loopback; consultate il [riferimento `listen`](/docs/it/claude-apps-gateway-config#listen). Il gateway costruisce l'`redirect_uri` dell'IdP e il suo documento di scoperta solo da questo valore, mai da intestazioni `X-Forwarded-*`.225 * `public_url`: l'origine esterna `https://`, obbligatoria per qualsiasi bind non di loopback; consulta il [riferimento `listen`](/docs/it/claude-apps-gateway-config#listen). Il gateway costruisce il `redirect_uri` dell'IdP e il proprio documento di discovery solo da questo valore, mai dalle intestazioni `X-Forwarded-*`.

226 * `trusted_proxies`: gli intervalli di origine del front end. Il gateway onora `X-Forwarded-For` solo quando il peer TCP è in questo elenco, quindi cammina nella catena oltre i hop affidabili, in modo che i limiti di velocità di accesso per IP e gli eventi di audit registrino gli IP degli sviluppatori al posto di quello del load balancer.226 * `trusted_proxies`: gli intervalli di origine del front end. Il gateway considera `X-Forwarded-For` solo quando il peer TCP è in questo elenco, quindi percorre la catena oltre gli hop attendibili, in modo che i rate limit di accesso per IP e gli eventi di audit registrino gli IP degli sviluppatori anziché quelli del load balancer.

227 227 

228 Su entrambi i percorsi il front end è un ALB interno, creato direttamente o da AWS Load Balancer Controller, e i nodi di un ALB prendono indirizzi dalle subnet a cui è collegato, quindi impostate `trusted_proxies` ai CIDR di quelle subnet. Questo affida ogni host in quelle subnet come proxy. Evitate che l'origine di ingresso dell'ALB, il vostro CIDR aziendale, si sovrapponga ad essi, e non condividete le subnet con carichi di lavoro non affidabili che potrebbero falsificare gli IP dei client tramite `X-Forwarded-For`.228 Su entrambi i percorsi il front end è un ALB interno, creato direttamente o da AWS Load Balancer Controller, e i nodi di un ALB prendono gli indirizzi dalle subnet a cui è collegato, quindi imposta `trusted_proxies` sui CIDR di quelle subnet. In questo modo ogni host in quelle subnet viene considerato un proxy attendibile. Evita che l'origine di ingresso dell'ALB, il tuo CIDR aziendale, si sovrapponga a esse, e non condividere le subnet con carichi di lavoro non attendibili che potrebbero falsificare gli IP dei client tramite `X-Forwarded-For`.

229 229 

230 L'attributo di conservazione del client port dell'ALB, `routing.http.xff_client_port.enabled`, può rimanere a entrambe le impostazioni: con esso attivato, l'ALB scrive il client come `203.0.113.7:54321` o `[2001:db8::1]:54321`, e il gateway legge entrambi con la porta eliminata.230 L'attributo di conservazione della porta del client dell'ALB, `routing.http.xff_client_port.enabled`, può restare su entrambe le impostazioni: se è attivo, l'ALB scrive il client come `203.0.113.7:54321` o `[2001:db8::1]:54321`, e il gateway legge entrambi i formati scartando la porta.

231 231 

232 ```yaml gateway.yaml theme={null}232 ```yaml gateway.yaml theme={null}

233 listen:233 listen:


241 client_id: 0oa1example2241 client_id: 0oa1example2

242 client_secret: ${OIDC_CLIENT_SECRET} # EKS: ${file:/secrets/oidc-client-secret}242 client_secret: ${OIDC_CLIENT_SECRET} # EKS: ${file:/secrets/oidc-client-secret}

243 allowed_email_domains: [example.com]243 allowed_email_domains: [example.com]

244 # Il server di autorizzazione dell'organizzazione Okta restituisce un id_token sottile che omette244 # Il server di autorizzazione dell'organizzazione Okta restituisce un id_token ridotto che omette

245 # email e gruppi; il gateway li riempie da /userinfo.245 # email e gruppi; il gateway li ricava da /userinfo.

246 userinfo_fallback: true246 userinfo_fallback: true

247 # Okta emette gruppi solo quando viene richiesto lo scope `groups` e il247 # Okta emette i gruppi solo quando viene richiesto lo scope `groups` e il

248 # filtro della rivendicazione dei gruppi dell'app lo consente.248 # filtro del claim dei gruppi dell'app li consente.

249 scopes: [openid, profile, email, offline_access, groups]249 scopes: [openid, profile, email, offline_access, groups]

250 250 

251 session:251 session:

252 jwt_secret: ${GATEWAY_JWT_SECRET} # EKS: ${file:/secrets/jwt-secret}252 jwt_secret: ${GATEWAY_JWT_SECRET} # EKS: ${file:/secrets/jwt-secret}

253 ttl_hours: 8 # limita la latenza di deprovisioning; abbassate253 ttl_hours: 8 # limita la latenza di deprovisioning; abbassa

254 # verso 1 per una revoca più stretta254 # verso 1 per una revoca più rapida

255 255 

256 store:256 store:

257 postgres_url: ${GATEWAY_POSTGRES_URL} # EKS: ${file:/secrets/postgres-url}257 postgres_url: ${GATEWAY_POSTGRES_URL} # EKS: ${file:/secrets/postgres-url}

258 # readiness_grace_seconds: 300 # mantieni il passaggio del controllo di stato258 # readiness_grace_seconds: 300 # continua a superare il controllo di stato

259 # attraverso un failover RDS259 # durante un failover RDS

260 260 

261 upstreams:261 upstreams:

262 - provider: bedrock262 - provider: bedrock

263 region: <your-region> # corrispondere a $AWS_REGION in modo che gli ARN della politica IAM263 region: <your-region> # uguale a $AWS_REGION affinché gli ARN della

264 # lo coprano264 # policy IAM la coprano

265 auth: {} # catena di credenziali predefinita di AWS:265 auth: {} # catena di credenziali predefinita di AWS:

266 # ruolo di attività ECS, o IRSA su EKS266 # ruolo di attività ECS, o IRSA su EKS

267 ```267 ```

268 268 

269 <Note>269 <Note>

270 Solo il blocco `oidc` è specifico di Okta. Per utilizzare Microsoft Entra ID al posto, impostate `issuer` su `https://login.microsoftonline.com/<tenant-id>/v2.0`, eliminate `userinfo_fallback` e lo scope `groups`, e notate che Entra emette Object ID dei gruppi piuttosto che nomi, quindi [`managed.policies`](/docs/it/claude-apps-gateway-config#managed) deve corrispondere ai GUID, o su App Roles con `oidc.groups_claim: roles`. Consultate [Configurazione del provider di identità](/docs/it/claude-apps-gateway-deploy#identity-provider-setup).270 Solo il blocco `oidc` è specifico di Okta. Per utilizzare invece Microsoft Entra ID, imposta `issuer` su `https://login.microsoftonline.com/<tenant-id>/v2.0`, rimuovi `userinfo_fallback` e lo scope `groups`, e tieni presente che Entra emette gli Object ID dei gruppi anziché i nomi, quindi [`managed.policies`](/docs/it/claude-apps-gateway-config#managed) deve corrispondere ai GUID, oppure agli App Roles con `oidc.groups_claim: roles`. Consulta [Configurazione del provider di identità](/docs/it/claude-apps-gateway-deploy#identity-provider-setup).

271 </Note>271 </Note>

272 </Step>272 </Step>

273 273 

274 <Step title="Archiviare i segreti in AWS Secrets Manager">274 <Step title="Archiviare i segreti in AWS Secrets Manager">

275 Create tre segreti; il ruolo di esecuzione dal passaggio IAM può già leggerli:275 Crea tre segreti; il ruolo di esecuzione del passaggio IAM può già leggerli:

276 276 

277 ```bash theme={null}277 ```bash theme={null}

278 aws secretsmanager create-secret --name gateway-jwt-secret \278 aws secretsmanager create-secret --name gateway-jwt-secret \


283 --secret-string "$GATEWAY_POSTGRES_URL"283 --secret-string "$GATEWAY_POSTGRES_URL"

284 ```284 ```

285 285 

286 Notate l'ARN che ogni chiamata stampa; la definizione di attività ECS fa riferimento ai segreti per ARN.286 Annota l'ARN stampato da ogni chiamata; la definizione di attività ECS fa riferimento ai segreti tramite ARN.

287 287 

288 <Note>288 <Note>

289 Gli argomenti letterali `--secret-string` sono visibili nella tabella dei processi e nei log di audit/EDR mentre ogni comando viene eseguito. Su un host condiviso o monitorato, mettete il valore in un file `0600` e passate `--secret-string file://<path>` al posto. `setup.sh` del bundle mantiene i valori dei segreti fuori da argv del processo allo stesso modo, passando file temporanei `0600` a `--cli-input-json`.289 Gli argomenti letterali `--secret-string` sono visibili nella tabella dei processi e nei log di audit/EDR mentre ogni comando è in esecuzione. Su un host condiviso o monitorato, inserisci invece il valore in un file `0600` e passa `--secret-string file://<path>`. Il `setup.sh` del bundle tiene allo stesso modo i valori dei segreti fuori dagli argv dei processi, passando file temporanei `0600` a `--cli-input-json`.

290 </Note>290 </Note>

291 291 

292 A differenza dei segreti, `gateway.yaml` stesso non contiene valori segreti, perché ogni credenziale si risolve all'avvio tramite l'espansione [`${VAR}` o `${file:...}`](/docs/it/claude-apps-gateway-config#secret-expansion). Come tutto raggiunge il contenitore differisce per percorso:292 A differenza dei segreti, `gateway.yaml` non contiene valori segreti, perché ogni credenziale viene risolta all'avvio tramite l'[espansione `${VAR}` o `${file:...}`](/docs/it/claude-apps-gateway-config#secret-expansion). Il modo in cui tutto arriva al container varia in base al percorso:

293 293 

294 * Su ECS, il passaggio di compilazione successivo copia `gateway.yaml` nell'immagine a `/etc/claude/gateway.yaml`, e la definizione di attività inietta i tre segreti come variabili di ambiente tramite il suo campo `secrets`, quindi lo YAML fa riferimento a `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` e `${GATEWAY_POSTGRES_URL}`.294 * Su ECS, la build del passaggio successivo copia `gateway.yaml` nell'immagine in `/etc/claude/gateway.yaml`, e la definizione di attività inietta i tre segreti come variabili d'ambiente tramite il suo campo `secrets`, quindi lo YAML fa riferimento a `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` e `${GATEWAY_POSTGRES_URL}`.

295 * Su EKS, montate `gateway.yaml` da una ConfigMap e i segreti come file a `/secrets`, referenziati come `${file:/secrets/...}`. Originare i Kubernetes Secrets da Secrets Manager con External Secrets Operator o il provider AWS del driver CSI Secrets Store, o crearli direttamente con `kubectl`.295 * Su EKS, monta `gateway.yaml` da una ConfigMap e i segreti come file in `/secrets`, referenziati come `${file:/secrets/...}`. Ricava i Kubernetes Secrets da Secrets Manager con External Secrets Operator o con il provider AWS del driver CSI Secrets Store, oppure creali direttamente con `kubectl`.

296 </Step>296 </Step>

297 297 

298 <Step title="Compilare e spingere l'immagine ad Amazon ECR">298 <Step title="Eseguire la build e il push dell'immagine su Amazon ECR">

299 Compilate l'immagine secondo i [requisiti dell'immagine del contenitore](/docs/it/claude-apps-gateway-deploy#container-image), posizionando il binario glibc `linux-x64` a `./claude` nel contesto di compilazione. Scrivete il vostro Dockerfile secondo questi requisiti o iniziate dal [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) del bundle, che copia il `gateway.yaml` compilato dai passaggi precedenti nell'immagine a `/etc/claude/gateway.yaml`. Su ECS quella copia incorporata è come la configurazione raggiunge il contenitore, motivo per cui la compilazione viene dopo che il file è stato scritto. Il percorso EKS al posto monta `gateway.yaml` da una ConfigMap al momento della distribuzione, quindi la copia incorporata non viene utilizzata lì.299 Esegui la build dell'immagine secondo i [requisiti dell'immagine del container](/docs/it/claude-apps-gateway-deploy#container-image), posizionando il binario glibc `linux-x64` in `./claude` nel contesto di build. Scrivi il tuo Dockerfile secondo questi requisiti oppure parti dal [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) del bundle, che copia il `gateway.yaml` compilato nei passaggi precedenti nell'immagine in `/etc/claude/gateway.yaml`. Su ECS è questa copia incorporata a portare la configurazione nel container, ed è per questo che la build viene dopo la scrittura del file. Il percorso EKS monta invece `gateway.yaml` da una ConfigMap al momento del deploy, quindi lì la copia incorporata non viene utilizzata.

300 300 

301 L'immagine porta anche il bundle di certificati AWS RDS come ancora di fiducia per la stringa di connessione `sslmode=verify-full`, quindi scaricatelo nel contesto di compilazione per primo. AWS ruota il bundle (nuove CA regionali vengono aggiunte), quindi scaricatelo per compilazione piuttosto che fissare un checksum o impegnarlo:301 L'immagine contiene anche il bundle di certificati AWS RDS come ancora di fiducia per il `sslmode=verify-full` della stringa di connessione, quindi scaricalo prima nel contesto di build. AWS aggiorna periodicamente il bundle (vengono aggiunte nuove CA regionali), quindi scaricalo a ogni build anziché fissarne un checksum o eseguirne il commit:

302 302 

303 ```bash theme={null}303 ```bash theme={null}

304 curl -fL --proto '=https' -o rds-global-bundle.pem \304 curl -fL --proto '=https' -o rds-global-bundle.pem \

305 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem305 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

306 ```306 ```

307 307 

308 I requisiti dell'immagine del contenitore non coprono il bundle, quindi se scrivete il vostro Dockerfile, aggiungete le due righe che lo copiano e lo affidano; il `Dockerfile` del bundle include già entrambi:308 I requisiti dell'immagine del container non coprono il bundle, quindi se scrivi il tuo Dockerfile, aggiungi le due righe che lo copiano e lo rendono attendibile; il `Dockerfile` del bundle le include già entrambe:

309 309 

310 ```dockerfile theme={null}310 ```dockerfile theme={null}

311 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem311 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem

312 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem312 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem

313 ```313 ```

314 314 

315 Create il repository ECR e accedete Docker ad esso. I tag immutabili significano che il tag `<version>` che il passaggio di distribuzione fissa non può essere successivamente reindirizzato silenziosamente a un'immagine diversa:315 Crea il repository ECR ed esegui l'accesso di Docker a esso. I tag immutabili fanno sì che il tag `<version>` fissato nel passaggio di deploy non possa essere in seguito reindirizzato silenziosamente a un'immagine diversa:

316 316 

317 ```bash theme={null}317 ```bash theme={null}

318 aws ecr create-repository --repository-name claude-gateway \318 aws ecr create-repository --repository-name claude-gateway \


323 "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com"323 "${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com"

324 ```324 ```

325 325 

326 Compilate e spingete l'immagine. La definizione di attività sottostante esegue `linux/amd64`, quindi la piattaforma deve corrispondere qui; per Fargate su ARM64 (Graviton), compilate `linux/arm64` con il binario `linux-arm64` e impostate `cpuArchitecture` su `ARM64` al posto:326 Esegui la build e il push dell'immagine. La definizione di attività più avanti esegue `linux/amd64`, quindi la piattaforma deve corrispondere qui; per Fargate su ARM64 (Graviton), esegui invece la build per `linux/arm64` con il binario `linux-arm64` e imposta `cpuArchitecture` su `ARM64`:

327 327 

328 ```bash theme={null}328 ```bash theme={null}

329 docker build --platform=linux/amd64 \329 docker build --platform=linux/amd64 \


332 ```332 ```

333 </Step>333 </Step>

334 334 

335 <Step title="Distribuire">335 <Step title="Eseguire il deploy">

336 <Tabs>336 <Tabs>

337 <Tab title="ECS Fargate">337 <Tab title="ECS Fargate">

338 Create il cluster e un gruppo di log per stderr del gateway, che porta sia i suoi eventi di audit che i log operazionali. La conservazione è una chiamata separata, e senza una CloudWatch mantiene i log per sempre; allineate i 90 giorni con la vostra politica di conservazione dell'audit:338 Crea il cluster e un gruppo di log per lo stderr del gateway, che contiene sia gli eventi di audit sia i log operativi. La conservazione richiede una chiamata separata, e senza di essa CloudWatch conserva i log per sempre; allinea i 90 giorni alla tua policy di conservazione dell'audit:

339 339 

340 ```bash theme={null}340 ```bash theme={null}

341 aws ecs create-cluster --cluster-name claude-gateway341 aws ecs create-cluster --cluster-name claude-gateway


344 --retention-in-days 90344 --retention-in-days 90

345 ```345 ```

346 346 

347 Scrivete la definizione di attività. Il ruolo di attività porta il permesso Bedrock e il ruolo di esecuzione inietta i segreti; utilizzate gli ARN dei segreti dal passaggio Secrets Manager:347 Scrivi la definizione di attività. Il ruolo di attività ha il permesso per Bedrock e il ruolo di esecuzione inietta i segreti; usa gli ARN dei segreti del passaggio Secrets Manager:

348 348 

349 ```json claude-gateway-task.json theme={null}349 ```json claude-gateway-task.json theme={null}

350 {350 {


379 }379 }

380 ```380 ```

381 381 

382 Registratela:382 Registrala:

383 383 

384 ```bash theme={null}384 ```bash theme={null}

385 aws ecs register-task-definition --cli-input-json file://claude-gateway-task.json385 aws ecs register-task-definition --cli-input-json file://claude-gateway-task.json

386 ```386 ```

387 387 

388 Mettete un ALB interno davanti con un gruppo di destinazione che verifica lo stato del gateway. `--ip-address-type ipv4` è importante: un ALB interno dual-stack pubblica record AAAA di intervallo pubblico, che il controllo della rete privata `/login` rifiuta:388 Metti davanti un ALB interno con un gruppo di destinazione che verifica lo stato del gateway. `--ip-address-type ipv4` è importante: un ALB interno dual-stack pubblica record AAAA di intervallo pubblico, che il controllo della rete privata di `/login` rifiuta:

389 389 

390 ```bash theme={null}390 ```bash theme={null}

391 ALB_ARN="$(aws elbv2 create-load-balancer --name claude-gateway \391 ALB_ARN="$(aws elbv2 create-load-balancer --name claude-gateway \


399 --query 'TargetGroups[0].TargetGroupArn' --output text)"399 --query 'TargetGroups[0].TargetGroupArn' --output text)"

400 ```400 ```

401 401 

402 Aggiungete il listener HTTPS. `--ssl-policy` fissa un limite TLS moderno, poiché ometterlo ricade nella politica predefinita legacy `ELBSecurityPolicy-2016-08`, che ancora accetta TLS 1.0/1.1.402 Aggiungi il listener HTTPS. `--ssl-policy` fissa un livello minimo di TLS moderno, poiché ometterlo fa ricadere sulla policy predefinita legacy `ELBSecurityPolicy-2016-08`, che accetta ancora TLS 1.0/1.1.

403 403 

404 L'ALB chiude una connessione dopo 60 secondi senza dati per impostazione predefinita. I ping di keepalive del gateway mantengono i flussi entro quel default, quindi aumentare il timeout aggiunge margine sopra la cadenza del ping; la riga [Troubleshooting](#troubleshooting) sui flussi interrotti copre il meccanismo e i gateway più vecchi. I comandi sottostanti aggiungono il listener e aumentano il timeout:404 Per impostazione predefinita, l'ALB chiude una connessione dopo 60 secondi senza dati. I ping di keepalive del gateway mantengono i flussi entro questo valore predefinito, quindi aumentare il timeout aggiunge margine rispetto alla cadenza dei ping; la riga di [Risoluzione dei problemi](#troubleshooting) sui flussi interrotti descrive il meccanismo e i gateway meno recenti. I comandi seguenti aggiungono il listener e aumentano il timeout:

405 405 

406 ```bash theme={null}406 ```bash theme={null}

407 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \407 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \


414 --attributes Key=idle_timeout.timeout_seconds,Value=3600414 --attributes Key=idle_timeout.timeout_seconds,Value=3600

415 ```415 ```

416 416 

417 Create il servizio. Il circuito di distribuzione del deployment fa rotolare una distribuzione le cui attività continuano a fallire, da un'immagine cattiva o una configurazione non avviabile, indietro allo stato stabile precedente al posto di rilanciare attività fallite per sempre:417 Crea il servizio. Il circuit breaker del deploy riporta all'ultimo stato stabile un deploy le cui attività continuano a fallire, a causa di un'immagine difettosa o di una configurazione che non si avvia, anziché rilanciare all'infinito attività che falliscono:

418 418 

419 ```bash theme={null}419 ```bash theme={null}

420 aws ecs create-service --cluster claude-gateway --service-name claude-gateway \420 aws ecs create-service --cluster claude-gateway --service-name claude-gateway \


425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"

426 ```426 ```

427 427 

428 Il periodo di grazia di 60 secondi dà a un'attività fredda il tempo di estrarre l'immagine, connettersi allo store e rispondere al suo primo controllo di stato prima che ECS inizi a contare i fallimenti rispetto alla distribuzione. Il controllo di stato del gruppo di destinazione su `GET /readyz` verifica che lo store sia raggiungibile, quindi un'attività che non può raggiungere Postgres non entra mai in rotazione. Per mantenere le attività che passano il controllo attraverso una breve interruzione del database come un failover RDS, impostate `store.readiness_grace_seconds` come descritto in [Comportamento di interruzione](/docs/it/claude-apps-gateway-deploy#outage-behavior), che copre anche l'alternativa `/healthz`.428 Il periodo di tolleranza di 60 secondi dà a un'attività avviata a freddo il tempo di scaricare l'immagine, connettersi allo store e rispondere al primo controllo di stato prima che ECS inizi a contare i fallimenti a carico del deploy.

429 429 

430 Le attività vengono eseguite in subnet private senza IP pubblico, quindi tutto l'egresso (verso Bedrock, il vostro IdP, Secrets Manager, ECR e CloudWatch Logs) passa attraverso il gateway NAT. Per mantenere il traffico Bedrock fuori dal percorso pubblico, create un endpoint VPC dell'interfaccia `bedrock-runtime` e puntate l'`base_url` dell'upstream ad esso, come mostrato nel [riferimento upstream Bedrock](/docs/it/claude-apps-gateway-config#amazon-bedrock); l'IdP ha ancora bisogno di uscita a Internet.430 Il controllo di stato del gruppo di destinazione su `GET /readyz` verifica che lo store sia raggiungibile, quindi un'attività che non riesce a raggiungere Postgres non entra mai in rotazione. Per far sì che le attività continuino a superare il controllo durante una breve interruzione del database, come un failover RDS, imposta `store.readiness_grace_seconds` come descritto in [Comportamento in caso di interruzione](/docs/it/claude-apps-gateway-deploy#outage-behavior), che tratta anche l'alternativa `/healthz`.

431 431 

432 Finite dando agli sviluppatori un nome host risolvibile privatamente: in una zona ospitata privata Route 53, alias il nome DNS interno del gateway all'ALB, e impostate `listen.public_url` a quel nome host. Il nome `*.elb.amazonaws.com` dell'ALB stesso si risolve in indirizzi privati su un ALB interno, ma non può portare il vostro certificato ACM, quindi utilizzate il vostro nome.432 Le attività vengono eseguite in subnet private senza IP pubblico, quindi tutto il traffico in uscita (verso Bedrock, il tuo IdP, Secrets Manager, ECR e CloudWatch Logs) passa attraverso il gateway NAT. Per tenere il traffico Bedrock fuori dal percorso pubblico, crea un endpoint VPC di interfaccia `bedrock-runtime` e punta il `base_url` dell'upstream a esso, come mostrato nel [riferimento upstream Bedrock](/docs/it/claude-apps-gateway-config#amazon-bedrock); l'IdP ha comunque bisogno di uscita verso Internet.

433 433 

434 Aggiornate l'URI di reindirizzamento autorizzato del client OAuth a `<public_url>/oauth/callback` prima del primo accesso. Dopo aver cambiato `public_url`, ricompilate e spingete l'immagine sotto un nuovo tag, registrate una nuova revisione della definizione di attività e ridistribuite. Su ECS l'impostazione vive nel `gateway.yaml` incorporato dell'immagine, e il gateway costruisce la sua origine pubblica solo da quell'impostazione, ignorando `X-Forwarded-Host` e `X-Forwarded-Proto`. `X-Forwarded-For` è onorato per gli IP dei client solo quando `listen.trusted_proxies` è impostato.434 Per finire, fornisci agli sviluppatori un nome host risolvibile privatamente: in una zona ospitata privata di Route 53, crea un alias dal nome DNS interno del gateway all'ALB e imposta `listen.public_url` su quel nome host. Il nome `*.elb.amazonaws.com` dell'ALB si risolve in indirizzi privati su un ALB interno, ma non può usare il tuo certificato ACM, quindi usa un nome tuo.

435 

436 Aggiorna l'URI di reindirizzamento autorizzato del client OAuth a `<public_url>/oauth/callback` prima del primo accesso. Dopo aver modificato `public_url`, esegui di nuovo la build e il push dell'immagine con un nuovo tag, registra una nuova revisione della definizione di attività ed esegui di nuovo il deploy. Su ECS l'impostazione si trova nel `gateway.yaml` incorporato nell'immagine, e il gateway costruisce la propria origine pubblica solo da quell'impostazione, ignorando `X-Forwarded-Host` e `X-Forwarded-Proto`. `X-Forwarded-For` viene considerato per gli IP dei client solo quando `listen.trusted_proxies` è impostato.

435 </Tab>437 </Tab>

436 438 

437 <Tab title="EKS">439 <Tab title="EKS">

438 Questo percorso ha bisogno di `kubectl` e `eksctl` installati localmente, e di un cluster EKS esistente con un provider OIDC IAM e AWS Load Balancer Controller installato. Il cluster deve essere su `$VPC_ID` in modo che i pod possano raggiungere l'endpoint privato RDS, e il gruppo di sicurezza `claude-gateway-db` deve ammettere il gruppo di sicurezza del pod o del nodo del cluster al posto di `$GW_SG`.440 Questo percorso richiede `kubectl` ed `eksctl` installati localmente e un cluster EKS esistente con un provider OIDC IAM e AWS Load Balancer Controller installato. Il cluster deve trovarsi su `$VPC_ID` affinché i pod possano raggiungere l'endpoint privato RDS, e il gruppo di sicurezza `claude-gateway-db` deve ammettere il gruppo di sicurezza dei pod o dei nodi del cluster al posto di `$GW_SG`.

439 441 

440 Su EKS il gateway ottiene le sue credenziali Bedrock tramite IRSA piuttosto che i ruoli ECS. La politica di fiducia `ecs-tasks.amazonaws.com` dal passaggio IAM non si applica qui; IRSA ha bisogno di un ruolo la cui politica di fiducia si federi sul provider OIDC del cluster, scoped a `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` crea quel ruolo, allega le politiche e annota l'account di servizio Kubernetes con l'ARN del ruolo in un passaggio. Trasformate i due documenti della politica dal passaggio IAM in politiche gestite che può allegare:442 Su EKS il gateway ottiene le credenziali Bedrock tramite IRSA anziché tramite i ruoli ECS. La policy di attendibilità `ecs-tasks.amazonaws.com` del passaggio IAM non si applica qui; IRSA ha bisogno di un ruolo la cui policy di attendibilità sia federata sul provider OIDC del cluster, limitata a `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` crea quel ruolo, collega le policy e annota l'account di servizio Kubernetes con l'ARN del ruolo in un unico passaggio. Trasforma i due documenti di policy del passaggio IAM in policy gestite che il comando può collegare:

441 443 

442 ```bash theme={null}444 ```bash theme={null}

443 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \445 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \


453 --approve455 --approve

454 ```456 ```

455 457 

456 La politica dei segreti è necessaria solo quando i pod leggono Secrets Manager stessi, come fa il provider AWS del driver CSI Secrets Store utilizzando l'account di servizio del pod di montaggio; eliminatela se create i Kubernetes Secrets in un altro modo. Il provider ha bisogno di entrambe le azioni della politica: chiama `DescribeSecret` quando riconcilia i segreti ruotati, quindi una concessione `GetSecretValue`-only monta sulla prima distribuzione ma smette di raccogliere rotazioni.458 La policy dei segreti è necessaria solo quando i pod leggono direttamente Secrets Manager, come fa il provider AWS del driver CSI Secrets Store usando l'account di servizio del pod che esegue il montaggio; rimuovila se crei i Kubernetes Secrets in un altro modo. Il provider ha bisogno di entrambe le azioni della policy: chiama `DescribeSecret` quando riconcilia i segreti ruotati, quindi una concessione limitata a `GetSecretValue` esegue il montaggio al primo deploy ma smette di recepire le rotazioni.

457 459 

458 Distribuite il gateway come Deployment standard più un Service e un Ingress, come descritto in [Distribuzione Kubernetes](/docs/it/claude-apps-gateway-deploy#kubernetes), con:460 Esegui il deploy del gateway come Deployment standard più un Service e un Ingress, come descritto in [Deploy su Kubernetes](/docs/it/claude-apps-gateway-deploy#kubernetes), con:

459 461 

460 * `serviceAccountName: gateway`462 * `serviceAccountName: gateway`

461 * `gateway.yaml` montato da una ConfigMap e i segreti montati a `/secrets`463 * `gateway.yaml` montato da una ConfigMap e i segreti montati in `/secrets`

462 * il probe di prontezza puntato a `GET /readyz`464 * il readiness probe puntato a `GET /readyz`

463 465 

464 Per il front end, un Ingress gestito da AWS Load Balancer Controller esegue il provisioning dell'ALB interno. Annotatelo con:466 Per il front end, un Ingress gestito da AWS Load Balancer Controller esegue il provisioning dell'ALB interno. Annotalo con:

465 467 

466 * `alb.ingress.kubernetes.io/scheme: internal` e `alb.ingress.kubernetes.io/target-type: ip`468 * `alb.ingress.kubernetes.io/scheme: internal` e `alb.ingress.kubernetes.io/target-type: ip`

467 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, in modo che nessun record AAAA di intervallo pubblico venga pubblicato per il controllo della rete privata `/login` [private-network check](/docs/it/claude-apps-gateway#prerequisites) da rifiutare469 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, in modo che non vengano pubblicati record AAAA di intervallo pubblico che il [controllo della rete privata](/docs/it/claude-apps-gateway#prerequisites) di `/login` rifiuterebbe

468 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, in modo che il gruppo di sicurezza gestito dal controller ammetta solo la vostra rete aziendale al posto del suo default `0.0.0.0/0`470 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, in modo che il gruppo di sicurezza frontend gestito dal controller ammetta solo la tua rete aziendale al posto del suo valore predefinito `0.0.0.0/0`

469 * `alb.ingress.kubernetes.io/certificate-arn` con il certificato ACM471 * `alb.ingress.kubernetes.io/certificate-arn` con il certificato ACM

470 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, in modo che il listener non ricada nella politica predefinita legacy che accetta TLS 1.0 e 1.1472 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, in modo che il listener non ricada sulla policy predefinita legacy che accetta TLS 1.0 e 1.1

471 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, un margine sopra il keepalive di streaming del gateway; consultate [Troubleshooting](#troubleshooting)473 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, un margine rispetto al keepalive di streaming del gateway; consulta [Risoluzione dei problemi](#troubleshooting)

472 474 

473 Con IRSA, l'AWS SDK legge un token dell'account di servizio proiettato e lo scambia con AWS STS, quindi il pod non ha mai bisogno del servizio di metadati dell'istanza EC2; una NetworkPolicy di egresso può bloccare `169.254.169.254` per i pod del gateway. Il problema del limite di hop del nodo in [Troubleshooting](#troubleshooting) sottostante si applica solo ai cluster che saltano IRSA e si affidano ai ruoli dell'istanza del nodo.475 Con IRSA, l'AWS SDK legge un token proiettato dell'account di servizio e lo scambia con AWS STS, quindi il pod non ha mai bisogno del servizio di metadati dell'istanza EC2; una NetworkPolicy in uscita può bloccare `169.254.169.254` per i pod del gateway. Il problema del limite di hop dei nodi descritto in [Risoluzione dei problemi](#troubleshooting) più avanti riguarda solo i cluster che non usano IRSA e si affidano ai ruoli delle istanze dei nodi.

474 </Tab>476 </Tab>

475 </Tabs>477 </Tabs>

476 </Step>478 </Step>

477 479 

478 <Step title="Spingere l'URL del gateway alle macchine degli sviluppatori">480 <Step title="Distribuire l'URL del gateway ai computer degli sviluppatori">

479 Il gateway è ora in esecuzione, ma gli sviluppatori non possono raggiungerlo da `/login` fino a quando l'URL del gateway non è sulle loro macchine. Impostate `forceLoginMethod` e `forceLoginGatewayUrl` nel [file delle impostazioni gestite](/docs/it/claude-apps-gateway#set-the-gateway-url) che distribuite a ogni dispositivo tramite MDM. Non c'è opzione di gateway nel selettore di accesso per uno sviluppatore da selezionare manualmente.481 Il gateway è ora in esecuzione, ma gli sviluppatori non possono raggiungerlo da `/login` finché l'URL del gateway non è presente sui loro computer. Imposta `forceLoginMethod` e `forceLoginGatewayUrl` nel [file delle impostazioni gestite](/docs/it/claude-apps-gateway#set-the-gateway-url) che distribuisci su ogni dispositivo tramite MDM. Nel selettore di accesso non esiste un'opzione gateway che uno sviluppatore possa selezionare manualmente.

480 </Step>482 </Step>

481</Steps>483</Steps>

482 484 

Details

416* **Macchine virtuali isolate**: ogni sessione viene eseguita in una VM isolata gestita da Anthropic. Le sessioni che la tua organizzazione instrada a un [ambiente self-hosted](/docs/it/self-hosted-environments) vengono eseguite sulla tua infrastruttura, dove l'isolamento è responsabilità della tua distribuzione416* **Macchine virtuali isolate**: ogni sessione viene eseguita in una VM isolata gestita da Anthropic. Le sessioni che la tua organizzazione instrada a un [ambiente self-hosted](/docs/it/self-hosted-environments) vengono eseguite sulla tua infrastruttura, dove l'isolamento è responsabilità della tua distribuzione

417* <span id="default-allowed-domains" />**Controlli di accesso alla rete**: negli ambienti ospitati da Anthropic, l'accesso alla rete è limitato per impostazione predefinita e può essere disabilitato. Vedi [Accesso alla rete](/docs/it/cloud-environments#network-access) per i livelli di accesso, i [domini consentiti per impostazione predefinita](/docs/it/cloud-environments#default-allowed-domains) e il traffico che non passa attraverso l'allowlist. In un ambiente self-hosted, limiti l'uscita della sessione al tuo confine di rete. Quando viene eseguito con l'accesso alla rete disabilitato, Claude Code può comunque comunicare con l'API Anthropic, che potrebbe consentire ai dati di uscire dalla VM.417* <span id="default-allowed-domains" />**Controlli di accesso alla rete**: negli ambienti ospitati da Anthropic, l'accesso alla rete è limitato per impostazione predefinita e può essere disabilitato. Vedi [Accesso alla rete](/docs/it/cloud-environments#network-access) per i livelli di accesso, i [domini consentiti per impostazione predefinita](/docs/it/cloud-environments#default-allowed-domains) e il traffico che non passa attraverso l'allowlist. In un ambiente self-hosted, limiti l'uscita della sessione al tuo confine di rete. Quando viene eseguito con l'accesso alla rete disabilitato, Claude Code può comunque comunicare con l'API Anthropic, che potrebbe consentire ai dati di uscire dalla VM.

418* **Protezione delle credenziali**: negli ambienti ospitati da Anthropic, le credenziali git e le chiavi di firma rimangono al di fuori della sandbox e un proxy autentica per conto della sessione con credenziali con ambito. In un ambiente self-hosted, la tua distribuzione fornisce credenziali git; vedi [Configura git](/docs/it/self-hosted-environments-deploy#configure-git)418* **Protezione delle credenziali**: negli ambienti ospitati da Anthropic, le credenziali git e le chiavi di firma rimangono al di fuori della sandbox e un proxy autentica per conto della sessione con credenziali con ambito. In un ambiente self-hosted, la tua distribuzione fornisce credenziali git; vedi [Configura git](/docs/it/self-hosted-environments-deploy#configure-git)

419* **Credenziali API**: negli ambienti ospitati da Anthropic nei piani Pro e Max, le chiavi che [aggiungi a un ambiente cloud](/docs/it/cloud-environments#add-api-credentials) rimangono al di fuori della sandbox allo stesso modo, allegate alle richieste corrispondenti dopo che lasciano la sessione. Un ambiente self-hosted non ha credenziali API e i piani Team ed Enterprise non le hanno ancora419* **Segreti di rete**: negli ambienti ospitati da Anthropic nei piani Pro e Max, le chiavi che [aggiungi a un ambiente cloud](/docs/it/cloud-environments#add-api-credentials) rimangono al di fuori della sandbox allo stesso modo, allegate alle richieste corrispondenti dopo che lasciano la sessione. Un ambiente self-hosted non ha segreti di rete e i piani Team ed Enterprise non li hanno ancora

420* **Analisi sicura**: il codice viene analizzato e modificato all'interno dell'ambiente isolato della sessione prima di creare PR420* **Analisi sicura**: il codice viene analizzato e modificato all'interno dell'ambiente isolato della sessione prima di creare PR

421 421 

422<h2 id="troubleshooting">422<h2 id="troubleshooting">


442`claude --cloud` e `claude --teleport` richiedono l'accesso con un account claude.ai. Se ti autentichi con una chiave API, o i dettagli dell'account archiviati sono obsoleti, vedrai uno di questi:442`claude --cloud` e `claude --teleport` richiedono l'accesso con un account claude.ai. Se ti autentichi con una chiave API, o i dettagli dell'account archiviati sono obsoleti, vedrai uno di questi:

443 443 

444* `Unable to get organization UUID`444* `Unable to get organization UUID`

445* Un messaggio che indica che l'autenticazione con chiave API non è sufficiente445* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

446* `Error loading Claude Code sessions` nel selettore di sessione, quando esegui `claude --teleport` senza un ID di sessione446* `Error loading Claude Code sessions` nel selettore di sessione, quando esegui `claude --teleport` senza un ID di sessione

447 447 

448Esegui `/login` per accedere con il tuo account claude.ai, quindi riprova il comando. Se invece l'errore nomina il tuo provider, vedi la [tabella degli errori](#errors-when-sending-to-a-cloud-session): le sessioni cloud non sono disponibili tramite provider di terze parti.448Esegui [`claude auth login`](/docs/it/cli-reference#cli-commands) nella tua shell per accedere con il tuo account claude.ai, quindi riprova il comando. All'interno di una sessione in esecuzione, `/login` fa la stessa cosa. Se invece l'errore nomina il tuo provider, vedi la [tabella degli errori](#errors-when-sending-to-a-cloud-session): le sessioni cloud non sono disponibili tramite provider di terze parti.

449 

450Dalla v2.1.274 alla v2.1.289, il messaggio di accesso era `Claude Code cloud sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.`

449 451 

450<h3 id="remote-control-session-expired-or-access-denied">452<h3 id="remote-control-session-expired-or-access-denied">

451 Sessione Remote Control scaduta o accesso negato453 Sessione Remote Control scaduta o accesso negato

Details

34 oneLiner: 'Project instructions Claude reads every session',34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> on its own or alongside CLAUDE.md</>],37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> in place of a <C>CLAUDE.md</C></>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions39 example: `# Project conventions

40 40 


164 icon: 'folder',164 icon: 'folder',

165 color: '#9B7BC4',165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',170 docsLink: '/en/memory#organize-rules-with-claude/rules/',


176 color: '#9B7BC4',176 color: '#9B7BC4',

177 badge: 'committed',177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,179 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---181 example: `---

182paths:182paths:


197 color: '#9B7BC4',197 color: '#9B7BC4',

198 badge: 'committed',198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,200 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is working on API routes.</>,

202 example: `---202 example: `---

203paths:203paths:

204 - "src/api/**/*.ts"204 - "src/api/**/*.ts"


605 icon: 'folder',605 icon: 'folder',

606 color: '#9B7BC4',606 color: '#9B7BC4',

607 oneLiner: 'User-level rules that apply to every project',607 oneLiner: 'User-level rules that apply to every project',

608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

610 docsLink: '/en/memory#organize-rules-with-claude/rules/',610 docsLink: '/en/memory#organize-rules-with-claude/rules/',

611 children: []611 children: []


1434 1434 

1435Su Windows, `~/.claude` si risolve in `%USERPROFILE%\.claude`. Se imposti [`CLAUDE_CONFIG_DIR`](/docs/it/env-vars), ogni percorso `~/.claude` in questa pagina si trova invece in quella directory.1435Su Windows, `~/.claude` si risolve in `%USERPROFILE%\.claude`. Se imposti [`CLAUDE_CONFIG_DIR`](/docs/it/env-vars), ogni percorso `~/.claude` in questa pagina si trova invece in quella directory.

1436 1436 

1437La maggior parte degli utenti modifica solo `CLAUDE.md` e `settings.json`. Se il tuo repository ha già un `AGENTS.md` per altri agenti di codifica, Claude Code [può leggerlo](/docs/it/memory#agents-md) da solo o insieme a `CLAUDE.md`. Il resto della directory è facoltativo: aggiungi skills, rules o subagents secondo le tue necessità.1437La maggior parte degli utenti modifica solo `CLAUDE.md` e `settings.json`. Se il tuo repository ha già un `AGENTS.md` per altri agenti di codifica, Claude Code [può leggerlo](/docs/it/memory#agents-md) al posto di un `CLAUDE.md`. Il resto della directory è facoltativo: aggiungi skill, regole o subagent secondo le tue necessità.

1438 1438 

1439<h2 id="explore-the-directory">1439<h2 id="explore-the-directory">

1440 Esplora la directory1440 Esplora la directory


1454| - | - | - |1454| - | - | - |

1455| `managed-settings.json` | A livello di sistema, varia in base al sistema operativo | Impostazioni applicate dall'azienda che non puoi ignorare, a parte [eccezioni ristrette](/docs/it/settings#security-keys-where-the-stricter-value-applies). Vedi [dove salvare il file](/docs/it/managed-settings#deploy-a-managed-settings-file) e [quale fonte gestita Claude Code utilizza](/docs/it/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | A livello di sistema, varia in base al sistema operativo | Impostazioni applicate dall'azienda che non puoi ignorare, a parte [eccezioni ristrette](/docs/it/settings#security-keys-where-the-stricter-value-applies). Vedi [dove salvare il file](/docs/it/managed-settings#deploy-a-managed-settings-file) e [quale fonte gestita Claude Code utilizza](/docs/it/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Radice del progetto | Le tue preferenze private per questo progetto, caricate insieme a CLAUDE.md. Crealo manualmente e aggiungilo a `.gitignore`. |1456| `CLAUDE.local.md` | Radice del progetto | Le tue preferenze private per questo progetto, caricate insieme a CLAUDE.md. Crealo manualmente e aggiungilo a `.gitignore`. |

1457| `AGENTS.md` | Radice del progetto, `.claude/`, o qualsiasi directory | Istruzioni di progetto che scrivi per gli agenti di codifica AI. Claude Code può [caricarlo](/docs/it/memory#agents-md) autonomamente o insieme a `CLAUDE.md`. |1457| `AGENTS.md` | Radice del progetto, `.claude/`, o qualsiasi directory | Istruzioni di progetto che scrivi per gli agenti di codifica AI. Claude Code può [caricarlo](/docs/it/memory#agents-md) al posto di un `CLAUDE.md`. |

1458| Plugin installati | `~/.claude/plugins` | Marketplace clonati, versioni plugin installate, il record di installazione `installed_plugins.json` e dati per plugin, gestiti dai comandi `claude plugin`. I plugin [sincronizzati dal tuo account claude.ai](/docs/it/plugins/loading#synced-plugins) vengono scaricati in `~/.claude/plugins/synced/`. Per un plugin installato da un marketplace con [fonte `command`](/docs/it/plugins/marketplace-reference#command-plugin-source) in modalità link, Claude Code memorizza i link qui invece di una copia, e i file del plugin rimangono nella directory che il comando stampa. Una fonte `command` richiede Claude Code v2.1.229 o successivo. Anche un plugin elencato per percorso relativo in un marketplace che hai aggiunto da un percorso locale [viene caricato sul posto](/docs/it/plugins/loading#find-plugins-on-disk) dalla sua directory di origine anziché da una copia nella cache. Vedi [plugin caching](/docs/it/plugins/loading#find-plugins-on-disk) per come le versioni orfane vengono pulite. |1458| Plugin installati | `~/.claude/plugins` | Marketplace clonati, versioni plugin installate, il record di installazione `installed_plugins.json` e dati per plugin, gestiti dai comandi `claude plugin`. I plugin [sincronizzati dal tuo account claude.ai](/docs/it/plugins/loading#synced-plugins) vengono scaricati in `~/.claude/plugins/synced/`. Per un plugin installato da un marketplace con [fonte `command`](/docs/it/plugins/marketplace-reference#command-plugin-source) in modalità link, Claude Code memorizza i link qui invece di una copia, e i file del plugin rimangono nella directory che il comando stampa. Una fonte `command` richiede Claude Code v2.1.229 o successivo. Anche un plugin elencato per percorso relativo in un marketplace che hai aggiunto da un percorso locale [viene caricato sul posto](/docs/it/plugins/loading#find-plugins-on-disk) dalla sua directory di origine anziché da una copia nella cache. Vedi [plugin caching](/docs/it/plugins/loading#find-plugins-on-disk) per come le versioni orfane vengono pulite. |

1459 1459 

1460`~/.claude` contiene anche dati che Claude Code scrive mentre lavori: trascrizioni, cronologia dei prompt, snapshot dei file, cache e log. Vedi [dati dell'applicazione](#application-data) di seguito.1460`~/.claude` contiene anche dati che Claude Code scrive mentre lavori: trascrizioni, cronologia dei prompt, snapshot dei file, cache e log. Vedi [dati dell'applicazione](#application-data) di seguito.

Details

58* **Thread**: i lavoratori. Ognuno è una sessione separata con la propria finestra di contesto che svolge un pezzo di lavoro e riferisce alla conversazione quando finisce. Un thread cloud lavora sul proprio ramo e apre una pull request quando il lavoro lo richiede.58* **Thread**: i lavoratori. Ognuno è una sessione separata con la propria finestra di contesto che svolge un pezzo di lavoro e riferisce alla conversazione quando finisce. Un thread cloud lavora sul proprio ramo e apre una pull request quando il lavoro lo richiede.

59* **Quello con cui ogni thread cloud inizia**:59* **Quello con cui ogni thread cloud inizia**:

60 * I repository e i file del progetto, più le sue [istruzioni e memoria](#give-a-project-standing-context)60 * I repository e i file del progetto, più le sue [istruzioni e memoria](#give-a-project-standing-context)

61 * Il `CLAUDE.md` e le skills in [ogni repository del progetto](#what-threads-pick-up-from-your-repositories), e in un progetto con un repository, anche le regole di permesso e gli hooks di quel repository61 * Il `CLAUDE.md` e le skill in [ogni repository del progetto](#what-threads-pick-up-from-your-repositories), e in un progetto con un repository, anche le regole di permesso e gli hook di quel repository

62 * I [connectors](#get-skills-plugins-connectors-and-tools-into-threads) sul tuo account claude.ai62 * I [connettori](#get-skills-plugins-connectors-and-tools-into-threads) sul tuo account claude.ai

63 * Un [ambiente cloud](#choose-an-environment-for-threads) che imposta il suo accesso di rete, le variabili di ambiente, le credenziali API e gli strumenti installati63 * Un [ambiente cloud](#choose-an-environment-for-threads) che imposta il suo accesso di rete, le variabili d'ambiente, i segreti di rete e gli strumenti installati

64* **Il riquadro Overview**: dove [vedi tutti i thread contemporaneamente](#see-what-needs-you-in-overview) e quali di loro hanno bisogno di te. Le sue altre schede sono **Library** per i file che hai aggiunto e i file che i thread hanno prodotto, **Pull requests** per quelli che i thread hanno aperto, e **Routines** per il lavoro programmato nel progetto.64* **Il riquadro Overview**: dove [vedi tutti i thread contemporaneamente](#see-what-needs-you-in-overview) e quali di loro hanno bisogno di te. Le sue altre schede sono **Library** per i file che hai aggiunto e i file che i thread hanno prodotto, **Pull requests** per quelli che i thread hanno aperto, e **Routines** per il lavoro programmato nel progetto.

65 65 

66I thread cloud non raccolgono nulla dalla configurazione di Claude Code sulla tua macchina. [Ottieni skills, plugins, connectors e strumenti nei thread](#get-skills-plugins-connectors-and-tools-into-threads) spiega come dare loro quello che altrimenti mancherebbe.66I thread cloud non raccolgono nulla dalla configurazione di Claude Code sulla tua macchina. [Ottieni skills, plugins, connectors e strumenti nei thread](#get-skills-plugins-connectors-and-tools-into-threads) spiega come dare loro quello che altrimenti mancherebbe.


92 92 

93* **Piano**: sei su Pro o Max e **Projects** appare nella tua barra laterale.93* **Piano**: sei su Pro o Max e **Projects** appare nella tua barra laterale.

94* **GitHub, se il project lavorerà su codice**: il tuo codice è su github.com piuttosto che su GitHub Enterprise Server, GitLab o Bitbucket, il tuo account GitHub connesso ha accesso push, e l'app Claude GitHub è installata su di esso. Se hai connesso GitHub con [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal), quel token lascia che le tue altre sessioni cloud raggiungano un repository ma non è sufficiente per i thread del project, che hanno bisogno dell'app Claude GitHub. [Configura l'accesso a GitHub](#set-up-github-access) ha i passaggi.94* **GitHub, se il project lavorerà su codice**: il tuo codice è su github.com piuttosto che su GitHub Enterprise Server, GitLab o Bitbucket, il tuo account GitHub connesso ha accesso push, e l'app Claude GitHub è installata su di esso. Se hai connesso GitHub con [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal), quel token lascia che le tue altre sessioni cloud raggiungano un repository ma non è sufficiente per i thread del project, che hanno bisogno dell'app Claude GitHub. [Configura l'accesso a GitHub](#set-up-github-access) ha i passaggi.

95* **Rete, credenziali e strumenti**: per i thread cloud, questi provengono dal [cloud environment](#choose-an-environment-for-threads) del project. L'ambiente predefinito raggiunge già [registri di pacchetti comuni](/docs/it/cloud-environments#default-allowed-domains), quindi controlla questo solo se il lavoro ha bisogno di altri domini, un segreto o uno strumento che non è preinstallato. Se il lavoro ha bisogno di un server MCP, controlla che appaia come connesso nei tuoi [connectors claude.ai](https://claude.ai/customize/connectors).95* **Rete, credenziali e strumenti**: per i thread cloud, questi provengono dal [cloud environment](#choose-an-environment-for-threads) del project. L'ambiente predefinito raggiunge già [registri di pacchetti comuni](/docs/it/cloud-environments#default-allowed-domains), quindi controlla questo solo se il lavoro ha bisogno di altri domini, un segreto o uno strumento che non è preinstallato. Se il lavoro ha bisogno di un server MCP, controlla che appaia come connesso nei tuoi [connettori di claude.ai](https://claude.ai/customize/connectors).

96 96 

97<h3 id="start-a-new-project-from-scratch">97<h3 id="start-a-new-project-from-scratch">

98 Avvia un nuovo project da zero98 Avvia un nuovo project da zero


396 Scegli un ambiente per i thread396 Scegli un ambiente per i thread

397</h3>397</h3>

398 398 

399Ogni nuovo thread cloud inizia nell'[ambiente cloud](/docs/it/cloud-environments) del progetto. L'ambiente imposta quali domini i thread possono raggiungere, quali variabili di ambiente hanno, quali credenziali API vengono aggiunte alle loro richieste, e cosa lo script di setup installa prima che Claude inizi. I thread cloud utilizzano un ambiente predefinito ospitato da Anthropic fino a quando non ne scegli uno in **Project settings > Environment**.399Ogni nuovo thread cloud inizia nell'[ambiente cloud](/docs/it/cloud-environments) del progetto. L'ambiente imposta quali domini i thread possono raggiungere, quali variabili d'ambiente hanno, quali secret di rete vengono aggiunti alle loro richieste, e cosa lo script di setup installa prima che Claude inizi. I thread cloud utilizzano un ambiente predefinito ospitato da Anthropic fino a quando non ne scegli uno in **Project settings > Environment**.

400 400 

401Se i thread cloud hanno bisogno di raggiungere un'API interna o un registro di pacchetti privato, o hanno bisogno di un token che la tua macchina normalmente contiene, cambia l'ambiente piuttosto che il progetto: vedi [Network access](/docs/it/cloud-environments#network-access), [Add API credentials](/docs/it/cloud-environments#add-api-credentials), e [Setup scripts](/docs/it/cloud-environments#setup-scripts).401Se i thread cloud hanno bisogno di raggiungere un'API interna o un registro di pacchetti privato, o hanno bisogno di un token che la tua macchina normalmente contiene, cambia l'ambiente piuttosto che il progetto: vedi [Network access](/docs/it/cloud-environments#network-access), [Add network secrets](/docs/it/cloud-environments#add-api-credentials), e [Setup scripts](/docs/it/cloud-environments#setup-scripts).

402 402 

403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">

404 Ottieni skills, plugin, connettori e strumenti nei thread404 Ottieni skills, plugin, connettori e strumenti nei thread


590</h2>590</h2>

591 591 

592* [Usa Claude Code nel cloud](/docs/it/claude-code-on-the-web): come funzionano le sessioni cloud dietro ogni thread, incluse le opzioni di accesso a GitHub e auto-fix sulle pull request592* [Usa Claude Code nel cloud](/docs/it/claude-code-on-the-web): come funzionano le sessioni cloud dietro ogni thread, incluse le opzioni di accesso a GitHub e auto-fix sulle pull request

593* [Configura cloud environment](/docs/it/cloud-environments): cambia cosa i thread possono raggiungere sulla rete, dai loro variabili di ambiente e credenziali API, e installa strumenti con uno script di configurazione593* [Configura cloud environment](/docs/it/cloud-environments): cambia cosa i thread cloud possono raggiungere sulla rete, fornisci loro variabili d'ambiente e segreti di rete, e installa strumenti con uno script di configurazione

594* [Automatizza il lavoro con le routine](/docs/it/routines): programmi, trigger e gestione per le routine, incluse quelle che Claude crea da un project594* [Automatizza il lavoro con le routine](/docs/it/routines): programmi, trigger e gestione per le routine, incluse quelle che Claude crea da un project

595* [Gestisci più agenti con agent view](/docs/it/agent-view): esegui e traccia più sessioni sulla tua macchina quando il lavoro ha bisogno di strumenti o servizi che solo la tua macchina può raggiungere595* [Gestisci più agenti con agent view](/docs/it/agent-view): esegui e traccia più sessioni sulla tua macchina quando il lavoro ha bisogno di strumenti o servizi che solo la tua macchina può raggiungere

596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): l'annuncio di lancio, con il ragionamento dietro la trasformazione di un project in una conversazione con Claude596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): l'annuncio di lancio, con il ragionamento dietro la trasformazione di un project in una conversazione con Claude

Details

31| `claude attach <id\|name>` | Collegati a una [sessione in background](/docs/it/agent-view#manage-sessions-from-the-shell) in questo terminale. Passare parte del nome di una sessione in esecuzione al posto dell'ID richiede Claude Code v2.1.290 o successivo | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | Collegati a una [sessione in background](/docs/it/agent-view#manage-sessions-from-the-shell) in questo terminale. Passare parte del nome di una sessione in esecuzione al posto dell'ID richiede Claude Code v2.1.290 o successivo | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Stampa le regole del classificatore della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) integrate come JSON. Usa `claude auto-mode config` per visualizzare la tua configurazione effettiva con le impostazioni applicate. `--label <prefix>` stampa solo le regole la cui etichetta inizia con quel prefisso, con corrispondenza case-insensitive. Richiede Claude Code v2.1.208 o successivo | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Stampa le regole del classificatore della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) integrate come JSON. Usa `claude auto-mode config` per visualizzare la tua configurazione effettiva con le impostazioni applicate. `--label <prefix>` stampa solo le regole la cui etichetta inizia con quel prefisso, con corrispondenza case-insensitive. Richiede Claude Code v2.1.208 o successivo | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Ripristina la configurazione predefinita della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) rimuovendo la sezione `autoMode` dal file di impostazioni dell'utente. Richiede conferma prima di scrivere; passa `-y`/`--yes` per saltare il prompt. Le regole dalle [impostazioni gestite](/docs/it/server-managed-settings) o dal flag `--settings` si applicano comunque. Richiede Claude Code v2.1.212 o successivo. Vedi [Ispeziona i valori predefiniti e la tua configurazione effettiva](/docs/it/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Ripristina la configurazione predefinita della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) rimuovendo la sezione `autoMode` dal file di impostazioni dell'utente. Richiede conferma prima di scrivere; passa `-y`/`--yes` per saltare il prompt. Le regole dalle [impostazioni gestite](/docs/it/server-managed-settings) o dal flag `--settings` si applicano comunque. Richiede Claude Code v2.1.212 o successivo. Vedi [Ispeziona i valori predefiniti e la tua configurazione effettiva](/docs/it/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | Segui il file di log del [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background, `~/.claude/daemon.log`, stampando le nuove righe man mano che arrivano finché non premi `Ctrl+C` | `claude daemon logs` |

35| `claude daemon run` | Esegui il [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background in primo piano in questo terminale, stampando il suo log | `claude daemon run` |

34| `claude daemon status` | Stampa lo stato del [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background, versione, directory socket e numero di worker per la diagnostica. Esce con 1 se il supervisore non è in esecuzione | `claude daemon status` |36| `claude daemon status` | Stampa lo stato del [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background, versione, directory socket e numero di worker per la diagnostica. Esce con 1 se il supervisore non è in esecuzione | `claude daemon status` |

35| `claude daemon stop --any` | Interrompi il [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background e le sessioni che ospita. Passa `--keep-workers` per lasciare le sessioni in background in esecuzione in modo che il supervisore successivo si riconnetta ad esse. `--any` conferma l'interruzione di un supervisore su richiesta, che è l'impostazione predefinita. Usa questo per recuperare da un [supervisore che non risponde](/docs/it/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | Interrompi il [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background e le sessioni che ospita. Passa `--keep-workers` per lasciare le sessioni in background in esecuzione in modo che il supervisore successivo si riconnetta ad esse. `--any` conferma l'interruzione di un supervisore su richiesta, che è l'impostazione predefinita. Usa questo per recuperare da un [supervisore che non risponde](/docs/it/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Stampa diagnostica di installazione e impostazioni di sola lettura dal terminale senza avviare una sessione, inclusa la salute dell'installazione, errori di convalida del file di impostazioni e idoneità a Remote Control. Per il controllo di configurazione in-sessione che può anche applicare correzioni, esegui [`/doctor`](/docs/it/commands#all-commands) | `claude doctor` |38| `claude doctor` | Stampa diagnostica di installazione e impostazioni di sola lettura dal terminale senza avviare una sessione, inclusa la salute dell'installazione, errori di convalida del file di impostazioni e idoneità a Remote Control. Per il controllo di configurazione in-sessione che può anche applicare correzioni, esegui [`/doctor`](/docs/it/commands#all-commands) | `claude doctor` |

Details

10 Gli ambienti cloud si applicano alle [sessioni cloud](/docs/it/claude-code-on-the-web), che sono disponibili sui piani Pro, Max e Team, e per gli utenti Enterprise con [posti premium o posti Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).10 Gli ambienti cloud si applicano alle [sessioni cloud](/docs/it/claude-code-on-the-web), che sono disponibili sui piani Pro, Max e Team, e per gli utenti Enterprise con [posti premium o posti Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>11</Note>

12 12 

13Ogni [sessione cloud](/docs/it/claude-code-on-the-web) viene eseguita in un ambiente cloud. È possibile configurare un ambiente per consentire o negare l'[accesso di rete](#access-levels), [impostare variabili di ambiente](#set-environment-variables) per la sessione, sui piani Pro e Max memorizzare [credenziali API](#add-api-credentials) che le sessioni utilizzano senza vederle, ed eseguire uno [script di configurazione](#setup-scripts) prima che Claude inizi a lavorare.13Ogni [sessione cloud](/docs/it/claude-code-on-the-web) viene eseguita in un ambiente cloud. È possibile configurare un ambiente per consentire o negare l'[accesso di rete](#access-levels), [impostare variabili d'ambiente](#set-environment-variables) per la sessione, sui piani Pro e Max memorizzare [segreti di rete](#add-api-credentials) che le sessioni utilizzano senza vederli, ed eseguire uno [script di configurazione](#setup-scripts) prima che Claude inizi a lavorare.

14 14 

15Gli stessi ambienti si applicano ovunque avviate una sessione cloud: l'[app Desktop](/docs/it/desktop), l'[app mobile Claude](/docs/it/mobile), il vostro browser su [claude.ai/code](https://claude.ai/code), il terminale con [`claude --cloud`](/docs/it/claude-code-on-the-web#from-terminal-to-cloud), [routine](/docs/it/routines) e [Claude Tag](https://claude.com/docs/claude-tag/overview). Ognuna di queste superfici può anche instradare a un [ambiente self-hosted](/docs/it/self-hosted-environments). [Disponibilità e limitazioni](/docs/it/self-hosted-environments#availability-and-limitations) copre cosa Claude non può ancora utilizzare quando una sessione Claude Tag viene eseguita in uno.15Gli stessi ambienti si applicano ovunque avviate una sessione cloud: l'[app Desktop](/docs/it/desktop), l'[app mobile Claude](/docs/it/mobile), il vostro browser su [claude.ai/code](https://claude.ai/code), il terminale con [`claude --cloud`](/docs/it/claude-code-on-the-web#from-terminal-to-cloud), [routine](/docs/it/routines) e [Claude Tag](https://claude.com/docs/claude-tag/overview). Ognuna di queste superfici può anche instradare a un [ambiente self-hosted](/docs/it/self-hosted-environments). [Disponibilità e limitazioni](/docs/it/self-hosted-environments#availability-and-limitations) copre cosa Claude non può ancora utilizzare quando una sessione Claude Tag viene eseguita in uno.

16 16 


58 <Step title="Aggiungere o modificare un ambiente">58 <Step title="Aggiungere o modificare un ambiente">

59 Selezionate **Cloud** per elencare i vostri ambienti. Quindi selezionate **Add cloud environment**, oppure passate il mouse su un ambiente esistente e selezionate l'icona delle impostazioni che appare a destra.59 Selezionate **Cloud** per elencare i vostri ambienti. Quindi selezionate **Add cloud environment**, oppure passate il mouse su un ambiente esistente e selezionate l'icona delle impostazioni che appare a destra.

60 60 

61 La finestra di dialogo include il nome, il livello di accesso di rete, le variabili di ambiente e lo script di configurazione. Quando modificate un ambiente cloud esistente su un piano Pro o Max, la finestra di dialogo include anche [credenziali API](#add-api-credentials).61 La finestra di dialogo include il nome, il livello di accesso di rete, le variabili d'ambiente e lo script di configurazione. Quando modifichi un ambiente cloud esistente su un piano Pro o Max, la finestra di dialogo include anche i [segreti di rete](#add-api-credentials).

62 62 

63 <Frame>63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="La finestra di dialogo New cloud environment. Un campo Name con il testo segnaposto Default, un selettore Network access impostato su Trusted con link alla politica di rete e ai livelli di accesso, una casella Environment variables che mostra il testo segnaposto in formato .env con una nota che i valori sono visibili a chiunque utilizzi l'ambiente, una casella Setup script descritta come uno script Bash che viene eseguito quando inizia una nuova sessione prima che Claude Code si avvii, e pulsanti Cancel e Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="La finestra di dialogo New cloud environment. Un campo Name con il testo segnaposto Default, un selettore Network access impostato su Trusted con link alla politica di rete e ai livelli di accesso, una casella Environment variables che mostra il testo segnaposto in formato .env con una nota che i valori sono visibili a chiunque utilizzi l'ambiente, una casella Setup script descritta come uno script Bash che viene eseguito quando inizia una nuova sessione prima che Claude Code si avvii, e pulsanti Cancel e Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />


91 91 

92Una sessione cloud imposta anche alcune variabili da sola quando si avvia. Per [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/it/claude-code-on-the-web#manage-context), il valore che la sessione imposta sostituisce uno che aggiungete qui, quindi aggiungere quella chiave qui non ha effetto.92Una sessione cloud imposta anche alcune variabili da sola quando si avvia. Per [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/it/claude-code-on-the-web#manage-context), il valore che la sessione imposta sostituisce uno che aggiungete qui, quindi aggiungere quella chiave qui non ha effetto.

93 93 

94Chiunque utilizzi l'ambiente può leggere i valori. Sui piani Pro e Max, utilizzate una [credenziale API](#add-api-credentials) invece per una chiave che il proxy dell'agente può allegare a una richiesta. Le [richieste che non ricevono mai una credenziale](#requests-that-never-get-the-credential) sono elencate lì.94Chiunque utilizzi l'ambiente può leggere i valori. Sui piani Pro e Max, utilizza invece un [segreto di rete](#add-api-credentials) per una chiave che il proxy dell'agente può allegare a una richiesta. Le [richieste che non ricevono mai un segreto](#requests-that-never-get-the-credential) sono elencate lì.

95 95 

96<h3 id="add-api-credentials">96<h3 id="add-api-credentials">

97 Aggiungere credenziali API97 Aggiungere segreti di rete

98</h3>98</h3>

99 99 

100Una credenziale API è una chiave API o un token che memorizzate in un ambiente cloud in modo che Claude possa chiamare quell'API da qualsiasi sessione nell'ambiente senza vedere la chiave. Il proxy dell'agente di Anthropic aggiunge la chiave alle richieste per gli host che elencate, dopo che ogni richiesta esce dalla VM della sessione. La chiave non raggiunge mai Claude, i comandi che esegue, o le variabili di ambiente della sessione.100Un segreto di rete è una chiave API o un token che memorizzi in un ambiente cloud in modo che Claude possa chiamare quell'API da qualsiasi sessione nell'ambiente senza vedere la chiave. Il proxy dell'agente di Anthropic aggiunge la chiave alle richieste per gli host che elenchi, dopo che ogni richiesta esce dalla VM della sessione. La chiave non raggiunge mai Claude, i comandi che esegue o le variabili d'ambiente della sessione.

101 101 

102Le credenziali API sono disponibili sui piani Pro e Max. Non sono ancora disponibili sui piani Team o Enterprise, quindi la sezione **API credentials** non appare nella finestra di dialogo dell'ambiente su quei piani.102I segreti di rete sono disponibili sui piani Pro e Max. Non sono ancora disponibili sui piani Team o Enterprise, quindi la sezione **Network secrets** non appare nella finestra di dialogo dell'ambiente su quei piani.

103 103 

104<h4 id="requirements">104<h4 id="requirements">

105 Requisiti105 Requisiti

106</h4>106</h4>

107 107 

108Due di questi decidono se potete aggiungere una credenziale, e due decidono se il proxy dell'agente può utilizzarla una volta aggiunta:108Due di questi decidono se puoi aggiungere un segreto, e due decidono se il proxy dell'agente può utilizzarlo una volta aggiunto:

109 109 

110* **Ruolo**: un ruolo di amministratore dell'organizzazione nella vostra organizzazione claude.ai110* **Ruolo**: un ruolo di amministratore dell'organizzazione nella vostra organizzazione claude.ai

111 * Su Team ed Enterprise, gli Owner lo detengono e gli Admin no111 * Su Team ed Enterprise, gli Owner lo detengono e gli Admin no

112 * Su Pro e Max, lo detenete nella vostra organizzazione personale112 * Su Pro e Max, lo detenete nella vostra organizzazione personale

113* **Tipo di ambiente**: un ambiente cloud ospitato da Anthropic che già esiste. Un [ambiente self-hosted](/docs/it/self-hosted-environments) non ha credenziali API113* **Tipo di ambiente**: un ambiente cloud ospitato da Anthropic che esiste già. Un [ambiente self-hosted](/docs/it/self-hosted-environments) non ha segreti di rete

114* **Raggiungibilità API**: l'API accetta connessioni da internet, perché le richieste escono dalla rete di Anthropic114* **Raggiungibilità API**: l'API accetta connessioni da internet, perché le richieste escono dalla rete di Anthropic

115* **Chiavi di crittografia**: se la vostra organizzazione utilizza chiavi di crittografia gestite dal cliente, non potete salvare credenziali115* **Chiavi di crittografia**: se la tua organizzazione utilizza chiavi di crittografia gestite dal cliente, non puoi salvare segreti di rete

116 116 

117<h4 id="add-a-credential">117<h4 id="add-a-credential">

118 Aggiungere una credenziale118 Aggiungere un segreto

119</h4>119</h4>

120 120 

121Aggiungi le credenziali una alla volta, e non puoi modificare una credenziale dopo averla aggiunta. Per cambiare gli host o il valore di una credenziale, eliminala e aggiungila di nuovo.121Aggiungi i segreti uno alla volta, e non puoi modificare un segreto dopo averlo aggiunto. Per cambiare gli host o il valore di un segreto, eliminalo e aggiungilo di nuovo.

122 122 

123<Steps>123<Steps>

124 <Step title="Aprire le credenziali API dell'ambiente">124 <Step title="Aprire i segreti di rete dell'ambiente">

125 [Apri l'ambiente per la modifica](#configure-your-environment) su [claude.ai/code](https://claude.ai/code). Nella finestra di dialogo **Edit environment**, trova la sezione **API credentials**. Vedi le credenziali già presenti sull'ambiente, ognuna con gli host a cui si applica.125 [Apri l'ambiente per la modifica](#configure-your-environment) su [claude.ai/code](https://claude.ai/code). Nella finestra di dialogo **Edit environment**, trova la sezione **Network secrets**. Vedi i segreti già presenti nell'ambiente, ognuno con gli host a cui si applica.

126 </Step>126 </Step>

127 127 

128 <Step title="Aggiungere la credenziale">128 <Step title="Aggiungere il segreto">

129 Seleziona **Add credential** e compila il modulo. Mantieni il **Credential type** predefinito, **Bearer**, per una chiave API che viaggia in un'intestazione della richiesta, e compila questi campi:129 Seleziona **Add secret** e compila il modulo. Mantieni il **Credential type** predefinito, **Bearer**, per una chiave API che viaggia in un'intestazione della richiesta, e compila questi campi:

130 130 

131 * **Name**: un'etichetta per la credenziale, come `Internal billing API`131 * **Name**: un'etichetta per il segreto, come `Internal billing API`

132 * **Allowed websites**: gli host dell'API, come `api.example.com`. Un `*.` iniziale corrisponde a ogni sottodominio132 * **Allowed websites**: gli host dell'API, come `api.example.com`. Un `*.` iniziale corrisponde a ogni sottodominio

133 * **Custom headers**: una riga per l'intestazione che trasporta la chiave. La riga inizia con `Authorization` come **Name** dell'intestazione e `Bearer` come suo **Prefix**; incollate la chiave stessa come **Value**. Per un'intestazione come `X-Api-Key` che accetta il valore nudo, cambiate il nome e cancellate il prefisso133 * **Custom headers**: una riga per l'intestazione che trasporta la chiave. La riga inizia con `Authorization` come **Name** dell'intestazione e `Bearer` come suo **Prefix**; incolla la chiave stessa come **Value**. Per un'intestazione come `X-Api-Key` che accetta il valore nudo, cambia il nome e cancella il prefisso

134 134 

135 Per un'API che si autentica in un altro modo, scegliete un **Credential type** diverso. L'elenco è lo stesso che [Claude Tag](https://claude.com/docs/claude-tag/overview), l'integrazione Slack per i piani Team ed Enterprise, offre per le [connessioni](https://claude.com/docs/claude-tag/admins/add-connections).135 Per un'API che si autentica in un altro modo, scegli un **Credential type** diverso. L'elenco è lo stesso che [Claude Tag](https://claude.com/docs/claude-tag/overview), l'integrazione Slack per i piani Team ed Enterprise, offre per le [connessioni](https://claude.com/docs/claude-tag/admins/add-connections).

136 </Step>136 </Step>

137 137 

138 <Step title="Salvare la credenziale">138 <Step title="Salvare il segreto">

139 Selezionate **Connect**. La credenziale appare nell'elenco con i suoi host, salvata senza il pulsante **Save changes** della finestra di dialogo. Non potete visualizzare il valore di nuovo dopo il salvataggio.139 Seleziona **Connect**. Il segreto appare nell'elenco con i suoi host, salvato senza il pulsante **Save changes** della finestra di dialogo. Non puoi visualizzare di nuovo il valore dopo il salvataggio.

140 </Step>140 </Step>

141</Steps>141</Steps>

142 142 

143Per confermare che la credenziale funziona, avviate una sessione nell'ambiente e chiedete a Claude di chiamare l'API, ad esempio con `curl`. L'API risponde come se la chiave fosse nella richiesta, e la chiave non appare nelle variabili di ambiente della sessione o in nessun file. Se l'elenco contrassegna una credenziale **Not sent**, la nota sotto di essa dice perché e cosa fare. Due credenziali i cui host si sovrappongono senza corrispondere esattamente non ricevono alcun marcatore, e il proxy dell'agente ne invia solo una.143Per confermare che il segreto funziona, avvia una sessione nell'ambiente e chiedi a Claude di chiamare l'API, ad esempio con `curl`. L'API risponde come se la chiave fosse nella richiesta, e la chiave non appare nelle variabili d'ambiente della sessione né in alcun file. Se invece l'elenco contrassegna un segreto come **Not sent**, la nota sotto di esso spiega il motivo e cosa fare. Due segreti i cui host si sovrappongono senza corrispondere esattamente non ricevono alcun contrassegno, e il proxy dell'agente ne invia solo uno.

144 144 

145<h4 id="which-requests-get-the-credential">145<h4 id="which-requests-get-the-credential">

146 Quali richieste ricevono la credenziale146 Quali richieste ricevono il segreto

147</h4>147</h4>

148 148 

149Il proxy dell'agente allega una credenziale a una richiesta quando l'host della richiesta corrisponde a uno che avete elencato su quella credenziale. Le sessioni possono raggiungere quegli host anche quando il [livello di accesso di rete](#access-levels) dell'ambiente non lo permetterebbe altrimenti, tranne gli [host che non ricevono mai la credenziale](#requests-that-never-get-the-credential). La credenziale si applica in ogni sessione che viene eseguita nell'ambiente, chiunque l'abbia avviata, finché non la cancellate.149Il proxy dell'agente allega un segreto a una richiesta quando l'host della richiesta corrisponde a uno che hai elencato su quel segreto. Le sessioni possono raggiungere quegli host anche quando il [livello di accesso di rete](#access-levels) dell'ambiente non lo permetterebbe altrimenti, tranne gli [host che non ricevono mai il segreto](#requests-that-never-get-the-credential). Il segreto si applica in ogni sessione eseguita nell'ambiente, chiunque l'abbia avviata, finché non lo elimini.

150 150 

151<h4 id="requests-that-never-get-the-credential">151<h4 id="requests-that-never-get-the-credential">

152 Richieste che non ricevono mai la credenziale152 Richieste che non ricevono mai il segreto

153</h4>153</h4>

154 154 

155Il proxy dell'agente non allega mai una credenziale che aggiungete a queste richieste:155Il proxy dell'agente non allega mai un segreto che aggiungi a queste richieste:

156 156 

157* **GitHub**: il [proxy GitHub](#github-proxy) autentica le richieste a GitHub invece, quindi non avete bisogno di una credenziale API per esso157* **GitHub**: è invece il [proxy GitHub](#github-proxy) ad autenticare le richieste a GitHub, quindi non hai bisogno di un segreto di rete per esso

158* **L'API Anthropic e i registri di pacchetti pubblici**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` e `proxy.golang.org`158* **L'API Anthropic e i registri di pacchetti pubblici**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` e `proxy.golang.org`

159* **Richieste dello script di configurazione**: Claude Code si connette al proxy dell'agente quando si avvia, dopo che lo [script di configurazione](#setup-scripts) è stato eseguito159* **Richieste dello script di configurazione**: Claude Code si connette al proxy dell'agente quando si avvia, dopo che lo [script di configurazione](#setup-scripts) è stato eseguito

160* **Esportazione della telemetria di Claude Code**: Claude Code invia l'[esportazione della telemetria](/docs/it/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) propria piuttosto che attraverso un comando che esegue, e quella richiesta non passa attraverso il proxy dell'agente160* **Esportazione della telemetria di Claude Code**: Claude Code invia l'[esportazione della telemetria](/docs/it/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) propria piuttosto che attraverso un comando che esegue, e quella richiesta non passa attraverso il proxy dell'agente


179 179 

180* Le sessioni già in esecuzione nell'ambiente continuano a funzionare.180* Le sessioni già in esecuzione nell'ambiente continuano a funzionare.

181* L'ambiente scompare dal selettore e da `/remote-env`, quindi non potete sceglierlo per le nuove sessioni.181* L'ambiente scompare dal selettore e da `/remote-env`, quindi non potete sceglierlo per le nuove sessioni.

182* Le credenziali API sull'ambiente rimangono allegate nelle sue sessioni in esecuzione. Cancellate quelle che non desiderate più prima di archiviare.182* I segreti di rete dell'ambiente rimangono allegati nelle sue sessioni in esecuzione. Elimina quelli che non vuoi più prima di archiviare.

183* Nessuna nuova sessione può iniziare in un ambiente archiviato, su nessuna superficie. Se l'ambiente era il vostro [default CLI](#select-an-environment-from-the-cli) salvato, Claude Code avvia le sessioni cloud CLI nell'ambiente ospitato da Anthropic quando il vostro elenco ne ha uno, e altrimenti nel primo ambiente nel vostro elenco che non è un [ambiente bridge Remote Control](#the-default-environment). Qualsiasi cosa configurata con l'ambiente esplicitamente, come una [routine](/docs/it/routines#environments-and-network-access), non può avviare nuove sessioni in esso. Puntate a un altro ambiente.183* Nessuna nuova sessione può iniziare in un ambiente archiviato, su nessuna superficie. Se l'ambiente era il vostro [default CLI](#select-an-environment-from-the-cli) salvato, Claude Code avvia le sessioni cloud CLI nell'ambiente ospitato da Anthropic quando il vostro elenco ne ha uno, e altrimenti nel primo ambiente nel vostro elenco che non è un [ambiente bridge Remote Control](#the-default-environment). Qualsiasi cosa configurata con l'ambiente esplicitamente, come una [routine](/docs/it/routines#environments-and-network-access), non può avviare nuove sessioni in esso. Puntate a un altro ambiente.

184 184 

185<h3 id="organization-shared-environments">185<h3 id="organization-shared-environments">


197 197 

198Gli Owner scelgono l'[ambiente predefinito](#the-default-environment) dell'organizzazione separatamente, su [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).198Gli Owner scelgono l'[ambiente predefinito](#the-default-environment) dell'organizzazione separatamente, su [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

199 199 

200Le sessioni di ogni membro in un ambiente condiviso leggono le sue variabili, quindi non includete segreti in esse. Le [credenziali API](#add-api-credentials), che danno alle sessioni una chiave che non possono leggere, non sono ancora disponibili sui piani Team o Enterprise.200Le sessioni di ogni membro in un ambiente condiviso leggono le sue variabili, quindi non includervi segreti. I [segreti di rete](#add-api-credentials), che danno alle sessioni una chiave che non possono leggere, non sono ancora disponibili sui piani Team o Enterprise.

201 201 

202<h3 id="set-the-environment-a-claude-tag-channel-uses">202<h3 id="set-the-environment-a-claude-tag-channel-uses">

203 Impostare l'ambiente che un canale Claude Tag utilizza203 Impostare l'ambiente che un canale Claude Tag utilizza


239 239 

240* GitHub, attraverso il suo [proxy separato](#github-proxy)240* GitHub, attraverso il suo [proxy separato](#github-proxy)

241* I [connettori MCP](#network-access) che abilitate, il cui traffico viaggia attraverso i server di Anthropic241* I [connettori MCP](#network-access) che abilitate, il cui traffico viaggia attraverso i server di Anthropic

242* Gli host che avete elencato sulle [credenziali API](#add-api-credentials) dell'ambiente, tranne gli [host che non ricevono mai la credenziale](#requests-that-never-get-the-credential)242* Gli host che hai elencato nei [segreti di rete](#add-api-credentials) dell'ambiente, tranne gli [host che non ricevono mai il segreto](#requests-that-never-get-the-credential)

243* L'API Anthropic, per le richieste di Claude Code stesso, anche a **None**, come notato sotto [Sicurezza e isolamento](/docs/it/claude-code-on-the-web#security-and-isolation)243* L'API Anthropic, per le richieste di Claude Code stesso, anche a **None**, come notato sotto [Sicurezza e isolamento](/docs/it/claude-code-on-the-web#security-and-isolation)

244 244 

245<h3 id="allow-specific-domains">245<h3 id="allow-specific-domains">


254registry.example.com254registry.example.com

255```255```

256 256 

257Le sessioni in questo ambiente possono ora raggiungere `api.example.com`, qualsiasi sottodominio di `internal.example.com` e `registry.example.com`, e nessun altro dominio attraverso la rete della sessione. Il [traffico GitHub](#github-proxy), il [traffico del connettore MCP](#network-access) e le richieste agli host delle [credenziali API](#add-api-credentials) dell'ambiente, diversi dagli [host che non ricevono mai la credenziale](#requests-that-never-get-the-credential), non passano attraverso questo elenco di consentiti. Un `*.` iniziale corrisponde a ogni sottodominio. Per mantenere anche i [domini Trusted](#default-allowed-domains), selezionate **Also include default list of common package managers**; lasciatelo deselezionato per consentire solo quello che elencate.257Le sessioni in questo ambiente possono ora raggiungere `api.example.com`, qualsiasi sottodominio di `internal.example.com` e `registry.example.com`, e nessun altro dominio attraverso la rete della sessione. Il [traffico GitHub](#github-proxy), il [traffico dei connettori MCP](#network-access) e le richieste agli host dei [segreti di rete](#add-api-credentials) dell'ambiente, diversi dagli [host che non ricevono mai il segreto](#requests-that-never-get-the-credential), non passano attraverso questa allowlist. Un `*.` iniziale corrisponde a ogni sottodominio. Per mantenere anche i [domini Trusted](#default-allowed-domains), seleziona **Also include default list of common package managers**; lascialo deselezionato per consentire solo ciò che elenchi.

258 258 

259Se la vostra organizzazione utilizza gli [artifact](/docs/it/artifacts#availability), non avete bisogno di `*.frame.claudeusercontent.com` nell'elenco affinché le sessioni li leggano. Quando l'elenco lascia fuori quell'host, Claude Code legge il contenuto dell'artifact attraverso la connessione della sessione ad Anthropic invece. Mantenete l'host in un elenco di consentiti in due situazioni:259Se la vostra organizzazione utilizza gli [artifact](/docs/it/artifacts#availability), non avete bisogno di `*.frame.claudeusercontent.com` nell'elenco affinché le sessioni li leggano. Quando l'elenco lascia fuori quell'host, Claude Code legge il contenuto dell'artifact attraverso la connessione della sessione ad Anthropic invece. Mantenete l'host in un elenco di consentiti in due situazioni:

260 260 


292 Cosa è disponibile nelle sessioni cloud292 Cosa è disponibile nelle sessioni cloud

293</h2>293</h2>

294 294 

295Negli ambienti ospitati da Anthropic, ogni sessione ottiene una macchina virtuale (VM) fresca che esegue Ubuntu 24.04 su x86\_64, indipendentemente dal vostro sistema operativo e dall'architettura della CPU, con il vostro repository clonato e i toolchain comuni preinstallati. Quando una dipendenza fornisce binari precompilati, come gem Ruby con estensioni native o wheel Python precostruiti, utilizzate la sua build Linux x86\_64 per corrispondere alla VM. Questa sezione copre i default ospitati da Anthropic, gli strumenti GitHub integrati, come [eseguire test e servizi](#run-tests-start-services-and-add-packages), i [limiti di risorse](#resource-limits) che ogni VM ottiene, e i [limiti di tempo](#time-limits) sul lavoro a lunga esecuzione.295Negli ambienti ospitati da Anthropic, ogni sessione ottiene una macchina virtuale (VM) nuova che esegue Ubuntu 24.04 su x86\_64, indipendentemente dal tuo sistema operativo e dall'architettura della tua CPU, con il tuo repository clonato e i toolchain comuni preinstallati. Quando una dipendenza fornisce binari precompilati, come gem Ruby con estensioni native o wheel Python precompilati, usa la sua build Linux x86\_64 per corrispondere alla VM. Questa sezione copre i default degli ambienti ospitati da Anthropic, gli strumenti GitHub integrati, come [eseguire test e servizi](#run-tests-start-services-and-add-packages), i [limiti di risorse](#resource-limits) di ogni VM e i [limiti di tempo](#time-limits) sul lavoro a lunga esecuzione.

296 296 

297<Note>297<Note>

298 Le sessioni che la vostra organizzazione instrada a un [ambiente self-hosted](/docs/it/self-hosted-environments) vengono eseguite sui vostri runner invece, con gli strumenti che la vostra immagine runner fornisce.298 Le sessioni che la tua organizzazione instrada a un [ambiente self-hosted](/docs/it/self-hosted-environments) vengono invece eseguite sui tuoi runner, con gli strumenti forniti dalla tua immagine runner.

299</Note>299</Note>

300 300 

301<h3 id="what-carries-over-from-your-setup">301<h3 id="what-carries-over-from-your-setup">

302 Cosa viene trasferito dalla vostra configurazione302 Cosa viene trasferito dalla tua configurazione

303</h3>303</h3>

304 304 

305Le sessioni cloud iniziano da un clone fresco del vostro repository. Qualsiasi cosa che sottoponete a commit nel repository è disponibile. Qualsiasi cosa che avete installato o configurato solo sulla vostra macchina non è disponibile nella sessione. La politica della vostra organizzazione arriva separatamente attraverso le [impostazioni gestite dal server](/docs/it/server-managed-settings).305Le sessioni cloud partono da un clone nuovo del tuo repository. Tutto ciò di cui fai il commit nel repository è disponibile. Tutto ciò che hai installato o configurato solo sulla tua macchina non è disponibile nella sessione. La policy della tua organizzazione arriva separatamente tramite le [impostazioni gestite dal server](/docs/it/server-managed-settings).

306 306 

307| | Disponibile nelle sessioni cloud | Perché |307| | Disponibile nelle sessioni cloud | Perché |

308| :- | :- | :- |308| :- | :- | :- |

309| Il vostro `CLAUDE.md` del repository | Sì | Parte del clone |309| Il `CLAUDE.md` del tuo repository | Sì | Parte del clone |

310| I vostri hook `.claude/settings.json` del repository e le regole di permesso | Sì, in una sessione con un repository | Parte del clone. Una sessione con diversi repository, incluso un thread di [progetto](/docs/it/claude-projects#what-threads-pick-up-from-your-repositories), inizia sopra i clone e non li legge |310| Gli hook e le regole di permesso in `.claude/settings.json` del tuo repository | Sì, in una sessione con un solo repository | Parte del clone. Una sessione con più repository, incluso un thread di [progetto](/docs/it/claude-projects#what-threads-pick-up-from-your-repositories), parte al di sopra dei clone e non li legge |

311| I vostri server MCP `.mcp.json` del repository | Sì, in una sessione con un repository | Parte del clone, trovato dalla directory di lavoro della sessione |311| I server MCP in `.mcp.json` del tuo repository | Sì, in una sessione con un solo repository | Parte del clone, trovato a partire dalla directory di lavoro della sessione |

312| Il vostro `.claude/rules/` del repository | Sì | Parte del clone |312| La directory `.claude/rules/` del tuo repository | Sì | Parte del clone |

313| Il vostro `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del repository | Sì | Parte del clone |313| Le directory `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del tuo repository | Sì | Parte del clone |

314| Plugin e marketplace dichiarati nel vostro `.claude/settings.json` del repository | No | Una sessione cloud non installa i plugin che un repository attiva sotto [`enabledPlugins`](/docs/it/settings-reference#enabledplugins), inclusi quelli dai marketplace che elenca sotto [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) |314| Plugin e marketplace dichiarati in `.claude/settings.json` del tuo repository | No | Una sessione cloud non installa i plugin che un repository attiva in [`enabledPlugins`](/docs/it/settings-reference#enabledplugins), inclusi quelli dei marketplace che elenca in [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) |

315| Le [impostazioni gestite dal server](/docs/it/server-managed-settings) della vostra organizzazione | Sì, eccetto nelle sessioni di [Claude Tag](https://claude.com/docs/claude-tag/overview) | Recuperate dai server di Anthropic quando la sessione inizia. Consultate [Copertura della superficie](/docs/it/model-config#surface-coverage) per come `availableModels` viene applicato nelle sessioni cloud. Le impostazioni distribuite al vostro dispositivo tramite MDM o file di impostazioni gestite non si applicano, perché la sessione viene eseguita su una VM gestita da Anthropic; in un [ambiente self-hosted](/docs/it/self-hosted-environments), le sessioni leggono anche il file di impostazioni gestite nell'immagine runner, per [come Claude Code combina le fonti gestite](/docs/it/managed-settings#how-claude-code-combines-managed-sources) |315| Le [impostazioni gestite dal server](/docs/it/server-managed-settings) della tua organizzazione | Sì, tranne nelle sessioni di [Claude Tag](https://claude.com/docs/claude-tag/overview) | Recuperate dai server di Anthropic all'avvio della sessione. Consulta [Copertura delle superfici](/docs/it/model-config#surface-coverage) per sapere come viene applicato `availableModels` nelle sessioni cloud. Le impostazioni distribuite sul tuo dispositivo tramite MDM o file di impostazioni gestite non si applicano, perché la sessione viene eseguita su una VM gestita da Anthropic; in un [ambiente self-hosted](/docs/it/self-hosted-environments), le sessioni leggono anche il file di impostazioni gestite nell'immagine runner, secondo [come Claude Code combina le fonti gestite](/docs/it/managed-settings#how-claude-code-combines-managed-sources) |

316| Il vostro `~/.claude/CLAUDE.md` utente | No | Vive sulla vostra macchina, non nel repository |316| Il tuo `~/.claude/CLAUDE.md` utente | No | Si trova sulla tua macchina, non nel repository. Consulta [Aggiungere preferenze personali senza fare il commit nel repository](#add-personal-preferences-without-committing-to-the-repo) |

317| Il vostro `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` utente | No | Vivono sulla vostra macchina, non nel repository. Sottoponete a commit nel directory `.claude/` del repository. Le sessioni cloud caricano automaticamente le skill che abilitate su claude.ai |317| Le tue directory utente `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | No | Si trovano sulla tua macchina, non nel repository. Fai invece il commit dei loro contenuti nella directory `.claude/` del repository. Le sessioni cloud caricano automaticamente le skill che abiliti su claude.ai |

318| Plugin abilitati solo nelle vostre impostazioni utente | No | L'`enabledPlugins` con ambito utente vive in `~/.claude/settings.json` sulla vostra macchina |318| Plugin abilitati solo nelle tue impostazioni utente | No | `enabledPlugins` con ambito utente si trova in `~/.claude/settings.json` sulla tua macchina |

319| Server MCP che avete aggiunto con `claude mcp add` all'ambito locale predefinito o all'ambito utente | No | Quelli scrivono su `~/.claude.json` sulla vostra macchina, non nel repository. Aggiungete il server con `claude mcp add --scope project`, che scrive il [`.mcp.json`](/docs/it/mcp#project-scope) del repository, e sottoponete a commit quel file. Una sessione con un repository lo carica |319| Server MCP che hai aggiunto con `claude mcp add` nell'ambito locale predefinito o nell'ambito utente | No | Questi scrivono in `~/.claude.json` sulla tua macchina, non nel repository. Aggiungi il server con `claude mcp add --scope project`, che scrive il file [`.mcp.json`](/docs/it/mcp#project-scope) del repository, e fai il commit di quel file. Una sessione con un solo repository lo carica |

320| Variabili di trasporto nel vostro blocco `env` di `.claude/settings.json` del repository, come `NODE_EXTRA_CA_CERTS` e le [variabili del certificato client mTLS](/docs/it/network-config#mtls-authentication) | No | L'ambiente di hosting gestisce la connessione API della sessione, quindi Claude Code ignora queste chiavi e annota ogni chiave ignorata nel log di debug della sessione |320| Variabili di trasporto nel blocco `env` di `.claude/settings.json` del tuo repository, come `NODE_EXTRA_CA_CERTS` e le [variabili del certificato client mTLS](/docs/it/network-config#mtls-authentication) | No | L'ambiente di hosting gestisce la connessione API della sessione, quindi Claude Code ignora queste chiavi e annota ogni chiave ignorata nel log di debug della sessione |

321| Chiavi API e token per i servizi che Claude chiama | Sui piani Pro e Max, come [credenziali API](#add-api-credentials) | Aggiungete la chiave una volta sull'ambiente e il proxy dell'agente la allega alle richieste per gli host che elencate. Una chiave che il proxy dell'agente [non può allegare](#requests-that-never-get-the-credential), o qualsiasi chiave su un piano Team o Enterprise, rimane in una variabile di ambiente |321| Chiavi API e token per i servizi che Claude chiama | Sui piani Pro e Max, come [segreti di rete](#add-api-credentials) | Aggiungi la chiave una volta sull'ambiente e il proxy dell'agente la allega alle richieste per gli host che elenchi. Una chiave che il proxy dell'agente [non può allegare](#requests-that-never-get-the-credential), o qualsiasi chiave su un piano Team o Enterprise, rimane in una variabile d'ambiente |

322| Auth interattivo come AWS SSO | No | Non supportato. SSO richiede un login basato su browser che non può essere eseguito in una sessione cloud |322| Autenticazione interattiva come AWS SSO | No | Non supportata. SSO richiede un login basato su browser che non può essere eseguito in una sessione cloud |

323 323 

324Per rendere disponibile la vostra configurazione nelle sessioni cloud, sottoponete a commit nel repository.324Per rendere disponibile la tua configurazione nelle sessioni cloud, fanne il commit nel repository.

325 325 

326Chiunque utilizzi l'ambiente può leggere le sue variabili di ambiente e lo script di configurazione. La nota della finestra di dialogo sotto **Environment variables** lo dice e avverte contro l'aggiunta di segreti lì. Sui piani Pro e Max, memorizzate una chiave che il proxy dell'agente può allegare come [credenziale API](#add-api-credentials) invece.326Chiunque utilizzi l'ambiente può leggerne le variabili d'ambiente e lo script di configurazione. La nota della finestra di dialogo sotto **Environment variables** lo indica e sconsiglia di inserirvi segreti. Sui piani Pro e Max, memorizza invece una chiave che il proxy dell'agente può allegare come [segreto di rete](#add-api-credentials).

327 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 Aggiungere preferenze personali senza fare il commit nel repository

330</h4>

331 

332In un ambiente ospitato da Anthropic, aggiungi uno [script di configurazione](#setup-scripts) che scriva `~/.claude/CLAUDE.md` per le preferenze che preferisci non inserire in un repository condiviso. Claude Code carica quel file come [istruzioni utente](/docs/it/memory#choose-where-to-put-claude-md-files) nella sessione. Questo esempio imposta una preferenza per i messaggi di commit:

333 

334```bash theme={null}

335#!/bin/bash

336mkdir -p ~/.claude

337cat > ~/.claude/CLAUDE.md <<'EOF'

338Use conventional commit messages.

339EOF

340```

341 

342Inserisci lo script in uno dei tuoi ambienti personali anziché in uno [condiviso](#organization-shared-environments).

343 

344Esegui `/context` nella tua prossima sessione cloud e verifica che `/root/.claude/CLAUDE.md` compaia sotto **Memory files**.

327 345 

328<h3 id="installed-tools">346<h3 id="installed-tools">

329 Strumenti installati347 Strumenti installati

330</h3>348</h3>

331 349 

332Le sessioni cloud vengono fornite con runtime di linguaggio comuni, strumenti di build e database preinstallati. La tabella seguente riassume cosa è incluso per categoria.350Le sessioni cloud includono runtime di linguaggio comuni, strumenti di build e database preinstallati. La tabella seguente riassume cosa è incluso per categoria.

333 351 

334| Categoria | Incluso |352| Categoria | Incluso |

335| :- | :- |353| :- | :- |


347 365 

348¹ Bun è installato ma ha [problemi di compatibilità](#install-dependencies-with-a-sessionstart-hook) noti con il proxy per il recupero dei pacchetti.366¹ Bun è installato ma ha [problemi di compatibilità](#install-dependencies-with-a-sessionstart-hook) noti con il proxy per il recupero dei pacchetti.

349 367 

350Per ottenere le versioni della maggior parte degli strumenti in questa tabella, chiedete a Claude di eseguire `check-tools` in una sessione cloud. È un comando shell installato sulla VM della sessione, non un comando che digitate con `/`; chiedete a Claude perché [Claude esegue tutti i comandi della VM per voi](#run-tests-start-services-and-add-packages). Per uno strumento che non segnala, come Ruby, PHP, bun, PostgreSQL o Redis, chiedete a Claude di eseguire il comando di versione dello strumento stesso, ad esempio `psql --version`.368Per ottenere le versioni della maggior parte degli strumenti in questa tabella, chiedi a Claude di eseguire `check-tools` in una sessione cloud. È un comando shell installato sulla VM della sessione, non un comando che digiti con `/`; lo chiedi a Claude perché [Claude esegue tutti i comandi della VM per te](#run-tests-start-services-and-add-packages). Per uno strumento che non riporta, come Ruby, PHP, bun, PostgreSQL o Redis, chiedi a Claude di eseguire il comando di versione dello strumento stesso, ad esempio `psql --version`.

351 369 

352Le versioni di Node.js sono installate su `/opt/node20`, `/opt/node21` e `/opt/node22`, con 22 su `PATH` per impostazione predefinita. Per lavorare con una versione diversa, chiedete a Claude di anteporre la directory `bin` di quella versione, come `/opt/node20/bin`, a `PATH`.370Le versioni di Node.js sono installate in `/opt/node20`, `/opt/node21` e `/opt/node22`, con la 22 su `PATH` per impostazione predefinita. Per lavorare con una versione diversa, chiedi a Claude di anteporre a `PATH` la directory `bin` di quella versione, come `/opt/node20/bin`.

353 371 

354I toolchain al di fuori di questo elenco, come .NET SDK, non sono preinstallati anche quando i loro registri di pacchetti sono sulla [lista di consentiti predefinita](#default-allowed-domains). Installateli con uno [script di configurazione](#setup-scripts).372I toolchain non presenti in questo elenco, come .NET SDK, non sono preinstallati anche quando i relativi registri di pacchetti sono nell'[allowlist predefinita](#default-allowed-domains). Installali con uno [script di configurazione](#setup-scripts).

355 373 

356<h3 id="work-with-github-issues-and-pull-requests">374<h3 id="work-with-github-issues-and-pull-requests">

357 Lavorare con i problemi e le pull request di GitHub375 Lavorare con issue e pull request di GitHub

358</h3>376</h3>

359 377 

360Le sessioni cloud includono strumenti GitHub integrati che consentono a Claude di leggere i problemi, elencare le pull request, recuperare i diff e pubblicare commenti senza alcuna configurazione. Questi strumenti si autenticano attraverso il [proxy GitHub](#github-proxy) utilizzando il metodo che avete configurato sotto [Opzioni di autenticazione GitHub](/docs/it/claude-code-on-the-web#github-authentication-options), quindi il vostro token non entra mai nel contenitore.378Le sessioni cloud includono strumenti GitHub integrati che consentono a Claude di leggere le issue, elencare le pull request, recuperare i diff e pubblicare commenti senza alcuna configurazione. Questi strumenti si autenticano tramite il [proxy GitHub](#github-proxy) usando il metodo che hai configurato in [Opzioni di autenticazione GitHub](/docs/it/claude-code-on-the-web#github-authentication-options), quindi il tuo token non entra mai nel container.

361 379 

362Potete impostare `GH_TOKEN` o `GITHUB_TOKEN` voi stessi nelle [impostazioni di ambiente](#set-environment-variables), o lasciare entrambi non impostati e lasciare che il [proxy GitHub](#github-proxy) si autentichi per voi:380Puoi impostare `GH_TOKEN` o `GITHUB_TOKEN` tu stesso nelle [impostazioni dell'ambiente](#set-environment-variables), oppure lasciarli entrambi non impostati e lasciare che il [proxy GitHub](#github-proxy) gestisca l'autenticazione per te:

363 381 

364* Se impostate un token, passa attraverso al contenitore invariato, quindi i vostri script e il [`gh` CLI](https://cli.github.com) di GitHub lo utilizzano direttamente.382* Se imposti un token, viene passato al container senza modifiche, quindi i tuoi script e la [CLI `gh`](https://cli.github.com) di GitHub lo usano direttamente.

365* Se non impostate nessuno e il [proxy GitHub](#github-proxy) sta gestendo l'autenticazione per la vostra sessione, entrambe le variabili leggono come la stringa segnaposto `proxy-injected` nei comandi che Claude esegue, e il proxy sostituisce le vostre credenziali reali sulle richieste GitHub in uscita. `gh` funziona senza un token vostro, ma uno script che legge `GITHUB_TOKEN` direttamente ottiene il segnaposto, non un token utilizzabile.383* Se non ne imposti nessuno e il [proxy GitHub](#github-proxy) gestisce l'autenticazione per la tua sessione, entrambe le variabili contengono la stringa segnaposto `proxy-injected` nei comandi che Claude esegue, e il proxy sostituisce le tue credenziali reali nelle richieste GitHub in uscita. `gh` funziona senza un tuo token, ma uno script che legge direttamente `GITHUB_TOKEN` ottiene il segnaposto, non un token utilizzabile.

366 384 

367Un token che impostate è una variabile di ambiente ordinaria, quindi chiunque utilizzi l'ambiente può leggerlo; il percorso del proxy mantiene la credenziale fuori dalla configurazione dell'ambiente e dalla VM della sessione.385Un token che imposti è una normale variabile d'ambiente, quindi chiunque utilizzi l'ambiente può leggerlo; il percorso tramite proxy mantiene la credenziale fuori dalla configurazione dell'ambiente e dalla VM della sessione.

368 386 

369Per verificare quale caso si applica alla vostra sessione, chiedete a Claude di eseguire `echo $GH_TOKEN`.387Per verificare quale caso si applica alla tua sessione, chiedi a Claude di eseguire `echo $GH_TOKEN`.

370 388 

371Il [`gh` CLI](https://cli.github.com) di GitHub è preinstallato. Se avete bisogno di un comando `gh` che gli strumenti integrati non coprono, come `gh release` o `gh workflow run`, chiedete a Claude di eseguirlo. `gh` legge `GH_TOKEN` automaticamente, quindi non avete bisogno di eseguire `gh auth login`.389La [CLI `gh`](https://cli.github.com) di GitHub è preinstallata. Se ti serve un comando `gh` non coperto dagli strumenti integrati, come `gh release` o `gh workflow run`, chiedi a Claude di eseguirlo. `gh` legge `GH_TOKEN` automaticamente, quindi non devi eseguire `gh auth login`.

372 390 

373<h3 id="link-output-back-to-the-session">391<h3 id="link-output-back-to-the-session">

374 Collegare l'output di nuovo alla sessione392 Collegare l'output alla sessione

375</h3>393</h3>

376 394 

377Ogni sessione cloud ha un URL di trascrizione su claude.ai, e la sessione può leggere il suo ID dalla variabile di ambiente `CLAUDE_CODE_REMOTE_SESSION_ID`. Utilizzate questo per mettere un link tracciabile nei corpi PR, nei messaggi di commit, nei post Slack o nei report generati in modo che un revisore possa aprire l'esecuzione che li ha prodotti.395Ogni sessione cloud ha un URL di trascrizione su claude.ai, e la sessione può leggere il proprio ID dalla variabile d'ambiente `CLAUDE_CODE_REMOTE_SESSION_ID`. Usalo per inserire un link tracciabile nel corpo delle PR, nei messaggi di commit, nei post Slack o nei report generati, in modo che un revisore possa aprire l'esecuzione che li ha prodotti.

378 396 

379I commit che Claude crea in una sessione cloud includono un trailer git `Claude-Session: <url>`, e i corpi PR includono l'URL della sessione su una riga propria. Per omettere il trailer e il link nel corpo PR, impostate [`attribution.sessionUrl`](/docs/it/settings-reference#attribution-sessionurl) su `false`.397I commit che Claude crea in una sessione cloud includono un trailer git `Claude-Session: <url>`, e il corpo delle PR include l'URL della sessione su una riga a sé. Per omettere il trailer e il link nel corpo della PR, imposta [`attribution.sessionUrl`](/docs/it/settings-reference#attribution-sessionurl) su `false`.

380 398 

381Per includere il link della sessione in qualcosa di diverso da un commit o PR, come un messaggio Slack che Claude pubblica o un file di report che scrive, chiedete a Claude di eseguire il comando seguente e utilizzate il suo output. Il comando converte il prefisso `cse_` nel valore della variabile di ambiente al prefisso `session_` che l'URL della trascrizione si aspetta:399Per includere il link della sessione in qualcosa di diverso da un commit o una PR, come un messaggio Slack che Claude pubblica o un file di report che scrive, fai eseguire a Claude il comando seguente e usane l'output. Il comando converte il prefisso `cse_` nel valore della variabile d'ambiente nel prefisso `session_` che l'URL della trascrizione si aspetta:

382 400 

383```bash theme={null}401```bash theme={null}

384echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"402echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"


388 Eseguire test, avviare servizi e aggiungere pacchetti406 Eseguire test, avviare servizi e aggiungere pacchetti

389</h3>407</h3>

390 408 

391Non avete una shell nella VM della sessione. Claude esegue ogni comando per voi, quindi formulate i compiti in questa sezione come richieste nel vostro prompt.409Non hai accesso a una shell nella VM della sessione. Claude esegue ogni comando per te, quindi formula le attività di questa sezione come richieste nel tuo prompt.

392 410 

393<h4 id="run-tests">411<h4 id="run-tests">

394 Eseguire test412 Eseguire test

395</h4>413</h4>

396 414 

397Claude esegue i test come parte del lavoro su un compito. Chiedete nel vostro prompt, come "fix the failing tests in `tests/`" o "run pytest after each change." I test runner che vengono con i [toolchain preinstallati](#installed-tools), come pytest e cargo test, funzionano senza configurazione aggiuntiva. Un runner che il vostro progetto dichiara come dipendenza, come jest, si installa con le vostre dipendenze.415Claude esegue i test come parte del lavoro su un'attività. Chiedilo nel tuo prompt, ad esempio "fix the failing tests in `tests/`" o "run pytest after each change." I test runner inclusi nei [toolchain preinstallati](#installed-tools), come pytest e cargo test, funzionano senza configurazione aggiuntiva. Un runner che il tuo progetto dichiara come dipendenza, come jest, viene installato insieme alle tue dipendenze.

398 416 

399<h4 id="start-services">417<h4 id="start-services">

400 Avviare servizi418 Avviare servizi

401</h4>419</h4>

402 420 

403PostgreSQL e Redis sono preinstallati ma non in esecuzione per impostazione predefinita. Chiedete a Claude di avviare quello di cui avete bisogno; i comandi che esegue sono:421PostgreSQL e Redis sono preinstallati ma non in esecuzione per impostazione predefinita. Chiedi a Claude di avviare quello che ti serve; i comandi che esegue sono:

404 422 

405```bash theme={null}423```bash theme={null}

406service postgresql start424service postgresql start


410service redis-server start428service redis-server start

411```429```

412 430 

413Docker è disponibile per l'esecuzione di servizi containerizzati. Chiedete a Claude di eseguire `docker compose up` per avviare i servizi del vostro progetto. L'accesso di rete per il pull delle immagini segue il [livello di accesso](#access-levels) del vostro ambiente, e i [default Trusted](#default-allowed-domains) includono Docker Hub e altri registri comuni.431Docker è disponibile per eseguire servizi containerizzati. Chiedi a Claude di eseguire `docker compose up` per avviare i servizi del tuo progetto. L'accesso di rete per scaricare le immagini segue il [livello di accesso](#access-levels) del tuo ambiente, e i [default Trusted](#default-allowed-domains) includono Docker Hub e altri registri comuni.

414 432 

415Se le vostre immagini sono grandi o lente da estrarre, aggiungete `docker compose pull` o `docker compose build` al vostro [script di configurazione](#setup-scripts). La [cache dell'ambiente](#environment-caching) mantiene le immagini estratte, quindi ogni nuova sessione le ha su disco. La cache memorizza solo file, non processi in esecuzione, quindi Claude avvia comunque i contenitori ogni sessione.433Se le tue immagini sono grandi o lente da scaricare, aggiungi `docker compose pull` o `docker compose build` al tuo [script di configurazione](#setup-scripts). La [cache dell'ambiente](#environment-caching) conserva le immagini scaricate, quindi ogni nuova sessione le ha già su disco. La cache memorizza solo file, non processi in esecuzione, quindi Claude avvia comunque i container in ogni sessione.

416 434 

417<h4 id="add-packages">435<h4 id="add-packages">

418 Aggiungere pacchetti436 Aggiungere pacchetti

419</h4>437</h4>

420 438 

421Per aggiungere pacchetti che non sono preinstallati, utilizzate uno [script di configurazione](#setup-scripts). La [cache dell'ambiente](#environment-caching) mantiene quello che lo script installa, quindi i pacchetti che installate lì sono disponibili all'inizio di ogni sessione senza reinstallare ogni volta. Potete anche chiedere a Claude di installare pacchetti a metà sessione, ma quelle installazioni non si trasferiscono ad altre sessioni.439Per aggiungere pacchetti non preinstallati, usa uno [script di configurazione](#setup-scripts). La [cache dell'ambiente](#environment-caching) conserva ciò che lo script installa, quindi i pacchetti installati lì sono disponibili all'inizio di ogni sessione senza doverli reinstallare ogni volta. Puoi anche chiedere a Claude di installare pacchetti a metà sessione, ma queste installazioni non vengono trasferite ad altre sessioni.

422 440 

423<h3 id="resource-limits">441<h3 id="resource-limits">

424 Limiti di risorse442 Limiti di risorse


430* 16 GB di RAM448* 16 GB di RAM

431* 30 GB di disco449* 30 GB di disco

432 450 

433La VM può interrompere i compiti che necessitano di significativamente più memoria, come grandi lavori di build o test ad alta intensità di memoria. Per carichi di lavoro oltre questi limiti, utilizzate [Remote Control](/docs/it/remote-control) per eseguire Claude Code sul vostro hardware, o eseguite le sessioni cloud in un [ambiente self-hosted](/docs/it/self-hosted-environments) su compute che la vostra organizzazione gestisce.451La VM può interrompere le attività che richiedono molta più memoria RAM, come grandi job di build o test ad alto consumo di memoria. Per carichi di lavoro che superano questi limiti, usa [Remote Control](/docs/it/remote-control) per eseguire Claude Code sul tuo hardware, oppure esegui le sessioni cloud in un [ambiente self-hosted](/docs/it/self-hosted-environments) su risorse di calcolo gestite dalla tua organizzazione.

434 452 

435<h3 id="time-limits">453<h3 id="time-limits">

436 Limiti di tempo454 Limiti di tempo

437</h3>455</h3>

438 456 

439Negli ambienti ospitati da Anthropic, questi limiti di tempo si applicano al lavoro a lunga esecuzione in una sessione cloud, come una build, un'installazione o un'esecuzione di test. Ogni voce si collega alla sezione che definisce il limite.457Negli ambienti ospitati da Anthropic, questi limiti di tempo si applicano al lavoro a lunga esecuzione in una sessione cloud, come una build, un'installazione o un'esecuzione di test. Ogni voce rimanda alla sezione che definisce il limite.

440 458 

441* **Comandi che Claude esegue**: un ambiente cloud non imposta il suo proprio timeout di comando, quindi si applicano i default dello strumento Bash. Claude attende 2 minuti per un comando per impostazione predefinita e può chiedere fino a 10 minuti.459* **Comandi che Claude esegue**: un ambiente cloud non imposta un proprio timeout per i comandi, quindi si applicano i default dello strumento Bash. Per impostazione predefinita Claude attende 2 minuti per un comando in primo piano e può richiedere fino a 10 minuti.

442 460 

443 Quando un comando raggiunge il suo [timeout](/docs/it/tools-reference#timeout-and-output-limits), Claude Code [lo sposta in background](/docs/it/tools-reference#foreground-commands-that-move-to-the-background) invece di fermarlo, a meno che il comando non inizi con `sleep`. Un comando spostato in questo modo può continuare a essere eseguito per altri 30 minuti prima che Claude Code lo interrompa al suo [limite di tempo in background](/docs/it/tools-reference#time-limit-for-background-commands). Impostare `BASH_DEFAULT_TIMEOUT_MS` sopra `1800000` millisecondi allunga sia quel limite che il default per il foreground.461 Quando un comando raggiunge il suo [timeout](/docs/it/tools-reference#timeout-and-output-limits), Claude Code [lo sposta in background](/docs/it/tools-reference#foreground-commands-that-move-to-the-background) invece di interromperlo, a meno che il comando non inizi con `sleep`. Un comando spostato in questo modo può continuare a essere eseguito per altri 30 minuti al massimo prima che Claude Code lo interrompa al raggiungimento del [limite di tempo per i comandi in background](/docs/it/tools-reference#time-limit-for-background-commands). Impostare `BASH_DEFAULT_TIMEOUT_MS` oltre `1800000` millisecondi allunga sia quel limite sia il default per i comandi in primo piano.

444* **Hook SessionStart**: Claude Code annulla un hook `command` dopo 600 secondi a meno che non impostiate [`timeout`](/docs/it/hooks#common-fields), in secondi, sulla voce dell'hook. Claude Code non applica il timeout su un hook che eseguite con [`async: true`](/docs/it/hooks#run-hooks-in-the-background).462* **Hook SessionStart**: Claude Code annulla un hook `command` dopo 600 secondi, a meno che tu non imposti [`timeout`](/docs/it/hooks#common-fields), in secondi, nella voce dell'hook. Claude Code non applica il timeout a un hook che esegui con [`async: true`](/docs/it/hooks#run-hooks-in-the-background).

445* **Script di configurazione**: uno script che richiede più di circa cinque minuti non viene memorizzato nella cache. [Requisiti dello script](#script-requirements) copre come rimanere sotto questo limite.463* **Script di configurazione**: uno script che impiega più di circa cinque minuti non viene memorizzato nella cache. [Requisiti dello script](#script-requirements) spiega come restare sotto questo limite.

446* **Sessioni inattive**: dopo alcuni minuti senza attività, la VM di una sessione si mette in pausa con i suoi file salvati, e una VM in pausa può essere successivamente recuperata. [Impostare variabili di ambiente](#set-environment-variables) descrive cosa una sessione raccoglie in ogni caso, e [Environment expired](/docs/it/claude-code-on-the-web#environment-expired) copre come riaprire una sessione la cui VM è stata recuperata.464* **Sessioni inattive**: dopo alcuni minuti senza attività, la VM di una sessione va in pausa con i suoi file salvati, e una VM in pausa può essere successivamente recuperata dal sistema. [Impostare variabili d'ambiente](#set-environment-variables) descrive cosa una sessione recepisce in ciascun caso, e [Environment expired](/docs/it/claude-code-on-the-web#environment-expired) spiega come riaprire una sessione la cui VM è stata recuperata.

447 465 

448Per aumentare i timeout dei comandi per le sessioni di un ambiente, aggiungete [`BASH_DEFAULT_TIMEOUT_MS` e `BASH_MAX_TIMEOUT_MS`](/docs/it/env-vars#variables) alle sue [variabili di ambiente](#set-environment-variables). Entrambi prendono millisecondi. Ad esempio, `BASH_DEFAULT_TIMEOUT_MS=600000` rende 10 minuti il default.466Per aumentare i timeout dei comandi per le sessioni di un ambiente, aggiungi [`BASH_DEFAULT_TIMEOUT_MS` e `BASH_MAX_TIMEOUT_MS`](/docs/it/env-vars#variables) alle sue [variabili d'ambiente](#set-environment-variables). Entrambe accettano valori in millisecondi. Ad esempio, `BASH_DEFAULT_TIMEOUT_MS=600000` imposta 10 minuti come default.

449 467 

450<h2 id="setup-scripts">468<h2 id="setup-scripts">

451 Script di configurazione469 Script di configurazione

Details

1586 1586 

1587La sessione illustra un flusso realistico con conteggi di token rappresentativi:1587La sessione illustra un flusso realistico con conteggi di token rappresentativi:

1588 1588 

1589* **Prima di digitare qualcosa**: CLAUDE.md, memoria automatica, nomi degli strumenti MCP e descrizioni delle skill si caricano tutti nel contesto. I file [AGENTS.md](/docs/it/memory#agents-md) possono caricarsi anche loro, da soli o insieme a CLAUDE.md. La tua configurazione personale potrebbe aggiungere altro qui, come uno [stile di output](/docs/it/output-styles) o testo da [`--append-system-prompt`](/docs/it/cli-reference).1589* **Prima di digitare qualcosa**: CLAUDE.md, memoria automatica, nomi degli strumenti MCP e descrizioni delle skill si caricano tutti nel contesto. I file [AGENTS.md](/docs/it/memory#agents-md) possono caricarsi al posto di CLAUDE.md. La tua configurazione personale potrebbe aggiungere altro qui, come uno [stile di output](/docs/it/output-styles) o testo da [`--append-system-prompt`](/docs/it/cli-reference).

1590* **Mentre Claude lavora**: ogni lettura di file si aggiunge al contesto, le [regole con ambito di percorso](/docs/it/memory#path-specific-rules) si caricano automaticamente insieme ai file corrispondenti e un [hook PostToolUse](/docs/it/hooks-guide) si attiva dopo ogni modifica.1590* **Mentre Claude lavora**: ogni lettura di file si aggiunge al contesto, le [regole con ambito di percorso](/docs/it/memory#path-specific-rules) si caricano automaticamente insieme ai file corrispondenti e un [hook PostToolUse](/docs/it/hooks-guide) si attiva dopo ogni modifica.

1591* **Il prompt di follow-up**: un [subagent](/docs/it/sub-agents) gestisce la ricerca nella sua propria finestra di contesto separata, quindi le letture di file di grandi dimensioni rimangono fuori dalla tua. Solo il riepilogo e un piccolo trailer di metadati tornano indietro.1591* **Il prompt di follow-up**: un [subagent](/docs/it/sub-agents) gestisce la ricerca nella sua propria finestra di contesto separata, quindi le letture di file di grandi dimensioni rimangono fuori dalla tua. Solo il riepilogo e un piccolo trailer di metadati tornano indietro.

1592* **Alla fine della procedura dettagliata**: esegui `/compact`, che sostituisce la conversazione con un riepilogo strutturato. La maggior parte del contenuto di avvio si ricarica automaticamente; la tabella sottostante mostra cosa accade a ogni meccanismo.1592* **Alla fine della procedura dettagliata**: esegui `/compact`, che sostituisce la conversazione con un riepilogo strutturato. La maggior parte del contenuto di avvio si ricarica automaticamente; la tabella sottostante mostra cosa accade a ogni meccanismo.

costs.md +1 −1

Details

394* **Utilizza plan mode per compiti complessi**: Premi Shift+Tab per entrare in [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode) prima dell'implementazione. Claude esplora la codebase e propone un approccio per la tua approvazione, prevenendo la rielaborazione costosa quando la direzione iniziale è sbagliata.394* **Utilizza plan mode per compiti complessi**: Premi Shift+Tab per entrare in [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode) prima dell'implementazione. Claude esplora la codebase e propone un approccio per la tua approvazione, prevenendo la rielaborazione costosa quando la direzione iniziale è sbagliata.

395* **Correggi la rotta presto**: Se Claude inizia a andare nella direzione sbagliata, premi Escape per fermarti immediatamente. Utilizza `/rewind` o doppio tocco Escape per ripristinare la conversazione e il codice a un checkpoint precedente.395* **Correggi la rotta presto**: Se Claude inizia a andare nella direzione sbagliata, premi Escape per fermarti immediatamente. Utilizza `/rewind` o doppio tocco Escape per ripristinare la conversazione e il codice a un checkpoint precedente.

396* **Fornisci target di verifica**: Includi casi di test, incolla screenshot o definisci l'output previsto nel tuo prompt. Quando Claude può verificare il suo lavoro, cattura i problemi prima che tu debba richiedere correzioni.396* **Fornisci target di verifica**: Includi casi di test, incolla screenshot o definisci l'output previsto nel tuo prompt. Quando Claude può verificare il suo lavoro, cattura i problemi prima che tu debba richiedere correzioni.

397* **Testa in modo incrementale**: Scrivi un file, testalo, quindi continua. Questo cattura i problemi presto quando sono economici da risolvere.397* **Testa in modo incrementale**: Scrivi un file, testalo, quindi continua. Questo cattura i problemi presto.

398 398 

399<h2 id="background-token-usage">399<h2 id="background-token-usage">

400 Utilizzo dei token in background400 Utilizzo dei token in background

desktop.md +1 −1

Details

1092Per vedere quale versione dell'app desktop stai eseguendo:1092Per vedere quale versione dell'app desktop stai eseguendo:

1093 1093 

1094* **macOS**: fai clic su **Claude** nella barra dei menu, quindi **About Claude**1094* **macOS**: fai clic su **Claude** nella barra dei menu, quindi **About Claude**

1095* **Windows**: fai clic su **Help**, quindi **About**1095* **Windows**: fai clic su **Help**, quindi **About Claude**

1096 1096 

1097Fai clic sul numero di versione per copiarlo negli appunti.1097Fai clic sul numero di versione per copiarlo negli appunti.

1098 1098 

Details

92* Salvare uno screenshot con **Cmd+S** o una registrazione dello schermo con **Cmd+R**, utilizzando i pulsanti di acquisizione del riquadro o le scorciatoie da tastiera; i file vengono salvati sul tuo Desktop92* Salvare uno screenshot con **Cmd+S** o una registrazione dello schermo con **Cmd+R**, utilizzando i pulsanti di acquisizione del riquadro o le scorciatoie da tastiera; i file vengono salvati sul tuo Desktop

93* Interrompere lo streaming di un dispositivo senza spegnerlo facendo clic su **Detach simulator**, che riporta il riquadro allo stato **Attach simulator**93* Interrompere lo streaming di un dispositivo senza spegnerlo facendo clic su **Detach simulator**, che riporta il riquadro allo stato **Attach simulator**

94 94 

95Per regolare il flusso video dal simulatore, apri il menu **Display** del riquadro. Abbassa **Frame rate** o **Resolution** se il riquadro affatica il tuo Mac. Entrambe le impostazioni cambiano il modo in cui il riquadro visualizza il dispositivo, non il modo in cui l'app viene eseguita.95Se il riquadro mostra un menu **Display**, usalo per regolare il flusso video dal simulatore. Abbassa **Frame rate** o **Resolution** se il riquadro affatica il tuo Mac. Entrambe le impostazioni cambiano il modo in cui il riquadro visualizza il dispositivo, non il modo in cui l'app viene eseguita.

96 96 

97Tu e Claude controllate lo stesso dispositivo, quindi i tuoi tocchi cambiano lo stato dell'app che Claude vede. Per fare in modo che Claude verifichi uno schermo specifico, navigaci toccando, quindi chiedi. Mentre Claude controlla il dispositivo, il riquadro mostra un badge **Claude is using this device** sopra lo schermo; aspetta che il badge scompaia prima di toccare, in modo che il risultato rifletta l'app piuttosto che il tuo input.97Tu e Claude controllate lo stesso dispositivo, quindi i tuoi tocchi cambiano lo stato dell'app che Claude vede. Per fare in modo che Claude verifichi uno schermo specifico, navigaci toccando, quindi chiedi. Mentre Claude controlla il dispositivo, il riquadro mostra un badge **Claude is using this device** sopra lo schermo; aspetta che il badge scompaia prima di toccare, in modo che il risultato rifletta l'app piuttosto che il tuo input.

98 98 

env-vars.md +1 −0

Details

354| `CLAUDE_CODE_PERFORCE_MODE` | Imposta su `1` per abilitare la protezione in scrittura compatibile con Perforce. Quando è impostata, Edit, Write e NotebookEdit falliscono con un suggerimento `p4 edit <file>` se il file di destinazione non ha il bit di scrittura del proprietario, che Perforce rimuove dai file sincronizzati finché `p4 edit` non li apre. Questo impedisce a Claude Code di aggirare il tracciamento delle modifiche di Perforce |354| `CLAUDE_CODE_PERFORCE_MODE` | Imposta su `1` per abilitare la protezione in scrittura compatibile con Perforce. Quando è impostata, Edit, Write e NotebookEdit falliscono con un suggerimento `p4 edit <file>` se il file di destinazione non ha il bit di scrittura del proprietario, che Perforce rimuove dai file sincronizzati finché `p4 edit` non li apre. Questo impedisce a Claude Code di aggirare il tracciamento delle modifiche di Perforce |

355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sovrascrive la directory radice dei plugin. Nonostante il nome, imposta la directory padre, non la cache stessa: i marketplace e la cache dei plugin si trovano in sottodirectory di questo percorso. Il valore predefinito è `~/.claude/plugins` |355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sovrascrive la directory radice dei plugin. Nonostante il nome, imposta la directory padre, non la cache stessa: i marketplace e la cache dei plugin si trovano in sottodirectory di questo percorso. Il valore predefinito è `~/.claude/plugins` |

356| `CLAUDE_CODE_PLUGIN_DIRS` | Directory dei plugin da caricare per la sessione, ciascuna caricata come la caricherebbe un flag [`--plugin-dir`](/docs/it/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Separa più percorsi con `:` su Unix o `;` su Windows. Indica ogni percorso come percorso assoluto o fallo iniziare con `~`, perché Claude Code salta i percorsi relativi. Richiede Claude Code v2.1.280 o successiva. Consulta [Caricare un plugin per una sessione](/docs/it/plugins/create#load-a-directory-or-archive-for-one-session) |356| `CLAUDE_CODE_PLUGIN_DIRS` | Directory dei plugin da caricare per la sessione, ciascuna caricata come la caricherebbe un flag [`--plugin-dir`](/docs/it/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Separa più percorsi con `:` su Unix o `;` su Windows. Indica ogni percorso come percorso assoluto o fallo iniziare con `~`, perché Claude Code salta i percorsi relativi. Richiede Claude Code v2.1.280 o successiva. Consulta [Caricare un plugin per una sessione](/docs/it/plugins/create#load-a-directory-or-archive-for-one-session) |

357| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Controlla se Claude Code ricarica un [mod](/docs/it/plugins/mods/overview) quando i file del mod cambiano. Il ricaricamento si applica a un mod che carichi da una directory con `--plugin-dir` ed è attivo per impostazione predefinita nelle sessioni interattive. Imposta su `1` per attivarlo anche nelle sessioni non interattive, oppure su `0` per disattivarlo in ogni sessione. Richiede Claude Code v2.1.287 o successiva. Consulta [impostazioni e variabili d'ambiente dei mod](/docs/it/plugins/mods/reference#settings-and-environment-variables) |

357| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in millisecondi per la clonazione o l'aggiornamento di un marketplace di plugin (predefinito: 120000). Aumenta questo valore per repository di grandi dimensioni o connessioni di rete lente. Consulta [Git clone timed out](/docs/it/plugins/troubleshooting#git-clone-timed-out-after-120s) |358| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in millisecondi per la clonazione o l'aggiornamento di un marketplace di plugin (predefinito: 120000). Aumenta questo valore per repository di grandi dimensioni o connessioni di rete lente. Consulta [Git clone timed out](/docs/it/plugins/troubleshooting#git-clone-timed-out-after-120s) |

358| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Imposta su `1` per saltare il tentativo di nuova clonazione e continuare a usare il checkout esistente del marketplace quando un aggiornamento del marketplace non riesce a raggiungere il remoto o ad autenticarsi. Utile in ambienti offline o air-gapped in cui una nuova clonazione fallirebbe allo stesso modo. Consulta [Gli aggiornamenti del marketplace non riescono negli ambienti offline](/docs/it/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |359| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Imposta su `1` per saltare il tentativo di nuova clonazione e continuare a usare il checkout esistente del marketplace quando un aggiornamento del marketplace non riesce a raggiungere il remoto o ad autenticarsi. Utile in ambienti offline o air-gapped in cui una nuova clonazione fallirebbe allo stesso modo. Consulta [Gli aggiornamenti del marketplace non riescono negli ambienti offline](/docs/it/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

359| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Imposta su `1` per clonare le sorgenti GitHub in forma abbreviata `owner/repo` tramite HTTPS invece che SSH. Si applica all'installazione e all'aggiornamento dei plugin, e a `/plugin marketplace add` e `update`. Utile nei runner CI, nei container o in qualsiasi ambiente senza una chiave SSH configurata per `github.com` |360| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Imposta su `1` per clonare le sorgenti GitHub in forma abbreviata `owner/repo` tramite HTTPS invece che SSH. Si applica all'installazione e all'aggiornamento dei plugin, e a `/plugin marketplace add` e `update`. Utile nei runner CI, nei container o in qualsiasi ambiente senza una chiave SSH configurata per `github.com` |

errors.md +3 −4

Details

197| `Cloud sessions cannot be created from a --restricted session` | [Errori della riga di comando](#cloud-sessions-cannot-be-created-from-a-restricted-session) |197| `Cloud sessions cannot be created from a --restricted session` | [Errori della riga di comando](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

198| `Cloud sessions are disabled by your organization's policy` | [Errori della riga di comando](#cloud-sessions-are-disabled-by-your-organizations-policy) |198| `Cloud sessions are disabled by your organization's policy` | [Errori della riga di comando](#cloud-sessions-are-disabled-by-your-organizations-policy) |

199| `Couldn't verify your organization's policy for cloud sessions` | [Errori della riga di comando](#cloud-sessions-are-disabled-by-your-organizations-policy) |199| `Couldn't verify your organization's policy for cloud sessions` | [Errori della riga di comando](#cloud-sessions-are-disabled-by-your-organizations-policy) |

200| `Cloud sessions need a claude.ai sign-in` | [Unable to get organization UUID](/docs/it/claude-code-on-the-web#unable-to-get-organization-uuid) |

200| `Error: --json-schema is not a valid JSON Schema` | [Errori della riga di comando](#the-json-schema-value-is-not-a-valid-json-schema) |201| `Error: --json-schema is not a valid JSON Schema` | [Errori della riga di comando](#the-json-schema-value-is-not-a-valid-json-schema) |

201| `Error: Invalid --agents configuration:` | [Errori della riga di comando](#invalid-agents-configuration) |202| `Error: Invalid --agents configuration:` | [Errori della riga di comando](#invalid-agents-configuration) |

202| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Errori della riga di comando](#invalid-agents-configuration) |203| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Errori della riga di comando](#invalid-agents-configuration) |


387* Una connessione che Claude Code rileva è stata interrotta dal tuo computer che si è addormentato a metà di una richiesta. Claude Code la conta come una connessione interrotta secondo le regole sopra; una volta che l'etichetta di riprovazione nomina il motivo specifico, legge `Connection lost while your computer was asleep`, e se il turno termina dopo che Claude ha finito di pensare ma prima di un testo o di una chiamata a uno strumento, il messaggio legge `Your computer went to sleep before a response was produced`.388* Una connessione che Claude Code rileva è stata interrotta dal tuo computer che si è addormentato a metà di una richiesta. Claude Code la conta come una connessione interrotta secondo le regole sopra; una volta che l'etichetta di riprovazione nomina il motivo specifico, legge `Connection lost while your computer was asleep`, e se il turno termina dopo che Claude ha finito di pensare ma prima di un testo o di una chiamata a uno strumento, il messaggio legge `Your computer went to sleep before a response was produced`.

388* Un flusso di risposta bloccato, quando le intestazioni di risposta sono arrivate ma nessuna risposta di Claude è arrivata, o quando Claude ha finito di pensare ma non ha iniziato un testo o una chiamata a uno strumento: Claude Code interrompe la connessione bloccata e invia nuovamente la richiesta al massimo una volta, al di fuori del budget di 10 tentativi sopra. Se la risposta si blocca una seconda volta dopo che Claude ha finito di pensare ma prima di un testo o di una chiamata a uno strumento, Claude Code termina il turno con `The response stalled before a response was produced`.389* Un flusso di risposta bloccato, quando le intestazioni di risposta sono arrivate ma nessuna risposta di Claude è arrivata, o quando Claude ha finito di pensare ma non ha iniziato un testo o una chiamata a uno strumento: Claude Code interrompe la connessione bloccata e invia nuovamente la richiesta al massimo una volta, al di fuori del budget di 10 tentativi sopra. Se la risposta si blocca una seconda volta dopo che Claude ha finito di pensare ma prima di un testo o di una chiamata a uno strumento, Claude Code termina il turno con `The response stalled before a response was produced`.

389* Una richiesta di streaming a cui l'API non risponde mai con intestazioni di risposta, su una connessione dove il [first-byte deadline runs](/docs/it/network-config#streaming-idle-watchdogs): Claude Code la interrompe alla scadenza e la invia nuovamente al massimo una volta per richiesta di modello, entro il budget di riprovazione, quindi termina il turno con [No response from API](#no-response-from-api) se anche quel tentativo rimane senza risposta. Su altre connessioni, la richiesta attende `API_TIMEOUT_MS`. Quando imposti `CLAUDE_CODE_RETRY_WATCHDOG`, il limite di un tentativo non si applica.390* Una richiesta di streaming a cui l'API non risponde mai con intestazioni di risposta, su una connessione dove il [first-byte deadline runs](/docs/it/network-config#streaming-idle-watchdogs): Claude Code la interrompe alla scadenza e la invia nuovamente al massimo una volta per richiesta di modello, entro il budget di riprovazione, quindi termina il turno con [No response from API](#no-response-from-api) se anche quel tentativo rimane senza risposta. Su altre connessioni, la richiesta attende `API_TIMEOUT_MS`. Quando imposti `CLAUDE_CODE_RETRY_WATCHDOG`, il limite di un tentativo non si applica.

391* Una risposta in streaming che il filtro dei contenuti di output dell'API interrompe prima che Claude abbia finito il suo ragionamento o iniziato un testo o una chiamata a uno strumento. Claude Code invia nuovamente la richiesta una volta, entro il budget di riprovazione, e mostra [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) se il filtro interrompe anche la seconda risposta.

390* Throttle 429 temporanei, ma non il `429` del limite di spesa di un gateway, che non è un throttle; vedi [Spend limit reached](#spend-limit-reached).392* Throttle 429 temporanei, ma non il `429` del limite di spesa di un gateway, che non è un throttle; vedi [Spend limit reached](#spend-limit-reached).

391 * Quando sei connesso con un abbonamento claude.ai, questo include throttle 429 che non portano le intestazioni di quota del tuo piano. Prima della v2.1.199, Claude Code ritentava questi throttle solo per le chiavi API e gli accessi Enterprise.393 * Quando sei connesso con un abbonamento claude.ai, questo include throttle 429 che non portano le intestazioni di quota del tuo piano. Prima della v2.1.199, Claude Code ritentava questi throttle solo per le chiavi API e gli accessi Enterprise.

392* Una richiesta rifiutata perché l'input più `max_tokens` supera il limite di contesto. Inviarla nuovamente invariata fallirebbe allo stesso modo, quindi Claude Code ritenta con un `max_tokens` ridotto, e smette di ritentare e compatta invece in due casi:394* Una richiesta rifiutata perché l'input più `max_tokens` supera il limite di contesto. Inviarla nuovamente invariata fallirebbe allo stesso modo, quindi Claude Code ritenta con un `max_tokens` ridotto, e smette di ritentare e compatta invece in due casi:


405* Una [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), perché il gateway o il proxy che riscrive la risposta riscriverebbero il tentativo allo stesso modo. Richiede Claude Code v2.1.208 o successivo.407* Una [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), perché il gateway o il proxy che riscrive la risposta riscriverebbero il tentativo allo stesso modo. Richiede Claude Code v2.1.208 o successivo.

406* Un tentativo non in streaming di una richiesta in streaming non riuscita che ottiene uno stato di successo ma [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code termina il turno con quell'errore.408* Un tentativo non in streaming di una richiesta in streaming non riuscita che ottiene uno stato di successo ma [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code termina il turno con quell'errore.

407* Una richiesta che il controllo della politica della tua organizzazione ha negato, che emerge come una riga `API Error:` che porta il messaggio di negazione. Gli amministratori della tua organizzazione hanno configurato il controllo con [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), una funzione Claude Enterprise, e il messaggio termina con le istruzioni che hanno configurato, o per impostazione predefinita ti dice di contattarli. Claude Code non invia nuovamente la richiesta negata allo stesso modello o a un [fallback model](/docs/it/model-config#fallback-model-chains), perché il diniego riguarda il contenuto della richiesta piuttosto che il modello. Prima della v2.1.239, Claude Code poteva inviare nuovamente una richiesta negata, senza streaming o su un fallback model configurato, prima di mostrarti il diniego.409* Una richiesta che il controllo della politica della tua organizzazione ha negato, che emerge come una riga `API Error:` che porta il messaggio di negazione. Gli amministratori della tua organizzazione hanno configurato il controllo con [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), una funzione Claude Enterprise, e il messaggio termina con le istruzioni che hanno configurato, o per impostazione predefinita ti dice di contattarli. Claude Code non invia nuovamente la richiesta negata allo stesso modello o a un [fallback model](/docs/it/model-config#fallback-model-chains), perché il diniego riguarda il contenuto della richiesta piuttosto che il modello. Prima della v2.1.239, Claude Code poteva inviare nuovamente una richiesta negata, senza streaming o su un fallback model configurato, prima di mostrarti il diniego.

408* Una risposta bloccata dal filtro dei contenuti di output dell'API. Claude Code mostra subito [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) e non ritenta né invia nuovamente quella richiesta.

409 410 

410<h3 id="what-you-see-while-claude-code-retries-or-waits">411<h3 id="what-you-see-while-claude-code-retries-or-waits">

411 Cosa vedi mentre Claude Code ritenta o attende412 Cosa vedi mentre Claude Code ritenta o attende


2299 2300 

2300**Cosa fare:**2301**Cosa fare:**

2301 2302 

2302* Ridimensiona l'immagine prima di incollarla. L'API accetta immagini fino a 8000 pixel sul lato più lungo per una singola immagine, o 2000 pixel quando molte immagini sono nel contesto.2303* Ridimensiona l'immagine prima di incollarla. L'API accetta immagini fino a 8000 pixel sul lato più lungo per una singola immagine, o 3000 pixel quando nel contesto ci sono più di 20 immagini.

2303* Fai uno screenshot più stretto della regione rilevante invece dello schermo intero2304* Fai uno screenshot più stretto della regione rilevante invece dello schermo intero

2304 2305 

2305<h3 id="unable-to-resize-image">2306<h3 id="unable-to-resize-image">


2905API Error: Output blocked by content filtering policy2906API Error: Output blocked by content filtering policy

2906```2907```

2907 2908 

2908Claude Code mostra l'errore non appena arriva il blocco e termina lì la richiesta. Non riprova la richiesta, non la reinvia senza streaming e non passa a un [modello di fallback](/docs/it/model-config#fallback-model-chains). Prima della v2.1.285, Claude Code poteva reinviare e riprovare una richiesta bloccata, a volte per minuti, prima di mostrarti l'errore.

2909 

2910**Cosa fare:**2909**Cosa fare:**

2911 2910 

2912* Riformula il tuo ultimo messaggio o adotta un approccio diverso2911* Riformula il tuo ultimo messaggio o adotta un approccio diverso

fast-mode.md +1 −1

Details

88 88 

89I prezzi della modalità veloce sono fissi su tutta la finestra di contesto di 1M token. Per il tasso Opus standard da confrontare, consulta il [riferimento sui prezzi di Claude](https://platform.claude.com/docs/it/about-claude/pricing).89I prezzi della modalità veloce sono fissi su tutta la finestra di contesto di 1M token. Per il tasso Opus standard da confrontare, consulta il [riferimento sui prezzi di Claude](https://platform.claude.com/docs/it/about-claude/pricing).

90 90 

91La prima volta che abiliti la modalità veloce in una conversazione, paghi il prezzo completo del token di input non memorizzato nella cache della modalità veloce per l'intero contesto della conversazione. Più avanti sei nella conversazione, più questo costa, quindi abilitare la modalità veloce dall'inizio è più economico. Il costo si applica una volta per conversazione, quindi disattivare e riattivare la modalità veloce in seguito non lo ripete. Per il meccanismo, consulta [come la modalità veloce interagisce con la cache del prompt](/docs/it/prompt-caching#turning-on-fast-mode).91La prima volta che abiliti la modalità veloce in una conversazione, paghi il prezzo completo del token di input non memorizzato nella cache della modalità veloce per l'intero contesto della conversazione. Più avanti sei nella conversazione, più questo costa, quindi l'addebito è minimo quando abiliti la modalità veloce all'inizio. Il costo si applica una volta per conversazione, quindi disattivare e riattivare la modalità veloce in seguito non lo ripete. Per il meccanismo, consulta [come la modalità veloce interagisce con la cache del prompt](/docs/it/prompt-caching#turning-on-fast-mode).

92 92 

93<h3 id="see-where-fast-mode-spend-appears">93<h3 id="see-where-fast-mode-spend-appears">

94 Vedi dove appare la spesa della modalità veloce94 Vedi dove appare la spesa della modalità veloce

glossary.md +1 −1

Details

130 130 

131Un file markdown di istruzioni persistenti che scrivi per Claude, caricato all'inizio di ogni sessione come messaggio utente dopo il prompt di sistema. Metti qui le convenzioni di progetto, le note sull'architettura e le regole "fai sempre X". CLAUDE.md a livello di radice del progetto sopravvive alla [compaction](#compaction) e viene riletto fresco dal disco in seguito.131Un file markdown di istruzioni persistenti che scrivi per Claude, caricato all'inizio di ogni sessione come messaggio utente dopo il prompt di sistema. Metti qui le convenzioni di progetto, le note sull'architettura e le regole "fai sempre X". CLAUDE.md a livello di radice del progetto sopravvive alla [compaction](#compaction) e viene riletto fresco dal disco in seguito.

132 132 

133Puoi posizionare CLAUDE.md a livello di progetto in `./CLAUDE.md` o `./.claude/CLAUDE.md`, a livello di utente in `~/.claude/CLAUDE.md`, o come [managed policy](#managed-settings) per la tua organizzazione. Tutti i file scoperti vengono concatenati nel contesto piuttosto che sovrascriversi a vicenda, ordinati dall'ambito più ampio al più specifico. Claude Code può anche caricare i file [AGENTS.md](#agents-md) di un progetto, da soli o insieme a CLAUDE.md.133Puoi posizionare CLAUDE.md a livello di progetto in `./CLAUDE.md` o `./.claude/CLAUDE.md`, a livello di utente in `~/.claude/CLAUDE.md`, o come [policy gestita](#managed-settings) per la tua organizzazione. Tutti i file scoperti vengono concatenati nel contesto piuttosto che sovrascriversi a vicenda, ordinati dall'ambito più ampio al più specifico. Claude Code può anche caricare i file [AGENTS.md](#agents-md) di un progetto al posto di CLAUDE.md.

134 134 

135Scopri di più: [CLAUDE.md files](/docs/it/memory#claude-md-files)135Scopri di più: [CLAUDE.md files](/docs/it/memory#claude-md-files)

136 136 

Details

210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

211```211```

212 212 

213La maggior parte delle versioni del modello ha una variabile `VERTEX_REGION_CLAUDE_*` corrispondente. Consulta il [riferimento delle variabili di ambiente](/docs/it/env-vars) per l'elenco completo. Controlla [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) per determinare quali modelli supportano endpoint globali rispetto a quelli solo regionali.213La maggior parte delle versioni del modello ha una variabile `VERTEX_REGION_CLAUDE_*` corrispondente. Consulta il [riferimento delle variabili d'ambiente](/docs/it/env-vars#variables) per l'elenco completo. Controlla [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) per determinare quali modelli supportano endpoint globali rispetto a quelli solo regionali.

214 214 

215Se un valore di regione non ha la forma di un nome di regione o posizione, Claude Code lo tratta come non impostato. Ad esempio, Claude Code tratta un valore contenente una barra, un punto o uno spazio come non impostato. Claude Code ritorna a una fonte diversa per ogni variabile:215Se un valore di regione non ha la forma di un nome di regione o posizione, Claude Code lo tratta come non impostato. Ad esempio, Claude Code tratta un valore contenente una barra, un punto o uno spazio come non impostato. Claude Code ritorna a una fonte diversa per ogni variabile:

216 216 


366* Verifica che il modello sia disponibile nella posizione che hai specificato. Alcuni modelli sono offerti solo su posizioni `global` o multi-regione come `eu` e `us`, non in regioni specifiche366* Verifica che il modello sia disponibile nella posizione che hai specificato. Alcuni modelli sono offerti solo su posizioni `global` o multi-regione come `eu` e `us`, non in regioni specifiche

367* Se utilizzi `CLOUD_ML_REGION=global`, controlla che i tuoi modelli supportino endpoint globali in [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) in "Supported features". Per i modelli che non supportano endpoint globali, puoi:367* Se utilizzi `CLOUD_ML_REGION=global`, controlla che i tuoi modelli supportino endpoint globali in [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) in "Supported features". Per i modelli che non supportano endpoint globali, puoi:

368 * Specificare un modello supportato tramite `ANTHROPIC_MODEL` o `ANTHROPIC_DEFAULT_HAIKU_MODEL`, oppure368 * Specificare un modello supportato tramite `ANTHROPIC_MODEL` o `ANTHROPIC_DEFAULT_HAIKU_MODEL`, oppure

369 * Impostare una regione o una posizione multi-regione utilizzando le variabili di ambiente `VERTEX_REGION_<MODEL_NAME>`369 * Impostare una regione o una posizione multi-regione utilizzando la variabile `VERTEX_REGION_CLAUDE_*` del modello, elencata nel [riferimento delle variabili d'ambiente](/docs/it/env-vars#variables)

370 370 

371Se riscontri errori 429:371Se riscontri errori 429:

372 372 

hooks.md +4 −5

Details

63| `DirectoryAdded` | Quando una directory di lavoro viene aggiunta a metà sessione tramite `/add-dir` o la richiesta di controllo SDK `register_repo_root` |63| `DirectoryAdded` | Quando una directory di lavoro viene aggiunta a metà sessione tramite `/add-dir` o la richiesta di controllo SDK `register_repo_root` |

64| `FileChanged` | Quando un file osservato cambia su disco. Il campo `matcher` specifica quali nomi di file osservare |64| `FileChanged` | Quando un file osservato cambia su disco. Il campo `matcher` specifica quali nomi di file osservare |

65| `WorktreeCreate` | Quando un worktree viene creato tramite `--worktree`, `isolation: "worktree"`, o per una sessione in background. Sostituisce il comportamento git predefinito |65| `WorktreeCreate` | Quando un worktree viene creato tramite `--worktree`, `isolation: "worktree"`, o per una sessione in background. Sostituisce il comportamento git predefinito |

66| `WorktreeRemove` | Quando un worktree viene rimosso all'uscita della sessione, quando un subagente termina, o quando elimini una sessione in background |66| `WorktreeRemove` | Quando viene rimosso un worktree creato da un hook `WorktreeCreate` |

67| `PreCompact` | Prima della compattazione del contesto |67| `PreCompact` | Prima della compattazione del contesto |

68| `PostCompact` | Dopo che la compattazione del contesto è completata |68| `PostCompact` | Dopo che la compattazione del contesto è completata |

69| `PreModelSwitch` | Prima che Claude Code applichi un cambio di modello che hai richiesto tu o un client. Può bloccare il cambio |69| `PreModelSwitch` | Prima che Claude Code applichi un cambio di modello che hai richiesto tu o un client. Può bloccare il cambio |


3274 WorktreeRemove3274 WorktreeRemove

3275</h3>3275</h3>

3276 3276 

3277Viene eseguito quando un worktree sta per essere rimosso. È la controparte di pulizia di [WorktreeCreate](#worktreecreate). L'evento si attiva quando:3277Viene eseguito quando Claude Code ripulisce un worktree creato dal tuo hook [`WorktreeCreate`](#worktreecreate). L'evento si attiva quando:

3278 3278 

3279* esci da una sessione `--worktree` e scegli di rimuoverlo3279* Esci da una sessione `--worktree` e scegli di rimuovere il worktree

3280* un subagent con `isolation: "worktree"` termina3280* Elimini una [sessione in background](/docs/it/agent-view#what-deleting-a-session-removes) che viene eseguita nel worktree

3281* elimini una [sessione in background](/docs/it/agent-view#what-deleting-a-session-removes) il cui worktree è stato creato dall'hook

3282 3281 

3283Per i worktree basati su git, Claude Code gestisce la pulizia automaticamente con `git worktree remove`. Se hai configurato un hook WorktreeCreate, abbinalo a un hook WorktreeRemove per controllare la pulizia dei worktree che crea:3282Per i worktree basati su git, Claude Code gestisce la pulizia automaticamente con `git worktree remove`. Se hai configurato un hook WorktreeCreate, abbinalo a un hook WorktreeRemove per controllare la pulizia dei worktree che crea:

3284 3283 

hooks-guide.md +1 −1

Details

526| `DirectoryAdded` | Quando una directory di lavoro viene aggiunta a metà sessione tramite `/add-dir` o la richiesta di controllo SDK `register_repo_root` |526| `DirectoryAdded` | Quando una directory di lavoro viene aggiunta a metà sessione tramite `/add-dir` o la richiesta di controllo SDK `register_repo_root` |

527| `FileChanged` | Quando un file osservato cambia su disco. Il campo `matcher` specifica quali nomi di file osservare |527| `FileChanged` | Quando un file osservato cambia su disco. Il campo `matcher` specifica quali nomi di file osservare |

528| `WorktreeCreate` | Quando un worktree viene creato tramite `--worktree`, `isolation: "worktree"`, o per una sessione in background. Sostituisce il comportamento git predefinito |528| `WorktreeCreate` | Quando un worktree viene creato tramite `--worktree`, `isolation: "worktree"`, o per una sessione in background. Sostituisce il comportamento git predefinito |

529| `WorktreeRemove` | Quando un worktree viene rimosso all'uscita della sessione, quando un subagente termina, o quando elimini una sessione in background |529| `WorktreeRemove` | Quando viene rimosso un worktree creato da un hook `WorktreeCreate` |

530| `PreCompact` | Prima della compattazione del contesto |530| `PreCompact` | Prima della compattazione del contesto |

531| `PostCompact` | Dopo che la compattazione del contesto è completata |531| `PostCompact` | Dopo che la compattazione del contesto è completata |

532| `PreModelSwitch` | Prima che Claude Code applichi un cambio di modello che hai richiesto tu o un client. Può bloccare il cambio |532| `PreModelSwitch` | Prima che Claude Code applichi un cambio di modello che hai richiesto tu o un client. Può bloccare il cambio |

Details

76* **Il tuo progetto.** File nella tua directory e sottodirectory, più file altrove con la tua autorizzazione.76* **Il tuo progetto.** File nella tua directory e sottodirectory, più file altrove con la tua autorizzazione.

77* **Il tuo terminale.** Qualsiasi comando che potresti eseguire: strumenti di build, git, gestori di pacchetti, utilità di sistema, script. Se puoi farlo dalla riga di comando, Claude può farlo anche lui.77* **Il tuo terminale.** Qualsiasi comando che potresti eseguire: strumenti di build, git, gestori di pacchetti, utilità di sistema, script. Se puoi farlo dalla riga di comando, Claude può farlo anche lui.

78* **Il tuo stato git.** Ramo corrente, modifiche non committate e cronologia dei commit recenti.78* **Il tuo stato git.** Ramo corrente, modifiche non committate e cronologia dei commit recenti.

79* **Il tuo [CLAUDE.md](/docs/it/memory).** Un file markdown dove memorizzi istruzioni specifiche del progetto, convenzioni e contesto che Claude dovrebbe conoscere ogni sessione. Se il tuo repository ha un AGENTS.md per altri agenti di codifica, Claude [può leggerlo](/docs/it/memory#agents-md) da solo o insieme a CLAUDE.md.79* **Il tuo [CLAUDE.md](/docs/it/memory).** Un file markdown dove memorizzi istruzioni specifiche del progetto, convenzioni e contesto che Claude dovrebbe conoscere ogni sessione. Se il tuo repository ha un AGENTS.md per altri agenti di codifica, Claude [può leggerlo](/docs/it/memory#agents-md) al posto di un CLAUDE.md.

80* **[Auto memory](/docs/it/memory#auto-memory).** Apprendimenti che Claude salva automaticamente mentre lavori, come le tue preferenze. Le prime 200 righe o 25KB di MEMORY.md, a seconda di quale viene raggiunto per primo, si caricano all'inizio di ogni sessione.80* **[Auto memory](/docs/it/memory#auto-memory).** Apprendimenti che Claude salva automaticamente mentre lavori, come le tue preferenze. Le prime 200 righe o 25KB di MEMORY.md, a seconda di quale viene raggiunto per primo, si caricano all'inizio di ogni sessione.

81* **Estensioni che configuri.** [Server MCP](/docs/it/mcp) per servizi esterni, [skills](/docs/it/skills) per flussi di lavoro, [subagents](/docs/it/sub-agents) per lavoro delegato e [Claude in Chrome](/docs/it/chrome) per l'interazione del browser.81* **Estensioni che configuri.** [Server MCP](/docs/it/mcp) per servizi esterni, [skills](/docs/it/skills) per flussi di lavoro, [subagents](/docs/it/sub-agents) per lavoro delegato e [Claude in Chrome](/docs/it/chrome) per l'interazione del browser.

82 82 

keybindings.md +3 −2

Details

299| :- | :- | :- |299| :- | :- | :- |

300| `footer:next` | Destra | Elemento del piè di pagina successivo |300| `footer:next` | Destra | Elemento del piè di pagina successivo |

301| `footer:previous` | Sinistra | Elemento del piè di pagina precedente |301| `footer:previous` | Sinistra | Elemento del piè di pagina precedente |

302| `footer:up` | Su | Naviga verso l'alto nel piè di pagina (deseleziona in alto) |302| `footer:up` | Su, Ctrl+P | Naviga verso l'alto nel piè di pagina (deseleziona in alto) |

303| `footer:down` | Giù | Naviga verso il basso nel piè di pagina |303| `footer:down` | Giù, Ctrl+N | Naviga verso il basso nel piè di pagina |

304| `footer:openSelected` | Invio | Apri l'elemento del piè di pagina selezionato |304| `footer:openSelected` | Invio | Apri l'elemento del piè di pagina selezionato |

305| `footer:clearSelection` | Escape | Cancella la selezione del piè di pagina |305| `footer:clearSelection` | Escape | Cancella la selezione del piè di pagina |

306| `footer:close` | x | Interrompi l'[agente](/docs/it/sub-agents#observe-and-steer-running-forks) o il [workflow](/docs/it/workflows#manage-runs) selezionato, oppure chiudi la sua riga se non è più in esecuzione |

306| `footer:dismiss` | (non associato) | Associare un tasto a questa azione non ha alcun effetto, e un `keybindings.json` che la nomina rimane valido. Prima della v2.1.281, Backspace e Canc erano associati a essa e chiudevano il collegamento dell'artefatto selezionato dal piè di pagina. |307| `footer:dismiss` | (non associato) | Associare un tasto a questa azione non ha alcun effetto, e un `keybindings.json` che la nomina rimane valido. Prima della v2.1.281, Backspace e Canc erano associati a essa e chiudevano il collegamento dell'artefatto selezionato dal piè di pagina. |

307 308 

308Mentre un elemento del piè di pagina è selezionato, come una riga nel pannello dell'agente sotto il prompt, `Invio` lo apre anche quando riassoci `Invio` nel contesto `Chat` a `chat:queueSubmit` o `chat:newline`.309Mentre un elemento del piè di pagina è selezionato, come una riga nel pannello dell'agente sotto il prompt, `Invio` lo apre anche quando riassoci `Invio` nel contesto `Chat` a `chat:queueSubmit` o `chat:newline`.

Details

216* **Distribuita da un amministratore**: se la tua organizzazione ha [distribuito la configurazione](/docs/it/llm-gateway-rollout#distribute-through-managed-settings), l'app desktop instrada attraverso il gateway senza alcuna configurazione da parte tua216* **Distribuita da un amministratore**: se la tua organizzazione ha [distribuito la configurazione](/docs/it/llm-gateway-rollout#distribute-through-managed-settings), l'app desktop instrada attraverso il gateway senza alcuna configurazione da parte tua

217* **Configurata localmente**: per i dispositivi senza una configurazione distribuita da un amministratore, apri Help → Troubleshooting → Enable Developer Mode, che riavvia l'app con un menu Developer. Quindi apri Developer → Configure Third-Party Inference e inserisci l'URL di base del tuo gateway. Una configurazione distribuita da un amministratore ha la precedenza e rende questo modulo di sola lettura217* **Configurata localmente**: per i dispositivi senza una configurazione distribuita da un amministratore, apri Help → Troubleshooting → Enable Developer Mode, che riavvia l'app con un menu Developer. Quindi apri Developer → Configure Third-Party Inference e inserisci l'URL di base del tuo gateway. Una configurazione distribuita da un amministratore ha la precedenza e rende questo modulo di sola lettura

218 218 

219Con la configurazione del gateway attiva, l'app desktop esegue sessioni solo sulla tua macchina locale: il selettore di ambiente non offre sessioni SSH o ambienti cloud ospitati da Anthropic, e [Remote Control](/docs/it/remote-control) non è disponibile. Per utilizzare Claude Code su un host remoto attraverso il gateway, esegui la CLI su quell'host con [`ANTHROPIC_BASE_URL` e la credenziale del gateway](#set-the-base-url-and-credential) impostati lì.219Con la configurazione del gateway attiva, il selettore di ambiente non offre ambienti cloud ospitati da Anthropic, e [Remote Control](/docs/it/remote-control) non è disponibile.

220 

221Le sessioni SSH sono in beta con una configurazione del gateway e richiedono Claude Desktop v1.40609.0 o successiva. Prima di connetterti, controlla l'allowlist e l'indirizzo del gateway:

222 

223* **Host consentiti**: le sessioni SSH sono disattivate per impostazione predefinita. Per attivarle, gli host consentiti vanno elencati, da te o dal tuo amministratore, nella chiave [`sshHostAllowlist`](https://claude.com/docs/third-party/claude-desktop/configuration#sshhostallowlist) della configurazione di inferenza di terze parti

224* **Indirizzo del gateway**: la macchina remota si connette direttamente al gateway, quindi un gateway su `localhost` sul tuo computer non funziona per le sessioni SSH

225 

226Consulta [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions). Puoi anche eseguire la CLI sull'host remoto con [`ANTHROPIC_BASE_URL` e la credenziale del gateway](#set-the-base-url-and-credential) impostati lì.

220 227 

221Se l'app desktop mostra `Gateway was unreachable`, l'app non ha potuto raggiungere l'URL di base configurato all'avvio; controlla l'URL e il percorso di rete con il [test curl di cui sopra](#verify-the-connection).228Se l'app desktop mostra `Gateway was unreachable`, l'app non ha potuto raggiungere l'URL di base configurato all'avvio; controlla l'URL e il percorso di rete con il [test curl di cui sopra](#verify-the-connection).

222 229 

managed-mcp.md +17 −5

Details

347 Come corrispondono le voci `serverUrl`347 Come corrispondono le voci `serverUrl`

348</h4>348</h4>

349 349 

350Gli URL supportano wildcard `*` ovunque nel modello, incluso lo schema. La corrispondenza del nome host non distingue tra maiuscole e minuscole e ignora un punto FQDN finale, quindi `https://Mcp.Example.com/*` corrisponde a `https://mcp.example.com/api`. I percorsi rimangono sensibili alle maiuscole e minuscole.350Gli URL supportano wildcard `*`, incluso `*` come intero schema. La corrispondenza del nome host non distingue tra maiuscole e minuscole e ignora un punto FQDN finale, quindi `https://Mcp.Example.com/*` corrisponde a `https://mcp.example.com/api`. I percorsi rimangono sensibili alle maiuscole e minuscole. Se non specifichi una porta, il modo in cui scrivi il nome host determina se il modello corrisponde solo alla porta predefinita dello schema o a ogni porta:

351 

352* **Nome host scritto per intero**: solo la porta predefinita, 443 per `https` e 80 per `http`

353* **Nome host contenente un `*`**: ogni porta

351 354 

352La tabella mostra cosa consentono i modelli comuni:355La tabella mostra cosa consentono i modelli comuni:

353 356 

354| Modello | Consente |357| Modello | Consente |

355| :- | :- |358| :- | :- |

356| `https://mcp.example.com/*` | Tutti i percorsi su un dominio specifico |359| `https://mcp.example.com/*` | Tutti i percorsi su un dominio specifico, solo sulla porta 443 |

357| `https://mcp.example.com` | Anche tutti i percorsi su quel dominio. Un modello senza percorso corrisponde a qualsiasi percorso |360| `https://mcp.example.com` | Anche tutti i percorsi su quel dominio, solo sulla porta 443. Un modello senza percorso corrisponde a qualsiasi percorso |

358| `https://*.example.com/*` | Qualsiasi sottodominio di `example.com` |361| `https://mcp.example.com:8443/*` | Tutti i percorsi su quel dominio, solo sulla porta 8443 |

362| `https://mcp.example.com:*/*` | Tutti i percorsi su quel dominio, su qualsiasi porta, inclusa la 443 |

363| `https://*.example.com/*` | Qualsiasi sottodominio di `example.com`, su qualsiasi porta |

359| `http://localhost:*/*` | Qualsiasi porta su localhost |364| `http://localhost:*/*` | Qualsiasi porta su localhost |

360| `*://mcp.example.com/*` | Qualsiasi schema a un dominio specifico |365| `*://mcp.example.com/*` | Qualsiasi schema a un dominio specifico, ciascuno schema solo sulla sua porta predefinita |

366 

367Le voci in `deniedMcpServers` corrispondono alle porte allo stesso modo, quindi scegli una voce per `staging.example.com` in base alle porte e agli schemi che devi bloccare:

368 

369* `https://staging.example.com/*`: blocca i server `https` su quell'host solo sulla porta 443, quindi non blocca un server su `https://staging.example.com:8443/api`

370* `https://staging.example.com:*/*`: blocca i server `https` su quell'host su ogni porta

371* `*://staging.example.com:*/*`: blocca quell'host con qualsiasi schema e su qualsiasi porta

361 372 

362<h4 id="how-policy-entries-expand">373<h4 id="how-policy-entries-expand">

363 Variabili d'ambiente nelle voci `serverCommand` e `serverUrl`374 Variabili d'ambiente nelle voci `serverCommand` e `serverUrl`


529 | :- | :- |540 | :- | :- |

530 | Server HTTP a `https://mcp.example.com/api` | Consentito: corrisponde al modello di URL dell'allowlist, nessuna corrispondenza del denylist |541 | Server HTTP a `https://mcp.example.com/api` | Consentito: corrisponde al modello di URL dell'allowlist, nessuna corrispondenza del denylist |

531 | Server HTTP a `https://staging.example.com/api` | Bloccato: corrisponde a entrambi, ma il denylist ha la precedenza |542 | Server HTTP a `https://staging.example.com/api` | Bloccato: corrisponde a entrambi, ma il denylist ha la precedenza |

543 | Server HTTP a `https://staging.example.com:8443/api` | Consentito: corrisponde al modello di URL dell'allowlist, [nessuna corrispondenza della denylist su questa porta](#how-serverurl-entries-match) |

532 | Server HTTP a `https://other.com/mcp` | Bloccato: non corrisponde all'allowlist |544 | Server HTTP a `https://other.com/mcp` | Bloccato: non corrisponde all'allowlist |

533</Accordion>545</Accordion>

534 546 

memory.md +2 −2

Details

8 8 

9Ogni sessione di Claude Code inizia con una finestra di contesto nuova. Due meccanismi trasportano la conoscenza tra le sessioni:9Ogni sessione di Claude Code inizia con una finestra di contesto nuova. Due meccanismi trasportano la conoscenza tra le sessioni:

10 10 

11* **File CLAUDE.md**: istruzioni che scrivi per dare a Claude un contesto persistente. Claude può anche leggere i file [`AGENTS.md`](#agents-md) di un repository, da soli o insieme a CLAUDE.md11* **File CLAUDE.md**: istruzioni che scrivi per dare a Claude un contesto persistente. Claude può anche leggere i [file `AGENTS.md`](#agents-md) di un repository al posto di CLAUDE.md

12* **Memoria automatica**: note che Claude scrive da solo in base alle tue correzioni e preferenze12* **Memoria automatica**: note che Claude scrive da solo in base alle tue correzioni e preferenze

13 13 

14Questa pagina spiega come:14Questa pagina spiega come:

15 15 

16* [Scrivere e organizzare file CLAUDE.md](#claude-md-files)16* [Scrivere e organizzare file CLAUDE.md](#claude-md-files)

17* [Utilizzare un file AGENTS.md esistente](#agents-md) come istruzioni del tuo progetto, da solo o insieme a CLAUDE.md17* [Utilizzare un file AGENTS.md esistente](#agents-md) come istruzioni del tuo progetto

18* [Limitare le regole a tipi di file specifici](#organize-rules-with-claude/rules/) con `.claude/rules/`18* [Limitare le regole a tipi di file specifici](#organize-rules-with-claude/rules/) con `.claude/rules/`

19* [Configurare la memoria automatica](#auto-memory) in modo che Claude prenda note automaticamente19* [Configurare la memoria automatica](#auto-memory) in modo che Claude prenda note automaticamente

20* [Risolvere i problemi](#troubleshoot-memory-issues) quando le istruzioni non vengono seguite20* [Risolvere i problemi](#troubleshoot-memory-issues) quando le istruzioni non vengono seguite

Details

551* **Impostazioni gestite dal server**: aggiungetele al blocco `env` delle [impostazioni gestite dal server](/docs/it/server-managed-settings) della vostra organizzazione. Claude Code recupera quelle impostazioni all'avvio ovunque [si applichino le impostazioni gestite dal server](/docs/it/model-config#surface-coverage), il che include i dispositivi dei vostri utenti e le sessioni cloud diverse dalle sessioni del canale Claude Tag. Le sessioni Claude Tag non ricevono le vostre impostazioni gestite dal server, quindi questo percorso non le configura.551* **Impostazioni gestite dal server**: aggiungetele al blocco `env` delle [impostazioni gestite dal server](/docs/it/server-managed-settings) della vostra organizzazione. Claude Code recupera quelle impostazioni all'avvio ovunque [si applichino le impostazioni gestite dal server](/docs/it/model-config#surface-coverage), il che include i dispositivi dei vostri utenti e le sessioni cloud diverse dalle sessioni del canale Claude Tag. Le sessioni Claude Tag non ricevono le vostre impostazioni gestite dal server, quindi questo percorso non le configura.

552* **Le variabili dell'ambiente**: aggiungetele alle [variabili di ambiente](/docs/it/cloud-environments#set-environment-variables) di un ambiente cloud per configurare solo le sessioni eseguite in quell'ambiente. Questo è il percorso che raggiunge le sessioni Claude Tag.552* **Le variabili dell'ambiente**: aggiungetele alle [variabili di ambiente](/docs/it/cloud-environments#set-environment-variables) di un ambiente cloud per configurare solo le sessioni eseguite in quell'ambiente. Questo è il percorso che raggiunge le sessioni Claude Tag.

553 553 

554Chiunque utilizzi un ambiente può leggere le sue variabili, quindi non inserite una credenziale lì, come un token del collector in `OTEL_EXPORTER_OTLP_HEADERS`. Una [credenziale API](/docs/it/cloud-environments#add-api-credentials) sull'ambiente non aiuta nemmeno, perché l'esportazione di telemetria di Claude Code stesso è una delle [richieste che non ricevono mai la credenziale](/docs/it/cloud-environments#requests-that-never-get-the-credential). Se il vostro collector richiede una credenziale, configurate l'intera esportazione tramite impostazioni gestite dal server, perché quando impostate una credenziale lì, [Claude Code rimuove le variabili di endpoint impostate al di fuori delle impostazioni gestite](#how-managed-settings-lock-the-otlp-destination).554Chiunque utilizzi un ambiente può leggerne le variabili, quindi non inserire lì una credenziale, come un token del collector in `OTEL_EXPORTER_OTLP_HEADERS`. Nemmeno un [segreto di rete](/docs/it/cloud-environments#add-api-credentials) sull'ambiente è utile, perché l'esportazione della telemetria di Claude Code stesso è una delle [richieste che non ricevono mai il segreto](/docs/it/cloud-environments#requests-that-never-get-the-credential). Se il tuo collector richiede una credenziale, configura invece l'intera esportazione tramite le impostazioni gestite dal server, perché quando imposti lì una credenziale, [Claude Code rimuove le variabili di endpoint impostate al di fuori delle impostazioni gestite](#how-managed-settings-lock-the-otlp-destination).

555 555 

556Tenete presenti questi vincoli quando configurate la telemetria per le sessioni cloud:556Tenete presenti questi vincoli quando configurate la telemetria per le sessioni cloud:

557 557 

overview.md +7 −5

Details

28 curl -fsSL https://claude.ai/install.sh | bash28 curl -fsSL https://claude.ai/install.sh | bash

29 ```29 ```

30 30 

31 Su Windows, il tuo prompt mostra `PS C:\` quando sei in PowerShell e `C:\` senza il `PS` quando sei in CMD.

32 

31 **Windows PowerShell:**33 **Windows PowerShell:**

32 34 

33 ```powershell theme={null}35 ```powershell theme={null}


42 44 

43 Quando il programma di installazione termina, apri una nuova finestra del terminale ed esegui `claude --version`. Un'installazione funzionante stampa un numero di versione. Se la tua shell dice che `claude` non è trovato o non è riconosciuto, la directory di installazione non è ancora nel tuo PATH: vedi [Correggi il tuo PATH](/docs/it/troubleshoot-install#command-not-found-claude-after-installation).45 Quando il programma di installazione termina, apri una nuova finestra del terminale ed esegui `claude --version`. Un'installazione funzionante stampa un numero di versione. Se la tua shell dice che `claude` non è trovato o non è riconosciuto, la directory di installazione non è ancora nel tuo PATH: vedi [Correggi il tuo PATH](/docs/it/troubleshoot-install#command-not-found-claude-after-installation).

44 46 

45 Se vedi `The token '&&' is not a valid statement separator`, sei in PowerShell, non in CMD. Se vedi `'irm' is not recognized as an internal or external command`, sei in CMD, non in PowerShell. Il tuo prompt mostra `PS C:\` quando sei in PowerShell e `C:\` senza il `PS` quando sei in CMD.47 Se vedi `The token '&&' is not a valid statement separator`, sei in PowerShell, non in CMD. Se vedi `'irm' is not recognized as an internal or external command`, sei in CMD, non in PowerShell.

46 48 

47 Se il comando di installazione non riesce con `syntax error near unexpected token '<'`, un `403`, o un altro errore curl, consulta [Troubleshoot installation](/docs/it/troubleshoot-install#find-your-error) per abbinare l'errore a una soluzione e per metodi di installazione alternativi.49 Se il comando di installazione non riesce con `syntax error near unexpected token '<'`, un `403` o qualsiasi altro errore, consulta [Risoluzione dei problemi di installazione](/docs/it/troubleshoot-install#find-your-error) per abbinare l'errore a una soluzione e per metodi di installazione alternativi.

48 50 

49 [Git for Windows](https://git-scm.com/downloads/win) è consigliato su Windows nativo in modo che Claude Code possa utilizzare lo strumento Bash. Se Git for Windows non è installato, Claude Code utilizza PowerShell come strumento shell. Le configurazioni WSL non necessitano di Git for Windows.51 [Git for Windows](https://git-scm.com/downloads/win) è consigliato su Windows nativo in modo che Claude Code possa utilizzare lo strumento Bash. Se Git for Windows non è installato, Claude Code utilizza PowerShell come strumento shell. Le configurazioni WSL non necessitano di Git for Windows.

50 52 


85 claude87 claude

86 ```88 ```

87 89 

88 Ti verrà chiesto di accedere al primo utilizzo. Se hai impostato la variabile di ambiente `ANTHROPIC_API_KEY`, Claude Code salta il prompt di accesso e ti chiede invece di approvare la chiave. È tutto! [Continua con la Guida rapida →](/docs/it/quickstart)90 Claude Code ti chiede di accedere al primo utilizzo. Se hai impostato la variabile d'ambiente `ANTHROPIC_API_KEY` e approvi la chiave quando Claude Code ti chiede se usarla, Claude Code salta il prompt di accesso. [Continua con la Guida rapida →](/docs/it/quickstart)

89 91 

90 <Tip>92 <Tip>

91 Vedi [configurazione avanzata](/docs/it/setup) per le opzioni di installazione, gli aggiornamenti manuali o le istruzioni di disinstallazione. Visita [risoluzione dei problemi di installazione](/docs/it/troubleshoot-install) se riscontri problemi.93 Vedi [configurazione avanzata](/docs/it/setup) per le opzioni di installazione, gli aggiornamenti manuali o le istruzioni di disinstallazione. Visita [risoluzione dei problemi di installazione](/docs/it/troubleshoot-install) se riscontri problemi.


170 Il [Model Context Protocol (MCP)](/docs/it/mcp) è uno standard aperto per connettere gli strumenti di IA alle fonti di dati esterne. Con MCP, Claude Code può leggere i tuoi documenti di progettazione in Google Drive, aggiornare i ticket in Jira, estrarre dati da Slack o utilizzare i tuoi strumenti personalizzati. La [guida rapida MCP](/docs/it/mcp-quickstart) connette il tuo primo server da capo a fondo.172 Il [Model Context Protocol (MCP)](/docs/it/mcp) è uno standard aperto per connettere gli strumenti di IA alle fonti di dati esterne. Con MCP, Claude Code può leggere i tuoi documenti di progettazione in Google Drive, aggiornare i ticket in Jira, estrarre dati da Slack o utilizzare i tuoi strumenti personalizzati. La [guida rapida MCP](/docs/it/mcp-quickstart) connette il tuo primo server da capo a fondo.

171 </Accordion>173 </Accordion>

172 174 

173 <Accordion title="Personalizza con istruzioni, skills e hooks" icon="sliders">175 <Accordion title="Personalizza con istruzioni, skill e hook" icon="sliders">

174 [`CLAUDE.md`](/docs/it/memory) è un file markdown che aggiungi alla radice del tuo progetto che Claude Code legge all'inizio di ogni sessione. Usalo per impostare standard di codifica, decisioni architettoniche, librerie preferite e checklist di revisione. Se il tuo repository ha già un `AGENTS.md` per altri agenti di codifica, Claude Code [può leggerlo](/docs/it/memory#agents-md) da solo o insieme a `CLAUDE.md`. Claude costruisce anche [memoria automatica](/docs/it/memory#auto-memory) mentre lavora, salvando insegnamenti tra le sessioni senza che tu debba scrivere nulla.176 [`CLAUDE.md`](/docs/it/memory) è un file markdown che aggiungi alla radice del tuo progetto che Claude Code legge all'inizio di ogni sessione. Usalo per impostare standard di codifica, decisioni architettoniche, librerie preferite e checklist di revisione. Se il tuo repository ha già un `AGENTS.md` per altri agenti di codifica, Claude Code [può leggerlo](/docs/it/memory#agents-md) al posto di un `CLAUDE.md`. Claude costruisce anche [memoria automatica](/docs/it/memory#auto-memory) mentre lavora, salvando insegnamenti tra le sessioni senza che tu debba scrivere nulla.

175 177 

176 Crea [skills](/docs/it/skills) per pacchettizzare flussi di lavoro ripetibili che il tuo team può condividere, come `/review-pr` o `/deploy-staging`.178 Crea [skills](/docs/it/skills) per pacchettizzare flussi di lavoro ripetibili che il tuo team può condividere, come `/review-pr` o `/deploy-staging`.

177 179 

plugin-evals.md +9 −5

Details

77 claude plugin eval init77 claude plugin eval init

78 ```78 ```

79 79 

80 Se Claude Code non ha già fiducia in questa directory, prima chiede `Trust this plugin directory?`; rispondi `y`. Una sessione Claude Code interattiva si apre quindi. Claude legge il tuo plugin e ti chiede quale sia un buon risultato, propone prompt che dovrebbero e non dovrebbero attivare il plugin, progetta grader per ognuno, li pilota una volta per controllare che si comportino, e scrive una directory di caso per prompt sotto `evals/`, ognuna denominata dal suo prompt. Quando Claude ti dice che la suite è pronta, esci da quella sessione con `/exit` o Ctrl+D per tornare alla tua shell.80 Se Claude Code non ha già fiducia in questa directory, prima chiede `Trust this plugin directory?`; rispondi `y`.

81 81 

82 Se hai già una sessione Claude Code aperta nella root del plugin, puoi invece chiedere a Claude di eseguire `claude plugin eval init`. Claude esegue il comando e poi ti pone le stesse domande in quella conversazione.82 Si apre quindi una sessione Claude Code interattiva. Claude legge il tuo plugin e ti chiede quale sia un buon risultato, propone prompt che dovrebbero e non dovrebbero attivare il plugin, progetta grader per ognuno, li esegue una volta come prova per controllare che si comportino correttamente, e scrive una directory di caso per prompt sotto `evals/`, ognuna denominata dal suo prompt.

83 

84 Quando Claude ti dice che la suite è pronta, esci da quella sessione con `/exit` o Ctrl+D per tornare alla tua shell.

85 

86 Se hai già una sessione Claude Code aperta nella root del plugin, puoi invece chiedere lì a Claude di eseguire `claude plugin eval init`. Claude esegue il comando e poi ti pone le stesse domande in quella conversazione.

83 87 

84 Se preferisci scrivere un caso tu stesso per vedere esattamente cosa contengono i file, segui [Scrivi un caso a mano](#write-a-case-manually) e torna qui per eseguirlo.88 Se preferisci scrivere un caso tu stesso per vedere esattamente cosa contengono i file, segui [Scrivi un caso a mano](#write-a-case-manually) e torna qui per eseguirlo.

85 </Step>89 </Step>


91 claude plugin eval .95 claude plugin eval .

92 ```96 ```

93 97 

94 Hai già fiducia in questa directory durante il passaggio 1, quindi l'esecuzione inizia immediatamente. Se hai scritto il caso a mano invece, l'esecuzione prima chiede `Trust this plugin directory? [y/N]`; rispondi `y`. [Cosa un'esecuzione può accedere](#security) spiega a cosa stai acconsentendo.98 Hai già dato fiducia a questa directory durante il passaggio 1, quindi l'esecuzione inizia immediatamente. Se hai scritto il caso a mano invece, l'esecuzione prima chiede `Trust this plugin directory? [y/N]`; rispondi `y`. [Cosa un'esecuzione può accedere](#security) spiega a cosa stai acconsentendo.

95 99 

96 Ogni caso viene eseguito tre volte con il tuo plugin e tre volte senza, quindi un caso è sei esecuzioni. Una linea di progresso viene stampata mentre ogni esecuzione finisce, con il punteggio di quella esecuzione e il verdetto di ogni grader.100 Ogni caso viene eseguito tre volte con il tuo plugin e tre volte senza, quindi un caso è sei esecuzioni. Una linea di progresso viene stampata mentre ogni esecuzione finisce, con il punteggio di quella esecuzione e il verdetto di ogni grader.

97 </Step>101 </Step>


114 <Step title="Apri il rapporto e itera">118 <Step title="Apri il rapporto e itera">

115 Apri l'URL `Published:`, o il percorso `Report:` quando non appare una linea `Published:`, per vedere il verdetto di ogni grader e la spiegazione per ogni esecuzione, e per i grader `llm` i voti del judge e l'estratto che ha valutato. La linea `Published:` appare solo quando il tuo account può [pubblicare rapporti](#html-report).119 Apri l'URL `Published:`, o il percorso `Report:` quando non appare una linea `Published:`, per vedere il verdetto di ogni grader e la spiegazione per ogni esecuzione, e per i grader `llm` i voti del judge e l'estratto che ha valutato. La linea `Published:` appare solo quando il tuo account può [pubblicare rapporti](#html-report).

116 120 

117 Il risultato più comune della prima ricerca è un `Δ` vicino a zero con il grader `tool_used: Skill` del caso che fallisce, il che significa che Claude non sta scegliendo la tua skill sulla formulazione naturale. Regola la [`description`](/docs/it/skills#frontmatter-reference) della skill, esegui di nuovo `claude plugin eval .`, e confronta.121 Il primo risultato più comune è un `Δ` vicino a zero con il grader `tool_used: Skill` del caso che fallisce, il che significa che Claude non sta scegliendo la tua skill sulla formulazione naturale. Regola la [`description`](/docs/it/skills#frontmatter-reference) della skill, esegui di nuovo `claude plugin eval .`, e confronta.

118 122 

119 Per iterare su un caso in modo economico, esegui un singolo arm una volta. Un'esecuzione singola è rumorosa, quindi conferma qualsiasi modifica alle tre esecuzioni predefinite prima di fidarti. Con un arm la tabella mostra colonne `SCORE` e `PASS%` invece di `WITH`, `W/OUT`, e `Δ`:123 Per iterare su un caso con meno esecuzioni, esegui un singolo arm una volta. Un'esecuzione singola è rumorosa, quindi conferma qualsiasi modifica alle tre esecuzioni predefinite prima di fidarti. Con un arm la tabella mostra colonne `SCORE` e `PASS%` invece di `WITH`, `W/OUT`, e `Δ`:

120 124 

121 ```bash theme={null}125 ```bash theme={null}

122 claude plugin eval . --case <case-name> --runs 1 --ablation none126 claude plugin eval . --case <case-name> --runs 1 --ablation none

Details

733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

734```734```

735 735 

736Questo agente è denominato `my-plugin:security-reviewer`, e l'utente può [invocarlo esplicitamente](/docs/it/sub-agents#invoke-subagents-explicitly) con `@agent-my-plugin:security-reviewer`. La forma del nome è `<plugin>:<name>`, dove `<name>` viene dal frontmatter, o dal nome del file quando non c'è.736Questo agente è denominato `my-plugin:security-reviewer`, e l'utente può [invocarlo esplicitamente](/docs/it/sub-agents#invoke-subagents-explicitly) con `@agent-my-plugin:security-reviewer`. La forma del nome è `<plugin>:<name>`, dove `<name>` viene dal campo `name` del frontmatter, o dal nome del file quando quel campo manca.

737 737 

738La chiave manifest `agents` sostituisce la scansione `agents/`.738La chiave manifest `agents` sostituisce la scansione `agents/`.

739 739 

Details

428 428 

429| Elemento | Cosa disegna | Dove |429| Elemento | Cosa disegna | Dove |

430| :- | :- | :- |430| :- | :- | :- |

431| `Box` | Un contenitore flex. Accetta prop di layout come `flexDirection`, `columnGap`, `padding`, `borderStyle` e `width`. | Ovunque |431| `Box` | Un contenitore flex. Accetta prop di layout come `flexDirection`, `columnGap`, `padding`, [`borderStyle`](/docs/it/plugins/mods/reference#box-border-styles) e `width`. | Ovunque |

432| `Text` | Testo con stile. Accetta `color`, `bold`, `dimColor`, `italic` e `wrap`. Un `color` è una chiave del tema o un colore come `'red'`. Un `wrap` è `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` o `'truncate-end'`. | Ovunque |432| `Text` | Testo con stile. Accetta `color`, `bold`, `dimColor`, `italic` e `wrap`. Un `color` è una chiave del tema o un colore come `'red'`. Un `wrap` è `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` o `'truncate-end'`. | Ovunque |

433| `Button` | Un controllo che chiama `onPress` | Ovunque |433| `Button` | Un controllo che chiama `onPress` | Ovunque |

434| `Link`, `Code`, `Markdown` | Un link con `href` e un `label` facoltativo, un blocco di codice e testo formattato come le risposte di Claude. `Markdown` riceve il suo contenuto nella prop `text`, non in `children`, e richiede una `key` quando passi `onLinkPress`. | Ovunque |434| `Link`, `Code`, `Markdown` | Un link con `href` e un `label` facoltativo, un blocco di codice e testo formattato come le risposte di Claude. `Markdown` riceve il suo contenuto nella prop `text`, non in `children`, e richiede una `key` quando passi `onLinkPress`. | Ovunque |


563Molti pannelli sono un campo di testo con un elenco sotto. L'esempio in questa sezione è un pannello di note: digiti una nota e premi Invio per aggiungerla, e ogni nota ha un pulsante `x` che la elimina. Con due note aggiunte, il terminale disegna il pannello in questo modo:563Molti pannelli sono un campo di testo con un elenco sotto. L'esempio in questa sezione è un pannello di note: digiti una nota e premi Invio per aggiungerla, e ogni nota ha un pulsante `x` che la elimina. Con due note aggiunte, il terminale disegna il pannello in questo modo:

564 564 

565```text theme={null}565```text theme={null}

566╭──────────────────────────────────────────────────────────╮566╭────────────────────────────────────────────────────────✕─╮

567│ Note: Type a note and press Enter ⏎ add ✕ │567│ Note: Type a note and press Enter ⏎ add │

568│ x buy milk │568│ x buy milk │

569│ x call bob │569│ x call bob │

570╰──────────────────────────────────────────────────────────╯570╰──────────────────────────────────────────────────────────╯

571```571```

572 572 

573Il simbolo `✕` sul bordo superiore è il segno proprio di Claude Code per chiudere il pannello.

574 

573L'esempio usa queste tecniche:575L'esempio usa queste tecniche:

574 576 

575* **Ricevere input digitato**: un `Input` chiama `onSubmit(value)` con il testo del campo quando l'utente preme Invio, e `onInput(value)` a ogni modifica577* **Ricevere input digitato**: un `Input` chiama `onSubmit(value)` con il testo del campo quando l'utente preme Invio, e `onInput(value)` a ogni modifica

Details

242Per adattare un albero al suo punto, leggi queste prop nell'hook:242Per adattare un albero al suo punto, leggi queste prop nell'hook:

243 243 

244* **Larghezza di un `Pane` o della fascia**: disegna fino a `e.props.bodyColumns`244* **Larghezza di un `Pane` o della fascia**: disegna fino a `e.props.bodyColumns`

245* **Altezza di un `Pane` accanto alla trascrizione**: quando `e.props.placement` è `'dock'`, `e.props.scroll.bodyRows` è il numero di righe di cui dispone il pannello245* **Altezza di un `Pane` accanto alla trascrizione**: quando `e.props.placement` è `'dock'`, `e.props.scroll.bodyRows` è il numero di righe di cui dispone il pannello per il tuo albero

246* **Altezza di un `Pane` sopra il prompt**: quando `e.props.placement` è `'inline'`, il pannello cresce insieme al tuo albero fino a un limite, e `bodyRows` è quel limite. Il [campo `rows` di `$.ui.open`](/docs/it/plugins/mods/interface#open-a-pane-at-the-right-time) richiede un limite diverso.246* **Altezza di un `Pane` sopra il prompt**: quando `e.props.placement` è `'inline'`, il pannello cresce insieme al tuo albero fino a un limite, e `bodyRows` è quel limite. Il [campo `rows` di `$.ui.open`](/docs/it/plugins/mods/interface#open-a-pane-at-the-right-time) richiede un limite diverso.

247 247 

248Un albero più alto del pannello scorre nel suo insieme.248Un albero più alto del pannello scorre nel suo insieme.


255 255 

256| Elemento | Prop principali | Terminale | Desktop |256| Elemento | Prop principali | Terminale | Desktop |

257| :- | :- | :-: | :-: |257| :- | :- | :-: | :-: |

258| [`Box`](/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `key`, layout flex, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |258| [`Box`](/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `key`, layout flex, `gap`, `padding`, `margin`, `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ |

259| [`Text`](/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |259| [`Text`](/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

260| [`Button`](/docs/it/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |260| [`Button`](/docs/it/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

261| `Link` | `href`, `label` | ✓ | ✓ |261| `Link` | `href`, `label` | ✓ | ✓ |


270 270 

271Altre regole per `Button`: `action` indica una delle [scorciatoie da tastiera](/docs/it/keybindings) di Claude Code, e la combinazione assegnata dall'utente a quell'azione preme il pulsante quando si tratta di un accordo o di un tasto con modificatore. Un `hotkey` numerico su un pulsante nella banda si attiva anche quando l'utente digita solo quella cifra in un prompt vuoto e si ferma. Quando due pulsanti nello stesso disegno indicano lo stesso `hotkey`, lo ottiene quello successivo. `autoFocus` accetta solo `true` su qualsiasi controllo, quindi ometti la prop per lasciarlo disattivato.271Altre regole per `Button`: `action` indica una delle [scorciatoie da tastiera](/docs/it/keybindings) di Claude Code, e la combinazione assegnata dall'utente a quell'azione preme il pulsante quando si tratta di un accordo o di un tasto con modificatore. Un `hotkey` numerico su un pulsante nella banda si attiva anche quando l'utente digita solo quella cifra in un prompt vuoto e si ferma. Quando due pulsanti nello stesso disegno indicano lo stesso `hotkey`, lo ottiene quello successivo. `autoFocus` accetta solo `true` su qualsiasi controllo, quindi ometti la prop per lasciarlo disattivato.

272 272 

273<h3 id="box-border-styles">

274 Stili del bordo di `Box`

275</h3>

276 

277Per disegnare un bordo attorno a un `Box`, imposta la sua `borderStyle` su uno di questi nomi, come in `borderStyle: 'round'`. Ogni riga indica cosa disegna il terminale per quel nome e mostra il bordo superiore.

278 

279| `borderStyle` | Cosa disegna il terminale | Bordo superiore |

280| :- | :- | :- |

281| `'single'` | Linee sottili con angoli squadrati | `┌──┐` |

282| `'double'` | Linee doppie | `╔══╗` |

283| `'round'` | Linee sottili con angoli arrotondati | `╭──╮` |

284| `'bold'` | Linee spesse | `┏━━┓` |

285| `'singleDouble'` | Linee sottili in alto e in basso, linee doppie sui lati | `╓──╖` |

286| `'doubleSingle'` | Linee doppie in alto e in basso, linee sottili sui lati | `╒══╕` |

287| `'classic'` | I caratteri ASCII `+`, `-` e `\|` | `+--+` |

288| `'arrow'` | Frecce che puntano verso l'interno del `Box` | `↘↓↓↙` |

289| `'dashed'` | Linee tratteggiate con angoli vuoti | `╌╌` |

290| `'quote'` | Una barra, `▎`, lungo il lato sinistro e celle vuote sugli altri tre lati | Vuoto |

291 

292Un `Box` la cui `borderStyle` indica qualsiasi altro nome, come `'rounded'`, viene disegnato senza bordo.

293 

273<h2 id="limits">294<h2 id="limits">

274 Limiti295 Limiti

275</h2>296</h2>

Details

17 17 

18 * **Perché gli ambiti, la cache e la precedenza si comportano nel modo in cui lo fanno**: leggi [Plugin loading reference](/docs/it/plugins/loading)18 * **Perché gli ambiti, la cache e la precedenza si comportano nel modo in cui lo fanno**: leggi [Plugin loading reference](/docs/it/plugins/loading)

19 * **Ricerca di un flag, un campo o un comando**: utilizza il [plugin commands reference](/docs/it/plugins/cli-reference), il [manifest reference](/docs/it/plugins/manifest-reference) o il [marketplace reference](/docs/it/plugins/marketplace-reference)19 * **Ricerca di un flag, un campo o un comando**: utilizza il [plugin commands reference](/docs/it/plugins/cli-reference), il [manifest reference](/docs/it/plugins/manifest-reference) o il [marketplace reference](/docs/it/plugins/marketplace-reference)

20 * **Un messaggio `hooks module not loaded` o `hooks module did not load`**: il plugin è un [mod](/docs/it/plugins/mods/overview), quindi leggi [The mod doesn't load](/docs/it/plugins/mods/troubleshoot#the-mod-doesn’t-load)

20</Note>21</Note>

21 22 

22Cerca il messaggio esatto che hai visto. Ogni messaggio è elencato sotto la fase che lo produce, che non è sempre il comando che hai eseguito. Ad esempio, un'installazione può fallire perché manca un marketplace, quindi quel messaggio è sotto [Add a marketplace](#add-a-marketplace).23Cerca il messaggio esatto che hai visto. Ogni messaggio è elencato sotto la fase che lo produce, che non è sempre il comando che hai eseguito. Ad esempio, un'installazione può fallire perché manca un marketplace, quindi quel messaggio è sotto [Add a marketplace](#add-a-marketplace).

Details

310 310 

311Su un piano Pro o Max, quando riprendi una sessione di grandi dimensioni dopo una lunga pausa, Claude Code [offre di riprendere da un riepilogo](/docs/it/sessions#resume-from-a-summary) in modo che le richieste successive non portino la cronologia completa.311Su un piano Pro o Max, quando riprendi una sessione di grandi dimensioni dopo una lunga pausa, Claude Code [offre di riprendere da un riepilogo](/docs/it/sessions#resume-from-a-summary) in modo che le richieste successive non portino la cronologia completa.

312 312 

313Il time to live (TTL) controlla per quanto tempo un intervallo la cache sopravvive. L'API offre due: un TTL di cinque minuti e un [TTL di un'ora](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration) che mantiene la cache calda attraverso pause più lunghe ma [fattura le scritture della cache a una velocità più elevata](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). Il TTL più lungo aiuta quando lasci una sessione inattiva e torni ad essa, perché salti la rielaborazione che un prefisso scaduto comporta. Costa di più su brevi raffiche di lavoro che non rimangono mai inattive oltre cinque minuti, dove si applica la velocità di scrittura più elevata e la durata della cache più lunga rimane inutilizzata.313Il time to live (TTL) determina per quanto tempo di inattività la cache sopravvive. L'API ne offre due: un TTL di cinque minuti e un [TTL di un'ora](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration) che mantiene la cache calda durante pause più lunghe ma [applica una tariffa più elevata alle scritture nella cache](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). Il TTL più lungo è utile quando lasci una sessione inattiva e poi ci torni, perché eviti la rielaborazione che un prefisso scaduto comporta. Costa di più nelle brevi sessioni di lavoro che non restano mai inattive oltre cinque minuti, dove si applica la tariffa di scrittura più elevata e la durata più lunga della cache rimane inutilizzata.

314 314 

315<h3 id="which-ttl-each-request-gets">315<h3 id="which-ttl-each-request-gets">

316 Which TTL each request gets316 Which TTL each request gets


328| Main conversation | One hour | Five minutes |328| Main conversation | One hour | Five minutes |

329| Everything else | Five minutes, except the server-controlled helper requests, which get one hour | Five minutes |329| Everything else | Five minutes, except the server-controlled helper requests, which get one hour | Five minutes |

330 330 

331Una volta superato il limite di utilizzo del tuo piano e Claude Code attinge ai [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), ti viene fatturato quell'utilizzo, quindi Claude Code abbassa la conversazione principale al TTL di cinque minuti più economico. Per mantenere il TTL di un'ora lì, [scegli il TTL tu stesso](#choose-the-ttl-yourself).331Una volta superato il limite di utilizzo del tuo piano, quando Claude Code attinge ai [crediti di utilizzo](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), quell'utilizzo ti viene fatturato, quindi Claude Code porta la conversazione principale al TTL di cinque minuti, che applica una tariffa più bassa alle scritture nella cache. Per mantenere il TTL di un'ora in quel caso, [scegli tu il TTL](#choose-the-ttl-yourself).

332 332 

333<h3 id="choose-the-ttl-yourself">333<h3 id="choose-the-ttl-yourself">

334 Choose the TTL yourself334 Choose the TTL yourself

quickstart.md +76 −110

Details

4 4 

5# Guida rapida5# Guida rapida

6 6 

7> Benvenuto in Claude Code!7> Installa Claude Code nel tuo terminale, accedi e usa la CLI per esplorare il tuo codebase e apportare la tua prima modifica al codice.

8 8 

9Questa guida rapida ti permetterà di utilizzare l'assistenza alla codifica basata su IA in pochi minuti. Alla fine, comprenderai come utilizzare Claude Code per le attività di sviluppo comuni.9Questa guida rapida tratta Claude Code nel tuo terminale: l'installazione della CLI, l'accesso dalla tua prima sessione e il suo utilizzo per le attività di sviluppo comuni nel tuo progetto.

10 10 

11<h2 id="before-you-begin">11<h2 id="before-you-begin">

12 Prima di iniziare12 Prima di iniziare


15Assicurati di avere:15Assicurati di avere:

16 16 

17* Un terminale o un prompt dei comandi aperto17* Un terminale o un prompt dei comandi aperto

18 * Se non hai mai utilizzato il terminale prima, consulta la [guida del terminale](/docs/it/terminal-guide)

19* Un progetto di codice con cui lavorare18* Un progetto di codice con cui lavorare

20* Un [abbonamento Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team o Enterprise), un account [Claude Console](https://platform.claude.com/) o accesso tramite un [provider cloud supportato](/docs/it/third-party-integrations)19* Un [abbonamento Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team o Enterprise), un account [Claude Console](https://platform.claude.com/) o accesso tramite un [provider cloud supportato](/docs/it/third-party-integrations)

21 20 

22<Note>21<Note>

23 Questa guida copre il CLI del terminale. Claude Code è disponibile anche sul [web](https://claude.ai/code), come [app desktop](/docs/it/desktop), in [VS Code](/docs/it/vs-code) e [IDE JetBrains](/docs/it/jetbrains), in [Slack](/docs/it/slack) e in CI/CD con [GitHub Actions](/docs/it/github-actions) e [GitLab](/docs/it/gitlab-ci-cd). Vedi [tutte le interfacce](/docs/it/overview#use-claude-code-everywhere).22 Questi casi sono trattati in altre pagine:

23 

24 * **Non hai mai usato un terminale**: inizia dalla [guida del terminale](/docs/it/terminal-guide)

25 * **Vuoi usare Claude Code in un ambiente diverso dal terminale**: Claude Code è disponibile anche sul [web](https://claude.ai/code), come [app desktop](/docs/it/desktop), in [VS Code](/docs/it/vs-code) e [IDE JetBrains](/docs/it/jetbrains), in [Slack](/docs/it/slack) e in CI/CD con [GitHub Actions](/docs/it/github-actions) e [GitLab](/docs/it/gitlab-ci-cd). Vedi [tutte le interfacce](/docs/it/overview#use-claude-code-everywhere).

24</Note>26</Note>

25 27 

26<h2 id="step-1-install-claude-code">28<h2 id="step-1-install-claude-code">


33 <Tab title="Installazione nativa (consigliata)">35 <Tab title="Installazione nativa (consigliata)">

34 **macOS, Linux, WSL:**36 **macOS, Linux, WSL:**

35 37 

36 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}38 ```bash theme={null}

37 curl -fsSL https://claude.ai/install.sh | bash39 curl -fsSL https://claude.ai/install.sh | bash

38 ```40 ```

39 41 

42 Su Windows, il tuo prompt mostra `PS C:\` quando sei in PowerShell e `C:\` senza il `PS` quando sei in CMD.

43 

40 **Windows PowerShell:**44 **Windows PowerShell:**

41 45 

42 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}46 ```powershell theme={null}

43 irm https://claude.ai/install.ps1 | iex47 irm https://claude.ai/install.ps1 | iex

44 ```48 ```

45 49 

46 **Windows CMD:**50 **Windows CMD:**

47 51 

48 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}52 ```batch theme={null}

49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd53 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```54 ```

51 55 

52 Quando il programma di installazione termina, apri una nuova finestra del terminale ed esegui `claude --version`. Un'installazione funzionante stampa un numero di versione. Se la tua shell dice che `claude` non è trovato o non è riconosciuto, la directory di installazione non è ancora nel tuo PATH: vedi [Correggi il tuo PATH](/docs/it/troubleshoot-install#command-not-found-claude-after-installation).56 Quando il programma di installazione termina, apri una nuova finestra del terminale ed esegui `claude --version`. Un'installazione funzionante stampa un numero di versione. Se la tua shell dice che `claude` non è trovato o non è riconosciuto, la directory di installazione non è ancora nel tuo PATH: vedi [Correggi il tuo PATH](/docs/it/troubleshoot-install#command-not-found-claude-after-installation).

53 57 

54 Se vedi `The token '&&' is not a valid statement separator`, sei in PowerShell, non in CMD. Se vedi `'irm' is not recognized as an internal or external command`, sei in CMD, non in PowerShell. Il tuo prompt mostra `PS C:\` quando sei in PowerShell e `C:\` senza il `PS` quando sei in CMD.58 Se vedi `The token '&&' is not a valid statement separator`, sei in PowerShell, non in CMD. Se vedi `'irm' is not recognized as an internal or external command`, sei in CMD, non in PowerShell.

55 59 

56 Se il comando di installazione non riesce con `syntax error near unexpected token '<'`, un `403`, o un altro errore curl, consulta [Troubleshoot installation](/docs/it/troubleshoot-install#find-your-error) per abbinare l'errore a una soluzione e per metodi di installazione alternativi.60 Se il comando di installazione non riesce con `syntax error near unexpected token '<'`, un `403` o qualsiasi altro errore, consulta [Risoluzione dei problemi di installazione](/docs/it/troubleshoot-install#find-your-error) per abbinare l'errore a una soluzione e per metodi di installazione alternativi.

57 61 

58 [Git for Windows](https://git-scm.com/downloads/win) è consigliato su Windows nativo in modo che Claude Code possa utilizzare lo strumento Bash. Se Git for Windows non è installato, Claude Code utilizza PowerShell come strumento shell. Le configurazioni WSL non necessitano di Git for Windows.62 [Git for Windows](https://git-scm.com/downloads/win) è consigliato su Windows nativo in modo che Claude Code possa utilizzare lo strumento Bash. Se Git for Windows non è installato, Claude Code utilizza PowerShell come strumento shell. Le configurazioni WSL non necessitano di Git for Windows.

59 63 


63 </Tab>67 </Tab>

64 68 

65 <Tab title="Homebrew">69 <Tab title="Homebrew">

66 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}70 ```bash theme={null}

67 brew install --cask claude-code71 brew install --cask claude-code

68 ```72 ```

69 73 


75 </Tab>79 </Tab>

76 80 

77 <Tab title="WinGet">81 <Tab title="WinGet">

78 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}82 ```powershell theme={null}

79 winget install Anthropic.ClaudeCode83 winget install Anthropic.ClaudeCode

80 ```84 ```

81 85 


95 99 

96Il comando stampa un numero di versione seguito da `(Claude Code)`.100Il comando stampa un numero di versione seguito da `(Claude Code)`.

97 101 

98<h2 id="step-2-log-in-to-your-account">102<h2 id="step-2-start-your-first-session">

99 Passaggio 2: Accedi al tuo account103 Passaggio 2: Avvia la tua prima sessione

100</h2>104</h2>

101 105 

102Claude Code richiede un account per essere utilizzato. Avvia una sessione interattiva con il comando `claude` e ti verrà chiesto di effettuare l'accesso al primo utilizzo:106Apri il terminale in qualsiasi directory di progetto e avvia Claude Code:

103 107 

104```bash theme={null}108```bash theme={null}

109cd /path/to/your/project

105claude110claude

106```111```

107 112 

108Per gli account Claude subscription o Console, segui i prompt per completare l'autenticazione nel tuo browser. Se hai impostato la variabile di ambiente `ANTHROPIC_API_KEY`, Claude Code salta il prompt di accesso e ti chiede invece di approvare la chiave. Per cambiare account in seguito o effettuare nuovamente l'autenticazione, digita `/login` all'interno della sessione in esecuzione:113Sostituisci `/path/to/your/project` con il percorso del progetto su cui vuoi lavorare.

109 114 

110```text wrap theme={null}115Al primo utilizzo, Claude Code ti chiede di accedere. Per gli abbonamenti Claude o gli account Console, segui le istruzioni per completare l'autenticazione nel browser. Se hai impostato la variabile d'ambiente `ANTHROPIC_API_KEY` e approvi la chiave quando Claude Code ti chiede se usarla, Claude Code salta la richiesta di accesso.

111/login

112```

113 116 

114Puoi accedere utilizzando uno di questi tipi di account:117Puoi accedere con uno qualsiasi di questi tipi di account:

115 118 

116* [Claude Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (consigliato)119* [Claude Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (consigliato)

117* [Claude Console](https://platform.claude.com/) (accesso API con crediti prepagati). Al primo accesso, uno spazio di lavoro "Claude Code" viene creato automaticamente nella Console per il tracciamento centralizzato dei costi.120* [Claude Console](https://platform.claude.com/) (accesso API con crediti prepagati). Al primo accesso, viene creato automaticamente un workspace "Claude Code" nella Console per il monitoraggio centralizzato dei costi.

118* [Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry](/docs/it/third-party-integrations) (provider cloud aziendali)121* [Amazon Bedrock, Agent Platform di Google Cloud o Microsoft Foundry](/docs/it/third-party-integrations) (provider cloud aziendali)

119* Un [gateway di app Claude](/docs/it/claude-apps-gateway) auto-ospitato, se la tua organizzazione ne esegue uno: il tuo amministratore pre-configura l'URL del gateway, e `/login` si apre direttamente sulla schermata **Cloud gateway** per consentire l'accesso con SSO aziendale122* Un [gateway delle app Claude](/docs/it/claude-apps-gateway) self-hosted, se la tua organizzazione ne gestisce uno: il tuo amministratore preconfigura l'URL del gateway e `/login` si apre direttamente sulla schermata **Cloud gateway** per consentirti di accedere con l'SSO aziendale

120 

121Una volta effettuato l'accesso, le tue credenziali vengono archiviate e non dovrai accedere di nuovo. Scopri di più in [Gestione delle credenziali](/docs/it/authentication#credential-management).

122 

123<h2 id="step-3-start-your-first-session">

124 Passaggio 3: Avvia la tua prima sessione

125</h2>

126 

127Apri il tuo terminale in qualsiasi directory del progetto e avvia Claude Code:

128 

129```bash theme={null}

130cd /path/to/your/project

131claude

132```

133 123 

134Sostituisci `/path/to/your/project` con il percorso del progetto su cui desideri lavorare.124Una volta effettuato l'accesso, le tue credenziali vengono memorizzate e non dovrai accedere di nuovo. Scopri di più in [Gestione delle credenziali](/docs/it/authentication#credential-management).

135 125 

136Vedrai il prompt di Claude Code con la versione, il modello attuale e la directory di lavoro mostrati sopra. Digita `/help` per i comandi disponibili o `/resume` per continuare una conversazione precedente.126Viene visualizzato il prompt di Claude Code, con la versione, il modello corrente e la directory di lavoro mostrati sopra di esso. Digita `/help` per i comandi disponibili oppure `/resume` per continuare una conversazione precedente. Per cambiare account in seguito o ripetere l'autenticazione, digita `/login` all'interno della sessione in esecuzione.

137 127 

138<h2 id="step-4-ask-your-first-question">128<h2 id="step-3-ask-your-first-question">

139 Passaggio 4: Fai la tua prima domanda129 Passaggio 3: Fai la tua prima domanda

140</h2>130</h2>

141 131 

142Iniziamo con la comprensione del tuo codebase. Prova uno di questi comandi:132Prova uno di questi comandi:

143 133 

144```text wrap theme={null}134```text wrap theme={null}

145cosa fa questo progetto?135what does this project do?

146```136```

147 137 

148Claude analizzerà i tuoi file e fornirà un riepilogo. Puoi anche fare domande più specifiche:138Claude analizzerà i tuoi file e fornirà un riepilogo. Puoi anche fare domande più specifiche:

149 139 

150```text wrap theme={null}140```text wrap theme={null}

151quali tecnologie utilizza questo progetto?141what technologies does this project use?

152```142```

153 143 

154```text wrap theme={null}144```text wrap theme={null}

155dov'è il punto di ingresso principale?145where is the main entry point?

156```146```

157 147 

158```text wrap theme={null}148```text wrap theme={null}

159spiega la struttura delle cartelle149explain the folder structure

160```150```

161 151 

162Puoi anche chiedere a Claude informazioni sulle sue stesse capacità:152Puoi anche chiedere a Claude informazioni sulle sue capacità:

163 153 

164```text wrap theme={null}154```text wrap theme={null}

165cosa può fare Claude Code?155what can Claude Code do?

166```156```

167 157 

168```text wrap theme={null}158```text wrap theme={null}

169come creo skill personalizzate in Claude Code?159how do I create custom skills in Claude Code?

170```160```

171 161 

172```text wrap theme={null}162```text wrap theme={null}

173Claude Code può funzionare con Docker?163can Claude Code work with Docker?

174```164```

175 165 

176<Note>166<Note>

177 Claude Code legge i file del tuo progetto secondo le necessità. Non devi aggiungere manualmente il contesto.167 Claude Code legge i file del tuo progetto quando necessario. Non devi aggiungere manualmente il contesto.

178</Note>168</Note>

179 169 

180<h2 id="step-5-make-your-first-code-change">170<h2 id="step-4-make-your-first-code-change">

181 Passaggio 5: Fai il tuo primo cambio di codice171 Passaggio 4: Apporta la tua prima modifica al codice

182</h2>172</h2>

183 173 

184Ora facciamo in modo che Claude Code faccia un po' di codifica vera. Prova un'attività semplice:174Prova un'attività semplice:

185 175 

186```text wrap theme={null}176```text wrap theme={null}

187aggiungi una funzione hello world al file principale177add a hello world function to the main file

188```178```

189 179 

190Claude Code trova il file appropriato e ti mostra la modifica. Se chiede prima di apportare la modifica, seleziona **Sì** per approvare.180Claude Code trova il file appropriato e ti mostra la modifica. Se ti chiede conferma prima di apportare la modifica, seleziona **Yes** per approvarla.

191 181 

192Con Claude Code v2.1.283 o versioni successive, la modalità auto è la [modalità di autorizzazione iniziale integrata](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per le sessioni di terminale interattive: un classificatore esamina le azioni invece di voi, e Claude modifica la maggior parte dei file ed esegue la maggior parte dei comandi senza chiedere. Nelle versioni precedenti, la modalità auto è la modalità di autorizzazione iniziale integrata solo sui piani Pro, Max e Team. Per la sessione che avviate subito dopo l'installazione, vedere [Prima sessione dopo un'installazione o un aggiornamento](/docs/it/env-vars#first-session-after-an-install-or-upgrade).182La [modalità di permesso](/docs/it/permission-modes) della sessione stabilisce quali azioni Claude può eseguire senza chiederti prima conferma. Premi `Shift+Tab` in qualsiasi momento per cambiare la modalità di permesso della sessione in cui ti trovi.

193 

194<Note>

195 Le vostre impostazioni o la vostra organizzazione possono impostare una modalità di autorizzazione iniziale diversa. [Quale modalità di autorizzazione una sessione inizia](/docs/it/permission-modes#which-mode-a-session-starts-in) elenca cosa lo fa. Premete `Shift+Tab` in qualsiasi momento per cambiare la modalità di autorizzazione della sessione in cui vi trovate.

196</Note>

197 183 

198<h2 id="step-6-use-git-with-claude-code">184<h2 id="step-5-use-git-with-claude-code">

199 Passaggio 6: Usa Git con Claude Code185 Passaggio 5: Usa Git con Claude Code

200</h2>186</h2>

201 187 

202Claude Code rende le operazioni Git conversazionali:188Claude Code rende le operazioni Git conversazionali:

203 189 

204```text wrap theme={null}190```text wrap theme={null}

205quali file ho modificato?191what files have I changed?

206```192```

207 193 

208```text wrap theme={null}194```text wrap theme={null}

209esegui il commit delle mie modifiche con un messaggio descrittivo195commit my changes with a descriptive message

210```196```

211 197 

212Puoi anche richiedere operazioni Git più complesse:198Puoi anche chiedere operazioni Git più complesse:

213 199 

214```text wrap theme={null}200```text wrap theme={null}

215crea un nuovo branch chiamato feature/quickstart201create a new branch called feature/quickstart

216```202```

217 203 

218```text wrap theme={null}204```text wrap theme={null}

219mostrami gli ultimi 5 commit205show me the last 5 commits

220```206```

221 207 

222```text wrap theme={null}208```text wrap theme={null}

223aiutami a risolvere i conflitti di merge209help me resolve merge conflicts

224```210```

225 211 

226<h2 id="step-7-fix-a-bug-or-add-a-feature">212<h2 id="step-6-fix-a-bug-or-add-a-feature">

227 Passaggio 7: Correggi un bug o aggiungi una funzionalità213 Passaggio 6: Correggi un bug o aggiungi una funzionalità

228</h2>214</h2>

229 215 

230Claude è abile nel debug e nell'implementazione di funzionalità.216Descrivi ciò che desideri in linguaggio naturale:

231 

232Descrivi quello che vuoi in linguaggio naturale:

233 217 

234```text wrap theme={null}218```text wrap theme={null}

235aggiungi la convalida dell'input al modulo di registrazione dell'utente219add input validation to the user registration form

236```220```

237 221 

238O correggi i problemi esistenti:222Oppure correggi problemi esistenti:

239 223 

240```text wrap theme={null}224```text wrap theme={null}

241c'è un bug in cui gli utenti possono inviare moduli vuoti - correggilo225there's a bug where users can submit empty forms - fix it

242```226```

243 227 

244Claude Code farà:228<h2 id="step-7-test-out-other-common-workflows">

245 229 Passaggio 7: Prova altri workflow comuni

246* Individuare il codice rilevante

247* Comprendere il contesto

248* Implementare una soluzione

249* Eseguire i test se disponibili

250 

251<h2 id="step-8-test-out-other-common-workflows">

252 Passaggio 8: Prova altri flussi di lavoro comuni

253</h2>230</h2>

254 231 

255Ci sono diversi modi per lavorare con Claude:232Ci sono diversi modi per lavorare con Claude:


257**Refactoring del codice**234**Refactoring del codice**

258 235 

259```text wrap theme={null}236```text wrap theme={null}

260refactorizza il modulo di autenticazione per utilizzare async/await invece di callback237refactor the authentication module to use async/await instead of callbacks

261```238```

262 239 

263**Scrivi test**240**Scrivere test**

264 241 

265```text wrap theme={null}242```text wrap theme={null}

266scrivi unit test per le funzioni della calcolatrice243write unit tests for the calculator functions

267```244```

268 245 

269**Aggiorna la documentazione**246**Aggiornare la documentazione**

270 247 

271```text wrap theme={null}248```text wrap theme={null}

272aggiorna il README con le istruzioni di installazione249update the README with installation instructions

273```250```

274 251 

275**Revisione del codice**252**Code review**

276 253 

277```text wrap theme={null}254```text wrap theme={null}

278rivedi le mie modifiche e suggerisci miglioramenti255review my changes and suggest improvements

279```256```

280 257 

281<Tip>258<Tip>

282 Parla a Claude come faresti con un collega utile. Descrivi quello che vuoi ottenere e ti aiuterà a raggiungerlo.259 Parla con Claude come faresti con un collega disponibile. Descrivi cosa vuoi ottenere e ti aiuterà a raggiungere il tuo obiettivo.

283</Tip>260</Tip>

284 261 

285<h2 id="essential-commands">262<h2 id="essential-commands">


357 334 

358Ora che hai imparato le nozioni di base, esplora funzionalità più avanzate:335Ora che hai imparato le nozioni di base, esplora funzionalità più avanzate:

359 336 

360<CardGroup cols={2}>337* [Come funziona Claude Code](/docs/it/how-claude-code-works): comprendi il ciclo agentico, gli strumenti integrati e come Claude Code interagisce con il tuo progetto

361 <Card title="Come funziona Claude Code" icon="microchip" href="/docs/it/how-claude-code-works">338* [Best practice](/docs/it/best-practices): ottieni risultati migliori con prompt efficaci e configurazione del progetto

362 Comprendi il loop agentico, gli strumenti integrati e come Claude Code interagisce con il tuo progetto339* [Workflow comuni](/docs/it/common-workflows): guide passo dopo passo per attività comuni

363 </Card>340* [Estendi Claude Code](/docs/it/features-overview): personalizza con CLAUDE.md, skill, hook, MCP e altro

364 

365 <Card title="Best practices" icon="star" href="/docs/it/best-practices">

366 Ottieni risultati migliori con prompt efficaci e configurazione del progetto

367 </Card>

368 

369 <Card title="Flussi di lavoro comuni" icon="graduation-cap" href="/docs/it/common-workflows">

370 Guide passo dopo passo per attività comuni

371 </Card>

372 341 

373 <Card title="Estendi Claude Code" icon="puzzle-piece" href="/docs/it/features-overview">342Consulta la [configurazione avanzata](/docs/it/setup) per le opzioni di installazione, gli aggiornamenti manuali o le istruzioni di disinstallazione.

374 Personalizza con CLAUDE.md, skills, hooks, MCP e altro

375 </Card>

376</CardGroup>

377 343 

378<h2 id="getting-help">344<h2 id="getting-help">

379 Ottenere aiuto345 Ottenere aiuto

380</h2>346</h2>

381 347 

382* **In Claude Code**: Digita `/help` o chiedi "come faccio a..."348* **In Claude Code**: digita `/help` o fai una domanda del tipo "come faccio a..."

383* **Documentazione**: Sei qui! Sfoglia altre guide349* **Documentazione**: sfoglia le altre guide su questo sito

384* **Corsi**: Segui [Claude Code 101](https://academy.claude.com/courses/claude-code-101) e altri corsi gratuiti a tuo ritmo su [Claude Academy](https://academy.claude.com/)350* **Corsi**: Segui [Claude Code 101](https://academy.claude.com/courses/claude-code-101) e altri corsi gratuiti a tuo ritmo su [Claude Academy](https://academy.claude.com/)

385* **Community**: Unisciti al [server Discord](https://www.anthropic.com/discord) per suggerimenti e supporto351* **Community**: Unisciti al [server Discord](https://www.anthropic.com/discord) per suggerimenti e supporto

Details

365</h2>365</h2>

366 366 

367* **Una sessione remota per processo interattivo**: al di fuori della modalità server, ogni istanza di Claude Code supporta una sessione remota alla volta. Usa la [modalità server](#start-a-remote-control-session) per eseguire più sessioni simultanee da un singolo processo.367* **Una sessione remota per processo interattivo**: al di fuori della modalità server, ogni istanza di Claude Code supporta una sessione remota alla volta. Usa la [modalità server](#start-a-remote-control-session) per eseguire più sessioni simultanee da un singolo processo.

368* **Il processo locale deve continuare a funzionare**: Remote Control viene eseguito come processo locale. Se chiudi il terminale, chiudi l'app Desktop o VS Code, o altrimenti interrompi il processo `claude`, la sessione va offline finché non la [ripristini](#resume-sessions-after-stopping-the-server). Per mantenere una sessione in esecuzione su una macchina remota dopo la disconnessione da SSH, avviala all'interno di `tmux` o `screen`.368* **Il processo locale deve continuare a funzionare**: Remote Control viene eseguito come processo locale. Se chiudi il terminale, chiudi l'app Desktop o VS Code, o altrimenti interrompi il processo `claude`, la sessione va offline finché non la [ripristini](#resume-sessions-after-stopping-the-server). Se esegui `claude` da un terminale su una macchina remota, avvialo all'interno di `tmux` o `screen` per mantenere la sessione in esecuzione dopo la disconnessione da SSH.

369* **Sessioni bloccate in modalità server**: se una sessione servita da `claude remote-control` si blocca, inviale un messaggio da un dispositivo connesso. Claude Code la serve di nuovo. Non devi riavviare il server. Richiede Claude Code v2.1.238 o successivo.369* **Sessioni bloccate in modalità server**: se una sessione servita da `claude remote-control` si blocca, inviale un messaggio da un dispositivo connesso. Claude Code la serve di nuovo. Non devi riavviare il server. Richiede Claude Code v2.1.238 o successivo.

370* **Rifiuti HTTP 403 su una sessione connessa**: una volta che una sessione interattiva è connessa, Claude Code continua a riprovare per un massimo di tre minuti quando qualcosa tra la tua macchina e i server di Anthropic risponde con HTTP 403, come può accadere dopo un cambio VPN o di rete. Se i rifiuti durano più a lungo, Claude Code si disconnette e il motivo indica cosa ha rifiutato: un edge di rete, o un proxy, VPN o firewall sulla tua rete.370* **Rifiuti HTTP 403 su una sessione connessa**: una volta che una sessione interattiva è connessa, Claude Code continua a riprovare per un massimo di tre minuti quando qualcosa tra la tua macchina e i server di Anthropic risponde con HTTP 403, come può accadere dopo un cambio VPN o di rete. Se i rifiuti durano più a lungo, Claude Code si disconnette e il motivo indica cosa ha rifiutato: un edge di rete, o un proxy, VPN o firewall sulla tua rete.

371* **Interruzione di rete prolungata**: se la tua macchina è accesa ma non riesce a raggiungere la rete, quello che fai dopo dipende dalla modalità:371* **Interruzione di rete prolungata**: se la tua macchina è accesa ma non riesce a raggiungere la rete, quello che fai dopo dipende dalla modalità:

routines.md +1 −1

Details

93 Scegli un [cloud environment](/docs/it/cloud-environments) per la routine. Gli ambienti controllano a cosa ha accesso la sessione cloud:93 Scegli un [cloud environment](/docs/it/cloud-environments) per la routine. Gli ambienti controllano a cosa ha accesso la sessione cloud:

94 94 

95 * **Network access**: imposta il livello di accesso a Internet disponibile durante ogni esecuzione95 * **Network access**: imposta il livello di accesso a Internet disponibile durante ogni esecuzione

96 * **Environment variables**: fornisci valori che Claude può utilizzare durante ogni esecuzione. Sono [visibili a chiunque utilizzi l'ambiente](/docs/it/cloud-environments#what-carries-over-from-your-setup), quindi nei piani Pro e Max, archivia le chiavi per le API che Claude chiama durante un'esecuzione come [API credentials](/docs/it/cloud-environments#add-api-credentials) invece. Quella sezione elenca anche le richieste che non ricevono mai una credenziale96 * **Environment variables**: fornisci valori che Claude può utilizzare durante ogni esecuzione. Sono [visibili a chiunque utilizzi l'ambiente](/docs/it/cloud-environments#what-carries-over-from-your-setup), quindi nei piani Pro e Max archivia invece le chiavi per le API che Claude chiama durante un'esecuzione come [segreti di rete](/docs/it/cloud-environments#add-api-credentials). Quella sezione elenca anche le richieste che non ricevono mai un segreto

97 * **Setup script**: installa le dipendenze e gli strumenti di cui la routine ha bisogno. Il risultato è [cached](/docs/it/cloud-environments#environment-caching), quindi lo script non viene rieseguito su ogni sessione97 * **Setup script**: installa le dipendenze e gli strumenti di cui la routine ha bisogno. Il risultato è [cached](/docs/it/cloud-environments#environment-caching), quindi lo script non viene rieseguito su ogni sessione

98 98 

99 Un ambiente **Default** è fornito con accesso di rete **Trusted**, che consente solo l'[elenco predefinito](/docs/it/cloud-environments#default-allowed-domains) di registri di pacchetti, API di provider cloud, registri di container e domini di sviluppo comuni attraverso la rete della sessione. I connector che aggiungi alla routine raggiungono i loro servizi attraverso i server di Anthropic, quindi non hanno bisogno di modifiche all'elenco consentito. Se la tua routine ha bisogno di raggiungere i tuoi servizi direttamente o un dominio al di fuori di tale elenco, modifica l'[accesso di rete](/docs/it/cloud-environments#network-access) dell'ambiente prima di eseguire. Per utilizzare un ambiente separato, [creane uno](/docs/it/cloud-environments#configure-your-environment) prima.99 Un ambiente **Default** è fornito con accesso di rete **Trusted**, che consente solo l'[elenco predefinito](/docs/it/cloud-environments#default-allowed-domains) di registri di pacchetti, API di provider cloud, registri di container e domini di sviluppo comuni attraverso la rete della sessione. I connector che aggiungi alla routine raggiungono i loro servizi attraverso i server di Anthropic, quindi non hanno bisogno di modifiche all'elenco consentito. Se la tua routine ha bisogno di raggiungere i tuoi servizi direttamente o un dominio al di fuori di tale elenco, modifica l'[accesso di rete](/docs/it/cloud-environments#network-access) dell'ambiente prima di eseguire. Per utilizzare un ambiente separato, [creane uno](/docs/it/cloud-environments#configure-your-environment) prima.

Details

104 Script di esempio104 Script di esempio

105</h2>105</h2>

106 106 

107Lo script seguente esegue il ciclo completo contro `$CLAUDE_TEST_ENVIRONMENT_ID`, l'ID `ccpool_...` del vostro ambiente di test, mostrato nella finestra di dialogo dei dettagli dell'ambiente nella pagina di amministrazione o restituito dalla [chiamata create-environment](#create-a-dedicated-test-environment), e asserisce su una frase sentinella in ogni risposta. Eseguitelo da un checkout git del repository su cui desiderate che la sessione funzioni, dopo aver avviato un runner su questo host con l'hook di cattura installato e `E2E_REPLY_DIR` esportato.107Lo script seguente esegue il ciclo completo contro `$CLAUDE_TEST_ENVIRONMENT_ID`, l'ID `ccpool_...` del tuo ambiente di test, mostrato nella finestra di dialogo dei dettagli dell'ambiente nella pagina di amministrazione o restituito dalla [chiamata create-environment](#create-a-dedicated-test-environment), e asserisce su una frase sentinella in ogni risposta. Eseguilo da un checkout git del repository su cui desideri che la sessione lavori, dopo aver avviato un runner su questo host con l'hook di cattura installato e `E2E_REPLY_DIR` esportato. Per prima cosa, accedi con un account claude.ai sulla macchina che esegue lo script, come descritto in [Autenticarsi dalla CI](#authenticate-from-ci). Senza tale accesso, il primo invio non riesce con un errore come `Unable to get organization UUID for cloud session creation`.

108 108 

109```bash theme={null}109```bash theme={null}

110#!/usr/bin/env bash110#!/usr/bin/env bash

Details

43 <Step title="Aprire la console di amministrazione">43 <Step title="Aprire la console di amministrazione">

44 Nella console claude.ai, vai a [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).44 Nella console claude.ai, vai a [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).

45 45 

46 Se il collegamento ti reindirizza a una pagina Organization settings diversa invece della pagina Claude Code, il tuo account non dispone del ruolo richiesto. I ruoli Admin e gli altri ruoli non-Owner non possono visualizzare o modificare le impostazioni gestite, quindi chiedi a un Owner o Primary Owner della tua organizzazione di apportare la modifica. Consulta [Controllo di accesso](#access-control).46 In un'organizzazione Team o Enterprise, se la pagina indica che non hai accesso, chiedi a un [Owner o Primary Owner](#access-control) di apportare la modifica.

47 </Step>47 </Step>

48 48 

49 <Step title="Definire le impostazioni">49 <Step title="Definire le impostazioni">

sessions.md +3 −3

Details

83* Terminale: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`. Claude Code ripristina la modalità di autorizzazione in cui era la sessione, tranne nei casi nella tabella. Passa `--permission-mode` o `--dangerously-skip-permissions` per ignorare la modalità ripristinata.83* Terminale: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`. Claude Code ripristina la modalità di autorizzazione in cui era la sessione, tranne nei casi nella tabella. Passa `--permission-mode` o `--dangerously-skip-permissions` per ignorare la modalità ripristinata.

84* Non interattivo: `claude -p --resume` o `claude -p --continue`. Claude Code avvia l'esecuzione nella modalità di autorizzazione in cui una nuova esecuzione `claude -p` si avvierebbe, tranne che una sessione che è terminata in modalità piano riprende in modalità piano secondo le [condizioni di seguito](#resume-in-plan-mode-with-p).84* Non interattivo: `claude -p --resume` o `claude -p --continue`. Claude Code avvia l'esecuzione nella modalità di autorizzazione in cui una nuova esecuzione `claude -p` si avvierebbe, tranne che una sessione che è terminata in modalità piano riprende in modalità piano secondo le [condizioni di seguito](#resume-in-plan-mode-with-p).

85* VS Code: il pannello di conversazione dell'estensione. La tabella copre solo una conversazione che è terminata in modalità piano; per il resto, vedi [riprendere conversazioni passate](/docs/it/vs-code#resume-past-conversations).85* VS Code: il pannello di conversazione dell'estensione. La tabella copre solo una conversazione che è terminata in modalità piano; per il resto, vedi [riprendere conversazioni passate](/docs/it/vs-code#resume-past-conversations).

86* Selezionatore di sessioni al lancio: una sessione che selezioni dal [selezionatore di sessioni](#use-the-session-picker), che tu l'abbia aperto con `claude --resume` da solo, `claude --from-pr` o un nome che corrisponde a più di una sessione. Claude Code non ripristina la modalità di autorizzazione archiviata. Avvia la sessione nella modalità di autorizzazione in cui avvierebbe una nuova sessione dalla stessa riga di comando.86* Selezionatore di sessioni al lancio: una sessione che selezioni dal [selezionatore di sessioni](#use-the-session-picker), che tu l'abbia aperto con `claude --resume` da solo, `claude --from-pr` o un nome che corrisponde a più di una sessione. Claude Code avvia la sessione nella modalità di permesso in cui avvierebbe una nuova sessione dalla stessa riga di comando, tranne che una sessione che è terminata in plan mode riprende in plan mode a meno che tu non passi `--permission-mode`, `--dangerously-skip-permissions` o `--fork-session`. Nessun'altra modalità di permesso archiviata viene ripristinata.

87* `/resume` dentro una sessione, con o senza argomento: Claude Code non ripristina la modalità di autorizzazione archiviata. La conversazione a cui passi continua nella modalità di autorizzazione in cui è la tua sessione corrente.87* `/resume` dentro una sessione, con o senza argomento: la conversazione a cui passi continua nella modalità di permesso in cui è la tua sessione corrente, tranne che una conversazione che è terminata in plan mode riprende in plan mode, anche se hai avviato Claude Code con `--permission-mode` o `--dangerously-skip-permissions`. Se quella conversazione era già stata aperta in precedenza in questa esecuzione di Claude Code, come la conversazione in cui hai iniziato o una che hai lasciato con `/clear` o `/resume`, continua invece nella tua modalità di permesso corrente.

88 88 

89Il ripristino della modalità piano sui percorsi non interattivi e VS Code richiede Claude Code v2.1.246 o successiva. Ogni riga nomina la modalità di autorizzazione in cui la sessione è terminata, quale dei percorsi terminale, non interattivo e VS Code la riprendi, e la modalità di autorizzazione in cui Claude Code avvia la sessione ripresa.89Il ripristino della modalità piano sui percorsi non interattivi e VS Code richiede Claude Code v2.1.246 o successiva. Ogni riga nomina la modalità di autorizzazione in cui la sessione è terminata, quale dei percorsi terminale, non interattivo e VS Code la riprendi, e la modalità di autorizzazione in cui Claude Code avvia la sessione ripresa.

90 90 

91| La sessione è terminata in | Come la riprendi | Modalità di autorizzazione dopo il ripristino |91| La sessione è terminata in | Come la riprendi | Modalità di autorizzazione dopo il ripristino |

92| :- | :- | :- |92| :- | :- | :- |

93| `bypassPermissions` | Terminale | La modalità di autorizzazione in cui una nuova sessione si avvierebbe. Per [ignorare le autorizzazioni](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) di nuovo, abilitala al lancio con uno dei suoi flag di lancio o `permissions.defaultMode: "bypassPermissions"` in [impostazioni utente, `--settings` o impostazioni gestite](/docs/it/settings-reference#permissions-defaultmode) |93| `bypassPermissions` | Terminale | La modalità di autorizzazione in cui una nuova sessione si avvierebbe. Per [ignorare le autorizzazioni](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) di nuovo, abilitala al lancio con uno dei suoi flag di lancio o `permissions.defaultMode: "bypassPermissions"` in [impostazioni utente, `--settings` o impostazioni gestite](/docs/it/settings-reference#permissions-defaultmode) |

94| `plan` | Terminale | La modalità di autorizzazione in cui una nuova sessione si avvierebbe |94| `plan` | Terminale | Plan mode. Con `--fork-session`, la modalità di permesso in cui una nuova sessione si avvierebbe |

95| `auto` | Terminale | `auto`, solo quando il tuo account soddisfa ancora i [requisiti della modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) |95| `auto` | Terminale | `auto`, solo quando il tuo account soddisfa ancora i [requisiti della modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) |

96| Manuale | Terminale | Manuale quando una nuova sessione si avvierebbe in modalità auto dal [default integrato](/docs/it/permission-modes#which-mode-a-session-starts-in). Quando un `defaultMode` da un file di impostazioni [ha effetto](/docs/it/permission-modes#which-mode-a-session-starts-in), Claude Code avvia la sessione ripresa in quella modalità invece |96| Manuale | Terminale | Manuale quando una nuova sessione si avvierebbe in modalità auto dal [default integrato](/docs/it/permission-modes#which-mode-a-session-starts-in). Quando un `defaultMode` da un file di impostazioni [ha effetto](/docs/it/permission-modes#which-mode-a-session-starts-in), Claude Code avvia la sessione ripresa in quella modalità invece |

97| `plan` | Non interattivo, secondo le [condizioni di seguito](#resume-in-plan-mode-with-p) | Modalità piano |97| `plan` | Non interattivo, secondo le [condizioni di seguito](#resume-in-plan-mode-with-p) | Modalità piano |

setup.md +5 −3

Details

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 Su Windows, il tuo prompt mostra `PS C:\` quando sei in PowerShell e `C:\` senza il `PS` quando sei in CMD.

53 

52 **Windows PowerShell:**54 **Windows PowerShell:**

53 55 

54 ```powershell theme={null}56 ```powershell theme={null}


63 65 

64 Quando il programma di installazione termina, apri una nuova finestra del terminale ed esegui `claude --version`. Un'installazione funzionante stampa un numero di versione. Se la tua shell dice che `claude` non è trovato o non è riconosciuto, la directory di installazione non è ancora nel tuo PATH: vedi [Correggi il tuo PATH](/docs/it/troubleshoot-install#command-not-found-claude-after-installation).66 Quando il programma di installazione termina, apri una nuova finestra del terminale ed esegui `claude --version`. Un'installazione funzionante stampa un numero di versione. Se la tua shell dice che `claude` non è trovato o non è riconosciuto, la directory di installazione non è ancora nel tuo PATH: vedi [Correggi il tuo PATH](/docs/it/troubleshoot-install#command-not-found-claude-after-installation).

65 67 

66 Se vedi `The token '&&' is not a valid statement separator`, sei in PowerShell, non in CMD. Se vedi `'irm' is not recognized as an internal or external command`, sei in CMD, non in PowerShell. Il tuo prompt mostra `PS C:\` quando sei in PowerShell e `C:\` senza il `PS` quando sei in CMD.68 Se vedi `The token '&&' is not a valid statement separator`, sei in PowerShell, non in CMD. Se vedi `'irm' is not recognized as an internal or external command`, sei in CMD, non in PowerShell.

67 69 

68 Se il comando di installazione non riesce con `syntax error near unexpected token '<'`, un `403`, o un altro errore curl, consulta [Troubleshoot installation](/docs/it/troubleshoot-install#find-your-error) per abbinare l'errore a una soluzione e per metodi di installazione alternativi.70 Se il comando di installazione non riesce con `syntax error near unexpected token '<'`, un `403` o qualsiasi altro errore, consulta [Risoluzione dei problemi di installazione](/docs/it/troubleshoot-install#find-your-error) per abbinare l'errore a una soluzione e per metodi di installazione alternativi.

69 71 

70 [Git for Windows](https://git-scm.com/downloads/win) è consigliato su Windows nativo in modo che Claude Code possa utilizzare lo strumento Bash. Se Git for Windows non è installato, Claude Code utilizza PowerShell come strumento shell. Le configurazioni WSL non necessitano di Git for Windows.72 [Git for Windows](https://git-scm.com/downloads/win) è consigliato su Windows nativo in modo che Claude Code possa utilizzare lo strumento Bash. Se Git for Windows non è installato, Claude Code utilizza PowerShell come strumento shell. Le configurazioni WSL non necessitano di Git for Windows.

71 73 


204 206 

205Claude Code richiede un account Pro, Max, Team, Enterprise o Console. Il piano gratuito di Claude.ai non include l'accesso a Claude Code. Potete anche utilizzare Claude Code con un provider API di terze parti come [Amazon Bedrock](/docs/it/amazon-bedrock), [Google Cloud's Agent Platform](/docs/it/google-vertex-ai) o [Microsoft Foundry](/docs/it/microsoft-foundry).207Claude Code richiede un account Pro, Max, Team, Enterprise o Console. Il piano gratuito di Claude.ai non include l'accesso a Claude Code. Potete anche utilizzare Claude Code con un provider API di terze parti come [Amazon Bedrock](/docs/it/amazon-bedrock), [Google Cloud's Agent Platform](/docs/it/google-vertex-ai) o [Microsoft Foundry](/docs/it/microsoft-foundry).

206 208 

207Dopo l'installazione, accedete eseguendo `claude` e seguendo i prompt del browser. Se la variabile di ambiente `ANTHROPIC_API_KEY` è impostata, Claude Code vi chiede una volta di approvare la chiave invece di aprire un browser. Consultate [Autenticazione](/docs/it/authentication) per tutti i tipi di account e le opzioni di configurazione del team.209Dopo l'installazione, accedi eseguendo `claude` e seguendo i prompt del browser. Se hai impostato la variabile d'ambiente `ANTHROPIC_API_KEY` e approvi la chiave quando Claude Code ti chiede se utilizzarla, Claude Code salta il prompt di accesso. Consulta [Autenticazione](/docs/it/authentication) per tutti i tipi di account e le opzioni di configurazione del team.

208 210 

209<h2 id="update-claude-code">211<h2 id="update-claude-code">

210 Aggiornare Claude Code212 Aggiornare Claude Code

sub-agents.md +4 −4

Details

20* **Applicare vincoli** limitando quali strumenti un subagent può utilizzare20* **Applicare vincoli** limitando quali strumenti un subagent può utilizzare

21* **Riutilizzare configurazioni** tra progetti con subagent a livello utente21* **Riutilizzare configurazioni** tra progetti con subagent a livello utente

22* **Specializzare il comportamento** con prompt di sistema focalizzati per domini specifici22* **Specializzare il comportamento** con prompt di sistema focalizzati per domini specifici

23* **Controllare i costi** instradando le attività a modelli più veloci e economici come Haiku23* **Controllare i costi** instradando le attività a modelli più veloci ed economici come Haiku

24 24 

25Claude utilizza la descrizione di ogni subagent per decidere quando delegare le attività. Quando crea un subagent, scriva una descrizione chiara in modo che Claude sappia quando utilizzarlo.25Claude utilizza la descrizione di ogni subagent per decidere quando delegare le attività. Quando crea un subagent, scriva una descrizione chiara in modo che Claude sappia quando utilizzarlo.

26 26 


310 310 

311| Field | Required | Description |311| Field | Required | Description |

312| :- | :- | :- |312| :- | :- | :- |

313| `name` | Yes | Identificatore univoco, come `code-reviewer` o `reviewer-v2`. [Hooks](/docs/it/hooks#subagentstart) ricevono questo valore come `agent_type`. Il nome del file non deve corrispondere. I nomi non possono contenere `:`, che è riservato per [identificatori con ambito plugin](/docs/it/plugins/overview) come `my-plugin:reviewer`. Claude Code non carica un file il cui nome contiene uno e registra un errore nel log di debug. Prima di v2.1.218, tali nomi erano accettati |313| `name` | Sì | Identificatore univoco di massimo 256 caratteri, come `code-reviewer` o `reviewer-v2`. Gli [hook](/docs/it/hooks#subagentstart) ricevono questo valore come `agent_type`. Non è necessario che il nome del file corrisponda. I nomi non possono contenere `:`, che è riservato agli [identificatori con ambito del plugin](/docs/it/plugins/overview) come `my-plugin:reviewer` |

314| `description` | Yes | Quando Claude dovrebbe delegare a questo subagent |314| `description` | Yes | Quando Claude dovrebbe delegare a questo subagent |

315| `tools` | No | [Strumenti](#available-tools) che il subagent può utilizzare, come una stringa separata da virgole come `Read, Grep, Bash` o un elenco YAML. Eredita ogni strumento disponibile per i subagent se omesso. Se nessuna voce nell'elenco si risolve in uno strumento, il subagent di solito [non si avvia](/docs/it/errors#agent-would-be-spawned-with-zero-tools) con un errore che nomina le voci. Per precaricare Skills nel contesto, usi il campo `skills` piuttosto che elencare `Skill` qui |315| `tools` | No | [Strumenti](#available-tools) che il subagent può utilizzare, come una stringa separata da virgole come `Read, Grep, Bash` o un elenco YAML. Eredita ogni strumento disponibile per i subagent se omesso. Se nessuna voce nell'elenco si risolve in uno strumento, il subagent di solito [non si avvia](/docs/it/errors#agent-would-be-spawned-with-zero-tools) con un errore che nomina le voci. Per precaricare Skills nel contesto, usi il campo `skills` piuttosto che elencare `Skill` qui |

316| `disallowedTools` | No | Strumenti da negare, rimossi dall'elenco ereditato o specificato. Stesso formato di `tools`. Una voce con uno specificatore, come `Bash(git push *)`, comunque [rimuove lo strumento intero](#available-tools) |316| `disallowedTools` | No | Strumenti da negare, rimossi dall'elenco ereditato o specificato. Stesso formato di `tools`. Una voce con uno specificatore, come `Bash(git push *)`, comunque [rimuove lo strumento intero](#available-tools) |


348 348 

349* **No `name`**: Claude Code tratta il file come documentazione mantenuta accanto ai suoi agenti.349* **No `name`**: Claude Code tratta il file come documentazione mantenuta accanto ai suoi agenti.

350* **Un `---` di apertura che non è la prima riga del file**: Claude Code legge il file come non avente frontmatter e lo tratta come documentazione.350* **Un `---` di apertura che non è la prima riga del file**: Claude Code legge il file come non avente frontmatter e lo tratta come documentazione.

351* **Un `name` che inizia con `-` o contiene `:`**: Claude Code salta il file e scrive un errore nel log di debug. Consulti la riga `name` nella tabella sopra.351* **Un `name` che inizia con `-`, contiene `:` o supera i 256 caratteri**: Claude Code salta il file e scrive un errore nel log di debug.

352* **Un `name` ma nessuna `description`**: Claude Code salta il file e scrive il motivo nel log di debug.352* **Un `name` ma nessuna `description`**: Claude Code salta il file e scrive il motivo nel log di debug.

353* **YAML che non analizza**: Claude Code non legge alcun campo dal file, lo salta e scrive l'errore di analisi nel log di debug.353* **YAML che non analizza**: Claude Code non legge alcun campo dal file, lo salta e scrive l'errore di analisi nel log di debug.

354 354 


1279| Permissions | I prompt emergono nel suo terminale | [I prompt emergono nella sua sessione principale](#run-subagents-in-foreground-or-background) quando viene eseguito in background |1279| Permissions | I prompt emergono nel suo terminale | [I prompt emergono nella sua sessione principale](#run-subagents-in-foreground-or-background) quando viene eseguito in background |

1280| Prompt cache | Condiviso con la sessione principale | Cache separata |1280| Prompt cache | Condiviso con la sessione principale | Cache separata |

1281 1281 

1282Poiché il prompt di sistema di un fork e le definizioni di strumenti sono identici al principale, la sua prima richiesta riutilizza la [prompt cache](/docs/it/prompt-caching#subagents-and-the-cache) del principale. Questo rende il fork più economico rispetto alla generazione di un subagent fresco per attività che necessitano dello stesso contesto.1282Poiché il prompt di sistema e le definizioni degli strumenti di un fork sono identici a quelli del principale, la sua prima richiesta riutilizza la [prompt cache](/docs/it/prompt-caching#subagents-and-the-cache) del principale. Grazie a questo riutilizzo, un fork costa meno di un subagent nuovo per le attività che necessitano dello stesso contesto.

1283 1283 

1284Quando Claude genera un fork tramite lo strumento Agent, può passare `isolation: "worktree"` in modo che le modifiche ai file del fork vengano scritte in un git worktree separato invece del suo checkout. Un fork non può generare ulteriori fork.1284Quando Claude genera un fork tramite lo strumento Agent, può passare `isolation: "worktree"` in modo che le modifiche ai file del fork vengano scritte in un git worktree separato invece del suo checkout. Un fork non può generare ulteriori fork.

1285 1285 

vs-code.md +1 −1

Details

606| `environmentVariables` | `[]` | Imposta le variabili d'ambiente per il processo Claude. Per la configurazione condivisa usa invece le impostazioni di Claude Code. Una voce [`CLAUDE_CONFIG_DIR`](/docs/it/env-vars) si applica solo quando il suo valore è un percorso assoluto; l'estensione non espande `~` e ignora un valore relativo. |606| `environmentVariables` | `[]` | Imposta le variabili d'ambiente per il processo Claude. Per la configurazione condivisa usa invece le impostazioni di Claude Code. Una voce [`CLAUDE_CONFIG_DIR`](/docs/it/env-vars) si applica solo quando il suo valore è un percorso assoluto; l'estensione non espande `~` e ignora un valore relativo. |

607| `disableLoginPrompt` | `false` | Salta i prompt di autenticazione (per configurazioni di provider di terze parti) |607| `disableLoginPrompt` | `false` | Salta i prompt di autenticazione (per configurazioni di provider di terze parti) |

608| `allowDangerouslySkipPermissions` | `false` | Aggiunge Bypass permissions al selettore di modalità. Utilizzarlo solo in sandbox senza accesso a Internet. |608| `allowDangerouslySkipPermissions` | `false` | Aggiunge Bypass permissions al selettore di modalità. Utilizzarlo solo in sandbox senza accesso a Internet. |

609| `claudeProcessWrapper` | - | Eseguibile utilizzato per avviare il processo Claude. Il percorso binario in bundle viene passato come argomento quando presente. Impostarlo su un binario `claude` installato separatamente se la build dell'estensione non ne include uno per la vostra piattaforma. In una configurazione con wrapper, le conversazioni iniziano in modalità Manual a meno che non impostiate `initialPermissionMode` o non abbiate scelto Manual, Edit automatically o Auto in una conversazione precedente, perché l'estensione salta i passaggi delle impostazioni e del valore predefinito incorporato lì; vedere [Switch permission modes](/docs/it/permission-modes#switch-permission-modes). Un errore "Unsupported platform" all'attivazione significa che nessun binario è in bundle per la vostra piattaforma; vedere [which platforms have prebuilt binaries](/docs/it/troubleshoot-install#native-binary-not-found-after-npm-install). |609| `claudeProcessWrapper` | - | Eseguibile utilizzato per avviare il processo Claude. Il percorso del binario in bundle viene passato come argomento quando presente. Impostalo su un binario `claude` installato separatamente se la build dell'estensione non ne include uno per la tua piattaforma. |

610 610 

611<h2 id="use-a-screen-reader">611<h2 id="use-a-screen-reader">

612 Utilizzare un lettore di schermo612 Utilizzare un lettore di schermo

worktrees.md +3 −1

Details

6 6 

7> Isolare sessioni parallele di Claude Code in worktrees git separati in modo che i cambiamenti non si scontrino. Copre il flag `--worktree`, l'isolamento dei subagent, `.worktreeinclude`, la pulizia e gli hook VCS non-git.7> Isolare sessioni parallele di Claude Code in worktrees git separati in modo che i cambiamenti non si scontrino. Copre il flag `--worktree`, l'isolamento dei subagent, `.worktreeinclude`, la pulizia e gli hook VCS non-git.

8 8 

9Un [git worktree](https://git-scm.com/docs/git-worktree) è una directory di lavoro separata con i propri file e branch, che condivide la stessa cronologia del repository e il remote come il vostro checkout principale. Eseguire ogni sessione di Claude Code nel proprio worktree significa che le modifiche in una sessione non toccheranno mai i file in un'altra, quindi una sessione può costruire una funzionalità mentre una seconda corregge un bug.9Un [git worktree](https://git-scm.com/docs/git-worktree) è una directory di lavoro separata con i propri file e branch, che condivide la stessa cronologia del repository e lo stesso remote del tuo checkout principale. Eseguire ogni sessione di Claude Code nel proprio worktree le fornisce una copia separata dei file da modificare, quindi una sessione può sviluppare una funzionalità mentre una seconda corregge un bug.

10 10 

11<Note>11<Note>

12 I worktree richiedono un repository git; per altri sistemi di controllo versione, [configurate gli hook per sostituire la logica git](#non-git-version-control). Nell'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions), selezionate l'opzione **worktree** quando avviate una sessione per darle il proprio worktree.12 I worktree richiedono un repository git; per altri sistemi di controllo versione, [configurate gli hook per sostituire la logica git](#non-git-version-control). Nell'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions), selezionate l'opzione **worktree** quando avviate una sessione per darle il proprio worktree.


104* **Reindirizzamenti git**: Claude Code blocca un comando Bash o Monitor che reindirizza git nel checkout principale. Il reindirizzamento può provenire attraverso `git -C`, `--git-dir`, una variabile `GIT_DIR` o `GIT_WORK_TREE`, o un `cd` nel checkout principale prima di eseguire git.104* **Reindirizzamenti git**: Claude Code blocca un comando Bash o Monitor che reindirizza git nel checkout principale. Il reindirizzamento può provenire attraverso `git -C`, `--git-dir`, una variabile `GIT_DIR` o `GIT_WORK_TREE`, o un `cd` nel checkout principale prima di eseguire git.

105* **Forma del comando**: Claude Code blocca un comando Bash o Monitor quando non può verificare dal testo del comando che qualsiasi git che il comando esegue rimane all'interno del worktree. Questo accade, ad esempio, quando il nome del comando è calcolato a runtime, quando la sintassi non può essere analizzata, o quando un'espansione come `${!name}` o `${ command; }` potrebbe eseguire un comando che il testo non esplicita. Claude Code dice a Claude come riscrivere il comando rifiutato, come dividerlo in comandi semplici e separati. Non potete disattivare questo controllo.105* **Forma del comando**: Claude Code blocca un comando Bash o Monitor quando non può verificare dal testo del comando che qualsiasi git che il comando esegue rimane all'interno del worktree. Questo accade, ad esempio, quando il nome del comando è calcolato a runtime, quando la sintassi non può essere analizzata, o quando un'espansione come `${!name}` o `${ command; }` potrebbe eseguire un comando che il testo non esplicita. Claude Code dice a Claude come riscrivere il comando rifiutato, come dividerlo in comandi semplici e separati. Non potete disattivare questo controllo.

106 106 

107Questi controlli leggono il percorso a cui è destinata una modifica, la directory in cui viene eseguito un comando e il testo del comando. Nessuno di essi tiene traccia di quali file scrive un comando della shell, quindi un comando che scrive nel checkout principale senza eseguirvi git, come `cp` o un reindirizzamento della shell, non viene rifiutato da questi controlli. Claude Code tratta quel comando come qualsiasi altro comando della shell, quindi se viene eseguito o se ti chiede conferma dipende dalla tua [modalità di permesso](/docs/it/permission-modes) e dalle tue regole.

108 

107I controlli si applicano al repository da cui avete lanciato Claude Code. Coprono anche il checkout principale da cui un worktree collegato è collegato. Per i comandi PowerShell, Claude Code applica solo il controllo della directory di lavoro.109I controlli si applicano al repository da cui avete lanciato Claude Code. Coprono anche il checkout principale da cui un worktree collegato è collegato. Per i comandi PowerShell, Claude Code applica solo il controllo della directory di lavoro.

108 110 

109Claude vede ogni rifiuto come un errore di strumento che nomina il worktree e dice come procedere. Per un comando rifiutato, consultate [cosa significa il messaggio di rifiuto e come cancellarlo](/docs/it/errors#command-blocked-by-the-worktree-isolation-checks).111Claude vede ogni rifiuto come un errore di strumento che nomina il worktree e dice come procedere. Per un comando rifiutato, consultate [cosa significa il messaggio di rifiuto e come cancellarlo](/docs/it/errors#command-blocked-by-the-worktree-isolation-checks).