SpyBara
Go Premium

Documentation 2026-10-26 22:57 UTC to 2026-10-27 22:59 UTC

68 files changed +1,154 −820. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

79| `Permission Required:` | Una richiesta di permesso in attesa della tua risposta |79| `Permission Required:` | Una richiesta di permesso in attesa della tua risposta |

80| `Cost:` | Il riepilogo dei costi della sessione quando Claude Code esce, se il tuo account [mostra i costi](https://code.claude.com/docs/it/costs.md) |80| `Cost:` | Il riepilogo dei costi della sessione quando Claude Code esce, se il tuo account [mostra i costi](https://code.claude.com/docs/it/costs.md) |

81 81 

82Claude Code mantiene il cursore del terminale sul cursore di input, in modo che il comando di lettura della riga corrente del tuo lettore di schermo legga il prompt che stai modificando.82Claude Code mantiene il cursore del terminale sul cursore di input, in modo che il comando di lettura della riga corrente del tuo lettore di schermo legga il prompt che stai modificando. Mentre digiti alla fine della riga di input, o premi `Backspace` lì, Claude Code scrive solo i caratteri che cambiano. Il tuo lettore di schermo ripete solo quei caratteri.

83 

84Mentre digiti alla fine della riga di input, o premi `Backspace` lì, Claude Code scrive solo i caratteri che cambiano. Il tuo lettore di schermo ripete solo quei caratteri.

85 83 

86Quando elimini una parola o una riga con una delle [scorciatoie di modifica del testo](https://code.claude.com/docs/it/interactive-mode.md#text-editing), Claude Code annuncia il testo eliminato:84Quando elimini una parola o una riga con una delle [scorciatoie di modifica del testo](https://code.claude.com/docs/it/interactive-mode.md#text-editing), Claude Code annuncia il testo eliminato:

87 85 

admin-setup.md +1 −0

Details

191* [Server-managed settings](https://code.claude.com/docs/it/server-managed-settings.md): fornire la policy gestita dalla console di amministrazione Claude191* [Server-managed settings](https://code.claude.com/docs/it/server-managed-settings.md): fornire la policy gestita dalla console di amministrazione Claude

192* [All settings](https://code.claude.com/docs/it/settings-reference.md): ogni chiave di impostazione, con la posizione e un esempio192* [All settings](https://code.claude.com/docs/it/settings-reference.md): ogni chiave di impostazione, con la posizione e un esempio

193* [Which value Claude Code uses](https://code.claude.com/docs/it/settings.md#which-value-claude-code-uses): le regole di precedenza tra le impostazioni gestite, di progetto, locali e utente193* [Which value Claude Code uses](https://code.claude.com/docs/it/settings.md#which-value-claude-code-uses): le regole di precedenza tra le impostazioni gestite, di progetto, locali e utente

194* [Manage plugins for your organization](https://code.claude.com/docs/it/plugins/org.md): installa plugin condivisi su ogni macchina tramite le impostazioni gestite

194* [Monorepos and large repos](https://code.claude.com/docs/it/large-codebases.md): modelli di configurazione per directory per le organizzazioni che distribuiscono in un monorepo195* [Monorepos and large repos](https://code.claude.com/docs/it/large-codebases.md): modelli di configurazione per directory per le organizzazioni che distribuiscono in un monorepo

195* [Amazon Bedrock](https://code.claude.com/docs/it/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/it/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/it/microsoft-foundry.md): distribuzione specifica del provider196* [Amazon Bedrock](https://code.claude.com/docs/it/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/it/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/it/microsoft-foundry.md): distribuzione specifica del provider

196* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, gestione dei posti e playbook di rollout197* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, gestione dei posti e playbook di rollout

Details

41 41 

42Erano quattro turni: tre con chiamate di strumenti, uno con risposta solo di testo finale.42Erano quattro turni: tre con chiamate di strumenti, uno con risposta solo di testo finale.

43 43 

44Potete limitare il ciclo con `max_turns` / `maxTurns`, che conta solo i turni di utilizzo degli strumenti. Ad esempio, `max_turns=2` nel ciclo precedente si sarebbe fermato prima del passaggio di modifica. Potete anche utilizzare `max_budget_usd` / `maxBudgetUsd` per limitare i turni in base a una soglia di spesa.44Puoi limitare il ciclo con `max_turns` / `maxTurns`. Conta ogni turno con chiamate agli strumenti, più uno per la risposta finale solo di testo. Senza quel turno aggiuntivo, l'esecuzione termina con un `ResultMessage` di sottotipo `error_max_turns` e nessuna risposta finale. Ad esempio, `max_turns=2` nel ciclo precedente si sarebbe fermato prima del passaggio di modifica. Puoi anche utilizzare `max_budget_usd` / `maxBudgetUsd` per limitare i turni in base a una soglia di spesa.

45 45 

46Senza limiti, il ciclo viene eseguito fino a quando Claude non termina da solo, il che va bene per attività ben definite ma può durare a lungo su prompt aperti ("migliora questo codebase"). Impostare un budget è una buona impostazione predefinita per gli agenti di produzione. Vedere [Turni e budget](#turns-and-budget) di seguito per il riferimento alle opzioni.46Senza limiti, il ciclo viene eseguito fino a quando Claude non termina da solo, il che va bene per attività ben definite ma può durare a lungo su prompt aperti ("migliora questo codebase"). Impostare un budget è una buona impostazione predefinita per gli agenti di produzione. Vedere [Turni e budget](#turns-and-budget) di seguito per il riferimento alle opzioni.

47 47 


191 191 

192| Opzione | Cosa controlla | Predefinito |192| Opzione | Cosa controlla | Predefinito |

193| :- | :- | :- |193| :- | :- | :- |

194| Max turni (`max_turns` / `maxTurns`) | Massimi round trip di utilizzo degli strumenti | Nessun limite |194| Max turni (`max_turns` / `maxTurns`) | Numero massimo di [turni](#turns-and-messages) | Nessun limite |

195| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Spesa stimata alla quale il ciclo si ferma | Nessun limite |195| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Spesa stimata alla quale il ciclo si ferma | Nessun limite |

196 196 

197Quando uno dei due limiti viene raggiunto, l'SDK restituisce un `ResultMessage` con un sottotipo di errore corrispondente (`error_max_turns` o `error_max_budget_usd`). Vedere [Gestire il risultato](#handle-the-result) per come controllare questi sottotipi e [`ClaudeAgentOptions`](https://code.claude.com/docs/it/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/it/agent-sdk/typescript#options) per la sintassi.197Quando uno dei due limiti viene raggiunto, l'SDK restituisce un `ResultMessage` con un sottotipo di errore corrispondente (`error_max_turns` o `error_max_budget_usd`). Vedere [Gestire il risultato](#handle-the-result) per come controllare questi sottotipi e [`ClaudeAgentOptions`](https://code.claude.com/docs/it/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/it/agent-sdk/typescript#options) per la sintassi.

Details

161 161 

162Entrambi i linguaggi hanno gli stessi setter:162Entrambi i linguaggi hanno gli stessi setter:

163 163 

164* **`setModel()` / `set_model()`**: cambia il modello. Chiamatelo senza modello per passare al [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md#default-model-setting) piuttosto che al `model` che avete passato nelle opzioni.164* **`setModel()` / `set_model()`**: cambia il modello. Chiamalo senza modello per passare al [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md#default-model-setting) anziché al `model` che hai passato nelle opzioni. Se la sessione è in modalità auto e passi a un modello che la modalità auto non supporta, la sessione passa alla modalità `default`. Per tornare alla modalità auto, consulta [Modalità auto (`auto`)](https://code.claude.com/docs/it/agent-sdk/permissions#auto-mode-auto).

165* **`setPermissionMode()` / `set_permission_mode()`**: cambia la modalità di autorizzazione165* **`setPermissionMode()` / `set_permission_mode()`**: cambia la modalità di autorizzazione

166 166 

167TypeScript ha anche `applyFlagSettings()` e `updateSettings()`:167TypeScript ha anche `applyFlagSettings()` e `updateSettings()`:

Details

192 192 

193Il container necessita del runtime del linguaggio del tuo SDK:193Il container necessita del runtime del linguaggio del tuo SDK:

194 194 

195* Python 3.10+ per l'SDK Python, o Node.js 18+ per l'SDK TypeScript195* Python 3.10+ per l'SDK Python, o Node.js 18.14+ per l'SDK TypeScript

196* Sia gli SDK TypeScript che Python includono un binario Claude Code nativo per la maggior parte delle installazioni, e la CLI generata non necessita di un'installazione separata di Node.js. Vedi la [nota di installazione della guida rapida](https://code.claude.com/docs/it/agent-sdk/quickstart.md) per le installazioni che necessitano di un'installazione separata di Claude Code nativo.196* Sia gli SDK TypeScript che Python includono un binario Claude Code nativo per la maggior parte delle installazioni, e la CLI generata non necessita di un'installazione separata di Node.js. Vedi la [nota di installazione della guida rapida](https://code.claude.com/docs/it/agent-sdk/quickstart.md) per le installazioni che necessitano di un'installazione separata di Claude Code nativo.

197 197 

198Il binario incluso è bloccato alla versione del pacchetto SDK, quindi aggiornare l'SDK è il modo per aggiornare la CLI. L'SDK segue semver: accetta continuamente le versioni patch e rivedi il changelog [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) o [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) prima di accettare una versione minore.198Il binario incluso è bloccato alla versione del pacchetto SDK, quindi aggiornare l'SDK è il modo per aggiornare la CLI. L'SDK segue semver: accetta continuamente le versioni patch e rivedi il changelog [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) o [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) prima di accettare una versione minore.


335 335 

336| Limitazione | Cosa fare |336| Limitazione | Cosa fare |

337| - | - |337| - | - |

338| Nessun timeout di sessione di primo livello | Una sessione non scade automaticamente. Impostare `maxTurns` in TypeScript o `max_turns` in Python per limitare quanti round trip di utilizzo di strumenti l'agente esegue prima di fermarsi. |338| Nessun timeout di sessione di primo livello | Una sessione non scade automaticamente. Imposta `maxTurns` in TypeScript o `max_turns` in Python per limitare quanti [turni](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#turns-and-messages) l'agente esegue prima di fermarsi. |

339| Crescita della memoria durante sessioni lunghe | Limitare la lunghezza della sessione o riciclare i sottoprocessi periodicamente. Vedere [Scaling e concorrenza](#scaling-and-concurrency). |339| Crescita della memoria durante sessioni lunghe | Limitare la lunghezza della sessione o riciclare i sottoprocessi periodicamente. Vedere [Scaling e concorrenza](#scaling-and-concurrency). |

340| I grandi fanout di subagent paralleli possono raggiungere i limiti di velocità | Suddividere il lavoro in batch più piccoli anziché emettere un'unica distribuzione ampia. |340| I grandi fanout di subagent paralleli possono raggiungere i limiti di velocità | Suddividere il lavoro in batch più piccoli anziché emettere un'unica distribuzione ampia. |

341| Nessuna scadenza wall-clock per subagent | Limitare ogni [subagent](https://code.claude.com/docs/it/agent-sdk/subagents.md) con `maxTurns` nella sua `AgentDefinition`. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` imposta un watchdog di stallo che si attiva quando un subagent smette di produrre output; non è una scadenza di runtime totale. |341| Nessuna scadenza wall-clock per subagent | Limitare ogni [subagent](https://code.claude.com/docs/it/agent-sdk/subagents.md) con `maxTurns` nella sua `AgentDefinition`. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` imposta un watchdog di stallo che si attiva quando un subagent smette di produrre output; non è una scadenza di runtime totale. |

Details

425 425 

426Imposta `includeGitInstructions` a `false` per escludere le istruzioni integrate di commit e pull request, che fanno parte della descrizione dello strumento Bash e raggiungono Claude anche con un `systemPrompt` personalizzato. Con il valore predefinito minimo, un `systemPrompt` personalizzato o un agente personalizzato del thread principale che ha un proprio prompt, tuttavia, la sessione si avvia senza lo snapshot dello stato git.426Imposta `includeGitInstructions` a `false` per escludere le istruzioni integrate di commit e pull request, che fanno parte della descrizione dello strumento Bash e raggiungono Claude anche con un `systemPrompt` personalizzato. Con il valore predefinito minimo, un `systemPrompt` personalizzato o un agente personalizzato del thread principale che ha un proprio prompt, tuttavia, la sessione si avvia senza lo snapshot dello stato git.

427 427 

428Se imposti `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code invia anche le menzioni di file `@` come testo semplice invece di espanderle nel contenuto del file. L'elenco dei subagent disponibili e le notifiche delle attività in background arrivano comunque. Per impedire solo l'espansione delle menzioni di file `@`, imposta invece [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](https://code.claude.com/docs/it/env-vars#variables), su Claude Code v2.1.299 o versioni successive. Claude riceve quindi i percorsi menzionati insieme a una nota per leggerli con i suoi strumenti per i file.428* Se imposti `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code invia anche le menzioni di file `@` come testo semplice invece di espanderle nel contenuto del file. L'elenco dei subagent disponibili e le notifiche delle attività in background arrivano comunque.

429* Per impedire solo l'espansione delle menzioni di file `@`, imposta invece [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](https://code.claude.com/docs/it/env-vars#variables), su Claude Code v2.1.299 o versioni successive. Claude riceve quindi i percorsi menzionati insieme a una nota per leggerli con i suoi strumenti per i file, e i tuoi hook `PreToolUse` vedono ogni lettura di file come una chiamata a uno strumento.

429 430 

430L'esempio seguente è per un agente che porta le sue regole di commit in `append`. Imposta entrambe le chiavi `attribution` a stringhe vuote per rimuovere il trailer e il footer, e disattiva `includeGitInstructions` in modo che le istruzioni del flusso di lavoro di commit di Claude Code non competano con le vostre:431L'esempio seguente è per un agente che porta le sue regole di commit in `append`. Imposta entrambe le chiavi `attribution` a stringhe vuote per rimuovere il trailer e il footer, e disattiva `includeGitInstructions` in modo che le istruzioni del flusso di lavoro di commit di Claude Code non competano con le vostre:

431 432 

Details

43Applicare la [modalità di permesso](#permission-modes) attiva:43Applicare la [modalità di permesso](#permission-modes) attiva:

44 44 

45* In modalità `bypassPermissions`, Claude Code approva tutto ciò che raggiunge questo passaggio tranne le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute e i comandi Bash segnalati con [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/it/permission-modes#dangerous-rm-operation-not-ruled-out), che passano invece oltre.45* In modalità `bypassPermissions`, Claude Code approva tutto ciò che raggiunge questo passaggio tranne le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute e i comandi Bash segnalati con [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/it/permission-modes#dangerous-rm-operation-not-ruled-out), che passano invece oltre.

46 * Per eseguire queste rimozioni senza alcuna richiesta di conferma, consulta [Disattivare la richiesta di conferma per la rimozione di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

46* In modalità `acceptEdits`, Claude Code approva le operazioni su file elencate in [Modalità accetta modifiche](#accept-edits-mode-acceptedits).47* In modalità `acceptEdits`, Claude Code approva le operazioni su file elencate in [Modalità accetta modifiche](#accept-edits-mode-acceptedits).

47* In modalità `plan`, Claude Code invia gli strumenti di modifica file al tuo callback `canUseTool` indipendentemente dalle regole allow.48* In modalità `plan`, Claude Code invia gli strumenti di modifica file al tuo callback `canUseTool` indipendentemente dalle regole allow.

48* In altre modalità, la richiesta passa oltre.49* In altre modalità, la richiesta passa oltre.


305> `allowed_tools` non vincola questa modalità. Ogni strumento è approvato, non solo quelli che avete elencato. Questi controlli si applicano comunque:306> `allowed_tools` non vincola questa modalità. Ogni strumento è approvato, non solo quelli che avete elencato. Questi controlli si applicano comunque:

306>307>

307> * Le regole deny, le regole esplicite `ask` e gli hook vengono valutati prima del controllo della modalità e possono comunque bloccare uno strumento.308> * Le regole deny, le regole esplicite `ask` e gli hook vengono valutati prima del controllo della modalità e possono comunque bloccare uno strumento.

308> * Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente e le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute continuano a passare al tuo callback `canUseTool`. Il controllo che riconosce queste rimozioni [può non individuare alcuni comandi](https://code.claude.com/docs/it/permission-modes.md#critical-paths). Al di fuori di una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), passano al callback anche le chiamate agli strumenti personalizzati che la tua applicazione [contrassegna come `always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools).309> * Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente e le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute continuano a passare al tuo callback `canUseTool`. Il controllo che riconosce queste rimozioni [può non individuare alcuni comandi](https://code.claude.com/docs/it/permission-modes.md#critical-paths), e puoi [disattivare la richiesta di conferma per la rimozione di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). Al di fuori di una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), passano al callback anche le chiamate agli strumenti personalizzati che la tua applicazione [contrassegna come `always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools).

309> * Le [protezioni della messaggistica tra sessioni](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) si applicano comunque.310> * Le [protezioni della messaggistica tra sessioni](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) si applicano comunque.

310 311 

311#### Modalità pianificazione (`plan`)312#### Modalità pianificazione (`plan`)

Details

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

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

882| `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 |882| `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 |

883| `max_turns` | `int \| None` | `None` | Numero massimo di turni agentici (round trip di utilizzo degli strumenti) |883| `max_turns` | `int \| None` | `None` | Numero massimo di [turni](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#turns-and-messages) agentici |

884| `max_budget_usd` | `float \| None` | `None` | Interrompi la query quando la stima del costo lato client raggiunge questo valore in USD. La stima può superare questo valore, quindi [lascia un margine](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#budget-headroom). 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](https://code.claude.com/docs/it/agent-sdk/cost-tracking.md) |884| `max_budget_usd` | `float \| None` | `None` | Interrompi la query quando la stima del costo lato client raggiunge questo valore in USD. La stima può superare questo valore, quindi [lascia un margine](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#budget-headroom). 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](https://code.claude.com/docs/it/agent-sdk/cost-tracking.md) |

885| `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](https://code.claude.com/docs/it/permissions.md#bash-rule-limits). Vedi [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |885| `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](https://code.claude.com/docs/it/permissions.md#bash-rule-limits). Vedi [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |

886| `enable_file_checkpointing` | `bool` | `False` | Abilita il tracciamento dei cambiamenti dei file per il rewind. Vedi [File checkpointing](https://code.claude.com/docs/it/agent-sdk/file-checkpointing.md) |886| `enable_file_checkpointing` | `bool` | `False` | Abilita il tracciamento dei cambiamenti dei file per il rewind. Vedi [File checkpointing](https://code.claude.com/docs/it/agent-sdk/file-checkpointing.md) |


2568 2568 

2569### Agent2569### Agent

2570 2570 

2571**Nome dello strumento:** `Agent`. Il nome precedente `Task` è ancora accettato come alias, e l'elenco `tools` nel [`SystemMessage`](#systemmessage) di init riporta questo strumento come `Task` per compatibilità all'indietro.2571**Nome dello strumento:** `Agent`. Il nome precedente `Task` è ancora accettato come alias quando questo strumento è disponibile per la sessione.

2572 

2573L'elenco `tools` nel [`SystemMessage`](#systemmessage) di init riporta questo strumento come `Task` per compatibilità all'indietro.

2572 2574 

2573**Input:**2575**Input:**

2574 2576 


3642| `deniedDomains` | `list[str]` | `[]` | Nomi di dominio a cui i processi in sandbox non possono accedere. Ha la precedenza su `allowedDomains` |3644| `deniedDomains` | `list[str]` | `[]` | Nomi di dominio a cui i processi in sandbox non possono accedere. Ha la precedenza su `allowedDomains` |

3643| `allowManagedDomainsOnly` | `bool` | `False` | Solo impostazioni gestite: quando impostato nelle impostazioni gestite, ignora `allowedDomains` e `WebFetch(domain:...)` consenti le regole da fonti di impostazioni non gestite. Non ha effetto quando impostato tramite opzioni SDK |3645| `allowManagedDomainsOnly` | `bool` | `False` | Solo impostazioni gestite: quando impostato nelle impostazioni gestite, ignora `allowedDomains` e `WebFetch(domain:...)` consenti le regole da fonti di impostazioni non gestite. Non ha effetto quando impostato tramite opzioni SDK |

3644| `allowUnixSockets` | `list[str]` | `[]` | Solo macOS: percorsi dei socket Unix a cui i processi possono accedere, come il socket Docker. Ignorato su Linux |3646| `allowUnixSockets` | `list[str]` | `[]` | Solo macOS: percorsi dei socket Unix a cui i processi possono accedere, come il socket Docker. Ignorato su Linux |

3645| `allowAllUnixSockets` | `bool` | `False` | Consenti l'accesso a tutti i socket Unix |3647| `allowAllUnixSockets` | `bool` | `False` | Consenti l'accesso a tutti i socket Unix e, su Linux, ai socket VM (`AF_VSOCK`) |

3646| `allowLocalBinding` | `bool` | `False` | Consenti ai processi di associarsi alle porte locali (ad es. per server di sviluppo) |3648| `allowLocalBinding` | `bool` | `False` | Consenti ai processi di associarsi alle porte locali (ad es. per server di sviluppo) |

3647| `allowMachLookup` | `list[str]` | `[]` | Solo macOS: nomi dei servizi XPC/Mach da consentire. Supporta un carattere jolly finale |3649| `allowMachLookup` | `list[str]` | `[]` | Solo macOS: nomi dei servizi XPC/Mach da consentire. Supporta un carattere jolly finale |

3648| `httpProxyPort` | `int` | `None` | Porta proxy HTTP per le richieste di rete |3650| `httpProxyPort` | `int` | `None` | Porta proxy HTTP per le richieste di rete |

Details

16 16 

17## Prerequisiti17## Prerequisiti

18 18 

19* **Node.js 18+** o **Python 3.10+**19* **Node.js 18.14+** o **Python 3.10+**

20* Un **account Anthropic**. Se non ne hai uno, [iscriviti qui](https://platform.claude.com/).20* Un **account Anthropic**. Se non ne hai uno, [iscriviti qui](https://platform.claude.com/).

21 21 

22## Configurazione22## Configurazione

Details

118 118 

119### Gestire uno stream interrotto119### Gestire uno stream interrotto

120 120 

121Se uno stream viene interrotto a metà messaggio, ad esempio quando interrompi il turno o la connessione cade, ricevi comunque il `message_stop` di quel messaggio prima che il turno termini. Anche un blocco di testo o di ragionamento interrotto riceve il proprio `content_block_stop`. Una chiamata a uno strumento interrotta no, quindi se `message_stop` arriva mentre il blocco di una chiamata a uno strumento è ancora aperto, considera incompleto l'input di quella chiamata.121Se uno stream viene interrotto a metà messaggio, ricevi comunque il `message_stop` di quel messaggio prima che il turno termini. Tra le cause di uno stream interrotto ci sono un turno interrotto, una connessione caduta e un fallback a una richiesta non in streaming. `content_block_stop` e `message_delta` possono mancare prima di quel `message_stop`:

122 

123* **`content_block_stop`**: arriva per il blocco che era aperto, a meno che quel blocco non sia una chiamata a uno strumento. Se `message_stop` arriva mentre il blocco di una chiamata a uno strumento è ancora aperto, considera incompleto l'input di quella chiamata.

124* **`message_delta`**: arriva quando interrompi il turno e può mancare dopo una connessione caduta o un fallback a una richiesta non in streaming, quindi non attenderlo su un messaggio interrotto.

122 125 

123Prima di Claude Code v2.1.290, uno stream interrotto poteva terminare il turno senza `message_stop`, quindi una risposta che visualizzi a partire dagli eventi di stream poteva restare mostrata come in corso. L'Agent SDK per TypeScript include Claude Code v2.1.290 o successivo a partire dalla v0.3.290, e l'Agent SDK per Python a partire dalla v0.2.164. Se una risposta resta mostrata come in corso dopo la fine del turno, aggiorna l'SDK.126Prima di Claude Code v2.1.290, uno stream interrotto poteva terminare il turno senza `message_stop`, quindi una risposta che visualizzi a partire dagli eventi di stream poteva restare mostrata come in corso. L'Agent SDK per TypeScript include Claude Code v2.1.290 o successivo a partire dalla v0.3.290, e l'Agent SDK per Python a partire dalla v0.2.164. Se una risposta resta mostrata come in corso dopo la fine del turno, aggiorna l'SDK.

124 127 

Details

105 105 

106Restituisce una `Promise<`[`WarmQuery`](#warmquery)`>` che si risolve una volta che il subprocess è stato generato e ha completato il suo handshake di inizializzazione.106Restituisce una `Promise<`[`WarmQuery`](#warmquery)`>` che si risolve una volta che il subprocess è stato generato e ha completato il suo handshake di inizializzazione.

107 107 

108Dei messaggi [`hook_progress`](#sdkhookprogressmessage) che un hook `SessionStart` o `Setup` emette prima del completamento dell'handshake, ricevi solo il più recente, che contiene tutto l'output dell'hook fino a quel momento. `startup()` trattiene quel messaggio, il messaggio [`hook_started`](#sdkhookstartedmessage) dell'hook e qualsiasi altra cosa il subprocess emetta prima del completamento dell'handshake. I messaggi trattenuti ti arrivano quando chiami `.query()` sul `WarmQuery` e iteri il risultato.

109 

108#### Esempio110#### Esempio

109 111 

110Chiama `startup()` presto, ad esempio all'avvio dell'applicazione, quindi chiama `.query()` sull'handle restituito una volta che un prompt è pronto. Questo sposta la generazione del subprocess e l'inizializzazione fuori dal percorso critico.112Chiama `startup()` presto, ad esempio all'avvio dell'applicazione, quindi chiama `.query()` sull'handle restituito una volta che un prompt è pronto. Questo sposta la generazione del subprocess e l'inizializzazione fuori dal percorso critico.


495| Proprietà | Tipo | Predefinito | Descrizione |497| Proprietà | Tipo | Predefinito | Descrizione |

496| :- | :- | :- | :- |498| :- | :- | :- | :- |

497| `abortController` | `AbortController` | `new AbortController()` | Controller per annullare le operazioni |499| `abortController` | `AbortController` | `new AbortController()` | Controller per annullare le operazioni |

498| `additionalDirectories` | `string[]` | `[]` | Directory aggiuntive a cui Claude può accedere. L'SDK passa ogni voce a Claude Code come `--add-dir`, quindi con l'origine di impostazioni `project` Claude Code [carica anche le skill, i comandi e i subagent della directory](https://code.claude.com/docs/it/permissions.md#additional-directories-grant-file-access-not-configuration) |500| `additionalDirectories` | `string[]` | `[]` | Directory aggiuntive a cui Claude può accedere. L'SDK passa ogni voce a Claude Code come `--add-dir`, quindi con l'origine delle impostazioni `project` Claude Code [carica anche le skill, i comandi e i subagent della directory](https://code.claude.com/docs/it/permissions.md#additional-directories-grant-file-access-not-configuration) |

499| `agent` | `string` | `undefined` | Nome dell'agente per il thread principale. L'agente deve essere definito nell'opzione `agents` o nelle impostazioni |501| `agent` | `string` | `undefined` | Nome dell'agente per il thread principale. L'agente deve essere definito nell'opzione `agents` o nelle impostazioni |

500| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Definisci i subagent a livello di codice |502| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Definisci i subagent a livello di codice |

501| `agentProgressSummaries` | `boolean` | `false` | Quando è `true`, genera riepiloghi di avanzamento di una riga per i subagent e li inoltra negli eventi [`task_progress`](#sdktaskprogressmessage) tramite il campo `summary`. Si applica ai subagent in primo piano e in background |503| `agentProgressSummaries` | `boolean` | `false` | Quando è `true`, genera riepiloghi di avanzamento di una riga per i subagent e li inoltra negli eventi [`task_progress`](#sdktaskprogressmessage) tramite il campo `summary`. Si applica ai subagent in primo piano e in background |

502| `allowDangerouslySkipPermissions` | `boolean` | `false` | Abilita l'aggiramento dei permessi. Obbligatorio quando usi `permissionMode: 'bypassPermissions'`, all'avvio o in seguito tramite `setPermissionMode()`. Consulta [plan mode](https://code.claude.com/docs/it/agent-sdk/permissions.md#plan-mode-plan) per come interagisce con `permissionMode: 'plan'` |504| `allowDangerouslySkipPermissions` | `boolean` | `false` | Abilita l'aggiramento dei permessi. Obbligatorio quando usi `permissionMode: 'bypassPermissions'`, all'avvio o in seguito tramite `setPermissionMode()`. Consulta [plan mode](https://code.claude.com/docs/it/agent-sdk/permissions.md#plan-mode-plan) per sapere come interagisce con `permissionMode: 'plan'` |

503| `allowedTools` | `string[]` | `[]` | Strumenti da approvare automaticamente senza chiedere conferma, escluse le letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). Questo non limita Claude ai soli strumenti indicati. Se qui indichi uno degli [strumenti di tracciamento delle attività](https://code.claude.com/docs/it/agent-sdk/todo-tracking.md#model-availability), Claude Code li abilita anche per la sessione. Gli altri strumenti non elencati passano a `permissionMode` e `canUseTool`. Usa `disallowedTools` per bloccare gli strumenti. Consulta [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |505| `allowedTools` | `string[]` | `[]` | Strumenti da approvare automaticamente senza chiedere, escluse le letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). Non limita Claude a usare solo questi strumenti. Se qui indichi uno degli [strumenti di tracciamento delle attività](https://code.claude.com/docs/it/agent-sdk/todo-tracking.md#model-availability), Claude Code li abilita anche per la sessione. Gli altri strumenti non elencati passano a `permissionMode` e `canUseTool`. Usa `disallowedTools` per bloccare gli strumenti. Consulta [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |

504| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Abilita le funzionalità beta |506| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Abilita le funzionalità beta |

505| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Funzione di permesso personalizzata, invocata solo quando il [flusso dei permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) arriva a una richiesta di permesso. Non viene invocata per le chiamate approvate automaticamente da `allowedTools`, dalle regole allow o da `permissionMode`. Una regola allow non pre-approva le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves). Consulta [`CanUseTool`](#canusetool) per i dettagli |507| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Funzione di permesso personalizzata, invocata solo quando il [flusso dei permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) arriva a una richiesta di permesso. Non viene invocata per le chiamate approvate automaticamente da `allowedTools`, dalle regole di autorizzazione o da `permissionMode`. Una regola di autorizzazione non pre-approva le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves). Consulta [`CanUseTool`](#canusetool) per i dettagli |

506| `continue` | `boolean` | `false` | Continua la conversazione più recente |508| `continue` | `boolean` | `false` | Continua la conversazione più recente |

507| `cwd` | `string` | `process.cwd()` | Directory di lavoro corrente |509| `cwd` | `string` | `process.cwd()` | Directory di lavoro corrente |

508| `debug` | `boolean` | `false` | Abilita la modalità di debug per il processo Claude Code |510| `debug` | `boolean` | `false` | Abilita la modalità di debug per il processo Claude Code |


510| `disallowedTools` | `string[]` | `[]` | 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 [così come è scritto](https://code.claude.com/docs/it/permissions.md#bash-rule-limits). Consulta [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |512| `disallowedTools` | `string[]` | `[]` | 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 [così come è scritto](https://code.claude.com/docs/it/permissions.md#bash-rule-limits). Consulta [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |

511| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Controlla quanto sforzo Claude dedica alla risposta. Funziona con il ragionamento adattivo per guidare la profondità del ragionamento. Consulta [regolare il livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) |513| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Controlla quanto sforzo Claude dedica alla risposta. Funziona con il ragionamento adattivo per guidare la profondità del ragionamento. Consulta [regolare il livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) |

512| `enableFileCheckpointing` | `boolean` | `false` | Abilita il tracciamento delle modifiche ai file per il riavvolgimento. Consulta [Checkpointing dei file](https://code.claude.com/docs/it/agent-sdk/file-checkpointing.md) |514| `enableFileCheckpointing` | `boolean` | `false` | Abilita il tracciamento delle modifiche ai file per il riavvolgimento. Consulta [Checkpointing dei file](https://code.claude.com/docs/it/agent-sdk/file-checkpointing.md) |

513| `env` | `Record<string, string \| undefined>` | `process.env` | Variabili d'ambiente. Quando è impostato, sostituisce l'ambiente del sottoprocesso invece di fare il merge con `process.env`, quindi passa `{ ...process.env, YOUR_VAR: 'value' }` per mantenere le variabili ereditate come `PATH`. Consulta [Gestire risposte API lente o bloccate](#handle-slow-or-stalled-api-responses) per un esempio di questo pattern, e [Variabili d'ambiente](https://code.claude.com/docs/it/env-vars.md) per le variabili lette dalla CLI sottostante. Imposta `CLAUDE_AGENT_SDK_CLIENT_APP` per identificare la tua app nell'header User-Agent |515| `env` | `Record<string, string \| undefined>` | `process.env` | Variabili d'ambiente. Quando è impostato, sostituisce l'ambiente del sottoprocesso invece di fare il merge con `process.env`, quindi passa `{ ...process.env, YOUR_VAR: 'value' }` per mantenere le variabili ereditate come `PATH`. Consulta [Gestire risposte API lente o bloccate](#handle-slow-or-stalled-api-responses) per un esempio di questo schema e [Variabili d'ambiente](https://code.claude.com/docs/it/env-vars.md) per le variabili lette dalla CLI sottostante. Imposta `CLAUDE_AGENT_SDK_CLIENT_APP` per identificare la tua app nell'header User-Agent |

514| `executable` | `'bun' \| 'deno' \| 'node'` | Rilevato automaticamente | Runtime JavaScript da usare |516| `executable` | `'bun' \| 'deno' \| 'node'` | Rilevato automaticamente | Runtime JavaScript da usare |

515| `executableArgs` | `string[]` | `[]` | Argomenti da passare all'eseguibile |517| `executableArgs` | `string[]` | `[]` | Argomenti da passare all'eseguibile |

516| `extraArgs` | `Record<string, string \| null>` | `{}` | Argomenti aggiuntivi |518| `extraArgs` | `Record<string, string \| null>` | `{}` | Argomenti aggiuntivi |

517| `fallbackModel` | `string` | `undefined` | Modello da usare se il modello principale non riesce. Accetta un elenco separato da virgole. Per l'ordine e il limite, consulta [Catene di modelli di fallback](https://code.claude.com/docs/it/model-config.md#fallback-model-chains). Per indicazioni, consulta [Scegliere un modello](https://code.claude.com/docs/it/agent-sdk/configuration.md#choose-a-model) |519| `fallbackModel` | `string` | `undefined` | Modello da usare se il modello principale non riesce. Accetta un elenco separato da virgole. Per l'ordine e il limite, consulta [Catene di modelli di fallback](https://code.claude.com/docs/it/model-config.md#fallback-model-chains). Per indicazioni, consulta [Scegliere un modello](https://code.claude.com/docs/it/agent-sdk/configuration.md#choose-a-model) |

518| `forkSession` | `boolean` | `false` | Quando riprendi con `resume`, esegue il fork verso un nuovo ID di sessione invece di continuare la sessione originale |520| `forkSession` | `boolean` | `false` | Quando riprendi con `resume`, crea un fork verso un nuovo ID di sessione invece di continuare la sessione originale |

519| `forwardSubagentText` | `boolean` | `false` | Inoltra il testo e i blocchi di ragionamento dei subagent come messaggi assistant e user con `parent_tool_use_id` impostato, così i consumer possono mostrare una trascrizione annidata. Senza questa opzione, Claude Code omette il testo e i blocchi di ragionamento di un subagent eseguito in [primo piano](https://code.claude.com/docs/it/sub-agents.md#run-subagents-in-foreground-or-background). Per i subagent annidati, le skill con `context: fork` e la versione di Claude Code richiesta da ciascuno, consulta [Seguire i messaggi dei subagent](https://code.claude.com/docs/it/headless.md#follow-subagent-messages) |521| `forwardSubagentText` | `boolean` | `false` | Inoltra il testo e i blocchi di ragionamento dei subagent come messaggi dell'assistente e dell'utente con `parent_tool_use_id` impostato, così i consumer possono visualizzare una trascrizione annidata. Senza questa opzione, Claude Code omette il testo e i blocchi di ragionamento di un subagent eseguito in [primo piano](https://code.claude.com/docs/it/sub-agents.md#run-subagents-in-foreground-or-background). Per i subagent annidati, le skill con `context: fork` e la versione di Claude Code richiesta da ciascuno, consulta [Seguire i messaggi dei subagent](https://code.claude.com/docs/it/headless.md#follow-subagent-messages) |

520| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Callback degli hook per gli eventi |522| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Callback degli hook per gli eventi |

521| `includeHookEvents` | `boolean` | `false` | Include gli eventi del ciclo di vita degli hook nel flusso dei messaggi come [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage) e [`SDKHookResponseMessage`](#sdkhookresponsemessage). Gli eventi del ciclo di vita per gli hook `SessionStart` e `Setup` sono sempre inclusi e non richiedono questa opzione. Alcuni eventi hook, come `Notification`, `SessionEnd`, `PreCompact` e `PostCompact`, non producono mai un `SDKHookStartedMessage`, nemmeno con questa opzione. Per questi eventi, Claude Code emette comunque un `SDKHookProgressMessage` mentre un hook di comando che dura più di un secondo produce output, ed emette un `SDKHookResponseMessage` solo quando termina un hook [eseguito in background](https://code.claude.com/docs/it/hooks.md#run-hooks-in-the-background) |523| `includeHookEvents` | `boolean` | `false` | Include gli eventi del ciclo di vita degli hook nel flusso dei messaggi come [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage) e [`SDKHookResponseMessage`](#sdkhookresponsemessage). Gli eventi del ciclo di vita degli hook `SessionStart` e `Setup` sono sempre inclusi e non richiedono questa opzione. Alcuni eventi degli hook, come `Notification`, `SessionEnd`, `PreCompact` e `PostCompact`, non producono mai un `SDKHookStartedMessage`, nemmeno con questa opzione. Per questi eventi, Claude Code emette comunque un `SDKHookProgressMessage` mentre un hook di comando in esecuzione da più di un secondo produce output, ed emette un `SDKHookResponseMessage` solo quando termina un hook [eseguito in background](https://code.claude.com/docs/it/hooks.md#run-hooks-in-the-background) |

522| `includePartialMessages` | `boolean` | `false` | Include gli eventi dei messaggi parziali |524| `includePartialMessages` | `boolean` | `false` | Include gli eventi dei messaggi parziali |

523| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout in millisecondi per ogni chiamata a `sessionStore.load()` e `sessionStore.listSubkeys()` durante la materializzazione della ripresa. Se l'adattatore non si risolve entro questo intervallo, la query fallisce invece di bloccarsi. Ignorato quando `sessionStore` non è impostato |525| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout in millisecondi per ogni chiamata a `sessionStore.load()` e `sessionStore.listSubkeys()` durante la materializzazione della ripresa. Se l'adattatore non si conclude entro questo intervallo, la query non riesce invece di bloccarsi. Ignorato quando `sessionStore` non è impostato |

524| `managedSettings` | `Settings` | `undefined` | Impostazioni di livello policy che il tuo processo host fornisce alla sessione avviata. Sui computer con impostazioni gestite distribuite dall'amministratore, Claude Code le ignora a meno che la fonte gestita con la massima priorità dell'amministratore non imposti `parentSettingsBehavior: 'merge'`, e non ne esegue mai il merge mentre un [`policyHelper`](https://code.claude.com/docs/it/settings-reference#policyhelper) fornisce impostazioni gestite. I valori sottoposti a merge passano attraverso un filtro solo restrittivo; [Limitare le impostazioni padre](https://code.claude.com/docs/it/claude-apps-gateway#restrict-parent-settings) descrive cosa ammette il filtro e i blocchi `allowManaged*Only`. Un host che imposta [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/it/env-vars) legge invece tre chiavi direttamente da questo payload: la sua [configurazione del modello](https://code.claude.com/docs/it/model-config.md#restrict-model-selection) su Claude Code v2.1.222 o successivo, [`modelPricing`](https://code.claude.com/docs/it/settings-reference#modelpricing) quando nessuna fonte gestita lo imposta su v2.1.246 o successivo, e la sua voce env `ENABLE_TOOL_SEARCH` su v2.1.247 o successivo |526| `managedSettings` | `Settings` | `undefined` | Impostazioni di livello policy che il tuo processo host fornisce alla sessione avviata. Sulle macchine con impostazioni gestite distribuite dall'amministratore, Claude Code le ignora a meno che l'origine gestita con la massima priorità dell'amministratore non imposti `parentSettingsBehavior: 'merge'`, e non ne esegue mai il merge mentre un [`policyHelper`](https://code.claude.com/docs/it/settings-reference#policyhelper) fornisce impostazioni gestite. I valori uniti tramite merge passano attraverso un filtro solo restrittivo; [Limitare le impostazioni del processo padre](https://code.claude.com/docs/it/claude-apps-gateway#restrict-parent-settings) descrive cosa ammette il filtro e i blocchi `allowManaged*Only`. Un host che imposta [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/it/env-vars) ha invece tre chiavi lette direttamente da questo payload: la sua [configurazione del modello](https://code.claude.com/docs/it/model-config.md#restrict-model-selection) su Claude Code v2.1.222 o successiva, [`modelPricing`](https://code.claude.com/docs/it/settings-reference#modelpricing) quando nessuna origine gestita la imposta su v2.1.246 o successiva, e la sua voce env `ENABLE_TOOL_SEARCH` su v2.1.247 o successiva |

525| `maxBudgetUsd` | `number` | `undefined` | Interrompe la query quando la stima dei costi lato client raggiunge questo valore in USD. La stima può superare questo valore, quindi [lascia un margine](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#budget-headroom). Conta solo la spesa della chiamata stessa; i totali ripristinati da una sessione ripresa non vengono conteggiati. Per le avvertenze sull'accuratezza e il comportamento di reimpostazione, consulta [Monitorare costi e utilizzo](https://code.claude.com/docs/it/agent-sdk/cost-tracking.md) |527| `maxBudgetUsd` | `number` | `undefined` | Interrompe la query quando la stima dei costi lato client raggiunge questo valore in USD. La stima può superare questo valore, quindi [lascia un margine](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#budget-headroom). Conta solo la spesa della chiamata stessa; i totali ripristinati da una sessione ripresa non vengono conteggiati. Per le avvertenze sulla precisione e il comportamento di azzeramento, consulta [Tracciare costi e utilizzo](https://code.claude.com/docs/it/agent-sdk/cost-tracking.md) |

526| `maxThinkingTokens` | `number` | `undefined` | *Deprecato:* usa invece `thinking`. Numero massimo di token per il processo di ragionamento |528| `maxThinkingTokens` | `number` | `undefined` | *Deprecato:* usa invece `thinking`. Numero massimo di token per il processo di ragionamento |

527| `maxTurns` | `number` | `undefined` | Numero massimo di turni agentici (round trip di uso degli strumenti) |529| `maxTurns` | `number` | `undefined` | Numero massimo di [turni](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#turns-and-messages) agentici |

528| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configurazioni dei server MCP |530| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configurazioni dei server MCP |

529| `model` | `string` | Predefinito dalla CLI | Alias del modello Claude o nome completo del modello. Consulta [valori accettati e ID specifici del provider](https://code.claude.com/docs/it/model-config.md#available-models) |531| `model` | `string` | Predefinito dalla CLI | Alias del modello Claude o nome completo del modello. Consulta [valori accettati e ID specifici del provider](https://code.claude.com/docs/it/model-config.md#available-models) |

530| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback per gestire le richieste di elicitation MCP. Viene chiamata quando un server MCP richiede input dall'utente e nessun hook la gestisce prima. Se non fornita, le richieste di elicitation non gestite vengono rifiutate automaticamente |532| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback per gestire le richieste di elicitation MCP. Viene chiamata quando un server MCP richiede input all'utente e nessun hook la gestisce prima. Se non viene fornita, le richieste di elicitation non gestite vengono rifiutate automaticamente |

531| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Definisce il formato di output per i risultati dell'agente. Consulta [Output strutturati](https://code.claude.com/docs/it/agent-sdk/structured-outputs.md) per i dettagli |533| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Definisce il formato di output per i risultati dell'agente. Consulta [Output strutturati](https://code.claude.com/docs/it/agent-sdk/structured-outputs.md) per i dettagli |

532| `outputStyle` | `string` | `undefined` | Non è un campo di `Options`. Imposta invece `outputStyle` nell'oggetto [`settings`](https://code.claude.com/docs/it/settings) inline o in un file di impostazioni. Consulta [Attivare uno stile di output](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#activate-an-output-style) |534| `outputStyle` | `string` | `undefined` | Non è un campo di `Options`. Imposta invece `outputStyle` nell'oggetto [`settings`](https://code.claude.com/docs/it/settings) inline o in un file di impostazioni. Consulta [Attivare uno stile di output](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#activate-an-output-style) |

533| `pathToClaudeCodeExecutable` | `string` | Risolto automaticamente dal binario nativo incluso | Percorso dell'eseguibile di Claude Code. Necessario solo se le dipendenze opzionali sono state saltate durante l'installazione o se la tua piattaforma non è tra quelle supportate |535| `pathToClaudeCodeExecutable` | `string` | Risolto automaticamente dal binario nativo incluso | Percorso dell'eseguibile di Claude Code. Necessario solo se le dipendenze opzionali sono state saltate durante l'installazione o se la tua piattaforma non è tra quelle supportate |

534| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Modalità di permesso per la sessione. Se la ometti e nient'altro imposta una modalità di permesso, come un'impostazione [`permissions.defaultMode`](https://code.claude.com/docs/it/settings-reference#permissions-defaultmode), la sessione si avvia in `default`. Consulta [Modalità di permesso](https://code.claude.com/docs/it/agent-sdk/permissions.md#permission-modes) |536| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Modalità di permesso per la sessione. Se la ometti e nient'altro imposta una modalità di permesso, come un'impostazione [`permissions.defaultMode`](https://code.claude.com/docs/it/settings-reference#permissions-defaultmode), la sessione si avvia in `default`. Consulta [Modalità di permesso](https://code.claude.com/docs/it/agent-sdk/permissions.md#permission-modes) |

535| `permissionPromptToolName` | `string` | `undefined` | Nome dello strumento MCP per le richieste di permesso |537| `permissionPromptToolName` | `string` | `undefined` | Nome dello strumento MCP per le richieste di permesso |

536| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Chi risponde alle richieste di permesso: `'host'` le instrada alla tua callback [`canUseTool`](#canusetool) o allo strumento `permissionPromptToolName`, mentre `'none'` [nega le chiamate che avrebbero richiesto conferma](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated). Richiede Claude Code v2.1.259 o successivo |538| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Chi risponde alle richieste di permesso: `'host'` le instrada alla tua callback [`canUseTool`](#canusetool) o allo strumento `permissionPromptToolName`, mentre `'none'` [nega le chiamate che avrebbero generato una richiesta](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated). Richiede Claude Code v2.1.259 o successiva |

537| `persistSession` | `boolean` | `true` | Quando è `false`, disabilita la persistenza della sessione su disco. Le sessioni non possono essere riprese in seguito |539| `persistSession` | `boolean` | `true` | Quando è `false`, disabilita la persistenza della sessione su disco. Le sessioni non possono essere riprese in seguito |

538| `planModeInstructions` | `string` | `undefined` | Istruzioni di workflow personalizzate per il plan mode. Quando `permissionMode` è `'plan'`, questa stringa sostituisce il corpo predefinito del workflow del plan mode. La CLI la racchiude comunque con il preambolo di applicazione della sola lettura e il piè di pagina del protocollo ExitPlanMode |540| `planModeInstructions` | `string` | `undefined` | Istruzioni di workflow personalizzate per il plan mode. Quando `permissionMode` è `'plan'`, questa stringa sostituisce il corpo predefinito del workflow del plan mode. La CLI la racchiude comunque con il preambolo che impone la sola lettura e il footer del protocollo ExitPlanMode |

539| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Carica plugin personalizzati da percorsi locali. Consulta [Plugin](https://code.claude.com/docs/it/agent-sdk/plugins.md) per i dettagli |541| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Carica plugin personalizzati da percorsi locali. Consulta [Plugin](https://code.claude.com/docs/it/agent-sdk/plugins.md) per i dettagli |

540| `projectConfigRoot` | `string` | `undefined` | Percorso assoluto del checkout attendibile di cui `cwd` è un worktree. Claude Code legge le impostazioni di progetto, `.mcp.json` e i comandi, gli agenti, le skill, i workflow, le routine e gli stili di output in `.claude/` del progetto da questa directory invece che da `cwd`, e imposta `CLAUDE_PROJECT_DIR` su di essa. Gli hook, gli script di supporto come `apiKeyHelper` e i server MCP stdio si avviano con questa directory come directory di lavoro. I file `CLAUDE.md` e `.claude/rules/` vengono comunque caricati da `cwd`. Richiede Claude Code v2.1.275 o successivo |542| `projectConfigRoot` | `string` | `undefined` | Percorso assoluto del checkout attendibile di cui `cwd` è un worktree. Claude Code legge le impostazioni di progetto, `.mcp.json` e i comandi, gli agenti, le skill, i workflow, le routine e gli stili di output in `.claude/` del progetto da questa directory invece che da `cwd`, e imposta `CLAUDE_PROJECT_DIR` su di essa. Gli hook, gli script di supporto come `apiKeyHelper` e i server MCP stdio si avviano con questa directory come directory di lavoro. I file `CLAUDE.md` e `.claude/rules/` vengono comunque caricati da `cwd`. Richiede Claude Code v2.1.275 o successiva |

541| `promptSuggestions` | `boolean` | `false` | Abilita i suggerimenti di prompt. Dopo un turno, Claude Code emette un messaggio `prompt_suggestion` che contiene un prompt utente successivo previsto. Claude Code non genera alcun suggerimento per alcuni turni, ad esempio quando il tuo account è vicino al limite di utilizzo o lo ha raggiunto. Consulta [Quando Claude Code salta i suggerimenti](https://code.claude.com/docs/it/interactive-mode.md#when-claude-code-skips-suggestions) |543| `promptSuggestions` | `boolean` | `false` | Abilita i suggerimenti di prompt. Dopo un turno, Claude Code emette un messaggio `prompt_suggestion` contenente un prossimo prompt dell'utente previsto. Claude Code non genera suggerimenti per alcuni turni, ad esempio quando il tuo account è vicino al limite di utilizzo o lo ha raggiunto. Consulta [Quando Claude Code salta i suggerimenti](https://code.claude.com/docs/it/interactive-mode.md#when-claude-code-skips-suggestions) |

542| `resume` | `string` | `undefined` | ID della sessione da riprendere |544| `resume` | `string` | `undefined` | ID della sessione da riprendere |

543| `resumeDropsTurn` | `string` | `undefined` | Con `resumeSessionAt`: l'UUID del prompt del turno che la ripresa con troncamento intende scartare. Claude Code rifiuta la ripresa quando l'intervallo scartato contiene qualcosa non attribuibile a quel turno, come messaggi in coda assorbiti o notifiche di attività, e indica il flag `--resume-drops-turn` nel messaggio di rifiuto. Solo l'Agent SDK e le riprese in modalità print leggono la coppia. Richiede Claude Code v2.1.223 o successivo |545| `resumeDropsTurn` | `string` | `undefined` | Con `resumeSessionAt`: l'UUID del prompt del turno che la ripresa con troncamento intende scartare. Claude Code rifiuta la ripresa quando l'intervallo scartato contiene qualcosa di non attribuibile a quel turno, come messaggi in coda assorbiti o notifiche di attività, e indica il flag `--resume-drops-turn` nel messaggio di rifiuto. Solo l'Agent SDK e le riprese in modalità print leggono la coppia. Richiede Claude Code v2.1.223 o successiva |

544| `resumeSessionAt` | `string` | `undefined` | Riprende la sessione a un UUID di messaggio specifico |546| `resumeSessionAt` | `string` | `undefined` | Riprende la sessione a partire da uno specifico UUID di messaggio |

545| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Configura il comportamento della sandbox a livello di codice. Consulta [Impostazioni della sandbox](#sandboxsettings) per i dettagli |547| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Configura il comportamento della sandbox a livello di codice. Consulta [Impostazioni della sandbox](#sandboxsettings) per i dettagli |

546| `sessionId` | `string` | Generato automaticamente | Usa un UUID specifico per la sessione invece di generarne uno automaticamente |548| `sessionId` | `string` | Generato automaticamente | Usa un UUID specifico per la sessione invece di generarne uno automaticamente |

547| `sessionStore` | [`SessionStore`](https://code.claude.com/docs/it/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Replica le trascrizioni delle sessioni su un backend esterno così che un altro host possa riprenderle. Consulta [Rendere persistenti le sessioni in uno storage esterno](https://code.claude.com/docs/it/agent-sdk/session-storage.md) |549| `sessionStore` | [`SessionStore`](https://code.claude.com/docs/it/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Replica le trascrizioni delle sessioni su un backend esterno in modo che un altro host possa riprenderle. Consulta [Rendere persistenti le sessioni su uno storage esterno](https://code.claude.com/docs/it/agent-sdk/session-storage.md) |

548| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Modalità di flush per `sessionStore`. Ignorato quando `sessionStore` non è impostato |550| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Modalità di flush per `sessionStore`. Ignorato quando `sessionStore` non è impostato |

549| `settings` | `string \| Settings` | `undefined` | Oggetto di [impostazioni](https://code.claude.com/docs/it/settings.md) inline, percorso di un file di impostazioni o stringa JSON inline. Popola il livello delle impostazioni da flag nell'[ordine di precedenza](https://code.claude.com/docs/it/settings.md#settings-precedence). Modificalo in fase di esecuzione con [`applyFlagSettings()`](#applyflagsettings) |551| `settings` | `string \| Settings` | `undefined` | Oggetto di [impostazioni](https://code.claude.com/docs/it/settings.md) inline, percorso di un file di impostazioni o stringa JSON inline. Popola il livello di impostazioni dei flag nell'[ordine di precedenza](https://code.claude.com/docs/it/settings.md#settings-precedence). Modificalo in fase di esecuzione con [`applyFlagSettings()`](#applyflagsettings) |

550| `settingSources` | [`SettingSource`](#settingsource)`[]` | Predefiniti della CLI (tutte le fonti) | Controlla quali impostazioni del filesystem caricare. Passa `[]` per disabilitare le impostazioni utente, di progetto e locali. La [policy gestita dagli endpoint](https://code.claude.com/docs/it/managed-settings.md#delivery-mechanisms) viene caricata in ogni caso; le impostazioni gestite dal server vengono recuperate quando la sessione si autentica con una credenziale dell'organizzazione su una [configurazione idonea](https://code.claude.com/docs/it/server-managed-settings.md#platform-availability). Consulta [Usare le funzionalità di Claude Code](https://code.claude.com/docs/it/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) |552| `settingSources` | [`SettingSource`](#settingsource)`[]` | Valori predefiniti della CLI (tutte le origini) | Controlla quali impostazioni del filesystem caricare. Passa `[]` per disabilitare le impostazioni utente, di progetto e locali. La [policy gestita sull'endpoint](https://code.claude.com/docs/it/managed-settings.md#delivery-mechanisms) viene caricata in ogni caso; le impostazioni gestite dal server vengono recuperate quando la sessione si autentica con una credenziale dell'organizzazione su una [configurazione idonea](https://code.claude.com/docs/it/server-managed-settings.md#platform-availability). Consulta [Usare le funzionalità di Claude Code](https://code.claude.com/docs/it/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) |

551| `skills` | `string[] \| 'all'` | `undefined` | Skill disponibili per la sessione. Passa `'all'` per abilitare ogni skill rilevata, oppure un elenco di nomi di skill. Passa solo nomi esatti. Su Agent SDK v0.3.221 o successivo, l'SDK rifiuta i nomi non validi e in forma wildcard con un errore prima di avviare il processo Claude Code. Quando è impostato, l'SDK aggiunge automaticamente lo strumento Skill a `allowedTools`. Se passi anche `tools`, includi `'Skill'` in quell'elenco. Consulta [Skill](https://code.claude.com/docs/it/agent-sdk/skills.md) |553| `skills` | `string[] \| 'all'` | `undefined` | Skill disponibili per la sessione. Passa `'all'` per abilitare ogni skill rilevata, oppure un elenco di nomi di skill. Passa solo nomi esatti. Su Agent SDK v0.3.221 o successiva, l'SDK rifiuta con un errore i nomi non validi e quelli in forma di carattere jolly prima di avviare il processo Claude Code. Quando è impostato, l'SDK aggiunge automaticamente lo strumento Skill a `allowedTools`. Se passi anche `tools`, includi `'Skill'` in quell'elenco. Consulta [Skill](https://code.claude.com/docs/it/agent-sdk/skills.md) |

552| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Funzione personalizzata per avviare il processo Claude Code. Usala per eseguire Claude Code in VM, container o ambienti remoti |554| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Funzione personalizzata per avviare il processo Claude Code. Usala per eseguire Claude Code in VM, container o ambienti remoti |

553| `stderr` | `(data: string) => void` | `undefined` | Callback per l'output stderr |555| `stderr` | `(data: string) => void` | `undefined` | Callback per l'output di stderr |

554| `strictMcpConfig` | `boolean` | `false` | Usa solo i server passati in `mcpServers` e ignora il `.mcp.json` del progetto, le impostazioni utente, i server MCP forniti dai plugin e i [connettori claude.ai](https://code.claude.com/docs/it/mcp.md#use-mcp-servers-from-claude-ai) |556| `strictMcpConfig` | `boolean` | `false` | Usa solo i server passati in `mcpServers` e ignora il file `.mcp.json` del progetto, le impostazioni utente, i server MCP forniti dai plugin e i [connettori di claude.ai](https://code.claude.com/docs/it/mcp.md#use-mcp-servers-from-claude-ai) |

555| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (prompt minimo) | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, oppure `{ type: 'preset', preset: 'claude_code' }` per usare il prompt di sistema di Claude Code. Passa un array di stringhe con la costante esportata `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` tra la parte statica e quella per richiesta per [memorizzare nella cache la parte statica di un prompt personalizzato](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#cache-the-static-part-of-a-custom-prompt). Quando usi la forma a oggetto preset, aggiungi `append` per estenderlo con istruzioni aggiuntive, e imposta `excludeDynamicSections: true` per spostare il contesto per sessione nel primo messaggio utente per [un miglior riutilizzo della cache dei prompt tra computer](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines). Imposta `snapshot: false` per ricostruire il prompt a ogni richiesta invece di [riutilizzare il prompt che la sessione ha registrato alla prima richiesta](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session). Per impostare `snapshot` su un prompt personalizzato, passa la forma `{ type: 'custom', prompt }`. La forma `{ type: 'custom' }` e il campo `snapshot` richiedono TypeScript Agent SDK v0.3.257 o successivo |557| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (prompt minimo) | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, oppure `{ type: 'preset', preset: 'claude_code' }` per usare il prompt di sistema di Claude Code. Passa un array di stringhe con la costante esportata `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` tra la parte statica e quella per richiesta per [memorizzare nella cache la parte statica di un prompt personalizzato](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#cache-the-static-part-of-a-custom-prompt). Quando usi la forma a oggetto preset, aggiungi `append` per estenderlo con istruzioni aggiuntive e imposta `excludeDynamicSections: true` per spostare il contesto per sessione nel primo messaggio dell'utente, per un [migliore riuso della cache dei prompt tra macchine](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines). Imposta `snapshot: false` per ricostruire il prompt a ogni richiesta invece di [riusare il prompt che la sessione ha registrato alla prima richiesta](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session). Per impostare `snapshot` su un prompt personalizzato, passa la forma `{ type: 'custom', prompt }`. La forma `{ type: 'custom' }` e il campo `snapshot` richiedono TypeScript Agent SDK v0.3.257 o successiva |

556| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Budget dell'attività lato API in token. Quando è impostato, al modello viene comunicato il budget di token rimanente, così può dosare l'uso degli strumenti e concludere prima del limite |558| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Budget dell'attività lato API in token. Quando è impostato, al modello viene comunicato il budget di token rimanente in modo che possa dosare l'uso degli strumenti e concludere prima del limite |

557| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` per i modelli supportati | Controlla il comportamento di ragionamento di Claude. Consulta [`ThinkingConfig`](#thinkingconfig) per le opzioni |559| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` per i modelli supportati | Controlla il comportamento di ragionamento di Claude. Consulta [`ThinkingConfig`](#thinkingconfig) per le opzioni |

558| `title` | `string` | `undefined` | Titolo visualizzato per la sessione. Quando riprendi tramite `resume` o `continue`, il titolo salvato della sessione ripresa ha la precedenza; usa [`renameSession()`](#renamesession) per rinominare una sessione esistente |560| `title` | `string` | `undefined` | Titolo visualizzato per la sessione. Quando riprendi tramite `resume` o `continue`, il titolo persistito della sessione ripresa ha la precedenza; usa [`renameSession()`](#renamesession) per rinominare una sessione esistente |

559| `toolAliases` | `Record<string, string>` | `undefined` | Mappa i nomi degli strumenti integrati ai nomi di strumenti MCP, così che Claude chiami la tua implementazione MCP al posto di quella integrata. Ad esempio, `{ Bash: 'mcp__workspace__bash' }` |561| `toolAliases` | `Record<string, string>` | `undefined` | Mappa i nomi degli strumenti integrati ai nomi degli strumenti MCP in modo che Claude chiami la tua implementazione MCP al posto di quella integrata. Ad esempio, `{ Bash: 'mcp__workspace__bash' }` |

560| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Configurazione del comportamento degli strumenti integrati. Consulta [`ToolConfig`](#toolconfig) per i dettagli |562| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Configurazione del comportamento degli strumenti integrati. Consulta [`ToolConfig`](#toolconfig) per i dettagli |

561| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Configurazione degli strumenti. Passa un array di nomi di strumenti o usa il preset per ottenere gli strumenti predefiniti di Claude Code |563| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Configurazione degli strumenti. Passa un array di nomi di strumenti o usa il preset per ottenere gli strumenti predefiniti di Claude Code |

562| `verbatimPrompts` | `boolean` | `false` | Recapita ogni prompt così come è scritto. L'SDK invia ogni messaggio utente con `client_composed: true`. Consulta [`client_composed`](#sdkusermessage) per ciò che Claude Code salta su quei messaggi. Usa questa opzione quando il testo del prompt include contenuti che l'utente finale non ha digitato. Per il controllo per turno, lasciala disattivata e imposta invece `client_composed` sui singoli messaggi in streaming. Richiede TypeScript Agent SDK v0.3.280 o successivo e Claude Code v2.1.248 o successivo; la versione di Claude Code inclusa in quelle versioni dell'SDK soddisfa il requisito di Claude Code |564| `verbatimPrompts` | `boolean` | `false` | Consegna ogni prompt così come è scritto. L'SDK invia ogni messaggio dell'utente con `client_composed: true`. Consulta [`client_composed`](#sdkusermessage) per sapere cosa salta Claude Code su questi messaggi. Usa questa opzione quando il testo del tuo prompt include contenuti che l'utente finale non ha digitato. Per un controllo per turno, lasciala disattivata e imposta invece `client_composed` sui singoli messaggi trasmessi in streaming. Richiede TypeScript Agent SDK v0.3.280 o successiva e Claude Code v2.1.248 o successiva; la versione di Claude Code inclusa in queste versioni dell'SDK soddisfa il requisito di Claude Code |

563 565 

564#### Gestire risposte API lente o bloccate566#### Gestire risposte API lente o bloccate

565 567 


581});583});

582```584```

583 585 

584* [`API_TIMEOUT_MS`](https://code.claude.com/docs/it/env-vars): quanto può attendere ogni tentativo di richiesta per le intestazioni della risposta, in millisecondi. Non limita la durata di una risposta in streaming dopo l'arrivo delle intestazioni. Predefinito `600000`. Si applica al ciclo principale e a tutti i subagent.586* [`API_TIMEOUT_MS`](https://code.claude.com/docs/it/env-vars): quanto a lungo ogni tentativo di richiesta può attendere gli header della risposta, in millisecondi. Non limita la durata di una risposta in streaming dopo l'arrivo degli header. Valore predefinito `600000`. Si applica al ciclo principale e a tutti i subagent.

585* `CLAUDE_CODE_MAX_RETRIES`: numero massimo di nuovi tentativi API. Valore predefinito `10`, con un limite di `15`. Ogni nuovo tentativo ha la propria finestra `API_TIMEOUT_MS`.587* `CLAUDE_CODE_MAX_RETRIES`: numero massimo di nuovi tentativi API. Valore predefinito `10`, con un limite di `15`. Ogni nuovo tentativo ha la propria finestra `API_TIMEOUT_MS`.

586 588 

587 Per le esecuzioni non presidiate che devono attendere durante interruzioni più lunghe, imposta [`CLAUDE_CODE_RETRY_WATCHDOG=1`](https://code.claude.com/docs/it/errors#tune-retry-behavior): riprova indefinitamente in caso di errori di capacità transitori e, su Claude Code v2.1.199 o successive, alza il valore predefinito per gli altri errori transitori a `300` e rimuove il limite su questa variabile.589 Per le esecuzioni non presidiate che devono attendere interruzioni più lunghe, imposta [`CLAUDE_CODE_RETRY_WATCHDOG=1`](https://code.claude.com/docs/it/errors#tune-retry-behavior): riprova indefinitamente in caso di errori di capacità transitori e, su Claude Code v2.1.199 o successiva, aumenta il valore predefinito per gli altri errori transitori a `300` e rimuove il limite su questa variabile.

588* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog dei blocchi per i subagent. Mentre il watchdog dello stream è attivo, il valore predefinito è `CLAUDE_STREAM_IDLE_TIMEOUT_MS` più 5 minuti, ovvero `600000` a meno che tu non aumenti quella variabile. Con il watchdog dello stream disattivato, il valore predefinito è `600000`. Prima della v2.1.257, il valore predefinito era sempre `600000`.590* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog dei blocchi per i subagent. Mentre il watchdog dello stream è attivo, il valore predefinito è `CLAUDE_STREAM_IDLE_TIMEOUT_MS` più 5 minuti, cioè `600000` a meno che tu non aumenti quella variabile. Con il watchdog dello stream disattivato, il valore predefinito è `600000`. Prima della v2.1.257, il valore predefinito era sempre `600000`.

589 591 

590 Il timer si azzera a ogni evento dello stream. In caso di blocco, Claude Code interrompe il subagent e segnala il blocco al padre. Per un subagent in background, contrassegna anche l'attività come non riuscita e allega l'eventuale risultato parziale.592 Il timer si azzera a ogni evento dello stream. In caso di blocco, Claude Code interrompe il subagent e segnala il blocco al processo padre. Per un subagent in background, contrassegna anche l'attività come non riuscita e allega l'eventuale risultato parziale.

591* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog dello stream che interrompe la richiesta quando gli header sono arrivati ma il corpo della risposta smette di essere trasmesso. 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 valore predefinito `300000` e non può scendere sotto tale minimo. Dopo l'interruzione, [Nuovi tentativi automatici](https://code.claude.com/docs/it/errors.md#automatic-retries) descrive cosa fa Claude Code, in base a quanto era avanzata la risposta.593* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog dello stream che interrompe la richiesta quando gli header sono arrivati ma il corpo della risposta smette di essere trasmesso. Il watchdog è attivo per impostazione predefinita per tutti i provider; imposta `CLAUDE_ENABLE_STREAM_WATCHDOG=0` per disattivarlo. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ha come valore predefinito `300000` ed è vincolato a quel minimo. Dopo l'interruzione, [Nuovi tentativi automatici](https://code.claude.com/docs/it/errors.md#automatic-retries) descrive cosa fa Claude Code, in base a quanto era avanzata la risposta.

592 594 

593 Mentre il watchdog attende una risposta che un gateway dietro `ANTHROPIC_BASE_URL` mantiene aperta con ping keep-alive, un host che imposta `includePartialMessages` continua a ricevere [eventi dello stream](#sdkpartialassistantmessage) `ping`, quindi interpreta quei frame come segnali di attività invece di far scadere la sessione per il silenzio. Prima della v2.1.257, i frame si interrompevano 5 minuti dopo l'ultimo evento reale dello stream.595 Mentre il watchdog attende una risposta che un gateway dietro `ANTHROPIC_BASE_URL` tiene aperta con ping keep-alive, un host che imposta `includePartialMessages` continua a ricevere [eventi dello stream](#sdkpartialassistantmessage) `ping`, quindi interpreta questi frame come segnali di attività invece di far scadere la sessione per silenzio. Prima della v2.1.257, i frame si interrompevano 5 minuti dopo l'ultimo evento reale dello stream.

594 596 

595### Oggetto `Query`597### Oggetto `Query`

596 598 


655 657 

656| Metodo | Descrizione |658| Metodo | Descrizione |

657| :- | :- |659| :- | :- |

658| `interrupt()` | Interrompe la query. Disponibile solo in modalità di input in streaming. Quando la CLI dichiara la capacità `interrupt_receipt_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage), si risolve con un [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) che elenca i messaggi in sospeso al momento dell'arrivo dell'interruzione. Si risolve con `undefined` sulle CLI precedenti alla v2.1.205 |660| `interrupt()` | Interrompe la query. Disponibile solo in modalità di input in streaming. Quando la CLI dichiara la capacità `interrupt_receipt_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage), si risolve con un [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) che elenca i messaggi in sospeso al momento dell'interruzione. Si risolve con `undefined` sulle CLI precedenti alla v2.1.205 |

659| `rewindFiles(userMessageId, options?)` | Ripristina i file allo stato in cui si trovavano al messaggio utente specificato. Passa `{ dryRun: true }` per visualizzare un'anteprima delle modifiche. Richiede `enableFileCheckpointing: true`. Consulta [Checkpointing dei file](https://code.claude.com/docs/it/agent-sdk/file-checkpointing.md) |661| `rewindFiles(userMessageId, options?)` | Ripristina i file allo stato in cui si trovavano al messaggio dell'utente specificato. Passa `{ dryRun: true }` per visualizzare in anteprima le modifiche. Richiede `enableFileCheckpointing: true`. Consulta [Checkpointing dei file](https://code.claude.com/docs/it/agent-sdk/file-checkpointing.md) |

660| `setPermissionMode()` | Cambia la modalità di permesso (disponibile solo in modalità di input in streaming) |662| `setPermissionMode()` | Cambia la modalità di permesso (disponibile solo in modalità di input in streaming) |

661| `setModel()` | Cambia il modello (disponibile solo in modalità di input in streaming). Passare `undefined` o la stringa `"default"` ripristina il [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md). Una sessione in modalità `auto` [passa alla modalità `default`](https://code.claude.com/docs/it/agent-sdk/permissions#auto-mode-auto) se il nuovo modello non supporta la modalità auto |663| `setModel()` | Cambia il modello (disponibile solo in modalità di input in streaming). Passando `undefined` o la stringa `"default"` si ripristina il [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md). Una sessione in modalità `auto` [passa alla modalità `default`](https://code.claude.com/docs/it/agent-sdk/permissions#auto-mode-auto) se il nuovo modello non supporta la modalità auto |

662| `setMaxThinkingTokens()` | *Deprecato:* usa invece l'opzione `thinking`. Cambia il numero massimo di token di ragionamento. Passare `null` ripristina il ragionamento al valore predefinito della sessione: un override impostato a metà sessione viene rimosso, e il ragionamento resta disattivato per le sessioni in cui è disabilitato |664| `setMaxThinkingTokens()` | *Deprecato:* usa invece l'opzione `thinking`. Cambia il numero massimo di token di ragionamento. Passando `null` si ripristina il ragionamento al valore predefinito della sessione: un override impostato a metà sessione viene cancellato e il ragionamento resta disattivato per le sessioni in cui è disabilitato |

663| `applyFlagSettings(settings)` | Esegue il merge delle impostazioni nel livello delle impostazioni da flag della sessione in fase di esecuzione (disponibile solo in modalità di input in streaming). Consulta [`applyFlagSettings()`](#applyflagsettings) |665| `applyFlagSettings(settings)` | Esegue il merge delle impostazioni nel livello di impostazioni dei flag della sessione in fase di esecuzione (disponibile solo in modalità di input in streaming). Consulta [`applyFlagSettings()`](#applyflagsettings) |

664| `updateSettings(source, settings)` | Scrive una chiave consentita nel file di impostazioni locali del progetto o nel tuo file di impostazioni utente, così che il valore persista per le sessioni successive. Consulta [`updateSettings()`](#updatesettings). Richiede TypeScript SDK v0.3.257 o successivo, che include Claude Code v2.1.257 |666| `updateSettings(source, settings)` | Scrive una chiave consentita nel file di impostazioni locali del progetto o nel tuo file di impostazioni utente, in modo che il valore persista per le sessioni successive. Consulta [`updateSettings()`](#updatesettings). Richiede TypeScript SDK v0.3.257 o successiva, che include Claude Code v2.1.257 |

665| `initializationResult()` | Restituisce il risultato completo dell'inizializzazione, inclusi comandi supportati, modelli, informazioni sull'account e configurazione dello stile di output |667| `initializationResult()` | Restituisce il risultato completo dell'inizializzazione, inclusi i comandi supportati, i modelli, le informazioni sull'account e la configurazione dello stile di output |

666| `reinitialize()` | Invia di nuovo la richiesta di controllo `initialize` alla CLI in esecuzione e restituisce un risultato aggiornato invece del risultato memorizzato della prima connessione. Usalo dopo un'interruzione del trasporto, ad esempio quando ti ricolleghi a una sessione dopo una disconnessione, così che le richieste di permesso in sospeso raggiungano di nuovo la tua callback `canUseTool`. Rendi la callback idempotente per ID di richiesta, perché una richiesta la cui risposta è andata persa viene inviata di nuovo. Richiede Claude Code v2.1.195 o successivo |668| `reinitialize()` | Invia di nuovo la richiesta di controllo `initialize` alla CLI in esecuzione e restituisce un risultato aggiornato invece del risultato memorizzato della prima connessione. Usalo dopo un'interruzione del trasporto, ad esempio quando ti ricolleghi a una sessione dopo una disconnessione, in modo che le richieste di permesso in sospeso raggiungano di nuovo la tua callback `canUseTool`. Rendi la callback idempotente per ID di richiesta, perché una richiesta la cui risposta è andata persa viene inviata di nuovo. Richiede Claude Code v2.1.195 o successiva |

667| `supportedCommands()` | Restituisce i comandi disponibili. A partire da Agent SDK v0.3.216 l'elenco riflette le modifiche ai comandi avvenute a metà sessione; consulta [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |669| `supportedCommands()` | Restituisce i comandi disponibili. Da Agent SDK v0.3.216 l'elenco riflette le modifiche ai comandi avvenute a metà sessione; consulta [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |

668| `supportedModels()` | Restituisce i modelli disponibili con le informazioni di visualizzazione |670| `supportedModels()` | Restituisce i modelli disponibili con le informazioni di visualizzazione |

669| `supportedAgents()` | Restituisce i subagent disponibili come [`AgentInfo`](#agentinfo)`[]` |671| `supportedAgents()` | Restituisce i subagent disponibili come [`AgentInfo`](#agentinfo)`[]` |

670| `mcpServerStatus()` | Restituisce lo stato dei server MCP connessi come [`McpServerStatus`](#mcpserverstatus)`[]` |672| `mcpServerStatus()` | Restituisce lo stato dei server MCP connessi come [`McpServerStatus`](#mcpserverstatus)`[]` |

671| `getContextUsage(opts?)` | Restituisce un [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) che scompone l'utilizzo della finestra di contesto della sessione per categoria, skill e strumento. Con il `detail` predefinito, include i dati che `/context` mostra in una sessione interattiva, calcolati con richieste API di conteggio dei token che non compaiono nel flusso dei messaggi; consulta [come vengono gestite queste richieste](#sdkcontrolgetcontextusageresponse). L'[opzione `detail`](#sdkcontrolgetcontextusageresponse) richiede Agent SDK v0.3.257 o successivo |673| `getContextUsage(opts?)` | Restituisce un [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) che scompone l'utilizzo della finestra di contesto della sessione per categoria, skill e strumento. Con il valore predefinito di `detail`, include i dati che `/context` mostra in una sessione interattiva, calcolati con richieste API di conteggio dei token che non compaiono nel flusso dei messaggi; consulta [come vengono gestite queste richieste](#sdkcontrolgetcontextusageresponse). L'[opzione `detail`](#sdkcontrolgetcontextusageresponse) richiede Agent SDK v0.3.257 o successiva |

672| `readFile(path, options?)` | Legge un file dal filesystem della sessione. Claude Code risolve il percorso rispetto a `cwd`; [Cosa può leggere `readFile()`](#what-readfile-can-read) elenca i file che fornisce. Passa `{ maxBytes }` per cambiare il limite di lettura (predefinito 1 MB, massimo 10 MB) e `{ encoding: 'base64' }` per i file binari come le immagini. Si risolve con un [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), oppure con `null` in caso di permesso negato, file mancante o errore di trasporto. Richiede TypeScript SDK v0.2.121 o successivo |674| `readFile(path, options?)` | Legge un file dal filesystem della sessione. Claude Code risolve il percorso rispetto a `cwd`; [Cosa può leggere `readFile()`](#what-readfile-can-read) elenca i file che fornisce. Passa `{ maxBytes }` per cambiare il limite di lettura (predefinito 1 MB, massimo 10 MB) e `{ encoding: 'base64' }` per i file binari come le immagini. Si risolve con un [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), oppure con `null` in caso di permesso negato, file mancante o errore di trasporto. Richiede TypeScript SDK v0.2.121 o successiva |

673| `reloadPlugins(options?)` | Ricarica i plugin dal disco, in modo che i plugin che installi o modifichi a metà sessione raggiungano la sessione in esecuzione. Si risolve con un [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) che elenca i comandi, i subagent, i plugin e lo stato dei server MCP della sessione. Richiede Agent SDK v0.2.85 o successive. L'[opzione `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) richiede Agent SDK v0.3.268 o successive. L'[opzione `addPlugins`](#load-more-plugin-folders-with-addplugins) richiede Agent SDK v0.3.301 o successive |675| `reloadPlugins(options?)` | Ricarica i plugin dal disco, in modo che i plugin che installi o modifichi a metà sessione raggiungano la sessione in esecuzione. Si risolve con un [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) che elenca i comandi, i subagent, i plugin e lo stato dei server MCP della sessione. Richiede Agent SDK v0.2.85 o successiva. L'[opzione `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) richiede Agent SDK v0.3.268 o successiva. L'[opzione `addPlugins`](#load-more-plugin-folders-with-addplugins) richiede Agent SDK v0.3.301 o successiva |

674| `reloadSkills()` | Ricarica le skill dal disco, così che le skill che aggiungi o modifichi a metà sessione diventino disponibili per la sessione in esecuzione. Si risolve con un [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) che elenca le skill disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.163 o successivo |676| `reloadSkills()` | Ricarica le skill dal disco, in modo che le skill che aggiungi o modifichi a metà sessione diventino disponibili per la sessione in esecuzione. Si risolve con un [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) che elenca le skill disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.163 o successiva |

675| `reloadOutputStyles()` | Rilegge gli [stili di output](https://code.claude.com/docs/it/output-styles.md) dal disco, così che un file di stile che aggiungi o modifichi a metà sessione diventi disponibile per la sessione in esecuzione. Si risolve con un [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) che elenca i nomi degli stili disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.261 o successivo |677| `reloadOutputStyles()` | Rilegge gli [stili di output](https://code.claude.com/docs/it/output-styles.md) dal disco, in modo che un file di stile che aggiungi o modifichi a metà sessione diventi disponibile per la sessione in esecuzione. Si risolve con un [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) che elenca i nomi degli stili disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.261 o successiva |

676| `seedReadState(path, mtime)` | Contrassegna un file come già letto in modo che un Edit successivo non fallisca con `File has not been read yet`. Consulta [`seedReadState()`](#seedreadstate). Richiede TypeScript SDK v0.2.83 o versioni successive |678| `seedReadState(path, mtime)` | Contrassegna un file come già letto in modo che un Edit successivo non fallisca con `File has not been read yet`. Consulta [`seedReadState()`](#seedreadstate). Richiede TypeScript SDK v0.2.83 o successiva |

677| `accountInfo()` | Restituisce le informazioni sull'account |679| `accountInfo()` | Restituisce le informazioni sull'account |

678| `reconnectMcpServer(serverName)` | Riconnette 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 riconnette il server che hai configurato tramite [`mcpServers`](#options) o `setMcpServers()`, non la voce del file di impostazioni. Questo ordine di risoluzione richiede Claude Code v2.1.257 o successivo |680| `reconnectMcpServer(serverName)` | Riconnette 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 riconnette il server che hai configurato tramite [`mcpServers`](#options) o `setMcpServers()`, non la voce del file di impostazioni. Questo ordine di risoluzione richiede Claude Code v2.1.257 o successiva |

679| `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 richiesta per ciascun tipo di server |681| `toggleMcpServer(serverName, enabled)` | Abilita o disabilita un server MCP per nome, con la stessa risoluzione dei nomi di `reconnectMcpServer()`. La disabilitazione di un server lo disconnette e ne rimuove gli strumenti. Consulta [`toggleMcpServer()`](#togglemcpserver) per la versione di Claude Code richiesta per ciascun tipo di server |

680| `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, più eventuali errori; quella sezione indica quali altri server restano connessi |682| `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 |

681| `setMcpPermissionModeOverride(serverName, mode)` | Sovrascrive la modalità di permesso per gli strumenti di un server MCP con una modalità più restrittiva di quella della sessione, oppure cancella l'override con `null`. Disponibile solo in modalità di input in streaming. Consulta [`setMcpPermissionModeOverride()`](#setmcppermissionmodeoverride). Richiede TypeScript SDK v0.3.187 o versioni successive |683| `setMcpPermissionModeOverride(serverName, mode)` | Sovrascrive la modalità di permesso per gli strumenti di un server MCP con una modalità più restrittiva di quella della sessione, oppure cancella l'override con `null`. Disponibile solo in modalità di input in streaming. Consulta [`setMcpPermissionModeOverride()`](#setmcppermissionmodeoverride). Richiede TypeScript SDK v0.3.187 o successiva |

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

683| `streamInput(stream)` | Trasmette in streaming i messaggi di input alla query per le conversazioni a più turni |685| `streamInput(stream)` | Trasmette in streaming messaggi di input alla query per conversazioni a più turni |

684| `stopTask(taskId)` | Interrompe un'attività in background in esecuzione tramite ID |686| `stopTask(taskId)` | Interrompe un'attività in background in esecuzione tramite ID |

685| `backgroundTasks(toolUseId?)` | Sposta in background i comandi Bash e i subagent in esecuzione che il turno sta attendendo, come quando premi Ctrl+B nel terminale interattivo. Consulta [`backgroundTasks()`](#backgroundtasks). Richiede TypeScript SDK v0.2.139 o versioni successive |687| `backgroundTasks(toolUseId?)` | Sposta in background i comandi Bash e i subagent in esecuzione che il turno sta attendendo, come premere Ctrl+B nel terminale interattivo. Consulta [`backgroundTasks()`](#backgroundtasks). Richiede TypeScript SDK v0.2.139 o successiva |

686| `close()` | Chiude la query e termina il processo sottostante. Termina forzatamente la query e libera tutte le risorse |688| `close()` | Chiude la query e termina il processo sottostante. Termina forzatamente la query e libera tutte le risorse |

687 689 

688#### `setMcpPermissionModeOverride()`690#### `setMcpPermissionModeOverride()`

689 691 

690Sovrascrive la modalità di permesso per gli strumenti di un server MCP con una modalità più restrittiva di quella della sessione, oppure cancella l'override con `null`. Usalo quando una sessione viene eseguita in una modalità che salta le richieste di permesso per singola azione, ma gli strumenti di un server devono comunque essere verificati. Richiede TypeScript SDK v0.3.187 o versioni successive.692Sovrascrive la modalità di permesso per gli strumenti di un server MCP con una modalità più restrittiva di quella della sessione, oppure cancella l'override con `null`. Usalo quando una sessione viene eseguita in una modalità che salta le richieste di permesso per singola azione, ma gli strumenti di un server devono comunque essere revisionati. Richiede TypeScript SDK v0.3.187 o successiva.

691 693 

692Passa uno di questi tre valori come `mode`:694Passa uno di tre valori come `mode`:

693 695 

694* `'default'`: Claude Code valuta le chiamate agli strumenti di quel server come fa la [modalità manuale](https://code.claude.com/docs/it/permission-modes.md#available-modes).696* `'default'`: Claude Code valuta le chiamate agli strumenti di quel server come fa la [modalità Manual](https://code.claude.com/docs/it/permission-modes.md#available-modes).

695* `'auto'`: Claude Code instrada le chiamate agli strumenti di quel server attraverso il classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode). Claude Code rifiuta questo valore quando il classificatore non è disponibile per la sessione.697* `'auto'`: Claude Code instrada le chiamate agli strumenti di quel server attraverso il classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode). Claude Code rifiuta questo valore quando il classificatore non è disponibile per la sessione.

696* `null`: cancella l'override.698* `null`: cancella l'override.

697 699 

698L'override ha effetto solo mentre la sessione si trova in una modalità che salta le richieste di permesso per singola azione: `bypassPermissions` o `auto`. In qualsiasi altra modalità della sessione Claude Code ignora l'override, quindi non può mai ampliare ciò che la sessione consente.700L'override ha effetto solo mentre la sessione si trova in una modalità che salta le richieste di permesso per singola azione: `bypassPermissions` o `auto`. In qualsiasi altra modalità della sessione Claude Code non applica l'override, quindi non può mai ampliare ciò che la sessione consente.

699 701 

700La promise si risolve con `{ warning }` quando non è ancora noto alcun server con quel nome. Claude Code memorizza comunque l'override e lo applica non appena si connette un server con quel nome esatto, quindi l'avviso serve a verificare gli errori di battitura, non indica un fallimento.702La promise si risolve con `{ warning }` quando non è ancora noto alcun server con quel nome. Claude Code memorizza comunque l'override e lo applica quando si connette un server con esattamente quel nome, quindi l'avviso serve a rilevare errori di battitura, non indica un fallimento.

701 703 

702Disponibile solo in modalità di input in streaming, lo stesso vincolo di `setModel()` e `setPermissionMode()`.704Disponibile solo in modalità di input in streaming, con lo stesso vincolo di `setModel()` e `setPermissionMode()`.

703 705 

704#### `seedReadState()`706#### `seedReadState()`

705 707 

706Contrassegna un file come già letto in modo che un Edit successivo non fallisca con `File has not been read yet`. Usalo quando la tua applicazione ha rimosso dal contesto della conversazione un risultato `Read` precedente e Claude modificherà quel file subito dopo. Richiede TypeScript SDK v0.2.83 o versioni successive.708Contrassegna un file come già letto in modo che un Edit successivo non fallisca con `File has not been read yet`. Usalo quando la tua applicazione ha eliminato dal contesto della conversazione un risultato `Read` precedente e Claude modificherà quel file subito dopo. Richiede TypeScript SDK v0.2.83 o successiva.

707 709 

708Passa `mtime` come ora di modifica del file al momento di quella lettura precedente, in millisecondi interi dall'epoch, ad esempio `Math.floor(stat.mtimeMs)`. Se il file su disco è cambiato dopo quel momento, Claude Code salta il contrassegno.710Passa `mtime` come data di modifica del file al momento di quella lettura precedente, in millisecondi interi dall'epoch, ad esempio `Math.floor(stat.mtimeMs)`. Se il file su disco è cambiato dopo quel momento, Claude Code salta il contrassegno.

709 711 

710La promise si risolve indipendentemente dal fatto che il file sia stato contrassegnato, quindi una promise risolta non ti dice quale dei due casi si è verificato.712La promise si risolve sia che il file sia stato contrassegnato sia che non lo sia, quindi una promise risolta non ti dice quale dei due casi si è verificato.

711 713 

712#### `backgroundTasks()`714#### `backgroundTasks()`

713 715 

714Sposta in background i comandi Bash e i subagent in esecuzione che il turno sta attendendo, come quando premi Ctrl+B nel terminale interattivo. Passa il `toolUseId` di una chiamata a uno strumento per spostare in background solo il comando Bash o il subagent avviato da quella chiamata, oppure omettilo per spostare in background ogni attività in primo piano. Richiede TypeScript SDK v0.2.139 o versioni successive.716Sposta in background i comandi Bash e i subagent in esecuzione che il turno sta attendendo, come premere Ctrl+B nel terminale interattivo. Passa il `toolUseId` di una chiamata a uno strumento per spostare in background solo il comando Bash o il subagent avviato da quella chiamata, oppure omettilo per spostare in background ogni attività in primo piano. Richiede TypeScript SDK v0.2.139 o successiva.

715 717 

716Ogni chiamata a uno strumento spostata in background restituisce immediatamente a Claude un risultato che indica l'esecuzione in background, il turno continua e Claude Code emette un [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) quando l'attività termina.718Ogni chiamata a uno strumento spostata in background restituisce immediatamente a Claude un risultato di esecuzione in background, il turno continua e Claude Code emette un [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) quando l'attività termina.

717 719 

718In una sessione in cui le attività in background sono abilitate, la promise si risolve in un booleano:720In una sessione in cui le attività in background sono abilitate, la promise si risolve con un valore booleano:

719 721 

720* **`true`**: un'attività è stata spostata in background, oppure hai omesso `toolUseId`.722* **`true`**: un'attività è stata spostata in background, oppure hai omesso `toolUseId`.

721* **`false`**: il `toolUseId` che hai passato non corrisponde ad alcuna attività in primo piano.723* **`false`**: il `toolUseId` che hai passato non corrisponde ad alcuna attività in primo piano.


724 726 

725#### `applyFlagSettings()`727#### `applyFlagSettings()`

726 728 

727Modifica le [impostazioni](https://code.claude.com/docs/it/settings.md) di una sessione in esecuzione senza riavviare la query. Usalo quando un'impostazione priva di un setter dedicato deve cambiare a metà sessione, ad esempio per restringere `permissions` dopo che l'agente ha letto input non attendibile. `setModel()` e `setPermissionMode()` sono setter dedicati per quelle due chiavi; `applyFlagSettings()` è la forma generale che accetta qualsiasi sottoinsieme delle chiavi delle impostazioni, e passare `model` qui si comporta allo stesso modo di `setModel()`.729Modifica le [impostazioni](https://code.claude.com/docs/it/settings.md) di una sessione in esecuzione senza riavviare la query. Usalo quando un'impostazione che non ha un setter dedicato deve cambiare a metà sessione, ad esempio per restringere `permissions` dopo che l'agente ha letto input non attendibile. `setModel()` e `setPermissionMode()` sono setter dedicati per queste due chiavi; `applyFlagSettings()` è la forma generica che accetta qualsiasi sottoinsieme delle chiavi delle impostazioni, e passare `model` qui si comporta come `setModel()`.

728 730 

729Solo alcune chiavi hanno effetto a metà sessione:731Solo alcune chiavi hanno effetto a metà sessione:

730 732 

731* **Applicate al turno successivo**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Cambiare `agent` applica al turno successivo anche l'override del modello e gli hook di quell'agente. Il suo prompt di sistema si applica al turno successivo oppure, in una sessione che [riutilizza un prompt di sistema registrato](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session), una volta che la sessione viene compattata.733* **Applicate al turno successivo**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Il cambio di `agent` applica anche l'override del modello e gli hook di quell'agente al turno successivo. Il suo prompt di sistema si applica al turno successivo oppure, in una sessione che [riusa un prompt di sistema registrato](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session), una volta che la sessione viene compattata.

732* **Applicate durante il turno corrente**: `model`. Se cambi `model` mentre Claude sta lavorando a un turno, la risposta che Claude sta già generando termina con il vecchio modello, e il resto del turno, a partire dalla chiamata successiva che Claude Code fa al modello, usa quello nuovo. I subagent mantengono il proprio modello. Prima della v2.1.212, un cambio a metà turno attendeva il turno successivo.734* **Applicate durante il turno corrente**: `model`. Se cambi `model` mentre Claude sta lavorando a un turno, la risposta che Claude sta già generando termina con il vecchio modello, e il resto del turno, a partire dalla chiamata successiva che Claude Code effettua al modello, usa quello nuovo. I subagent mantengono il proprio modello. Prima della v2.1.212, un cambio a metà turno attendeva il turno successivo.

733* **Nessun effetto a metà sessione**: le opzioni del prompt di sistema. Vengono risolte una sola volta all'avvio, quindi la sessione in esecuzione mantiene il valore originale anche se la chiamata riesce. Per cambiarle, avvia una nuova sessione.735* **Nessun effetto a metà sessione**: le opzioni del prompt di sistema. Vengono risolte una sola volta all'avvio, quindi la sessione in esecuzione mantiene il valore originale anche se la chiamata va a buon fine. Per modificarle, avvia una nuova sessione.

734 736 

735`effortLevel` accetta il nome di un [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level). Accetta anche `"ultracode"`, che richiede lo sforzo `xhigh` con [ultracode](https://code.claude.com/docs/it/workflows.md#let-claude-decide-with-ultracode) attivo. `applyFlagSettings()` dichiara `effortLevel` senza quel valore, quindi in TypeScript passa `{ ultracode: true, effortLevel: "xhigh" }` per ottenere lo stesso risultato, oppure la sola chiave [`ultracode`](https://code.claude.com/docs/it/settings-reference#ultracode) per attivare ultracode al livello di sforzo corrente della sessione. Il valore `ultracode` richiede Claude Code v2.1.203 o successivo ed è accettato solo da `applyFlagSettings()`, non dalla chiave `effortLevel` in un file di impostazioni. Prima della v2.1.284, la sola chiave `ultracode` impostava anche il livello su `xhigh`.737`effortLevel` accetta il nome di un [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level). Accetta anche `"ultracode"`, che richiede uno sforzo `xhigh` con [ultracode](https://code.claude.com/docs/it/workflows.md#let-claude-decide-with-ultracode) attivo. `applyFlagSettings()` dichiara `effortLevel` senza quel valore, quindi in TypeScript passa `{ ultracode: true, effortLevel: "xhigh" }` per ottenere lo stesso risultato, oppure solo la chiave [`ultracode`](https://code.claude.com/docs/it/settings-reference#ultracode) per attivare ultracode al livello di sforzo corrente della sessione. Il valore `ultracode` richiede Claude Code v2.1.203 o successiva ed è accettato solo da `applyFlagSettings()`, non dalla chiave `effortLevel` in un file di impostazioni. Prima della v2.1.284, la sola chiave `ultracode` impostava anche il livello su `xhigh`.

736 738 

737I valori vengono scritti nel livello delle impostazioni da flag, sottoposti a merge sopra quanto impostato all'avvio dall'opzione `settings` inline di `query()`. Si tratta dello stesso livello che la [sezione sulla precedenza in questa pagina](#settings-precedence) chiama opzioni programmatiche.739I valori vengono scritti nel livello di impostazioni dei flag, con merge sopra ciò che l'opzione inline `settings` di `query()` ha impostato all'avvio. Si tratta dello stesso livello che la [sezione sulla precedenza in questa pagina](#settings-precedence) chiama opzioni programmatiche.

738 740 

739Le chiamate successive eseguono un merge superficiale delle chiavi di primo livello. Una seconda chiamata con `{ permissions: {...} }` sostituisce l'intero oggetto `permissions` della chiamata precedente invece di eseguirne un merge profondo.741Le chiamate successive eseguono un merge superficiale delle chiavi di primo livello. Una seconda chiamata con `{ permissions: {...} }` sostituisce l'intero oggetto `permissions` della chiamata precedente invece di eseguirne un merge profondo.

740 742 

741Per rimuovere una chiave impostata con `applyFlagSettings()`, passa `null` per quella chiave. La maggior parte delle chiavi ripiega quindi prima su un valore impostato all'avvio dall'opzione `settings` di `query()`, poi sulle fonti con precedenza inferiore. Un `model` rimosso torna al [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md), anche quando un file di impostazioni imposta `model`. Passare `undefined` non ha alcun effetto perché la serializzazione JSON lo scarta.743Per cancellare una chiave impostata con `applyFlagSettings()`, passa `null` per quella chiave. La maggior parte delle chiavi ripiega quindi prima su un valore che l'opzione `settings` di `query()` ha impostato all'avvio, poi sulle origini con precedenza inferiore. Un `model` cancellato torna al [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md), anche quando un file di impostazioni imposta `model`. Passare `undefined` non ha effetto perché la serializzazione JSON lo elimina.

742 744 

743Oltre a `model`, tre chiavi reimpostano lo stato della sessione invece di ripiegare su un altro valore:745Tre chiavi oltre a `model` reimpostano lo stato della sessione invece di ripiegare su un altro valore:

744 746 

745* `effortLevel: null` riporta la sessione al livello di sforzo predefinito del modello, non all'opzione `effort` di `query()` né a un `effortLevel` di un file di impostazioni.747* `effortLevel: null` riporta la sessione al livello di sforzo predefinito del modello, non all'opzione `effort` di `query()` né a un `effortLevel` da un file di impostazioni.

746* `agent: null` esegue il thread principale senza agente, a partire dal turno successivo, invece di ripristinare l'opzione `agent` di `query()` o un `agent` di un file di impostazioni. Se l'agente rimosso aveva applicato il proprio modello, la sessione torna al modello risolto all'avvio.748* `agent: null` esegue il thread principale senza agente, a partire dal turno successivo, invece di ripristinare l'opzione `agent` di `query()` o un `agent` da un file di impostazioni. Se l'agente cancellato aveva applicato un proprio modello, la sessione torna al modello che aveva risolto all'avvio.

747* `ultracode: null` disattiva ultracode, come fa `false`, invece di ripristinare un valore `ultracode` di un file di impostazioni. La sessione mantiene il livello di sforzo corrente, quindi passa `effortLevel` nella stessa chiamata per cambiarlo.749* `ultracode: null` disattiva ultracode, come fa `false`, invece di ripristinare un valore `ultracode` da un file di impostazioni. La sessione mantiene il livello di sforzo corrente, quindi passa `effortLevel` nella stessa chiamata per modificarlo.

748 750 

749Disponibile solo in modalità di input in streaming, lo stesso vincolo di `setModel()` e `setPermissionMode()`.751Disponibile solo in modalità di input in streaming, con lo stesso vincolo di `setModel()` e `setPermissionMode()`.

750 752 

751L'esempio seguente cambia il modello attivo a metà sessione, poi rimuove l'override così che il modello torni al [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md).753L'esempio seguente cambia il modello attivo a metà sessione, poi cancella l'override in modo che il modello torni al [modello predefinito di Claude Code](https://code.claude.com/docs/it/model-config.md).

752 754 

753```typescript theme={null}755```typescript theme={null}

754import { query } from "@anthropic-ai/claude-agent-sdk";756import { query } from "@anthropic-ai/claude-agent-sdk";


768 770 

769#### `updateSettings()`771#### `updateSettings()`

770 772 

771Scrive una chiave consentita in un file di impostazioni su disco, così che il valore persista per le sessioni successive che caricano quella fonte. Ogni fonte accetta una sola chiave, con un valore stringa:773Scrive una chiave consentita in un file di impostazioni su disco, in modo che il valore persista per le sessioni successive che caricano quell'origine. Ogni origine accetta una chiave, con un valore stringa:

772 774 

773* **`"localSettings"`**: accetta `outputStyle` e ne esegue il merge nel file di impostazioni locali del progetto, `.claude/settings.local.json`. Il nuovo stile ha effetto alla richiesta successiva della sessione.775* **`"localSettings"`**: accetta `outputStyle` e ne esegue il merge nel file di impostazioni locali del progetto, `.claude/settings.local.json`. Il nuovo stile ha effetto alla richiesta successiva della sessione.

774* **`"userSettings"`**: accetta `effortLevel` e lo salva come [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) predefinito per il modello corrente della sessione, sotto [`modelSettings`](https://code.claude.com/docs/it/settings-reference#modelsettings) nel tuo file di impostazioni utente. Passare `max` non scrive nulla, perché `max` vale solo per la sessione. In ogni caso la sessione in esecuzione mantiene il livello di sforzo corrente, quindi chiama [`applyFlagSettings()`](#applyflagsettings) quando vuoi cambiare anche quello. Questa fonte richiede TypeScript SDK v0.3.277 o successivo, che include Claude Code v2.1.277.776* **`"userSettings"`**: accetta `effortLevel` e lo salva come [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) predefinito per il modello corrente della sessione, sotto [`modelSettings`](https://code.claude.com/docs/it/settings-reference#modelsettings) nel tuo file di impostazioni utente. Passando `max` non viene scritto nulla, perché `max` vale solo per la sessione. In entrambi i casi la sessione in esecuzione mantiene il livello di sforzo corrente, quindi chiama [`applyFlagSettings()`](#applyflagsettings) se vuoi modificare anche quello. Questa origine richiede TypeScript SDK v0.3.277 o successiva, che include Claude Code v2.1.277.

775 777 

776La chiamata viene rifiutata quando la richiesta contiene qualsiasi altra chiave, quando la sessione viene eseguita su un trasporto remoto e quando le [`settingSources`](#options) della sessione escludono la fonte indicata. L'eliminazione di una chiave non è supportata.778La chiamata viene rifiutata quando la richiesta contiene qualsiasi altra chiave, quando la sessione viene eseguita su un trasporto remoto e quando i [`settingSources`](#options) della sessione escludono l'origine che indichi. L'eliminazione di una chiave non è supportata.

777 779 

778#### `toggleMcpServer()`780#### `toggleMcpServer()`

779 781 

780Disabilitare un server lo disconnette e ne rimuove gli strumenti dalla sessione. Per i server aggiunti a metà sessione e per i server in-process, questo dipende dalla tua versione di Claude Code:782La disabilitazione di un server lo disconnette e rimuove i suoi strumenti dalla sessione. Per i server aggiunti a metà sessione e per i server in-process, questo dipende dalla tua versione di Claude Code:

781 783 

782* Un server stdio, SSE o HTTP aggiunto a metà sessione con `setMcpServers()`: la rimozione dei suoi strumenti richiede Claude Code v2.1.285 o successivo.784* Un server stdio, SSE o HTTP che hai aggiunto a metà sessione con `setMcpServers()`: la rimozione dei suoi strumenti richiede Claude Code v2.1.285 o successiva.

783* Un server in-process creato con [`createSdkMcpServer()`](#createsdkmcpserver), che tu lo abbia passato in `mcpServers` o con `setMcpServers()`: la sua disconnessione e la rimozione dei suoi strumenti richiedono Claude Code v2.1.286 o successivo. Disabilitarne uno fa inoltre fallire le sue chiamate agli strumenti ancora in esecuzione, così Claude riceve immediatamente un risultato di errore per ciascuna di esse, senza attendere che il tuo handler restituisca un valore.785* Un server in-process che hai creato con [`createSdkMcpServer()`](#createsdkmcpserver), sia che tu l'abbia passato in `mcpServers` sia con `setMcpServers()`: la sua disconnessione e la rimozione dei suoi strumenti richiedono Claude Code v2.1.286 o successiva. La disabilitazione fa anche fallire le sue chiamate agli strumenti ancora in esecuzione, quindi Claude riceve immediatamente un risultato di errore per ciascuna di esse, senza attendere che il tuo handler restituisca un valore.

784 786 

785### `WarmQuery`787### `WarmQuery`

786 788 


798| Metodo | Descrizione |800| Metodo | Descrizione |

799| :- | :- |801| :- | :- |

800| `query(prompt)` | Invia un prompt al sottoprocesso preriscaldato e restituisce una [`Query`](#query-object). Può essere chiamato una sola volta per `WarmQuery` |802| `query(prompt)` | Invia un prompt al sottoprocesso preriscaldato e restituisce una [`Query`](#query-object). Può essere chiamato una sola volta per `WarmQuery` |

801| `close()` | Chiude il sottoprocesso senza inviare un prompt. Usalo per scartare una warm query non più necessaria |803| `close()` | Chiude il sottoprocesso senza inviare un prompt. Usalo per scartare una warm query che non serve più |

802 804 

803`WarmQuery` implementa `AsyncDisposable`, quindi può essere usato con `await using` per la pulizia automatica.805`WarmQuery` implementa `AsyncDisposable`, quindi può essere usato con `await using` per la pulizia automatica.

804 806 

805### `SpareProcess`807### `SpareProcess`

806 808 

807*Alpha.* Handle restituito da [`prewarm()`](#prewarm): un processo Claude Code avviato che non è ancora associato a una sessione e può essere rivendicato una sola volta. Richiede TypeScript Agent SDK v0.3.282 o successivo.809*Alpha.* Handle restituito da [`prewarm()`](#prewarm): un processo Claude Code avviato che non è ancora associato a una sessione e può essere rivendicato una sola volta. Richiede TypeScript Agent SDK v0.3.282 o successiva.

808 810 

809```typescript theme={null}811```typescript theme={null}

810interface SpareProcess extends AsyncDisposable {812interface SpareProcess extends AsyncDisposable {


822 824 

823| Membro | Descrizione |825| Membro | Descrizione |

824| :- | :- |826| :- | :- |

825| `claim({ prompt, options })` | Associa il processo di riserva a una sessione in `options.cwd` e invia il primo messaggio. Restituisce una [`Query`](#query-object) in modo sincrono, come fa `query()`. Può essere chiamato una sola volta |827| `claim({ prompt, options })` | Associa il processo di riserva a una sessione in `options.cwd` e invia il suo primo messaggio. Restituisce una [`Query`](#query-object) in modo sincrono, come fa `query()`. Può essere chiamato una sola volta |

826| `claimed` | Si risolve con la directory di lavoro e l'ID della sessione una volta che Claude Code accetta la rivendicazione. Viene rifiutata quando Claude Code rifiuta la rivendicazione, quando il processo è terminato o è stato chiuso prima e, con un messaggio che inizia con `option_not_applied`, quando la sessione è in esecuzione senza il `model` o il `maxThinkingTokens` che hai richiesto |828| `claimed` | Si risolve con la directory di lavoro e l'ID della sessione quando Claude Code accetta la rivendicazione. Viene rifiutata quando Claude Code rifiuta la rivendicazione, quando il processo è terminato o è stato chiuso prima e, con un messaggio che inizia con `option_not_applied`, quando la sessione è in esecuzione senza il `model` o il `maxThinkingTokens` che hai richiesto |

827| `exited` | Si conclude quando il processo termina, rivendicato o meno. Sostituisci un processo di riserva che termina prima che tu lo rivendichi |829| `exited` | Si conclude quando il processo termina, che sia stato rivendicato o meno. Sostituisci un processo di riserva che termina prima che tu lo rivendichi |

828| `close()` | Termina il processo. Prima di una rivendicazione, scarta il processo di riserva e rifiuta `claimed` |830| `close()` | Termina il processo. Prima di una rivendicazione, scarta il processo di riserva e rifiuta `claimed` |

829 831 

830`options.cwd` è obbligatorio. Una rivendicazione può anche impostare `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, una sovrapposizione di impostazioni da flag in `settings`, `appendSystemPrompt`, `title`, `agents` e token per sessione in `env`.832`options.cwd` è obbligatorio. Una rivendicazione può anche impostare `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, una sovrapposizione delle impostazioni dei flag in `settings`, `appendSystemPrompt`, `title`, `agents` e token per sessione in `env`.

831 833 

832Claude Code può rifiutare una rivendicazione, ad esempio per una cartella che non esiste o per una cartella le cui impostazioni di progetto impostano `env`, `agent` o `model`. Dopo un rifiuto, un prompt già inviato da `claim()` riceve un risultato di errore il cui testo inizia con `not_claimed`, e la query restituita genera quindi un'eccezione. Racchiudi il ciclo 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()`.834Claude 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 ciclo 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()`.

833 835 

834### `SDKControlInitializeResponse`836### `SDKControlInitializeResponse`

835 837 


858};860};

859```861```

860 862 

861`hooks_applied` indica se Claude Code ha registrato gli `hooks` contenuti nella richiesta `initialize`. L'SDK invia quella richiesta una volta all'avvio della sessione e di nuovo a ogni chiamata a [`reinitialize()`](#query-object). Il campo richiede Agent SDK v0.3.238 o successivo.863`hooks_applied` indica se Claude Code ha registrato gli `hooks` contenuti nella richiesta `initialize`. L'SDK invia questa richiesta una volta all'avvio della sessione e di nuovo a ogni chiamata a [`reinitialize()`](#query-object). Il campo richiede Agent SDK v0.3.238 o successiva.

862 864 

863Claude Code omette il campo quando la richiesta non conteneva hook. Quando la richiesta conteneva hook, il valore dipende dal fatto che la richiesta sia il primo initialize della sessione e, per uno ripetuto, da come ha raggiunto la sessione:865Claude Code omette il campo quando la richiesta non conteneva hook. Quando la richiesta conteneva hook, il valore dipende dal fatto che la richiesta sia la prima inizializzazione della sessione e, per una ripetuta, da come ha raggiunto la sessione:

864 866 

865* `true`: Claude Code ha registrato gli hook. Il primo initialize di una sessione restituisce questo valore. Anche un initialize ripetuto inviato tramite lo stdin della CLI restituisce `true`. In quel caso gli hook della nuova richiesta sostituiscono quelli registrati in precedenza.867* `true`: Claude Code ha registrato gli hook. La prima inizializzazione di una sessione restituisce questo valore. Anche un'inizializzazione ripetuta inviata tramite lo stdin della CLI restituisce `true`. In questo caso gli hook della nuova richiesta sostituiscono quelli registrati in precedenza.

866* `false`: Claude Code ha ignorato gli hook. Un initialize ripetuto inviato a una sessione remota restituisce questo valore, così un secondo client che si unisce a una sessione non può sostituire gli hook registrati dal primo client.868* `false`: Claude Code ha ignorato gli hook. Un'inizializzazione ripetuta inviata a una sessione remota restituisce questo valore, in modo che un secondo client che si unisce a una sessione non possa sostituire gli hook registrati dal primo client.

867 869 

868Prima di Agent SDK v0.3.238, la risposta non conteneva mai il campo e Claude Code ignorava `hooks` a ogni initialize ripetuto.870Prima di Agent SDK v0.3.238, la risposta non conteneva mai il campo e Claude Code ignorava `hooks` a ogni inizializzazione ripetuta.

869 871 

870Il campo `sdkMcpServerManifests` della richiesta e il campo `sdk_mcp_manifests_parked` della risposta riguardano i [server MCP SDK](https://code.claude.com/docs/it/agent-sdk/custom-tools.md) in-process creati con [`createSdkMcpServer()`](#createsdkmcpserver). La tua applicazione non imposta né legge nessuno dei due campi.872Il campo `sdkMcpServerManifests` della richiesta e il campo `sdk_mcp_manifests_parked` della risposta riguardano i [server MCP SDK](https://code.claude.com/docs/it/agent-sdk/custom-tools.md) in-process che hai creato con [`createSdkMcpServer()`](#createsdkmcpserver). La tua applicazione non imposta né legge nessuno dei due campi.

871 873 

872`claude_code_version` è la versione di Claude Code del processo che esegue i turni della sessione. È lo stesso valore contenuto nel messaggio init [`SDKSystemMessage`](#sdksystemmessage), quindi puoi leggere la versione della CLI prima del primo turno.874`claude_code_version` è la versione di Claude Code del processo che esegue i turni della sessione. È lo stesso valore contenuto nel messaggio di inizializzazione [`SDKSystemMessage`](#sdksystemmessage), quindi puoi leggere la versione della CLI prima del primo turno.

873 875 

874* Il campo richiede Agent SDK v0.3.296 o successiva, che include Claude Code v2.1.296.876* Il campo richiede Agent SDK v0.3.296 o successiva, che include Claude Code v2.1.296.

875* Se il campo è `undefined` e hai impostato `pathToClaudeCodeExecutable`, puntalo a Claude Code v2.1.296 o successiva.877* Se il campo è `undefined` e hai impostato `pathToClaudeCodeExecutable`, puntalo a Claude Code v2.1.296 o successiva.

876 878 

877La risposta riporta sempre `fast_mode_state` e, quando qualcosa blocca la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md), `fast_mode_disabled_reason` contiene accanto ad esso il codice del motivo, così puoi spiegare lo stato bloccato invece di ricavare di nuovo la disponibilità. Entrambi i comportamenti richiedono Claude Code v2.1.219 o successivo. Prima della v2.1.219, la risposta ometteva `fast_mode_state` quando la modalità veloce non era disponibile e non conteneva mai un motivo. Per i codici dei motivi e il loro significato, consulta [`fast_mode_disabled_reason`](#sdkresultmessage) nel messaggio di risultato.879La risposta riporta sempre `fast_mode_state` e, quando qualcosa blocca la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md), `fast_mode_disabled_reason` riporta accanto il codice del motivo, così puoi spiegare lo stato di blocco invece di ricavare di nuovo la disponibilità. Entrambi i comportamenti richiedono Claude Code v2.1.219 o successiva. Prima della v2.1.219, la risposta ometteva `fast_mode_state` quando la modalità veloce non era disponibile e non riportava mai un motivo. Per i codici dei motivi e il loro significato, consulta [`fast_mode_disabled_reason`](#sdkresultmessage) nel messaggio di risultato.

878 880 

879Il wrapper della risposta di controllo per un `initialize` riuscito contiene anche un array `pending_permission_requests`. Il campo si trova sul wrapper della risposta stesso, non nel payload `SDKControlInitializeResponse` riportato sopra. Ogni voce è un messaggio `control_request` completo, con la stessa forma `{ type: "control_request", request_id, request }` che la sessione trasmette in streaming per le richieste di permesso durante l'esecuzione.881Il wrapper della risposta di controllo per un `initialize` riuscito contiene anche un array `pending_permission_requests`. Il campo si trova sul wrapper della risposta stesso, non nel payload `SDKControlInitializeResponse` riportato sopra. Ogni voce è un messaggio `control_request` completo con la stessa forma `{ type: "control_request", request_id, request }` che la sessione trasmette in streaming per le richieste di permesso durante l'esecuzione.

880 882 

881L'array elenca le richieste di permesso che questo processo Claude Code ha emesso e non ha ancora risolto. L'SDK legge l'array al posto tuo e inoltra ogni voce alla tua callback [`canUseTool`](#canusetool), lo stesso nuovo recapito che [`reinitialize()`](#query-object) attiva dopo un'interruzione del trasporto. Gestisci gli ID di richiesta ripetuti in modo idempotente, perché una voce può ripetere una richiesta che la callback ha già ricevuto prima che la connessione cadesse.883L'array elenca le richieste di permesso che questo processo Claude Code ha emesso e non ha ancora risolto. L'SDK legge l'array per te e invia ogni voce alla tua callback [`canUseTool`](#canusetool), la stessa riconsegna che [`reinitialize()`](#query-object) attiva dopo un'interruzione del trasporto. Gestisci gli ID di richiesta ripetuti in modo idempotente, perché una voce può ripetere una richiesta che la callback ha già ricevuto prima che la connessione cadesse.

882 884 

883L'array è sempre presente in una risposta `initialize` riuscita ed è vuoto quando questo processo non ha richieste di permesso irrisolte. Richiede Claude Code v2.1.268 o successivo. Le versioni precedenti potevano omettere il campo, quindi se analizzi tu stesso il protocollo wire, considera un campo mancante come segno di una CLI meno recente e non come prova che non ci sia nulla in sospeso.885L'array è sempre presente in una risposta `initialize` riuscita ed è vuoto quando questo processo non ha richieste di permesso non risolte. Richiede Claude Code v2.1.268 o successiva. Le versioni precedenti potevano omettere il campo, quindi se analizzi tu stesso il protocollo wire, interpreta un campo mancante come indice di una CLI meno recente e non come prova che non ci sia nulla in sospeso.

884 886 

885### `SDKControlInterruptResponse`887### `SDKControlInterruptResponse`

886 888 

887La ricevuta dell'interruzione: il valore con cui [`interrupt()`](#query-object) si risolve su una CLI che dichiara la capacità `interrupt_receipt_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage). Richiede Claude Code v2.1.205 o successivo. Le CLI precedenti rispondono all'interruzione con un payload di successo vuoto, quindi `interrupt()` si risolve con `undefined`.889La ricevuta dell'interruzione: il valore con cui [`interrupt()`](#query-object) si risolve su una CLI che dichiara la capacità `interrupt_receipt_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage). Richiede Claude Code v2.1.205 o successiva. Le CLI precedenti rispondono all'interruzione con un payload di successo vuoto, quindi `interrupt()` si risolve con `undefined`.

888 890 

889```typescript theme={null}891```typescript theme={null}

890type SDKControlInterruptResponse = {892type SDKControlInterruptResponse = {


893};895};

894```896```

895 897 

896`still_queued` elenca gli UUID dei messaggi utente in sospeso al momento dell'arrivo dell'interruzione: i messaggi ancora in coda, più quelli che Claude Code aveva già prelevato dalla coda per il turno successivo. Una volta avviato il primo turno della sessione, Claude Code elabora i messaggi elencati dopo l'interruzione, a meno che tu non li annulli prima, e può accorparne diversi in un unico turno. Se interrompi prima dell'avvio del primo turno, Claude Code interrompe quel turno non appena inizia, e i messaggi elencati in quel turno non ricevono risposta.898`still_queued` elenca gli UUID dei messaggi dell'utente che erano in sospeso al momento dell'interruzione: i messaggi ancora in coda, più quelli che Claude Code aveva già prelevato dalla coda per il turno successivo. Una volta iniziato il primo turno della sessione, Claude Code elabora i messaggi elencati dopo l'interruzione a meno che tu non li annulli prima, e può unirne diversi in un unico turno. Se interrompi prima che inizi il primo turno, Claude Code interrompe quel turno non appena inizia e i messaggi elencati in quel turno non ricevono risposta.

897 899 

898Usa la ricevuta per decidere se inviare di nuovo qualcosa. Un messaggio elencato che non annulli entra nella conversazione indipendentemente dal fatto che riceva una risposta, quindi inviarlo di nuovo lo recapita a Claude due volte.900Usa la ricevuta per decidere se inviare di nuovo qualcosa. Un messaggio elencato che non annulli entra nella conversazione indipendentemente dal fatto che riceva una risposta, quindi inviarlo di nuovo lo consegna a Claude due volte.

899 901 

900Interpreta l'elenco tenendo conto di queste avvertenze:902Interpreta l'elenco tenendo conto di queste avvertenze:

901 903 

902* Compaiono solo i messaggi accodati con un UUID. Un array vuoto non significa che non verrà eseguito nient'altro.904* Compaiono solo i messaggi accodati con un UUID. Un array vuoto non significa che nient'altro verrà eseguito.

903* Vengono elencati solo i messaggi del thread principale. I messaggi indirizzati a un subagent non sono inclusi.905* Vengono elencati solo i messaggi del thread principale. I messaggi indirizzati a un subagent sono esclusi.

904* L'elenco può includere UUID che il tuo client non ha mai inviato, come i trigger delle [attività pianificate con ambito di sessione](https://code.claude.com/docs/it/scheduled-tasks.md). Ignora gli UUID che non riconosci invece di trattarli come un errore.906* L'elenco può includere UUID che il tuo client non ha mai inviato, come i trigger delle [attività pianificate con ambito di sessione](https://code.claude.com/docs/it/scheduled-tasks.md). Ignora gli UUID che non riconosci invece di trattarli come un errore.

905 907 

906Un client che gestisce direttamente il protocollo di controllo della CLI, invece di passare da `interrupt()`, può impostare `cancel_queued: true` nella richiesta di controllo `interrupt`. Claude Code v2.1.219 e successivi dichiarano il supporto con la capacità `interrupt_cancel_queued_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage); le CLI meno recenti ignorano il campo e lasciano che i messaggi in coda vengano eseguiti normalmente. Un'interruzione di questo tipo annulla anche ogni messaggio che altrimenti verrebbe elencato in `still_queued`: la ricevuta li elenca invece in `cancelled`, `still_queued` è vuoto e nessuno di essi viene eseguito.908Un client che gestisce direttamente il protocollo di controllo della CLI, anziché tramite `interrupt()`, può impostare `cancel_queued: true` sulla richiesta di controllo `interrupt`. Claude Code v2.1.219 e successive dichiarano il supporto con la capacità `interrupt_cancel_queued_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage); le CLI meno recenti ignorano il campo e lasciano che i messaggi in coda vengano eseguiti come di consueto. Un'interruzione di questo tipo annulla anche ogni messaggio che altrimenti verrebbe elencato in `still_queued`: la ricevuta li elenca invece in `cancelled`, `still_queued` è vuoto e nessuno di essi viene eseguito.

907 909 

908L'elenco `cancelled` ha le stesse avvertenze di `still_queued`. Il metodo `interrupt()` non invia mai `cancel_queued`, quindi le ricevute con cui si risolve non contengono `cancelled`.910L'elenco `cancelled` ha le stesse avvertenze di `still_queued`. Il metodo `interrupt()` non invia mai `cancel_queued`, quindi le ricevute con cui si risolve non contengono `cancelled`.

909 911 

910La ricevuta è un'istantanea acquisita nel momento in cui l'interruzione viene elaborata e, in caso di interruzione pulita, arriva prima del [`SDKResultMessage`](#sdkresultmessage) del turno interrotto. Leggi la ricevuta invece di ispezionare la coda dopo quel risultato: il ciclo avvia immediatamente il turno successivo in coda, quindi la coda che ispezioni dopo il risultato è già cambiata.912La ricevuta è un'istantanea acquisita nel momento in cui l'interruzione viene elaborata e, in caso di interruzione pulita, arriva prima dell'[`SDKResultMessage`](#sdkresultmessage) del turno interrotto. Leggi la ricevuta invece di esaminare la coda dopo quel risultato: il ciclo avvia immediatamente il turno successivo in coda, quindi la coda che esamini dopo il risultato è già cambiata.

911 913 

912### `SDKControlGetContextUsageResponse`914### `SDKControlGetContextUsageResponse`

913 915 

914Tipo restituito da [`getContextUsage()`](#query-object). Con il `detail` predefinito, la risposta include il payload che Claude Code visualizza per il comando `/context` in una sessione interattiva. Oltre ai conteggi dei token, quel payload contiene campi di visualizzazione come `color` e `gridRows` che Claude Code usa per disegnare la griglia di utilizzo di `/context`.916Tipo restituito da [`getContextUsage()`](#query-object). Con il valore predefinito di `detail`, la risposta include il payload che Claude Code visualizza per il comando `/context` in una sessione interattiva. Oltre ai conteggi dei token, quel payload contiene campi di visualizzazione come `color` e `gridRows` che Claude Code usa per disegnare la griglia di utilizzo di `/context`.

915 917 

916L'argomento facoltativo `detail` del metodo sceglie come Claude Code conta ogni categoria. L'argomento `detail` richiede Agent SDK v0.3.257 o successivo.918L'argomento facoltativo `detail` del metodo sceglie come Claude Code conta ciascuna categoria. L'argomento `detail` richiede Agent SDK v0.3.257 o successiva.

917 919 

918* **`'full'`**: il valore predefinito. Claude Code conta ogni categoria con richieste API di [conteggio dei token](https://platform.claude.com/docs/en/build-with-claude/token-counting). Queste richieste non compaiono nel flusso dei messaggi, quindi un tracciamento dei costi basato sul flusso non le vede. Sull'API Anthropic, il conteggio dei token non viene addebitato.920* **`'full'`**: il valore predefinito. Claude Code conta ciascuna categoria con richieste API di [conteggio dei token](https://platform.claude.com/docs/en/build-with-claude/token-counting). Queste richieste non compaiono nel flusso dei messaggi, quindi il tracciamento dei costi che legge il flusso non le vede. Sull'API di Anthropic, il conteggio dei token non viene fatturato.

919* **`'summary'`**: passa `{ detail: 'summary' }` per ottenere invece una risposta basata sull'utilizzo dell'ultima risposta e su stime locali. Non viene inviata alcuna richiesta di conteggio dei token, e i numeri per categoria sono approssimativi.921* **`'summary'`**: passa `{ detail: 'summary' }` per ottenere invece una risposta basata sull'utilizzo dell'ultima risposta e su stime locali. Non viene inviata alcuna richiesta di conteggio dei token e i numeri per categoria sono approssimativi.

920 922 

921Quando invii `/context` come prompt invece di chiamare il metodo, Claude Code allega un payload [`SDKContextUsage`](#sdkcontextusage) al campo `context_usage` del messaggio dell'assistente che restituisce il risultato. Quel campo richiede Agent SDK v0.3.232 o successivo.923Quando invii `/context` come prompt invece di chiamare il metodo, Claude Code allega un payload [`SDKContextUsage`](#sdkcontextusage) al campo `context_usage` del messaggio dell'assistente che fornisce il risultato. Quel campo richiede Agent SDK v0.3.232 o successiva.

922 924 

923In `SDKControlGetContextUsageResponse`, `categories[].id`, `mcpInstructions` e i campi `pluginId` e `path` delle voci di `agents` e `skills.skillFrontmatter` richiedono Agent SDK v0.3.304 o successivo.925In `SDKControlGetContextUsageResponse`, `categories[].id`, `mcpInstructions` e i campi `pluginId` e `path` delle voci `agents` e `skills.skillFrontmatter` richiedono Agent SDK v0.3.304 o successiva.

924 926 

925```typescript theme={null}927```typescript theme={null}

926type SDKControlGetContextUsageResponse = {928type SDKControlGetContextUsageResponse = {


1042 1044 

1043Leggi l'attribuzione dei token dai campi di tipo collezione:1045Leggi l'attribuzione dei token dai campi di tipo collezione:

1044 1046 

1045* `categories` contiene i totali per categoria. Il campo `kind` di ogni voce classifica la riga con gli stessi valori di [`SDKContextUsageCategory`](#sdkcontextusagecategory). Classifica le righe in base a questo campo anziché al `name` visualizzato. Il campo richiede Agent SDK v0.3.268 o successivo.1047* `categories` contiene i totali per categoria. Il campo `kind` di ogni voce classifica la riga con gli stessi valori di [`SDKContextUsageCategory`](#sdkcontextusagecategory). Classifica le righe in base a questo campo anziché al `name` visualizzato. Il campo richiede Agent SDK v0.3.268 o successiva.

1046* `mcpTools` e `agents` attribuiscono i token ai singoli strumenti MCP e ai subagent.1048* `mcpTools` e `agents` attribuiscono i token ai singoli strumenti MCP e subagent.

1047* `memoryFiles` elenca ogni file di memoria caricato con il relativo costo.1049* `memoryFiles` elenca ogni file di memoria caricato con il relativo costo.

1048* `skills.skillFrontmatter` attribuisce i token dell'elenco delle skill a ciascuna skill inclusa. I conteggi per skill misurano la voce di elenco di ciascuna skill così come Claude Code la invia effettivamente, che può essere più breve del frontmatter completo della skill. Confronta `skills.totalSkills` con `skills.includedSkills` per verificare se ogni skill rilevata è stata inclusa nell'elenco.1050* `skills.skillFrontmatter` attribuisce i token dell'elenco delle skill a ciascuna skill inclusa. I conteggi per skill misurano la voce di elenco di ciascuna skill così come Claude Code la invia effettivamente, che può essere più breve del frontmatter completo della skill. Confronta `skills.totalSkills` con `skills.includedSkills` per verificare se ogni skill rilevata è stata inclusa nell'elenco.

1049 1051 

1050`totalTokens` è l'utilizzo corrente del contesto della sessione, e `maxTokens` è la finestra rispetto alla quale viene misurato tale utilizzo. Quella finestra è la finestra di contesto del modello, oppure la finestra inferiore di compattazione automatica quando applicabile. `rawMaxTokens` contiene lo stesso valore di `maxTokens`, e `percentage` è `totalTokens` espresso come percentuale arrotondata di quella finestra. `apiUsage` contiene l'utilizzo dell'ultima risposta API, non un totale progressivo della sessione.1052`totalTokens` è l'utilizzo corrente del contesto della sessione e `maxTokens` è la finestra rispetto alla quale viene misurato tale utilizzo. Quella finestra è la finestra di contesto del modello, oppure la finestra inferiore di compattazione automatica quando applicabile. `rawMaxTokens` contiene lo stesso valore di `maxTokens` e `percentage` è `totalTokens` espresso come percentuale arrotondata di quella finestra. `apiUsage` contiene l'utilizzo dell'ultima risposta API, non un totale progressivo per la sessione.

1051 1053 

1052Claude Code lascia non impostate le diagnostiche facoltative `deferredBuiltinTools`, `systemTools` e `systemPromptSections`, quindi aspettati che siano assenti anche se il tipo le dichiara.1054Claude Code lascia non impostate le diagnostiche facoltative `deferredBuiltinTools`, `systemTools` e `systemPromptSections`, quindi aspettati che siano assenti anche se il tipo le dichiara.

1053 1055 

1054#### Trovare una riga per ID, i token delle istruzioni di un server o il plugin e il file di una voce1056#### Trovare una riga per ID, i token delle istruzioni di un server o il plugin e il file di una voce

1055 1057 

1056Le istruzioni dei server MCP sono le note d'uso che i server connessi forniscono e che Claude Code aggiunge al contesto, e la riga `mcp_instructions` di `categories` ne conta i token. Usa questi campi di [`getContextUsage()`](#query-object) per individuare una riga di `categories` tramite `id`, suddividere i token di `mcp_instructions` per server o trovare il plugin e il file dietro una voce di agente o skill:1058Le istruzioni dei server MCP sono le note d'uso che i server connessi forniscono e che Claude Code aggiunge al contesto, e la riga `mcp_instructions` di `categories` ne conta i token. Usa questi campi di [`getContextUsage()`](#query-object) per individuare una riga di `categories` tramite `id`, suddividere i token di `mcp_instructions` per server o trovare il plugin e il file dietro una voce di agente o di skill:

1057 1059 

1058| Campo | Dove si trova | Cosa contiene |1060| Campo | Dove si trova | Cosa contiene |

1059| :- | :- | :- |1061| :- | :- | :- |

1060| `id` | Ogni riga di `categories` | L'identificatore della riga, uno dei valori elencati dal [tipo di risposta](#sdkcontrolgetcontextusageresponse), come `mcp_instructions`. Confronta `id` per individuare una riga, oppure `kind` per raggruppare le righe. Una versione successiva di Claude Code può inviare un valore non elencato nei tipi installati, quindi tratta un `id` che non riconosci come assente |1062| `id` | Ogni riga di `categories` | L'identificatore della riga, uno dei valori elencati dal [tipo di risposta](#sdkcontrolgetcontextusageresponse), come `mcp_instructions`. Confronta `id` per individuare una riga, oppure `kind` per raggruppare le righe. Una versione successiva di Claude Code può inviare un valore che i tipi installati non elencano, quindi tratta un `id` che non riconosci come assente |

1061| `mcpInstructions` | La risposta | Una voce `{ serverName, tokens }` per ogni server MCP connesso che fornisce istruzioni, oppure un array vuoto quando nessuno lo fa. I valori `tokens` sono stime la cui somma corrisponde ai `tokens` della riga `mcp_instructions`. `serverName` è il `name` che [`mcpServerStatus()`](#query-object) riporta per quel server |1063| `mcpInstructions` | La risposta | Una voce `{ serverName, tokens }` per ogni server MCP connesso che fornisce istruzioni, oppure un array vuoto quando nessuno lo fa. I valori di `tokens` sono stime la cui somma corrisponde ai `tokens` della riga `mcp_instructions`. `serverName` è il `name` che [`mcpServerStatus()`](#query-object) riporta per quel server |

1062| `pluginId` | Voci di `agents` e `skills.skillFrontmatter` | Indica il plugin da cui proviene la voce, come ID nella forma `name@marketplace`, ed è assente per una voce che non proviene da un plugin. Quando il plugin non proviene da un marketplace, la parte dopo `@` indica invece [la sua origine](https://code.claude.com/docs/it/plugins/loading.md#find-where-a-plugin-came-from), ad esempio `inline` per un plugin caricato tramite l'opzione [`plugins`](#options) |1064| `pluginId` | Voci di `agents` e `skills.skillFrontmatter` | Indica il plugin da cui proviene la voce, come ID nella forma `name@marketplace`, ed è assente per una voce che non proviene da un plugin. Quando il plugin non proviene da un marketplace, la parte dopo `@` indica invece [la sua origine](https://code.claude.com/docs/it/plugins/loading.md#find-where-a-plugin-came-from), ad esempio `inline` per un plugin caricato tramite l'opzione [`plugins`](#options) |

1063| `path` | Voci di `agents` e `skills.skillFrontmatter` | Percorso assoluto del file che definisce l'agente o la skill, sulla macchina in cui viene eseguito Claude Code. Il campo è assente quando nessun file definisce la voce, ad esempio un agente dall'opzione [`agents`](#options) o una skill integrata in Claude Code |1065| `path` | Voci di `agents` e `skills.skillFrontmatter` | Percorso assoluto del file che definisce l'agente o la skill, sulla macchina in cui viene eseguito Claude Code. Il campo è assente quando nessun file definisce la voce, ad esempio un agente dell'opzione [`agents`](#options) o una skill integrata in Claude Code |

1064 1066 

1065Come esempio di confronto su `id`, questo esempio trova la riga `mcp_instructions`:1067Come esempio di confronto su `id`, questo codice trova la riga `mcp_instructions`:

1066 1068 

1067```typescript theme={null}1069```typescript theme={null}

1068// q is the Query object that query() returned1070// q is the Query object that query() returned


1088 1090 

1089#### Cosa può leggere `readFile()`1091#### Cosa può leggere `readFile()`

1090 1092 

1091`readFile()` fornisce un insieme di file più ristretto rispetto allo strumento Read:1093`readFile()` serve un insieme di file più ristretto rispetto allo strumento Read:

1092 1094 

1093* Un file regolare all'interno di una delle directory di lavoro della sessione, come `cwd` e `additionalDirectories`1095* Un file regolare all'interno di una delle directory di lavoro della sessione, come `cwd` e `additionalDirectories`

1094* Alcuni file propri di Claude Code per la sessione, come i risultati degli strumenti1096* Alcuni file di Claude Code relativi alla sessione, come i risultati degli strumenti

1095 1097 

1096Le regole deny e ask di `Read` bloccano comunque un percorso corrispondente, e un'ampia regola allow di `Read` non apre il resto del filesystem a `readFile()`. Per qualsiasi altra cosa la chiamata si risolve con `null`.1098Le regole di negazione e di richiesta di `Read` bloccano comunque un percorso corrispondente, e una regola di autorizzazione `Read` ampia non apre il resto del filesystem a `readFile()`. Per qualsiasi altro file la chiamata si risolve con `null`.

1097 1099 

1098### `SDKControlReloadPluginsResponse`1100### `SDKControlReloadPluginsResponse`

1099 1101 


1120};1122};

1121```1123```

1122 1124 

1123I campi di tipo collezione descrivono la sessione dopo la chiamata:1125I campi di raccolta descrivono la sessione dopo la chiamata:

1124 1126 

1125* `commands`, `agents` e `mcpServers`: i comandi, i subagent e lo stato dei server MCP della sessione, nelle stesse forme restituite da `supportedCommands()`, `supportedAgents()` e `mcpServerStatus()`. `supportedAgents()` continua a restituire l'elenco acquisito all'inizializzazione, quindi leggi `agents` qui per ottenere l'insieme dopo un ricaricamento1127* `commands`, `agents` e `mcpServers`: i comandi, i subagent e lo stato dei server MCP della sessione, nelle stesse forme restituite da `supportedCommands()`, `supportedAgents()` e `mcpServerStatus()`. `supportedAgents()` continua a restituire l'elenco acquisito all'inizializzazione, quindi leggi `agents` qui per ottenere l'insieme dopo un ricaricamento

1126* `plugins`: ogni plugin caricato con il suo `name` e il `path` di installazione. `version` ripete quanto dichiarato nel manifest del plugin ed è controllato dall'autore del plugin, quindi convalidalo prima di considerarlo attendibile. Viene omesso quando il manifest non ne dichiara alcuno1128* `plugins`: ogni plugin caricato con il suo `name` e il `path` di installazione. `version` riporta ciò che dichiara il manifest del plugin ed è controllato dall'autore del plugin, quindi convalidalo prima di fidarti. Viene omesso quando il manifest non ne dichiara nessuna

1127* `error_count`: il numero di errori durante il caricamento dei plugin1129* `error_count`: il numero di errori durante il caricamento dei plugin

1128 1130 

1129Passa `{ holdOnCacheImpact: true }` a `reloadPlugins()` per trattenere, invece di applicarlo, un ricaricamento che invaliderebbe la cache dei prompt della conversazione. Claude Code esegue lo stesso controllo che il comando interattivo `/reload-plugins` effettua prima di [avvisare del costo per la cache](https://code.claude.com/docs/it/prompt-caching.md#enabling-or-disabling-a-plugin). L'opzione richiede Agent SDK v0.3.268 o successivo. Un eseguibile di Claude Code precedente alla v2.1.268, come uno a cui punti con `pathToClaudeCodeExecutable`, ignora l'opzione e applica il ricaricamento.1131Passa `{ holdOnCacheImpact: true }` a `reloadPlugins()` per sospendere un ricaricamento che invaliderebbe la cache del prompt della conversazione invece di applicarlo. Claude Code esegue il controllo che il comando interattivo `/reload-plugins` effettua prima di [avvisare del costo sulla cache](https://code.claude.com/docs/it/prompt-caching.md#enabling-or-disabling-a-plugin). L'opzione richiede Agent SDK v0.3.268 o successiva. Un eseguibile di Claude Code precedente alla v2.1.268, come quello a cui punti con `pathToClaudeCodeExecutable`, ignora l'opzione e applica il ricaricamento.

1130 1132 

1131Quando passi l'opzione, leggi `held` per sapere cosa è successo:1133Quando passi l'opzione, leggi `held` per sapere cosa è successo:

1132 1134 

1133* `true`: il ricaricamento non è stato applicato, e i campi di tipo collezione descrivono la sessione così com'è ancora. `cache_impact` indica cosa cambierebbe applicandolo. Per applicarlo comunque, chiama di nuovo `reloadPlugins()` senza l'opzione.1135* `true`: il ricaricamento non è stato applicato e i campi di raccolta descrivono la sessione così com'è ancora. `cache_impact` indica cosa cambierebbe applicandolo. Per applicarlo comunque, chiama di nuovo `reloadPlugins()` senza l'opzione.

1134* `false`: il controllo non ha rilevato alcun impatto sulla cache, e il ricaricamento è stato applicato.1136* `false`: il controllo non ha rilevato alcun impatto sulla cache e il ricaricamento è stato applicato.

1135* Assente: non hai passato l'opzione, oppure l'eseguibile di Claude Code è precedente alla v2.1.268 e ha applicato il ricaricamento.1137* Assente: non hai passato l'opzione, oppure l'eseguibile di Claude Code è precedente alla v2.1.268 e ha applicato il ricaricamento.

1136 1138 

1137`cache_impact` è presente solo insieme a `held: true`. `mcp_servers_added` e `mcp_servers_removed` indicano i server MCP dei plugin che il ricaricamento registrerebbe o eliminerebbe, con nomi con ambito `plugin:<plugin>:<server>`. I nomi sono definiti dagli autori dei plugin, quindi convalidali prima di mostrarli. `lsp_tool_change` indica se l'applicazione aggiungerebbe o rimuoverebbe lo strumento LSP, oppure `null` quando non farebbe nessuna delle due cose. Le forme `may-` indicano che il controllo non è riuscito a vedere completamente l'insieme dei plugin in sospeso.1139`cache_impact` è presente solo insieme a `held: true`. `mcp_servers_added` e `mcp_servers_removed` indicano i server MCP dei plugin che il ricaricamento registrerebbe o rimuoverebbe, come nomi con ambito `plugin:<plugin>:<server>`. I nomi sono scritti dagli autori dei plugin, quindi convalidali prima di mostrarli. `lsp_tool_change` indica se l'applicazione aggiungerebbe o rimuoverebbe lo strumento LSP, oppure `null` se non farebbe nessuna delle due cose. Le forme `may-` indicano che il controllo non è riuscito a vedere completamente l'insieme di plugin in sospeso.

1138 1140 

1139#### Caricare altre cartelle di plugin con `addPlugins`1141#### Caricare altre cartelle di plugin con `addPlugins`

1140 1142 

1141Per caricare cartelle di plugin che non erano nell'opzione [`plugins`](#options) all'avvio, passale a `reloadPlugins()` come `addPlugins`, un elenco di voci [`SdkPluginConfig`](#sdkpluginconfig) il cui `path` è assoluto. Claude Code carica le nuove cartelle e ricarica i plugin esistenti della sessione in un unico passaggio. Anche i server MCP di ogni plugin aggiunto si connettono, a meno che tu non imposti [`skipMcpDiscovery`](#sdkpluginconfig) nella voce di quella cartella. Richiede Agent SDK v0.3.301 o successiva e Claude Code v2.1.301 o successiva.1143Per caricare cartelle di plugin che non erano nell'opzione [`plugins`](#options) all'avvio, passale a `reloadPlugins()` come `addPlugins`, un elenco di voci [`SdkPluginConfig`](#sdkpluginconfig) il cui `path` è assoluto. Claude Code carica le nuove cartelle e ricarica i plugin esistenti della sessione in un unico passaggio. Si connettono anche i server MCP di ogni plugin aggiunto, a meno che tu non imposti [`skipMcpDiscovery`](#sdkpluginconfig) nella voce di quella cartella. Richiede Agent SDK v0.3.301 o successiva e Claude Code v2.1.301 o successiva.

1142 1144 

1143Questo esempio aggiunge una cartella a una query `q` in esecuzione e stampa il percorso di installazione di ogni plugin caricato dalla sessione quando la chiamata restituisce:1145Questo esempio aggiunge una cartella a una query `q` in esecuzione e, quando la chiamata restituisce, stampa il percorso di installazione di ogni plugin caricato dalla sessione:

1144 1146 

1145```typescript theme={null}1147```typescript theme={null}

1146const result = await q.reloadPlugins({1148const result = await q.reloadPlugins({


1150console.log(result.plugins.map((plugin) => plugin.path));1152console.log(result.plugins.map((plugin) => plugin.path));

1151```1153```

1152 1154 

1153Se la cartella è stata caricata, l'elenco stampato include `/opt/my-app/plugins/reports`, e i comandi e i subagent del plugin compaiono in `result.commands` e `result.agents`.1155Se la cartella è stata caricata, l'elenco stampato include `/opt/my-app/plugins/reports` e i comandi e i subagent del plugin compaiono in `result.commands` e `result.agents`.

1154 1156 

1155Una cartella aggiunta rimane parte della sessione. Quando chiami di nuovo `reloadPlugins()`, Claude Code la ricarica insieme agli altri plugin e non devi passarla di nuovo in `addPlugins`.1157Una cartella aggiunta resta parte della sessione. Quando chiami di nuovo `reloadPlugins()`, Claude Code la ricarica insieme agli altri plugin e non devi passarla di nuovo in `addPlugins`.

1156 1158 

1157##### Quando `reloadPlugins()` non carica le cartelle di `addPlugins`1159##### Quando `reloadPlugins()` non carica le cartelle di `addPlugins`

1158 1160 

1159Se `reloadPlugins()` viene rifiutata, nessuna delle cartelle di `addPlugins` viene aggiunta, quindi passale di nuovo in `addPlugins` quando riprovi. Quando il rifiuto ha una delle seguenti cause, la sessione mantiene i plugin che aveva già:1161Se `reloadPlugins()` viene rifiutata, nessuna delle cartelle di `addPlugins` viene aggiunta, quindi passale di nuovo in `addPlugins` quando riprovi. Quando il rifiuto ha una delle seguenti cause, la sessione mantiene i plugin che aveva già:

1160 1162 

1161* **Un `path` relativo o una voce malformata**: il messaggio di errore indica `add_plugins must be a list of { type: "local", path } entries with absolute paths`. Claude Code rifiuta l'intero elenco per una sola voce errata, quindi passa ogni voce come `{ type: "local", path }` con un `path` assoluto1163* **Un `path` relativo o una voce malformata**: il messaggio di errore indica `add_plugins must be a list of { type: "local", path } entries with absolute paths`. Claude Code rifiuta l'intero elenco a causa di una sola voce errata, quindi passa ogni voce come `{ type: "local", path }` con un `path` assoluto

1162* **Un amministratore ha attivato [`disableSideloadFlags`](https://code.claude.com/docs/it/settings-reference#disablesideloadflags) nelle tue impostazioni gestite**: il messaggio indica `reload_plugins add_plugins is disabled by managed settings (disableSideloadFlags)`. Per caricare la cartella, chiedi a quell'amministratore di rimuovere l'impostazione1164* **Un amministratore ha attivato [`disableSideloadFlags`](https://code.claude.com/docs/it/settings-reference#disablesideloadflags) nelle tue impostazioni gestite**: il messaggio indica `reload_plugins add_plugins is disabled by managed settings (disableSideloadFlags)`. Per caricare la cartella, chiedi a quell'amministratore di rimuovere l'impostazione

1163* **Non è stato possibile ricostruire la [sandbox](https://code.claude.com/docs/it/sandboxing.md)**: con il [sandboxing](#sandboxsettings) attivo, Claude Code ricostruisce la configurazione della sandbox in modo che i comandi shell in sandbox non possano scrivere nelle cartelle che aggiungi. Il messaggio indica `the sandbox could not be rebuilt to keep shell commands out of this folder`. Verifica che le tue [impostazioni della sandbox](#sandboxsettings) formino ancora una configurazione valida1165* **Non è stato possibile ricostruire la [sandbox](https://code.claude.com/docs/it/sandboxing.md)**: con il [sandboxing](#sandboxsettings) attivo, Claude Code ricostruisce la configurazione della sandbox in modo che i comandi shell eseguiti nella sandbox non possano scrivere nelle cartelle che aggiungi. Il messaggio indica `the sandbox could not be rebuilt to keep shell commands out of this folder`. Verifica che le tue [impostazioni della sandbox](#sandboxsettings) formino ancora una configurazione valida

1164 1166 

1165Se passi `holdOnCacheImpact` e la chiamata si risolve con [`held: true`](#sdkcontrolreloadpluginsresponse), le cartelle di `addPlugins` non vengono aggiunte. Per aggiungerle comunque, chiama di nuovo `reloadPlugins()` con lo stesso elenco `addPlugins` e senza `holdOnCacheImpact`.1167Se passi `holdOnCacheImpact` e la chiamata si risolve con [`held: true`](#sdkcontrolreloadpluginsresponse), le cartelle di `addPlugins` non vengono aggiunte. Per aggiungerle comunque, chiama di nuovo `reloadPlugins()` con lo stesso elenco `addPlugins` e senza `holdOnCacheImpact`.

1166 1168 

1167Quando la chiamata si risolve senza `held: true` e una cartella manca ancora da `result.plugins`, inizia verificando queste cause:1169Quando la chiamata si risolve senza `held: true` e una cartella manca ancora da `result.plugins`, inizia verificando queste cause:

1168 1170 

1169* **La cartella non esiste o il suo plugin non è stato caricato**: `result.error_count` è `1` o superiore. La cartella rimane comunque parte della sessione. Dopo aver corretto la cartella, chiama di nuovo `reloadPlugins()` per caricarla, questa volta senza elencarla in `addPlugins`1171* **La cartella non esiste o il suo plugin non è stato caricato**: `result.error_count` è `1` o superiore. La cartella resta comunque parte della sessione. Dopo aver sistemato la cartella, chiama di nuovo `reloadPlugins()` per caricarla, questa volta senza elencarla in `addPlugins`

1170* **L'eseguibile di Claude Code è precedente alla v2.1.301**: un eseguibile precedente alla v2.1.301 ignora `addPlugins` e ricarica solo i plugin che la sessione aveva già. Controlla `claude_code_version` nel [messaggio init](#sdksystemmessage) ed esegui un eseguibile alla v2.1.301 o successiva1172* **L'eseguibile di Claude Code è precedente alla v2.1.301**: un eseguibile precedente alla v2.1.301 ignora `addPlugins` e ricarica solo i plugin che la sessione aveva già. Controlla `claude_code_version` nel [messaggio di init](#sdksystemmessage) ed esegui un eseguibile alla v2.1.301 o successiva

1171 1173 

1172### `SDKControlReloadSkillsResponse`1174### `SDKControlReloadSkillsResponse`

1173 1175 


1195 1197 

1196### `SDKControlMcpReadResourceResponse`1198### `SDKControlMcpReadResourceResponse`

1197 1199 

1198Tipo restituito da [`readMcpResource()`](#query-object), che contiene il risultato `resources/read` del server MCP. Richiede TypeScript Agent SDK v0.3.280 o successivo.1200Tipo restituito da [`readMcpResource()`](#query-object), che contiene il risultato di `resources/read` del server MCP. Richiede TypeScript Agent SDK v0.3.280 o successiva.

1199 1201 

1200```typescript theme={null}1202```typescript theme={null}

1201type SDKControlMcpReadResourceResponse = {1203type SDKControlMcpReadResourceResponse = {


1209};1211};

1210```1212```

1211 1213 

1212Passa a `readMcpResource()` il nome del server così come lo riporta `mcpServerStatus()` e un URI `ui://`, ad esempio il `ui.resourceUri` che uno strumento dichiara nel suo [`_meta`](#mcpserverstatus). La chiamata viene rifiutata per qualsiasi altro schema di URI, per un [server MCP SDK](#createsdkmcpserver) ospitato dalla tua applicazione stessa e per un server non connesso. È disponibile quando le [`capabilities`](#sdksystemmessage) del messaggio di init includono `mcp_read_resource_v1`.1214Passa a `readMcpResource()` il nome del server come lo riporta `mcpServerStatus()` e un URI `ui://`, come il `ui.resourceUri` che uno strumento dichiara nel suo [`_meta`](#mcpserverstatus). La chiamata viene rifiutata per qualsiasi altro schema URI, per un [server MCP SDK](#createsdkmcpserver) ospitato dalla tua applicazione stessa e per un server non connesso. È disponibile quando le [`capabilities`](#sdksystemmessage) del messaggio di init includono `mcp_read_resource_v1`.

1213 1215 

1214Ogni voce di `contents` è un elemento di contenuto così come il server lo ha inviato, meno qualsiasi chiave `_meta` con il prefisso `com.anthropic/`, riservato a Claude Code. `blob` contiene dati base64 per un elemento binario, e `_meta` è il `_meta` dell'elemento stesso, dove un server MCP Apps inserisce `ui.csp` e `ui.permissions` della risorsa.1216Ogni voce di `contents` è un elemento di contenuto così come inviato dal server, privato di qualsiasi chiave `_meta` con il prefisso `com.anthropic/`, che è riservato a Claude Code. `blob` contiene dati base64 per un elemento binario, e `_meta` è il `_meta` proprio dell'elemento, dove un server MCP Apps inserisce `ui.csp` e `ui.permissions` della risorsa.

1215 1217 

1216I contenuti sono HTML di terze parti non attendibile, quindi visualizzali in una sandbox.1218Il contenuto è HTML di terze parti non attendibile, quindi visualizzalo in una sandbox.

1217 1219 

1218### `AgentDefinition`1220### `AgentDefinition`

1219 1221 


1243| Campo | Obbligatorio | Descrizione |1245| Campo | Obbligatorio | Descrizione |

1244| :- | :- | :- |1246| :- | :- | :- |

1245| `description` | Sì | Descrizione in linguaggio naturale di quando usare questo agente |1247| `description` | Sì | Descrizione in linguaggio naturale di quando usare questo agente |

1246| `tools` | No | Array dei nomi degli strumenti consentiti. Se omesso, eredita ogni [strumento disponibile per i subagent](https://code.claude.com/docs/it/sub-agents.md#available-tools). Per precaricare le skill nel contesto dell'agente, usa il campo `skills` invece di elencare `'Skill'` qui |1248| `tools` | No | Array di nomi di strumenti consentiti. Se omesso, eredita ogni [strumento disponibile per i subagent](https://code.claude.com/docs/it/sub-agents.md#available-tools). Per precaricare le skill nel contesto dell'agente, usa il campo `skills` invece di elencare `'Skill'` qui |

1247| `disallowedTools` | No | Array dei nomi degli strumenti da vietare esplicitamente per questo agente. Sono accettati anche pattern a livello di server MCP: `mcp__server` o `mcp__server__*` rimuove ogni strumento di quel server, e `mcp__*` rimuove ogni strumento MCP di qualsiasi server |1249| `disallowedTools` | No | Array di nomi di strumenti da vietare esplicitamente per questo agente. Sono accettati anche pattern a livello di server MCP: `mcp__server` o `mcp__server__*` rimuove ogni strumento di quel server, e `mcp__*` rimuove ogni strumento MCP di qualsiasi server |

1248| `prompt` | Sì | Il prompt di sistema dell'agente |1250| `prompt` | Sì | Il prompt di sistema dell'agente |

1249| `model` | No | Override del modello per questo agente. Accetta un alias come `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'` oppure un ID di modello completo. `'inherit'` usa il modello principale. Se lo ometti, Claude Code sceglie il modello secondo l'[ordine dei modelli dei subagent](https://code.claude.com/docs/it/sub-agents.md#choose-a-model) |1251| `model` | No | Override del modello per questo agente. Accetta un alias come `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'` o un ID di modello completo. `'inherit'` usa il modello principale. Se lo ometti, Claude Code sceglie il modello secondo l'[ordine dei modelli dei subagent](https://code.claude.com/docs/it/sub-agents.md#choose-a-model) |

1250| `mcpServers` | No | Specifiche dei server MCP per questo agente |1252| `mcpServers` | No | Specifiche dei server MCP per questo agente |

1251| `skills` | No | Array dei nomi delle skill da precaricare nel contesto dell'agente |1253| `skills` | No | Array di nomi di skill da precaricare nel contesto dell'agente |

1252| `initialPrompt` | No | Inviato automaticamente come primo turno utente quando questo agente viene eseguito come agente del thread principale |1254| `initialPrompt` | No | Inviato automaticamente come primo turno utente quando questo agente viene eseguito come agente del thread principale |

1253| `maxTurns` | No | Numero massimo di turni agentici (round trip API) prima dell'arresto |1255| `maxTurns` | No | Numero massimo di turni agentici (round trip dell'API) prima dell'arresto |

1254| `autoCompactWindow` | No | Riduci la [finestra di compattazione automatica](https://code.claude.com/docs/it/sub-agents.md#subagent-auto-compact-window) per questo agente quando viene eseguito come subagent, a un numero di token compreso tra `100000` e `1000000`. Richiede TypeScript Agent SDK v0.3.296 o successive |1256| `autoCompactWindow` | No | Riduce la [finestra di compattazione automatica](https://code.claude.com/docs/it/sub-agents.md#subagent-auto-compact-window) per questo agente quando viene eseguito come subagent, a un numero di token compreso tra `100000` e `1000000`. Richiede TypeScript Agent SDK v0.3.296 o successiva |

1255| `background` | No | Esegue questo agente come attività in background non bloccante quando viene invocato |1257| `background` | No | Esegue questo agente come attività in background non bloccante quando viene invocato |

1256| `omitClaudeMd` | No | Esclude i file CLAUDE.md utente, di progetto e locali dal contesto iniziale di questo agente; i file di policy gestiti vengono comunque caricati. Usalo per agenti che ricevono tutto ciò di cui hanno bisogno dal prompt dello strumento Agent. Ignorato quando questo agente viene eseguito come agente del thread principale. Richiede TypeScript Agent SDK v0.3.271 o successive |1258| `omitClaudeMd` | No | Esclude i file CLAUDE.md utente, di progetto e locali dal contesto iniziale di questo agente; i file delle policy gestite vengono comunque caricati. Usalo per agenti che ricevono tutto ciò di cui hanno bisogno dal prompt dello strumento Agent. Ignorato quando questo agente viene eseguito come agente del thread principale. Richiede TypeScript Agent SDK v0.3.271 o successiva |

1257| `memory` | No | Fonte di memoria per questo agente: `'user'`, `'project'` o `'local'` |1259| `memory` | No | Origine della memoria per questo agente: `'user'`, `'project'` o `'local'` |

1258| `effort` | No | Livello di sforzo di ragionamento per questo agente. Accetta un livello con nome o un numero intero |1260| `effort` | No | Livello di sforzo di ragionamento per questo agente. Accetta un livello con nome o un numero intero |

1259| `permissionMode` | No | Modalità di permesso per l'esecuzione degli strumenti all'interno di questo agente. Le [regole di ereditarietà dei subagent](https://code.claude.com/docs/it/agent-sdk/permissions.md#available-modes) stabiliscono quando si applica. Consulta [`PermissionMode`](#permissionmode) |1261| `permissionMode` | No | Modalità di permesso per l'esecuzione degli strumenti all'interno di questo agente. Le [regole di ereditarietà dei subagent](https://code.claude.com/docs/it/agent-sdk/permissions.md#available-modes) determinano quando si applica. Vedi [`PermissionMode`](#permissionmode) |

1260| `criticalSystemReminder_EXPERIMENTAL` | No | Sperimentale: promemoria critico aggiunto al prompt di sistema |1262| `criticalSystemReminder_EXPERIMENTAL` | No | Sperimentale: promemoria critico aggiunto al prompt di sistema |

1261 1263 

1262### `AgentMcpServerSpec`1264### `AgentMcpServerSpec`

1263 1265 

1264Specifica i server MCP disponibili per un subagent. Può essere il nome di un server (stringa che fa riferimento a un server della configurazione `mcpServers` del genitore) oppure un record di configurazione inline dei server che associa i nomi dei server alle relative configurazioni.1266Specifica i server MCP disponibili per un subagent. Può essere un nome di server (stringa che fa riferimento a un server dalla configurazione `mcpServers` del genitore) o un record di configurazione del server inline che associa i nomi dei server alle configurazioni.

1265 1267 

1266```typescript theme={null}1268```typescript theme={null}

1267type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;1269type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;


1285 1287 

1286#### Comportamento predefinito1288#### Comportamento predefinito

1287 1289 

1288Quando `settingSources` è omesso o `undefined`, `query()` carica le stesse impostazioni del filesystem della CLI di Claude Code: utente, progetto e locali. Consulta [Cosa settingSources non controlla](https://code.claude.com/docs/it/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) per gli input che vengono letti indipendentemente da questa opzione e per sapere come disabilitarli.1290Quando `settingSources` è omesso o `undefined`, `query()` carica le stesse impostazioni dal filesystem della CLI di Claude Code: utente, progetto e locali. Consulta [Cosa non controlla settingSources](https://code.claude.com/docs/it/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) per gli input che vengono letti indipendentemente da questa opzione e per come disattivarli.

1289 1291 

1290#### Perché usare settingSources1292#### Perché usare settingSources

1291 1293 

1292**Disabilitare le impostazioni del filesystem:**1294**Disattivare le impostazioni dal filesystem:**

1293 1295 

1294```typescript theme={null}1296```typescript theme={null}

1295import { query } from "@anthropic-ai/claude-agent-sdk";1297import { query } from "@anthropic-ai/claude-agent-sdk";


1315});1317});

1316```1318```

1317 1319 

1318Per caricare le istruzioni di progetto di CLAUDE.md, includi `"project"` in `settingSources`. Consulta [Modificare i prompt di sistema](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#claude-md-files-for-project-level-instructions) per capire come il caricamento di CLAUDE.md interagisce con le opzioni del prompt di sistema.1320Per caricare le istruzioni di progetto di CLAUDE.md, includi `"project"` in `settingSources`. Consulta [Modificare i prompt di sistema](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#claude-md-files-for-project-level-instructions) per sapere come il caricamento di CLAUDE.md interagisce con le opzioni del prompt di sistema.

1319 1321 

1320#### Precedenza delle impostazioni1322#### Precedenza delle impostazioni

1321 1323 


13252. Impostazioni di progetto (`.claude/settings.json`)13272. Impostazioni di progetto (`.claude/settings.json`)

13263. Impostazioni utente (`~/.claude/settings.json`)13283. Impostazioni utente (`~/.claude/settings.json`)

1327 1329 

1328Le opzioni programmatiche come `agents`, `allowedTools` e `settings` hanno la precedenza sulle impostazioni del filesystem utente, di progetto e locali. Le impostazioni delle policy gestite hanno la precedenza sulle opzioni programmatiche.1330Le opzioni programmatiche come `agents`, `allowedTools` e `settings` hanno la precedenza sulle impostazioni utente, di progetto e locali del filesystem. Le impostazioni delle policy gestite hanno la precedenza sulle opzioni programmatiche.

1329 1331 

1330### `PermissionMode`1332### `PermissionMode`

1331 1333 


1343 1345 

1344Tipo di funzione di permesso personalizzata per controllare l'uso degli strumenti.1346Tipo di funzione di permesso personalizzata per controllare l'uso degli strumenti.

1345 1347 

1346La funzione è il sostituto nell'SDK della richiesta di permesso interattiva: viene invocata solo quando il [flusso di valutazione dei permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) si risolve in una richiesta di conferma. Le chiamate agli strumenti già approvate da una voce di `allowedTools`, da una regola allow nelle impostazioni o dalla modalità di permesso, come `acceptEdits` o `bypassPermissions`, non la invocano mai. Per controllare ogni chiamata a uno strumento, usa invece un [hook `PreToolUse`](https://code.claude.com/docs/it/agent-sdk/hooks).1348La funzione è il sostituto nell'SDK della richiesta di permesso interattiva: viene invocata solo quando il [flusso di valutazione dei permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) si risolve in una richiesta. Le chiamate agli strumenti già approvate da una voce di `allowedTools`, da una regola di autorizzazione nelle impostazioni o dalla modalità di permesso, come `acceptEdits` o `bypassPermissions`, non la invocano mai. Per controllare ogni chiamata a uno strumento, usa invece un [hook `PreToolUse`](https://code.claude.com/docs/it/agent-sdk/hooks).

1347 1349 

1348Una regola allow non pre-approva le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves); consulta [Come vengono valutati i permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) per sapere quali di esse raggiungono la callback e cosa succede in modalità `dontAsk` e `auto`.1350Una regola di autorizzazione non pre-approva le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves); consulta [Come vengono valutati i permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) per sapere quali di esse raggiungono la callback e cosa succede in modalità `dontAsk` e `auto`.

1349 1351 

1350```typescript theme={null}1352```typescript theme={null}

1351type CanUseTool = (1353type CanUseTool = (


1369| Opzione | Tipo | Descrizione |1371| Opzione | Tipo | Descrizione |

1370| :- | :- | :- |1372| :- | :- | :- |

1371| `signal` | `AbortSignal` | Segnalato se l'operazione deve essere interrotta |1373| `signal` | `AbortSignal` | Segnalato se l'operazione deve essere interrotta |

1372| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Aggiornamenti dei permessi suggeriti affinché all'utente non venga chiesto di nuovo per questo strumento. Le richieste di conferma di Bash includono un suggerimento con la [destinazione](#permissionupdatedestination) `localSettings`, quindi restituirlo in `updatedPermissions` scrive la regola in `.claude/settings.local.json` e la mantiene tra le sessioni. |1374| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Aggiornamenti dei permessi suggeriti in modo che all'utente non venga chiesto di nuovo per questo strumento. Le richieste di Bash includono un suggerimento con la [destinazione](#permissionupdatedestination) `localSettings`, quindi restituirlo in `updatedPermissions` scrive la regola in `.claude/settings.local.json` e persiste tra le sessioni. |

1373| `blockedPath` | `string` | Il percorso del file che ha attivato la richiesta di permesso, se applicabile |1375| `blockedPath` | `string` | Il percorso del file che ha attivato la richiesta di permesso, se applicabile |

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

1375| `decisionReason` | `string` | Spiega perché è stata attivata questa richiesta di permesso |1377| `decisionReason` | `string` | Spiega perché è stata attivata questa richiesta di permesso |

1376| `defaultToNo` | `boolean` | Quando è `true`, un singolo tasto premuto per errore non deve approvare questa richiesta: apri la tua richiesta di conferma sull'opzione di rifiuto, non preselezionare l'approvazione e non offrire scorciatoie di approvazione a un solo tasto. Richiede Agent SDK v0.3.268 o successiva |1378| `defaultToNo` | `boolean` | Quando è `true`, un singolo tasto premuto per errore non deve approvare questa richiesta: apri la tua richiesta sull'opzione di rifiuto, non preselezionare l'approvazione e non offrire scorciatoie di approvazione con un solo tasto. Richiede Agent SDK v0.3.268 o successiva |

1377| `suppressAlwaysAllowRule` | `boolean` | Quando è `true`, non offrire una scelta persistente "consenti sempre" per questa richiesta. Richiede Agent SDK v0.3.268 o successiva |1379| `suppressAlwaysAllowRule` | `boolean` | Quando è `true`, non offrire una scelta persistente di autorizzazione permanente per questa richiesta. Richiede Agent SDK v0.3.268 o successiva |

1378| `toolUseID` | `string` | Identificatore univoco per questa specifica chiamata allo strumento all'interno del messaggio dell'assistente |1380| `toolUseID` | `string` | Identificatore univoco di questa specifica chiamata allo strumento all'interno del messaggio dell'assistente |

1379| `agentID` | `string` | Se in esecuzione all'interno di un subagent, l'ID del subagent |1381| `agentID` | `string` | Se in esecuzione all'interno di un subagent, l'ID del subagent |

1380| `requestId` | `string` | Il `request_id` dell'envelope `control_request`. Una `control_response` che la tua applicazione invia al di fuori dell'SDK, come una HTTP POST firmata, deve riportare questo valore affinché il processo di Claude Code possa associare la risposta alla richiesta |1382| `requestId` | `string` | Il `request_id` dell'envelope `control_request`. Una `control_response` che la tua applicazione invia al di fuori dell'SDK, come una richiesta HTTP POST firmata, deve riportare questo valore affinché il processo di Claude Code possa associare la risposta alla richiesta |

1381 1383 

1382La callback normalmente risolve la richiesta restituendo un [`PermissionResult`](#permissionresult), che l'SDK riscrive sul proprio trasporto come `control_response`. Restituisci `null` solo quando la tua applicazione ha già inviato la `control_response` per questa richiesta tramite il proprio canale, riportando `requestId`; l'SDK salta quindi la scrittura della risposta sul proprio trasporto. Restituire `null` in qualsiasi altro caso lascia la chiamata allo strumento bloccata indefinitamente, perché nessuna `control_response` viene mai inviata e le richieste di permesso non vanno in timeout.1384La callback normalmente risolve la richiesta restituendo un [`PermissionResult`](#permissionresult), che l'SDK riscrive sul proprio trasporto come `control_response`. Restituisci `null` solo quando la tua applicazione ha già inviato la `control_response` per questa richiesta tramite il proprio canale, riportando `requestId`; l'SDK quindi salta la scrittura della risposta sul proprio trasporto. Restituire `null` in qualsiasi altro caso lascia la chiamata allo strumento bloccata indefinitamente, perché nessuna `control_response` viene mai inviata e le richieste di permesso non vanno in timeout.

1383 1385 

1384L'opzione `requestId` e il valore di ritorno `null` richiedono Claude Code v2.1.199 o successiva.1386L'opzione `requestId` e il valore restituito `null` richiedono Claude Code v2.1.199 o successiva.

1385 1387 

1386### `PermissionResult`1388### `PermissionResult`

1387 1389 


1403 };1405 };

1404```1406```

1405 1407 

1408Se restituisci `allow` con più di 4.096 elementi in `updatedPermissions`, Claude Code considera il risultato non valido e nega la chiamata allo strumento. Ogni aggiornamento conta come un elemento, così come ogni voce del suo elenco `rules` o `directories`. Il messaggio di rifiuto termina con `updatedPermissions may hold at most 4096 updates, rules and directories in all`. Perché la chiamata venga consentita, restituisci 4.096 elementi o meno.

1409 

1406### `ToolConfig`1410### `ToolConfig`

1407 1411 

1408Configurazione del comportamento degli strumenti integrati.1412Configurazione del comportamento degli strumenti integrati.


1417 1421 

1418| Campo | Tipo | Descrizione |1422| Campo | Tipo | Descrizione |

1419| :- | :- | :- |1423| :- | :- | :- |

1420| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Abilita il campo `preview` nelle opzioni di [`AskUserQuestion`](https://code.claude.com/docs/it/agent-sdk/user-input#question-format) e ne imposta il formato del contenuto. Quando non è impostato, Claude non emette anteprime |1424| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Attiva il campo `preview` nelle opzioni di [`AskUserQuestion`](https://code.claude.com/docs/it/agent-sdk/user-input#question-format) e ne imposta il formato del contenuto. Se non impostato, Claude non emette anteprime |

1421 1425 

1422### `McpServerConfig`1426### `McpServerConfig`

1423 1427 


1464 1468 

1465#### `McpSdkServerConfigWithInstance`1469#### `McpSdkServerConfigWithInstance`

1466 1470 

1467La configurazione per un server MCP in-process, creato da [`createSdkMcpServer()`](#createsdkmcpserver) ed eseguito all'interno del processo della tua applicazione. È l'oggetto restituito da `createSdkMcpServer()`, più un elenco `tools` facoltativo di voci [`McpServerToolPolicy`](#mcpservertoolpolicy) che aggiungi tu stesso. Per richiedere l'approvazione per le chiamate a uno degli strumenti del server, o per negarle, aggiungi una voce che indichi lo strumento.1471Configurazione per un server MCP in-process. È ciò che restituisce [`createSdkMcpServer()`](#createsdkmcpserver), più un elenco `tools` opzionale di voci [`McpServerToolPolicy`](#mcpservertoolpolicy) che aggiungi tu.

1468 1472 

1469```typescript theme={null}1473```typescript theme={null}

1470type McpSdkServerConfigWithInstance = {1474type McpSdkServerConfigWithInstance = {


1476};1480};

1477```1481```

1478 1482 

1479Per impostare una policy, espandi l'oggetto restituito da `createSdkMcpServer()` in un nuovo oggetto in `mcpServers` e aggiungi l'elenco `tools` a quel nuovo oggetto. L'opzione `tools` di `createSdkMcpServer()` stessa è un elenco diverso, che contiene le definizioni degli strumenti e non accetta voci di policy. L'elenco delle policy richiede Agent SDK v0.3.301 o successiva, e [`McpServerToolPolicy`](#mcpservertoolpolicy) descrive cosa fa ciascun valore di `permission_policy`.1483Per richiedere l'approvazione delle chiamate a uno degli strumenti del server, o per negarle, aggiungi una voce di policy che nomina lo strumento. Espandi ciò che restituisce `createSdkMcpServer()` in un oggetto sotto `mcpServers` e inserisci la voce in un elenco `tools` su quell'oggetto, perché l'opzione `tools` della funzione accetta definizioni di strumenti e non voci di policy. L'elenco di policy richiede Agent SDK v0.3.301 o successiva, e [`McpServerToolPolicy`](#mcpservertoolpolicy) descrive cosa fa ciascun valore di `permission_policy`.

1480 1484 

1481Questo esempio pre-approva ogni strumento del server `records` con un carattere jolly in `allowedTools`, quindi contrassegna `delete_record` come `always_ask` affinché le chiamate a esso vadano comunque a `canUseTool`. Con l'annotazione `destructiveHint: true`, la chiamata raggiunge comunque la callback se la sessione è in esecuzione in modalità `auto`, dove altrimenti il [classificatore](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) della modalità auto potrebbe approvarla.1485In questo script, un carattere jolly in `allowedTools` pre-approva ogni strumento del server `records`, ma `delete_record` è contrassegnato come `always_ask`, quindi le chiamate a esso arrivano comunque a `canUseTool`. Con l'annotazione `destructiveHint: true`, la chiamata raggiunge la callback anche se la sessione viene eseguita in modalità `auto`, dove il [classificatore](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) della modalità auto potrebbe altrimenti approvarla.

1482 1486 

1483```typescript theme={null}1487```typescript theme={null}

1484import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";1488import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";


1517}1521}

1518```1522```

1519 1523 

1520Quando Claude chiama lo strumento, lo script stampa `Approval requested for mcp__records__delete_record` prima che lo strumento `delete_record` venga eseguito, anche se la voce `allowedTools` avrebbe altrimenti approvato la chiamata.1524Quando Claude chiama `delete_record`, lo script stampa `Approval requested for mcp__records__delete_record`.

1521 1525 

1522Per modificare o rimuovere la policy di uno strumento mentre la sessione è in esecuzione, passa la configurazione del server con un nuovo valore `tools` a [`setMcpServers()`](#mcpsetserversresult). Il valore `tools` che passi ha effetto dalla successiva chiamata di Claude agli strumenti di quel server:1526Per modificare o rimuovere la policy di uno strumento mentre la sessione è in esecuzione, passa la configurazione del server con un nuovo valore `tools` a [`setMcpServers()`](#mcpsetserversresult). Il valore `tools` che passi ha effetto a partire dalla successiva chiamata di Claude agli strumenti di quel server:

1523 1527 

1524* **Un elenco con voci**: le voci sostituiscono le policy correnti1528* **Un elenco con voci**: le voci sostituiscono le policy correnti

1525* **Un elenco vuoto**: ogni policy del server viene cancellata1529* **Un elenco vuoto**: tutte le policy del server vengono cancellate

1526* **Nessuna chiave `tools`**: le policy correnti restano1530* **Nessuna chiave `tools`**: le policy correnti restano

1527 1531 

1528Includi in quella chiamata gli altri tuoi server in-process e qualsiasi server aggiunto da una precedente chiamata a `setMcpServers()`, altrimenti la chiamata li disconnette.1532Includi in quella chiamata gli altri tuoi server in-process e qualsiasi server aggiunto da una precedente chiamata a `setMcpServers()`, altrimenti la chiamata li disconnette.

1529 1533 

1530#### `McpServerToolPolicy`1534#### `McpServerToolPolicy`

1531 1535 

1532Una voce nell'elenco `tools` di un [`McpSdkServerConfigWithInstance`](#mcpsdkserverconfigwithinstance), che indica uno degli strumenti del server e imposta la policy dei permessi per le chiamate a quello strumento. L'elenco richiede Agent SDK v0.3.301 o successiva e Claude Code v2.1.301 o successiva. Un eseguibile di Claude Code precedente, come un eseguibile a cui punti con `pathToClaudeCodeExecutable`, ignora l'elenco. In quel caso `always_ask` e `always_deny` non vengono applicati, e ogni chiamata passa attraverso il [flusso dei permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated).1536Una voce nell'elenco `tools` di un [`McpSdkServerConfigWithInstance`](#mcpsdkserverconfigwithinstance), che nomina uno degli strumenti del server e imposta la policy di permesso per le chiamate a quello strumento. L'elenco richiede Agent SDK v0.3.301 o successiva e Claude Code v2.1.301 o successiva. Un eseguibile di Claude Code precedente, come un eseguibile a cui punti con `pathToClaudeCodeExecutable`, ignora l'elenco. In quel caso `always_ask` e `always_deny` non vengono applicati e ogni chiamata passa attraverso il [flusso dei permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated).

1533 1537 

1534```typescript theme={null}1538```typescript theme={null}

1535type McpServerToolPolicy = {1539type McpServerToolPolicy = {


1541 1545 

1542| Campo | Tipo | Descrizione |1546| Campo | Tipo | Descrizione |

1543| :- | :- | :- |1547| :- | :- | :- |

1544| `name` | `string` | Il nome semplice dello strumento così come passato a [`tool()`](#tool), senza il prefisso `mcp__<server>__` |1548| `name` | `string` | Il nome semplice dello strumento come passato a [`tool()`](#tool), senza il prefisso `mcp__<server>__` |

1545| `permission_policy` | `'always_allow' \| 'always_ask' \| 'always_deny'` | La policy di approvazione per le chiamate allo strumento, [`always_ask` o `always_deny`](#permission-policy-values). `always_allow` viene ignorato su un server in-process: per pre-approvare uno strumento, elencalo invece in [`allowedTools`](#options) |1549| `permission_policy` | `'always_allow' \| 'always_ask' \| 'always_deny'` | La policy di approvazione per le chiamate allo strumento, [`always_ask` o `always_deny`](#permission-policy-values). `always_allow` viene ignorato su un server in-process: per pre-approvare uno strumento, elencalo invece in [`allowedTools`](#options) |

1546| `org_max_permission` | `'allow' \| 'ask' \| 'blocked'` | Un limite massimo per strumento impostato da un amministratore dell'organizzazione. Ignorato su un server in-process, quindi lascialo non impostato |1550| `org_max_permission` | `'allow' \| 'ask' \| 'blocked'` | Un limite massimo per strumento impostato da un amministratore dell'organizzazione. Ignorato su un server in-process, quindi lascialo non impostato |

1547 1551 


1549 1553 

1550Scegli `always_ask` per approvare tu stesso ogni chiamata, oppure `always_deny` per bloccare completamente lo strumento:1554Scegli `always_ask` per approvare tu stesso ogni chiamata, oppure `always_deny` per bloccare completamente lo strumento:

1551 1555 

1552* **`always_ask`**: ogni chiamata allo strumento [richiede approvazione](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated), anche se una voce `allowedTools` o una regola allow la copre. La chiamata va alla tua callback `canUseTool` o allo strumento [`permissionPromptToolName`](#options), a meno che non venga risolta prima. Un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) in un plugin che carichi [può approvarla prima](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Altrimenti, in modalità `dontAsk` viene negata, e nelle [modalità `auto`, `plan` e `bypassPermissions`](#permission-modes-that-can-approve-an-always_ask-call) può essere approvata prima di raggiungere la tua callback1556* **`always_ask`**: ogni chiamata allo strumento [richiede l'approvazione](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated), anche se una voce di `allowedTools` o una regola di autorizzazione la copre. La chiamata arriva alla tua callback `canUseTool` o allo strumento [`permissionPromptToolName`](#options), a meno che non venga risolta prima. Un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) in un plugin che carichi [può approvarla prima](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Altrimenti, in modalità `dontAsk` viene negata, e nelle [modalità `auto`, `plan` e `bypassPermissions`](#permission-modes-that-can-approve-an-always_ask-call) può essere approvata prima di raggiungere la tua callback

1553* **`always_deny`**: una chiamata allo strumento [viene negata](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) in ogni modalità di permesso, incluso `bypassPermissions`, ma un mod in un plugin che carichi [può comunque approvarla](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods)1557* **`always_deny`**: una chiamata allo strumento [viene negata](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) in ogni modalità di permesso, incluso `bypassPermissions`, ma un mod in un plugin che carichi [può comunque approvarla](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods)

1554 1558 

1555Se non passi né `canUseTool` né `permissionPromptToolName`, oppure imposti [`permissionPrompts`](#options) su `'none'`, una chiamata `always_ask` che non viene risolta prima viene negata, a meno che un [hook `PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) non la consenta.1559Se non passi né `canUseTool` né `permissionPromptToolName`, oppure imposti [`permissionPrompts`](#options) su `'none'`, una chiamata `always_ask` che non viene risolta prima viene negata, a meno che un [hook `PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) non la consenta.

1556 1560 

1557##### Modalità di permesso che possono approvare una chiamata `always_ask`1561##### Modalità di permesso che possono approvare una chiamata `always_ask`

1558 1562 

1559Nelle modalità `auto`, `plan` e `bypassPermissions`, una chiamata a uno strumento contrassegnato come [`always_ask`](#permission-policy-values) può essere approvata prima di raggiungere la tua callback `canUseTool`. Trova la modalità della tua sessione in questo elenco per vedere quando avviene tale approvazione e cosa impostare affinché la chiamata raggiunga comunque la tua callback:1563Nelle modalità `auto`, `plan` e `bypassPermissions`, una chiamata a uno strumento contrassegnato come [`always_ask`](#permission-policy-values) può essere approvata prima di raggiungere la tua callback `canUseTool`.

1560 1564 

1561* **`auto`**: il [classificatore](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) della modalità auto esamina la chiamata e può consentirla. Per fare in modo che ogni chiamata raggiunga la tua callback in modalità `auto`, imposta `destructiveHint: true` nelle [annotazioni](#toolannotations) dello strumento1565* **`auto`**: il [classificatore](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) della modalità auto esamina la chiamata e può consentirla. Per far sì che ogni chiamata raggiunga la tua callback in modalità `auto`, imposta `destructiveHint: true` nelle [annotazioni](#toolannotations) dello strumento

1562* **`plan`**: finché la [modalità auto è disponibile](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per la sessione, le chiamate a uno strumento `always_ask` annotato con `readOnlyHint: true` vanno al classificatore della modalità auto, che può consentirle. Le chiamate ad altri strumenti `always_ask` raggiungono la tua callback. Per fare in modo che anche le chiamate di uno strumento di sola lettura raggiungano la tua callback, aggiungi `destructiveHint: true` alle annotazioni di quello strumento insieme a `readOnlyHint: true`. In alternativa, imposta [`useAutoModeDuringPlan`](https://code.claude.com/docs/it/settings-reference#useautomodeduringplan) su `false`, il che disattiva il classificatore durante la pianificazione1566* **`plan`**: finché la [modalità auto è disponibile](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per la sessione, le chiamate a uno strumento `always_ask` annotato con `readOnlyHint: true` vanno al classificatore della modalità auto, che può consentirle. Le chiamate ad altri strumenti `always_ask` raggiungono la tua callback. Per far sì che anche le chiamate di uno strumento di sola lettura raggiungano la tua callback, aggiungi `destructiveHint: true` alle annotazioni di quello strumento insieme a `readOnlyHint: true`. In alternativa, imposta [`useAutoModeDuringPlan`](https://code.claude.com/docs/it/settings-reference#useautomodeduringplan) su `false`, che disattiva il classificatore durante la pianificazione

1563* **`bypassPermissions`**: quando la variabile d'ambiente [`CLAUDE_CODE_REMOTE`](https://code.claude.com/docs/it/env-vars#variables) è `true`, come avviene in una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), la chiamata viene approvata senza la tua callback, indipendentemente dalle annotazioni dello strumento. In qualsiasi altro contesto la chiamata raggiunge la tua callback. Per fare in modo che raggiunga la tua callback anche in una sessione cloud, esegui invece la sessione in modalità `default` o `acceptEdits`1567* **`bypassPermissions`**: quando la variabile d'ambiente [`CLAUDE_CODE_REMOTE`](https://code.claude.com/docs/it/env-vars#variables) è `true`, come avviene in una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), la chiamata viene approvata senza la tua callback, indipendentemente dalle annotazioni dello strumento. Altrove la chiamata raggiunge la tua callback. Per farla arrivare alla tua callback anche in una sessione cloud, esegui invece la sessione in modalità `default` o `acceptEdits`

1564 1568 

1565Imposta esplicitamente `destructiveHint` su `true` nelle modalità `auto` e `plan`. Per le chiamate `always_ask`, Claude Code interpreta un `destructiveHint` non impostato come `false`, anche se il valore predefinito indicato in [`ToolAnnotations`](#toolannotations) è `true`.1569Imposta esplicitamente `destructiveHint` su `true` nelle modalità `auto` e `plan`. Per le chiamate `always_ask`, Claude Code interpreta un `destructiveHint` non impostato come `false`, anche se il valore predefinito indicato in [`ToolAnnotations`](#toolannotations) è `true`.

1566 1570 


1590| :- | :- | :- |1594| :- | :- | :- |

1591| `type` | `'local'` | Deve essere `'local'` (attualmente sono supportati solo i plugin locali) |1595| `type` | `'local'` | Deve essere `'local'` (attualmente sono supportati solo i plugin locali) |

1592| `path` | `string` | Percorso della directory del plugin. Un percorso relativo viene risolto rispetto all'opzione [`cwd`](#options) all'avvio della sessione. Il percorso deve essere assoluto quando carichi il plugin a sessione in corso con [`addPlugins`](#load-more-plugin-folders-with-addplugins) |1596| `path` | `string` | Percorso della directory del plugin. Un percorso relativo viene risolto rispetto all'opzione [`cwd`](#options) all'avvio della sessione. Il percorso deve essere assoluto quando carichi il plugin a sessione in corso con [`addPlugins`](#load-more-plugin-folders-with-addplugins) |

1593| `skipMcpDiscovery` | `boolean` | Quando è `true`, l'SDK carica skill, hook, agenti e comandi da questo plugin ma non legge il suo `.mcp.json` né i `mcpServers` del manifest. Impostalo quando è la tua applicazione a gestire le connessioni MCP del plugin. |1597| `skipMcpDiscovery` | `boolean` | Quando è `true`, l'SDK carica skill, hook, agenti e comandi da questo plugin ma non legge il suo `.mcp.json` né i `mcpServers` del manifest. Impostalo quando la tua applicazione gestisce le connessioni MCP del plugin. |

1594 1598 

1595**Esempio:**1599**Esempio:**

1596 1600 


1601];1605];

1602```1606```

1603 1607 

1604Per informazioni complete sulla creazione e sull'uso dei plugin, consulta [Plugin](https://code.claude.com/docs/it/agent-sdk/plugins.md).1608Per informazioni complete sulla creazione e l'uso dei plugin, consulta [Plugin](https://code.claude.com/docs/it/agent-sdk/plugins.md).

1605 1609 

1606## Tipi di messaggio1610## Tipi di messaggio

1607 1611 


1692 1696 

1693`aborted` è `true` quando un'interruzione o un annullamento ha troncato il messaggio dell'assistente prima del completamento del flusso: il messaggio non ha `stop_reason` e il contenuto può terminare a metà parola. Il campo è assente sui messaggi completati normalmente. Richiede Agent SDK v0.3.214 o successivo.1697`aborted` è `true` quando un'interruzione o un annullamento ha troncato il messaggio dell'assistente prima del completamento del flusso: il messaggio non ha `stop_reason` e il contenuto può terminare a metà parola. Il campo è assente sui messaggi completati normalmente. Richiede Agent SDK v0.3.214 o successivo.

1694 1698 

1695`agent_id` identifica il subagent che ha prodotto il messaggio ed è assente nei messaggi del thread principale. Il valore è uguale al `task_id` nel [`task_started`](#sdktaskstartedmessage) di quel subagent e negli altri eventi di attività, e non cambia quando il subagent viene [ripreso](https://code.claude.com/docs/it/agent-sdk/subagents.md#resume-subagents). Il campo richiede Agent SDK v0.3.292 o successiva.1699`agent_id` identifica il subagent che ha prodotto il messaggio ed è assente nei messaggi del thread principale. Il valore è uguale al `task_id` presente nel [`task_started`](#sdktaskstartedmessage) di quel subagent e negli altri eventi delle attività, e non cambia quando il subagent viene [ripreso](https://code.claude.com/docs/it/agent-sdk/subagents.md#resume-subagents). Nei messaggi di un [subagent annidato](https://code.claude.com/docs/it/sub-agents.md#let-subagents-spawn-their-own-subagents), indica il subagent annidato, non il subagent che lo ha generato. Il campo richiede Agent SDK v0.3.292 o successiva.

1696 1700 

1697Associa i messaggi di un subagent ai suoi eventi di attività tramite `agent_id`, anziché abbinare il `parent_tool_use_id` di un messaggio con il `tool_use_id` di un evento di attività. Quando una chiamata a uno strumento riprende il subagent, gli eventi di attività riportano il `tool_use_id` di quella chiamata, mentre i messaggi mantengono il `parent_tool_use_id` della chiamata allo strumento che ha avviato per primo il subagent, quindi i due non corrispondono più.1701Associa i messaggi di un subagent ai suoi eventi di attività tramite `agent_id`, anziché abbinare il `parent_tool_use_id` di un messaggio con il `tool_use_id` di un evento di attività. Quando una chiamata a uno strumento riprende il subagent, gli eventi di attività riportano il `tool_use_id` di quella chiamata, mentre i messaggi mantengono il `parent_tool_use_id` della chiamata allo strumento che ha avviato per primo il subagent, quindi i due non corrispondono più.

1698 1702 


3273 3277 

3274### Agent3278### Agent

3275 3279 

3276**Nome del tool:** `Agent`. Il nome precedente `Task` è ancora accettato come alias, e l'array `tools` nel messaggio di inizializzazione [`SDKSystemMessage`](#sdksystemmessage) attualmente elenca questo tool come `Task` per compatibilità all'indietro.3280**Nome dello strumento:** `Agent`. Il nome precedente `Task` è ancora accettato come alias quando questo strumento è disponibile per la sessione.

3281 

3282L'array `tools` nel messaggio di inizializzazione [`SDKSystemMessage`](#sdksystemmessage) elenca questo strumento come `Task` per compatibilità all'indietro.

3277 3283 

3278> [!NOTE]3284> [!NOTE]

3279>3285>


4010 4016 

4011### Agent4017### Agent

4012 4018 

4013**Nome dello strumento:** `Agent`. Il nome precedente `Task` è ancora accettato come alias, e l'array `tools` nel messaggio di inizializzazione [`SDKSystemMessage`](#sdksystemmessage) attualmente elenca questo strumento come `Task` per compatibilità con le versioni precedenti.4019**Nome dello strumento:** `Agent`. Il nome precedente `Task` è ancora accettato come alias quando questo strumento è disponibile per la sessione.

4014 4020 

4015```typescript theme={null}4021```typescript theme={null}

4016type AgentOutput =4022type AgentOutput =


5210 5216 

5211#### Quando il `_meta.ui` di uno strumento contiene solo `visibility`5217#### Quando il `_meta.ui` di uno strumento contiene solo `visibility`

5212 5218 

5213Se il tuo server dichiara `ui.resourceUri` per uno strumento ma il `_meta.ui` che la tua applicazione riceve contiene solo `visibility`, l'oggetto `ui` inviato dal server non ha superato uno dei controlli di Claude Code. Claude Code controlla `ui` e `ui/resourceUri` separatamente, quindi una chiave può raggiungere la tua applicazione anche quando l'altra non supera i controlli. Confronta il `_meta` nella risposta `tools/list` del tuo server con i controlli per ciascuna chiave:5219Se il tuo server dichiara `ui.resourceUri` per uno strumento ma il `_meta.ui` che la tua applicazione riceve contiene solo `visibility`, l'oggetto `ui` inviato dal server non ha superato uno dei controlli di Claude Code. Confronta il `_meta` nella risposta `tools/list` del tuo server con i controlli per ciascuna chiave:

5214 5220 

5215* **`ui`**: raggiunge la tua applicazione invariato, inclusi eventuali membri diversi da `resourceUri` e `visibility`, se tutti e tre i controlli vengono superati:5221* **`ui`**: raggiunge la tua applicazione invariato, inclusi eventuali membri diversi da `resourceUri` e `visibility`, se tutti e tre i controlli vengono superati:

5216 5222 


5553 5559 

5554Claude 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.5560Claude 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.

5555 5561 

5562Se avvii la sessione con [`startup()`](#startup), questi messaggi ti raggiungono una volta che chiami `.query()` e ne iteri il risultato.

5563 

5556```typescript theme={null}5564```typescript theme={null}

5557type SDKHookStartedMessage = {5565type SDKHookStartedMessage = {

5558 type: "system";5566 type: "system";


6072| `allowManagedDomainsOnly` | `boolean` | `false` | Solo impostazioni gestite. Quando impostato nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), solo le voci `allowedDomains` e le regole di autorizzazione `WebFetch(domain:...)` dalle impostazioni gestite vengono rispettate, e le voci di autorizzazione dalle impostazioni utente, progetto o locali vengono ignorate. Dall'SDK, passalo attraverso l'opzione [`managedSettings`](#options) |6080| `allowManagedDomainsOnly` | `boolean` | `false` | Solo impostazioni gestite. Quando impostato nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), solo le voci `allowedDomains` e le regole di autorizzazione `WebFetch(domain:...)` dalle impostazioni gestite vengono rispettate, e le voci di autorizzazione dalle impostazioni utente, progetto o locali vengono ignorate. Dall'SDK, passalo attraverso l'opzione [`managedSettings`](#options) |

6073| `allowLocalBinding` | `boolean` | `false` | Consenti ai processi di associarsi alle porte locali (ad esempio, per i server di sviluppo) |6081| `allowLocalBinding` | `boolean` | `false` | Consenti ai processi di associarsi alle porte locali (ad esempio, per i server di sviluppo) |

6074| `allowUnixSockets` | `string[]` | `[]` | Percorsi dei socket Unix a cui i processi possono accedere (ad esempio, socket Docker) |6082| `allowUnixSockets` | `string[]` | `[]` | Percorsi dei socket Unix a cui i processi possono accedere (ad esempio, socket Docker) |

6075| `allowAllUnixSockets` | `boolean` | `false` | Consenti l'accesso a tutti i socket Unix |6083| `allowAllUnixSockets` | `boolean` | `false` | Consenti l'accesso a tutti i socket Unix e, su Linux, ai socket VM (`AF_VSOCK`) |

6076| `httpProxyPort` | `number` | `undefined` | Porta del proxy HTTP per le richieste di rete |6084| `httpProxyPort` | `number` | `undefined` | Porta del proxy HTTP per le richieste di rete |

6077| `socksProxyPort` | `number` | `undefined` | Porta del proxy SOCKS per le richieste di rete |6085| `socksProxyPort` | `number` | `undefined` | Porta del proxy SOCKS per le richieste di rete |

6078 6086 

agent-view.md +8 −2

Details

320 320 

321#### Ripristinare una sessione passata321#### Ripristinare una sessione passata

322 322 

323Per ripristinare una sessione su Claude Code v2.1.212 o successivo, digita `/resume` nel [campo di dispatch](#dispatch-an-agent-from-agent-view). Si apre un selettore con le sessioni passate del repository da cui hai aperto agent view, dalla più recente, incluse le sessioni che hai eliminato dall'elenco. Le sessioni che hanno già una riga non sono elencate. Premi `Enter` per riprendere la sessione selezionata come sessione in background, così rientra nell'elenco come riga.323Per ripristinare una sessione, digita `/resume` nel [campo di dispatch](#dispatch-an-agent-from-agent-view). Si apre un selettore con le sessioni passate del repository da cui hai aperto agent view, dalla più recente, incluse le sessioni che hai eliminato dall'elenco. Le sessioni che hanno già una riga non sono elencate. Premi `Enter` per riprendere la sessione selezionata come sessione in background, così rientra nell'elenco come riga.

324 324 

325`/resume` non riesce con `isn't available in agent view` quando:325`/resume` non riesce con `isn't available in agent view` quando:

326 326 


410* `/logout` ti disconnette410* `/logout` ti disconnette

411* `/model`, `/effort` e `/fast` impostano [ciò con cui iniziano le sessioni che invii successivamente](#set-the-model-effort-and-fast-mode). `/effort` e `/fast` richiedono Claude Code v2.1.299 o successivo.411* `/model`, `/effort` e `/fast` impostano [ciò con cui iniziano le sessioni che invii successivamente](#set-the-model-effort-and-fast-mode). `/effort` e `/fast` richiedono Claude Code v2.1.299 o successivo.

412* `/login` apre la finestra di dialogo di accesso in modo da poter accedere di nuovo senza collegarti a una sessione412* `/login` apre la finestra di dialogo di accesso in modo da poter accedere di nuovo senza collegarti a una sessione

413* Un `/resume` nudo, o il suo alias `/continue`, apre un selettore delle sessioni passate del repository per [riportarne una indietro](#bring-back-a-past-session) come sessione in background. Richiede Claude Code v2.1.212 o successivo413* Un `/resume` nudo, o il suo alias `/continue`, apre un selettore delle sessioni passate del repository per [riportarne una indietro](#bring-back-a-past-session) come sessione in background

414 414 

415Le skill, i tuoi comandi e i built-in che espandono il prompt come `/init` vengono inviati a una nuova sessione in background come primo prompt. Il suggerimento `isn't available in agent view` significa che il comando built-in che hai inserito non è stato eseguito. Per eseguirlo, [collegati a una sessione](#attach-to-a-session) e inseriscilo lì. Tutto ciò che hai digitato rimane nell'input accanto al suggerimento in modo da poterlo modificare.415Le skill, i tuoi comandi e i built-in che espandono il prompt come `/init` vengono inviati a una nuova sessione in background come primo prompt. Il suggerimento `isn't available in agent view` significa che il comando built-in che hai inserito non è stato eseguito. Per eseguirlo, [collegati a una sessione](#attach-to-a-session) e inseriscilo lì. Tutto ciò che hai digitato rimane nell'input accanto al suggerimento in modo da poterlo modificare.

416 416 


454 454 

455Quando la [vista agente è disattivata](#turn-off-agent-view), `/fork` avvia un [subagent con fork](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation) invece di copiare la sessione.455Quando la [vista agente è disattivata](#turn-off-agent-view), `/fork` avvia un [subagent con fork](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation) invece di copiare la sessione.

456 456 

457##### Inviare un prompt alla copia e aprire la sua sessione

458 

457Passa un prompt come `/fork open a draft pull request with the work so far` e la copia inizia a lavorarci immediatamente. Senza un prompt la copia attende la sua prima istruzione: seleziona la sua riga in `claude agents` e premi `Space` per inviarne una, oppure esegui `claude attach <id>`. La riga selezionata mostra `space to send it a prompt` mentre attende.459Passa un prompt come `/fork open a draft pull request with the work so far` e la copia inizia a lavorarci immediatamente. Senza un prompt la copia attende la sua prima istruzione: seleziona la sua riga in `claude agents` e premi `Space` per inviarne una, oppure esegui `claude attach <id>`. La riga selezionata mostra `space to send it a prompt` mentre attende.

458 460 

459La conferma di `/fork` è una riga che mostra lo stato della copia, come `session running`, il nome della sua riga nella vista agente e il suo ID di sessione per `claude attach`. Fai clic sul nome per passare alla copia: questa sessione si sposta in background, come premendo `←`, e la vista agente apre la sessione della copia.461La conferma di `/fork` è una riga che mostra lo stato della copia, come `session running`, il nome della sua riga nella vista agente e il suo ID di sessione per `claude attach`. Fai clic sul nome per passare alla copia: questa sessione si sposta in background, come premendo `←`, e la vista agente apre la sessione della copia.

460 462 

463##### Dove viene eseguita la copia

464 

461Tranne quando la copia [modifica in posizione](#how-file-edits-are-isolated), Claude Code le indica di creare un worktree proprio prima di apportare modifiche al codice. Al di fuori di un repository git, solo una copia spostata fuori da un worktree creato da un hook riceve l'istruzione; senza un [hook `WorktreeCreate`](https://code.claude.com/docs/it/hooks#worktreecreate), la copia modifica in posizione. A una copia spostata fuori dal tuo worktree viene anche detto di non modificare mai, non eseguire comandi in né entrare in quel worktree, qualunque sia l'impostazione di isolamento.465Tranne quando la copia [modifica in posizione](#how-file-edits-are-isolated), Claude Code le indica di creare un worktree proprio prima di apportare modifiche al codice. Al di fuori di un repository git, solo una copia spostata fuori da un worktree creato da un hook riceve l'istruzione; senza un [hook `WorktreeCreate`](https://code.claude.com/docs/it/hooks#worktreecreate), la copia modifica in posizione. A una copia spostata fuori dal tuo worktree viene anche detto di non modificare mai, non eseguire comandi in né entrare in quel worktree, qualunque sia l'impostazione di isolamento.

462 466 

463Il punto in cui inizia la copia dipende da dove è in esecuzione la sessione corrente:467Il punto in cui inizia la copia dipende da dove è in esecuzione la sessione corrente:


467* Quando hai avviato la sessione all'interno di un worktree collegato di un repository che ha un albero di lavoro principale, la copia inizia in quell'albero di lavoro principale, con la stessa regola del worktree proprio ma nessuna istruzione sul branch. Anche qui la conferma termina con `runs in the origin tree`.471* Quando hai avviato la sessione all'interno di un worktree collegato di un repository che ha un albero di lavoro principale, la copia inizia in quell'albero di lavoro principale, con la stessa regola del worktree proprio ma nessuna istruzione sul branch. Anche qui la conferma termina con `runs in the origin tree`.

468* Una sessione avviata all'interno di un worktree di un layout di repository bare non ha un albero di lavoro principale a cui tornare, quindi la copia rimane dove è, e la conferma termina con `edits this checkout`. La stessa nota appare quando l'isolamento con worktree è [disattivato](#how-file-edits-are-isolated) in una sessione che non è all'interno di un worktree collegato, perché la copia modifica allora i file che hai aperto.472* Una sessione avviata all'interno di un worktree di un layout di repository bare non ha un albero di lavoro principale a cui tornare, quindi la copia rimane dove è, e la conferma termina con `edits this checkout`. La stessa nota appare quando l'isolamento con worktree è [disattivato](#how-file-edits-are-isolated) in una sessione che non è all'interno di un worktree collegato, perché la copia modifica allora i file che hai aperto.

469 473 

474##### Sessioni che non possono essere forkate

475 

470Le sessioni avviate con flag di avvio che la copia non erediterebbe, come un prompt di sistema sostituito o un'allowlist `--tools`, non possono essere forkate; Claude Code lo dice invece di fare una copia parziale. Una sessione inviata dalla vista agente viene forkata normalmente: la copia viene avviata con la stessa [definizione di agente](https://code.claude.com/docs/it/sub-agents.md) e le stesse istruzioni aggiunte della sessione da cui proviene.476Le sessioni avviate con flag di avvio che la copia non erediterebbe, come un prompt di sistema sostituito o un'allowlist `--tools`, non possono essere forkate; Claude Code lo dice invece di fare una copia parziale. Una sessione inviata dalla vista agente viene forkata normalmente: la copia viene avviata con la stessa [definizione di agente](https://code.claude.com/docs/it/sub-agents.md) e le stesse istruzioni aggiunte della sessione da cui proviene.

471 477 

472#### Cosa viene trasportato quando invii in background478#### Cosa viene trasportato quando invii in background

agents.md +1 −1

Details

32 32 

33> [!NOTE]33> [!NOTE]

34>34>

35> L'esecuzione di più sessioni o subagenti contemporaneamente moltiplica l'utilizzo dei token. Vedete [Costi](https://code.claude.com/docs/it/costs.md) per i dettagli su utilizzo e limiti di velocità.35> L'esecuzione di più sessioni o subagent contemporaneamente moltiplica l'utilizzo dei token. Consulta [Costi](https://code.claude.com/docs/it/costs.md) per i dettagli su utilizzo e rate limit.

36 36 

37## Scegli un approccio37## Scegli un approccio

38 38 

Details

251| Modello primario | Opus 5.5, ad esempio `us.anthropic.claude-opus-5-5` in una regione `us-*` |251| Modello primario | Opus 5.5, ad esempio `us.anthropic.claude-opus-5-5` in una regione `us-*` |

252| Modello piccolo/veloce | Sonnet 4.5, ad esempio `us.anthropic.claude-sonnet-4-5-20250929-v1:0` in una regione `us-*` |252| Modello piccolo/veloce | Sonnet 4.5, ad esempio `us.anthropic.claude-sonnet-4-5-20250929-v1:0` in una regione `us-*` |

253 253 

254Prima della versione 2.1.280, il modello primario su Amazon Bedrock era per impostazione predefinita Opus 5 e l'alias `opus` si risolveva in Opus 5 a partire dalla versione 2.1.219.

255 

254Le attività in background come la generazione del titolo della sessione utilizzano il modello piccolo/veloce, normalmente un modello di classe Haiku. Su Amazon Bedrock, Claude Code utilizza il modello Sonnet predefinito per le attività in background perché Haiku potrebbe non essere abilitato in ogni account o regione. Due selezioni cambiano quale modello li trasporta:256Le attività in background come la generazione del titolo della sessione utilizzano il modello piccolo/veloce, normalmente un modello di classe Haiku. Su Amazon Bedrock, Claude Code utilizza il modello Sonnet predefinito per le attività in background perché Haiku potrebbe non essere abilitato in ogni account o regione. Due selezioni cambiano quale modello li trasporta:

255 257 

256* Quando si seleziona un modello primario con `--model`, `ANTHROPIC_MODEL` o l'impostazione `model`, le attività in background utilizzano quel modello. Quando Claude Code avvia la sessione sul modello impostato con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/it/model-config#set-a-default-model-for-new-sessions), le attività in background utilizzano anche quel modello. L'impostazione di `ANTHROPIC_DEFAULT_OPUS_MODEL` senza `ANTHROPIC_DEFAULT_SONNET_MODEL` conta anche come una selezione, perché il modello Sonnet integrato potrebbe non essere abilitato in un account che indirizza il proprio Opus.258* Quando si seleziona un modello primario con `--model`, `ANTHROPIC_MODEL` o l'impostazione `model`, le attività in background utilizzano quel modello. Quando Claude Code avvia la sessione sul modello impostato con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/it/model-config#set-a-default-model-for-new-sessions), le attività in background utilizzano anche quel modello. L'impostazione di `ANTHROPIC_DEFAULT_OPUS_MODEL` senza `ANTHROPIC_DEFAULT_SONNET_MODEL` conta anche come una selezione, perché il modello Sonnet integrato potrebbe non essere abilitato in un account che indirizza il proprio Opus.


260>262>

261> I modelli Opus hanno un prezzo per token più elevato rispetto ai modelli Sonnet, quindi se non fissi un modello primario ti viene addebitata la tariffa Opus. Per utilizzare Sonnet 4.5 come modello primario, imposta `ANTHROPIC_MODEL` sul suo ID modello completo. Una distribuzione che indirizza il valore predefinito con `ANTHROPIC_DEFAULT_SONNET_MODEL` e non imposta `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene il modello Sonnet indirizzato come valore predefinito.263> I modelli Opus hanno un prezzo per token più elevato rispetto ai modelli Sonnet, quindi se non fissi un modello primario ti viene addebitata la tariffa Opus. Per utilizzare Sonnet 4.5 come modello primario, imposta `ANTHROPIC_MODEL` sul suo ID modello completo. Una distribuzione che indirizza il valore predefinito con `ANTHROPIC_DEFAULT_SONNET_MODEL` e non imposta `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene il modello Sonnet indirizzato come valore predefinito.

262 264 

263Prima della versione 2.1.280, il modello primario su Amazon Bedrock era predefinito su Opus 5 e l'alias `opus` si risolveva in Opus 5 dalla versione 2.1.219. Dalla versione 2.1.207 alla 2.1.218, il modello primario su Amazon Bedrock era predefinito su Opus 4.8 e l'alias `opus` si risolveva in Opus 4.8.

264 

265Per personalizzare ulteriormente i modelli, utilizzare uno di questi metodi:265Per personalizzare ulteriormente i modelli, utilizzare uno di questi metodi:

266 266 

267```bash theme={null}267```bash theme={null}

artifacts.md +2 −2

Details

95 95 

96Seleziona un artefatto, quindi premi uno di questi tasti:96Seleziona un artefatto, quindi premi uno di questi tasti:

97 97 

98* **`Enter`**: lo apre nel tuo browser quando è già allegato alla sessione corrente e lo allega quando non lo è. Prima della v2.1.216, `Enter` lo apriva nel tuo browser98* **`Enter`**: lo apre nel tuo browser quando è già allegato alla sessione corrente e lo allega quando non lo è

99* **`o`**: lo apre nel tuo browser99* **`o`**: lo apre nel tuo browser

100* **`c`**: copia il suo link100* **`c`**: copia il suo link

101* **`d`**: al di fuori di una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), elimina definitivamente un artefatto che possiedi dopo la tua conferma. Il suo link smette di funzionare per tutti, te compreso101* **`d`**: al di fuori di una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), elimina definitivamente un artefatto che possiedi dopo la tua conferma. Il suo link smette di funzionare per tutti, te compreso


225 225 

226Quando una pagina supportata da un connettore viene renderizzata ma le sue sezioni live rimangono vuote per un visualizzatore nella tua organizzazione, esamina queste cause:226Quando una pagina supportata da un connettore viene renderizzata ma le sue sezioni live rimangono vuote per un visualizzatore nella tua organizzazione, esamina queste cause:

227 227 

228* **Il visualizzatore non ha connesso il connettore**: i connettori sono per account, quindi ogni visualizzatore ha bisogno della propria connessione a ogni connettore che la pagina chiama. Possono aggiungerne uno in **Settings > Connectors** su claude.ai, quindi ricaricare la pagina.228* **Il visualizzatore non ha connesso il connettore**: i connettori sono per account, quindi ogni visualizzatore ha bisogno della propria connessione a ogni connettore che la pagina chiama. Possono aggiungerne uno in [**Customize > Connectors**](https://claude.ai/customize/connectors) su claude.ai, quindi ricaricare la pagina.

229* **Il visualizzatore ha rifiutato la richiesta di permesso**: un rifiuto dura per il resto di quel caricamento di pagina. Ricaricare la pagina riporta la richiesta di permesso.229* **Il visualizzatore ha rifiutato la richiesta di permesso**: un rifiuto dura per il resto di quel caricamento di pagina. Ricaricare la pagina riporta la richiesta di permesso.

230* **Le chiamate ai connettori sono disattivate per l'organizzazione**: un Proprietario controlla l'interruttore [**Enable artifact connectors**](#control-connector-calls-from-artifacts) nelle impostazioni di amministrazione.230* **Le chiamate ai connettori sono disattivate per l'organizzazione**: un Proprietario controlla l'interruttore [**Enable artifact connectors**](#control-connector-calls-from-artifacts) nelle impostazioni di amministrazione.

231* **La pagina chiama nomi di strumenti che il connettore non espone**: le sezioni interessate rimangono vuote per tutti, incluso te. Questo può accadere quando una pagina nomina i singoli strumenti dietro un connettore di tipo gateway che espone solo alcuni dei suoi strumenti. Chiedi a Claude di correggere i nomi degli strumenti che la pagina chiama e di pubblicarla di nuovo.231* **La pagina chiama nomi di strumenti che il connettore non espone**: le sezioni interessate rimangono vuote per tutti, incluso te. Questo può accadere quando una pagina nomina i singoli strumenti dietro un connettore di tipo gateway che espone solo alcuni dei suoi strumenti. Chiedi a Claude di correggere i nomi degli strumenti che la pagina chiama e di pubblicarla di nuovo.

best-practices.md +417 −355

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Best practices for Claude Code5# Best practice per Claude Code

6 6 

7> Suggerimenti e modelli per ottenere il massimo da Claude Code, dalla configurazione dell'ambiente al ridimensionamento tra sessioni parallele.7> Ottieni di più da Claude Code: di' a Claude ciò che non può vedere, dagli un controllo da eseguire e applica le regole che non ammettono eccezioni.

8 8 

9Claude Code è un ambiente di codifica agenziale. A differenza di un chatbot che risponde alle domande e aspetta, Claude Code può leggere i vostri file, eseguire comandi, apportare modifiche e lavorare autonomamente attraverso i problemi mentre voi guardate, reindirizzate o vi allontanate completamente.9Claude Code è progettato in modo che, nella maggior parte dei casi, il tuo primo prompt semplice in una sessione nuova faccia già la cosa giusta, senza alcuna configurazione da parte tua.

10 10 

11Questo cambia il modo in cui lavorate. Invece di scrivere il codice voi stessi e chiedere a Claude di rivederlo, descrivete quello che volete e Claude capisce come costruirlo. Claude esplora, pianifica e implementa.11Ad esempio:

12 12 

13Ma questa autonomia comporta comunque una curva di apprendimento. Claude lavora all'interno di determinati vincoli che dovete comprendere.13* Per consentire ai comandi di essere eseguiti in sicurezza senza che tu debba approvarli uno per uno, le nuove sessioni di terminale e VS Code si avviano in [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode), in cui un classificatore esamina qualsiasi azione rischiosa prima che venga eseguita.

14* Per mantenere concentrata la tua conversazione principale mentre il lavoro indipendente procede in parallelo, Claude delega ai subagent e ti interpella solo quando è necessario.

15* Per far proseguire una sessione lunga senza che tu debba gestirla, la conversazione viene compattata automaticamente prima che la finestra di contesto si riempia.

14 16 

15Questa guida copre i modelli che si sono dimostrati efficaci nei team interni di Anthropic e per gli ingegneri che utilizzano Claude Code in vari codebase, linguaggi e ambienti. Per sapere come funziona il ciclo agenziale, consultate [How Claude Code works](https://code.claude.com/docs/it/how-claude-code-works.md).17Questa pagina spiega cosa fare quando le impostazioni predefinite non bastano. Di solito succede quando il tuo progetto ha conoscenze, regole o vincoli che Claude non può vedere dal solo codice:

16 18 

17***19* Un processo di deploy che esiste solo nella testa di qualcuno

20* Un file che non deve mai essere letto

21* Un controllo che deve passare prima che qualcosa possa considerarsi completato

22* Un budget da non superare

18 23 

19La maggior parte delle best practice si basa su un vincolo: la finestra di contesto di Claude si riempie rapidamente e le prestazioni si degradano man mano che si riempie.24Nessuna impostazione predefinita può conoscere queste cose sul tuo progetto, quindi è qui che un po' di configurazione da parte tua ripaga.

20 25 

21La finestra di contesto di Claude contiene l'intera conversazione, inclusi ogni messaggio, ogni file che Claude legge e ogni output di comando. Tuttavia, può riempirsi rapidamente. Una singola sessione di debug o esplorazione del codebase potrebbe generare e consumare decine di migliaia di token.26Quando una sessione non va come ti aspettavi, quasi sempre il motivo è uno di questi:

22 27 

23Questo è importante perché le prestazioni dell'LLM si degradano man mano che il contesto si riempie. Quando la finestra di contesto sta per riempirsi, Claude potrebbe iniziare a "dimenticare" le istruzioni precedenti o fare più errori. La finestra di contesto è la risorsa più importante da gestire. Per vedere come una sessione si riempie nella pratica, [guardate una procedura dettagliata interattiva](https://code.claude.com/docs/it/context-window.md) di quello che si carica all'avvio e quanto costa ogni lettura di file. Monitorate continuamente l'utilizzo del contesto con una [custom status line](https://code.claude.com/docs/it/statusline.md) e consultate [Reduce token usage](https://code.claude.com/docs/it/costs.md#reduce-token-usage) per strategie su come ridurre l'utilizzo dei token.28* Claude ha creato qualcosa di diverso da quello che avevi in mente, oppure deve riscoprire lo stesso fatto all'inizio di ogni sessione. Gli mancano informazioni che non può ottenere leggendo il repository. Consulta [Di' a Claude ciò che non può vedere](#tell-claude-what-it-cant-see).

29* Claude ha detto di aver finito ma non era proprio così, di solito perché non aveva modo di verificare il proprio lavoro. Consulta [Dai a Claude un controllo da eseguire](#give-claude-a-check-to-run).

30* Claude ha fatto qualcosa che non deve mai succedere in questo repository, oppure ha saltato un passaggio che deve sempre avvenire. Un prompt da solo non può garantire nessuna delle due cose. Consulta [Applica le regole che non ammettono eccezioni](#enforce-the-rules-that-cant-have-exceptions).

31* Claude ha fatto la cosa giusta, ma ci ha messo più tempo, token o richieste di permesso di quanto valesse l'attività. Consulta [Modifica un'impostazione predefinita](#change-a-default).

24 32 

25***33[Lascia che Claude lavori senza di te](#let-claude-run-without-you) applica gli stessi quattro punti alle esecuzioni senza supervisione, e [Cosa puoi smettere di fare](#what-you-can-stop-doing) elenca i consigli che i modelli attuali hanno reso superflui.

26 34 

27## Dai a Claude un modo per verificare il suo lavoro35> [!NOTE]

28 

29> [!TIP]

30>36>

31> Dai a Claude un controllo che può eseguire: test, una build, uno screenshot da confrontare. È la differenza tra una sessione che guardi e una da cui ti allontani.37> La configurazione per un intero team si trova in una pagina separata: [Configura Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md).

32 38 

33Claude si ferma quando il lavoro sembra completato. Senza un controllo che possa eseguire, "sembra completato" è l'unico segnale disponibile, e tu diventi il ciclo di verifica: ogni errore aspetta che tu lo noti. Dai a Claude qualcosa che produca un risultato positivo o negativo, e il ciclo si chiude da solo. Claude esegue il lavoro, esegue il controllo, legge il risultato e itera finché il controllo non passa.39## Istruzioni deterministiche e non deterministiche

34 40 

35Il controllo è qualsiasi cosa che restituisca un segnale che Claude possa leggere nella conversazione: una suite di test, un codice di uscita della build, un linter, uno script che confronta l'output con un fixture, o uno [screenshot del browser](https://code.claude.com/docs/it/chrome.md) confrontato con un design. Esegui [`/verify`](https://code.claude.com/docs/it/skills#run-and-verify-your-app) tu stesso dopo che il controllo di Claude passa per confermare la modifica rispetto all'app in esecuzione.41Ogni istruzione che dai a Claude Code appartiene a una di queste categorie:

36 42 

37| Strategia | Prima | Dopo |431. Non deterministica: scrivi tu l'istruzione e Claude (il modello) la legge. Può essere il tuo prompt, `CLAUDE.md` o una skill. Il modello decide poi cosa fare con queste informazioni. Di solito segue i tuoi comandi, e i modelli attuali sono bravi a comprendere le tue intenzioni senza molto contesto, ma non c'è alcuna *garanzia* che seguirà le tue istruzioni. Può comunque decidere di non fare certe cose, o di farne altre.

38| - | - | - |442. Deterministica: configuri tu l'istruzione e Claude Code (l'harness) *deve* eseguirla. Può essere un hook, una regola deny o un'impostazione gestita. Claude Code la applica ogni volta, indipendentemente da ciò che il modello ha deciso di fare.

39| **Fornisci criteri di verifica** | *"implementa una funzione che convalida gli indirizzi email"* | *"scrivi una funzione validateEmail. esempi di casi di test: [user@example.com](mailto:user@example.com) è vero, invalid è falso, [user@.com](mailto:user@.com) è falso. esegui i test dopo l'implementazione"* |

40| **Verifica i cambiamenti dell'interfaccia utente visivamente** | *"rendi il dashboard più bello"* | *"\[incolla screenshot] implementa questo design. fai uno screenshot del risultato e confrontalo con l'originale. elenca le differenze e correggile"* |

41| **Affronta le cause radice, non i sintomi** | *"la build sta fallendo"* | *"la build fallisce con questo errore: \[incolla errore]. correggilo e verifica che la build abbia successo. affronta la causa radice, non sopprimere l'errore"* |

42 45 

43Una volta che il controllo esiste, decidi quanto rigidamente deve bloccare l'arresto:46La maggior parte degli elementi di Claude Code esiste in entrambe le forme:

44 47 

45* **In un prompt**: chiedi a Claude di eseguire il controllo e iterare nello stesso messaggio, come nella tabella sopra.48| | Non deterministico (decide Claude) | Deterministico (lo impone Claude Code) |

46* **In una sessione**: imposta il controllo come condizione [`/goal`](https://code.claude.com/docs/it/goal). Un valutatore separato lo ri-controlla dopo ogni turno e Claude continua a lavorare finché l'obiettivo non si risolve. Se Claude si blocca, Claude Code alla fine arresta l'esecuzione con l'obiettivo ancora impostato — vedi [come funziona la valutazione di /goal](https://code.claude.com/docs/it/goal.md#how-evaluation-works).49| :- | :- | :- |

47* **Come gate deterministico**: un [Stop hook](https://code.claude.com/docs/it/hooks.md#stop) esegue il tuo controllo come script e blocca il turno dall'terminare finché non passa. [Stop input](https://code.claude.com/docs/it/hooks.md#stop-input) copre il limite sui blocchi consecutivi.50| Cosa fare | Il tuo prompt, `CLAUDE.md`, le skill che Claude avvia da sé | Gli hook, e le skill che solo tu puoi avviare |

48* **Da un secondo parere**: un [verification subagent](https://code.claude.com/docs/it/sub-agents.md) o un [dynamic workflow](https://code.claude.com/docs/it/workflows.md) che controlla i suoi stessi risultati ha un modello fresco che tenta di confutare il risultato, quindi l'agente che esegue il lavoro non è quello che lo valuta.51| Cosa può toccare | Il classificatore della modalità auto | Regole deny, la sandbox in [modalità rigorosa](https://code.claude.com/docs/it/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), impostazioni gestite |

52| Quando ha finito | Una richiesta di prove, `/goal`, `/code-review` | Test, controllo dei tipi, un hook `Stop`, CI |

53| Quanto spende | Livello di sforzo, il ritmo di Claude | `--max-turns` o [`--max-budget-usd`](https://code.claude.com/docs/it/cli-reference) con `-p`, un [limite di spesa](https://code.claude.com/docs/it/costs.md) che hai impostato |

54| Chi ha l'ultima parola | Il riepilogo di Claude su ciò che ha fatto | Protezione del branch, una persona che approva il merge |

49 55 

50Ogni passaggio scambia la configurazione per l'attenzione. La versione con prompt funziona su qualsiasi attività oggi. Le versioni `/goal` e Stop hook sono quelle che permettono a un'esecuzione incustodita di terminare correttamente senza di te.56Nella maggior parte dei casi, vuoi che sia Claude a decidere. Quasi ogni linea guida ha eccezioni, e i modelli attuali sono bravi a leggere il codice che hanno davanti e a valutare se una linea guida si adatta alla situazione. Con il codice reale davanti, Claude di solito è in una posizione migliore per prendere quella decisione rispetto a una regola che hai scritto in anticipo.

51 57 

52Fai mostrare a Claude le prove piuttosto che asserire il successo: l'output del test, il comando che ha eseguito e cosa ha restituito, o uno screenshot del risultato. Rivedere le prove è più veloce che ri-eseguire la verifica tu stesso, e funziona per le sessioni che non stavi guardando.58Il tipo deterministico serve quando vuoi assicurarti che certe cose accadano *sempre* (o non accadano mai), indipendentemente da ciò che decide il modello. Non deve trattarsi di nulla di drammatico. La modalità auto [blocca già le cose drammatiche](https://code.claude.com/docs/it/permission-modes.md#what-the-classifier-blocks-by-default), come un deploy in produzione o un force push sul lavoro di qualcun altro. Di solito si tratta di qualcosa di specifico del *tuo* progetto, e può essere di nicchia quanto vuoi:

53 59 

54***60* Non modificare mai il client generato in `src/gen/`

61* Esegui sempre lo script dell'intestazione di licenza dopo aver creato un file

55 62 

56## Esplorate prima, poi pianificate, poi codificate63Avresti potuto scrivere ciascuna di queste come una riga in `CLAUDE.md` o nel tuo prompt, e Claude la seguirebbe quasi sempre. Ma per quanto tu la formuli con decisione, se Claude segua quella riga in un dato turno resta comunque una sua scelta.

57 64 

58> [!TIP]65> [!TIP]

59>66>

60> Separate la ricerca e la pianificazione dall'implementazione per evitare di risolvere il problema sbagliato.67> Se continui ad aggiungere enfasi a una riga di `CLAUDE.md` e Claude la ignora comunque, è segno che quella riga va messa in un hook. Vale anche il contrario: se hai hook per cose che sono solo preferenze, eliminali e lascia decidere Claude.

61 68 

62Lasciare che Claude salti direttamente alla codifica può produrre codice che risolve il problema sbagliato. Utilizzate [Plan Mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) per separare l'esplorazione dall'esecuzione.69## Di' a Claude ciò che non può vedere

63 70 

64Il flusso di lavoro consigliato ha quattro fasi:71> [!TIP]

72>

73> Scrivi solo ciò che Claude non può trovare leggendo il repository, o ciò che altrimenti passerebbe tempo a riscoprire in ogni sessione.

65 74 

66**1. Esplora**75Claude inizia ogni attività leggendo il tuo codice, e i modelli attuali sono *molto* bravi in questo. Trovano la struttura dei file, le convenzioni, il framework di test e il modo in cui sono costruiti i componenti esistenti, di solito più velocemente di quanto potresti spiegarli tu. Questo significa che Claude conosce già la maggior parte di ciò che potresti essere tentato di scrivergli.

67 76 

68Entra in plan mode premendo `Shift+Tab` finché la barra di stato non mostra `⏸ plan mode on`, oppure avvia la sessione con `claude --permission-mode plan`. Claude legge i file e risponde alle domande senza apportare modifiche.77Quello che non può trovare sono le informazioni che non sono mai state nel repository:

69 78 

70```txt title="claude (plan mode)" wrap theme={null}79* Una decisione presa dal tuo team in una riunione

71read /src/auth and understand how we handle sessions and login.80* Un processo di deploy che esiste solo nella testa di una persona

72also look at how we manage environment variables for secrets.81* La variabile d'ambiente di cui hanno bisogno i tuoi test di integrazione

73```

74 82 

75**2. Pianifica**83Ci sono anche informazioni che *sono* nel repository ma richiedono qualche minuto di ricerca per essere trovate, e Claude deve rifare quella ricerca all'inizio di ogni sessione.

76 84 

77Chiedi a Claude di creare un piano di implementazione dettagliato.85Un buon test prima di scrivere qualcosa per Claude:

78 86 

79```txt title="claude (plan mode)" wrap theme={null}871. Potrebbe trovarlo leggendo il codice?

80I want to add Google OAuth. What files need to change?882. Andrebbe davvero a cercarlo?

81What's the session flow? Create a plan.

82```

83 89 

84Premi `Ctrl+G` per aprire il piano nel vostro editor di testo per la modifica diretta prima che Claude proceda.90Se la risposta è sì a entrambe, lascialo fuori.

85 91 

86**3. Implementa**92### Scrivi un prompt specifico

87 93 

88Esci da plan mode approvando il piano o premendo `Shift+Tab`, quindi lascia che Claude codifichi, verificando rispetto al suo piano.94Un prompt specifico aiuta per lo stesso motivo, perché fornisce a Claude informazioni che non ha già. Se indichi il file, descrivi il sintomo e dici fin dall'inizio cosa significa "risolto", di solito ti risparmi un giro di correzioni in seguito.

89 95 

90```txt title="claude" wrap theme={null}96Lo stesso vale per una preferenza tra due approcci ragionevoli: Claude non può ricavarla dal codice, quindi se ti interessa quale dei due sceglie, dillo subito.

91implement the OAuth flow from your plan. write tests for the

92callback handler, run the test suite and fix any failures.

93```

94 97 

95**4. Commit**98| Invece di | Prova |

99| :- | :- |

100| *"correggi il bug del login"* | *"gli utenti segnalano che il login fallisce dopo il timeout della sessione. guarda l'aggiornamento del token in src/auth/, scrivi un test che fallisce e riproduce il problema, poi correggilo"* |

101| *"aggiungi un widget calendario"* | *"segui il pattern di HotDogWidget.php e crea un widget calendario che permetta di scegliere un mese e di scorrere tra gli anni. nessuna nuova libreria"* |

96 102 

97Chiedi a Claude di eseguire il commit con un messaggio descrittivo e creare una PR.103Se hai già ciò di cui Claude ha bisogno, passaglielo invece di descriverlo:

98 104 

99```txt title="claude" wrap theme={null}105* Un file: digita `@` e il percorso per [includere il contenuto del file](https://code.claude.com/docs/it/common-workflows.md#reference-files-and-directories) nel tuo messaggio.

100commit with a descriptive message and open a PR106* Un'immagine: incolla nel prompt lo screenshot del design o dell'errore.

101```107* Output di un comando: invialo tramite pipe dalla tua shell con `cat error.log | claude -p "what's going on here"`.

102 108 

103Plan Mode è utile, ma aggiunge anche overhead.109Frasi come `think step by step` o `be thorough` sono normale testo del prompt, non parole chiave. Il controllo principale su quanto Claude ragiona è il [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level), trattato in [Modifica il modello e lo sforzo](#change-the-model-and-effort). Formulazioni di questo tipo possono comunque spingere Claude entro la sua impostazione di sforzo, ma non gliela fanno superare.

104 110 

105Per attività in cui l'ambito è chiaro e la correzione è piccola (come correggere un errore di battitura, aggiungere una riga di log o rinominare una variabile) chiedete a Claude di farlo direttamente.111Una frase che aiuta ancora è `be ambitious`. Claude tende a interpretare una richiesta in modo conservativo e a creare la cosa più piccola che la soddisfi, dato che non può vedere quanto speravi di ottenere. Quando vuoi la versione più completa, con i casi limite gestiti e il naturale seguito incluso, dillo:

106 112 

107La pianificazione è più utile quando siete incerti sull'approccio, quando il cambiamento modifica più file o quando non siete familiari con il codice da modificare. Se potete descrivere il diff in una frase, saltate il piano.113```text theme={null}

114build the settings page from the mockup. be ambitious: empty and error states, the save flow wired up, keyboard navigation, not just the layout

115```

108 116 

109***117Questo significa dire a Claude qual è la portata del lavoro, cosa che sai solo tu, piuttosto che quanto ragionare.

110 118 

111## Fornite contesto specifico nei vostri prompt119E quando stai esplorando anziché correggere qualcosa di specifico, un prompt vago come `what would you improve in this file?` va benissimo. Dovrai correggere un po' di più strada facendo, ed è questo il compromesso.

112 120 

113> [!TIP]121### Fai prima brainstorming con Claude

114>

115> Più precise sono le vostre istruzioni, meno correzioni vi serviranno.

116 122 

117Claude può dedurre l'intento, ma non può leggere la mente. Fate riferimento a file specifici, menzionate i vincoli e indicate i modelli di esempio.123Quando non sai ancora esattamente cosa vuoi, non devi chiarire tutto prima di scrivere il prompt. Chiedi invece a Claude di intervistarti:

118 124 

119| Strategia | Prima | Dopo |125```text theme={null}

120| - | - | - |126I want to add rate limiting to the public API but haven't thought it through yet. Interview me until you could write the spec, then write it to SPEC.md.

121| **Definire l'ambito del compito.** Specificate quale file, quale scenario e le preferenze di test. | *"aggiungere test per foo.py"* | *"scrivere un test per foo.py che copra il caso limite in cui l'utente è disconnesso. evitare i mock."* |127```

122| **Puntare alle fonti.** Indirizzate Claude alla fonte che può rispondere a una domanda. | *"perché ExecutionFactory ha un'API così strana?"* | *"guardare la cronologia git di ExecutionFactory e riassumere come la sua API è arrivata a essere così"* |

123| **Fare riferimento ai modelli esistenti.** Puntate Claude ai modelli nel vostro codebase. | *"aggiungere un widget calendario"* | *"guardare come i widget esistenti sono implementati nella home page per comprendere i modelli. HotDogWidget.php è un buon esempio. seguire il modello per implementare un nuovo widget calendario che consenta all'utente di selezionare un mese e paginare avanti/indietro per scegliere un anno. costruire da zero senza librerie diverse da quelle già utilizzate nel codebase."* |

124| **Descrivere il sintomo.** Fornite il sintomo, la probabile posizione e come appare "risolto". | *"correggere il bug di login"* | *"gli utenti segnalano che il login fallisce dopo il timeout della sessione. controllare il flusso di autenticazione in src/auth/, in particolare l'aggiornamento del token. scrivere un test fallito che riproduce il problema, quindi correggerlo"* |

125 128 

126I prompt vaghi possono essere utili quando state esplorando e potete permettervi di correggere il corso. Un prompt come `"cosa migliorereste in questo file?"` può evidenziare cose a cui non avreste pensato di chiedere.129Claude torna con domande a scelta multipla sugli aspetti che non hai ancora definito: limiti per utente o per chiave, cosa succede alle richieste oltre il limite, cosa è fuori ambito. Continua a chiedere finché le risposte non formano una specifica.

127 130 

128### Fornire contenuti ricchi131Una volta che `SPEC.md` esiste, avvia una nuova sessione per svilupparla, in modo che il lavoro parta con un contesto pulito e una definizione scritta di "completato". È anche il file a cui indirizzerai il revisore in seguito, in [Dai a Claude un controllo da eseguire](#give-claude-a-check-to-run).

129 132 

130> [!TIP]133### Mantieni CLAUDE.md breve

131>

132> Utilizzate `@` per fare riferimento ai file, incollate screenshot/immagini o inviate i dati direttamente.

133 134 

134Potete fornire dati ricchi a Claude in diversi modi:135Claude Code carica [`CLAUDE.md`](https://code.claude.com/docs/it/memory) in ogni sessione, il che significa che ogni riga al suo interno sottrae un po' dell'attenzione di Claude in *ogni* attività, che sia pertinente o meno. Ecco perché il file funziona meglio quando contiene solo ciò che Claude non potrebbe ricavare dal codice stesso:

135 136 

136* **Fare riferimento ai file con `@`** invece di descrivere dove vive il codice. Claude legge il file prima di rispondere.137* Come verificare il lavoro in questo repository: i comandi esatti per test, controllo dei tipi e lint, e come eseguire un singolo file di test

137* **Incollare le immagini direttamente**. Copiate/incollate o trascinate le immagini nel prompt.138* Punti in cui il codice è fuorviante: un vecchio pattern presente ovunque che il nuovo codice non deve copiare, o una directory che sembra inutilizzata ma non lo è

138* **Fornire URL** per la documentazione e i riferimenti API. Usa `/permissions` per aggiungere all'allowlist i domini utilizzati di frequente.139* Decisioni che non sono nel repository: quale helper per gli errori ha scelto il team, come funzionano i deploy, cosa richiede una revisione delle migrazioni

139* **Inviare i dati tramite pipe** eseguendo `cat error.log | claude -p "explain this error"` per inviare il contenuto del file direttamente.140* Qualsiasi cosa tu abbia già dovuto correggere due volte

140* **Lasciare che Claude recuperi quello di cui ha bisogno**. Dite a Claude di estrarre il contesto stesso utilizzando comandi Bash, strumenti MCP o leggendo i file.

141 141 

142***142Un `CLAUDE.md` che supera questo test resta breve:

143 143 

144## Configurate il vostro ambiente144```markdown CLAUDE.md theme={null}

145# Commands

146- Install: pnpm install

147- Run one test file: pnpm vitest run path/to/file.test.ts

148- Typecheck: pnpm tsc --noEmit

145 149 

146Alcuni passaggi di configurazione rendono Claude Code significativamente più efficace in tutte le vostre sessioni. Per una panoramica completa delle funzionalità dell'estensione e di quando utilizzare ciascuna, consultate [Extend Claude Code](https://code.claude.com/docs/it/features-overview.md).150# Conventions

151- Use the error helpers in src/lib/errors.ts, never throw raw strings

152- src/legacy/ is still live but don't copy its patterns into new code

147 153 

148### Scrivete un CLAUDE.md efficace154# Gotchas

155- Integration tests need DATABASE_URL set, see .env.example

156```

149 157 

150> [!TIP]158In una sessione, esegui `/context` per confermare che Claude ha caricato il file.

151>

152> Eseguite `/init` per generare un file CLAUDE.md iniziale basato sulla struttura del vostro progetto attuale, quindi affinate nel tempo.

153 159 

154CLAUDE.md è un file speciale che Claude legge all'inizio di ogni conversazione. Includete comandi Bash, stile del codice e regole del flusso di lavoro. Questo fornisce a Claude un contesto persistente che non può dedurre dal solo codice.160Nota che la riga del controllo dei tipi contiene solo il comando. Claude deve conoscere il comando per poter verificare il proprio lavoro man mano. Se vuoi anche che Claude Code *imponga* il superamento del controllo dei tipi prima che Claude finisca, quello è un compito per un [hook `Stop`](#enforce-the-check-with-a-stop-hook). Una riga come `Always typecheck before you finish` in questo file funziona la maggior parte delle volte, non sempre.

155 161 

156Non esiste un formato obbligatorio per i file CLAUDE.md, ma manteneteli brevi e leggibili. Ad esempio:162Non devi scrivere il file da zero:

157 163 

158```markdown CLAUDE.md theme={null}164* `/init` genera una versione iniziale a partire dal tuo codebase. Da lì il lavoro consiste soprattutto nel rimuovere righe. La [guida alla memoria](https://code.claude.com/docs/it/memory.md#write-effective-instructions) consiglia di restare sotto le 200.

159# Code style165* `/doctor` suggerisce tagli per tutto ciò che Claude può [già ricavare dal codice](https://code.claude.com/docs/it/memory.md#my-claude-md-is-too-large).

160- Use ES modules (import/export) syntax, not CommonJS (require)166* `/doctor prompt-audit` segnala le istruzioni scritte per modelli precedenti, che fanno riferimento a file che non esistono più o che [si contraddicono a vicenda](https://code.claude.com/docs/it/memory.md#audit-your-instruction-files).

161- Destructure imports when possible (eg. import { foo } from 'bar')

162 167 

163# Workflow168Le tue preferenze personali vanno in `CLAUDE.local.md` invece che in `CLAUDE.md`, e aggiungi quel file a `.gitignore` in modo che resti fuori dal repository.

164- Be sure to typecheck when you're done making a series of code changes

165- Prefer running single tests, and not the whole test suite, for performance

166```

167 169 

168Eseguite `/context` per confermare che Claude ha caricato il file. CLAUDE.md viene caricato ogni sessione, quindi includete solo le cose che si applicano ampiamente. Per la conoscenza del dominio o i flussi di lavoro che sono rilevanti solo a volte, utilizzate [skills](https://code.claude.com/docs/it/skills.md) invece. Claude li carica su richiesta senza gonfiare ogni conversazione.170> [!NOTE]

171>

172> Se Claude continua a ignorare una riga che *è* in `CLAUDE.md`, aggiungere IMPORTANT probabilmente non risolverà il problema. O il file è diventato così lungo che la riga si perde, oppure la riga è una regola che non ammette eccezioni, nel qual caso va messa in un [hook](#enforce-the-rules-that-cant-have-exceptions).

169 173 

170Mantenetelo conciso. Per ogni riga, chiedetevi: *"Rimuovere questo causerebbe a Claude di fare errori?"* Se no, tagliatelo. I file CLAUDE.md gonfi causano a Claude di ignorare le vostre istruzioni effettive!174### Limita le regole a una parte del codebase

171 175 

172| ✅ Includere | ❌ Escludere |176Se una regola conta solo in una parte del codebase, mettila in [`.claude/rules/`](https://code.claude.com/docs/it/memory#path-specific-rules) con un filtro `paths:` in modo che venga caricata solo quando Claude sta effettivamente lavorando lì. Ad esempio, questo `.claude/rules/api.md` viene caricato per i file TypeScript sotto `src/api/`:

173| - | - |

174| Comandi Bash che Claude non può indovinare | Qualsiasi cosa Claude possa capire leggendo il codice |

175| Regole di stile del codice che differiscono dai valori predefiniti | Convenzioni linguistiche standard che Claude già conosce |

176| Istruzioni di test e runner di test preferiti | Documentazione API dettagliata (collegare alla documentazione invece) |

177| Etichetta del repository (denominazione dei rami, convenzioni PR) | Informazioni che cambiano frequentemente |

178| Decisioni architettoniche specifiche del vostro progetto | Spiegazioni lunghe o tutorial |

179| Stranezze dell'ambiente di sviluppo (variabili env richieste) | Descrizioni file per file del codebase |

180| Insidie comuni o comportamenti non ovvi | Pratiche ovvie come "scrivi codice pulito" |

181 177 

182Se Claude continua a fare qualcosa che non volete nonostante abbia una regola contro di essa, il file è probabilmente troppo lungo e la regola si sta perdendo. Se Claude vi fa domande che sono risposte in CLAUDE.md, la formulazione potrebbe essere ambigua. Trattate CLAUDE.md come codice: rivederlo quando le cose vanno male, potarlo regolarmente e testate i cambiamenti osservando se il comportamento di Claude effettivamente cambia. Per un CLAUDE.md controllato, eseguite [`/doctor`](https://code.claude.com/docs/it/commands#all-commands) e Claude propone tagli per il contenuto che può derivare dal codebase.178```markdown .claude/rules/api.md theme={null}

179---

180paths:

181 - "src/api/**/*.ts"

182---

183- Validate request bodies with the zod schemas in src/api/schemas/, don't hand-roll checks

184- Every new endpoint needs an entry in openapi.yaml, CI fails without it

185```

183 186 

184Se Claude continua a saltare un'istruzione, aggiungete enfasi come "IMPORTANTE" a quella riga sola. Se enfatizzate molte righe, nessuna di esse si distingue. Controllate CLAUDE.md in git in modo che il vostro team possa contribuire. Il file aumenta di valore nel tempo.187### Inserisci le procedure del team nelle skill

185 188 

186I file CLAUDE.md possono importare file aggiuntivi utilizzando la sintassi `@path/to/import`. Per le regole di importazione e dove i file CLAUDE.md possono trovarsi, consultate [CLAUDE.md files](https://code.claude.com/docs/it/memory.md#claude-md-files).189Un modello più capace sa di più sull'ingegneria, ma non sa come il *tuo* team esegue un rilascio, cosa dice il tuo runbook per gli incidenti o come vuoi che sia scritta la documentazione delle API. Questo tipo di conoscenza va in una [skill](https://code.claude.com/docs/it/skills.md): una procedura o un elemento di conoscenza del team salvato in `.claude/skills/<name>/SKILL.md`.

187 190 

188### Configurate i permessi191Per questo genere di cose le skill pesano anche meno sul contesto rispetto a `CLAUDE.md`. Per una skill che Claude può avviare da solo, vede il nome e la descrizione in ogni sessione, ma [legge il file completo](https://code.claude.com/docs/it/skills.md#skill-content-lifecycle) solo quando l'attività lo richiede. Una lunga procedura di rilascio in una skill non pesa sulla correzione di un bug non correlato come farebbe in `CLAUDE.md`.

189 192 

190> [!TIP]193> [!NOTE]

191>194>

192> Per ottenere meno prompt senza rinunciare al controllo, pre-approvate gli strumenti di cui vi fidate con `/permissions` e lasciate che i comandi in sandbox vengano eseguiti senza chiedere con `/sandbox`. Passate alla modalità Manual quando volete approvare voi stessi le modifiche e i comandi.195> La regola di `CLAUDE.md` vale anche per le skill: scrivi solo ciò che Claude non può trovare da solo.

193 196 

194Con Claude Code v2.1.283 o successivo, la modalità auto è la [modalità di permesso iniziale integrata](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per le sessioni di terminale interattivo e VS Code: un modello classificatore separato esamina la maggior parte delle azioni invece di voi e blocca solo quello che sembra rischioso, come l'escalation di ambito, l'infrastruttura sconosciuta o le azioni guidate da contenuti ostili. Nelle versioni precedenti, la modalità auto è la modalità di permesso iniziale integrata solo su piani Pro, Max e Team.197Per un workflow con effetti collaterali, come eseguire davvero quel rilascio, aggiungi `disable-model-invocation: true`. Claude allora [non può avviare la skill da solo](https://code.claude.com/docs/it/skills.md#control-who-invokes-a-skill), e questa viene eseguita solo quando digiti tu stesso `/release`. Salvata come `.claude/skills/release/SKILL.md`, potrebbe apparire così:

195 198 

196In modalità Manual, Claude Code chiede prima di azioni che potrebbero modificare il vostro sistema: scritture di file, comandi Bash, strumenti MCP. Questo è sicuro ma tedioso. Dopo la decima approvazione state cliccando piuttosto che revisionando. Due strumenti tagliano queste interruzioni in modalità Manual e si applicano anche in modalità auto:199```markdown .claude/skills/release/SKILL.md theme={null}

200---

201name: release

202description: Cut a new release. Bumps the version, writes the changelog entry, tags it and pushes the tag so CI can publish.

203disable-model-invocation: true

204---

2051. Make sure you're on main with a clean tree. If not, stop and ask.

2062. Run `pnpm changeset version` and commit the result.

2073. Summarize the PRs merged since the last tag into CHANGELOG.md, one line each, user-facing changes only.

2084. Tag `v<new version>` and push the tag. CI publishes from there, never publish from your machine.

209```

197 210 

198* **Whitelist di permessi**: consentire strumenti specifici che sapete essere sicuri, come `npm run lint` o `git commit`211### Collega gli strumenti di cui Claude ha bisogno

199* **Sandboxing**: abilitare l'isolamento a livello di sistema operativo che limita l'accesso al filesystem e alla rete, consentendo a Claude di lavorare più liberamente all'interno di confini definiti

200 212 

201Leggete di più su [permission modes](https://code.claude.com/docs/it/permission-modes.md), [permission rules](https://code.claude.com/docs/it/permissions.md) e [sandboxing](https://code.claude.com/docs/it/sandboxing.md).213Alcune delle cose che Claude non può vedere si trovano del tutto in un altro sistema, come il tuo issue tracker o la tua dashboard degli errori. Se quel sistema ha una CLI, di solito è il modo più semplice per accedervi. Con `gh` installato e autenticato, ad esempio, Claude apre pull request e legge i commenti di revisione senza alcuna spiegazione da parte tua. Per una CLI che non ha mai visto, basta indirizzarlo a `--help`.

202 214 

203### Utilizzate gli strumenti CLI215Per i sistemi senza CLI c'è [MCP](https://code.claude.com/docs/it/mcp.md). Aggiungi un server dalla tua shell:

204 216 

205> [!TIP]217```bash theme={null}

206>218claude mcp add --transport http notion https://mcp.notion.com/mcp

207> Dite a Claude Code di utilizzare strumenti CLI come `gh`, `aws`, `gcloud` e `sentry-cli` quando interagite con servizi esterni.219```

220 

221Il server compare quindi sotto `/mcp` all'interno di una sessione. I server connessi aggiungono i nomi dei propri strumenti e le proprie istruzioni al contesto anche quando non li stai usando, quindi conviene [disattivare quelli che non ti servono](https://code.claude.com/docs/it/mcp.md#disable-a-server-without-removing-it) da lì.

222 

223E se lavori con un linguaggio tipizzato, un [plugin di code intelligence](https://code.claude.com/docs/it/plugins/code-intelligence.md) permette a Claude di saltare direttamente a una definizione invece di leggere molti file per trovarla.

208 224 

209Gli strumenti CLI sono il modo più efficiente in termini di contesto per interagire con servizi esterni. Se utilizzate GitHub, installate la CLI `gh`. Claude sa come usarla per creare problemi, aprire pull request e leggere commenti. Senza `gh`, Claude può comunque utilizzare l'API GitHub, ma le richieste non autenticate spesso raggiungono i limiti di velocità.225## Dai a Claude un controllo da eseguire

210 226 

211Claude è anche efficace nell'imparare strumenti CLI che non conosce già. Provate prompt come `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`227Claude si ferma quando il lavoro sembra completato. Se non ha nulla da eseguire che gli dica se il lavoro *è* effettivamente completato, "sembra completato" è l'unico segnale su cui può basarsi. In pratica questo fa di te la suite di test, e ogni errore resta lì finché non ti capita di notarlo.

212 228 

213### Connettete i server MCP229Se gli dai qualcosa che restituisce un esito positivo o negativo, Claude può chiudere quel ciclo da solo. Apporta la modifica, esegue il controllo e, se qualcosa si è rotto, legge l'output e lo corregge prima di eseguire di nuovo il controllo.

214 230 

215> [!TIP]231> [!TIP]

216>232>

217> Eseguite `claude mcp add` con un nome di server e un URL o comando per connettere strumenti esterni come Notion, Figma o il vostro database. Ad esempio: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.233> Dai a Claude qualcosa che può eseguire e che restituisce un esito positivo o negativo. Una volta che lo ha, può andare avanti da solo e tu non devi stare a guardare.

218 234 

219Con i [server MCP](https://code.claude.com/docs/it/mcp.md), potete chiedere a Claude di implementare funzionalità da tracker di problemi, interrogare database, analizzare dati di monitoraggio, integrare design da Figma e automatizzare flussi di lavoro.235Il controllo può essere quasi qualsiasi cosa, purché Claude possa leggerne il risultato:

220 236 

221### Configurate gli hook237* Un file di test

238* Il codice di uscita di una build

239* Un linter

240* Uno script che confronta l'output con una fixture

241* Uno [screenshot del browser](https://code.claude.com/docs/it/chrome.md) accanto al mockup

222 242 

223> [!TIP]243Se il tuo repository ha già uno di questi, la riga più utile in assoluto del tuo `CLAUDE.md` è il comando che lo esegue.

224>

225> Utilizzate gli hook per azioni che devono accadere ogni volta senza eccezioni.

226 244 

227Gli [hook](https://code.claude.com/docs/it/hooks-guide.md) eseguono script automaticamente in punti specifici del flusso di lavoro di Claude. A differenza delle istruzioni CLAUDE.md che sono consultive, gli hook sono deterministici e garantiscono che l'azione accada.245Quanto rendere rigoroso il controllo dipende da te. Le opzioni vanno da Claude che decide da sé fino a Claude Code che lo impone:

228 246 

229Claude può scrivere hook per voi. Provate prompt come *"Write a hook that runs eslint after every file edit"* o *"Write a hook that blocks writes to the migrations folder."* Modificate `.claude/settings.json` direttamente per configurare gli hook manualmente e eseguite `/hooks` per sfogliare quello che è configurato.247* Nel prompt: `run the auth tests after, and keep going until they pass`. Claude decide da sé quando è soddisfatto. Funziona con qualsiasi attività, oggi stesso, senza configurazione.

248* Come obiettivo: [`/goal all tests in tests/auth pass and lint is clean`](https://code.claude.com/docs/it/goal) imposta una condizione che un modello separato verifica rispetto alla conversazione dopo ogni turno, e Claude continua finché non è soddisfatta. Raramente ti serve in una sessione che segui tu stesso. Conta per le lunghe esecuzioni in background, in cui Claude a volte termina un turno con un riepilogo dei progressi mentre alcuni punti sono ancora aperti, e l'obiettivo lo rimanda al lavoro.

249* Come hook Stop: un [hook `Stop`](https://code.claude.com/docs/it/hooks#stop) esegue il tuo script ogni volta che Claude cerca di terminare il turno, e rimanda Claude al lavoro se lo script termina con codice di uscita 2. Questo viene imposto da Claude Code (l'harness), quindi il turno non termina finché il controllo dei tipi non passa o non viene raggiunto il [limite di blocchi](https://code.claude.com/docs/it/hooks.md#stop-input). C'è un [esempio più avanti](#enforce-the-check-with-a-stop-hook).

250* Da qualcuno che non ha scritto il codice: nel terminale, [`/code-review`](https://code.claude.com/docs/it/code-review-local) esamina il diff in un subagent nuovo che non ha mai visto la tua conversazione. Non è influenzato dal ragionamento che ha prodotto il codice.

230 251 

231### Createte skill252Qualunque opzione usi, chiedi a Claude delle *prove*: il comando che ha eseguito e il suo output, oppure lo screenshot. "Tutti i test passano" da solo ti dice ben poco, e leggere l'output è più veloce che rieseguire il controllo tu stesso. Per una sessione che non stavi seguendo, è anche l'unica prova che hai.

232 253 

233> [!TIP]254> [!TIP]

234>255>

235> Create file `SKILL.md` in `.claude/skills/` per fornire a Claude conoscenza del dominio e flussi di lavoro riutilizzabili.256> Una volta che Claude dice di aver finito, puoi anche eseguire [`/verify`](https://code.claude.com/docs/it/skills#run-and-verify-your-app) nella sessione, che fa sì che Claude compili ed esegua l'app e ne esamini il risultato. In questo modo si individuano i problemi che test e controlli dei tipi non rilevano.

236 257 

237Le [skill](https://code.claude.com/docs/it/skills.md) estendono la conoscenza di Claude con informazioni specifiche del vostro progetto, team o dominio. Claude le applica automaticamente quando rilevanti, o potete invocarle direttamente con `/skill-name`.258### Revisiona rispetto alla tua specifica

238 259 

239Create una skill aggiungendo una directory con un `SKILL.md` a `.claude/skills/`:260Se preferisci che la revisione controlli il lavoro rispetto al tuo piano anziché cercare bug in generale, scrivi tu stesso il prompt di revisione:

240 261 

241```markdown .claude/skills/api-conventions/SKILL.md theme={null}262```text theme={null}

242name: api-conventions263use a subagent to review the rate limiter diff against SPEC.md, check every requirement is implemented and the listed edge cases have tests, report gaps that affect correctness and skip style

243description: REST API design conventions for our services

244# API Conventions

245- Use kebab-case for URL paths

246- Use camelCase for JSON properties

247- Always include pagination for list endpoints

248- Version APIs in the URL path (/v1/, /v2/)

249```264```

250 265 

251Le skill possono anche definire flussi di lavoro ripetibili che invocate direttamente:266> [!NOTE]

252 267>

253```markdown .claude/skills/fix-issue/SKILL.md theme={null}268> Non eliminare la parte `skip style` di quel prompt. Un revisore a cui viene chiesto di trovare problemi troverà sempre *qualcosa*. Se correggi ogni segnalazione, finisci con livelli di astrazione in più e test per casi che non possono verificarsi.

254name: fix-issue269 

255description: Fix a GitHub issue270### Imponi il controllo con un hook Stop

256disable-model-invocation: true271 

257Analyze and fix the GitHub issue: $ARGUMENTS.272La versione con hook `Stop` della regola sul controllo dei tipi è composta da poche righe in `.claude/settings.json`. Il codice di uscita 2 è ciò che blocca l'arresto. Tutto ciò che il comando stampa su stderr torna a Claude come motivo per cui non può ancora finire, ed è per questo che l'output del compilatore viene reindirizzato lì:

258 273 

2591. Use `gh issue view` to get the issue details274```json .claude/settings.json theme={null}

2602. Understand the problem described in the issue275{

2613. Search the codebase for relevant files276 "hooks": {

2624. Implement the necessary changes to fix the issue277 "Stop": [

2635. Write and run tests to verify the fix278 {

2646. Ensure code passes linting and type checking279 "hooks": [

2657. Create a descriptive commit message280 { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }

2668. Push and create a PR281 ]

282 }

283 ]

284 }

285}

267```286```

268 287 

269Eseguite `/fix-issue 1234` per invocarlo. Utilizzate `disable-model-invocation: true` per flussi di lavoro con effetti collaterali che volete attivare manualmente.288Per vederlo in azione, chiedi a Claude una modifica che rompa un tipo: invece di finire, riceve gli errori del compilatore e continua finché `tsc` non passa. Se l'hook blocca [otto arresti consecutivi](https://code.claude.com/docs/it/hooks.md#stop-input) senza chiamate agli strumenti nel mezzo, Claude Code scavalca il blocco successivo e termina il turno. Per alzare il limite, imposta [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](https://code.claude.com/docs/it/env-vars).

270 289 

271### Create subagent personalizzati290## Applica le regole che non ammettono eccezioni

272 291 

273> [!TIP]292> [!TIP]

274>293>

275> Definite assistenti specializzati in `.claude/agents/` che Claude può delegare per attività isolate.294> Se qualcosa deve accadere ogni volta, rendilo un hook, una regola deny o un'impostazione gestita. `CLAUDE.md` è per le linee guida, e Claude può decidere che una linea guida non si applica.

276 295 

277I [subagent](https://code.claude.com/docs/it/sub-agents.md) vengono eseguiti nel loro contesto con il loro set di strumenti consentiti. Sono utili per attività che leggono molti file o necessitano di focus specializzato senza ingombrare la vostra conversazione principale.296Prendi tre regole che potresti avere oggi in `CLAUDE.md`: `Never read .env`, `Always run the formatter after editing`, `Don't touch the migrations folder`. Claude le seguirà quasi sempre. Per le poche in cui "quasi" non basta, spostale fuori da `CLAUDE.md` e inseriscile in una configurazione che Claude Code (l'harness) applica da sé. Da quel momento, il risultato non dipende da ciò che il modello ricorda o decide.

278 297 

279```markdown .claude/agents/security-reviewer.md theme={null}298### Imponi i passaggi con gli hook

280name: security-reviewer299 

281description: Reviews code for security vulnerabilities300Gli [hook](https://code.claude.com/docs/it/hooks-guide.md) eseguono qualcosa di tuo in punti fissi del ciclo di Claude: prima o dopo una chiamata a uno strumento, quando Claude cerca di fermarsi, quando inizia una sessione e così via. Quel qualcosa può essere:

282tools: Read, Grep, Glob, Bash301 

283model: opus302* Un comando shell (il caso abituale)

284You are a senior security engineer. Review code for:303* Una richiesta POST a un endpoint HTTP

285- Injection vulnerabilities (SQL, XSS, command injection)304* Una chiamata a uno strumento su uno dei tuoi server MCP

286- Authentication and authorization flaws305* Un [hook `prompt` o `agent`](https://code.claude.com/docs/it/hooks#hook-handler-fields), che lascia decidere a un modello

287- Secrets or credentials in code306 

288- Insecure data handling307Un hook `prompt` o `agent` chiede a *un altro modello* di decidere, quindi non è deterministico nemmeno lui. Per un'applicazione effettiva, usa un hook `command` o `http`, e aggiungi [`onFailure: "block"`](https://code.claude.com/docs/it/hooks#block-the-action-when-a-hook-fails) se l'azione deve essere fermata anche quando l'hook stesso va in crash o in timeout. Per un hook che analizza i commit alla ricerca di segreti, ad esempio, preferiresti bloccare il commit piuttosto che lasciarlo passare senza analisi mentre lo scanner non è disponibile.

308 

309Ecco la regola del formatter come hook `PostToolUse`. Viene eseguito dopo ogni `Edit` o `Write`, e che Claude ricordi la regola non conta più, perché non è Claude a eseguirla:

289 310 

290Provide specific line references and suggested fixes.311```json .claude/settings.json theme={null}

312{

313 "hooks": {

314 "PostToolUse": [

315 {

316 "matcher": "Edit|Write",

317 "hooks": [

318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }

319 ]

320 }

321 ]

322 }

323}

291```324```

292 325 

293Dite a Claude di utilizzare i subagent esplicitamente: *"Use a subagent to review this code for security issues."*326Per verificare l'hook, chiedi a Claude di aggiungere una riga indentata male in un file formattato da Prettier. Il file salvato torna con l'indentazione corretta.

294 327 

295### Installate i plugin328La regola sulle migrazioni diventa un [hook `PreToolUse`](https://code.claude.com/docs/it/hooks-guide#block-edits-to-protected-files) che termina con codice di uscita 2 per qualsiasi percorso sotto `migrations/`. Non devi scriverlo tu: `write a hook that blocks edits to the migrations folder` funziona come prompt, e `/hooks` mostra il risultato. Non esagerare, però: un hook è per una regola con *zero* eccezioni, e `Prefer named exports` ne ha molte, quindi quella resta in `CLAUDE.md`.

296 329 

297> [!TIP]330### Limita l'accesso con le regole di permesso e la sandbox

298>

299> Eseguite `/plugin` per sfogliare il marketplace. I plugin aggiungono skill, strumenti e integrazioni senza configurazione.

300 331 

301I [plugin](https://code.claude.com/docs/it/plugins/overview.md) raggruppano skill, hook, subagent e server MCP in una singola unità installabile dalla comunità e da Anthropic. Se lavorate con un linguaggio tipizzato, installate un [plugin di code intelligence](https://code.claude.com/docs/it/plugins/code-intelligence.md) per fornire a Claude la navigazione precisa dei simboli e il rilevamento automatico degli errori dopo le modifiche.332Le [regole di permesso](https://code.claude.com/docs/it/permissions.md) decidono cosa Claude può eseguire, leggere e recuperare. Le regole `deny` valgono in ogni modalità di permesso, incluse auto e `bypassPermissions`, ed è esattamente per questo che la regola su `.env` va lì:

302 333 

303Per una guida sulla scelta tra skill, subagent, hook e MCP, consultate [Extend Claude Code](https://code.claude.com/docs/it/features-overview.md#match-features-to-your-goal).334```json .claude/settings.json theme={null}

335{

336 "permissions": {

337 "allow": ["Bash(pnpm tsc --noEmit)"],

338 "ask": ["Bash(git push *)"],

339 "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]

340 }

341}

342```

304 343 

305***344Con questa configurazione salvata, chiedere a Claude cosa c'è in `.env` non funziona, sia tramite lo strumento `Read` sia tramite `cat .env`.

306 345 

307## Comunicate efficacemente346Le regole corrispondono alle chiamate agli strumenti, non alle intenzioni, quindi conviene sapere dove sono i limiti:

308 347 

309Fate a Claude le domande che fareste a un altro ingegnere, e per funzionalità più grandi fate intervistare Claude e scrivere una specifica prima di iniziare l'implementazione.348* La regola `Read` *intercetta* `cat .env`, perché Claude Code riconosce i [comandi comuni di lettura dei file](https://code.claude.com/docs/it/permissions.md#read-and-edit).

349* Non intercetta uno script che apre il file.

350* Una regola deny `WebFetch` per un dominio non ha effetto su un `curl` verso lo stesso dominio, a meno che la sandbox non sia attiva.

310 351 

311### Fate domande sul codebase352Per un limite a livello di sistema operativo sull'accesso al filesystem o alla rete, attiva la [sandbox](https://code.claude.com/docs/it/sandboxing.md) con `/sandbox` in una sessione. Confina i comandi shell di Claude su macOS, Linux e WSL2 e [recepisce anche le tue regole deny `Read` e le regole `WebFetch(domain:...)`](https://code.claude.com/docs/it/sandboxing#permission-rules), quindi per qualsiasi cosa legata alla sicurezza ti conviene usare entrambe.

312 353 

313> [!TIP]354Per impostazione predefinita Claude può comunque chiedere di riprovare un comando bloccato fuori dalla sandbox, e quella richiesta passa per il normale flusso dei permessi. La [modalità sandbox rigorosa](https://code.claude.com/docs/it/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), nella scheda **Overrides** di `/sandbox`, disattiva questo nuovo tentativo.

355 

356> [!WARNING]

314>357>

315> Fate a Claude domande che fareste a un ingegnere senior.358> La modalità auto è un modello classificatore che valuta ogni azione, non una regola rigida. È bravo a farlo, ma come ogni valutazione può sbagliare. Puoi anche regolare ciò che considera rischioso, e la tua organizzazione può disattivarla del tutto, quindi le tue regole "mai" vanno nelle regole deny o negli hook.

359 

360### Scegli a chi si applica una regola

316 361 

317Quando vi onboarding a un nuovo codebase, utilizzate Claude Code per l'apprendimento e l'esplorazione. Potete fare a Claude lo stesso tipo di domande che fareste a un altro ingegnere:362Il punto in cui si trova una regola determina a chi si applica:

318 363 

319* Come funziona il logging?364* `.claude/settings.local.json` e `~/.claude/settings.json` sono solo tuoi. Quando selezioni **Yes, and don't ask again** per un comando, Claude Code salva quella regola nel file locale.

320* Come faccio a creare un nuovo endpoint API?365* `.claude/settings.json` e gli hook al suo interno appartengono al repository. Una volta che ne fai il commit, si applicano a chiunque lavori nel repository. Le sue regole deny si applicano subito. Le sue regole `allow` attendono che ogni persona accetti la [finestra di dialogo di attendibilità](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) per quella cartella, e anche l'[attendibilità del workspace](https://code.claude.com/docs/it/hooks.md#workspace-trust) determina quando i suoi hook iniziano a essere eseguiti sulla loro macchina.

321* Cosa fa `async move { ... }` sulla riga 134 di `foo.rs`?366* Le [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md) appartengono all'organizzazione. Provengono dalla console di amministrazione, da MDM o da un file `managed-settings.json`, e nessun file di impostazioni personale può sovrascriverle, il che le rende l'unico posto adatto per la policy di un team di sicurezza. Se sei tu la persona che le imposta, consulta [Configura Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md).

322* Quali casi limite gestisce `CustomerOnboardingFlowImpl`?

323* Perché questo codice chiama `foo()` invece di `bar()` sulla riga 333?

324 367 

325Utilizzare Claude Code in questo modo è un flusso di lavoro di onboarding efficace, migliorando il tempo di ramp-up e riducendo il carico su altri ingegneri. Non è richiesto alcun prompt speciale: fate le domande direttamente.368Qualunque sia l'ambito, mantieni ridotto l'insieme delle regole imposte. Ogni hook e ogni regola deny scatterà di tanto in tanto quando non dovrebbe, e qualcuno deve mantenerli. Se ti ritrovi ad averne quaranta, la maggior parte sono probabilmente preferenze che Claude avrebbe potuto valutare da solo.

326 369 

327### Lasciate che Claude vi intervisti370## Modifica un'impostazione predefinita

328 371 

329> [!TIP]372> [!TIP]

330>373>

331> Per funzionalità più grandi, fate intervistare Claude prima. Iniziate con un prompt minimo e chiedete a Claude di intervistarvi utilizzando lo strumento `AskUserQuestion`.374> Le impostazioni predefinite sono abbastanza buone da lasciarle così finché un'attività non costa più tempo, token o interruzioni del dovuto. Quando succede, esegui `/usage` nella sessione per vedere dove sono finiti.

332 375 

333Claude fa domande su cose che potreste non aver ancora considerato, inclusa l'implementazione tecnica, l'interfaccia utente/esperienza utente, i casi limite e i compromessi. Sostituite `[brief description]` con la vostra funzionalità prima di inviare il prompt.376Una nuova sessione prende già alcune decisioni per te:

334 377 

335```text wrap theme={null}378* Le sessioni interattive di terminale e VS Code si avviano in modalità auto.

336I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.379* Usa [Claude Opus 5.5 con sforzo medio](https://code.claude.com/docs/it/model-config.md#default-model-setting) sulla maggior parte dei piani e dei provider.

380* Delega il lavoro ai subagent quando vede un motivo per farlo.

381* Compatta la conversazione man mano che cresce.

337 382 

338Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.383Nella maggior parte dei casi non ci pensi nemmeno. Quando un'attività costa più del dovuto, di solito il motivo è uno di questi quattro.

339 384 

340Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.385### Modifica la modalità di permesso

341```

342 386 

343Una volta completata la specifica, avviate una nuova sessione per eseguirla. La nuova sessione ha un contesto pulito focalizzato interamente sull'implementazione e avete una specifica scritta a cui fare riferimento.387Entrambi gli estremi della gamma dei permessi hanno un costo:

344 388 

345Le specifiche più utili sono autonome: nominano i file e le interfacce coinvolte, dichiarano cosa è fuori ambito e terminano con un passaggio di verifica end-to-end che prova che la funzionalità funziona. Il tempo speso per rendere la specifica precisa ripaga più del tempo speso a guardare l'implementazione.389* **Modalità Manual**: approvi tu stesso ogni modifica e ogni comando che non sia di sola lettura. È sicura, ma dopo la decima richiesta inizi ad approvare senza leggere, e nulla va avanti mentre sei lontano dalla tastiera.

390* **`bypassPermissions`**: approva tutto ciò che non è coperto dalle tue regole deny e ask, il che ha senso solo in un container usa e getta.

346 391 

347***392La [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) si colloca tra i due, ed è la modalità in cui [si avviano](https://code.claude.com/docs/it/permission-modes.md#which-mode-a-session-starts-in) le sessioni interattive di terminale e VS Code. Claude lavora senza fermarsi per le approvazioni di routine, e un modello classificatore separato controlla le azioni in [un ordine fisso](https://code.claude.com/docs/it/permission-modes.md#how-the-classifier-evaluates-actions) prima che vengano eseguite. Si concentra sulle [cose che vorresti fossero fermate da una persona](https://code.claude.com/docs/it/permission-modes.md#what-the-classifier-blocks-by-default):

348 393 

349## Gestite la vostra sessione394* `curl | bash`

395* Deploy e migrazioni in produzione

396* Force push sul lavoro di altre persone

397* Dati sensibili inviati a endpoint esterni

398* Azioni che sembrano guidate da contenuti letti da Claude anziché da te

350 399 

351Le conversazioni sono persistenti e reversibili. Utilizzate questo a vostro vantaggio!400Quando blocca qualcosa, ricevi una notifica e l'azione compare sotto **Recently denied** in `/permissions`, dove puoi riprovarla con un'approvazione manuale. Dopo [tre blocchi consecutivi](https://code.claude.com/docs/it/permission-modes.md#when-auto-mode-falls-back) (o venti in totale), la modalità auto si mette in pausa e torna a chiederti conferma.

352 401 

353### Correggete il corso presto e spesso402Niente di tutto questo sostituisce i tuoi controlli deterministici, perché viene eseguito *dopo* di essi. Le regole deny e ask e gli hook `PreToolUse` si applicano prima che il classificatore veda qualsiasi cosa, quindi una regola deny blocca in modalità auto esattamente come altrove. La sandbox continua a confinare i [comandi shell che avvolge](https://code.claude.com/docs/it/sandboxing.md#what-runs-outside-the-sandbox).

354 403 

355> [!TIP]404> [!NOTE]

356>405>

357> Correggete Claude non appena notate che sta andando fuori strada.406> Puoi anche dire `don't push until I've reviewed` nella conversazione, e il classificatore [lo tratta come un segnale di blocco](https://code.claude.com/docs/it/permission-modes.md#boundaries-you-state-in-conversation). Si tratta comunque di un modello che legge la trascrizione, e la frase può andare persa quando la conversazione viene compattata, quindi tutto ciò che conta va in una regola deny.

407 

408Il problema opposto è il classificatore che blocca ripetutamente qualcosa che nella tua configurazione è di routine. Invece di approvarlo manualmente ogni volta, aggiungilo a `autoMode.allow` o descrivi la tua infrastruttura attendibile nella [configurazione della modalità auto](https://code.claude.com/docs/it/auto-mode-config.md). Si scrive in linguaggio naturale anziché con pattern, e [`/auto-mode-setup`](https://code.claude.com/docs/it/auto-mode-config#generate-environment-entries) può redigere per te la parte `environment` a partire dal tuo progetto e dalle sessioni recenti:

409 

410```json ~/.claude/settings.json theme={null}

411{

412 "autoMode": {

413 "environment": [

414 "$defaults",

415 "Source control: github.com/example-org and every repo under it",

416 "Trusted internal domains: *.internal.example.com"

417 ],

418 "allow": [

419 "$defaults",

420 "Deploying to the staging namespace is fine, it's isolated from production and resets nightly"

421 ]

422 }

423}

424```

358 425 

359I migliori risultati provengono da cicli di feedback stretti. Sebbene Claude occasionalmente risolva i problemi perfettamente al primo tentativo, correggerlo rapidamente generalmente produce soluzioni migliori più velocemente.426> [!WARNING]

427>

428> Mantieni `"$defaults"` in ogni elenco che imposti, perché senza di esso le tue voci *sostituiscono* le regole integrate di quell'elenco invece di aggiungersi a esse. Per `environment` e `allow` perderesti il contesto e le eccezioni integrati, e un elenco `soft_deny` senza di esso elimina i blocchi integrati su force push e deploy in produzione.

429>

430> Il blocco `autoMode` deve inoltre trovarsi in `~/.claude/settings.json` anziché nel progetto, perché il classificatore ignora `autoMode` nelle impostazioni di progetto.

360 431 

361* **`Esc`**: fermate Claude a metà azione con il tasto `Esc`. Il contesto viene preservato, quindi potete reindirizzare.432Se preferisci vedere ogni modifica e ogni comando prima che avvengano, `Shift+Tab` nella sessione passa ciclicamente tra le modalità di permesso, Manual inclusa, oppure avvia con `claude --permission-mode manual` dalla tua shell. E se poi Manual chiede troppo spesso, `/fewer-permission-prompts` analizza le tue trascrizioni recenti alla ricerca di chiamate Bash e MCP di sola lettura comuni e le aggiunge a un'allowlist in `.claude/settings.json`.

362* **`Esc + Esc` o `/rewind`**: premete `Esc` due volte o eseguite `/rewind` per aprire il menu di rewind e ripristinare la conversazione e lo stato del codice precedenti, o riassumere da un messaggio selezionato.

363* **`"Undo that"`**: fate in modo che Claude ripristini le sue modifiche.

364* **`/clear`**: ripristinate il contesto tra attività non correlate. Le sessioni lunghe con contesto irrilevante possono ridurre le prestazioni.

365 433 

366Se avete corretto Claude più di due volte sullo stesso problema in una sessione, il contesto è ingombrato di approcci falliti. Eseguite `/clear` e iniziate di nuovo con un prompt più specifico che incorpori quello che avete imparato. Una sessione pulita con un prompt migliore quasi sempre supera una sessione lunga con correzioni accumulate.434### Modifica il modello e lo sforzo

367 435 

368### Gestite il contesto aggressivamente436Lo [sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) è il controllo principale su quanto a lungo ragiona Claude, e sostituisce la maggior parte di ciò che in passato si faceva con la formulazione del prompt. Claude Opus 5.5, Sonnet 5.5 e Haiku 5.5 usano `medium` per impostazione predefinita, che è più che sufficiente per il lavoro quotidiano sulle funzionalità con un ambito chiaro. I casi in cui cambiarlo, con `/effort` nella sessione:

369 437 

370> [!TIP]438* Alzalo con `/effort high` o `/effort xhigh` quando la riuscita dipende da casi facili da trascurare. Pensa a un bug in codice che non hai scritto tu, a un test instabile o a una modifica dello schema in cui Claude deve trovare ogni lettore della vecchia struttura. Claude allora controlla più casi limite e verifica una parte maggiore del suo lavoro prima di rispondere, ed è lì che vanno il tempo e i token in più.

371>439* Abbassalo con `/effort low` quando procedi rapidamente avanti e indietro e rivedi comunque ogni risultato: brainstorming, una prima bozza, una ridenominazione su alcuni file. Claude ti dà un punto di partenza prima e, dato che guidi ogni passaggio, la riflessione aggiuntiva non avrebbe cambiato molto oltre all'attesa.

372> Eseguite `/clear` tra attività non correlate per ripristinare il contesto.440* Riserva `max` a un problema difficile che vuoi che Claude risolva senza di te, come la ricerca di una vulnerabilità di sicurezza. Nelle attività ordinarie tende a ragionare troppo, quindi paghi di più per una risposta che potrebbe non essere migliore di quella che avresti ottenuto con `high`.

441* Quando ne ha bisogno solo il messaggio successivo, come una domanda complicata nel mezzo di un lavoro altrimenti di routine, inserisci [`ultrathink`](https://code.claude.com/docs/it/model-config#use-ultrathink-for-one-off-deep-reasoning) in quel prompt invece di cambiare l'impostazione.

373 442 

374Claude Code compatta automaticamente la cronologia della conversazione quando vi avvicinate ai limiti del contesto, il che preserva il codice e le decisioni importanti mentre libera spazio.443Per quanto riguarda il modello, Opus 5.5 predefinito gestisce bene la maggior parte del lavoro di programmazione e Sonnet costa meno per il lavoro di routine. [Claude Fable 5.1](https://code.claude.com/docs/it/model-config.md#work-with-fable) è disponibile quando lo selezioni esplicitamente con `/model fable`, e Haiku è adatto ai subagent che svolgono compiti semplici. [Configurazione del modello](https://code.claude.com/docs/it/model-config.md) contiene l'elenco completo per piano e provider.

375 444 

376Durante le sessioni lunghe, la finestra di contesto di Claude può riempirsi di conversazioni irrilevanti, contenuti di file e comandi. Questo può ridurre le prestazioni e talvolta distrarre Claude.445### Sappi quanto costano i subagent

377 446 

378* Utilizzate `/clear` frequentemente tra le attività per ripristinare completamente la finestra di contesto447Claude delega ai [subagent](https://code.claude.com/docs/it/sub-agents.md) di sua iniziativa:

379* Quando la compattazione automatica si attiva, Claude riassume quello che conta di più, inclusi i modelli di codice, gli stati dei file e le decisioni chiave

380* Per un maggiore controllo, eseguite `/compact <instructions>`, come `/compact Focus on the API changes`

381* Per compattare solo parte della conversazione, utilizzate `Esc + Esc` o `/rewind`, selezionate un checkpoint di messaggio e scegliete **Summarize from here** o **Summarize up to here**. Il primo condensa i messaggi da quel punto in poi mantenendo il contesto precedente intatto; il secondo condensa i messaggi precedenti mantenendo quelli recenti in pieno. Consultate [il menu di rewind e le opzioni di riassunto](https://code.claude.com/docs/it/checkpointing.md#rewind-and-summarize).

382* Personalizzate il comportamento di compattazione in CLAUDE.md con istruzioni come `"When compacting, always preserve the full list of modified files and any test commands"` per assicurare che il contesto critico sopravviva alla riassunzione

383* Per domande che non devono rimanere nel contesto, utilizzate [`/btw`](https://code.claude.com/docs/it/interactive-mode#side-questions-with-%2Fbtw). La risposta non entra mai nella cronologia della conversazione, quindi potete controllare un dettaglio senza far crescere il contesto.

384 448 

385### Utilizzate i subagent per l'investigazione449* Le ricerche ampie nel codebase vanno all'agente Explore integrato.

450* Le attività secondarie vengono [biforcate](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation) mentre la modalità fork è attiva (l'impostazione predefinita).

451* I subagent che avvia vengono eseguiti in background per impostazione predefinita, quindi la tua conversazione principale continua ad andare avanti.

386 452 

387> [!TIP]453Raramente devi chiedere qualcosa di tutto ciò, ma è utile sapere cosa ottieni e quanto costa.

388>

389> Delegate la ricerca con `"use subagents to investigate X"`. Esplorano in un contesto separato, mantenendo la vostra conversazione principale pulita per l'implementazione.

390 454 

391Poiché il contesto è il vostro vincolo fondamentale, utilizzate i subagent per mantenere la ricerca fuori da esso. Quando Claude ricerca un codebase legge molti file, tutti i quali consumano il vostro contesto. I subagent vengono eseguiti in finestre di contesto separate e riportano riassunti:455I subagent ripagano in queste situazioni:

392 456 

393```text wrap theme={null}457* Eseguire contemporaneamente parti di lavoro indipendenti, in modo che l'intera attività finisca prima

394Use subagents to investigate how our authentication system handles token458* Tenere l'output lungo, come un'esecuzione completa dei test o una ricerca ampia, fuori dalla tua conversazione principale, dove altrimenti resterebbe per il resto della sessione

395refresh, and whether we have any existing OAuth utilities I should reuse.459* Avere un revisore che non ha visto come è stato scritto il codice

396```460* Dare a un'attività meno strumenti di quelli della sessione principale, come un revisore che può leggere ma non modificare

397 461 

398Potete anche utilizzare i subagent per la verifica dopo che Claude implementa qualcosa. Consultate [Aggiungete un passaggio di revisione avversariale](#add-an-adversarial-review-step).462Ciò che ti costano sono soprattutto token, dato che ogni subagent invia le proprie richieste e queste contano sullo stesso utilizzo della tua conversazione principale. A volte costano anche tempo: un subagent nuovo deve prima raccogliere il contesto che la tua conversazione aveva già, quindi può finire per essere *più lento* che svolgere l'attività dove ti trovi.

399 463 

400### Riavvolgete con i checkpoint464E per impostazione predefinita è lo stesso modello (o uno più piccolo) sulla stessa attività. Ne ottieni parallelismo o uno sguardo nuovo, ma non una risposta più intelligente.

401 465 

402> [!TIP]466Per spendere meno:

403>

404> Ogni prompt che inviate che avvia un turno crea un checkpoint. Potete ripristinare la conversazione, il codice o entrambi a qualsiasi checkpoint precedente.

405 467 

406Claude crea automaticamente snapshot dei file prima di ogni modifica in modo che un checkpoint possa ripristinarli. Premete il doppio tasto Escape o eseguite `/rewind` per aprire il menu di rewind. Potete ripristinare solo la conversazione, ripristinare solo il codice, ripristinare entrambi o riassumere da un messaggio selezionato. Consultate [Checkpointing](https://code.claude.com/docs/it/checkpointing.md) per i dettagli.468* Imposta [`model: haiku`](https://code.claude.com/docs/it/sub-agents#choose-a-model) nella definizione di un subagent se il suo lavoro è semplice, come raccogliere i file che importano un modulo o controllare i link nella documentazione. Quel tipo di lavoro non ha bisogno del modello più grande, e Haiku costa molto meno per richiesta.

469* Chiedi riepiloghi brevi in risposta, così venti risultati non finiscono comunque per riempire il tuo contesto.

470* Controlla `/usage` per vedere quale quota del tuo utilizzo occupa ciascun tipo di subagent, così puoi capire quali valgono il loro costo.

471* Dai a un subagent personalizzato in `.claude/agents/` solo `tools: Read, Grep, Glob`. Ora è un revisore che non può modificare nulla, e quel limite è imposto da Claude Code anziché richiesto in un prompt.

407 472 

408Invece di pianificare attentamente ogni mossa, potete dire a Claude di provare qualcosa di rischioso. Se non funziona, riavvolgete e provate un approccio diverso. I checkpoint vengono salvati con la conversazione, quindi potete chiudere il vostro terminale, riprendere la sessione in seguito e comunque riavvolgere.473Quel revisore è un breve file, `.claude/agents/reviewer.md`:

409 474 

410> [!WARNING]475```markdown .claude/agents/reviewer.md theme={null}

411>476---

412> I checkpoint tracciano solo le modifiche apportate attraverso gli strumenti di modifica dei file di Claude. Le modifiche apportate attraverso comandi Bash o processi esterni non vengono acquisite. Questo non è un sostituto per git.477name: reviewer

478description: Reviews changed files against the spec they were built from. Use after implementing a feature, before opening the PR.

479tools: Read, Grep, Glob

480---

481You're reviewing code you didn't write. Compare the changed files against the spec you're given,

482check that every requirement is implemented and the listed edge cases have tests,

483and report only the gaps that affect correctness. Skip style.

484```

413 485 

414### Riprendete le conversazioni486Chiedi a Claude di `have the reviewer compare the rate limiter against SPEC.md` e le lacune tornano nella tua sessione, dove Claude può correggerle.

415 487 

416> [!TIP]488### Contieni costi e contesto

417>

418> Nominate le sessioni con `/rename` e trattate le come rami: ogni flusso di lavoro ottiene il suo contesto persistente.

419 489 

420Claude Code salva le conversazioni localmente, quindi quando un'attività si estende su più sessioni non dovete rispiegare il contesto. Eseguite [`claude --continue`](https://code.claude.com/docs/it/sessions#resume-a-session) per riprendere da dove avete lasciato, o `claude --resume` per scegliere da un elenco. Assegnate alle sessioni nomi descrittivi come `oauth-migration` in modo da poterle trovare in seguito. Consultate [Gestite le sessioni](https://code.claude.com/docs/it/sessions.md) per l'insieme completo di controlli di ripresa, ramo e denominazione.490Con una finestra da 1M di token sulla maggior parte dei modelli attuali e la compattazione vicino al limite, raramente esaurirai il contesto. Puoi comunque *pagare* per un contesto che non ti serve. Ogni richiesta invia l'intera conversazione, quindi una sessione che ha accumulato tre attività non correlate le rilegge tutte e tre a ogni turno della quarta. Questo è [scontato finché la cache è calda](https://code.claude.com/docs/it/costs.md#why-usage-climbs-in-a-long-session) e a prezzo pieno una volta scaduta.

421 491 

422***492[`/usage`](https://code.claude.com/docs/it/costs) è il primo posto in cui guardare. Su Pro, Max, Team ed Enterprise suddivide il tuo utilizzo per skill, subagent, plugin e server MCP. Segnala anche pattern come contesto lungo o frequenti cache miss quando uno di essi supera il 10% del tuo utilizzo. Da lì, le soluzioni abituali:

423 493 

424## Automatizza e scala494* `/clear` tra attività non correlate. Non costa nulla, e fa sì che l'attività successiva non continui a pagare per la cronologia della precedente. `/clear oauth-migration` assegna un nome alla sessione che stai lasciando, così puoi tornarci in seguito.

495* `/compact` con un focus, come `/compact keep the API changes and the test commands`. In una sessione lunga `/compact` è a sua volta una richiesta grande, dato che legge l'intera conversazione per riassumerla, e ancora di più una volta scaduta la cache.

496* Tieni d'occhio il lavoro in background: un `/loop`, il controllo di un obiettivo dopo ogni turno e i subagent di Claude continuano tutti a inviare richieste mentre non stai scrivendo.

425 497 

426Una volta che sei efficace con un Claude, moltiplica il tuo output con sessioni parallele, modalità non interattiva e pattern di fan-out.498> [!NOTE]

499>

500> La [prompt cache](https://code.claude.com/docs/it/prompt-caching.md) dura circa un'ora con un abbonamento e cinque minuti con una chiave API, un cloud provider o i crediti di utilizzo. I subagent hanno cinque minuti, a meno che tu non lo modifichi.

501>

502> Con la cache di un'ora, una sessione oltre circa 200K token che resta inattiva viene compattata poco prima della scadenza della cache, quindi dopo pranzo riprendi da un riepilogo. Se non ti serve affatto la cronologia, una sessione nuova costa comunque meno.

427 503 

428### Esegui la modalità non interattiva504## Guida la sessione

429 505 

430> [!TIP]506> [!TIP]

431>507>

432> Usa `claude -p "prompt"` in CI, hook pre-commit o script. Aggiungi `--output-format stream-json --verbose` per l'output JSON in streaming.508> Osserva il primo minuto, premi `Esc` nel momento in cui Claude devia e, dopo due correzioni non riuscite, esegui `/clear` e scrivi un prompt migliore invece di una terza correzione.

433 509 

434Con `claude -p "your prompt"`, puoi eseguire Claude in modo non interattivo, senza un prompt interattivo. L'esecuzione crea comunque una sessione ripristinabile a meno che tu non passi `--no-session-persistence`. [La modalità non interattiva](https://code.claude.com/docs/it/headless.md) è il modo in cui integri Claude nelle pipeline CI, negli hook pre-commit o in qualsiasi workflow automatizzato. I formati di output ti permettono di analizzare i risultati a livello di programmazione: testo semplice, JSON o JSON in streaming.510Nessuna configurazione sostituisce l'osservare il primo minuto e intervenire quando Claude si dirige da qualche parte che non intendevi. Ci sono solo pochi controlli per farlo, e vale la pena conoscerli a memoria:

435 511 

436```bash theme={null}512* `Esc` ferma Claude a metà azione e mantiene tutto fino a quel punto, così puoi reindirizzarlo senza perdere lavoro.

437# One-off queries513* `/rewind`, o `Esc` due volte su un prompt vuoto, apre il [menu di rewind](https://code.claude.com/docs/it/checkpointing.md#rewind-and-summarize), dove riporti il codice, la conversazione o entrambi a un prompt precedente. Questo rende poco rischioso provare prima l'approccio più audace e tornare indietro se non funziona. Lo stesso menu può anche riassumere parte della conversazione quando è diventata obsoleta.

438claude -p "Explain what this project does"514* `/clear` ricomincia da capo. Se hai corretto la stessa cosa due volte ed è ancora sbagliata, una terza correzione non fa che aggiungersi a una conversazione che contiene già due tentativi falliti che Claude continua a rileggere. `/clear` più un nuovo prompt che incorpora ciò che hai imparato funziona meglio quasi sempre.

439 

440# Structured output for scripts

441claude -p "List all API endpoints" --output-format json

442 515 

443# Streaming for real-time processing516> [!WARNING]

444claude -p "Analyze this log file" --output-format stream-json --verbose517>

445```518> I checkpoint coprono i file che Claude ha modificato con i propri strumenti per i file nella tua conversazione principale, quindi un file toccato solo da un comando Bash [non viene ripristinato](https://code.claude.com/docs/it/checkpointing.md#bash-command-changes-not-tracked). Funzionano insieme a git anziché sostituirlo.

446 519 

447Il primo comando stampa testo semplice. Il formato `json` restituisce un singolo oggetto JSON con un campo `result`. Il formato `stream-json` stampa un oggetto JSON per riga, iniziando con un evento di inizializzazione.520Due controlli minori: [`/btw`](https://code.claude.com/docs/it/interactive-mode#side-questions-with-%2Fbtw) risponde a una domanda veloce senza aggiungere nulla alla cronologia. E per un lavoro che si estende su più giorni, `/rename oauth-migration` nella sessione le assegna un nome, in modo che [`claude --resume oauth-migration`](https://code.claude.com/docs/it/sessions#resume-by-session-id-or-name) dalla tua shell la riprenda in seguito, checkpoint inclusi. `claude --continue` riprende quella più recente.

448 521 

449### Esegui più sessioni Claude522## Lascia che Claude lavori senza di te

450 523 

451> [!TIP]524> [!TIP]

452>525>

453> Esegui più sessioni Claude in parallelo per accelerare lo sviluppo, eseguire esperimenti isolati o avviare workflow complessi.526> Prima che un'esecuzione proceda senza supervisione, assicurati che sappia com'è il lavoro completato, che possa verificare il proprio lavoro e che possa toccare solo ciò che deve. Dalle un limite di turni o di spesa, e fai approvare il risultato finale a una persona.

454 

455Scegli l'approccio parallelo che si adatta a quanto coordinamento vuoi fare tu stesso, e aggiungi la messaggistica quando le sessioni devono passarsi i risultati tra loro:

456 527 

457* [Worktree](https://code.claude.com/docs/it/worktrees.md): esegui sessioni CLI separate in checkout git isolati in modo che le modifiche non si scontrino528Tutto ciò che è in questa pagina conta un po' di più quando non sei presente per individuare gli errori. Mentre osservi, il fatto che a Claude manchi qualche elemento di contesto non è un grosso problema: te ne accorgi entro un messaggio o due e glielo dici. In un'esecuzione avviata prima di andare a dormire, nessuno glielo dice, e la mattina dopo scopri che ha passato tutta la notte a costruire su un presupposto sbagliato.

458* [Messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md): lascia che le sessioni che esegui tu stesso si passino i risultati l'una all'altra

459* [App desktop](https://code.claude.com/docs/it/desktop.md#work-in-parallel-with-sessions): gestisci più sessioni locali visivamente, facoltativamente ciascuna nel proprio worktree

460* [Usa Claude Code nel cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md): esegui sessioni su infrastruttura gestita da Anthropic per impostazione predefinita

461* [Visualizzazione agente](https://code.claude.com/docs/it/agent-view.md): anteprima di ricerca. Esegui `claude agents` per inviare sessioni che continuano a funzionare in background e osservale da una sola schermata

462* [Team di agenti](https://code.claude.com/docs/it/agent-teams.md): sperimentale e disabilitato per impostazione predefinita. Coordinamento automatizzato di più sessioni con attività condivise, messaggistica e un team lead

463 529 

464Oltre a parallelizzare il lavoro, più sessioni consentono workflow focalizzati sulla qualità. Un contesto fresco migliora la code review poiché Claude non sarà influenzato dal codice che ha appena scritto.530Prima di lasciare un'attività in esecuzione da sola, conviene rispondere a queste cinque domande pensando a quell'attività specifica:

465 531 

466Ad esempio, usa un pattern Writer/Reviewer:5321. Sa com'è il lavoro completato? Una condizione di obiettivo, un file di specifica o un test che fallisce e che deve far passare.

5332. Può verificare il proprio lavoro? La suite di test, un hook `Stop`, una qualche fase di revisione.

5343. Cosa può toccare? Regole di permesso, `dontAsk`, la sandbox, un worktree, l'unico branch su cui può fare push.

5354. Cosa lo ferma? `--max-turns`, `--max-budget-usd`, un limite di spesa.

5365. Dove va il risultato e chi lo approva? Una PR, un commento o un riepilogo, e poi una persona che approva il merge, il deploy o qualsiasi altra cosa irreversibile.

467 537 

468| Sessione A (Writer) | Sessione B (Reviewer) |538Una volta avviata, Claude porterà avanti da solo un'attività lunga. Le parti che restano a te sono avviarla, decidere cosa significa "completato" questa volta e approvare il merge alla fine.

469| - | - |

470| `Implement a rate limiter for our API endpoints` | |

471| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

472| `Here's the review feedback: [Session B output]. Address these issues.` | |

473 539 

474Puoi fare qualcosa di simile con i test: fai scrivere i test a un Claude, poi a un altro il codice per superarli.540### Esegui Claude da uno script

475 541 

476### Fan out tra i file542[`claude -p "prompt"`](https://code.claude.com/docs/it/headless) viene eseguito una volta e termina, ed è così che Claude Code finisce nei job di CI, negli hook git e nei cicli della shell.

477 

478> [!TIP]

479>

480> Esegui un ciclo sulle attività chiamando `claude -p` per ciascuna. Usa `--allowedTools` per pre-approvare gli strumenti per le operazioni batch.

481 543 

482Per migrazioni o analisi su larga scala, puoi distribuire il lavoro tra molte invocazioni parallele di Claude. Esegui [`/batch <instruction>`](https://code.claude.com/docs/it/commands#all-commands) per fare in modo che Claude divida la modifica tra 5 e 30 subagent. Ogni subagent lavora nel proprio worktree. Per guidare invece il fan-out dal tuo script, esegui un ciclo su `claude -p`:544In uno script vorrai quasi sempre qualche flag in più:

483 545 

484**1. Genera un elenco di attività**546* [`--bare`](https://code.claude.com/docs/it/headless#start-faster-with-bare-mode) salta hook, skill, plugin, server MCP e file `CLAUDE.md`, sia quelli del repository sia quelli della macchina, in modo che l'esecuzione faccia la stessa cosa ovunque venga eseguita. Inoltre non tocca mai il tuo accesso a claude.ai: l'autenticazione proviene da `ANTHROPIC_API_KEY`, da un `apiKeyHelper` nel file che passi con `--settings` o dalle credenziali del tuo cloud provider.

547* `--append-system-prompt`, `--mcp-config` e `--settings` passano esplicitamente ciò di cui l'esecuzione *ha* bisogno.

548* `--allowedTools` pre-approva i suoi strumenti, e [`--permission-mode dontAsk`](https://code.claude.com/docs/it/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) rifiuta qualsiasi altra cosa che avrebbe richiesto conferma.

549* `--output-format json` ti fornisce un singolo oggetto risultato da analizzare, e `stream-json` con `--verbose` trasmette gli eventi man mano che accadono.

485 550 

486Fai scrivere a Claude l'elenco dei file da migrare in un file, in modo che il ciclo nel passaggio successivo possa leggerlo, con un prompt come `list all 2,000 Python files that need migrating and save the list to files.txt`551Messo tutto insieme, appare così:

487 

488**2. Scrivi uno script per scorrere l'elenco**

489 552 

490```bash theme={null}553```bash theme={null}

491for file in $(cat files.txt); do554for file in $(cat files.txt); do

492 claude -p "Migrate $file from Python 2 to Python 3. Return OK or FAIL." \555 claude --bare -p "Migrate $file to the new logger API and commit. Reply OK or FAIL." \

493 --allowedTools "Edit,Bash(git commit *)" \556 --allowedTools "Read,Edit,Bash(git add *),Bash(git commit *)" \

494 --permission-mode dontAsk557 --permission-mode dontAsk \

558 --max-turns 20

495done559done

496```560```

497 561 

498**3. Testa su pochi file, poi esegui su tutti**562Al termine di un'esecuzione, Claude risponde `OK` o `FAIL`, mentre un'esecuzione che raggiunge il limite di turni termina con un errore. Provalo prima su tre file, vedi cosa va storto, correggi il prompt, poi esegui il resto.

499 

500Affina il tuo prompt in base a ciò che va storto con i primi 2-3 file, quindi esegui sull'intero set. Il flag `--allowedTools` pre-approva gli strumenti di cui la migrazione ha bisogno. [`--permission-mode dontAsk`](https://code.claude.com/docs/it/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) nega qualsiasi altra cosa che richiederebbe un'approvazione, il che è importante quando esegui senza supervisione, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare alcune di queste chiamate.

501 563 

502Puoi anche integrare Claude nelle pipeline di elaborazione/dati esistenti:564La modalità auto funziona anche con `-p` se passi `--permission-mode auto`. In un'esecuzione non interattiva, un blocco del classificatore nega quella singola azione e Claude prosegue, e i blocchi ripetuti non mettono in pausa l'esecuzione come fanno in un terminale. Leggi [come si applicano le soglie in quel caso](https://code.claude.com/docs/it/permission-modes.md#repeated-block-thresholds) prima di farci affidamento.

503 565 

504```bash theme={null}566### Avvia esecuzioni su pianificazione o in base a un evento

505claude -p "<your prompt>" --output-format json | your_command

506```

507 567 

508### Esegui in autonomia con la modalità auto568Una volta avviata un'esecuzione, Claude può gestire il resto da solo. L'unica cosa che non può fare è decidere di *iniziare*, quindi qualcosa deve farlo: tu, un timer o un evento come un controllo CI fallito o una nuova PR.

509 569 

510Per un'esecuzione ininterrotta con controlli di sicurezza in background, usa la [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode). Un modello classificatore esamina i comandi prima che vengano eseguiti, bloccando l'escalation dell'ambito, l'infrastruttura sconosciuta e le azioni guidate da contenuti ostili, mentre consente al lavoro abituale di procedere senza richieste di conferma.570All'interno di una sessione aperta c'è [`/loop`](https://code.claude.com/docs/it/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), che ripete un prompt a intervalli:

511 571 

512```bash theme={null}572```text theme={null}

513claude --permission-mode auto -p "fix all lint errors"573/loop 15m check CI on this branch, and if it's red pull the failing job's log, fix it and push

514```574```

515 575 

516Quando il classificatore blocca ripetutamente le azioni in un'esecuzione non interattiva con il flag `-p`, Claude Code non interrompe l'esecuzione. Consulta [quando la modalità auto ricorre al fallback](https://code.claude.com/docs/it/permission-modes.md#when-auto-mode-falls-back) per sapere cosa accade invece e quali sono le soglie.576Ogni esecuzione è un ulteriore turno nella stessa sessione, quindi non lasciarne uno attivo in una conversazione lunga. Per tutto ciò che deve avvenire mentre il tuo laptop è chiuso, [`/schedule`](https://code.claude.com/docs/it/routines#create-from-the-cli) configura un'[attività pianificata nel cloud](https://code.claude.com/docs/it/routines.md) che viene eseguita in base a un timer. Richiede un accesso a claude.ai anziché una chiave API. Puoi aggiungere un trigger basato su eventi GitHub chiedendolo a Claude, o un trigger API su [claude.ai/code/routines](https://claude.ai/code/routines).

517 

518### Aggiungi un passaggio di revisione avversariale

519 577 

520> [!TIP]578> [!WARNING]

521>579>

522> Prima di considerare un'attività completata, fai in modo che un subagent riveda il diff in un contesto fresco e segnali le lacune.580> Prima di lasciare in esecuzione un'attività pianificata nel cloud, proteggi `main` con una [regola di branch GitHub che l'attività non può aggirare](https://code.claude.com/docs/it/routines.md#repositories-and-branch-permissions). E osserva le prime esecuzioni di qualsiasi cosa nuova prima di fidarti a lasciarla senza supervisione.

523 

524Più a lungo Claude lavora senza supervisione, più un controllo indipendente è importante prima di considerare il lavoro completato. Un revisore che opera in un contesto [subagent](https://code.claude.com/docs/it/sub-agents.md) fresco vede solo il diff e i criteri che gli fornisci, non il ragionamento che ha prodotto la modifica, quindi valuta il risultato in modo autonomo.

525 581 

526Per un controllo di correttezza, esegui la [skill `/code-review`](https://code.claude.com/docs/it/commands) inclusa, che esamina il diff corrente alla ricerca di bug in un subagent fresco e restituisce i risultati alla sessione. Per controllare invece il diff rispetto al tuo piano, scrivi tu stesso il prompt di revisione. Indica il lavoro da controllare, il piano rispetto a cui controllarlo e cosa conta come lacuna:582### Esegui sessioni in parallelo

527 583 

528```text wrap theme={null}584Quando hai più parti di lavoro separate in corso contemporaneamente, dai a ciascuna il proprio checkout in modo che le modifiche non possano scontrarsi. [`claude -w feature-auth`](https://code.claude.com/docs/it/worktrees#start-claude-in-a-worktree) avvia una sessione in un nuovo worktree, l'[app desktop](https://code.claude.com/docs/it/desktop.md#work-in-parallel-with-sessions) ne esegue diverse fianco a fianco, e le [sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) le eseguono nel cloud anziché sulla tua macchina.

529Use a subagent to review the rate limiter diff against PLAN.md. Check that

530every requirement is implemented, the listed edge cases have tests, and

531nothing outside the task's scope changed. Report gaps, not style preferences.

532```

533 585 

534Poiché il revisore opera come subagent, la sessione di implementazione riceve direttamente le lacune e può correggerle e ripetere la revisione senza che tu debba copiare i risultati tra le finestre.586Un worktree è un checkout nuovo, il che significa che i file ignorati da git come `.env` non sono presenti e le dipendenze non sono installate. Per i primi, elenca i file ignorati da git di cui hai bisogno in un [`.worktreeinclude`](https://code.claude.com/docs/it/worktrees#copy-gitignored-files-into-worktrees) nella root del repository (stessa sintassi di `.gitignore`) e Claude Code li copia in ogni worktree che crea:

535 587 

536Un revisore incaricato di trovare lacune di solito ne segnala alcune, anche quando il lavoro è solido, perché è quello che gli è stato chiesto di fare. Inseguire ogni risultato porta all'over-engineering: strati di astrazione extra, codice difensivo e test per casi che non possono verificarsi. Di' al revisore di segnalare solo le lacune che influiscono sulla correttezza o sui requisiti dichiarati, e tratta il resto come facoltativo.588```text .worktreeinclude theme={null}

589.env

590.env.local

591config/dev-credentials.json

592```

537 593 

538***594Limitati a file piccoli: li copia anziché collegarli, quindi inserire `node_modules` significherebbe una copia completa per ogni worktree. Per directory di grandi dimensioni c'è l'impostazione [`worktree.symlinkDirectories`](https://code.claude.com/docs/it/settings-reference#worktree-symlinkdirectories), oppure tieni il comando di installazione in `CLAUDE.md` in modo che Claude lo esegua ogni volta che inizia in un nuovo checkout.

539 595 

540## Evitate i modelli di fallimento comuni596Raramente devi ripulire tu stesso:

541 597 

542Questi sono errori comuni. Riconoscerli presto fa risparmiare tempo:598* Quando esci da una sessione worktree senza nome, Claude Code [rimuove il worktree](https://code.claude.com/docs/it/worktrees.md#clean-up-worktrees) se non contiene nulla. Per una sessione con nome, o con modifiche, ti chiede cosa fare.

599* I worktree dei subagent scompaiono quando il subagent termina senza modifiche.

600* I worktree dei subagent e delle sessioni in background che restano comunque vengono eliminati quando sono più vecchi di `cleanupPeriodDays` e non contengono lavoro.

543 601 

544* **La sessione del lavandino della cucina.** Iniziate con un'attività, poi chiedete a Claude qualcosa di non correlato, poi tornate alla prima attività. Il contesto è pieno di informazioni irrilevanti.602> [!NOTE]

545 > **Correzione**: `/clear` tra attività non correlate.603>

546* **Correggere più volte.** Claude fa qualcosa di sbagliato, lo correggete, è ancora sbagliato, lo correggete di nuovo. Il contesto è inquinato da approcci falliti.604> Un'esecuzione `claude -p --worktree` va ripulita da te, dato che termina senza chiedere. Rimuovi questi worktree con `git worktree remove <path>` e, se git si rifiuta perché il worktree è bloccato, esegui prima `git worktree unlock <path>`.

547 > **Correzione**: Dopo due correzioni fallite, `/clear` e scrivete un prompt iniziale migliore che incorpori quello che avete imparato.

548* **Il CLAUDE.md eccessivamente specificato.** Se il vostro CLAUDE.md è troppo lungo, Claude ignora metà di esso perché le regole importanti si perdono nel rumore.

549 > **Correzione**: Potate spietatamente. Se Claude fa già qualcosa di corretto senza l'istruzione, eliminatelo o convertitelo in un hook.

550* **Il divario tra fiducia e verifica.** Claude produce un'implementazione plausibile che non gestisce i casi limite.

551 > **Correzione**: Fornite sempre la verifica (test, script, screenshot). Se non potete verificarlo, non lo spedite.

552* **L'esplorazione infinita.** Chiedete a Claude di "investigare" qualcosa senza limitarlo. Claude legge centinaia di file, riempiendo il contesto.

553 > **Correzione**: Limitate le investigazioni strettamente o utilizzate i subagent in modo che l'esplorazione non consumi il vostro contesto principale.

554 605 

555***606Per una grande modifica meccanica su molti file, [`/batch migrate every handler to the v2 response helpers`](https://code.claude.com/docs/it/commands) divide il lavoro in 5-30 unità e ti mostra il piano. Poi esegue ogni unità nel proprio worktree e apre una PR per ciascuna. Dalla tua shell, [`claude agents`](https://code.claude.com/docs/it/agent-view) (ancora in anteprima di ricerca) ti offre un'unica schermata per tutto ciò che è in esecuzione in background sulla tua macchina.

556 607 

557## Sviluppate la vostra intuizione608Una seconda sessione è anche il revisore indipendente più semplice che puoi avere. Una sessione scrive il rate limiter, un'altra esamina `@src/middleware/rateLimiter.ts` senza averne osservato la scrittura, e tu incolli i risultati nella prima. Stessa idea di `/code-review`, con te a fare da messaggero.

558 609 

559I modelli in questa guida non sono scolpiti nella pietra. Sono punti di partenza che funzionano bene in generale, ma potrebbero non essere ottimali per ogni situazione.610## Cosa puoi smettere di fare

560 611 

561A volte *dovreste* lasciare che il contesto si accumuli perché siete immersi in un problema complesso e la cronologia è preziosa. A volte dovreste saltare la pianificazione e lasciare che Claude lo capisca perché l'attività è esplorativa. A volte un prompt vago è esattamente giusto perché volete vedere come Claude interpreta il problema prima di limitarlo.612Ognuno di questi era un buon consiglio quando è stato scritto. La maggior parte erano soluzioni alternative per qualcosa che il modello non riusciva ancora a fare in modo affidabile, e da allora i modelli si sono messi al passo. Se alcuni sono ancora tue abitudini, ecco perché puoi abbandonarli in sicurezza.

562 613 

563Prestate attenzione a quello che funziona. Quando Claude produce un output eccellente, notate quello che avete fatto: la struttura del prompt, il contesto che avete fornito, la modalità in cui siete stati. Quando Claude fatica, chiedetevi perché. Il contesto era troppo rumoroso? Il prompt troppo vago? L'attività troppo grande per un passaggio?614| Il vecchio consiglio | Perché non serve più |

615| :- | :- |

616| La finestra di contesto è il tuo vincolo principale, gestiscila in modo aggressivo | La maggior parte dei modelli attuali ha una finestra da 1M di token e la compattazione avviene da sola, quindi esaurirla è raro. `/clear` tra un'attività e l'altra vale ancora la pena, perché un contesto focalizzato ti dà risposte migliori e costa meno. |

617| Aggiungi IMPORTANT o TUTTO MAIUSCOLO alle istruzioni che Claude continua a ignorare | I modelli più vecchi a volte avevano bisogno dell'enfasi. Quelli attuali seguono una riga formulata in modo semplice, e accumulare enfasi porta soprattutto Claude ad applicare la regola in modo eccessivo. Se è una regola che non può piegarsi, trasformala in un hook o in una regola deny. Se la riga si perde in un file lungo, il file deve essere più breve. |

618| Usa i subagent per proteggere la tua finestra di contesto | Esaurire il contesto raramente è più un problema. I subagent restano ottimi per il lavoro in parallelo, per tenere fuori dai piedi l'output rumoroso e per la revisione indipendente, ma ognuno di questi usi costa token in più. |

619| Delega a un subagent per ottenere una risposta migliore | Affidare la stessa attività a un subagent non rende la risposta migliore. Un revisore nuovo aiuta, perché non ha visto il tuo ragionamento, ma questa è una cosa diversa dal delegare. |

620| `think hard`, `think harder`, `be thorough` nel prompt | Lo sforzo è il controllo giusto per questo. Quelle frasi sono normale testo del prompt che spinge Claude entro la sua impostazione di sforzo, non parole chiave che la alzano. `ultrathink` funziona ancora: chiede un ragionamento più profondo per quel singolo turno senza toccare la tua impostazione di sforzo. |

621| Di' a Claude di andare avanti, di ripetere finché non ha finito, di non essere pigro | I modelli attuali di solito portano avanti un'attività concordata senza che glielo si dica, e righe del genere hanno più probabilità di causare lavoro eccessivo che di risolvere un arresto. Dare a Claude un controllo da superare è diverso, e vale ancora la pena farlo. Se un'esecuzione si ferma prima del tempo, di' `continue`, e per le esecuzioni che nessuno sta osservando, `/goal` o un hook `Stop` lo impongono. |

622| Descrivi la tua architettura e la struttura dei file in `CLAUDE.md` | Claude legge il repository da solo. Scrivi solo ciò che non c'è. |

564 623 

565Nel tempo, svilupperete un'intuizione che nessuna guida può catturare. Saprete quando essere specifici e quando essere aperti, quando pianificare e quando esplorare, quando cancellare il contesto e quando lasciarlo accumulare.624Se qualche altro consiglio in questa pagina inizia a sembrarti lavoro inutile, probabilmente è segno che anche quello appartiene a questa tabella.

566 625 

567## Risorse correlate626## Risorse correlate

568 627 

569* [How Claude Code works](https://code.claude.com/docs/it/how-claude-code-works.md): il ciclo agenziale, gli strumenti e la gestione del contesto628* [Come funziona Claude Code](https://code.claude.com/docs/it/how-claude-code-works.md): il ciclo, gli strumenti e cosa viene caricato all'avvio

570* [Extend Claude Code](https://code.claude.com/docs/it/features-overview.md): skill, hook, MCP, subagent e plugin629* [Esplora la finestra di contesto](https://code.claude.com/docs/it/context-window.md): cosa occupa spazio in una sessione e quando viene caricato

571* [Common workflows](https://code.claude.com/docs/it/common-workflows.md): ricette passo dopo passo per debug, test, PR e altro630* [Estendi Claude Code](https://code.claude.com/docs/it/features-overview.md): la scelta tra skill, hook, MCP, subagent e plugin

572* [CLAUDE.md](https://code.claude.com/docs/it/memory.md): archiviare le convenzioni del progetto e il contesto persistente631* [Scegli una modalità di permesso](https://code.claude.com/docs/it/permission-modes.md) e [Configura i permessi](https://code.claude.com/docs/it/permissions.md)

632* [Gestisci i costi in modo efficace](https://code.claude.com/docs/it/costs.md)

633* [Esegui Claude Code a livello di codice](https://code.claude.com/docs/it/headless.md) e [Automatizza il lavoro con le attività pianificate nel cloud](https://code.claude.com/docs/it/routines.md)

634* Per team lead e amministratori: [Configura Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md)

chrome.md +1 −1

Details

43 43 

44Nelle organizzazioni Enterprise in cui è abilitato HIPAA, Claude in Chrome è disattivato per impostazione predefinita e un [Owner](https://code.claude.com/docs/it/server-managed-settings.md#access-control) può attivarlo in [**Organization settings > Claude in Chrome**](https://claude.ai/admin-settings/browser-extension). Il tuo Business Associate Agreement (BAA) con Anthropic non copre i dati inviati a siti di terze parti tramite Claude in Chrome. Consulta la [Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) per un elenco degli Eligible Services.44Nelle organizzazioni Enterprise in cui è abilitato HIPAA, Claude in Chrome è disattivato per impostazione predefinita e un [Owner](https://code.claude.com/docs/it/server-managed-settings.md#access-control) può attivarlo in [**Organization settings > Claude in Chrome**](https://claude.ai/admin-settings/browser-extension). Il tuo Business Associate Agreement (BAA) con Anthropic non copre i dati inviati a siti di terze parti tramite Claude in Chrome. Consulta la [Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) per un elenco degli Eligible Services.

45 45 

46L'integrazione con Chrome richiede anche l'accesso con `/login`. Se ti autentichi con una chiave API o un token di lunga durata da [`claude setup-token`](https://code.claude.com/docs/it/authentication#generate-a-long-lived-token), Claude Code mantiene l'integrazione con Chrome disattivata, anche quando passi `--chrome`, perché l'estensione del browser non può autenticarsi con quelle credenziali. Prima della versione 2.1.216, queste sessioni potevano abilitare l'integrazione con Chrome, ma ogni tentativo di connettersi all'estensione del browser falliva con un errore 403.46L'integrazione con Chrome richiede anche l'accesso con `/login`. Se ti autentichi con una chiave API o un token di lunga durata da [`claude setup-token`](https://code.claude.com/docs/it/authentication#generate-a-long-lived-token), Claude Code mantiene l'integrazione con Chrome disattivata, anche quando passi `--chrome`. L'estensione del browser non può autenticarsi con quelle credenziali.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>

Details

996 996 

997[Memoria delle approvazioni](https://code.claude.com/docs/it/server-managed-settings.md#approval-memory) spiega quanto dura un'approvazione e quando la finestra di dialogo appare di nuovo.997[Memoria delle approvazioni](https://code.claude.com/docs/it/server-managed-settings.md#approval-memory) spiega quanto dura un'approvazione e quando la finestra di dialogo appare di nuovo.

998 998 

999Claude Code applica alcune variabili `env` consegnate senza mostrare allo sviluppatore la finestra di dialogo di approvazione, come le impostazioni di selezione del modello e i limiti numerici. Altre variabili consegnate possono richiedere l'approvazione dello sviluppatore prima di avere effetto; un valore non vuoto di proxy, base URL o `OTEL_EXPORTER_OTLP_ENDPOINT` la richiede sempre. Quando una variabile consegnata ha bisogno di approvazione, la finestra di dialogo la nomina.999Claude Code applica alcune variabili `env` ricevute senza mostrare allo sviluppatore la finestra di dialogo di approvazione, come le impostazioni di selezione del modello e i limiti numerici. Altre variabili ricevute possono richiedere l'approvazione dello sviluppatore; un valore non vuoto di proxy, URL di base o `OTEL_EXPORTER_OTLP_ENDPOINT` la richiede sempre. Quando una variabile ricevuta richiede l'approvazione, la finestra di dialogo la nomina. [Variabili d'ambiente e finestra di dialogo di approvazione](https://code.claude.com/docs/it/server-managed-settings.md#environment-variables-and-the-approval-dialog) riporta i dettagli, inclusi quattro interruttori per la privacy il cui valore ricevuto decide se richiedono l'approvazione.

1000 

1001[Variabili d'ambiente e la finestra di dialogo di approvazione](https://code.claude.com/docs/it/server-managed-settings.md#environment-variables-and-the-approval-dialog) contiene i dettagli, inclusi quattro interruttori di privacy il cui valore consegnato decide se hanno bisogno di approvazione. Prima di v2.1.218, Claude Code applicava meno variabili senza chiedere allo sviluppatore, quindi più variabili consegnate attivavano la finestra di dialogo.

1002 1000 

1003La configurazione di [telemetria](#telemetry) del gateway invia `OTEL_EXPORTER_OTLP_ENDPOINT`, quindi impostare `telemetry.forward_to` attiva la finestra di dialogo su ogni client interattivo. La finestra di dialogo protegge la macchina dello sviluppatore da un gateway compromesso o ostile, non l'organizzazione dallo sviluppatore.1001La configurazione di [telemetria](#telemetry) del gateway invia `OTEL_EXPORTER_OTLP_ENDPOINT`, quindi impostare `telemetry.forward_to` attiva la finestra di dialogo su ogni client interattivo. La finestra di dialogo protegge la macchina dello sviluppatore da un gateway compromesso o ostile, non l'organizzazione dallo sviluppatore.

1004 1002 

Details

264* **La procedura dettagliata completa, inclusa la creazione di PR**: consulta [Rivedere e iterare](https://code.claude.com/docs/it/web-quickstart.md#review-and-iterate)264* **La procedura dettagliata completa, inclusa la creazione di PR**: consulta [Rivedere e iterare](https://code.claude.com/docs/it/web-quickstart.md#review-and-iterate)

265* **Fare in modo che Claude monitori automaticamente la PR per errori CI e commenti di revisione**: consulta [Correzione automatica delle pull request](#auto-fix-pull-requests)265* **Fare in modo che Claude monitori automaticamente la PR per errori CI e commenti di revisione**: consulta [Correzione automatica delle pull request](#auto-fix-pull-requests)

266 266 

267#### Risolvere il problema di un file mancante nella visualizzazione diff

268 

269Un file che ti aspettavi può mancare dall'elenco dei file della visualizzazione diff quando questa confronta con il branch di base, indipendentemente dal fatto che la sessione abbia eseguito il push delle modifiche:

270 

271* **Nessun push di modifiche ancora eseguito**: l'elenco contiene le modifiche apportate da Claude stesso, ma non quelle apportate dai comandi eseguiti da Claude, come un formatter

272* **Push delle modifiche eseguito**: l'elenco contiene i commit inviati con il push, ma non le modifiche apportate dopo l'ultimo push

273 

274Per aggiungere all'elenco una modifica mancante, chiedi a Claude di eseguire il commit e il push.

275 

267### Gestire il contesto276### Gestire il contesto

268 277 

269Le sessioni cloud supportano [comandi integrati](https://code.claude.com/docs/it/commands.md) che producono output di testo. I comandi che vengono eseguiti solo nell'interfaccia del terminale, come `/plugin` o `/resume`, non sono disponibili. I comandi che aprono un selettore o un pannello nel terminale si comportano diversamente nelle sessioni cloud:278Le sessioni cloud supportano [comandi integrati](https://code.claude.com/docs/it/commands.md) che producono output di testo. I comandi che vengono eseguiti solo nell'interfaccia del terminale, come `/plugin` o `/resume`, non sono disponibili. I comandi che aprono un selettore o un pannello nel terminale si comportano diversamente nelle sessioni cloud:

270 279 

271* **`/model`, `/effort`, `/color` e `/rename`**: passa il valore come argomento, ad esempio `/model sonnet`, invece di aprire il selettore del terminale o il cursore. Le forme di argomento seguono le [note di disponibilità](https://code.claude.com/docs/it/commands.md#all-commands) di ciascun comando.280* **`/model`, `/effort`, `/color` e `/rename`**: passa il valore come argomento, ad esempio `/model sonnet`, invece di aprire il selettore del terminale o il cursore. Le forme di argomento seguono le [note di disponibilità](https://code.claude.com/docs/it/commands.md#all-commands) di ciascun comando.

272* **`/fast`**: attiva/disattiva la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-in-cloud-sessions) per la sessione quando la modalità veloce è [disponibile nel vostro account](https://code.claude.com/docs/it/fast-mode.md#requirements). Richiede Claude Code v2.1.271 o successivo nell'ambiente della sessione.281* **`/fast`**: attiva/disattiva la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-in-cloud-sessions) per la sessione quando la modalità veloce è [disponibile nel vostro account](https://code.claude.com/docs/it/fast-mode.md#requirements). Richiede Claude Code v2.1.271 o successivo nell'ambiente della sessione.

273* **`/config`**: nel tuo browser su claude.ai/code, apre la sezione Claude Code delle impostazioni invece di impostare un valore. Per modificare un'impostazione per una sessione cloud, imposta una [variabile d'ambiente](https://code.claude.com/docs/it/cloud-environments.md#set-environment-variables) nell'ambiente. In una sessione con un solo repository al di fuori dei thread di un [progetto](https://code.claude.com/docs/it/claude-projects.md), esegui invece il commit della chiave nel file `.claude/settings.json` di quel repository. [Impostazioni nelle sessioni cloud](https://code.claude.com/docs/it/settings.md#settings-in-cloud-sessions) elenca cosa legge ogni sessione.282* **`/config`**: nel tuo browser su claude.ai/code, apre **Settings > Code** o **Settings > Claude Code** invece di impostare un valore. Per modificare un'impostazione per una sessione cloud, imposta una [variabile d'ambiente](https://code.claude.com/docs/it/cloud-environments.md#set-environment-variables) nell'ambiente. In una sessione con un solo repository al di fuori dei thread di un [progetto](https://code.claude.com/docs/it/claude-projects.md), esegui invece il commit della chiave nel file `.claude/settings.json` di quel repository. [Impostazioni nelle sessioni cloud](https://code.claude.com/docs/it/settings.md#settings-in-cloud-sessions) elenca cosa legge ogni sessione.

274 283 

275Per la gestione del contesto in una sessione cloud al di fuori dei [thread di un progetto](https://code.claude.com/docs/it/claude-projects.md#choose-models-and-let-claude-manage-context):284Per la gestione del contesto in una sessione cloud al di fuori dei [thread di un progetto](https://code.claude.com/docs/it/claude-projects.md#choose-models-and-let-claude-manage-context):

276 285 


337* **Accesso al repository**: la verifica non è abilitata per impostazione predefinita346* **Accesso al repository**: la verifica non è abilitata per impostazione predefinita

338* **Contenuti sensibili**: controlla la sessione prima di condividerla. Le sessioni possono contenere codice e credenziali provenienti da repository GitHub privati347* **Contenuti sensibili**: controlla la sessione prima di condividerla. Le sessioni possono contenere codice e credenziali provenienti da repository GitHub privati

339 348 

340Per richiedere ai destinatari di avere accesso al repository, o per nascondere il nome dalle sessioni condivise, andare a [**Settings > Claude Code > Sharing settings**](https://claude.ai/settings/claude-code).349Per richiedere ai destinatari di avere accesso al repository, o per nascondere il tuo nome dalle sessioni condivise, apri Settings su claude.ai, poi:

350 

351* **Se il menu Settings mostra Code invece di Claude Code**: vai a [**Privacy**](https://claude.ai/settings/data-privacy-controls), che contiene queste impostazioni

352* **Altrimenti**: vai a [**Claude Code > Sharing settings**](https://claude.ai/settings/claude-code)

341 353 

342### Archiviare sessioni354### Archiviare sessioni

343 355 

Details

93 93 

94Claude Platform on AWS utilizza gli stessi ID modello dell'API Claude diretta.94Claude Platform on AWS utilizza gli stessi ID modello dell'API Claude diretta.

95 95 

96Gli alias predefiniti `fable`, `opus`, `sonnet` e `haiku` si risolvono nei valori predefiniti integrati di Claude Code per Claude Platform on AWS, che possono essere in ritardo rispetto alla versione più recente. Senza `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` si risolve in Opus 5.5. Prima della v2.1.280, si risolveva in Opus 5 dalla v2.1.219 e in Opus 4.8 dalla v2.1.207.96Gli alias predefiniti `fable`, `opus`, `sonnet` e `haiku` si risolvono nei valori predefiniti integrati di Claude Code per Claude Platform on AWS, che possono essere in ritardo rispetto alla versione più recente. Senza `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` si risolve in Opus 5.5. Prima della v2.1.280, si risolveva in Opus 5 dalla v2.1.219.

97 97 

98Se si distribuisce Claude Code a un team, fissare esplicitamente gli ID modello in modo che un nuovo rilascio non sposti tutti contemporaneamente:98Se si distribuisce Claude Code a un team, fissare esplicitamente gli ID modello in modo che un nuovo rilascio non sposti tutti contemporaneamente:

99 99 

Details

70Crei e usi i project su [claude.ai/code](https://claude.ai/code), nella scheda Code dell'app desktop, o nell'app mobile Claude per [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) e [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). Nel browser e nell'app desktop ci sono due modi per avviare un project:70Crei e usi i project su [claude.ai/code](https://claude.ai/code), nella scheda Code dell'app desktop, o nell'app mobile Claude per [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) e [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). Nel browser e nell'app desktop ci sono due modi per avviare un project:

71 71 

72* **Da zero**, quando conosci il flusso di lavoro che vuoi che Claude esegua: apri la finestra di dialogo **New project** e assegnagli un nome. [Avvia un nuovo project da zero](#start-a-new-project-from-scratch) ti guida attraverso la finestra di dialogo.72* **Da zero**, quando conosci il flusso di lavoro che vuoi che Claude esegua: apri la finestra di dialogo **New project** e assegnagli un nome. [Avvia un nuovo project da zero](#start-a-new-project-from-scratch) ti guida attraverso la finestra di dialogo.

73* **Da una sessione cloud che sta già facendo il lavoro**: nel menu di quella sessione nella barra laterale, scegli **Move to project**, quindi **Continue as new project**. Claude propone la configurazione del project da quello che la sessione stava facendo. Vedi [Avvia da una sessione cloud esistente](#start-from-an-existing-cloud-session).73* **Da una sessione cloud che sta già facendo il lavoro**: nel menu di quella sessione nella barra laterale, scegli **Continue in project**, quindi **Continue as new project**. Claude propone la configurazione del project da quello che la sessione stava facendo. Vedi [Avvia da una sessione cloud esistente](#start-from-an-existing-cloud-session).

74 74 

75In entrambi i casi, [controlla i prerequisiti](#check-the-prerequisites) prima.75In entrambi i casi, [controlla i prerequisiti](#check-the-prerequisites) prima.

76 76 


113 113 

114### Avvia da una sessione esistente114### Avvia da una sessione esistente

115 115 

116Se una sessione cloud che hai avviato tu stesso sta facendo lavoro che appartiene a un project, apri il suo menu nella barra laterale e scegli **Move to project**, quindi scegli dal sottomenu:116Se una sessione cloud che hai avviato tu stesso sta facendo lavoro che appartiene a un project, apri il suo menu nella barra laterale e scegli **Continue in project**, quindi scegli dal sottomenu:

117 117 

118* Scegli **Continue as new project** per creare un nuovo project dalla sessione. Il project si apre, e Claude legge la sessione e pubblica **Setup recommendations** nella conversazione del project per te da confermare. La sessione originale rimane nel tuo elenco di sessioni. Se era nel mezzo di un turno continua a funzionare, quindi fermala da solo se non vuoi che entrambi funzionino contemporaneamente.118* Scegli **Continue as new project** per creare un nuovo project dalla sessione. Il project si apre, e Claude legge la sessione e pubblica **Setup recommendations** nella conversazione del project per te da confermare. La sessione originale rimane nel tuo elenco di sessioni. Se era nel mezzo di un turno continua a funzionare, quindi fermala da solo se non vuoi che entrambi funzionino contemporaneamente.

119* Scegli uno dei tuoi project esistenti per portare il lavoro della sessione in quel project. Quel project si apre, e un messaggio inviato per tuo conto chiede a Claude di leggere la sessione e riprendere da dove l'ha lasciata. La sessione originale rimane nel tuo elenco di sessioni, invariata.119* Scegli uno dei tuoi project esistenti per portare il lavoro della sessione in quel project. Quel project si apre, e un messaggio inviato per tuo conto chiede a Claude di leggere la sessione e riprendere da dove l'ha lasciata. La sessione originale rimane nel tuo elenco di sessioni, invariata.


262 262 

263Sul computer che ha la cartella di cui l'attività ha bisogno, rendila disponibile tramite Remote Control in uno dei due modi. Entrambi hanno bisogno di Claude Code v2.1.280 o successivo su quel computer.263Sul computer che ha la cartella di cui l'attività ha bisogno, rendila disponibile tramite Remote Control in uno dei due modi. Entrambi hanno bisogno di Claude Code v2.1.280 o successivo su quel computer.

264 264 

265* **Nell'app desktop Claude**: apri **Settings > Claude Code**, attiva **Use this computer from your phone and claude.ai**, e aggiungi la cartella all'elenco sotto quel switch. I thread possono essere eseguiti su questo computer mentre l'app è aperta.265* **Nell'app desktop Claude**: apri **Settings > Code** o **Settings > Claude Code** e attiva **Use this computer from your phone and claude.ai**. Aggiungi la cartella all'elenco sotto quell'interruttore. I thread possono essere eseguiti su questo computer mentre l'app è aperta.

266* **In un terminale**: esegui `claude remote-control` nella cartella e lascialo in esecuzione. In un repository git, aggiungi `--spawn worktree` per dare a ogni thread lì il suo [worktree](https://code.claude.com/docs/it/worktrees.md) invece della cartella stessa.266* **In un terminale**: esegui `claude remote-control` nella cartella e lascialo in esecuzione. In un repository git, aggiungi `--spawn worktree` per dare a ogni thread lì il suo [worktree](https://code.claude.com/docs/it/worktrees.md) invece della cartella stessa.

267 267 

268**2. Chiedi l'attività con Work locally**268**2. Chiedi l'attività con Work locally**


275 275 

276Il thread viene eseguito in [auto mode](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode), quindi Claude esegue comandi e modifica file in quella cartella senza chiederti ogni volta. Se auto mode non è disponibile o è disattivato nel Claude Code di quel computer, il thread viene eseguito senza di esso, e qualsiasi prompt di autorizzazione che solleva aspetta la tua risposta nel thread, come [Sblocca un thread in attesa di approvazione](#unblock-a-thread-waiting-on-approval) descrive.276Il thread viene eseguito in [auto mode](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode), quindi Claude esegue comandi e modifica file in quella cartella senza chiederti ogni volta. Se auto mode non è disponibile o è disattivato nel Claude Code di quel computer, il thread viene eseguito senza di esso, e qualsiasi prompt di autorizzazione che solleva aspetta la tua risposta nel thread, come [Sblocca un thread in attesa di approvazione](#unblock-a-thread-waiting-on-approval) descrive.

277 277 

278Mentre il thread è in esecuzione, un'icona del laptop nel suo header mostra se il tuo computer è connesso. Fai clic su di esso per vedere quale cartella il thread sta usando o per disattivare la connessione. Il thread si mette in pausa mentre quel computer è in sospensione, e si ferma se l'app desktop o `claude remote-control` si chiude. [Perso il contatto con la tua cartella](#lost-contact-with-your-folder) copre come farlo funzionare di nuovo. Nell'app desktop, attiva **Keep this computer awake for Remote Control** sotto **Settings > Claude Code** per impedire al computer di andare in sospensione da solo.278Mentre il thread è in esecuzione, un'icona del laptop nel suo header mostra se il tuo computer è connesso. Fai clic su di essa per vedere quale cartella il thread sta usando o per disattivare la connessione. Il thread si mette in pausa mentre quel computer è in sospensione, e si ferma se l'app desktop o `claude remote-control` si chiude.

279 

280* **Per far ripartire il thread**: consulta [Perso il contatto con la tua cartella](#lost-contact-with-your-folder)

281* **Per impedire al computer di andare in sospensione da solo**: nell'app desktop, attiva **Keep this computer awake for Remote Control** in **Settings > Code** o **Settings > Claude Code**

279 282 

280Un progetto non può eseguire un thread sul tuo computer mentre [**Require trusted devices**](https://code.claude.com/docs/it/remote-control.md#trusted-devices) è attivato per il tuo account.283Un progetto non può eseguire un thread sul tuo computer mentre [**Require trusted devices**](https://code.claude.com/docs/it/remote-control.md#trusted-devices) è attivato per il tuo account.

281 284 


427Diverse funzioni Claude Code permettono a più di una sessione di funzionare contemporaneamente, quindi eseguire il lavoro in parallelo non è di per sé quello per cui è un project. In un project, Claude avvia e traccia le sessioni invece di te, e ognuno inizia dalle stesse istruzioni. Ecco come ogni funzione vicina si connette a un project:430Diverse funzioni Claude Code permettono a più di una sessione di funzionare contemporaneamente, quindi eseguire il lavoro in parallelo non è di per sé quello per cui è un project. In un project, Claude avvia e traccia le sessioni invece di te, e ognuno inizia dalle stesse istruzioni. Ecco come ogni funzione vicina si connette a un project:

428 431 

429* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) è Claude nei canali Slack del tuo team, su piani Team e Enterprise. Chiunque in un canale può dargli lavoro, tutti nel canale lo vedono e lo guidano, e usa connessioni che un admin ha configurato per quel canale. Un project è solo tuo: sei l'unico che gli invia lavoro o vede i suoi thread, usa il tuo accesso GitHub e i tuoi connectors, ed è su Pro e Max. [Come Claude Tag differisce da Cowork e Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) ha il confronto fianco a fianco.432* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) è Claude nei canali Slack del tuo team, su piani Team e Enterprise. Chiunque in un canale può dargli lavoro, tutti nel canale lo vedono e lo guidano, e usa connessioni che un admin ha configurato per quel canale. Un project è solo tuo: sei l'unico che gli invia lavoro o vede i suoi thread, usa il tuo accesso GitHub e i tuoi connectors, ed è su Pro e Max. [Come Claude Tag differisce da Cowork e Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) ha il confronto fianco a fianco.

430* **Sessioni cloud**: ogni thread è una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) a meno che non chiedi a Claude di eseguirla sulla tua macchina. In entrambi i casi, Claude la avvia e la traccia invece di te. Puoi anche portare in un project il lavoro di una sessione cloud che hai avviato da solo: scegli [**Move to project**](#start-from-an-existing-cloud-session) nel menu della barra laterale di quella sessione.433* **Sessioni cloud**: ogni thread è una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) a meno che non chiedi a Claude di eseguirla sulla tua macchina. In entrambi i casi, Claude la avvia e la traccia invece di te. Puoi anche portare in un project il lavoro di una sessione cloud che hai avviato da solo: scegli [**Continue in project**](#start-from-an-existing-cloud-session) nel menu della barra laterale di quella sessione.

431* **Attività pianificate**: quando chiedi lavoro pianificato in un project, Claude crea un'[attività pianificata cloud](https://code.claude.com/docs/it/routines.md) che viene eseguita come thread in quel project e appare nella sua scheda **Scheduled tasks**. Le attività pianificate che crei al di fuori di un project continuano a funzionare da sole.434* **Attività pianificate**: quando chiedi lavoro pianificato in un project, Claude crea un'[attività pianificata cloud](https://code.claude.com/docs/it/routines.md) che viene eseguita come thread in quel project e appare nella sua scheda **Scheduled tasks**. Le attività pianificate che crei al di fuori di un project continuano a funzionare da sole.

432* **Remote Control**: [Remote Control](https://code.claude.com/docs/it/remote-control.md) connette claude.ai a una sessione Claude Code in esecuzione sulla tua macchina. Quando chiedi a Claude in un project di eseguire un thread sul tuo computer, il project [usa Remote Control per farlo](#run-a-thread-on-your-own-computer).435* **Remote Control**: [Remote Control](https://code.claude.com/docs/it/remote-control.md) connette claude.ai a una sessione Claude Code in esecuzione sulla tua macchina. Quando chiedi a Claude in un project di eseguire un thread sul tuo computer, il project [usa Remote Control per farlo](#run-a-thread-on-your-own-computer).

433* **Sessioni locali e agent view**: una sessione che avvii da solo nel tuo terminale, IDE o nell'ambiente locale dell'app desktop rimane al di fuori dei tuoi project, anche se puoi [portarne il lavoro in uno di essi](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/it/agent-view.md) è una schermata per tracciare diverse sessioni locali fianco a fianco, e tu avvii ancora ognuna e le dai il suo compito da solo.436* **Sessioni locali e agent view**: una sessione che avvii da solo nel tuo terminale, IDE o nell'ambiente locale dell'app desktop rimane al di fuori dei tuoi project, anche se puoi [portarne il lavoro in uno di essi](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/it/agent-view.md) è una schermata per tracciare diverse sessioni locali fianco a fianco, e tu avvii ancora ognuna e le dai il suo compito da solo.


445* Non puoi aggiungere a un project una sessione che hai avviato tu stesso sulla tua macchina, anche se puoi [portarne il lavoro in un project](#start-from-an-existing-cloud-session). Un project raggiunge la tua macchina [eseguendo un thread lì attraverso Remote Control](#run-a-thread-on-your-own-computer), e quella sezione elenca di cosa ha bisogno.448* Non puoi aggiungere a un project una sessione che hai avviato tu stesso sulla tua macchina, anche se puoi [portarne il lavoro in un project](#start-from-an-existing-cloud-session). Un project raggiunge la tua macchina [eseguendo un thread lì attraverso Remote Control](#run-a-thread-on-your-own-computer), e quella sezione elenca di cosa ha bisogno.

446* La sandbox di un thread cloud si mette in pausa tra i turni e riprende quando il thread continua. Se la sandbox non può essere ripresa, il thread continua da un clone fresco, quindi i cambiamenti non committati possono essere persi. Su compiti lunghi, chiedete a Claude di committare e spingere il lavoro in corso.449* La sandbox di un thread cloud si mette in pausa tra i turni e riprende quando il thread continua. Se la sandbox non può essere ripresa, il thread continua da un clone fresco, quindi i cambiamenti non committati possono essere persi. Su compiti lunghi, chiedete a Claude di committare e spingere il lavoro in corso.

447* Un project appartiene a un utente. Non puoi condividere un project o i suoi thread con un altro utente, e le trascrizioni dei thread non hanno l'opzione di condivisione che hanno altre sessioni cloud. Non ci sono controlli a livello di organizzazione per i project durante la beta.450* Un project appartiene a un utente. Non puoi condividere un project o i suoi thread con un altro utente, e le trascrizioni dei thread non hanno l'opzione di condivisione che hanno altre sessioni cloud. Non ci sono controlli a livello di organizzazione per i project durante la beta.

448* Un thread appartiene all'unico project che l'ha avviato. Non potete spostare o copiare un thread in un altro project, o spostarlo fuori per stare da solo. [**Move to project**](#start-from-an-existing-cloud-session) va solo nell'altro modo: porta il lavoro di una sessione cloud in un project. Non potete unire due project in uno.451* Un thread appartiene all'unico project che l'ha avviato. Non puoi spostare o copiare un thread in un altro project, o spostarlo fuori per stare da solo. [**Continue in project**](#start-from-an-existing-cloud-session) va solo nell'altro modo: porta il lavoro di una sessione cloud in un project. Non puoi fare il merge di due project in uno.

449 452 

450## Risoluzione dei problemi453## Risoluzione dei problemi

451 454 


489 492 

490### Contatto perso con la tua cartella493### Contatto perso con la tua cartella

491 494 

492Un thread in esecuzione sul tuo computer mostra questo quando la sessione Claude Code lì ha smesso di rispondere, di solito perché il computer è andato in sospensione o l'app desktop o `claude remote-control` è uscito. Riattiva il computer, e se l'app desktop o `claude remote-control` non è più in esecuzione lì, avvialo di nuovo: riapri l'app e conferma che **Use this computer from your phone and claude.ai** è ancora attivo in **Settings > Claude Code**, o esegui di nuovo `claude remote-control` nella stessa cartella.495Un thread in esecuzione sul tuo computer mostra questo quando la sessione Claude Code lì ha smesso di rispondere, di solito perché il computer è andato in sospensione o l'app desktop o `claude remote-control` è uscito. Riattiva il computer. Se l'app desktop o `claude remote-control` non è più in esecuzione lì, avvialo di nuovo:

496 

497* **App desktop**: riapri l'app e conferma che **Use this computer from your phone and claude.ai** è ancora attivo in **Settings > Code** o **Settings > Claude Code**

498* **Terminale**: esegui di nuovo `claude remote-control` nella stessa cartella

493 499 

494### Altri messaggi500### Altri messaggi

495 501 

Details

71* In una sessione del terminale, dove `/code-review` esegue la revisione come [subagent forkato](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent)71* In una sessione del terminale, dove `/code-review` esegue la revisione come [subagent forkato](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent)

72* In un'esecuzione `-p` con output in formato testo o JSON72* In un'esecuzione `-p` con output in formato testo o JSON

73 73 

74In un'applicazione host che richiede l'elenco dei risultati, come l'[app desktop](https://code.claude.com/docs/it/desktop.md#review-your-code), Claude riporta invece i risultati della revisione tramite lo [strumento `ReportFindings`](https://code.claude.com/docs/it/tools-reference). Il report appare come elenco di risultati, e ogni voce mostra la posizione nel file, un riepilogo di una frase e un tag di categoria come `correctness` quando il risultato ne ha uno. Una richiesta dell'host si applica a ogni livello di sforzo e richiede Claude Code v2.1.218 o successiva.74In un'applicazione host che richiede l'elenco dei risultati, come l'[app desktop](https://code.claude.com/docs/it/desktop.md#review-your-code), Claude riporta invece i risultati della revisione tramite lo [strumento `ReportFindings`](https://code.claude.com/docs/it/tools-reference). Il report appare come elenco di risultati, e ogni voce mostra la posizione nel file, un riepilogo di una frase e un tag di categoria come `correctness` quando il risultato ne ha uno. Una richiesta dell'host si applica a ogni livello di sforzo.

75 75 

76Quando Claude corregge i risultati riportati più avanti nella sessione, li riporta di nuovo. Claude Code contrassegna quindi ogni risultato nell'elenco aggiornato come corretto, ignorato o nessuna modifica necessaria.76Quando Claude corregge i risultati riportati più avanti nella sessione, li riporta di nuovo. Claude Code contrassegna quindi ogni risultato nell'elenco aggiornato come corretto, ignorato o nessuna modifica necessaria.

77 77 


104Dopo il livello di sforzo e i flag, Claude Code legge il resto della riga come destinazione della revisione. L'argomento `ultra` cambia questa interpretazione:104Dopo il livello di sforzo e i flag, Claude Code legge il resto della riga come destinazione della revisione. L'argomento `ultra` cambia questa interpretazione:

105 105 

106* **Con `ultra`**: Claude Code legge una singola parola come branch di base o numero di PR. Un testo più lungo che non nomina un branch o una PR diventa [una nota allegata alla revisione](https://code.claude.com/docs/it/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` revisiona il tuo branch corrente e Claude mette in relazione i risultati con la tua nota.106* **Con `ultra`**: Claude Code legge una singola parola come branch di base o numero di PR. Un testo più lungo che non nomina un branch o una PR diventa [una nota allegata alla revisione](https://code.claude.com/docs/it/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` revisiona il tuo branch corrente e Claude mette in relazione i risultati con la tua nota.

107* **Senza `ultra`**: tutto ciò che rimane è la destinazione della revisione, anche quando inizia con il nome di un altro comando. `/code-review /fix-issue 123` esegue la revisione con `/fix-issue 123` come testo della destinazione invece di caricare `/fix-issue` come seconda [skill in sequenza](https://code.claude.com/docs/it/skills.md#stack-several-skills-in-one-message). Prima della v2.1.218, un comando posto in sequenza dopo `/code-review` veniva espanso come skill a sé stante.107* **Senza `ultra`**: tutto ciò che rimane è la destinazione della revisione, anche quando inizia con il nome di un altro comando. `/code-review /fix-issue 123` esegue la revisione con `/fix-issue 123` come testo della destinazione invece di caricare `/fix-issue` come seconda [skill in sequenza](https://code.claude.com/docs/it/skills.md#stack-several-skills-in-one-message).

108 108 

109## Esegui in primo piano109## Esegui in primo piano

110 110 


114* Imposta [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/it/env-vars) su `1`, il che disattiva anche altre funzionalità delle attività in background114* Imposta [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/it/env-vars) su `1`, il che disattiva anche altre funzionalità delle attività in background

115* Esegui di nuovo `/code-review` mentre una revisione precedente è ancora in corso115* Esegui di nuovo `/code-review` mentre una revisione precedente è ancora in corso

116 116 

117Prima della v2.1.218, la revisione veniva eseguita all'interno della tua conversazione.

118 

119## Lascia che Claude avvii la revisione117## Lascia che Claude avvii la revisione

120 118 

121Claude può avviare `/code-review` da solo, senza che tu digiti il comando:119Claude può avviare `/code-review` da solo, senza che tu digiti il comando:

commands.md +3 −3

Details

37* **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills)**: una skill inclusa. Funziona come le skill che scrivi tu: un prompt passato a Claude.37* **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills)**: una skill inclusa. Funziona come le skill che scrivi tu: un prompt passato a Claude.

38 * `/verify` viene eseguita solo quando la invochi. Prima della v2.1.215, Claude poteva anche eseguire `/verify` di propria iniziativa.38 * `/verify` viene eseguita solo quando la invochi. Prima della v2.1.215, Claude poteva anche eseguire `/verify` di propria iniziativa.

39* **[Workflow](https://code.claude.com/docs/it/workflows.md#bundled-workflows)**: un [workflow dinamico](https://code.claude.com/docs/it/workflows.md) incluso che distribuisce il lavoro su molti subagent e viene eseguito in background.39* **[Workflow](https://code.claude.com/docs/it/workflows.md#bundled-workflows)**: un [workflow dinamico](https://code.claude.com/docs/it/workflows.md) incluso che distribuisce il lavoro su molti subagent e viene eseguito in background.

40 * `/deep-research` viene eseguito solo quando lo invochi. Prima della v2.1.218, Claude poteva anche avviarlo di propria iniziativa.40 * `/deep-research` viene eseguito solo quando lo invochi.

41 41 

42Per aggiungere i tuoi comandi, consulta [skill](https://code.claude.com/docs/it/skills.md).42Per aggiungere i tuoi comandi, consulta [skill](https://code.claude.com/docs/it/skills.md).

43 43 


54| `/agents` | Stampa un promemoria per chiedere a Claude di creare o gestire [subagent](https://code.claude.com/docs/it/sub-agents.md), oppure per modificare direttamente `.claude/agents/` o `~/.claude/agents/`. Nella v2.1.197 e precedenti, apre un'interfaccia interattiva per creare e gestire le configurazioni dei subagent |54| `/agents` | Stampa un promemoria per chiedere a Claude di creare o gestire [subagent](https://code.claude.com/docs/it/sub-agents.md), oppure per modificare direttamente `.claude/agents/` o `~/.claude/agents/`. Nella v2.1.197 e precedenti, apre un'interfaccia interattiva per creare e gestire le configurazioni dei subagent |

55| `/artifact-capabilities` | **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills).** Carica il riferimento per le funzionalità di runtime che un [artefatto](https://code.claude.com/docs/it/artifacts.md) pubblicato può usare, come [chiamare i tuoi connettori](https://code.claude.com/docs/it/artifacts.md#pull-live-data-with-mcp-connectors) o [offrire il download di un file](https://code.claude.com/docs/it/artifacts.md#offer-a-file-download), incluse quelle disponibili per il tuo account. Claude normalmente lo carica di propria iniziativa prima di creare una pagina che ne usa una. Disponibile dove sono disponibili gli [artefatti](https://code.claude.com/docs/it/artifacts.md#availability) |55| `/artifact-capabilities` | **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills).** Carica il riferimento per le funzionalità di runtime che un [artefatto](https://code.claude.com/docs/it/artifacts.md) pubblicato può usare, come [chiamare i tuoi connettori](https://code.claude.com/docs/it/artifacts.md#pull-live-data-with-mcp-connectors) o [offrire il download di un file](https://code.claude.com/docs/it/artifacts.md#offer-a-file-download), incluse quelle disponibili per il tuo account. Claude normalmente lo carica di propria iniziativa prima di creare una pagina che ne usa una. Disponibile dove sono disponibili gli [artefatti](https://code.claude.com/docs/it/artifacts.md#availability) |

56| `/artifact-diagramming` | **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills).** Carica le linee guida sui diagrammi che Claude deve seguire negli [artefatti](https://code.claude.com/docs/it/artifacts.md): quando un diagramma è utile, cosa disegnare e come scrivere SVG inline che resti leggibile nei temi chiaro e scuro. Richiede Claude Code v2.1.221 o successiva |56| `/artifact-diagramming` | **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills).** Carica le linee guida sui diagrammi che Claude deve seguire negli [artefatti](https://code.claude.com/docs/it/artifacts.md): quando un diagramma è utile, cosa disegnare e come scrivere SVG inline che resti leggibile nei temi chiaro e scuro. Richiede Claude Code v2.1.221 o successiva |

57| `/artifacts` | Elenca gli [artefatti](https://code.claude.com/docs/it/artifacts.md#find-an-artifact-again) di tua proprietà o condivisi con te, poi ti permette di allegarne uno alla sessione, aprirlo nel browser o copiarne il link. Disponibile dove sono disponibili gli [artefatti](https://code.claude.com/docs/it/artifacts.md#availability). Richiede Claude Code v2.1.208 o successiva; l'allegamento con `Enter` richiede la v2.1.216 |57| `/artifacts` | Elenca gli [artefatti](https://code.claude.com/docs/it/artifacts.md#find-an-artifact-again) di tua proprietà o condivisi con te, poi ti permette di allegarne uno alla sessione, aprirlo nel browser o copiarne il link. Disponibile dove sono disponibili gli [artefatti](https://code.claude.com/docs/it/artifacts.md#availability) |

58| `/auto-mode-setup` | [Genera una bozza di voci `autoMode.environment`](https://code.claude.com/docs/it/auto-mode-config#generate-environment-entries) dal tuo progetto e dalle sessioni recenti, poi ti permette di rivedere la bozza e salvarla nelle tue impostazioni utente. Su un piano Pro, Max o Team, richiede Claude Code v2.1.228 o successiva, oppure la v2.1.233 o successiva su Windows nativo. Su un piano Enterprise o con una chiave API della Claude Console, richiede la v2.1.283 o successiva. Se il comando non è presente, consulta [`/auto-mode-setup` returns "Unknown command"](https://code.claude.com/docs/it/auto-mode-config#auto-mode-setup-returns-unknown-command) |58| `/auto-mode-setup` | [Genera una bozza di voci `autoMode.environment`](https://code.claude.com/docs/it/auto-mode-config#generate-environment-entries) dal tuo progetto e dalle sessioni recenti, poi ti permette di rivedere la bozza e salvarla nelle tue impostazioni utente. Su un piano Pro, Max o Team, richiede Claude Code v2.1.228 o successiva, oppure la v2.1.233 o successiva su Windows nativo. Su un piano Enterprise o con una chiave API della Claude Console, richiede la v2.1.283 o successiva. Se il comando non è presente, consulta [`/auto-mode-setup` returns "Unknown command"](https://code.claude.com/docs/it/auto-mode-config#auto-mode-setup-returns-unknown-command) |

59| `/autocompact [auto\|<tokens>]` | Imposta la finestra di compattazione automatica: quanto si riempie la finestra di contesto prima che Claude Code esegua la compattazione automaticamente. Passa una dimensione come `500k`, oppure `auto` per tornare alla finestra ottimizzata per il tuo modello. Claude Code salva il valore nelle impostazioni utente e lo applica alla sessione corrente. Consulta [Impostare la finestra di compattazione automatica](https://code.claude.com/docs/it/model-config.md#set-the-auto-compact-window) per i valori accettati e ciò che lo sovrascrive. Senza argomento, apre una finestra di dialogo che mostra la finestra corrente. Richiede Claude Code v2.1.221 o successiva |59| `/autocompact [auto\|<tokens>]` | Imposta la finestra di compattazione automatica: quanto si riempie la finestra di contesto prima che Claude Code esegua la compattazione automaticamente. Passa una dimensione come `500k`, oppure `auto` per tornare alla finestra ottimizzata per il tuo modello. Claude Code salva il valore nelle impostazioni utente e lo applica alla sessione corrente. Consulta [Impostare la finestra di compattazione automatica](https://code.claude.com/docs/it/model-config.md#set-the-auto-compact-window) per i valori accettati e ciò che lo sovrascrive. Senza argomento, apre una finestra di dialogo che mostra la finestra corrente. Richiede Claude Code v2.1.221 o successiva |

60| `/autofix-pr [prompt]` | Avvia una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md#auto-fix-pull-requests) che monitora la PR del branch corrente ed esegue il push delle correzioni quando la CI fallisce o i revisori lasciano commenti. Rileva la PR aperta dal branch di cui hai eseguito il checkout con `gh pr view`; per monitorare una PR diversa, esegui prima il checkout del suo branch. Per impostazione predefinita, alla sessione cloud viene indicato di correggere ogni errore della CI e ogni commento di revisione; passa un prompt per darle istruzioni diverse, ad esempio `/autofix-pr only fix lint and type errors`. Richiede la CLI `gh` e l'accesso alle [sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) |60| `/autofix-pr [prompt]` | Avvia una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md#auto-fix-pull-requests) che monitora la PR del branch corrente ed esegue il push delle correzioni quando la CI fallisce o i revisori lasciano commenti. Rileva la PR aperta dal branch di cui hai eseguito il checkout con `gh pr view`; per monitorare una PR diversa, esegui prima il checkout del suo branch. Per impostazione predefinita, alla sessione cloud viene indicato di correggere ogni errore della CI e ogni commento di revisione; passa un prompt per darle istruzioni diverse, ad esempio `/autofix-pr only fix lint and type errors`. Richiede la CLI `gh` e l'accesso alle [sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) |


85| `/desktop` | Continua la sessione corrente nell'app Claude Code Desktop. Richiede macOS o Windows x64 e un abbonamento Claude. Alias: `/app` |85| `/desktop` | Continua la sessione corrente nell'app Claude Code Desktop. Richiede macOS o Windows x64 e un abbonamento Claude. Alias: `/app` |

86| `/diff` | Esamina le modifiche nel tuo albero di lavoro, incluse le modifiche apportate finora da Claude. Consulta [Esaminare le modifiche con /diff](https://code.claude.com/docs/it/interactive-mode.md#review-changes-with-%2Fdiff) |86| `/diff` | Esamina le modifiche nel tuo albero di lavoro, incluse le modifiche apportate finora da Claude. Consulta [Esaminare le modifiche con /diff](https://code.claude.com/docs/it/interactive-mode.md#review-changes-with-%2Fdiff) |

87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills).** Esegue un controllo della configurazione che diagnostica problemi di installazione, impostazioni, estensioni e `CLAUDE.md` e propone correzioni che Claude applica dopo la tua conferma. Per sapere cosa copre il controllo, o per verificare invece le tue istruzioni con `prompt-audit`, consulta [Controllare la configurazione con `/doctor`](https://code.claude.com/docs/it/skills#check-your-setup-with-/doctor). Il sottocomando `prompt-audit` richiede Claude Code v2.1.283 o successiva. Alias: `/checkup` |87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/it/skills.md#bundled-skills).** Esegue un controllo della configurazione che diagnostica problemi di installazione, impostazioni, estensioni e `CLAUDE.md` e propone correzioni che Claude applica dopo la tua conferma. Per sapere cosa copre il controllo, o per verificare invece le tue istruzioni con `prompt-audit`, consulta [Controllare la configurazione con `/doctor`](https://code.claude.com/docs/it/skills#check-your-setup-with-/doctor). Il sottocomando `prompt-audit` richiede Claude Code v2.1.283 o successiva. Alias: `/checkup` |

88| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Imposta il [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level): da `low` a `xhigh`, `max` oppure `auto`; `status` lo stampa. `ultracode` o `ultracode on` attiva [ultracode](https://code.claude.com/docs/it/workflows.md#let-claude-decide-with-ultracode) per la sessione al livello corrente, e `ultracode off` lo disattiva; la chiave [`ultracode`](https://code.claude.com/docs/it/settings-reference#ultracode) lo rende persistente. `max` vale solo per la sessione. Gli argomenti `on` e `off` e il mantenimento del livello corrente richiedono Claude Code v2.1.284 o successiva. Prima della v2.1.284, `/effort ultracode` impostava la sessione su `xhigh` e `/effort ultracode off` falliva con `Invalid argument`. Eseguilo mentre Claude sta rispondendo e, una volta confermato l'[avviso sulla cache](https://code.claude.com/docs/it/prompt-caching.md#changing-effort-level), se Claude Code ne mostra uno, Claude Code applica il nuovo livello alla richiesta successiva in quel turno. Prima della v2.1.242, Claude Code decideva in base a un feature flag recuperato da Anthropic se eseguire il comando a metà turno o metterlo in coda fino al termine del turno, e lo metteva sempre in coda in una sessione che non [recupera i feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching), come su un [provider di terze parti](https://code.claude.com/docs/it/third-party-integrations.md). Funziona con `-p` |88| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Imposta il [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level): da `low` a `xhigh`, `max` oppure `auto`; `status` lo stampa. `ultracode` o `ultracode on` attiva [ultracode](https://code.claude.com/docs/it/workflows.md#let-claude-decide-with-ultracode) per la sessione, e `ultracode off` lo disattiva; la chiave [`ultracode`](https://code.claude.com/docs/it/settings-reference#ultracode) lo rende persistente. `max` vale solo per la sessione. Gli argomenti `on` e `off` richiedono Claude Code v2.1.284 o successiva. Se esegui `/effort` mentre Claude sta lavorando, consulta [quando inizia il nuovo livello](https://code.claude.com/docs/it/model-config.md#when-a-new-effort-level-starts). Funziona con `-p` nella v2.1.205 o successiva |

89| `/exit` | Esce dalla CLI. In una [sessione in background](https://code.claude.com/docs/it/agent-view.md#attach-to-a-session) collegata, la scollega e la sessione continua a essere eseguita. Alias: `/quit` |89| `/exit` | Esce dalla CLI. In una [sessione in background](https://code.claude.com/docs/it/agent-view.md#attach-to-a-session) collegata, la scollega e la sessione continua a essere eseguita. Alias: `/quit` |

90| `/export [filename]` | Esporta la conversazione corrente come testo semplice. Con un nome file, scrive direttamente in quel file. Senza, apre una finestra di dialogo per copiarla negli appunti o salvarla in un file |90| `/export [filename]` | Esporta la conversazione corrente come testo semplice. Con un nome file, scrive direttamente in quel file. Senza, apre una finestra di dialogo per copiarla negli appunti o salvarla in un file |

91| `/fast [on\|off]` | Attiva o disattiva la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md). Eseguilo mentre Claude sta rispondendo e Claude Code attiva o disattiva la modalità veloce senza attendere la fine del turno, anche se il turno in corso termina alla velocità originale. Prima della v2.1.242, Claude Code decideva in base a un feature flag recuperato da Anthropic se eseguire il comando a metà turno o metterlo in coda fino al termine del turno, e lo metteva sempre in coda in una sessione che non [recupera i feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching). La disponibilità in modalità non interattiva con `-p` è limitata; consulta [Attivare o disattivare la modalità veloce](https://code.claude.com/docs/it/fast-mode.md#toggle-fast-mode) |91| `/fast [on\|off]` | Attiva o disattiva la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md). Eseguilo mentre Claude sta rispondendo e Claude Code attiva o disattiva la modalità veloce senza attendere la fine del turno, anche se il turno in corso termina alla velocità originale. Prima della v2.1.242, Claude Code decideva in base a un feature flag recuperato da Anthropic se eseguire il comando a metà turno o metterlo in coda fino al termine del turno, e lo metteva sempre in coda in una sessione che non [recupera i feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching). La disponibilità in modalità non interattiva con `-p` è limitata; consulta [Attivare o disattivare la modalità veloce](https://code.claude.com/docs/it/fast-mode.md#toggle-fast-mode) |

computer-use.md +1 −1

Details

178| Funzionalità | Desktop | CLI |178| Funzionalità | Desktop | CLI |

179| :- | :- | :- |179| :- | :- | :- |

180| Piattaforme | macOS e Windows | Solo macOS |180| Piattaforme | macOS e Windows | Solo macOS |

181| Abilita | Attiva/disattiva in **Settings > This computer > System** | Abilita `computer-use` in `/mcp` |181| Abilita | Attiva/disattiva in [Impostazioni](https://code.claude.com/docs/it/desktop.md#enable-computer-use) | Abilita `computer-use` in `/mcp` |

182| Elenco app negate | Configurabile in Impostazioni | Non ancora disponibile |182| Elenco app negate | Configurabile in Impostazioni | Non ancora disponibile |

183| Attiva/disattiva auto-unhide | Facoltativo | Sempre attivo |183| Attiva/disattiva auto-unhide | Facoltativo | Sempre attivo |

184| Integrazione Dispatch | Le sessioni generate da Dispatch possono usare computer use | Non applicabile |184| Integrazione Dispatch | Le sessioni generate da Dispatch possono usare computer use | Non applicabile |

Details

70* [Estendi Claude Code](https://code.claude.com/docs/it/features-overview.md): quando usare CLAUDE.md rispetto a skill rispetto a regole rispetto a hook rispetto a MCP70* [Estendi Claude Code](https://code.claude.com/docs/it/features-overview.md): quando usare CLAUDE.md rispetto a skill rispetto a regole rispetto a hook rispetto a MCP

71* [Archivia istruzioni e memorie](https://code.claude.com/docs/it/memory.md): gerarchia CLAUDE.md e memoria automatica71* [Archivia istruzioni e memorie](https://code.claude.com/docs/it/memory.md): gerarchia CLAUDE.md e memoria automatica

72* [Subagent](https://code.claude.com/docs/it/sub-agents.md): delega la ricerca a una finestra di contesto separata72* [Subagent](https://code.claude.com/docs/it/sub-agents.md): delega la ricerca a una finestra di contesto separata

73* [Best practice](https://code.claude.com/docs/it/best-practices.md): gestione del contesto come vincolo principale73* [Best practice](https://code.claude.com/docs/it/best-practices.md#keep-cost-and-context-down): mantieni le sessioni focalizzate e i costi bassi

74* [Prompt caching](https://code.claude.com/docs/it/prompt-caching.md): quali azioni invalidano il prefisso memorizzato nella cache74* [Prompt caching](https://code.claude.com/docs/it/prompt-caching.md): quali azioni invalidano il prefisso memorizzato nella cache

75* [Riduci l'utilizzo dei token](https://code.claude.com/docs/it/costs.md#reduce-token-usage): strategie per mantenere basso l'utilizzo del contesto75* [Riduci l'utilizzo dei token](https://code.claude.com/docs/it/costs.md#reduce-token-usage): strategie per mantenere basso l'utilizzo del contesto

Details

174Uno di questi mostra il testo completo:174Uno di questi mostra il testo completo:

175 175 

176* Premi `Ctrl+O` per aprire il [visualizzatore di trascrizioni](https://code.claude.com/docs/it/interactive-mode.md#transcript-viewer) e leggi il testo completo sotto il nome della sessione del mittente.176* Premi `Ctrl+O` per aprire il [visualizzatore di trascrizioni](https://code.claude.com/docs/it/interactive-mode.md#transcript-viewer) e leggi il testo completo sotto il nome della sessione del mittente.

177 

178 Se Claude è occupato e non ha ancora ricevuto il messaggio, scorri fino alla fine della trascrizione, dove il messaggio è elencato sotto `Waiting to be delivered`. Richiede Claude Code v2.1.309 o successiva.

179 

177* Nel [rendering a schermo intero](https://code.claude.com/docs/it/fullscreen.md#use-the-mouse), fai clic su una riga di anteprima che omette parte del messaggio per espanderla sul posto.180* Nel [rendering a schermo intero](https://code.claude.com/docs/it/fullscreen.md#use-the-mouse), fai clic su una riga di anteprima che omette parte del messaggio per espanderla sul posto.

181 

178* In una sessione avviata con [`--verbose`](https://code.claude.com/docs/it/cli-reference#cli-flags), Claude Code mostra il testo completo invece dell'anteprima.182* In una sessione avviata con [`--verbose`](https://code.claude.com/docs/it/cli-reference#cli-flags), Claude Code mostra il testo completo invece dell'anteprima.

179 183 

180L'anteprima accorcia solo quello che vedi. Che tu lo espanda o no, Claude legge il messaggio completo.184L'anteprima accorcia solo quello che vedi. Che tu lo espanda o no, Claude legge il messaggio completo.

desktop.md +31 −22

Details

69* **Usa il suggerimento**: premi **Tab** o **Freccia destra** per inserirlo nella casella del prompt, modificalo se vuoi, poi premi **Invio** per inviarlo. Premere **Invio** prima di accettare il suggerimento non lo invia.69* **Usa il suggerimento**: premi **Tab** o **Freccia destra** per inserirlo nella casella del prompt, modificalo se vuoi, poi premi **Invio** per inviarlo. Premere **Invio** prima di accettare il suggerimento non lo invia.

70* **Scrivi il tuo prompt**: inizia a digitare. Il suggerimento viene mostrato solo mentre la casella del prompt è vuota e non ha file allegati.70* **Scrivi il tuo prompt**: inizia a digitare. Il suggerimento viene mostrato solo mentre la casella del prompt è vuota e non ha file allegati.

71 71 

72Vai su **Impostazioni > Claude Code** e disattiva **Prompt suggestions** sotto **Sessions** per interrompere i suggerimenti in ogni sessione a partire dalla prossima volta che viene avviata o ripresa.72Disattiva **Prompt suggestions** in **Impostazioni > Code** o **Impostazioni > Claude Code** per interrompere i suggerimenti. Ogni sessione smette di mostrarli la prossima volta che viene avviata o ripresa.

73 73 

74### Aggiungi file e contesto ai prompt74### Aggiungi file e contesto ai prompt

75 75 


92| **Accept edits** | `acceptEdits` | Claude accetta automaticamente le modifiche ai file e i comandi comuni del filesystem come `mkdir`, `touch` e `mv`, ma chiede comunque prima di eseguire altri comandi di terminale. Usa questa modalità quando ti fidi delle modifiche ai file e vuoi un'iterazione più veloce. |92| **Accept edits** | `acceptEdits` | Claude accetta automaticamente le modifiche ai file e i comandi comuni del filesystem come `mkdir`, `touch` e `mv`, ma chiede comunque prima di eseguire altri comandi di terminale. Usa questa modalità quando ti fidi delle modifiche ai file e vuoi un'iterazione più veloce. |

93| **Plan** | `plan` | Claude legge i file ed esegue comandi per esplorare, quindi propone un piano senza modificare il tuo codice sorgente. Buono per compiti complessi dove vuoi rivedere l'approccio prima. |93| **Plan** | `plan` | Claude legge i file ed esegue comandi per esplorare, quindi propone un piano senza modificare il tuo codice sorgente. Buono per compiti complessi dove vuoi rivedere l'approccio prima. |

94| **Auto** | `auto` | Claude esegue senza richieste di permesso abituali; prima che azioni come comandi shell e richieste di rete vengano eseguite, un classificatore in background verifica che si allineino con la tua richiesta. Appare quando [la modalità auto è disponibile](#auto-mode-availability); non c'è un interruttore Impostazioni separato per essa. |94| **Auto** | `auto` | Claude esegue senza richieste di permesso abituali; prima che azioni come comandi shell e richieste di rete vengano eseguite, un classificatore in background verifica che si allineino con la tua richiesta. Appare quando [la modalità auto è disponibile](#auto-mode-availability); non c'è un interruttore Impostazioni separato per essa. |

95| **Bypass permissions** | `bypassPermissions` | Claude viene eseguito senza richieste di permesso, tranne per le [azioni che nessuna modalità auto-approva](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves), classificatori di sicurezza quando Claude [agisce su siti esterni](#browse-external-sites), o azioni desktop come l'eliminazione di una sessione, ma non la sua [archiviazione](#work-across-sessions). Equivalente a `--dangerously-skip-permissions` nella CLI. Su piani Pro e Max, abilitalo in Impostazioni → Claude Code sotto "Allow bypass permissions mode"; su piani Team e Enterprise non c'è un interruttore Impostazioni, e la politica organizzativa lo controlla invece. Usala solo in container sandbox o VM. |95| **Bypass permissions** | `bypassPermissions` | Claude viene eseguito senza richieste di permesso, tranne per le [azioni che nessuna modalità auto-approva](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves), classificatori di sicurezza quando Claude [agisce su siti esterni](#browse-external-sites), o azioni desktop come l'eliminazione di una sessione, ma non la sua [archiviazione](#work-across-sessions). Equivalente a `--dangerously-skip-permissions` nella CLI. Su piani Pro e Max, abilita "Allow bypass permissions mode" in **Impostazioni > Code** o **Impostazioni > Claude Code**. Su piani Team e Enterprise non c'è un interruttore Impostazioni, e la politica organizzativa lo controlla invece. Usala solo in container sandbox o VM. |

96 96 

97Le versioni precedenti della scheda Code etichettavano queste modalità Ask permissions, Auto accept edits e Plan mode.97Le versioni precedenti della scheda Code etichettavano queste modalità Ask permissions, Auto accept edits e Plan mode.

98 98 


100 100 

101> [!TIP]101> [!TIP]

102>102>

103> Inizia compiti complessi in Plan in modo che Claude mappi un approccio prima di apportare modifiche. Una volta approvato il piano, passa a Accept edits o Manual per eseguirlo. Vedi [esplora prima, poi pianifica, poi codifica](https://code.claude.com/docs/it/best-practices.md#explore-first-then-plan-then-code) per ulteriori informazioni su questo workflow.103> Inizia compiti complessi in Plan in modo che Claude mappi un approccio prima di apportare modifiche. Una volta approvato il piano, passa a Accept edits o Manual per eseguirlo. Vedi [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) per ulteriori informazioni su questo workflow.

104 104 

105Le sessioni cloud supportano Accept edits, Plan e Auto. Accept edits corrisponde alla modalità `default`: le sessioni cloud pre-approvano le modifiche ai file, quindi il selettore mostra Accept edits invece di Manual. Bypass permissions non è disponibile nelle sessioni cloud, incluse le sessioni in un [ambiente self-hosted](https://code.claude.com/docs/it/self-hosted-environments).105Le sessioni cloud supportano Accept edits, Plan e Auto. Accept edits corrisponde alla modalità `default`: le sessioni cloud pre-approvano le modifiche ai file, quindi il selettore mostra Accept edits invece di Manual. Bypass permissions non è disponibile nelle sessioni cloud, incluse le sessioni in un [ambiente self-hosted](https://code.claude.com/docs/it/self-hosted-environments).

106 106 


133 133 

134Claude crea la configurazione iniziale del server in base al tuo progetto. Se la tua app utilizza un comando dev personalizzato, modifica `.claude/launch.json` per adattarlo alla tua configurazione. Vedi [Configura server di anteprima](#configure-preview-servers) per il riferimento completo.134Claude crea la configurazione iniziale del server in base al tuo progetto. Se la tua app utilizza un comando dev personalizzato, modifica `.claude/launch.json` per adattarlo alla tua configurazione. Vedi [Configura server di anteprima](#configure-preview-servers) per il riferimento completo.

135 135 

136Per cancellare i dati salvati del Browser, seleziona **Clear browsing data** nel menu **⋮** del riquadro Browser. Per disattivare completamente il Browser, disattiva **Browser tools** in **Impostazioni > Claude Code**.136Per cancellare i dati salvati del Browser, seleziona **Clear browsing data** nel menu **⋮** del riquadro Browser. Per disattivare completamente il Browser, disattiva **Browser tools** in **Impostazioni > Code** o **Impostazioni > Claude Code**.

137 137 

138### Sfoglia siti esterni138### Sfoglia siti esterni

139 139 


164 164 

165### Rivedi le modifiche con la visualizzazione diff165### Rivedi le modifiche con la visualizzazione diff

166 166 

167Dopo che Claude apporta modifiche al tuo codice, la visualizzazione diff ti consente di rivedere le modifiche file per file prima di creare una pull request. Per aprire la visualizzazione diff, fai clic sui conteggi delle righe, come `+12 -1`, nella scheda **Changes** del [pannello dei dettagli della sessione](#see-session-details). Puoi anche fare clic su **Changes** nella barra del titolo della sessione.167Dopo che Claude apporta modifiche al tuo codice, la visualizzazione diff ti consente di rivedere le modifiche file per file prima di creare una pull request. Per aprire la visualizzazione diff, fai clic sui conteggi delle righe, come `+12 -1`, nella scheda **Changes** del [pannello dei dettagli della sessione](#see-session-details). Puoi anche fare clic su **Changes** nella barra del titolo della sessione. Il diff di una sessione cloud rispetto al branch di base può [escludere le modifiche non ancora sottoposte a push](https://code.claude.com/docs/it/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

168 168 

169Per commentare righe specifiche, fai clic su qualsiasi riga nel diff per aprire una casella di commento. Digita il tuo feedback e premi **Invio** per aggiungere il commento. Dopo aver aggiunto commenti a più righe, invia tutti i commenti contemporaneamente:169Per commentare righe specifiche, passa il mouse su una riga e fai clic sul **+** che appare accanto al suo numero di riga per aprire una casella di commento. Digita il tuo feedback e premi **Invio** per aggiungere il commento. Dopo aver aggiunto commenti a più righe, invia tutti i commenti contemporaneamente:

170 170 

171* **macOS**: premi **Cmd+Invio**171* **macOS**: premi **Cmd+Invio**

172* **Windows**: premi **Ctrl+Invio**172* **Windows**: premi **Ctrl+Invio**


194 * **Se il repository non consente l'auto-merge**: **Merge when ready** non si attiva, quindi abilita prima l'auto-merge nelle [impostazioni del tuo repository GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)194 * **Se il repository non consente l'auto-merge**: **Merge when ready** non si attiva, quindi abilita prima l'auto-merge nelle [impostazioni del tuo repository GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)

195* **[Layout precedente](#check-which-layout-you-have)**: una volta che la sessione ha una pull request, fai clic su **CI** nella sua barra di stato.195* **[Layout precedente](#check-which-layout-you-have)**: una volta che la sessione ha una pull request, fai clic su **CI** nella sua barra di stato.

196 196 

197Per archiviare la sessione automaticamente una volta che la PR viene sottoposta a merge o chiusa, attiva [auto-archive](#archive-a-session) in **Impostazioni > Claude Code**.197Per archiviare la sessione automaticamente una volta che la PR viene sottoposta a merge o chiusa, attiva [auto-archive](#archive-a-session) in **Impostazioni > Code** o **Impostazioni > Claude Code**.

198 198 

199> [!NOTE]199> [!NOTE]

200>200>


275* **Cmd+Ctrl**: premi **Ctrl+Alt**275* **Cmd+Ctrl**: premi **Ctrl+Alt**

276* **Cmd**: premi **Ctrl**276* **Cmd**: premi **Ctrl**

277 277 

278Il ciclo della sessione, l'interruttore del terminale e l'interruttore della modalità di visualizzazione usano **Ctrl** su ogni piattaforma.278Le scorciatoie che iniziano con `Ctrl` restano le stesse su ogni piattaforma.

279 279 

280| Scorciatoia | Azione |280| Scorciatoia | Azione |

281| - | - |281| - | - |


284| `Cmd` `Option` `1`–`9` | Nella schermata di nuova sessione del [layout attuale](#check-which-layout-you-have), seleziona un ambiente |284| `Cmd` `Option` `1`–`9` | Nella schermata di nuova sessione del [layout attuale](#check-which-layout-you-have), seleziona un ambiente |

285| `Cmd` `Option` `0` | Nella schermata di nuova sessione del layout attuale, apri la [finestra di dialogo **New environment**](#create-a-saved-environment) |285| `Cmd` `Option` `0` | Nella schermata di nuova sessione del layout attuale, apri la [finestra di dialogo **New environment**](#create-a-saved-environment) |

286| `Cmd` `W` | Chiudi sessione |286| `Cmd` `W` | Chiudi sessione |

287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Sessione successiva o precedente |287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Passa da una sessione all'altra |

288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Sessione successiva o precedente |288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Sessione successiva o precedente |

289| `Esc` | Arresta la risposta di Claude |289| `Esc` | Arresta la risposta di Claude |

290| `Tab` / `Right arrow` | [Accetta il prompt suggerito](#accept-a-suggested-prompt) in una casella del prompt vuota |290| `Tab` / `Right arrow` | [Accetta il prompt suggerito](#accept-a-suggested-prompt) in una casella del prompt vuota |


352 352 

353**2. Attiva l'interruttore**353**2. Attiva l'interruttore**

354 354 

355Nell'app desktop, vai a **Impostazioni > Questo computer > Sistema**. In **Utilizzo del computer**, attiva **Abilita l'utilizzo del computer**. Su Windows, l'interruttore ha effetto immediatamente e la configurazione è completa. Su macOS, continua al passaggio successivo.355Nell'app desktop, apri **Impostazioni**, quindi:

356 

357* **Se il menu Impostazioni elenca Questo computer**: vai a **Questo computer > Sistema**

358* **Altrimenti**: vai a **Funzionalità**

359 

360In **Utilizzo del computer**, attiva **Abilita l'utilizzo del computer**:

361 

362* **Windows**: l'interruttore ha effetto immediatamente e la configurazione è completa

363* **macOS**: continua al passaggio successivo

356 364 

357Se non vedi l'interruttore, conferma che sei su macOS o Windows con un piano Pro o Max, quindi aggiorna e riavvia l'app.365Se non vedi l'interruttore, conferma che sei su macOS o Windows con un piano Pro o Max, quindi aggiorna e riavvia l'app.

358 366 


379 387 

380Le app con ampia portata, come terminali, Finder o File Explorer, e Impostazioni di sistema o Impostazioni, mostrano un avviso aggiuntivo nel prompt in modo che tu sappia cosa approvare loro concede.388Le app con ampia portata, come terminali, Finder o File Explorer, e Impostazioni di sistema o Impostazioni, mostrano un avviso aggiuntivo nel prompt in modo che tu sappia cosa approvare loro concede.

381 389 

382La sezione **Utilizzo del computer** in **Impostazioni > Questo computer > Sistema** include queste opzioni:390In Impostazioni, la sezione **Utilizzo del computer** in cui hai [attivato l'utilizzo del computer](#enable-computer-use) include queste opzioni:

383 391 

384* **Denied apps**: aggiungi app qui per rifiutarle senza chiedere. Claude potrebbe comunque influenzare un'app negata indirettamente tramite azioni in un'app consentita, ma non può interagire direttamente con l'app negata.392* **Denied apps**: aggiungi app qui per rifiutarle senza chiedere. Claude potrebbe comunque influenzare un'app negata indirettamente tramite azioni in un'app consentita, ma non può interagire direttamente con l'app negata.

385* **Unhide apps when Claude finishes**: quando l'utilizzo del computer non è in esecuzione in background, Claude nasconde le tue altre finestre mentre lavora in modo che interagisca solo con l'app approvata. Quando Claude finisce, le finestre nascoste vengono ripristinate a meno che non disattivi questa impostazione.393* **Unhide apps when Claude finishes**: quando l'utilizzo del computer non è in esecuzione in background, Claude nasconde le tue altre finestre mentre lavora in modo che interagisca solo con l'app approvata. Quando Claude finisce, le finestre nascoste vengono ripristinate a meno che non disattivi questa impostazione.


390 398 

391### Lavora in parallelo con le sessioni399### Lavora in parallelo con le sessioni

392 400 

393Fai clic su **+ New** nella barra laterale, o premi **Cmd+N** su macOS o **Ctrl+N** su Windows, per lavorare su più compiti in parallelo. Premi **Ctrl+Tab** e **Ctrl+Shift+Tab** per scorrere le sessioni nella barra laterale.401Fai clic su **+ New** nella barra laterale, o premi **Cmd+N** su macOS o **Ctrl+N** su Windows, per lavorare su più compiti in parallelo. Premi **Ctrl+Tab** e **Ctrl+Shift+Tab** per passare da una sessione all'altra.

394 402 

395Puoi anche aprire una seconda sessione accanto alla sessione corrente o in una finestra separata:403Puoi anche aprire una seconda sessione accanto alla sessione corrente o in una finestra separata:

396 404 


401 409 

402#### Esegui una sessione nel suo worktree410#### Esegui una sessione nel suo worktree

403 411 

404In un progetto che è un repository Git, attiva **Worktree** prima di avviare una sessione per eseguirla nel suo [worktree Git](https://code.claude.com/docs/it/worktrees.md), una copia isolata del progetto. Per impostazione predefinita, **Worktree** è disattivato e Claude lavora direttamente nella cartella del progetto. Fai clic sul controllo della cartella del progetto nella [riga sotto la casella del prompt](#start-a-session) e attiva **Worktree**.412In un progetto che è un repository Git, attiva **Worktree** prima di avviare una sessione per eseguirla nel suo [worktree Git](https://code.claude.com/docs/it/worktrees.md), una copia isolata del progetto. Per impostazione predefinita, **Worktree** è disattivato e Claude lavora direttamente nella cartella del progetto. Con il [layout attuale](#check-which-layout-you-have), attiva il pulsante **Worktree** nella [riga sotto la casella del prompt](#start-a-session).

405 413 

406* **Con un [ambiente salvato](#create-a-saved-environment)**: imposta **Worktree** quando crei o modifichi l'ambiente414* **Con un [provider di terze parti](https://code.claude.com/docs/it/third-party-integrations.md)**: se la riga sotto la casella del prompt mostra il controllo della cartella del progetto ma nessun pulsante **Worktree**, fai clic su quel controllo e attiva **Worktree**

415* **Come impostazione predefinita per un [ambiente locale o SSH salvato](#create-a-saved-environment)**: imposta **Worktree** quando crei o modifichi l'ambiente

407* **[Layout precedente](#check-which-layout-you-have)**: seleziona la casella di controllo **worktree** accanto al nome del branch, sopra la casella del prompt416* **[Layout precedente](#check-which-layout-you-have)**: seleziona la casella di controllo **worktree** accanto al nome del branch, sopra la casella del prompt

408 417 

409I worktree sono archiviati in `<project-root>/.claude/worktrees/` per impostazione predefinita. Per archiviarli invece in una directory personalizzata:418I worktree sono archiviati in `<project-root>/.claude/worktrees/` per impostazione predefinita. Per archiviarli invece in una directory personalizzata:

410 419 

411* **Sessioni locali**: imposta **Worktree location** in **Settings > Claude Code**420* **Sessioni locali**: imposta **Worktree location** in **Settings > Code** o **Settings > Claude Code**

412* **Sessioni SSH**: imposta **Worktree folder** sulla [connessione SSH](#choose-where-ssh-session-worktrees-go)421* **Sessioni SSH**: imposta **Worktree folder** sulla [connessione SSH](#choose-where-ssh-session-worktrees-go)

413 422 

414Puoi anche impostare un **Branch prefix** in **Settings > Claude Code**. Desktop lo antepone a ogni nome di branch worktree, il che è utile per mantenere organizzati i branch creati da Claude.423Puoi anche impostare un **Branch prefix** in **Settings > Code** o **Settings > Claude Code**. Desktop lo antepone a ogni nome di branch worktree, il che è utile per mantenere organizzati i branch creati da Claude.

415 424 

416Per includere file gitignored come `.env` nei nuovi worktree, crea un [file `.worktreeinclude`](https://code.claude.com/docs/it/worktrees#copy-gitignored-files-into-worktrees) nella radice del tuo progetto. Vedi [Cosa condividono i worktree con il checkout principale](https://code.claude.com/docs/it/worktrees.md#what-worktrees-share-with-the-main-checkout) per sapere da dove una sessione worktree legge le impostazioni di progetto, gli hook e le skill.425Per includere file gitignored come `.env` nei nuovi worktree, crea un [file `.worktreeinclude`](https://code.claude.com/docs/it/worktrees#copy-gitignored-files-into-worktrees) nella radice del tuo progetto. Vedi [Cosa condividono i worktree con il checkout principale](https://code.claude.com/docs/it/worktrees.md#what-worktrees-share-with-the-main-checkout) per sapere da dove una sessione worktree legge le impostazioni di progetto, gli hook e le skill.

417 426 


430 439 

431Prima di archiviare una sessione il cui worktree contiene modifiche senza commit, consulta [Conserva le modifiche senza commit quando una sessione viene archiviata](#keep-uncommitted-changes-when-a-session-is-archived). Per archiviare una sessione, passa il mouse sopra di essa nella barra laterale, apri il suo menu e seleziona **Archive**. La sessione viene spostata nelle tue [sessioni archiviate](#organize-and-find-sessions).440Prima di archiviare una sessione il cui worktree contiene modifiche senza commit, consulta [Conserva le modifiche senza commit quando una sessione viene archiviata](#keep-uncommitted-changes-when-a-session-is-archived). Per archiviare una sessione, passa il mouse sopra di essa nella barra laterale, apri il suo menu e seleziona **Archive**. La sessione viene spostata nelle tue [sessioni archiviate](#organize-and-find-sessions).

432 441 

433Per fare in modo che le sessioni si archivino da sole quando viene eseguito il merge della loro pull request o quando questa viene chiusa, attiva **Auto-archive after PR merge or close** in **Settings > Claude Code**. Le sessioni cloud e le sessioni ancora in esecuzione non si archiviano da sole.442Per fare in modo che le sessioni si archivino da sole quando viene eseguito il merge della loro pull request o quando questa viene chiusa, attiva **Auto-archive after PR merge or close** in **Settings > Code** o **Settings > Claude Code**. Le sessioni cloud e le sessioni ancora in esecuzione non si archiviano da sole.

434 443 

435#### Conserva le modifiche senza commit quando una sessione viene archiviata444#### Conserva le modifiche senza commit quando una sessione viene archiviata

436 445 


527Una sessione locale si connette quando attivi Remote Control per essa, oppure quando si connette automaticamente all'avvio:536Una sessione locale si connette quando attivi Remote Control per essa, oppure quando si connette automaticamente all'avvio:

528 537 

529* **Lo attivi per quella sessione**: con l'interruttore **Remote Control** della sessione, oppure digitando `/remote-control` nella sua casella del prompt.538* **Lo attivi per quella sessione**: con l'interruttore **Remote Control** della sessione, oppure digitando `/remote-control` nella sua casella del prompt.

530* **Si connette all'avvio**: le nuove sessioni si connettono automaticamente mentre **Connect new sessions to Remote Control** è attivo in **Settings > Claude Code**. Se non hai mai modificato quell'impostazione, Desktop segue [`remoteControlAtStartup`](https://code.claude.com/docs/it/settings-reference#remotecontrolatstartup) nelle tue impostazioni utente o nelle impostazioni gestite, quindi il valore predefinito della tua organizzazione.539* **Si connette all'avvio**: le nuove sessioni si connettono automaticamente mentre **Connect new sessions to Remote Control** è attivo in **Settings > Code** o **Settings > Claude Code**. Se non hai mai modificato quell'impostazione, Desktop segue [`remoteControlAtStartup`](https://code.claude.com/docs/it/settings-reference#remotecontrolatstartup) nelle tue impostazioni utente o nelle impostazioni gestite, quindi il valore predefinito della tua organizzazione.

531 540 

532Per vedere se una sessione è connessa, controlla l'interruttore **Remote Control** nella scheda **Environment** del suo [pannello dei dettagli della sessione](#see-session-details).541Per vedere se una sessione è connessa, controlla l'interruttore **Remote Control** nella scheda **Environment** del suo [pannello dei dettagli della sessione](#see-session-details).

533 542 

534Per tenere le sessioni lontane dagli altri tuoi dispositivi, disattiva Remote Control al livello che ti serve:543Per tenere le sessioni lontane dagli altri tuoi dispositivi, disattiva Remote Control al livello che ti serve:

535 544 

536* **Una sessione**: disattiva il suo interruttore **Remote Control**. In una sessione che si è connessa all'avvio, digitando `/remote-control` Remote Control resta attivo e viene mostrato `Remote Control is already on. This session connected automatically when it started.` Fai clic su **Turn off** in quella riga per disconnetterla.545* **Una sessione**: disattiva il suo interruttore **Remote Control**. In una sessione che si è connessa all'avvio, digitando `/remote-control` Remote Control resta attivo e viene mostrato `Remote Control is already on. This session connected automatically when it started.` Fai clic su **Turn off** in quella riga per disconnetterla.

537* **Nuove sessioni Desktop su questo computer**: disattiva **Connect new sessions to Remote Control** in **Settings > Claude Code**. Se risulta già disattivato, attivalo e poi disattivalo in modo che Desktop salvi la tua scelta. Una volta salvata, ha la precedenza su `remoteControlAtStartup` e sui valori predefiniti.546* **Nuove sessioni Desktop su questo computer**: disattiva **Connect new sessions to Remote Control** in **Settings > Code** o **Settings > Claude Code**. Se risulta già disattivato, attivalo e poi disattivalo in modo che Desktop salvi la tua scelta. Una volta salvata, ha la precedenza su `remoteControlAtStartup` e sui valori predefiniti.

538* **Qualsiasi sessione su questo computer, inclusa la CLI**: imposta [`disableRemoteControl`](https://code.claude.com/docs/it/settings-reference#disableremotecontrol) su `true` in `~/.claude/settings.json` per impedire alle sessioni di connettersi. Una sessione che era già connessa quando hai salvato il file resta connessa finché non disattivi Remote Control per essa.547* **Qualsiasi sessione su questo computer, inclusa la CLI**: imposta [`disableRemoteControl`](https://code.claude.com/docs/it/settings-reference#disableremotecontrol) su `true` in `~/.claude/settings.json` per impedire alle sessioni di connettersi. Una sessione che era già connessa quando hai salvato il file resta connessa finché non disattivi Remote Control per essa.

539 548 

540Per nascondere una sessione che appare già sugli altri tuoi dispositivi, archiviala in Desktop. Desktop archivia anche la copia Remote Control della sessione, così esce dall'elenco predefinito delle sessioni su quei dispositivi. Per visualizzarla o eliminarla lì, vedi [Archivia le sessioni](https://code.claude.com/docs/it/claude-code-on-the-web.md#archive-sessions).549Per nascondere una sessione che appare già sugli altri tuoi dispositivi, archiviala in Desktop. Desktop archivia anche la copia Remote Control della sessione, così esce dall'elenco predefinito delle sessioni su quei dispositivi. Per visualizzarla o eliminarla lì, vedi [Archivia le sessioni](https://code.claude.com/docs/it/claude-code-on-the-web.md#archive-sessions).


576> * **Connectors è disattivato in una sessione WSL**: vedi [Se il terminale o i connettori non sono disponibili](https://code.claude.com/docs/it/desktop-wsl.md#check-for-the-terminal-and-connectors)585> * **Connectors è disattivato in una sessione WSL**: vedi [Se il terminale o i connettori non sono disponibili](https://code.claude.com/docs/it/desktop-wsl.md#check-for-the-terminal-and-connectors)

577> * **Sessioni cloud**: vedi [Come i connettori raggiungono Claude Code](https://code.claude.com/docs/it/mcp.md#how-connectors-reach-claude-code)586> * **Sessioni cloud**: vedi [Come i connettori raggiungono Claude Code](https://code.claude.com/docs/it/mcp.md#how-connectors-reach-claude-code)

578 587 

579Una volta connesso, Claude può leggere il tuo calendario, inviare messaggi, creare problemi e interagire direttamente con i tuoi strumenti. Puoi chiedere a Claude quali connettori sono configurati nella tua sessione. Per gestire o disconnettere i connettori, vai a **Settings > Connectors** nell'app desktop.588Una volta connesso, Claude può leggere il tuo calendario, inviare messaggi, creare problemi e interagire direttamente con i tuoi strumenti. Puoi chiedere a Claude quali connettori sono configurati nella tua sessione. Per gestire o disconnettere i connettori, fai clic su **Customize** nella barra laterale e apri **Connectors**.

580 589 

581Per le integrazioni non elencate in Connectors, aggiungi server MCP manualmente tramite [file di impostazioni](https://code.claude.com/docs/it/mcp.md#installing-mcp-servers). Puoi anche [creare connettori personalizzati](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).590Per le integrazioni non elencate in Connectors, aggiungi server MCP manualmente tramite [file di impostazioni](https://code.claude.com/docs/it/mcp.md#installing-mcp-servers). Puoi anche [creare connettori personalizzati](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

582 591 


2028| `--model sonnet` | Selettore del modello nella riga sotto la casella del prompt |2037| `--model sonnet` | Selettore del modello nella riga sotto la casella del prompt |

2029| `--resume`, `--continue` | Fai clic su una sessione nella barra laterale, o digita `/resume` nella casella del prompt per riprendere una sessione che hai avviato dalla CLI |2038| `--resume`, `--continue` | Fai clic su una sessione nella barra laterale, o digita `/resume` nella casella del prompt per riprendere una sessione che hai avviato dalla CLI |

2030| `--permission-mode` | Selettore di modalità nella riga sotto la casella del prompt |2039| `--permission-mode` | Selettore di modalità nella riga sotto la casella del prompt |

2031| `--dangerously-skip-permissions` | Modalità Bypass permissions. Su piani Pro e Max, abilitala in Impostazioni → Claude Code → "Allow bypass permissions mode"; su piani Team ed Enterprise, la politica organizzativa la controlla |2040| `--dangerously-skip-permissions` | Modalità Bypass permissions. Su piani Pro e Max, abilita "Allow bypass permissions mode" in **Impostazioni > Code** o **Impostazioni > Claude Code**; su piani Team ed Enterprise, la politica organizzativa la controlla |

2032| `--add-dir` | [Aggiungi cartelle a una sessione](#add-folders-to-a-session) nelle sessioni locali e SSH, oppure seleziona [più repository](#run-long-running-tasks-in-the-cloud) in una sessione cloud |2041| `--add-dir` | [Aggiungi cartelle a una sessione](#add-folders-to-a-session) nelle sessioni locali e SSH, oppure seleziona [più repository](#run-long-running-tasks-in-the-cloud) in una sessione cloud |

2033| `--allowedTools`, `--disallowedTools` | Nessun equivalente per sessione. Le regole di permesso nei [file di impostazioni](https://code.claude.com/docs/it/settings.md) si applicano ancora. |2042| `--allowedTools`, `--disallowedTools` | Nessun equivalente per sessione. Le regole di permesso nei [file di impostazioni](https://code.claude.com/docs/it/settings.md) si applicano ancora. |

2034| `--verbose` | [Modalità di visualizzazione Verbose](#switch-view-modes) |2043| `--verbose` | [Modalità di visualizzazione Verbose](#switch-view-modes) |


2088* **Team di agenti**: team coordinati, dove Claude come team lead assegna compiti ai compagni di squadra da un elenco di compiti condiviso, sono disponibili nella [CLI](https://code.claude.com/docs/it/agent-teams.md), non in Desktop. Per il lavoro multi-agente all'interno di una sessione, usa i [workflow dinamici](https://code.claude.com/docs/it/workflows.md), che vengono eseguiti in Desktop; Claude può anche [inviare messaggi alle tue altre sessioni e gestirle](#work-across-sessions) direttamente.2097* **Team di agenti**: team coordinati, dove Claude come team lead assegna compiti ai compagni di squadra da un elenco di compiti condiviso, sono disponibili nella [CLI](https://code.claude.com/docs/it/agent-teams.md), non in Desktop. Per il lavoro multi-agente all'interno di una sessione, usa i [workflow dinamici](https://code.claude.com/docs/it/workflows.md), che vengono eseguiti in Desktop; Claude può anche [inviare messaggi alle tue altre sessioni e gestirle](#work-across-sessions) direttamente.

2089* **Comandi terminal-dialog**: i comandi integrati che aprono un pannello interattivo nel terminale si comportano diversamente nella scheda Code. Modifica direttamente i [file di impostazioni](https://code.claude.com/docs/it/settings.md) per gestire le regole di permesso e la configurazione, oppure esegui i comandi dalla CLI standalone.2098* **Comandi terminal-dialog**: i comandi integrati che aprono un pannello interattivo nel terminale si comportano diversamente nella scheda Code. Modifica direttamente i [file di impostazioni](https://code.claude.com/docs/it/settings.md) per gestire le regole di permesso e la configurazione, oppure esegui i comandi dalla CLI standalone.

2090 * I comandi senza forma di argomento, come `/permissions`, rispondono con `isn't available in this environment`.2099 * I comandi senza forma di argomento, come `/permissions`, rispondono con `isn't available in this environment`.

2091 * `/config` apre **Impostazioni > Claude Code**.2100 * `/config` apre **Impostazioni > Code** o **Impostazioni > Claude Code**.

2092 2101 

2093## Troubleshooting2102## Troubleshooting

2094 2103 

Details

135 135 

136Le attività pianificate locali vengono eseguite sulla tua macchina. Desktop controlla la pianificazione ogni minuto mentre l'app è aperta e avvia una sessione nuova quando un'attività è dovuta, indipendentemente da qualsiasi sessione manuale che hai aperta. Ogni attività riceve un piccolo ritardo di pochi minuti dopo l'ora pianificata per scaglionare il traffico API. Il ritardo è deterministico: la stessa attività inizia sempre allo stesso offset.136Le attività pianificate locali vengono eseguite sulla tua macchina. Desktop controlla la pianificazione ogni minuto mentre l'app è aperta e avvia una sessione nuova quando un'attività è dovuta, indipendentemente da qualsiasi sessione manuale che hai aperta. Ogni attività riceve un piccolo ritardo di pochi minuti dopo l'ora pianificata per scaglionare il traffico API. Il ritardo è deterministico: la stessa attività inizia sempre allo stesso offset.

137 137 

138Le attività vengono eseguite solo mentre l'app desktop è in esecuzione e il tuo computer è sveglio. Se il tuo computer dorme durante un'ora pianificata, l'esecuzione viene saltata. Per impedire il sonno inattivo, attiva **Keep computer awake** in **Settings > This computer > System**. Chiudere il coperchio del laptop lo mette comunque in modalità sospensione.138Le attività vengono eseguite solo mentre l'app desktop è in esecuzione e il tuo computer è sveglio. Se il tuo computer dorme durante un'ora pianificata, l'esecuzione viene saltata. Per impedire il sonno inattivo, attiva **Keep computer awake** in **Settings > Desktop app** o in **Settings > This computer > System**. Chiudere il coperchio del laptop lo mette comunque in modalità sospensione.

139 139 

140> [!NOTE]140> [!NOTE]

141>141>

env-vars.md +2 −0

Details

291| `CLAUDE_CODE_ENABLE_TASKS` | Seleziona quali strumenti di tracciamento delle attività fornisce Claude Code nelle [sessioni che li prevedono](https://code.claude.com/docs/it/tools-reference.md#task-tool-availability). Per impostazione predefinita, Claude Code fornisce gli strumenti Task `TaskCreate`, `TaskUpdate`, `TaskGet` e `TaskList`. Imposta su `0` per ottenere invece lo strumento legacy `TodoWrite`. Consulta [Elenco delle attività](https://code.claude.com/docs/it/interactive-mode.md#task-list) |291| `CLAUDE_CODE_ENABLE_TASKS` | Seleziona quali strumenti di tracciamento delle attività fornisce Claude Code nelle [sessioni che li prevedono](https://code.claude.com/docs/it/tools-reference.md#task-tool-availability). Per impostazione predefinita, Claude Code fornisce gli strumenti Task `TaskCreate`, `TaskUpdate`, `TaskGet` e `TaskList`. Imposta su `0` per ottenere invece lo strumento legacy `TodoWrite`. Consulta [Elenco delle attività](https://code.claude.com/docs/it/interactive-mode.md#task-list) |

292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Imposta su `1` per abilitare la raccolta di dati OpenTelemetry per metriche e logging. Necessaria prima di configurare gli exporter OTel. Impostala nella tua shell, nelle impostazioni utente o nelle impostazioni gestite. Ignorata nelle [impostazioni di progetto e locali](https://code.claude.com/docs/it/settings-reference.md#variables-claude-code-ignores-in-env). Consulta [Monitoraggio](https://code.claude.com/docs/it/monitoring-usage.md) |292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Imposta su `1` per abilitare la raccolta di dati OpenTelemetry per metriche e logging. Necessaria prima di configurare gli exporter OTel. Impostala nella tua shell, nelle impostazioni utente o nelle impostazioni gestite. Ignorata nelle [impostazioni di progetto e locali](https://code.claude.com/docs/it/settings-reference.md#variables-claude-code-ignores-in-env). Consulta [Monitoraggio](https://code.claude.com/docs/it/monitoring-usage.md) |

293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Imposta su `1` per ottenere gli strumenti di tracciamento delle attività su ogni modello. Senza di essa, Claude Code li fornisce per impostazione predefinita solo sui modelli elencati in [Disponibilità dello strumento Task](https://code.claude.com/docs/it/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` seleziona comunque gli strumenti Task o `TodoWrite`. Richiede Claude Code v2.1.233 o successiva |293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Imposta su `1` per ottenere gli strumenti di tracciamento delle attività su ogni modello. Senza di essa, Claude Code li fornisce per impostazione predefinita solo sui modelli elencati in [Disponibilità dello strumento Task](https://code.claude.com/docs/it/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` seleziona comunque gli strumenti Task o `TodoWrite`. Richiede Claude Code v2.1.233 o successiva |

294| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | Imposta su `1` per [eseguire comandi `rm` pericolosi senza alcuna richiesta di conferma](https://code.claude.com/docs/it/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) in modalità `bypassPermissions`, il che rimuove una richiesta di conferma di sicurezza per le eliminazioni distruttive. La sezione collegata elenca i casi in cui non ha effetto. [Impostala nell'ambiente che avvia Claude Code](#set-variables-in-your-shell), perché Claude Code [la ignora in un blocco `env` delle impostazioni](https://code.claude.com/docs/it/settings-reference#variables-claude-code-ignores-in-env). Richiede Claude Code v2.1.311 o successivo |

294| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo in millisecondi da attendere, dopo che il ciclo di query diventa inattivo, prima di uscire automaticamente. Utile per workflow automatizzati e script che usano la modalità SDK |295| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo in millisecondi da attendere, dopo che il ciclo di query diventa inattivo, prima di uscire automaticamente. Utile per workflow automatizzati e script che usano la modalità SDK |

295| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Imposta su `1` per abilitare i [team di agenti](https://code.claude.com/docs/it/agent-teams.md). I team di agenti sono sperimentali e disabilitati per impostazione predefinita |296| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Imposta su `1` per abilitare i [team di agenti](https://code.claude.com/docs/it/agent-teams.md). I team di agenti sono sperimentali e disabilitati per impostazione predefinita |

296| `CLAUDE_CODE_EXTRA_BODY` | Oggetto JSON di cui fare il merge nel livello superiore del corpo di ogni richiesta API. Utile per passare parametri specifici del provider che Claude Code non espone direttamente. Un valore esportato nella tua shell si applica anche alle [sessioni in background](https://code.claude.com/docs/it/agent-view.md) che avvii con `claude agents` o `--bg`. Prima della v2.1.206, le sessioni in background ignoravano un valore esportato dalla shell e usavano la copia ereditata dal processo supervisore in background |297| `CLAUDE_CODE_EXTRA_BODY` | Oggetto JSON di cui fare il merge nel livello superiore del corpo di ogni richiesta API. Utile per passare parametri specifici del provider che Claude Code non espone direttamente. Un valore esportato nella tua shell si applica anche alle [sessioni in background](https://code.claude.com/docs/it/agent-view.md) che avvii con `claude agents` o `--bg`. Prima della v2.1.206, le sessioni in background ignoravano un valore esportato dalla shell e usavano la copia ereditata dal processo supervisore in background |


368| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Imposta su `1` per riprendere automaticamente se la sessione precedente è terminata a metà turno. Usata in modalità SDK in modo che il modello continui senza che l'SDK debba inviare di nuovo il prompt. Per disattivarla, rimuovi la variabile o impostala su `0`. Per il pannello chat di VS Code, consulta [Continuare le conversazioni dopo un ricaricamento](https://code.claude.com/docs/it/vs-code.md#continue-conversations-after-a-reload) |369| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Imposta su `1` per riprendere automaticamente se la sessione precedente è terminata a metà turno. Usata in modalità SDK in modo che il modello continui senza che l'SDK debba inviare di nuovo il prompt. Per disattivarla, rimuovi la variabile o impostala su `0`. Per il pannello chat di VS Code, consulta [Continuare le conversazioni dopo un ricaricamento](https://code.claude.com/docs/it/vs-code.md#continue-conversations-after-a-reload) |

369| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Età massima in millisecondi dell'ultimo messaggio della trascrizione affinché una sessione terminata a metà turno continui automaticamente alla ripresa. Quando l'ultimo messaggio è più vecchio di questo limite, Claude Code salta la ripresa automatica di `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` e il relativo messaggio di continuazione `CLAUDE_CODE_RESUME_PROMPT`, e la sessione si avvia inattiva così che tu possa continuare esplicitamente. Se non impostata o impostata su `0`, non c'è alcun limite, tranne per il fatto che alcuni turni vengono ripresi solo entro sei ore dal loro ultimo messaggio, ad esempio uno terminato con un errore API. Un valore positivo limita ogni turno, compresi quelli; un valore negativo o non numerico applica un limite di un'ora. Gli script di avvio per agenti a lunga esecuzione possono impostarla in modo che un riavvio su una trascrizione vecchia non riesegua un prompt obsoleto. Claude Code imposta autonomamente un limite di un'ora quando riavvia una sessione di [agent view](https://code.claude.com/docs/it/agent-view.md) andata in crash che ha ereditato la conversazione da una sessione interattiva. Richiede Claude Code v2.1.211 o successiva |370| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Età massima in millisecondi dell'ultimo messaggio della trascrizione affinché una sessione terminata a metà turno continui automaticamente alla ripresa. Quando l'ultimo messaggio è più vecchio di questo limite, Claude Code salta la ripresa automatica di `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` e il relativo messaggio di continuazione `CLAUDE_CODE_RESUME_PROMPT`, e la sessione si avvia inattiva così che tu possa continuare esplicitamente. Se non impostata o impostata su `0`, non c'è alcun limite, tranne per il fatto che alcuni turni vengono ripresi solo entro sei ore dal loro ultimo messaggio, ad esempio uno terminato con un errore API. Un valore positivo limita ogni turno, compresi quelli; un valore negativo o non numerico applica un limite di un'ora. Gli script di avvio per agenti a lunga esecuzione possono impostarla in modo che un riavvio su una trascrizione vecchia non riesegua un prompt obsoleto. Claude Code imposta autonomamente un limite di un'ora quando riavvia una sessione di [agent view](https://code.claude.com/docs/it/agent-view.md) andata in crash che ha ereditato la conversazione da una sessione interattiva. Richiede Claude Code v2.1.211 o successiva |

370| `CLAUDE_CODE_RESUME_PROMPT` | Sovrascrive il messaggio di continuazione che Claude Code invia a Claude quando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continua un turno interrotto invece di inviare di nuovo il suo prompt, o quando riprendi una [chiamata a uno strumento differita](https://code.claude.com/docs/it/hooks.md#defer-a-tool-call-for-later) con `-p`. Il valore predefinito è `Continue from where you left off.`. Una stringa vuota usa il valore predefinito |371| `CLAUDE_CODE_RESUME_PROMPT` | Sovrascrive il messaggio di continuazione che Claude Code invia a Claude quando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continua un turno interrotto invece di inviare di nuovo il suo prompt, o quando riprendi una [chiamata a uno strumento differita](https://code.claude.com/docs/it/hooks.md#defer-a-tool-call-for-later) con `-p`. Il valore predefinito è `Continue from where you left off.`. Una stringa vuota usa il valore predefinito |

372| `CLAUDE_CODE_RESUME_SHOWS_CUT_OFF_CALLS` | Imposta a `1` per mantenere le [chiamate agli strumenti interrotte](https://code.claude.com/docs/it/sessions.md#what-a-resumed-session-restores), contrassegnate come troncate, in un turno che `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continua. Quando non è impostata, quelle chiamate vengono scartate prima che il turno continui. Alcune chiamate restano scartate, come le chiamate a subagent, skill, workflow e strumenti che attendono una persona. Per il pannello chat di VS Code, consulta [Continuare le conversazioni dopo un ricaricamento](https://code.claude.com/docs/it/vs-code.md#continue-conversations-after-a-reload). Richiede Claude Code v2.1.309 o successivo |

371| `CLAUDE_CODE_RETRY_WATCHDOG` | Imposta su `1` per sessioni non presidiate come harness di valutazione, job CI o worker remoti. Riprova indefinitamente in caso di errori di capacità `429` e `529` invece di fallire dopo `CLAUDE_CODE_MAX_RETRIES` tentativi. Claude Code fallisce subito quando una richiesta a velocità standard riceve un `429` che segnala un limite di spesa o crediti di utilizzo esauriti, anche se proviene da un [limite di spesa del gateway](https://code.claude.com/docs/it/errors.md#spend-limit-reached) che si reimposta secondo una pianificazione. Prima della v2.1.239, il watchdog riprovava indefinitamente anche in questi casi. Per le richieste in modalità veloce, consulta [Gestire i rate limit](https://code.claude.com/docs/it/fast-mode.md#handle-rate-limits). Il watchdog attende fino a 5 minuti tra un tentativo e l'altro, oppure fino al reset del limite quando la risposta riporta un orario di reset del rate limit, così che una sessione che raggiunge un limite di utilizzo attenda la fine della finestra rimanente. Nella v2.1.199 o successiva aumenta anche a 300 il numero predefinito di nuovi tentativi per altri errori transitori, come errori del server, timeout e connessioni interrotte, pari a circa tre ore di backoff, e rimuove il limite di 15 su `CLAUDE_CODE_MAX_RETRIES` se imposti esplicitamente quella variabile. Richiede Claude Code v2.1.186 o successiva |373| `CLAUDE_CODE_RETRY_WATCHDOG` | Imposta su `1` per sessioni non presidiate come harness di valutazione, job CI o worker remoti. Riprova indefinitamente in caso di errori di capacità `429` e `529` invece di fallire dopo `CLAUDE_CODE_MAX_RETRIES` tentativi. Claude Code fallisce subito quando una richiesta a velocità standard riceve un `429` che segnala un limite di spesa o crediti di utilizzo esauriti, anche se proviene da un [limite di spesa del gateway](https://code.claude.com/docs/it/errors.md#spend-limit-reached) che si reimposta secondo una pianificazione. Prima della v2.1.239, il watchdog riprovava indefinitamente anche in questi casi. Per le richieste in modalità veloce, consulta [Gestire i rate limit](https://code.claude.com/docs/it/fast-mode.md#handle-rate-limits). Il watchdog attende fino a 5 minuti tra un tentativo e l'altro, oppure fino al reset del limite quando la risposta riporta un orario di reset del rate limit, così che una sessione che raggiunge un limite di utilizzo attenda la fine della finestra rimanente. Nella v2.1.199 o successiva aumenta anche a 300 il numero predefinito di nuovi tentativi per altri errori transitori, come errori del server, timeout e connessioni interrotte, pari a circa tre ore di backoff, e rimuove il limite di 15 su `CLAUDE_CODE_MAX_RETRIES` se imposti esplicitamente quella variabile. Richiede Claude Code v2.1.186 o successiva |

372| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Tempo massimo in millisecondi che ogni richiesta API trascorre attendendo la fine degli errori `429` e `529` quando `CLAUDE_CODE_RETRY_WATCHDOG` è impostata. Una volta trascorso questo tempo, il successivo errore di questo tipo termina la richiesta. Indica un numero intero positivo in cifre semplici, come `1800000` per 30 minuti. Quando non è impostata, l'attesa non ha limiti. Richiede Claude Code v2.1.295 o successiva |374| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Tempo massimo in millisecondi che ogni richiesta API trascorre attendendo la fine degli errori `429` e `529` quando `CLAUDE_CODE_RETRY_WATCHDOG` è impostata. Una volta trascorso questo tempo, il successivo errore di questo tipo termina la richiesta. Indica un numero intero positivo in cifre semplici, come `1800000` per 30 minuti. Quando non è impostata, l'attesa non ha limiti. Richiede Claude Code v2.1.295 o successiva |

373| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Intervallo minimo in millisecondi tra le verifiche per stabilire se un [limite di utilizzo](https://code.claude.com/docs/it/errors.md#youve-hit-your-session-limit) è già stato revocato, mentre una richiesta attende l'azzeramento di quel limite con `CLAUDE_CODE_RETRY_WATCHDOG` impostata. Quando una verifica rileva che il limite è stato revocato, la richiesta viene inviata subito. Indica un numero intero in cifre semplici da `60000`, un minuto, a `10800000`, tre ore. Le verifiche vengono effettuate solo per il limite di sessione o settimanale di un abbonamento claude.ai mentre i crediti di utilizzo non sono in uso, e non mentre `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostata. Quando questa variabile non è impostata o il suo valore è fuori da tale intervallo, non viene effettuata alcuna verifica. Richiede Claude Code v2.1.305 o successiva |375| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Intervallo minimo in millisecondi tra le verifiche per stabilire se un [limite di utilizzo](https://code.claude.com/docs/it/errors.md#youve-hit-your-session-limit) è già stato revocato, mentre una richiesta attende l'azzeramento di quel limite con `CLAUDE_CODE_RETRY_WATCHDOG` impostata. Quando una verifica rileva che il limite è stato revocato, la richiesta viene inviata subito. Indica un numero intero in cifre semplici da `60000`, un minuto, a `10800000`, tre ore. Le verifiche vengono effettuate solo per il limite di sessione o settimanale di un abbonamento claude.ai mentre i crediti di utilizzo non sono in uso, e non mentre `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostata. Quando questa variabile non è impostata o il suo valore è fuori da tale intervallo, non viene effettuata alcuna verifica. Richiede Claude Code v2.1.305 o successiva |

errors.md +38 −11

Details

146| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Rete](#sessions-ended-while-this-machine-was-offline) |146| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Rete](#sessions-ended-while-this-machine-was-offline) |

147| `Couldn't share the transcript.` | [Rete](#couldnt-share-the-transcript) |147| `Couldn't share the transcript.` | [Rete](#couldnt-share-the-transcript) |

148| `Couldn't send feedback` | [Rete](#couldnt-send-feedback) |148| `Couldn't send feedback` | [Rete](#couldnt-send-feedback) |

149| `Feedback payload too large. Try again without the transcript, or shorten the details.` | [Rete](#feedback-payload-too-large) |

149| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Rete](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |150| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Rete](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |

150| `Prompt is too long` / `Input is too long for requested model` | [Errori di richiesta](#prompt-is-too-long) |151| `Prompt is too long` / `Input is too long for requested model` | [Errori di richiesta](#prompt-is-too-long) |

151| `Prompt is too long · automatic compaction failed:` | [Errori di richiesta](#prompt-is-too-long) |152| `Prompt is too long · automatic compaction failed:` | [Errori di richiesta](#prompt-is-too-long) |


335| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Errori degli strumenti](#failed-to-write-to-a-teammate-inbox) |336| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Errori degli strumenti](#failed-to-write-to-a-teammate-inbox) |

336| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Errori degli strumenti](#teammate-agent-definition-not-restored) |337| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Errori degli strumenti](#teammate-agent-definition-not-restored) |

337| `Only a teammate can approve a shutdown request` | [Errori degli strumenti](#only-a-teammate-can-approve-a-shutdown-request) |338| `Only a teammate can approve a shutdown request` | [Errori degli strumenti](#only-a-teammate-can-approve-a-shutdown-request) |

339| `A command-line deny rule cannot be handed to a teammate intact` | [Errori degli strumenti](#command-line-deny-rule-cannot-be-handed-to-a-teammate) |

338| `Message too large for cross-session delivery` | [Errori degli strumenti](#message-too-large-for-cross-session-delivery) |340| `Message too large for cross-session delivery` | [Errori degli strumenti](#message-too-large-for-cross-session-delivery) |

339| `Too many messages to this session just now` | [Errori degli strumenti](#too-many-messages-to-this-session-just-now) |341| `Too many messages to this session just now` | [Errori degli strumenti](#too-many-messages-to-this-session-just-now) |

340| `Cross-session message was dropped at the recipient session's inbox` | [Errori degli strumenti](#cross-session-message-dropped-at-the-inbox) |342| `Cross-session message was dropped at the recipient session's inbox` | [Errori degli strumenti](#cross-session-message-dropped-at-the-inbox) |


375| `This conversation is already open in another running Claude session` | [Errori della sessione in background](#this-session-is-running-in-another-terminal) |377| `This conversation is already open in another running Claude session` | [Errori della sessione in background](#this-session-is-running-in-another-terminal) |

376| `This session's saved conversation is no longer on disk` | [Errori della sessione in background](#this-sessions-saved-conversation-is-no-longer-on-disk) |378| `This session's saved conversation is no longer on disk` | [Errori della sessione in background](#this-sessions-saved-conversation-is-no-longer-on-disk) |

377| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignorato in una sessione in background](https://code.claude.com/docs/it/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |379| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignorato in una sessione in background](https://code.claude.com/docs/it/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |

378| `kept <id> — its worktree is still at <path>` | [Errori della sessione in background](#worktree-has-commits-that-are-not-pushed-anywhere) |380| `kept <id> — its worktree is still at <path>` | [Errori delle sessioni in background](#worktree-has-commits-that-are-not-pushed-anywhere) se la riga successiva del messaggio menziona commit non inviati, altrimenti [Cosa rimuove l'eliminazione di una sessione](https://code.claude.com/docs/it/agent-view.md#what-deleting-a-session-removes) |

379| `kept <id> — <n> unpushed commits on <branch>` | [Errori della sessione in background](#worktree-has-commits-that-are-not-pushed-anywhere) |381| `kept <id> — <n> unpushed commits on <branch>` | [Errori della sessione in background](#worktree-has-commits-that-are-not-pushed-anywhere) |

380| `kept <id> — worktree has commits that are not pushed anywhere` | [Errori della sessione in background](#worktree-has-commits-that-are-not-pushed-anywhere) |382| `kept <id> — worktree has commits that are not pushed anywhere` | [Errori della sessione in background](#worktree-has-commits-that-are-not-pushed-anywhere) |

381| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Errori della sessione in background](#terminal-host-process-died) |383| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Errori della sessione in background](#terminal-host-process-died) |


2188 2190 

2189### Couldn't send feedback2191### Couldn't send feedback

2190 2192 

2191Un messaggio che inizia con `Couldn't send feedback` significa che il rapporto che hai inviato dalla [finestra di dialogo `/feedback`, `/bug` o `/share`](https://code.claude.com/docs/it/commands#all-commands), o una [bozza di feedback](https://code.claude.com/docs/it/tools-reference.md#sendfeedback-tool-behavior) in coda, non è stato inviato. Quando dopo i due punti segue una frase sulla tua organizzazione, la tua organizzazione rifiuta il feedback e lo stesso rapporto riceverà la stessa risposta.2193Un messaggio che inizia con `Couldn't send feedback` significa che il servizio di feedback non ha confermato il rapporto che hai inviato dalla [finestra di dialogo `/feedback`, `/bug` o `/share`](https://code.claude.com/docs/it/commands#all-commands), o una [bozza di feedback](https://code.claude.com/docs/it/tools-reference.md#sendfeedback-tool-behavior) in coda. Consideralo come non ricevuto. Quando dopo i due punti segue una frase sulla tua organizzazione, la tua organizzazione rifiuta il feedback e lo stesso rapporto riceverà la stessa risposta.

2192 2194 

2193Il primo di questi due esempi è un errore di rete e il secondo è il rifiuto di un'organizzazione:2195Il secondo di questi due esempi è il rifiuto di un'organizzazione:

2194 2196 

2195```text wrap theme={null}2197```text wrap theme={null}

2196Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.2198Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.


2203* **Accesso non effettuato**: il messaggio continua con `: not signed in. Run /login, then retry.` Esegui `/login`, quindi invia di nuovo2205* **Accesso non effettuato**: il messaggio continua con `: not signed in. Run /login, then retry.` Esegui `/login`, quindi invia di nuovo

2204* **Rifiuto della tua organizzazione**: ad esempio `: Feedback has not been enabled for your organization.` o `: Feedback collection is not available for organizations with custom data retention policies.` Se il messaggio aggiunge `To report a bug, open an issue`, fallo su [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Una bozza in coda rimane in coda e puoi [scartarla](https://code.claude.com/docs/it/tools-reference.md#discard-or-keep-a-draft)2206* **Rifiuto della tua organizzazione**: ad esempio `: Feedback has not been enabled for your organization.` o `: Feedback collection is not available for organizations with custom data retention policies.` Se il messaggio aggiunge `To report a bug, open an issue`, fallo su [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Una bozza in coda rimane in coda e puoi [scartarla](https://code.claude.com/docs/it/tools-reference.md#discard-or-keep-a-draft)

2205* **Credenziali rifiutate**: il messaggio continua con `: the sign-in this session uses is not allowed to send feedback` o `: the server did not accept the credentials this session uses`. Esegui `/status` al prompt di Claude Code per vedere quale login, token o chiave API invia questa sessione2207* **Credenziali rifiutate**: il messaggio continua con `: the sign-in this session uses is not allowed to send feedback` o `: the server did not accept the credentials this session uses`. Esegui `/status` al prompt di Claude Code per vedere quale login, token o chiave API invia questa sessione

2206* **`(request timed out)` o `(couldn't reach the service)` subito dopo `Couldn't send feedback`**: si tratta di errori di rete. Invia di nuovo il rapporto o la bozza in coda. La finestra di dialogo mantiene il tuo testo e il messaggio di una bozza in coda indica `The draft is still queued.` Se anche altre richieste stanno fallendo, controlla la tua connessione di rete e vedi [Unable to connect to API](#unable-to-connect-to-api). Se continua a fallire, apri la segnalazione su [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2208* **`(request timed out)` o `(couldn't reach the service)` subito dopo `Couldn't send feedback`**: invia di nuovo il rapporto o la bozza in coda. La finestra di dialogo mantiene il tuo testo e il messaggio di una bozza in coda indica `The draft is still queued.` Se anche altre richieste stanno fallendo, controlla la tua connessione di rete e vedi [Unable to connect to API](#unable-to-connect-to-api). Se continua a fallire, apri la segnalazione su [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2207* **`(server returned <status>)`, o nessun motivo, subito dopo `Couldn't send feedback`**: lo stato è il codice di risposta del servizio. Il messaggio del servizio stesso lo segue quando ne è stato inviato uno, come in `(server returned 403: Access Forbidden)`. Se continua a fallire, apri la segnalazione su [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2209* **`(server returned <status>)`, o nessun motivo, subito dopo `Couldn't send feedback`**: lo stato è il codice di risposta del servizio. Il messaggio del servizio stesso lo segue quando ne è stato inviato uno, come in `(server returned 403: Access Forbidden)`. Se continua a fallire, apri la segnalazione su [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2208 2210 

2209Le segnalazioni su github.com/anthropics/claude-code sono pubbliche, quindi quando ne apri una escludi codice, trascrizioni e qualsiasi altra informazione riservata.2211Le segnalazioni su github.com/anthropics/claude-code sono pubbliche, quindi quando ne apri una escludi codice, trascrizioni e qualsiasi altra informazione riservata.

2210 2212 

2211Prima della v2.1.281, ogni invio falliva con questo messaggio una volta che un Remote Control **Stop** o un messaggio urgente tra sessioni era arrivato mentre la finestra di dialogo era aperta. Su quelle versioni, chiudi la finestra di dialogo, riaprila e invia di nuovo.2213Prima della v2.1.281, ogni invio falliva con questo messaggio una volta che un Remote Control **Stop** o un messaggio urgente tra sessioni era arrivato mentre la finestra di dialogo era aperta. Su quelle versioni, chiudi la finestra di dialogo, riaprila e invia di nuovo.

2212 2214 

2215### Feedback payload too large

2216 

2217Questo messaggio nella [schermata di revisione](https://code.claude.com/docs/it/tools-reference.md#review-and-edit-a-draft) di una [bozza di feedback](https://code.claude.com/docs/it/tools-reference.md#sendfeedback-tool-behavior) significa che Claude Code non ha alcuna conferma che il servizio abbia accettato la bozza. Consideralo come non ricevuto. La bozza rimane nella tua coda di `/feedback`, quindi puoi inviarla di nuovo.

2218 

2219```text wrap theme={null}

2220Feedback payload too large. Try again without the transcript, or shorten the details.

2221```

2222 

2223**Cosa fare:**

2224 

2225* Nella schermata di revisione, imposta **Send transcript** su `no`, quindi invia di nuovo la bozza. Accorciare i dettagli rimuove al massimo 10 KB di testo, che è tutto ciò che i dettagli di una bozza possono contenere.

2226 

2213### MCP server connection timed out during a sleep or clock change2227### MCP server connection timed out during a sleep or clock change

2214 2228 

2215Questo messaggio significa che una connessione a un [server MCP](https://code.claude.com/docs/it/mcp.md) è andata in timeout e Claude Code ha rilevato che l'orologio di sistema è andato avanti durante il tentativo:2229Questo messaggio significa che una connessione a un [server MCP](https://code.claude.com/docs/it/mcp.md) è andata in timeout e Claude Code ha rilevato che l'orologio di sistema è andato avanti durante il tentativo:


3281* **`Error: Workspace not trusted. <folder> is your home directory`**: poiché la fiducia per la tua directory home non viene mai salvata, eseguire prima `claude` lì non può aiutare. Esegui invece `claude ultrareview` da una directory di progetto, dopo aver eseguito lì `claude` una volta per accettare la finestra di dialogo di fiducia, oppure aggiungi `--trust-workspace`.3295* **`Error: Workspace not trusted. <folder> is your home directory`**: poiché la fiducia per la tua directory home non viene mai salvata, eseguire prima `claude` lì non può aiutare. Esegui invece `claude ultrareview` da una directory di progetto, dopo aver eseguito lì `claude` una volta per accettare la finestra di dialogo di fiducia, oppure aggiungi `--trust-workspace`.

3282* **`No answer in time.` seguito da `Error: Workspace not trusted`**: la domanda `Trust <folder>? [y/N]` è rimasta senza risposta per 5 minuti. Esegui di nuovo `claude ultrareview` e rispondi.3296* **`No answer in time.` seguito da `Error: Workspace not trusted`**: la domanda `Trust <folder>? [y/N]` è rimasta senza risposta per 5 minuti. Esegui di nuovo `claude ultrareview` e rispondi.

3283* **`Ultrareview did not start: <folder> is not trusted`**: hai rifiutato alla domanda `Trust <folder>? [y/N]`, ad esempio rispondendo `n` o premendo Invio. Per avviare la revisione, esegui di nuovo `claude ultrareview` e rispondi `y`.3297* **`Ultrareview did not start: <folder> is not trusted`**: hai rifiutato alla domanda `Trust <folder>? [y/N]`, ad esempio rispondendo `n` o premendo Invio. Per avviare la revisione, esegui di nuovo `claude ultrareview` e rispondi `y`.

3284* **``Ultrareview did not start: `--trust-workspace` takes no value``**: dopo `--trust-workspace` segue qualcosa che non è un flag, come un numero di PR o `false`. Se non ti fidi della cartella, ometti il flag. Per considerarla attendibile per questa esecuzione, metti il numero di PR o il branch di base prima del flag: `claude ultrareview 1234 --trust-workspace`.3298* **``Ultrareview did not start: `--trust-workspace` takes no value``**: dopo `--trust-workspace` segue qualcosa che non è un flag, come un numero di PR o `false`. Se non consideri attendibile la cartella, ometti il flag. Per considerarla attendibile per questa esecuzione, metti il numero di PR o il branch di base prima del flag: `claude ultrareview 1234 --trust-workspace`.

3285 3299 

3286Prima della v2.1.309, `claude ultrareview` non accettava `--trust-workspace`.3300Prima della v2.1.309, `claude ultrareview` non accettava `--trust-workspace`.

3287 3301 


3476 3490 

3477### Il server MCP ha rifiutato la capacità di elicitation3491### Il server MCP ha rifiutato la capacità di elicitation

3478 3492 

3479Un server MCP basato su Java MCP SDK dalla 0.11.0 alla 0.17.0 ha rifiutato la connessione. Queste versioni dell'SDK non riescono ad analizzare le [modalità di elicitation](https://code.claude.com/docs/it/mcp.md#elicitation-modes-claude-code-declares) `form` e `url` che Claude Code dichiara nel suo handshake. `claude mcp list` mostra il server come non riuscito con questo messaggio al posto dell'errore del server stesso:3493Un server MCP basato su Java MCP SDK dalla 0.11.0 alla 0.17.0 ha rifiutato la connessione. Queste versioni dell'SDK non riescono ad analizzare le [modalità di elicitation](https://code.claude.com/docs/it/mcp.md#elicitation-modes-claude-code-declares) `form` e `url` che Claude Code dichiara nel proprio handshake. Il messaggio è:

3480 3494 

3481```text theme={null}3495```text theme={null}

3482This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).3496This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).


3573 3587 

3574Stringhe simili vengono generate prima ancora che il comando venga eseguito:3588Stringhe simili vengono generate prima ancora che il comando venga eseguito:

3575 3589 

3576* `Shell command permission check failed for pattern "..."`: il controllo dei permessi del comando non lo ha consentito. [Controlli dei permessi sui comandi inseriti](https://code.claude.com/docs/it/skills.md#permission-checks-on-injected-commands) spiega quali risultati causano l'interruzione in ciascuna modalità di permesso e come pre-approvare un comando con `allowed-tools`3590* `Shell command permission check failed for pattern "..."`: il controllo dei permessi del comando non lo ha consentito. [Controlli dei permessi sui comandi iniettati](https://code.claude.com/docs/it/skills.md#permission-checks-on-injected-commands) spiega quali risultati causano l'interruzione in ciascuna modalità di permesso e come pre-approvare un comando con `allowed-tools`

3577* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: il frontmatter della skill richiede bash su una macchina che non lo ha. Installa Git for Windows o cambia il frontmatter in `shell: powershell`. Consulta [Come vengono eseguiti i comandi inseriti](https://code.claude.com/docs/it/skills.md#how-injected-commands-run)3591* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: il frontmatter della skill richiede bash su una macchina che non ce l'ha. Installa Git for Windows o modifica il frontmatter in `shell: powershell`. Consulta [Come vengono eseguiti i comandi iniettati](https://code.claude.com/docs/it/skills.md#how-injected-commands-run)

3578* `No shell command in <name> was run`: uno dei comandi `!` del file contiene un carattere di controllo grezzo diverso da tabulazione o a capo, quindi nessuno di essi viene eseguito. Consulta [come trovare e rimuovere il carattere](#no-shell-command-was-run)3592* `No shell command in <name> was run`: uno dei comandi `!` del file contiene un carattere di controllo grezzo diverso da tabulazione o a capo, quindi nessuno di essi viene eseguito. Consulta [come trovare e rimuovere il carattere](#no-shell-command-was-run)

3579 3593 

3580**Cosa fare:**3594**Cosa fare:**


3725 3739 

3726* **Non hai passato un branch di base**: Claude Code ha effettuato il confronto con il branch predefinito del repository e suggerisce di passare esplicitamente il tuo branch di base, come nell'esempio sopra3740* **Non hai passato un branch di base**: Claude Code ha effettuato il confronto con il branch predefinito del repository e suggerisce di passare esplicitamente il tuo branch di base, come nell'esempio sopra

3727* **Hai passato un branch di base che era già nel tuo clone**: il suggerimento riporta ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3741* **Hai passato un branch di base che era già nel tuo clone**: il suggerimento riporta ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3728* **Hai passato un branch di base che non era presente nel tuo clone**: Claude Code lo ha recuperato da origin prima del confronto. Il suggerimento è ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; quando Claude Code non riesce a stabilire se il tuo clone è shallow, suggerisce invece `git fetch --unshallow origin`. Prima della v2.1.221, il suggerimento proponeva `git fetch --unshallow origin` per ogni branch di base recuperato, e su un clone completo quel comando fallisce con `fatal: --unshallow on a complete repository does not make sense`.3742* **Hai passato un branch di base che non era nel tuo clone**: Claude Code l'ha recuperato da origin prima del confronto. Il suggerimento recita ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; quando Claude Code non riesce a determinare se il tuo clone è shallow, suggerisce invece `git fetch --unshallow origin`. Prima della v2.1.221, il suggerimento proponeva `git fetch --unshallow origin` per ogni branch di base recuperato, e su un clone completo quel comando fallisce con `fatal: --unshallow on a complete repository does not make sense`.

3729 3743 

3730**Cosa fare:**3744**Cosa fare:**

3731 3745 


4678* Se il compagno di squadra è ancora in esecuzione, chiedi al lead nel suo prompt di arrestare il compagno di squadra, ad esempio `Ask the researcher teammate to shut down`. Consulta [Arrestare i compagni di squadra](https://code.claude.com/docs/it/agent-teams.md#shut-down-teammates).4692* Se il compagno di squadra è ancora in esecuzione, chiedi al lead nel suo prompt di arrestare il compagno di squadra, ad esempio `Ask the researcher teammate to shut down`. Consulta [Arrestare i compagni di squadra](https://code.claude.com/docs/it/agent-teams.md#shut-down-teammates).

4679* Se un ex compagno di squadra che hai ripreso tu stesso con `claude --resume` ha ricevuto questo rifiuto, non è stato inviato nulla. Per terminare quella sessione, esegui `/exit` nel suo prompt.4693* Se un ex compagno di squadra che hai ripreso tu stesso con `claude --resume` ha ricevuto questo rifiuto, non è stato inviato nulla. Per terminare quella sessione, esegui `/exit` nel suo prompt.

4680 4694 

4695### A command-line deny rule cannot be handed to a teammate intact

4696 

4697Questo messaggio indica che Claude Code non ha avviato un compagno di squadra in [riquadro diviso](https://code.claude.com/docs/it/agent-teams.md#choose-a-display-mode) nel tuo [team di agenti](https://code.claude.com/docs/it/agent-teams.md). Claude Code passa le regole di negazione da riga di comando del lead a un compagno di squadra in riquadro diviso sulla riga di comando del compagno stesso, e si ferma quando il compagno di squadra ne interpreterebbe una in modo diverso:

4698 

4699```text wrap theme={null}

4700A command-line deny rule cannot be handed to a teammate intact, so the teammate would not enforce it — spawn aborted

4701```

4702 

4703**Cosa fare:**

4704 

4705* Esegui `/config` nella sessione del lead e imposta **Teammate mode** su `in-process`, poi chiedi a Claude di avviare di nuovo il compagno di squadra. Non devi trovare la regola né riavviare il lead. Un compagno di squadra in-process [viene eseguito con le regole di negazione attive del lead](https://code.claude.com/docs/it/agent-teams.md#permissions).

4706* Anche le sessioni successive che prendono [`teammateMode`](https://code.claude.com/docs/it/settings-reference#teammatemode) dalle tue impostazioni utente avviano i compagni di squadra in-process, perché `/config` salva lì la scelta. Per tornare ai riquadri divisi in una sessione successiva, imposta **Teammate mode** su `auto`, `tmux` o `iterm2`, a seconda di quello che usavi prima.

4707 

4681### Message too large for cross-session delivery4708### Message too large for cross-session delivery

4682 4709 

4683Il [messaggio tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md) di Claude verso un'altra delle tue sessioni su questa macchina era troppo lungo per essere inviato. Claude Code lo ha rifiutato, e la sessione ricevente non ha ricevuto nulla. Il rifiuto compare nel risultato dello strumento della sessione mittente, non come banner nel tuo terminale. Indica entrambe le dimensioni e come far rientrare il messaggio nel limite:4710Il [messaggio tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md) di Claude verso un'altra delle tue sessioni su questa macchina era troppo lungo per essere inviato. Claude Code lo ha rifiutato, e la sessione ricevente non ha ricevuto nulla. Il rifiuto compare nel risultato dello strumento della sessione mittente, non come banner nel tuo terminale. Indica entrambe le dimensioni e come far rientrare il messaggio nel limite:


5115**Cosa fare:**5142**Cosa fare:**

5116 5143 

5117* Per mantenere i commit, esegui il push del branch del worktree, o esegui il merge nel branch predefinito estratto nel tuo checkout principale, quindi elimina di nuovo la sessione5144* Per mantenere i commit, esegui il push del branch del worktree, o esegui il merge nel branch predefinito estratto nel tuo checkout principale, quindi elimina di nuovo la sessione

5118* Per scartare i commit, esegui il comando `claude rm <id> --discard-unpushed` che il messaggio ha stampato, o premi di nuovo `Ctrl+X` due volte sulla riga della sessione nella vista agente. Questo rimuove la sessione e il worktree insieme al suo branch, ai commit non inviati con push e a qualsiasi modifica non sottoposta a commit. Se il worktree ha ricevuto un commit dopo il rifiuto, Claude Code lo mantiene di nuovo e mostra lo stato aggiornato5145* Per scartare i commit, esegui il comando `claude rm <id> --discard-unpushed` che il messaggio ha stampato, o premi di nuovo `Ctrl+X` due volte sulla riga della sessione nella vista agente. Questo rimuove la sessione e il worktree insieme al suo branch, ai commit non inviati con push e a qualsiasi modifica non sottoposta a commit. Se l'eliminazione viene rifiutata di nuovo, segui il nuovo messaggio.

5119* Quando il messaggio dice che il worktree è anche registrato da un'altra sessione terminata, eliminare di nuovo non lo scarta: esegui il push dei commit, quindi elimina di nuovo la sessione5146* Quando il messaggio dice che il worktree è anche registrato da un'altra sessione terminata, eliminare di nuovo non lo scarta: esegui il push dei commit, quindi elimina di nuovo la sessione

5120 5147 

5121Prima della v2.1.268, `claude rm` metteva il riassunto dei commit sulla riga `kept` stessa. Quando `claude rm` non poteva riassumere i commit, la riga `kept` riportava `worktree has commits that are not pushed anywhere` al posto del riassunto.5148Prima della v2.1.268, `claude rm` metteva il riassunto dei commit sulla riga `kept` stessa. Quando `claude rm` non poteva riassumere i commit, la riga `kept` riportava `worktree has commits that are not pushed anywhere` al posto del riassunto.

5122 5149 

5123Prima della v2.1.260, il messaggio non nominava il branch o i commit, ed eliminare di nuovo era rifiutato allo stesso modo: eliminare la sessione senza eseguire il push significava rimuovere il worktree tu stesso con `git worktree remove --force <path>`, quindi eseguire di nuovo `claude rm <id>`.5150Prima della v2.1.260, il messaggio non nominava il branch o i commit, e non esisteva un modo per scartarli. Puoi comunque eliminare la sessione, perdendo le modifiche non sottoposte a commit ma mantenendo il branch e i commit. Esegui `git worktree remove --force --force <path>` con il percorso stampato dal rifiuto, quindi `claude rm <id>`. Git richiede `--force` due volte per un worktree bloccato.

5124 5151 

5125Prima della v2.1.248, il branch predefinito estratto nel tuo checkout principale non contava: un branch di cui avevi già eseguito il merge lì attivava ancora questo rifiuto fino a quando i suoi commit non raggiungevano un remote.5152Prima della v2.1.248, il branch predefinito estratto nel tuo checkout principale non contava: un branch di cui avevi già eseguito il merge lì attivava ancora questo rifiuto fino a quando i suoi commit non raggiungevano un remote.

5126 5153 

fast-mode.md +1 −1

Details

45* Un piccolo icona `↯` appare accanto al prompt mentre la modalità veloce è attiva45* Un piccolo icona `↯` appare accanto al prompt mentre la modalità veloce è attiva

46* Esegui `/fast` di nuovo in qualsiasi momento per verificare se la modalità veloce è attiva o disattiva46* Esegui `/fast` di nuovo in qualsiasi momento per verificare se la modalità veloce è attiva o disattiva

47 47 

48Opus 5.5 è il valore predefinito della modalità veloce in Claude Code v2.1.280 e successivo. Prima di v2.1.280, la modalità veloce predefinita era Opus 5 da v2.1.219, e Opus 4.8 su v2.1.154 fino a v2.1.218.48Opus 5.5 è il valore predefinito della modalità veloce in Claude Code v2.1.280 e successivo. Prima di v2.1.280, la modalità veloce predefinita era Opus 5 da v2.1.219.

49 49 

50Quando disabiliti la modalità veloce con `/fast` di nuovo, rimani su Opus. Per passare a un modello diverso, usa `/model`.50Quando disabiliti la modalità veloce con `/fast` di nuovo, rimani su Opus. Per passare a un modello diverso, usa `/model`.

51 51 

glossary.md +1 −1

Details

373 373 

374Come una sessione sa che il lavoro è effettivamente completato invece di accettare un risultato che sembra plausibile. Dai a Claude un controllo che può eseguire, come una suite di test, una build o un confronto di screenshot, e Claude itera fino a quando il controllo non passa invece di fermarsi dopo un tentativo. Un ciclo di verifica è il prerequisito per [`/goal`](https://code.claude.com/docs/it/goal), esecuzioni incustodite e [dynamic workflows](https://code.claude.com/docs/it/workflows.md): senza uno, l'unica cosa che decide che l'agente ha finito è l'agente stesso.374Come una sessione sa che il lavoro è effettivamente completato invece di accettare un risultato che sembra plausibile. Dai a Claude un controllo che può eseguire, come una suite di test, una build o un confronto di screenshot, e Claude itera fino a quando il controllo non passa invece di fermarsi dopo un tentativo. Un ciclo di verifica è il prerequisito per [`/goal`](https://code.claude.com/docs/it/goal), esecuzioni incustodite e [dynamic workflows](https://code.claude.com/docs/it/workflows.md): senza uno, l'unica cosa che decide che l'agente ha finito è l'agente stesso.

375 375 

376Scopri di più: [Give Claude a way to verify its work](https://code.claude.com/docs/it/best-practices.md#give-claude-a-way-to-verify-its-work)376Scopri di più: [Dai a Claude un controllo da eseguire](https://code.claude.com/docs/it/best-practices.md#give-claude-a-check-to-run)

377 377 

378## W378## W

379 379 

Details

166| Modello primario | `claude-opus-5-5` |166| Modello primario | `claude-opus-5-5` |

167| Modello piccolo/veloce | `claude-sonnet-4-5@20250929` |167| Modello piccolo/veloce | `claude-sonnet-4-5@20250929` |

168 168 

169Prima della v2.1.280, il modello primario su Google Cloud's Agent Platform era predefinito a Opus 5 e l'alias `opus` si risolveva in Opus 5 da v2.1.219.

170 

169Le attività in background come la generazione del titolo della sessione utilizzano il modello piccolo/veloce, normalmente un modello della classe Haiku. Su Google Cloud's Agent Platform, Claude Code utilizza il modello Sonnet predefinito per le attività in background perché Haiku potrebbe non essere abilitato in ogni progetto o regione. Due selezioni cambiano quale modello le esegue:171Le attività in background come la generazione del titolo della sessione utilizzano il modello piccolo/veloce, normalmente un modello della classe Haiku. Su Google Cloud's Agent Platform, Claude Code utilizza il modello Sonnet predefinito per le attività in background perché Haiku potrebbe non essere abilitato in ogni progetto o regione. Due selezioni cambiano quale modello le esegue:

170 172 

171* Quando selezioni un modello primario con `--model`, `ANTHROPIC_MODEL`, o l'impostazione `model`, le attività in background utilizzano quel modello. Quando Claude Code avvia la sessione sul modello che hai impostato con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/it/model-config#set-a-default-model-for-new-sessions), le attività in background utilizzano quel modello anche. L'impostazione di `ANTHROPIC_DEFAULT_OPUS_MODEL` senza `ANTHROPIC_DEFAULT_SONNET_MODEL` conta anche come una selezione, perché il modello Sonnet integrato potrebbe non essere abilitato in un progetto che indirizza il suo Opus.173* Quando selezioni un modello primario con `--model`, `ANTHROPIC_MODEL`, o l'impostazione `model`, le attività in background utilizzano quel modello. Quando Claude Code avvia la sessione sul modello che hai impostato con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/it/model-config#set-a-default-model-for-new-sessions), le attività in background utilizzano quel modello anche. L'impostazione di `ANTHROPIC_DEFAULT_OPUS_MODEL` senza `ANTHROPIC_DEFAULT_SONNET_MODEL` conta anche come una selezione, perché il modello Sonnet integrato potrebbe non essere abilitato in un progetto che indirizza il suo Opus.


175>177>

176> I modelli Opus hanno un prezzo per token più elevato rispetto ai modelli Sonnet, quindi se non fissi un modello primario, ti viene fatturata la tariffa Opus. Per utilizzare Sonnet 4.5 come modello primario, imposta `ANTHROPIC_MODEL` al suo ID modello completo. Una distribuzione che indirizza il valore predefinito con `ANTHROPIC_DEFAULT_SONNET_MODEL` e non imposta `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene il suo modello Sonnet indirizzato come predefinito.178> I modelli Opus hanno un prezzo per token più elevato rispetto ai modelli Sonnet, quindi se non fissi un modello primario, ti viene fatturata la tariffa Opus. Per utilizzare Sonnet 4.5 come modello primario, imposta `ANTHROPIC_MODEL` al suo ID modello completo. Una distribuzione che indirizza il valore predefinito con `ANTHROPIC_DEFAULT_SONNET_MODEL` e non imposta `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene il suo modello Sonnet indirizzato come predefinito.

177 179 

178Prima della v2.1.280, il modello primario su Google Cloud's Agent Platform era predefinito a Opus 5 e l'alias `opus` si risolveva in Opus 5 da v2.1.219. Su v2.1.207 attraverso v2.1.218, il modello primario su Google Cloud's Agent Platform era predefinito a Opus 4.8 e l'alias `opus` si risolveva in Opus 4.8.

179 

180Per personalizzare ulteriormente i modelli:180Per personalizzare ulteriormente i modelli:

181 181 

182```bash theme={null}182```bash theme={null}

headless.md +4 −3

Details

236 236 

237Se alcuni di questi messaggi mancano dal tuo flusso, verifica la tua versione di Claude Code rispetto a questi requisiti minimi:237Se alcuni di questi messaggi mancano dal tuo flusso, verifica la tua versione di Claude Code rispetto a questi requisiti minimi:

238 238 

239* **Inoltro a ogni profondità di annidamento**: v2.1.219 o successivo

240* **Una skill biforcata che Claude avvia con lo strumento Skill dalla conversazione principale**: v2.1.86 o successivo per i suoi blocchi `tool_use` e `tool_result`, e v2.1.265 o successivo per il suo primo messaggio `user` e i suoi blocchi di testo e di ragionamento239* **Una skill biforcata che Claude avvia con lo strumento Skill dalla conversazione principale**: v2.1.86 o successivo per i suoi blocchi `tool_use` e `tool_result`, e v2.1.265 o successivo per il suo primo messaggio `user` e i suoi blocchi di testo e di ragionamento

241* **Messaggi dei subagent generati da una skill biforcata, e delle skill biforcate avviate all'interno di un subagent o di un'altra skill biforcata**: v2.1.275 o successivo240* **Messaggi dei subagent generati da una skill biforcata, e delle skill biforcate avviate all'interno di un subagent o di un'altra skill biforcata**: v2.1.275 o successivo

242* **Messaggi di una skill biforcata che avvii passando `/<skill-name>` come prompt**: v2.1.287 o successivo241* **Messaggi di una skill biforcata che avvii passando `/<skill-name>` come prompt**: v2.1.287 o successivo


285| Campo | Tipo | Descrizione |284| Campo | Tipo | Descrizione |

286| - | - | - |285| - | - | - |

287| `mcp_servers` | array | server MCP nella sessione, ognuno con `name` e `status` |286| `mcp_servers` | array | server MCP nella sessione, ognuno con `name` e `status` |

288| `mcp_server_errors` | array | voci `--mcp-config` saltate dalla convalida della configurazione, ognuna con `name`, `type` e `message`. `type` è una categoria di salto come `unknown_type`, `url_missing_type`, `invalid_config` o `reserved_name`; tratta i valori che non riconosci come un salto generico. I server interessati sono assenti da `mcp_servers`. La chiave viene omessa quando non ci sono errori, quindi un gate CI può fallire su un array non vuoto. Richiede Claude Code v2.1.219 o successivo |287| `mcp_server_errors` | array | voci `--mcp-config` saltate dalla convalida della configurazione, ognuna con `name`, `type` e `message`. `type` è una categoria di salto come `unknown_type`, `url_missing_type`, `invalid_config` o `reserved_name`; tratta i valori che non riconosci come un salto generico. I server interessati sono assenti da `mcp_servers`. La chiave viene omessa quando non ci sono errori, quindi un gate CI può fallire su un array non vuoto |

289 288 

290Quando esegui il comando a mano in un terminale, Claude Code stampa anche un avviso di avvio su stderr, come `Warning: 1 MCP server skipped due to invalid config:`, seguito dal motivo di ogni voce saltata. Quando reindirizzi stderr, o quando un programma come un runner CI o un host SDK lo cattura, Claude Code non stampa alcun avviso e segnala le voci saltate solo nel campo `mcp_server_errors`. L'avviso richiede Claude Code v2.1.219 o successivo.289Quando esegui il comando a mano in un terminale, Claude Code stampa anche un avviso di avvio su stderr, come `Warning: 1 MCP server skipped due to invalid config:`, seguito dal motivo di ogni voce saltata.

290 

291Quando reindirizzi stderr, o quando un programma come un runner CI o un host SDK lo cattura, Claude Code non stampa alcun avviso. Segnala le voci saltate solo nel campo `mcp_server_errors`.

291 292 

292#### Tracciare le installazioni dei plugin293#### Tracciare le installazioni dei plugin

293 294 

hooks.md +5 −9

Details

679 679 

680Gli hook del frontmatter in uno skill del progetto seguono la stessa [regola di fiducia dell'area di lavoro degli hook nei file di impostazioni](#workspace-trust). Claude Code li registra quando tu o Claude invocate lo skill, incluso in un'esecuzione `-p` in una cartella che non hai ancora fidata.680Gli hook del frontmatter in uno skill del progetto seguono la stessa [regola di fiducia dell'area di lavoro degli hook nei file di impostazioni](#workspace-trust). Claude Code li registra quando tu o Claude invocate lo skill, incluso in un'esecuzione `-p` in una cartella che non hai ancora fidata.

681 681 

682Gli hook del frontmatter in un subagent del progetto vengono eseguiti solo dopo che accetti la [finestra di dialogo di fiducia dell'area di lavoro](https://code.claude.com/docs/it/permissions.md#project-allow-rules-and-workspace-trust) per la cartella da cui proviene il file dell'agente. Una sessione `-p` non conta come accettazione. [Cosa viene eseguito prima di fidarti di una cartella](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) confronta questo con la regola del file di impostazioni, e la pagina dei subagenti elenca [quali ambiti sono esenti](https://code.claude.com/docs/it/sub-agents.md#hooks-in-subagent-frontmatter). Prima di v2.1.218, questi hook potevano essere eseguiti da cartelle che non avevi fidata.682Gli hook del frontmatter in un subagent del progetto vengono eseguiti solo dopo che accetti la [finestra di dialogo di fiducia del workspace](https://code.claude.com/docs/it/permissions.md#project-allow-rules-and-workspace-trust) per la cartella da cui proviene il file dell'agente. Una sessione `-p` non conta come accettazione. [Cosa viene eseguito prima di fidarti di una cartella](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) confronta questo con la regola del file di impostazioni, e la pagina dei subagent elenca [quali ambiti sono esenti](https://code.claude.com/docs/it/sub-agents.md#hooks-in-subagent-frontmatter).

683 683 

684#### Limiti sugli hook delle skill684#### Limiti sugli hook delle skill

685 685 


3196* **Hook di tipo command** (`type: "command"`): stampa il percorso come ultima riga non vuota di stdout. Claude Code rimuove i codici di escape ANSI prima di leggere quella riga, quindi i banner di avvio della shell stampati prima del tuo `echo` vengono ignorati. Reindirizza qualsiasi altro output dell'hook su stderr.3196* **Hook di tipo command** (`type: "command"`): stampa il percorso come ultima riga non vuota di stdout. Claude Code rimuove i codici di escape ANSI prima di leggere quella riga, quindi i banner di avvio della shell stampati prima del tuo `echo` vengono ignorati. Reindirizza qualsiasi altro output dell'hook su stderr.

3197* **Hook HTTP** (`type: "http"`): restituisci `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` nel corpo della risposta.3197* **Hook HTTP** (`type: "http"`): restituisci `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` nel corpo della risposta.

3198 3198 

3199Se l'hook fallisce o non produce alcun percorso, la creazione del worktree fallisce con un errore.3199Se l'hook fallisce o non produce alcun percorso, la creazione del worktree fallisce con un errore. Claude Code risolve un percorso relativo rispetto alla directory in cui è stato eseguito l'hook, riducendo eventuali segmenti `.` o `..` al suo interno. Se il percorso risultante non è una directory in cui Claude Code può entrare, la sessione stampa un errore che indica il percorso e termina con codice 1.

3200 3200 

3201Claude Code risolve un percorso relativo rispetto alla directory in cui è stato eseguito l'hook, comprimendo eventuali segmenti `.` o `..` al suo interno. Se il percorso risultante non è una directory in cui Claude Code può entrare, la sessione stampa un errore che indica il percorso ed esce con codice 1.3201Claude Code rifiuta un percorso assoluto che contiene segmenti `.` o `..`, e qualsiasi percorso che attraversa un collegamento simbolico sotto la radice del repository. L'errore indica il componente rifiutato. Un collegamento simbolico incluso in un commit del repository potrebbe reindirizzare il worktree al di fuori di esso. Restituisci un percorso normalizzato che non attraversi un collegamento simbolico all'interno del repository.

3202 

3203Claude Code rifiuta un percorso assoluto che contiene segmenti `.` o `..`, e qualsiasi percorso che passa attraverso un collegamento simbolico sotto la radice del repository, perché un collegamento simbolico di cui è stato fatto il commit nel repository potrebbe reindirizzare il worktree al di fuori di esso. L'errore indica il componente rifiutato. Restituisci un percorso normalizzato che non passi attraverso un collegamento simbolico all'interno del repository. Prima della v2.1.216, la creazione del worktree seguiva il percorso dell'hook senza questo controllo.

3204 3202 

3205### WorktreeRemove3203### WorktreeRemove

3206 3204 


3228* **L'hook esce con 0**: il worktree è considerato rimosso. Claude Code non legge nient'altro dall'hook, quindi assicurati che il tuo hook abbia eliminato la directory.3226* **L'hook esce con 0**: il worktree è considerato rimosso. Claude Code non legge nient'altro dall'hook, quindi assicurati che il tuo hook abbia eliminato la directory.

3229* **L'hook esce con un codice diverso da zero**: la rimozione fallisce se la directory in `worktree_path` esiste ancora dopo l'esecuzione, e il worktree rimane sul disco senza alcun fallback su git. Un hook che ha eliminato la directory prima di uscire con un codice diverso da zero è considerato come rimosso. Per sapere come viene segnalato l'errore, consulta [Input di WorktreeRemove](#worktreeremove-input).3227* **L'hook esce con un codice diverso da zero**: la rimozione fallisce se la directory in `worktree_path` esiste ancora dopo l'esecuzione, e il worktree rimane sul disco senza alcun fallback su git. Un hook che ha eliminato la directory prima di uscire con un codice diverso da zero è considerato come rimosso. Per sapere come viene segnalato l'errore, consulta [Input di WorktreeRemove](#worktreeremove-input).

3230 3228 

3231Claude Code non elimina mai un branch appartenente a un worktree creato da un hook, perché conosce solo il percorso restituito dal tuo hook WorktreeCreate. Se il tuo hook WorktreeCreate crea un branch, eliminalo nel tuo hook WorktreeRemove.3229Claude Code non elimina mai un branch appartenente a un worktree creato da un hook, perché conosce solo il percorso restituito dal tuo hook WorktreeCreate. Se il tuo hook WorktreeCreate crea un branch, eliminalo nel tuo hook WorktreeRemove. Claude Code scarta i [campi di output JSON](#json-output) di un hook WorktreeRemove, come `systemMessage` e `continue`.

3232 

3233Claude Code scarta i [campi di output JSON](#json-output) di un hook WorktreeRemove, come `systemMessage` e `continue`.

3234 3230 

3235Per l'eliminazione di una sessione in background, Claude Code verifica il percorso del worktree memorizzato prima di eseguire l'hook e rifiuta un percorso che è un collegamento simbolico o che passa attraverso uno di essi sotto la radice del repository. In quel caso, l'hook viene eseguito per un worktree che contiene ancora file solo quando confermi l'eliminazione nella [vista agenti](https://code.claude.com/docs/it/agent-view.md#what-deleting-a-session-removes); per un worktree di questo tipo, [`claude rm`](https://code.claude.com/docs/it/agent-view#manage-sessions-from-the-shell) mantiene invece la sessione e il worktree. Prima della v2.1.216, l'hook veniva eseguito sul percorso memorizzato senza questi controlli.3231Per l'eliminazione di una sessione in background, Claude Code verifica il percorso del worktree memorizzato prima di eseguire l'hook, rifiutando un percorso che è un collegamento simbolico o che ne attraversa uno sotto la radice del repository. In quel caso, l'hook viene eseguito per un worktree che contiene ancora file solo quando confermi l'eliminazione nella [vista agenti](https://code.claude.com/docs/it/agent-view.md#what-deleting-a-session-removes). Per un worktree di questo tipo, [`claude rm`](https://code.claude.com/docs/it/agent-view#manage-sessions-from-the-shell) mantiene invece la sessione e il worktree.

3236 3232 

3237Claude Code passa il percorso restituito da WorktreeCreate come `worktree_path` nell'input dell'hook. Questo esempio legge quel percorso e rimuove la directory:3233Claude Code passa il percorso restituito da WorktreeCreate come `worktree_path` nell'input dell'hook. Questo esempio legge quel percorso e rimuove la directory:

3238 3234 

Details

174 174 

175## Lavora efficacemente con Claude Code175## Lavora efficacemente con Claude Code

176 176 

177Questi suggerimenti ti aiutano a ottenere risultati migliori da Claude Code. Per ulteriori informazioni su prompt specifici, verifica e pianificazione, vedi [Best practices](https://code.claude.com/docs/it/best-practices.md).177Questi suggerimenti ti aiutano a ottenere risultati migliori da Claude Code. Per ulteriori informazioni su prompt specifici, verifica e le regole che conviene imporre anziché richiedere tramite prompt, vedi [Best practice](https://code.claude.com/docs/it/best-practices.md).

178 178 

179### Chiedi aiuto a Claude Code179### Chiedi aiuto a Claude Code

180 180 

Details

92| `/` all'inizio | Comando o skill | Vedi [comandi](#commands) e [skills](https://code.claude.com/docs/it/skills.md) |92| `/` all'inizio | Comando o skill | Vedi [comandi](#commands) e [skills](https://code.claude.com/docs/it/skills.md) |

93| `!` all'inizio | Modalità shell | Esegui un comando direttamente, aggiungi il suo output alla sessione e fai rispondere Claude |93| `!` all'inizio | Modalità shell | Esegui un comando direttamente, aggiungi il suo output alla sessione e fai rispondere Claude |

94| `@` | Menzione del percorso del file | Attiva il completamento automatico del percorso del file. Nelle sessioni con [messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md#message-another-session), quando digiti almeno una lettera dopo `@`, Claude Code suggerisce anche le tue altre sessioni live su questa macchina, in modo da poter dire a Claude di messaggiare quella che scegli. Richiede Claude Code v2.1.232 o versione successiva |94| `@` | Menzione del percorso del file | Attiva il completamento automatico del percorso del file. Nelle sessioni con [messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md#message-another-session), quando digiti almeno una lettera dopo `@`, Claude Code suggerisce anche le tue altre sessioni live su questa macchina, in modo da poter dire a Claude di messaggiare quella che scegli. Richiede Claude Code v2.1.232 o versione successiva |

95| `:` | Codice shortcode emoji | Digita un `:name:` completo per inserire l'emoji, o due o più caratteri per i suggerimenti. Vedi [Codici shortcode emoji](#emoji-shortcodes). Richiede Claude Code v2.1.217 o versione successiva |95| `:` | Codice shortcode emoji | Digita un `:name:` completo per inserire l'emoji, o due o più caratteri per i suggerimenti. Vedi [Codici shortcode emoji](#emoji-shortcodes) |

96| `?` su input vuoto | Attiva/disattiva il pannello di aiuto delle scorciatoie | Digitare `?` quando l'input contiene già testo inserisce il carattere |96| `?` su input vuoto | Attiva/disattiva il pannello di aiuto delle scorciatoie | Digitare `?` quando l'input contiene già testo inserisce il carattere |

97 97 

98### Visualizzatore della trascrizione98### Visualizzatore della trascrizione


197 197 

198> [!NOTE]198> [!NOTE]

199>199>

200> In modalità NORMAL vim, se il cursore è all'inizio o alla fine dell'input e non può muoversi ulteriormente, `j`/`k` e `↑`/`↓` navigano la cronologia dei comandi. `←` su un prompt vuoto apre la [visualizzazione agente](https://code.claude.com/docs/it/agent-view.md) sia dalla modalità NORMAL che INSERT; prima di v2.1.219, `←` su un prompt vuoto non faceva nulla in modalità NORMAL.200> In modalità NORMAL vim, se il cursore è all'inizio o alla fine dell'input e non può muoversi ulteriormente, `j`/`k` e `↑`/`↓` navigano invece la cronologia dei comandi. `←` su un prompt vuoto apre la [visualizzazione agente](https://code.claude.com/docs/it/agent-view.md) sia dalla modalità NORMAL che INSERT.

201 201 

202### Modifica (modalità NORMAL)202### Modifica (modalità NORMAL)

203 203 


396Claude Code esegue alcuni comandi non appena li invii invece di accodarli, tra cui `/model`, `/effort` e `/fast`. Ognuno dei tre cambia un'impostazione: il modello, il livello di sforzo o la modalità veloce. Il fatto che Claude Code applichi la nuova impostazione al turno su cui Claude sta già lavorando, o solo dal tuo turno successivo, varia a seconda del comando:396Claude Code esegue alcuni comandi non appena li invii invece di accodarli, tra cui `/model`, `/effort` e `/fast`. Ognuno dei tre cambia un'impostazione: il modello, il livello di sforzo o la modalità veloce. Il fatto che Claude Code applichi la nuova impostazione al turno su cui Claude sta già lavorando, o solo dal tuo turno successivo, varia a seconda del comando:

397 397 

398* [`/model`](https://code.claude.com/docs/it/model-config#setting-your-model): una volta confermato l'[avviso sulla cache](https://code.claude.com/docs/it/prompt-caching.md#switching-models), se Claude Code ne mostra uno, Claude Code applica la tua modifica alla prossima richiesta che effettua in quel turno398* [`/model`](https://code.claude.com/docs/it/model-config#setting-your-model): una volta confermato l'[avviso sulla cache](https://code.claude.com/docs/it/prompt-caching.md#switching-models), se Claude Code ne mostra uno, Claude Code applica la tua modifica alla prossima richiesta che effettua in quel turno

399* [`/effort`](https://code.claude.com/docs/it/model-config#adjust-effort-level): una volta confermato l'[avviso sulla cache](https://code.claude.com/docs/it/prompt-caching.md#changing-effort-level), se Claude Code ne mostra uno, Claude Code applica la tua modifica alla prossima richiesta che effettua in quel turno399* `/effort`: il prossimo messaggio che invii viene eseguito al nuovo livello. Per [avviarlo nel turno su cui Claude sta già lavorando](https://code.claude.com/docs/it/model-config.md#when-a-new-effort-level-starts), accoda un messaggio mentre Claude sta eseguendo chiamate agli strumenti

400* [`/fast`](https://code.claude.com/docs/it/fast-mode#toggle-fast-mode): Claude Code mantiene l'impostazione della modalità veloce che era attiva quando il turno è iniziato, quindi la tua modifica della velocità si applica dal tuo turno successivo. Se il tuo modello attuale non supporta la modalità veloce, attivarla [cambia anche il tuo modello](https://code.claude.com/docs/it/prompt-caching.md#turning-on-fast-mode), e Claude Code utilizza il nuovo modello dalla sua prossima richiesta in quel turno400* [`/fast`](https://code.claude.com/docs/it/fast-mode#toggle-fast-mode): Claude Code mantiene l'impostazione della modalità veloce che era attiva quando il turno è iniziato, quindi la tua modifica della velocità si applica dal tuo turno successivo. Se il tuo modello attuale non supporta la modalità veloce, attivarla [cambia anche il tuo modello](https://code.claude.com/docs/it/prompt-caching.md#turning-on-fast-mode), e Claude Code utilizza il nuovo modello dalla sua prossima richiesta in quel turno

401 401 

402### Portare in background una sessione con messaggi in coda402### Portare in background una sessione con messaggi in coda


513 513 

514## Scorciatoie emoji514## Scorciatoie emoji

515 515 

516Digita un `:` seguito da una scorciatoia emoji nell'input del prompt per inserire l'emoji. Richiede Claude Code v2.1.217 o versione successiva.516Digita un `:` seguito da una scorciatoia emoji nell'input del prompt per inserire l'emoji.

517 517 

518* Digita una scorciatoia completa come `:heart:` e Claude Code la sostituisce con ❤️ non appena digiti i due punti di chiusura `:`518* Digita una scorciatoia completa come `:heart:` e Claude Code la sostituisce con ❤️ non appena digiti i due punti di chiusura `:`

519* Digita `:` più almeno due caratteri di un nome, come `:hea`, per aprire un popup di suggerimento, quindi premi `Tab` o `Enter` per inserire l'emoji evidenziato519* Digita `:` più almeno due caratteri di un nome, come `:hea`, per aprire un popup di suggerimento, quindi premi `Tab` o `Enter` per inserire l'emoji evidenziato

Details

31 31 

32> [!TIP]32> [!TIP]

33>33>

34> Per tecniche di flusso di lavoro che mantengono il contesto piccolo in qualsiasi repository, come [eseguire l'esplorazione in un subagent](https://code.claude.com/docs/it/best-practices.md#use-subagents-for-investigation) in modo che le letture di file rimangono fuori dalla conversazione principale, vedi [Best practices per Claude Code](https://code.claude.com/docs/it/best-practices.md). Per distribuire una configurazione di base a ogni sviluppatore nella tua organizzazione, vedi [Configurare Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md).34> Per tecniche di workflow che mantengono il contesto piccolo in qualsiasi repository, vedi [Best practice per Claude Code](https://code.claude.com/docs/it/best-practices.md). Un esempio è [eseguire l'esplorazione in un subagent](https://code.claude.com/docs/it/best-practices.md#know-what-subagents-cost) in modo che le letture di file rimangano fuori dalla conversazione principale. Per distribuire una configurazione di base a ogni sviluppatore nella tua organizzazione, vedi [Configurare Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md).

35 35 

36### The example monorepo36### The example monorepo

37 37 


158Le regole di negazione possono coprire tutti coloro che lavorano nel repository, solo voi, o ogni sessione sulla macchina, a seconda di quale file di impostazioni vi inserite:158Le regole di negazione possono coprire tutti coloro che lavorano nel repository, solo voi, o ogni sessione sulla macchina, a seconda di quale file di impostazioni vi inserite:

159 159 

160* **Tutti coloro che lavorano nel repository**: impegnate le regole a `.claude/settings.json`, alla radice del repository se avviate Claude lì, o in ogni `.claude/` del pacchetto se avviate da sottodirectory. Come altre impostazioni di progetto su questa pagina, quel file non viene ereditato dalle directory padre.160* **Tutti coloro che lavorano nel repository**: impegnate le regole a `.claude/settings.json`, alla radice del repository se avviate Claude lì, o in ogni `.claude/` del pacchetto se avviate da sottodirectory. Come altre impostazioni di progetto su questa pagina, quel file non viene ereditato dalle directory padre.

161* **Solo voi**: usate `.claude/settings.local.json` alla radice del repository, che si carica in ogni sessione CLI all'interno del repository indipendentemente dalla directory di avvio, tranne nei casi in cui Claude Code [non utilizza la radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file), come su Windows. I modelli relativi come l'esempio `Read(./**/vendor/**/*)` ancora [si ancorano alla directory di lavoro corrente della sessione](https://code.claude.com/docs/it/permissions.md#read-and-edit) piuttosto che alla radice del repository, quindi se avviate sessioni da sottodirectory, scrivete le regole in questo file come percorsi assoluti `//`, come `Read(//absolute/path/to/repo/**/vendor/**/*)`. Prima della v2.1.211, `.claude/settings.local.json` si caricava anche solo dalla directory di avvio.161* **Solo te**: usa `.claude/settings.local.json` alla radice del repository. Si carica in ogni sessione CLI all'interno del repository indipendentemente dalla directory di avvio, tranne nei casi in cui Claude Code [non utilizza la radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file), come su Windows.

162 

163 I pattern relativi come `Read(./**/vendor/**/*)` dell'esempio [si ancorano comunque alla directory di lavoro corrente della sessione](https://code.claude.com/docs/it/permissions.md#read-and-edit) anziché alla radice del repository. Se avvii sessioni da sottodirectory, scrivi le regole in questo file come percorsi assoluti con `//`, come `Read(//absolute/path/to/repo/**/vendor/**/*)`.

162* **Tutti, applicato in ogni sessione**: impostate le regole in [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), che le impostazioni utente e progetto non possono ignorare.164* **Tutti, applicato in ogni sessione**: impostate le regole in [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), che le impostazioni utente e progetto non possono ignorare.

163 165 

164L'esempio sottostante blocca gli artefatti di build e un SDK venduto. I suoi modelli di directory terminano con `/**/*` piuttosto che `/**` in modo che ogni regola copra tutto all'interno della directory ma non la directory stessa. Claude può quindi ancora elencare quelle directory o cambiarvi dentro, ad esempio con `ls dist` o `cd build`.166L'esempio sottostante blocca gli artefatti di build e un SDK venduto. I suoi modelli di directory terminano con `/**/*` piuttosto che `/**` in modo che ogni regola copra tutto all'interno della directory ma non la directory stessa. Claude può quindi ancora elencare quelle directory o cambiarvi dentro, ad esempio con `ls dist` o `cd build`.


376Sposta le convenzioni e il contenuto di riferimento fuori da CLAUDE.md sempre caricato e in meccanismi che si caricano su richiesta:378Sposta le convenzioni e il contenuto di riferimento fuori da CLAUDE.md sempre caricato e in meccanismi che si caricano su richiesta:

377 379 

378* [Skills](https://code.claude.com/docs/it/skills.md): materiale di riferimento che Claude carica solo quando rilevante per il compito380* [Skills](https://code.claude.com/docs/it/skills.md): materiale di riferimento che Claude carica solo quando rilevante per il compito

379* [Plugins](https://code.claude.com/docs/it/plugins/overview.md): bundle versionati di skills, hooks e comandi che un team di piattaforma possiede centralmente381* [Plugin](https://code.claude.com/docs/it/plugins/overview.md): bundle versionati di skill, hook e comandi che un team di piattaforma possiede centralmente e può [installare per tutti tramite le impostazioni gestite](https://code.claude.com/docs/it/plugins/org.md#pre-install-and-require-plugins)

380* [MCP servers](https://code.claude.com/docs/it/mcp.md): se la tua organizzazione già esegue una ricerca di codice o un indice RAG sul repository, esponilo come uno strumento MCP in modo che Claude lo interroghi invece di leggere i file direttamente382* [MCP servers](https://code.claude.com/docs/it/mcp.md): se la tua organizzazione già esegue una ricerca di codice o un indice RAG sul repository, esponilo come uno strumento MCP in modo che Claude lo interroghi invece di leggere i file direttamente

381 383 

382Vedi [impostazioni gestite dal server o gestite dall'endpoint](https://code.claude.com/docs/it/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) per come i team di piattaforma possono applicare questi centralmente.384Vedi [impostazioni gestite dal server o gestite dall'endpoint](https://code.claude.com/docs/it/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) per come i team di piattaforma possono applicare questi centralmente.


465Due tecniche aiutano a mantenere un cambiamento tra pacchetti coerente:467Due tecniche aiutano a mantenere un cambiamento tra pacchetti coerente:

466 468 

467* **Dai a Claude l'intero cambiamento in una sessione**: consegnare la modifica condivisa e i suoi siti di chiamata insieme mantiene le decisioni dietro ogni modifica coerenti, piuttosto che derivarle di nuovo per pacchetto469* **Dai a Claude l'intero cambiamento in una sessione**: consegnare la modifica condivisa e i suoi siti di chiamata insieme mantiene le decisioni dietro ogni modifica coerenti, piuttosto che derivarle di nuovo per pacchetto

468* **Pianifica prima di modificare**: [pianifica prima](https://code.claude.com/docs/it/best-practices.md#explore-first-then-plan-then-code) in [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode), e Claude scrive il piano in un file. Una lunga sessione tra pacchetti [compatta il suo contesto](https://code.claude.com/docs/it/context-window.md#what-survives-compaction) lungo il percorso. Claude Code reiniezione il file del piano dopo ogni compattazione, quindi il piano sopravvive dove la cronologia della conversazione potrebbe non farlo470* **Pianifica prima di modificare**: pianifica prima in [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode), e Claude scrive il piano in un file. Una lunga sessione tra pacchetti [compatta il suo contesto](https://code.claude.com/docs/it/context-window.md#what-survives-compaction) lungo il percorso. Claude Code reinietta il file del piano dopo ogni compattazione, quindi il piano sopravvive dove la cronologia della conversazione potrebbe non farlo

469 471 

470## Passaggi successivi472## Passaggi successivi

471 473 

Details

361 361 

362Il gateway trasporta le richieste di modello, ma Claude Code invia anche traffico di background non essenziale al di fuori del percorso del gateway, ad Anthropic e a servizi di terze parti come GitHub: controlli di versione, telemetria, note di rilascio e richieste simili. Su una rete che consente solo l'uscita verso il gateway, queste richieste falliscono e possono apparire come connessioni bloccate nel monitoraggio dell'uscita.362Il gateway trasporta le richieste di modello, ma Claude Code invia anche traffico di background non essenziale al di fuori del percorso del gateway, ad Anthropic e a servizi di terze parti come GitHub: controlli di versione, telemetria, note di rilascio e richieste simili. Su una rete che consente solo l'uscita verso il gateway, queste richieste falliscono e possono apparire come connessioni bloccate nel monitoraggio dell'uscita.

363 363 

364Claude Code allega una credenziale a una richiesta di telemetria o metriche di utilizzo solo quando la richiesta va all'host a cui appartiene la credenziale. Mentre `ANTHROPIC_BASE_URL` punta al gateway, Claude Code invia i suoi eventi di telemetria ad Anthropic senza la credenziale del gateway. Con una [variabile di credenziale](#set-the-credential-variable) o `apiKeyHelper` anche attivi, Claude Code non segnala le metriche di utilizzo alla dashboard [analytics](https://code.claude.com/docs/it/analytics.md#access-analytics-for-api-customers) della Console. Prima della v2.1.246, Claude Code poteva allegare la credenziale del gateway alle richieste di telemetria e metriche di utilizzo destinate agli host Anthropic; le richieste di modello andavano sempre al gateway con la credenziale che il gateway si aspetta.

365 

366Per disattivare quel traffico, impostare `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` insieme alle variabili del gateway, nello stesso blocco di esportazioni shell o `env` del file di impostazioni:364Per disattivare quel traffico, impostare `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` insieme alle variabili del gateway, nello stesso blocco di esportazioni shell o `env` del file di impostazioni:

367 365 

368**Bash o Zsh**366**Bash o Zsh**

mcp.md +8 −2

Details

84 84 

85Solo un'applicazione host dell'SDK, come un'applicazione [Agent SDK](https://code.claude.com/docs/it/agent-sdk/mcp.md) o l'[app desktop](https://code.claude.com/docs/it/desktop.md), può registrare un server in-process `"type": "sdk"`. Claude Code salta una voce `"type": "sdk"` in `.mcp.json`, `~/.claude.json` o nelle impostazioni e segnala `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.85Solo un'applicazione host dell'SDK, come un'applicazione [Agent SDK](https://code.claude.com/docs/it/agent-sdk/mcp.md) o l'[app desktop](https://code.claude.com/docs/it/desktop.md), può registrare un server in-process `"type": "sdk"`. Claude Code salta una voce `"type": "sdk"` in `.mcp.json`, `~/.claude.json` o nelle impostazioni e segnala `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.

86 86 

87Nelle esecuzioni con `--output-format stream-json`, Claude Code segnala anche una voce `--mcp-config` saltata nel [campo `mcp_server_errors`](https://code.claude.com/docs/it/headless#stream-responses) dell'evento `system/init`, così gli script possono rilevare che il server non è mai stato caricato. Questo richiede Claude Code v2.1.219 o successiva.87> [!NOTE]

88>

89> Nelle esecuzioni con `--output-format stream-json`, Claude Code segnala una voce `--mcp-config` saltata anche nel [campo `mcp_server_errors`](https://code.claude.com/docs/it/headless#stream-responses) dell'evento `system/init`, così gli script possono rilevare che il server non è mai stato caricato.

88 90 

89### Opzione 2: aggiungere un server SSE remoto91### Opzione 2: aggiungere un server SSE remoto

90 92 


276 278 

277Quando selezioni **Disable** o **Clear authentication** dal menu di un server in `/mcp`, Claude Code scarta anche la voce della cache di quel server. Anche **Reconnect** la scarta su un server connesso o in errore; su un server `cached`, **Reconnect** connette subito il server e mantiene la voce. La volta successiva in cui Claude Code si connette al server dopo aver scartato la voce, recupera l'elenco degli strumenti dal server invece che dalla cache.279Quando selezioni **Disable** o **Clear authentication** dal menu di un server in `/mcp`, Claude Code scarta anche la voce della cache di quel server. Anche **Reconnect** la scarta su un server connesso o in errore; su un server `cached`, **Reconnect** connette subito il server e mantiene la voce. La volta successiva in cui Claude Code si connette al server dopo aver scartato la voce, recupera l'elenco degli strumenti dal server invece che dalla cache.

278 280 

279Quando lo stato di un server è `✘ Failed to connect`, `claude mcp list` aggiunge il dettaglio dell'errore a quella riga di stato, e `claude mcp get <name>` lo mostra su una riga `Issue:`: lo stato HTTP o il codice di errore, più l'eventuale testo di errore restituito dal server. La vista di dettaglio del server in `/mcp` include lo stesso testo riportato dal server nella riga `Issue:`. Claude Code oscura da questo dettaglio il testo simile a credenziali e non include mai l'URL del server espanso, che può contenere segreti. Claude Code non aggiunge alcun dettaglio a uno stato `✘ Connection error`, perché il testo dell'eccezione che stamperebbe lì può incorporare quell'URL. Prima della v2.1.219, entrambi i comandi mostravano solo lo stato di errore semplice, senza il codice di stato né il testo di errore del server.281##### Errori di connessione e server non configurati

282 

283Quando lo stato di un server è `✘ Failed to connect`, `claude mcp list` aggiunge il dettaglio dell'errore a quella riga di stato, e `claude mcp get <name>` lo mostra in una riga `Issue:`. Il dettaglio è lo stato HTTP o il codice di errore, più l'eventuale testo di errore restituito dal server. La vista di dettaglio del server in `/mcp` include lo stesso testo riportato dal server nella sua riga `Issue:`.

284 

285Claude Code oscura da questo dettaglio il testo simile a credenziali e non include mai l'URL del server espanso, che può contenere segreti. Claude Code non aggiunge alcun dettaglio a uno stato `✘ Connection error`, perché il testo dell'eccezione che vi stamperebbe può incorporare quell'URL.

280 286 

281Quando completi l'autenticazione da `/mcp` e la connessione fallisce ancora con uno stato HTTP o un codice di errore del trasporto, Claude Code aggiunge quel codice e l'origine dell'URL del server al messaggio che stampa dopo il tentativo. L'origine è lo schema e l'host, più la porta quando l'URL ne specifica una, come `https://mcp.example.com`.287Quando completi l'autenticazione da `/mcp` e la connessione fallisce ancora con uno stato HTTP o un codice di errore del trasporto, Claude Code aggiunge quel codice e l'origine dell'URL del server al messaggio che stampa dopo il tentativo. L'origine è lo schema e l'host, più la porta quando l'URL ne specifica una, come `https://mcp.example.com`.

282 288 

memory.md +3 −3

Details

237 237 

238Ogni gruppo tra parentesi graffe moltiplica il numero di modelli espansi: `src/*.{ts,tsx}` si espande in due modelli, e `{a,b}/{c,d}/*.{ts,tsx}` in otto. Per mantenere l'espansione limitata, l'intero elenco `paths` di una regola condivide un unico budget di 1.000 modelli espansi e 4 MiB, e i modelli senza parentesi graffe non vengono conteggiati.238Ogni gruppo tra parentesi graffe moltiplica il numero di modelli espansi: `src/*.{ts,tsx}` si espande in due modelli, e `{a,b}/{c,d}/*.{ts,tsx}` in otto. Per mantenere l'espansione limitata, l'intero elenco `paths` di una regola condivide un unico budget di 1.000 modelli espansi e 4 MiB, e i modelli senza parentesi graffe non vengono conteggiati.

239 239 

240Claude Code utilizza non espanso qualsiasi modello che supererebbe il budget, e le sue parentesi graffe letterali non corrispondono a nessun file. Prima della v2.1.217, un valore `paths` con molti gruppi tra parentesi graffe bloccava o causava l'arresto anomalo della CLI all'avvio.240Claude Code utilizza non espanso qualsiasi modello che supererebbe il budget, e le sue parentesi graffe letterali non corrispondono a nessun file.

241 241 

242La sintassi glob tratta `[` come l'inizio di un'espressione tra parentesi quadre come `[abc]`. Un modello con un `[` che non può essere letto come un'espressione tra parentesi quadre, come `photos [2024/**`, non è valido: non corrisponde a nulla, e gli altri modelli della regola continuano a funzionare. Per far corrispondere un `[` letterale in un nome di file, applica l'escape come in `photos \[2024/**`.242La sintassi glob tratta `[` come l'inizio di un'espressione tra parentesi quadre come `[abc]`. Un modello con un `[` che non può essere letto come un'espressione tra parentesi quadre, come `photos [2024/**`, non è valido: non corrisponde a nulla, e gli altri modelli della regola continuano a funzionare. Per far corrispondere un `[` letterale in un nome di file, applica l'escape come in `photos \[2024/**`.

243 243 


568 568 

569Il comando `/memory` elenca i tuoi file CLAUDE.md, CLAUDE.local.md e altri file di memoria in tutti gli ambiti utente e progetto, incluse le voci CLAUDE.md utente e progetto per i file che non esistono ancora. Ti consente inoltre di attivare o disattivare la memoria automatica e fornisce un'opzione per aprire la cartella di memoria automatica. Seleziona qualsiasi file per aprirlo nel tuo editor; selezionando uno che non esiste ancora lo crea prima. Per verificare quali file `CLAUDE.md` e file di regole sono stati caricati all'avvio, esegui `/context`.569Il comando `/memory` elenca i tuoi file CLAUDE.md, CLAUDE.local.md e altri file di memoria in tutti gli ambiti utente e progetto, incluse le voci CLAUDE.md utente e progetto per i file che non esistono ancora. Ti consente inoltre di attivare o disattivare la memoria automatica e fornisce un'opzione per aprire la cartella di memoria automatica. Seleziona qualsiasi file per aprirlo nel tuo editor; selezionando uno che non esiste ancora lo crea prima. Per verificare quali file `CLAUDE.md` e file di regole sono stati caricati all'avvio, esegui `/context`.

570 570 

571Gli editor GUI come VS Code aprono il file in una finestra separata e puoi continuare a utilizzare la sessione mentre è aperta. Prima della v2.1.216, `/memory` attendeva che chiudessi il file prima di rispondere. Gli editor terminali come Vim prendono il controllo del terminale fino a quando non esci.571Gli editor GUI come VS Code aprono il file in una finestra separata e puoi continuare a utilizzare la sessione mentre è aperta. Gli editor terminali come Vim prendono il controllo del terminale fino a quando non esci.

572 572 

573Quando chiedi a Claude di ricordare qualcosa, come "usa sempre pnpm, non npm" o "ricorda che i test API richiedono un'istanza Redis locale", Claude lo salva nella memoria automatica. Per aggiungere istruzioni a CLAUDE.md, chiedi direttamente a Claude, come "aggiungi questo a CLAUDE.md", oppure modifica il file tu stesso tramite `/memory`.573Quando chiedi a Claude di ricordare qualcosa, come "usa sempre pnpm, non npm" o "ricorda che i test API richiedono un'istanza Redis locale", Claude lo salva nella memoria automatica. Per aggiungere istruzioni a CLAUDE.md, chiedi direttamente a Claude, come "aggiungi questo a CLAUDE.md", oppure modifica il file tu stesso tramite `/memory`.

574 574 


635Verifica se il tuo file supera il limite e, in tal caso, riducilo:635Verifica se il tuo file supera il limite e, in tal caso, riducilo:

636 636 

6371. Conferma che il limite si applica al tuo file. Il limite si applica a questi file, che vengono caricati su richiesta:6371. Conferma che il limite si applica al tuo file. Il limite si applica a questi file, che vengono caricati su richiesta:

638 * `CLAUDE.md` e `CLAUDE.local.md` in una sottodirectory della directory in cui hai avviato Claude Code, e i file che [importano](#import-additional-files) con `@path`638 * `CLAUDE.md` e `CLAUDE.local.md` in una sottodirectory della directory in cui hai avviato Claude Code, e i file che questi [importano](#import-additional-files) con `@path`

639 * File di regole in `.claude/rules/` di una sottodirectory639 * File di regole in `.claude/rules/` di una sottodirectory

640 * [Regole con ambito di percorso](#path-specific-rules) in `.claude/rules/` del tuo progetto o in `~/.claude/rules/`640 * [Regole con ambito di percorso](#path-specific-rules) in `.claude/rules/` del tuo progetto o in `~/.claude/rules/`

6412. Trova il limite per la [finestra di contesto](https://code.claude.com/docs/it/model-config.md#extended-context) della tua sessione:6412. Trova il limite per la [finestra di contesto](https://code.claude.com/docs/it/model-config.md#extended-context) della tua sessione:

model-config.md +21 −4

Details

542Un livello diverso si applica in casi come questi:542Un livello diverso si applica in casi come questi:

543 543 

544* **Una tua modifica**: una volta che scegli un livello di sforzo, selezioni un modello in `/model` o riprendi la sessione in seguito, il livello della richiesta segnalata non viene più mantenuto.544* **Una tua modifica**: una volta che scegli un livello di sforzo, selezioni un modello in `/model` o riprendi la sessione in seguito, il livello della richiesta segnalata non viene più mantenuto.

545* **Sforzo della skill**: un livello impostato dal frontmatter `effort` di una skill per la richiesta segnalata si applica a quel turno, e i turni successivi vengono eseguiti al livello che l'[ordine di risoluzione dello sforzo](#adjust-effort-level) assegna al modello di fallback.545* **Sforzo impostato per un turno**: se hai alzato il turno segnalato con `ultrathink`, o il frontmatter `effort` di una skill ne ha impostato il livello, quel livello si applica a quel turno. I turni successivi vengono eseguiti al livello che l'[ordine di risoluzione dello sforzo](#adjust-effort-level) assegna al modello di fallback.

546 546 

547Nella sessione, esegui `/effort status` per vedere il livello in vigore, oppure `/effort` per cambiarlo.547Nella sessione, esegui `/effort status` per vedere il livello in vigore, oppure `/effort` per cambiarlo.

548 548 


674 674 

675#### Usa ultrathink per un ragionamento profondo una tantum675#### Usa ultrathink per un ragionamento profondo una tantum

676 676 

677Includi `ultrathink` in qualsiasi punto del tuo prompt per richiedere un ragionamento più profondo in quel turno senza modificare l'impostazione dello sforzo della sessione. Claude Code riconosce la parola chiave e aggiunge un'istruzione nel contesto. Il livello di sforzo inviato all'API rimane invariato. Claude Code passa altre frasi come "think", "think hard" e "think more" come normale testo del prompt e non le riconosce come parole chiave.677Includi `ultrathink` in qualsiasi punto del tuo prompt per richiedere un ragionamento più profondo in quel turno senza modificare l'impostazione dello sforzo della sessione. Claude Code riconosce la parola chiave e aggiunge un'istruzione nel contesto. Claude Code passa altre frasi come "think", "think hard" e "think more" come normale testo del prompt e non le riconosce come parole chiave.

678 

679Se digitata nel prompt del terminale, la parola può anche alzare quel turno allo sforzo `xhigh`. Quando può farlo, la parola appare nei colori dell'arcobaleno. Richiede Claude Code v2.1.311 o successiva. Se la parola non appare nei colori dell'arcobaleno quando inizi un nuovo turno, prova una di queste soluzioni:

680 

681* Riscrivila al di fuori di elementi come virgolette, parentesi, un percorso o un comando, in un prompt che non inizi con `/`

682* Rimuovi `CLAUDE_CODE_EFFORT_LEVEL` se è impostata al di sotto di `xhigh`, alza il tuo [`maxEffortLevel`](https://code.claude.com/docs/it/settings-reference#maxeffortlevel) a `xhigh` o superiore, oppure chiedi a un amministratore dell'organizzazione di alzare il [limite della tua organizzazione](#organization-effort-limits)

683* Esegui `/model` nella sessione per passare a un modello Opus 5.5, Sonnet 5.5, Haiku 5.5 o Fable 5.1. Dove la parola non può alzare un turno, ad esempio su Amazon Bedrock, [imposta invece il livello di sforzo](#set-the-effort-level)

678 684 

679#### Imposta il livello di sforzo685#### Imposta il livello di sforzo

680 686 

681Puoi modificare lo sforzo in uno dei seguenti modi:687Puoi modificare lo sforzo in uno dei seguenti modi:

682 688 

683* **`/effort`**: esegui `/effort` senza argomenti per aprire un cursore interattivo, `/effort` seguito da un nome di livello per impostarlo direttamente, o `/effort auto` per cancellare il livello salvato per il modello attivo. Puoi eseguirlo mentre Claude sta lavorando e, una volta confermato l'[avviso sulla cache](https://code.claude.com/docs/it/prompt-caching.md#changing-effort-level), se Claude Code ne mostra uno, Claude Code applica il nuovo livello alla richiesta successiva nel turno689* **`/effort`**: esegui `/effort` senza argomenti per aprire un cursore interattivo, `/effort` seguito da un nome di livello per impostarlo direttamente, o `/effort auto` per cancellare il livello salvato per il modello attivo

684* **In `/model`**: usa i tasti freccia sinistra/destra per regolare il cursore dello sforzo quando selezioni un modello690* **In `/model`**: usa i tasti freccia sinistra/destra per regolare il cursore dello sforzo quando selezioni un modello

685* **Flag `--effort`**: passa un nome di livello per impostarlo per una singola sessione quando avvii Claude Code691* **Flag `--effort`**: passa un nome di livello per impostarlo per una singola sessione quando avvii Claude Code

686* **Variabile d'ambiente**: imposta `CLAUDE_CODE_EFFORT_LEVEL` su un nome di livello o `auto`692* **Variabile d'ambiente**: imposta `CLAUDE_CODE_EFFORT_LEVEL` su un nome di livello o `auto`


692 698 

693Se imposti `effortLevel` nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), Claude Code lo applica al passo delle impostazioni dell'[ordine di risoluzione dello sforzo](#adjust-effort-level), e gli utenti possono comunque modificare il livello con `/effort` o `--effort`. Per mantenere gli utenti a un livello o al di sotto di esso, imposta [`maxEffortLevel`](https://code.claude.com/docs/it/settings-reference#maxeffortlevel).699Se imposti `effortLevel` nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), Claude Code lo applica al passo delle impostazioni dell'[ordine di risoluzione dello sforzo](#adjust-effort-level), e gli utenti possono comunque modificare il livello con `/effort` o `--effort`. Per mantenere gli utenti a un livello o al di sotto di esso, imposta [`maxEffortLevel`](https://code.claude.com/docs/it/settings-reference#maxeffortlevel).

694 700 

695Il cursore dello sforzo appare in `/model` quando è selezionato un modello supportato. Il livello di sforzo corrente è mostrato anche nell'intestazione della sessione accanto al nome del modello, ad esempio "with low effort", così puoi verificare quale impostazione è attiva senza aprire `/model`. Il piè di pagina mostra anche brevemente il livello di sforzo all'avvio e quando cambia.701#### Verifica il livello di sforzo impostato

702 

703Il cursore dello sforzo appare in `/model` quando è selezionato un modello supportato. Un livello nell'intestazione della sessione, ad esempio "with low effort", deriva dalla tua impostazione dello sforzo, anche se Claude [sta ancora lavorando al livello precedente](#when-a-new-effort-level-starts). Il piè di pagina mostra anche brevemente il livello di sforzo all'avvio e quando cambia.

704 

705#### Quando inizia un nuovo livello di sforzo

706 

707In una sessione del terminale, una volta che `/effort` conferma il nuovo livello, il prossimo messaggio che invii viene eseguito a quel livello. Puoi inviarlo dopo la fine del turno in corso oppure [mentre Claude sta ancora lavorando](https://code.claude.com/docs/it/interactive-mode.md#queue-messages-while-claude-works):

708 

709* **Dopo la fine del turno**: non devi fare nulla fino ad allora, ed è normale che il turno termini al livello precedente

710* **Mentre Claude sta ancora lavorando**: digita un messaggio, come `keep going`, e premi `Enter` per metterlo in coda senza interrompere il turno. Claude lo riceve quando terminano le sue chiamate agli strumenti in corso, o al più tardi quando termina il turno, e da quel momento lavora al nuovo livello.

711 

712Prima della v2.1.242, Claude Code poteva mettere in coda `/effort` stesso fino alla fine del turno, e lo faceva sempre in una sessione che non [recupera i feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching), come su un [provider di terze parti](https://code.claude.com/docs/it/third-party-integrations.md).

696 713 

697#### Ragionamento adattivo e budget di ragionamento fissi714#### Ragionamento adattivo e budget di ragionamento fissi

698 715 

Details

648| `claude_code.code_edit_tool.decision` | Conteggio delle decisioni sui permessi degli strumenti di modifica del codice | nessuna |648| `claude_code.code_edit_tool.decision` | Conteggio delle decisioni sui permessi degli strumenti di modifica del codice | nessuna |

649| `claude_code.active_time.total` | Tempo attivo totale | s |649| `claude_code.active_time.total` | Tempo attivo totale | s |

650 650 

651Quando `prometheus` è l'unico exporter elencato in `OTEL_METRICS_EXPORTER`, Claude Code omette le unità `USD`, `tokens` e `s` dalle metriche esportate, in modo che lo scrape resti in formato di testo Prometheus valido. I nomi delle metriche non cambiano e le configurazioni che combinano più exporter, come `otlp,prometheus`, mantengono le unità. Prima della v2.1.216, lo scrape Prometheus includeva righe `# UNIT` valide solo per OpenMetrics, che alcuni scraper rifiutavano.651Quando `prometheus` è l'unico exporter elencato in `OTEL_METRICS_EXPORTER`, Claude Code omette le unità `USD`, `tokens` e `s` dalle metriche esportate, in modo che lo scrape resti in formato testo Prometheus valido. I nomi delle metriche non cambiano, e le configurazioni che combinano più exporter, come `otlp,prometheus`, mantengono le unità.

652 652 

653### Dettagli delle metriche653### Dettagli delle metriche

654 654 


995 995 

996 Il valore `source` non indica quale di queste origini ha avuto corrispondenza. Per scoprire quale ha rifiutato una chiamata, cerca l'[evento di sicurezza](#safety-event) con lo stesso `tool_use_id` e leggi i suoi attributi `category` e `rule_source`. Alcune chiamate rifiutate [non hanno un evento di sicurezza](#calls-without-a-safety-event).996 Il valore `source` non indica quale di queste origini ha avuto corrispondenza. Per scoprire quale ha rifiutato una chiamata, cerca l'[evento di sicurezza](#safety-event) con lo stesso `tool_use_id` e leggi i suoi attributi `category` e `rule_source`. Alcune chiamate rifiutate [non hanno un evento di sicurezza](#calls-without-a-safety-event).

997 997 

998 Claude Code riporta `"config"` anche quando la richiesta di permesso stessa non riesce. Ad esempio, tale richiesta non riesce quando il callback [`canUseTool`](https://code.claude.com/docs/it/agent-sdk/typescript#canusetool) dell'Agent SDK o lo strumento [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) restituisce un risultato non valido, oppure quando lo stream di input si chiude mentre la richiesta è in sospeso. Prima della v2.1.216, Claude Code riportava questi errori come `"user_reject"`.998 Claude Code riporta `"config"` anche quando la richiesta di permesso stessa non riesce. Ad esempio, quella richiesta non riesce quando il callback [`canUseTool`](https://code.claude.com/docs/it/agent-sdk/typescript#canusetool) dell'Agent SDK o lo strumento [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) restituisce un risultato non valido, o quando lo stream di input si chiude mentre la richiesta è in sospeso.

999 * `"hook"`: Un hook `PreToolUse` o `PermissionRequest` ha restituito la decisione.999 * `"hook"`: Un hook `PreToolUse` o `PermissionRequest` ha restituito la decisione.

1000 * `"user_permanent"`: Emesso quando l'utente ha scelto "Yes, and don't ask again for ..." in una richiesta di permesso, il che salva una regola di consenso nelle sue impostazioni personali. Nella CLI interattiva viene emesso solo per quella scelta; le chiamate successive che corrispondono alla regola salvata emettono invece `"config"`. Nelle sessioni dell'Agent SDK o non interattive `-p`, sia la scelta iniziale sia le successive corrispondenze della regola emettono `"user_permanent"`. Trattato come un'accettazione.1000 * `"user_permanent"`: Emesso quando l'utente ha scelto "Yes, and don't ask again for ..." in una richiesta di permesso, il che salva una regola di consenso nelle sue impostazioni personali. Nella CLI interattiva viene emesso solo per quella scelta; le chiamate successive che corrispondono alla regola salvata emettono invece `"config"`. Nelle sessioni dell'Agent SDK o non interattive `-p`, sia la scelta iniziale sia le successive corrispondenze alla regola emettono `"user_permanent"`. Trattato come un'accettazione.

1001 * `"user_temporary"`: Emesso quando l'utente ha scelto "Yes" in una richiesta di permesso per un'approvazione una tantum, oppure ha scelto un'opzione che concede l'accesso per il resto della sessione in una richiesta di modifica o lettura di file. Nella CLI interattiva viene emesso solo per la scelta stessa; le chiamate successive consentite da quella concessione limitata alla sessione emettono invece `"config"`. Nelle sessioni dell'Agent SDK o non interattive `-p`, sia la scelta sia le corrispondenze successive emettono `"user_temporary"`. Trattato come un'accettazione.1001 * `"user_temporary"`: Emesso quando l'utente ha scelto "Yes" in una richiesta di permesso per un'approvazione una tantum, o ha scelto un'opzione che concede l'accesso per il resto della sessione in una richiesta di modifica o lettura di file. Nella CLI interattiva viene emesso solo per la scelta stessa; le chiamate successive consentite da quella concessione limitata alla sessione emettono invece `"config"`. Nelle sessioni dell'Agent SDK o non interattive `-p`, sia la scelta sia le corrispondenze successive emettono `"user_temporary"`. Trattato come un'accettazione.

1002 * `"user_abort"`: Emesso quando l'utente ha chiuso la richiesta di permesso senza rispondere. Nelle sessioni dell'Agent SDK e non interattive `-p`, questo include l'interruzione del turno mentre una richiesta di permesso `canUseTool` o `--permission-prompt-tool` è in sospeso; prima della v2.1.216, Claude Code riportava tale interruzione come `"user_reject"`. Trattato come un rifiuto.1002 * `"user_abort"`: Emesso quando l'utente ha chiuso la richiesta di permesso senza rispondere. Nelle sessioni dell'Agent SDK e non interattive `-p`, questo include l'interruzione del turno mentre è in sospeso una richiesta di permesso `canUseTool` o `--permission-prompt-tool`. Trattato come un rifiuto.

1003 * `"user_reject"`: Emesso quando l'utente ha scelto "No" alla richiesta. Nella CLI interattiva viene emesso solo per quella scelta; le chiamate che corrispondono a una regola di negazione nelle impostazioni personali dell'utente emettono invece `"config"`. Nelle sessioni dell'Agent SDK o non interattive `-p`, le chiamate che corrispondono a una regola di negazione nelle impostazioni personali emettono `"user_reject"`. Trattato come un rifiuto.1003 * `"user_reject"`: Emesso quando l'utente ha scelto "No" quando gli è stato chiesto. Nella CLI interattiva viene emesso solo per quella scelta; le chiamate che corrispondono a una regola di negazione nelle impostazioni personali dell'utente emettono invece `"config"`. Nelle sessioni dell'Agent SDK o non interattive `-p`, le chiamate che corrispondono a una regola di negazione nelle impostazioni personali emettono `"user_reject"`. Trattato come un rifiuto.

1004* `classifier_verdict`: Il verdetto del [classificatore](https://code.claude.com/docs/it/permission-modes.md#how-the-classifier-evaluates-actions) della modalità auto per la chiamata, oppure il motivo per cui Claude Code ha negato la chiamata quando non è arrivato alcun verdetto. Richiede Claude Code v2.1.301 o successiva1004* `classifier_verdict`: Il verdetto del [classificatore](https://code.claude.com/docs/it/permission-modes.md#how-the-classifier-evaluates-actions) della modalità auto per la chiamata, oppure il motivo per cui Claude Code ha negato la chiamata quando non è arrivato alcun verdetto. Richiede Claude Code v2.1.301 o successiva

1005 1005 

1006 * `"allow"`: il classificatore ha approvato la chiamata1006 * `"allow"`: il classificatore ha approvato la chiamata

Details

97 Il comando funziona anche in [modalità non interattiva](https://code.claude.com/docs/it/headless.md) e nelle sessioni Agent SDK, e dall'app mobile o dal web tramite [Remote Control](https://code.claude.com/docs/it/remote-control.md#limitations), dove potete elencare e selezionare solo gli [stili incorporati](#built-in-output-styles). Richiede Claude Code v2.1.269 o successivo.97 Il comando funziona anche in [modalità non interattiva](https://code.claude.com/docs/it/headless.md) e nelle sessioni Agent SDK, e dall'app mobile o dal web tramite [Remote Control](https://code.claude.com/docs/it/remote-control.md#limitations), dove potete elencare e selezionare solo gli [stili incorporati](#built-in-output-styles). Richiede Claude Code v2.1.269 o successivo.

98* **Menu Terminal**: eseguite `/config` e selezionate **Output style** per scegliere uno stile da un menu.98* **Menu Terminal**: eseguite `/config` e selezionate **Output style** per scegliere uno stile da un menu.

99* **Estensione VS Code**: aprite il [menu dei comandi](https://code.claude.com/docs/it/vs-code.md#use-the-prompt-box) con `/` e selezionate **Output styles** per scegliere uno stile, inclusi i vostri stili personalizzati. Richiede Claude Code v2.1.257 o successivo.99* **Estensione VS Code**: aprite il [menu dei comandi](https://code.claude.com/docs/it/vs-code.md#use-the-prompt-box) con `/` e selezionate **Output styles** per scegliere uno stile, inclusi i vostri stili personalizzati. Richiede Claude Code v2.1.257 o successivo.

100* **App Desktop**: impostate il campo `outputStyle` in un file di impostazioni, ad esempio `.claude/settings.local.json`, il file che scrive il menu del terminal. Quando eseguite `/config` lì, Claude Code [apre **Settings > Claude Code**](https://code.claude.com/docs/it/desktop.md#what%E2%80%99s-not-available-in-desktop) piuttosto che un menu.100* **App Desktop**: imposta il campo `outputStyle` in un file di impostazioni, ad esempio `.claude/settings.local.json`, il file che scrive il menu del terminale. Quando esegui `/config` lì, Claude Code [apre **Settings > Code** o **Settings > Claude Code**](https://code.claude.com/docs/it/desktop.md#what’s-not-available-in-desktop) anziché un menu.

101 101 

102Per impostare uno stile senza il menu, modificate direttamente il campo `outputStyle` in un file di impostazioni:102Per impostare uno stile senza il menu, modificate direttamente il campo `outputStyle` in un file di impostazioni:

103 103 

Details

31 31 

32### Azioni che nessuna modalità approva automaticamente32### Azioni che nessuna modalità approva automaticamente

33 33 

34Claude Code non approva automaticamente quanto segue in nessuna modalità, incluso `bypassPermissions`. Ogni punto rimanda alla sezione che spiega cosa accade invece in ciascuna modalità:34Claude Code non approva automaticamente quanto segue in nessuna modalità, incluso `bypassPermissions`, anche se in modalità `bypassPermissions` puoi [disattivare la richiesta di conferma per i comandi `rm` pericolosi](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). Ogni punto rimanda alla sezione che spiega cosa accade invece in ciascuna modalità:

35 35 

36* Strumenti corrispondenti a una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita36* Strumenti corrispondenti a una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita

37* Strumenti dei connettori che la tua organizzazione ha [impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), nelle sessioni in cui tale impostazione raggiunge Claude Code37* Strumenti dei connettori che la tua organizzazione ha [impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), nelle sessioni in cui tale impostazione raggiunge Claude Code


504* Richieste HTTP di sola lettura504* Richieste HTTP di sola lettura

505* Push a qualsiasi branch del repository in cui stai lavorando, incluso il branch predefinito. Un branch non predefinito il cui nome lo identifica come target di deploy o pubblicazione, come `production` o `gh-pages`, non è coperto: il classificatore valuta un push lì in modo autonomo.505* Push a qualsiasi branch del repository in cui stai lavorando, incluso il branch predefinito. Un branch non predefinito il cui nome lo identifica come target di deploy o pubblicazione, come `production` o `gh-pages`, non è coperto: il classificatore valuta un push lì in modo autonomo.

506 506 

507 Il contenuto di un push viene comunque controllato rispetto alle altre regole del classificatore, e le [regole `permissions.deny`](https://code.claude.com/docs/it/permissions#manage-permissions) possono comunque bloccare i comandi push [così come sono scritti](https://code.claude.com/docs/it/permissions.md#bash-rule-limits) in ogni modalità. La protezione dei branch del remote si applica comunque. Dalla v2.1.203 fino alla v2.1.211, solo i push di routine al branch predefinito e i push al branch da cui eri partito o ai branch creati da Claude erano consentiti per impostazione predefinita.507 Il contenuto di un push viene comunque controllato rispetto alle altre regole del classificatore, e le [regole `permissions.deny`](https://code.claude.com/docs/it/permissions#manage-permissions) possono comunque bloccare i comandi push [così come sono scritti](https://code.claude.com/docs/it/permissions.md#bash-rule-limits) in ogni modalità. La protezione dei branch del remote si applica comunque.

508* Eliminazione dei job esatti che Claude ha creato in precedenza nella stessa sessione508* Eliminazione dei job esatti che Claude ha creato in precedenza nella stessa sessione

509* Lettura, revisione o scrittura di codice, configurazioni e modelli di minaccia relativi alla sicurezza come parte del tuo compito509* Lettura, revisione o scrittura di codice, configurazioni e modelli di minaccia relativi alla sicurezza come parte del tuo compito

510* Messaggi tra agenti che lavorano insieme nella stessa sessione multi-agente510* Messaggi tra agenti che lavorano insieme nella stessa sessione multi-agente


649 649 

650La modalità `bypassPermissions` disabilita i prompt di autorizzazione e i controlli di sicurezza in modo che le chiamate agli strumenti vengono eseguite immediatamente, incluse le scritture su [percorsi protetti](#protected-paths).650La modalità `bypassPermissions` disabilita i prompt di autorizzazione e i controlli di sicurezza in modo che le chiamate agli strumenti vengono eseguite immediatamente, incluse le scritture su [percorsi protetti](#protected-paths).

651 651 

652Anche in modalità `bypassPermissions`, ciascuna delle [azioni che nessuna modalità approva automaticamente](#actions-no-mode-auto-approves) riceve una richiesta di conferma o un rifiuto invece di essere eseguita da sola. La lettura di [un artefatto pubblico di un'altra organizzazione](https://code.claude.com/docs/it/artifacts.md#read-an-artifact-shared-with-you) richiede la tua approvazione, e questa modalità non la chiede, quindi Claude non può leggerne uno. Anche i blocchi di [Remove-Item in PowerShell](#remove-item-in-powershell) si applicano in questa modalità.652Anche in modalità `bypassPermissions`, ciascuna delle [azioni che nessuna modalità approva automaticamente](#actions-no-mode-auto-approves) riceve una richiesta di conferma o un rifiuto, anche se puoi [disattivare la richiesta di conferma per i comandi `rm` pericolosi](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). La lettura di [un artefatto pubblico di un'altra organizzazione](https://code.claude.com/docs/it/artifacts.md#read-an-artifact-shared-with-you) richiede la tua approvazione, e questa modalità non la chiede, quindi Claude non può leggerne uno. Anche i blocchi di [Remove-Item in PowerShell](#remove-item-in-powershell) si applicano in questa modalità.

653 653 

654Due misure di protezione per la [messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md) si applicano comunque in questa modalità, e nelle sessioni di terminale interattivo in modalità plan dove le autorizzazioni di bypass sono disponibili:654Due misure di protezione per la [messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md) si applicano comunque in questa modalità, e nelle sessioni di terminale interattivo in modalità plan dove le autorizzazioni di bypass sono disponibili:

655 655 


861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

862```862```

863 863 

864Ricevi il prompt o la negazione che riceve una rimozione di percorso critico [nella tua modalità di permesso](#critical-path-removals-in-each-permission-mode), `bypassPermissions` inclusa. Non puoi approvare il comando con una regola allow `Bash` o `Bash(*)`, con la [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode) della sandbox o con un hook `PreToolUse` che restituisce `"allow"`. Leggi il comando, poi approva il prompt oppure, dopo una negazione, eseguilo nella tua shell.864Ricevi il prompt o la negazione che riceve una rimozione di percorso critico [nella tua modalità di permesso](#critical-path-removals-in-each-permission-mode), `bypassPermissions` inclusa, anche se in modalità `bypassPermissions` puoi [disattivare quel prompt](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). Non puoi approvare il comando con una regola allow `Bash` o `Bash(*)`, con la [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode) della sandbox o con un hook `PreToolUse` che restituisce `"allow"`. Leggi il comando, poi approva il prompt oppure, dopo una negazione, eseguilo nella tua shell.

865 865 

866### Il prompt per le unità montate866### Il prompt per le unità montate

867 867 


923 923 

924Se una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita corrisponde al comando, Claude Code ti chiede invece, anche in modalità `auto` e senza un limite di tempo. Nelle modalità che chiedono, un hook [`PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) può rispondere al prompt.924Se una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita corrisponde al comando, Claude Code ti chiede invece, anche in modalità `auto` e senza un limite di tempo. Nelle modalità che chiedono, un hook [`PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) può rispondere al prompt.

925 925 

926Per eseguire queste rimozioni senza prompt in modalità `bypassPermissions`, consulta [Disattiva il prompt di rimozione dei percorsi critici](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

927 

926### Limiti di tempo e negazioni in modalità auto e bypassPermissions928### Limiti di tempo e negazioni in modalità auto e bypassPermissions

927 929 

928In modalità `auto` e `bypassPermissions`, il prompt del terminale per una rimozione di percorso critico mostra un conto alla rovescia di due minuti:930In modalità `auto` e `bypassPermissions`, il prompt del terminale per una rimozione di percorso critico mostra un conto alla rovescia di due minuti:


939| :- | :- | :- |941| :- | :- | :- |

940| Pannello chat dell'[estensione VS Code](https://code.claude.com/docs/it/vs-code.md) | Lo nega | Lo nega a meno che un [hook `PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) non lo consenta |942| Pannello chat dell'[estensione VS Code](https://code.claude.com/docs/it/vs-code.md) | Lo nega | Lo nega a meno che un [hook `PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) non lo consenta |

941| [App Desktop](https://code.claude.com/docs/it/desktop.md) | Lo nega | Lo nega a meno che un hook `PermissionRequest` non lo consenta |943| [App Desktop](https://code.claude.com/docs/it/desktop.md) | Lo nega | Lo nega a meno che un hook `PermissionRequest` non lo consenta |

942| [Esecuzione `-p`](https://code.claude.com/docs/it/headless) o [sessione Agent SDK](https://code.claude.com/docs/it/agent-sdk/permissions.md) | Lo nega | Decide il tuo [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) o la tua [callback `canUseTool`](https://code.claude.com/docs/it/agent-sdk/user-input#handle-tool-approval-requests). Senza nessuno dei due, o con [`--permission-prompts none`](https://code.claude.com/docs/it/headless#turn-off-permission-prompts-in-unattended-runs), lo nega a meno che un hook `PermissionRequest` non lo consenta |944| [Esecuzione `-p`](https://code.claude.com/docs/it/headless) o [sessione Agent SDK](https://code.claude.com/docs/it/agent-sdk/permissions.md) | Lo nega | Decide il tuo [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) o la tua [callback `canUseTool`](https://code.claude.com/docs/it/agent-sdk/user-input#handle-tool-approval-requests). Senza nessuno dei due, o con [`--permission-prompts none`](https://code.claude.com/docs/it/headless#turn-off-permission-prompts-in-unattended-runs), lo nega a meno che un hook `PermissionRequest` non lo consenta. Per eseguire invece queste rimozioni senza prompt, consulta [Disattiva il prompt di rimozione dei percorsi critici](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) |

943 945 

944Ovunque la rimozione venga negata, puoi leggere l'intero comando ed eseguirlo nella tua shell.946Ovunque la rimozione venga negata, puoi leggere l'intero comando ed eseguirlo nella tua shell.

945 947 


958}960}

959```961```

960 962 

963### Disattiva il prompt di rimozione dei percorsi critici in modalità bypassPermissions

964 

965Per eseguire senza prompt i comandi Bash `rm` e `rmdir` che prendono di mira [percorsi critici](#critical-paths) in modalità `bypassPermissions`, avvia Claude Code con [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1`](https://code.claude.com/docs/it/env-vars#variables) nel suo ambiente. Questo richiede Claude Code v2.1.311 o successivo. Claude Code legge la variabile solo dall'ambiente di avvio e [la ignora nel blocco `env` di un file di impostazioni](https://code.claude.com/docs/it/settings-reference#variables-claude-code-ignores-in-env). Ad esempio, impostala nella [tua shell](https://code.claude.com/docs/it/env-vars.md#set-variables-in-your-shell) e avvia `claude` da lì:

966 

967**macOS, Linux, WSL**

968 

969```bash theme={null}

970export CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

971claude --permission-mode bypassPermissions

972```

973 

974**Windows PowerShell**

975 

976```powershell theme={null}

977$env:CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS = "1"

978claude --permission-mode bypassPermissions

979```

980 

981**Windows CMD**

982 

983```batch theme={null}

984set CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

985claude --permission-mode bypassPermissions

986```

987 

988> [!WARNING]

989>

990> Con questa variabile impostata, perdi una richiesta di conferma di sicurezza per le eliminazioni distruttive: un comando come `rm -rf ~` può essere eseguito senza chiederti nulla. Impostala solo in un [ambiente isolato](#skip-all-checks-with-bypasspermissions-mode) il cui contenuto puoi permetterti di perdere.

991 

992Le rimozioni vengono eseguite senza prompt solo nella modalità `bypassPermissions` stessa, non in plan mode, e solo per ciò che il controllo dei percorsi critici segnala negli strumenti Bash e [Monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool). Ciò include i comandi che Claude Code non riesce ad analizzare completamente, che vengono anch'essi eseguiti senza prompt.

993 

994#### Avvisi all'avvio sul prompt di rimozione dei percorsi critici

995 

996Per verificare se `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` funziona, leggi la riga che Claude Code stampa all'avvio. In un'esecuzione `-p`, si trova su stderr. In un'app Agent SDK, passa l'[opzione `stderr`](https://code.claude.com/docs/it/agent-sdk/typescript#options) per leggerla. La riga dice una di queste cose:

997 

998* **`is set, so dangerous rm commands can run without a prompt`**: le rimozioni possono essere eseguite senza prompt una volta caricati le impostazioni gestite e gli hook dei plugin. Se le rimozioni continuano a ricevere un prompt o una negazione, consulta [Perché il prompt di rimozione dei percorsi critici resta attivo](#why-the-critical-path-removal-prompt-stays-on)

999* **`has no effect in this session`**: le rimozioni mantengono il loro consueto prompt o la loro consueta negazione per l'intera sessione. Per cambiare questa situazione, trova il tuo caso in [Perché il prompt di rimozione dei percorsi critici resta attivo](#why-the-critical-path-removal-prompt-stays-on)

1000* **`has no effect while the Windows registry cannot be read for managed settings`**: le rimozioni mantengono il loro consueto prompt o la loro consueta negazione, e la variabile ha effetto senza riavvio se una lettura successiva del registro di sistema riesce. Se le rimozioni continuano a ricevere un prompt o una negazione, consulta [Perché il prompt di rimozione dei percorsi critici resta attivo](#why-the-critical-path-removal-prompt-stays-on)

1001 

1002L'assenza della riga non significa che il prompt sia attivo: un'app Agent SDK senza opzione `stderr` non vede alcuna riga, e le rimozioni possono comunque essere eseguite senza prompt. Altrimenti, verifica di aver impostato la variabile nell'ambiente di avvio, che la sessione [possa entrare in modalità `bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) e che `claude` non si trovi dentro un'altra sessione. Alcune sessioni [si avviano senza la variabile](#why-the-critical-path-removal-prompt-stays-on).

1003 

1004Se vedi una di queste righe e non hai impostato la variabile, trova dove è impostata, ad esempio nel profilo della tua shell, e rimuovila.

1005 

1006#### Perché il prompt di rimozione dei percorsi critici resta attivo

1007 

1008Se `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` non ha effetto e le rimozioni mantengono il loro [consueto prompt o la loro consueta negazione](#critical-path-removals-in-each-permission-mode), verifica cause come queste:

1009 

1010* **Qualcos'altro gestisce le richieste di permesso**: un [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) o una [callback `canUseTool`](https://code.claude.com/docs/it/agent-sdk/user-input) dell'Agent SDK senza [`--permission-prompts none`](https://code.claude.com/docs/it/headless#turn-off-permission-prompts-in-unattended-runs), un [hook `PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) con qualsiasi matcher, o un [mod](https://code.claude.com/docs/it/plugins/mods/events.md#hook-the-settings-hook-events) che gestisce quell'evento. Rimuovi l'hook, il mod, lo strumento o la callback e riavvia `claude`

1011* **La sessione è eseguita dal pannello chat dell'[estensione VS Code](https://code.claude.com/docs/it/vs-code.md) o dall'[app Desktop](https://code.claude.com/docs/it/desktop.md)**: avvia invece `claude` in un terminale, ad esempio il terminale integrato di un IDE

1012* **Una regola riguarda Bash, Edit o Read**: una [regola deny o ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) che prende di mira uno di questi strumenti, all'avvio o quando Claude Code la legge durante la sessione, anche se la rimuovi in seguito. Rimuovi la regola e riavvia `claude`. Per escludere uno strumento, usa [`--tools`](https://code.claude.com/docs/it/cli-reference#cli-flags) invece di una regola deny

1013* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) è attivo**: rimuovi l'impostazione da ogni file di impostazioni che la imposta su `true`, poi riavvia `claude`

1014* **`claude` è in esecuzione dentro un'altra sessione**: un `claude` avviato dallo strumento Bash di una sessione o da un hook, anche con la variabile sulla sua riga di comando. Avvia `claude` dalla tua shell. Non fare affidamento su questo limite delle sessioni annidate come confine di sicurezza

1015* **Un hook `PreToolUse` risponde `ask` per una rimozione**: cambia ciò che l'hook restituisce

1016* **Claude Code avvia la sessione per te**: le [sessioni in background](https://code.claude.com/docs/it/agent-view.md), i membri di un [team di agenti](https://code.claude.com/docs/it/agent-teams.md) in riquadri divisi e le sessioni create da un server [Remote Control](https://code.claude.com/docs/it/remote-control.md) si avviano senza la variabile. Avvia `claude` dalla tua shell

1017* **Le impostazioni gestite non possono essere lette**: Claude Code non è riuscito a leggere le origini delle tue [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md). Se le impostazioni gestite dal server continuano a non caricarsi, consulta [Remote managed settings failed to load](https://code.claude.com/docs/it/errors.md#remote-managed-settings-failed-to-load). Per qualsiasi altro errore che non sia una query del registro di sistema, chiedi a chi gestisce quell'origine di risolverlo

1018* **Il registro di sistema di Windows non può essere interrogato**: su Windows e in WSL, la variabile ha bisogno di una risposta dal registro di sistema, anche quando [WSL non lo usa per le impostazioni](https://code.claude.com/docs/it/settings-reference.md#wslinheritswindowssettings). La query può fallire per tutta la sessione su un Windows non in inglese, in WSL con l'interoperabilità disattivata o in un container su un kernel WSL2. Se l'interoperabilità è disattivata, attivala. Altrimenti, esegui tu stesso quelle rimozioni

1019 

961### Remove-Item in PowerShell1020### Remove-Item in PowerShell

962 1021 

963Quando abiliti lo [strumento PowerShell](https://code.claude.com/docs/it/tools-reference.md#powershell-tool), Claude Code dà a `Remove-Item` e ai built-in `cmd` `rd`, `rmdir`, `del`, e `erase` i loro propri controlli, separati dall'elenco di percorsi critici `rm`. Per `Remove-Item`, il risultato dipende dal target, e il primo caso corrispondente si applica:1022Quando abiliti lo [strumento PowerShell](https://code.claude.com/docs/it/tools-reference.md#powershell-tool), Claude Code dà a `Remove-Item` e ai built-in `cmd` `rd`, `rmdir`, `del`, e `erase` i loro propri controlli, separati dall'elenco di percorsi critici `rm`. Per `Remove-Item`, il risultato dipende dal target, e il primo caso corrispondente si applica:

permissions.md +40 −38

Details

28 28 

29Quando scegli "Sì, non chiedere più" e l'approvazione viene salvata permanentemente, come per un comando Bash o un dominio WebFetch, Claude Code salva la regola in `.claude/settings.local.json` alla radice del repository git, risolto attraverso [worktrees](https://code.claude.com/docs/it/worktrees.md) al checkout principale. La regola si applica alle sessioni future ovunque in quel repository, incluse le sessioni avviate in sottodirectory e in worktrees. Un'approvazione di modifica di file non viene salvata nel file: come mostra la tabella, dura fino alla fine della sessione. In alcuni casi, come al di fuori di un repository git o su Windows, Claude Code non utilizza la radice del repository; [Dove Claude Code cerca ogni file](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file) elenca quei casi e dove salva la regola invece.29Quando scegli "Sì, non chiedere più" e l'approvazione viene salvata permanentemente, come per un comando Bash o un dominio WebFetch, Claude Code salva la regola in `.claude/settings.local.json` alla radice del repository git, risolto attraverso [worktrees](https://code.claude.com/docs/it/worktrees.md) al checkout principale. La regola si applica alle sessioni future ovunque in quel repository, incluse le sessioni avviate in sottodirectory e in worktrees. Un'approvazione di modifica di file non viene salvata nel file: come mostra la tabella, dura fino alla fine della sessione. In alcuni casi, come al di fuori di un repository git o su Windows, Claude Code non utilizza la radice del repository; [Dove Claude Code cerca ogni file](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file) elenca quei casi e dove salva la regola invece.

30 30 

31Prima della v2.1.211, Claude Code salvava sempre la regola nella directory di avvio, quindi un'approvazione concessa in un worktree o sottodirectory non si applicava al resto del repository. Le regole che le versioni precedenti hanno salvato in una sottodirectory o worktree si applicano ancora alle sessioni avviate lì.

32 

33A volte una richiesta di permesso offre solo un'approvazione una tantum, senza opzione "non chiedere più" e senza opzione per consentire l'azione per il resto della sessione. Claude Code offre quelle opzioni solo quando la richiesta può mostrarti tutto ciò che consentirebbero, quindi una regola che salvi da una richiesta copre solo ciò che la sua opzione indicava. Quando una richiesta offre solo l'approvazione una tantum, approva l'azione una volta, o aggiungi la regola tu stesso in [`/permissions`](#manage-permissions). Per interrompere le richieste per un comando che inizia con un exec wrapper come `watch`, o per un comando `find` con un'azione come `-delete`, consulta [Exec wrapper e azioni `find`](#exec-wrappers-and-find-actions).31A volte una richiesta di permesso offre solo un'approvazione una tantum, senza opzione "non chiedere più" e senza opzione per consentire l'azione per il resto della sessione. Claude Code offre quelle opzioni solo quando la richiesta può mostrarti tutto ciò che consentirebbero, quindi una regola che salvi da una richiesta copre solo ciò che la sua opzione indicava. Quando una richiesta offre solo l'approvazione una tantum, approva l'azione una volta, o aggiungi la regola tu stesso in [`/permissions`](#manage-permissions). Per interrompere le richieste per un comando che inizia con un exec wrapper come `watch`, o per un comando `find` con un'azione come `-delete`, consulta [Exec wrapper e azioni `find`](#exec-wrappers-and-find-actions).

34 32 

35### Aggiungi un commento quando rispondi a un prompt di autorizzazione33### Aggiungi un commento quando rispondi a un prompt di autorizzazione


218 216 

219> [!TIP]217> [!TIP]

220>218>

221> Claude Code è consapevole degli operatori della shell, quindi una regola come `Bash(safe-cmd *)` non gli darà il permesso di eseguire il comando `safe-cmd && other-cmd`. I separatori di comando riconosciuti sono `&&`, `||`, `;`, `|`, `|&`, `&` e il carattere di nuova riga. Una regola deve corrispondere a ogni sottocomando in modo indipendente.219> Claude Code è consapevole degli operatori della shell, quindi una regola come `Bash(safe-cmd *)` non gli darà il permesso di eseguire il comando `safe-cmd && other-cmd`. I separatori di comando riconosciuti sono `&&`, `||`, `;`, `|`, `|&`, `&` e il carattere di nuova riga. Ogni sottocomando deve essere consentito affinché un comando composto venga eseguito senza richiesta di conferma, ad esempio perché il sottocomando corrisponde a una regola allow o è un [comando di sola lettura](#read-only-commands).

222 220 

223Le regole deny e ask si applicano quando un qualsiasi sottocomando corrisponde, incluso un comando annidato all'interno di una subshell, di una sostituzione di comando o del corpo di un costrutto di controllo di flusso come un ciclo `for`. Una regola ask come `Bash(git clean *)` ti chiede comunque conferma per `cd /tmp && git clean -f` o `echo "$(git clean -f)"`, anche in [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode).221Le regole deny e ask si applicano quando un qualsiasi sottocomando corrisponde, incluso un comando annidato all'interno di una subshell, di una sostituzione di comando o del corpo di un costrutto di controllo di flusso come un ciclo `for`. Una regola ask come `Bash(git clean *)` ti chiede comunque conferma per `cd /tmp && git clean -f` o `echo "$(git clean -f)"`, anche in [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode).

224 222 


314 312 

315### PowerShell313### PowerShell

316 314 

317Le regole di permesso PowerShell hanno la stessa forma delle regole Bash. I caratteri jolly `*` corrispondono in qualsiasi posizione, il suffisso `:*` equivale a un ` *` finale e una regola `PowerShell` senza argomenti o `PowerShell(*)` corrisponde a ogni comando. Questa configurazione consente i comandi `Get-ChildItem` e `git commit` e blocca `Remove-Item`:315Le regole di permesso PowerShell hanno la stessa forma delle [regole Bash](#wildcard-patterns) e una regola `PowerShell` senza argomenti o `PowerShell(*)` corrisponde a ogni comando. Questa configurazione consente i comandi `Get-ChildItem` e `git commit` e blocca `Remove-Item`:

318 316 

319```json theme={null}317```json theme={null}

320{318{


330}328}

331```329```

332 330 

333Gli alias comuni vengono ricondotti alla forma canonica prima della corrispondenza. Una regola scritta per il nome del cmdlet corrisponde anche ai suoi alias, quindi `PowerShell(Get-ChildItem *)` corrisponde anche a `gci`, `ls` e `dir`. La corrispondenza non distingue tra maiuscole e minuscole.331Gli alias comuni vengono canonicalizzati prima della corrispondenza. Una regola scritta per il nome del cmdlet corrisponde anche a quegli alias, quindi `PowerShell(Get-ChildItem *)` corrisponde anche a `gci`, `ls` e `dir`. La corrispondenza non fa distinzione tra maiuscole e minuscole.

334 332 

335Claude Code analizza l'AST di PowerShell e controlla ogni comando di un comando composto in modo indipendente. Gli operatori di pipeline `|`, i separatori di istruzione `;` e, su PowerShell 7+, gli operatori di concatenazione `&&` e `||` dividono un comando composto in sottocomandi. Una regola deve corrispondere a ogni sottocomando affinché il comando composto sia consentito.333Claude Code analizza l'AST di PowerShell e controlla ogni comando di un comando composto in modo indipendente. Gli operatori di pipeline `|`, i separatori di istruzione `;` e, su PowerShell 7+, gli operatori di concatenazione `&&` e `||` dividono un comando composto in sottocomandi. Ogni sottocomando deve essere consentito affinché il comando composto venga eseguito senza richiesta di conferma, ad esempio corrispondendo a una regola allow.

336 334 

337### Read e Edit335### Read e Edit

338 336 


390 388 

391Una regola che aggiungi tramite `/permissions` segue la riga del file di impostazioni in cui la salvi.389Una regola che aggiungi tramite `/permissions` segue la riga del file di impostazioni in cui la salvi.

392 390 

393Dalla v2.1.211 in poi, le regole delle impostazioni locali si ancorano alla [directory di lavoro principale](#working-directories) della sessione, non alla radice del repository in cui Claude Code [memorizza il file](#permission-system). In una sessione avviata nella radice del repository, le due directory coincidono; in una sessione in un [worktree](https://code.claude.com/docs/it/worktrees.md), una regola condivisa come `Edit(/src/**)` corrisponde alla directory `src/` di quel worktree.391Le regole delle impostazioni locali si ancorano alla [directory di lavoro principale](#working-directories) della sessione, non alla radice del repository in cui Claude Code [memorizza il file](#permission-system). In una sessione avviata nella radice del repository, le due directory coincidono; in una sessione in un [worktree](https://code.claude.com/docs/it/worktrees.md), una regola condivisa come `Edit(/src/**)` corrisponde alla directory `src/` di quel worktree.

394 392 

395Una regola deny come `Read(/secrets/**)` nelle impostazioni utente blocca `~/.claude/secrets/**`, non una directory `secrets` nel tuo progetto. Per scrivere nelle impostazioni utente una regola che si applichi all'interno di ogni progetto, usa invece un percorso assoluto `//` o un percorso relativo alla home `~/`.393Una regola deny come `Read(/secrets/**)` nelle impostazioni utente blocca `~/.claude/secrets/**`, non una directory `secrets` nel tuo progetto. Per scrivere nelle impostazioni utente una regola che si applichi all'interno di ogni progetto, usa invece un percorso assoluto `//` o un percorso relativo alla home `~/`.

396 394 


524 522 

525Per leggere i file su una condivisione di rete senza questa richiesta di conferma, assegna prima alla condivisione un percorso locale:523Per leggere i file su una condivisione di rete senza questa richiesta di conferma, assegna prima alla condivisione un percorso locale:

526 524 

527* **Windows**: mappa la condivisione a una lettera di unità e passa l'unità con `--add-dir` quando avvii Claude Code, come descritto in [Directory di lavoro](#working-directories). Le letture sotto un'unità che aggiungi in seguito con `/add-dir`, o che elenchi in `additionalDirectories` in un file di impostazioni, chiedono comunque conferma. Per eliminare queste richieste di conferma per una condivisione mappata a `Z:`, avvia una nuova sessione in PowerShell con `claude --add-dir Z:\`.525* **Windows**: mappa la condivisione a una lettera di unità e passa l'unità con `--add-dir` quando avvii Claude Code, come descritto in [Directory di lavoro](#working-directories). Per una condivisione mappata a `Z:`, esegui `claude --add-dir Z:\` in PowerShell.

528* **macOS e Linux**: monta la condivisione in un percorso locale, come una directory sotto `/mnt` o `/Volumes`, e leggi i file da lì, come descritto in [La directory di lavoro è un percorso di rete](https://code.claude.com/docs/it/errors.md#working-directory-is-a-network-path)526* **macOS e Linux**: monta la condivisione in un percorso locale, come una directory sotto `/mnt` o `/Volumes`, e leggi i file da lì, come descritto in [La directory di lavoro è un percorso di rete](https://code.claude.com/docs/it/errors.md#working-directory-is-a-network-path)

529 527 

530### WebFetch528### WebFetch


711 709 

712Per caricare le skills, i comandi e i subagents da una sottodirectory della vostra [directory di lavoro primaria](#working-directories) a metà sessione, eseguite `/add-dir` con il percorso di quella sottodirectory. Claude Code li carica per il resto della sessione senza chiedervi o aggiungere una directory di lavoro, perché la sottodirectory è già leggibile. Questo richiede Claude Code v2.1.257 o successivo.710Per caricare le skills, i comandi e i subagents da una sottodirectory della vostra [directory di lavoro primaria](#working-directories) a metà sessione, eseguite `/add-dir` con il percorso di quella sottodirectory. Claude Code li carica per il resto della sessione senza chiedervi o aggiungere una directory di lavoro, perché la sottodirectory è già leggibile. Questo richiede Claude Code v2.1.257 o successivo.

713 711 

714Claude Code scopre gli stili di output dalla directory di lavoro corrente e dai suoi genitori, dalla vostra directory utente in `~/.claude/` e dalle impostazioni gestite. Gli hooks e altre chiavi `.claude/settings.json` vengono caricati dalla cartella `.claude/` della directory di lavoro corrente senza fallback alla directory genitore, insieme al vostro `~/.claude/settings.json` utente e alle impostazioni gestite. `.claude/settings.local.json` viene caricato dalla radice del repository git, anche quando avviate Claude Code in una sottodirectory, tranne nei casi in cui Claude Code [non utilizza la radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file), come su Windows; prima della v2.1.211, anche esso veniva caricato solo dalla directory di lavoro corrente. Le sessioni [Agent SDK](https://code.claude.com/docs/it/agent-sdk/claude-code-features.md#control-filesystem-settings-with-settingsources) lo caricano dalla directory di lavoro in tutte le versioni.712#### Da dove vengono caricati stili di output, hook e impostazioni locali

713 

714Claude Code scopre gli stili di output dalla directory di lavoro corrente e dalle sue directory genitore, dalla tua directory utente in `~/.claude/` e dalle impostazioni gestite. Gli hook e altre chiavi di `.claude/settings.json` vengono caricati dalla cartella `.claude/` della directory di lavoro corrente senza fallback alla directory genitore, insieme al tuo `~/.claude/settings.json` utente e alle impostazioni gestite.

715 

716`.claude/settings.local.json` viene invece caricato dalla radice del repository git, anche quando avvii Claude Code in una sottodirectory, tranne nei casi in cui Claude Code [non utilizza la radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file), come su Windows.

715 717 

716Per condividere quella configurazione tra progetti, utilizzate uno di questi approcci:718Per condividere quella configurazione tra progetti, utilizzate uno di questi approcci:

717 719 


759 761 

760Gli host di embedding possono fornire ulteriori criteri gestiti tramite l'opzione SDK `managedSettings`, incluse le regole di autorizzazione di tipo allow a meno che l'amministratore non imposti i blocchi `allowManaged*Only`; [Fornire la policy alle sessioni di Claude Desktop](https://code.claude.com/docs/it/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) illustra in quali casi si applicano i criteri dell'embedder.762Gli host di embedding possono fornire ulteriori criteri gestiti tramite l'opzione SDK `managedSettings`, incluse le regole di autorizzazione di tipo allow a meno che l'amministratore non imposti i blocchi `allowManaged*Only`; [Fornire la policy alle sessioni di Claude Desktop](https://code.claude.com/docs/it/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) illustra in quali casi si applicano i criteri dell'embedder.

761 763 

762## Regole di autorizzazione del progetto e trust dell'area di lavoro764## Regole allow del progetto e trust del workspace

763 765 

764Le regole `permissions.allow` e le voci `permissions.additionalDirectories` nel file `.claude/settings.json` di un progetto concedono capacità, quindi Claude Code le applica solo dopo che accettate la [finestra di dialogo di trust dell'area di lavoro](https://code.claude.com/docs/it/security.md#additional-safeguards) per quella cartella. La finestra di dialogo elenca le regole e le directory che la cartella concederà, in modo che possiate esaminarle prima. Le regole `deny` e `ask` non sono interessate, poiché limitano solo.766Le regole `permissions.allow` e le voci `permissions.additionalDirectories` nel file `.claude/settings.json` di un progetto concedono capacità, quindi Claude Code le applica solo dopo che accetti la [finestra di dialogo di trust del workspace](https://code.claude.com/docs/it/security.md#additional-safeguards) per quella cartella. La finestra di dialogo elenca le regole e le directory che la cartella concederebbe, in modo che tu possa esaminarle prima. Le regole `deny` e `ask` non sono interessate, poiché si limitano a restringere.

765 767 

766Claude Code salva il trust che accettate in base a dove lo avviate:768Claude Code indicizza e salva il trust che accetti in base a dove lo avvii:

767 769 

768* In un repository, Claude Code salva il trust sulla radice del repository git, quindi il trust copre l'intero repository a parte qualsiasi repository git annidato al suo interno, come un submodule. In un [worktree](https://code.claude.com/docs/it/worktrees.md), utilizza la radice del checkout principale, come fa per le [regole salvate](#permission-system).770* In un repository, Claude Code associa il trust alla radice del repository git, quindi il trust copre l'intero repository a parte qualsiasi repository git annidato al suo interno, come un submodule. In un [worktree](https://code.claude.com/docs/it/worktrees.md), utilizza la radice del checkout principale, come fa per le [regole salvate](#permission-system).

769* Al di fuori di un repository, Claude Code salva il trust sulla directory da cui lo avete avviato, e il trust copre qualsiasi subdirectory di quella directory a parte un repository git annidato al suo interno, come un clone. Ogni subdirectory coperta conta quindi come una cartella il cui genitore avete fidata.771* Al di fuori di un repository, Claude Code associa il trust alla directory da cui lo hai avviato, e il trust copre qualsiasi subdirectory di quella directory a parte un repository git annidato al suo interno, come un clone. Ogni subdirectory coperta conta quindi come una cartella della cui cartella genitore ti sei fidato.

770* Quando avviate dalla vostra directory home, Claude Code mantiene il trust solo per la sessione corrente e non lo scrive su disco; consultate la nota [safeguard aggiuntivi](https://code.claude.com/docs/it/security.md#additional-safeguards).772* Quando avvii dalla tua directory home, Claude Code mantiene il trust solo per la sessione corrente e non lo scrive su disco; consulta la nota sulle [misure di sicurezza aggiuntive](https://code.claude.com/docs/it/security.md#additional-safeguards).

771 773 

772Claude Code mostra la finestra di dialogo di trust solo in sessioni interattive. Un'esecuzione `claude -p` o una sessione SDK non la mostra mai, e fidarsi di una cartella genitore non conta per queste regole, quindi [Cosa viene eseguito prima di fidarsi di una cartella](#what-runs-before-you-trust-a-folder) dice quale contenuto del repository Claude Code utilizza ancora in ognuna di quelle due situazioni.774Claude Code mostra la finestra di dialogo di trust solo nelle sessioni interattive. Un'esecuzione `claude -p` o una sessione SDK non la mostra mai, e fidarsi di una cartella genitore non conta per queste regole, quindi [Cosa viene eseguito prima che ti fidi di una cartella](#what-runs-before-you-trust-a-folder) indica quale contenuto del repository Claude Code utilizza comunque in ognuna di quelle due situazioni.

773 775 

774Prima di avviare o riavviare una [sessione in background](https://code.claude.com/docs/it/agent-view.md), Claude Code controlla anche il trust dell'area di lavoro per la directory in cui viene eseguita la sessione. Se eseguite `claude --bg` da un terminale in una directory che non avete fidata, la finestra di dialogo di trust appare prima e la sessione si avvia una volta che l'accettate. Dove nessuna finestra di dialogo può apparire, come in uno script, il comando esce invece con un errore [`Workspace not trusted`](https://code.claude.com/docs/it/errors#workspace-not-trusted-when-dispatching-a-background-session).776Prima di avviare o riavviare una [sessione in background](https://code.claude.com/docs/it/agent-view.md), Claude Code controlla anche il trust del workspace per la directory in cui viene eseguita la sessione. Se esegui `claude --bg` da un terminale in una directory di cui non ti sei fidato, la finestra di dialogo di trust appare prima e la sessione si avvia una volta che la accetti. Dove nessuna finestra di dialogo può apparire, come in uno script, il comando termina invece con un errore [`Workspace not trusted`](https://code.claude.com/docs/it/errors#workspace-not-trusted-when-dispatching-a-background-session).

775 777 

776### Quando il vostro file di impostazioni locali ha bisogno di trust778### Quando il tuo file di impostazioni locali ha bisogno del trust

777 779 

778`.claude/settings.local.json` è normalmente il vostro file personale, quindi Claude Code applica le sue regole di autorizzazione e directory aggiuntive senza il passaggio di trust. Quando il file è tracciato in git, o `.claude` è un symlink, Claude Code lo tratta invece come fornito dal repository e tiene in sospeso le sue regole finché non vi fidate della cartella.780`.claude/settings.local.json` è normalmente il tuo file personale, quindi Claude Code applica le sue regole allow e le directory aggiuntive senza il passaggio di trust. Quando il file è tracciato in git, o `.claude` è un collegamento simbolico, Claude Code lo tratta invece come fornito dal repository e tiene in sospeso le sue regole finché non ti fidi della cartella.

779 781 

780Claude Code esegue git per distinguere i due casi, ed esegue git solo dopo che avete fidata la cartella: avete accettato la finestra di dialogo di trust per essa o per una directory genitore il cui trust si estende ad essa, o siete in una sessione `-p` o SDK, che conta come accettata. Fino ad allora, il luogo da cui avete avviato Claude Code decide cosa succede alle regole del file:782Claude Code esegue git per distinguere i due casi, ed esegue git solo dopo che ti sei fidato della cartella: hai accettato la finestra di dialogo di trust per essa o per una directory genitore il cui trust si estende ad essa, oppure sei in una sessione `-p` o SDK, che conta come accettata. Fino ad allora, il punto da cui hai avviato Claude Code decide cosa succede alle regole del file:

781 783 

782* **Nella vostra directory di configurazione personale:** Claude Code applica il `.claude/settings.local.json` di quella cartella subito senza eseguire git. La vostra directory di configurazione personale è la vostra directory home, o una directory il cui subdirectory `.claude` avete impostato come [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars#variables). Se quella directory `CLAUDE_CONFIG_DIR` si trova all'interno di un repository git e Claude Code [mantiene le vostre impostazioni locali alla radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file) invece, tiene in sospeso le regole come in qualsiasi altra posizione.784* **Nella tua home di configurazione:** Claude Code applica subito il `.claude/settings.local.json` di quella cartella senza eseguire git. La tua home di configurazione è la tua directory home, oppure una directory la cui subdirectory `.claude` hai impostato come [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars#variables). Se quella directory `CLAUDE_CONFIG_DIR` si trova all'interno di un repository git e Claude Code [mantiene invece le tue impostazioni locali alla radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file), tiene in sospeso le regole come in qualsiasi altra posizione.

783* **In qualsiasi altra posizione:** Claude Code tiene in sospeso le regole del file come fa per le impostazioni del progetto. Una volta che il controllo è stato eseguito, Claude Code applica le regole di un file non tracciato, o di un file in una directory al di fuori di qualsiasi repository git, anche se non avete fidata quella cartella esatta.785* **In qualsiasi altra posizione:** Claude Code tiene in sospeso le regole del file come fa per le impostazioni del progetto. Una volta eseguito il controllo, Claude Code applica le regole di un file non tracciato, o di un file in una directory al di fuori di qualsiasi repository git, anche se non ti sei fidato di quella cartella esatta.

784 786 

785> [!NOTE]787> [!NOTE]

786>788>

787> L'eccezione della directory di configurazione salta solo il passaggio di trust. `~/.claude/settings.local.json` è ancora [ambito locale](https://code.claude.com/docs/it/settings.md#compare-the-scope-of-each-settings-file), quindi Claude Code lo legge solo in sessioni che avviate nella vostra directory home stessa, non in ogni progetto. Per applicare regole di autorizzazione su tutti i vostri progetti, aggiungetele alle vostre impostazioni utente invece: `~/.claude/settings.json`, o `$CLAUDE_CONFIG_DIR/settings.json` quando `CLAUDE_CONFIG_DIR` è impostato.789> L'eccezione della home di configurazione salta solo il passaggio di trust. `~/.claude/settings.local.json` rientra comunque nell'[ambito locale](https://code.claude.com/docs/it/settings.md#compare-the-scope-of-each-settings-file), quindi Claude Code lo legge solo nelle sessioni che avvii nella tua directory home stessa, non in ogni progetto. Per applicare regole di permesso a tutti i tuoi progetti, aggiungile invece alle tue impostazioni utente: `~/.claude/settings.json`, oppure `$CLAUDE_CONFIG_DIR/settings.json` quando `CLAUDE_CONFIG_DIR` è impostato.

788 790 

789### Cosa viene eseguito prima di fidarsi di una cartella791### Cosa viene eseguito prima che ti fidi di una cartella

790 792 

791Ogni riga è un tipo di contenuto che un repository può fornire. Le colonne sono le due situazioni in cui non avete fidata la cartella stessa: avete fidata solo una cartella genitore, o avete eseguito `claude -p` o l'SDK lì, che non mostra mai la finestra di dialogo di trust. La colonna della cartella genitore non si applica all'interno di un [repository annidato](#project-allow-rules-and-workspace-trust): in una sessione interattiva Claude Code mostra la finestra di dialogo di trust per essa, e un'esecuzione `claude -p` o SDK lì segue la colonna `claude -p`.793Ogni riga è un tipo di contenuto che un repository può fornire. Le colonne sono le due situazioni in cui non ti sei fidato della cartella stessa: ti sei fidato solo di una cartella genitore, oppure hai eseguito lì `claude -p` o l'SDK, che non mostra mai la finestra di dialogo di trust. La colonna della cartella genitore non si applica all'interno di un [repository annidato](#project-allow-rules-and-workspace-trust): in una sessione interattiva Claude Code mostra la finestra di dialogo di trust per esso, e un'esecuzione `claude -p` o SDK lì segue la colonna `claude -p`.

792 794 

793| Cosa fornisce il repository | Avete fidata solo una cartella genitore | `claude -p` o l'SDK, cartella mai fidata |795| Cosa fornisce il repository | Ti sei fidato solo di una cartella genitore | `claude -p` o l'SDK, cartella mai considerata attendibile |

794| :- | :- | :- |796| :- | :- | :- |

795| [Hooks](https://code.claude.com/docs/it/hooks.md) nei file di impostazioni, il blocco [`env`](https://code.claude.com/docs/it/settings-reference#env) e comandi helper come [`apiKeyHelper`](https://code.claude.com/docs/it/settings-reference#apikeyhelper), e gli [hooks](https://code.claude.com/docs/it/hooks.md#hooks-in-skills-and-agents) di una skill del progetto e [`allowed-tools`](https://code.claude.com/docs/it/skills#pre-approve-tools-for-a-skill) | Utilizzati | Utilizzati. Il trust dell'area di lavoro non blocca mai `allowed-tools` di una skill in nessuna sessione |797| [Hook](https://code.claude.com/docs/it/hooks.md) nei file di impostazioni, il blocco [`env`](https://code.claude.com/docs/it/settings-reference#env) e comandi helper come [`apiKeyHelper`](https://code.claude.com/docs/it/settings-reference#apikeyhelper), e gli [hook](https://code.claude.com/docs/it/hooks.md#hooks-in-skills-and-agents) e gli [`allowed-tools`](https://code.claude.com/docs/it/skills#pre-approve-tools-for-a-skill) di una skill del progetto | Utilizzati | Utilizzati. Il trust del workspace non blocca mai gli `allowed-tools` di una skill in nessuna sessione |

796| Regole `permissions.allow` e `additionalDirectories` in `.claude/settings.json` | Non utilizzate fino a quando non accettate la finestra di dialogo di trust, che appare di nuovo elencandole | Non utilizzate. Claude Code stampa un avviso [`this workspace has not been trusted`](https://code.claude.com/docs/it/errors#workspace-has-not-been-trusted) su stderr |798| Regole `permissions.allow` e `additionalDirectories` in `.claude/settings.json` | Non utilizzate finché non accetti la finestra di dialogo di trust, che appare di nuovo elencandole | Non utilizzate. Claude Code stampa un avviso [`this workspace has not been trusted`](https://code.claude.com/docs/it/errors#workspace-has-not-been-trusted) su stderr |

797| Hook nel frontmatter di un [subagent](https://code.claude.com/docs/it/sub-agents.md#hooks-in-subagent-frontmatter) del progetto, un plugin [`@skills-dir`](https://code.claude.com/docs/it/plugins/loading#plugins-shared-through-a-repository) del progetto, e voci [`extraKnownMarketplaces`](https://code.claude.com/docs/it/settings-reference#extraknownmarketplaces) dal repository o da una directory `--add-dir` | Non utilizzate, e nessuna finestra di dialogo è offerta | Non utilizzate |799| Hook nel frontmatter di un [subagent](https://code.claude.com/docs/it/sub-agents.md#hooks-in-subagent-frontmatter) del progetto, un [plugin `@skills-dir`](https://code.claude.com/docs/it/plugins/loading#plugins-shared-through-a-repository) del progetto e voci [`extraKnownMarketplaces`](https://code.claude.com/docs/it/settings-reference#extraknownmarketplaces) dal repository o da una directory `--add-dir` | Non utilizzati, e non viene offerta alcuna finestra di dialogo | Non utilizzati |

798| Inline [`mcpServers`](https://code.claude.com/docs/it/sub-agents#scope-mcp-servers-to-a-subagent) nel frontmatter di un subagent dal repository o da una directory `--add-dir` | Non utilizzate, e nessuna finestra di dialogo è offerta | Non utilizzate |800| [`mcpServers`](https://code.claude.com/docs/it/sub-agents#scope-mcp-servers-to-a-subagent) inline nel frontmatter di un subagent dal repository o da una directory `--add-dir` | Non utilizzati, e non viene offerta alcuna finestra di dialogo | Non utilizzati |

799| Server in `.mcp.json`, inclusi quelli che il repository [approva nelle sue stesse impostazioni](https://code.claude.com/docs/it/mcp.md#project-server-approvals-and-workspace-trust) | Claude Code vi chiede prima di connettersi ad essi. Le approvazioni del repository stesso non contano | Connessi senza chiedere, approvati o no. L'SDK li carica solo quando `settingSources` include impostazioni del progetto. `claude mcp list` nella stessa cartella riporta comunque tale server come in sospeso |801| Server in `.mcp.json`, inclusi quelli che il repository [approva nelle sue stesse impostazioni](https://code.claude.com/docs/it/mcp.md#project-server-approvals-and-workspace-trust) | Claude Code ti chiede conferma prima di connetterli. Le approvazioni del repository stesso non contano | Connessi senza chiedere, approvati o no. L'SDK li carica solo quando `settingSources` include le impostazioni del progetto. `claude mcp list` nella stessa cartella riporta comunque tale server come in sospeso |

800| Un [`headersHelper`](https://code.claude.com/docs/it/mcp#trust-a-folder-before-its-headershelper-runs) su un server in `.mcp.json` | Non eseguito fino a quando non accettate la finestra di dialogo di trust, che appare di nuovo nominando dove l'helper è dichiarato. Claude Code connette il server con i suoi soli `headers` statici fino ad allora | Non eseguito. Claude Code connette il server con i suoi soli `headers` statici e stampa una riga [`headersHelper not run`](https://code.claude.com/docs/it/errors#headershelper-not-run) per server su stderr |802| Un [`headersHelper`](https://code.claude.com/docs/it/mcp#trust-a-folder-before-its-headershelper-runs) su un server in `.mcp.json` | Non eseguito finché non accetti la finestra di dialogo di trust, che appare di nuovo indicando dove è dichiarato l'helper. Fino ad allora Claude Code connette il server con i soli `headers` statici | Non eseguito. Claude Code connette il server con i soli `headers` statici e stampa una riga [`headersHelper not run`](https://code.claude.com/docs/it/errors#headershelper-not-run) per ogni server su stderr |

801 803 

802Per le righe che hanno bisogno di questa cartella esatta fidata, fidate la cartella manualmente: impostate `projects["<path>"].hasTrustDialogAccepted` a `true` in `~/.claude.json`, dove `<path>` è la radice del repository, o la cartella stessa al di fuori di un repository. Claude Code stampa la chiave esatta nella riga del log di debug per un hook subagent saltato o un server MCP inline, nell'avviso su stderr per regole di autorizzazione saltate, e nella riga `headersHelper not run` per un helper saltato.804Per le righe che richiedono che proprio questa cartella sia considerata attendibile, impostane il trust manualmente: imposta `projects["<path>"].hasTrustDialogAccepted` a `true` in `~/.claude.json`, dove `<path>` è la radice del repository, oppure la cartella stessa al di fuori di un repository. Claude Code stampa la chiave esatta nella riga del log di debug per un hook di subagent o un server MCP inline saltato, nell'avviso su stderr per le regole allow saltate e nella riga `headersHelper not run` per un helper saltato.

803 805 

804Prima di eseguire `claude -p` in un repository che non avete scritto, decidete cosa potrebbe eseguire sulla vostra macchina:806Prima di eseguire `claude -p` in un repository che non hai scritto tu, decidi cosa può eseguire sulla tua macchina:

805 807 

806* Passate `--setting-sources user`, o impostate `settingSources` dell'SDK senza impostazioni del progetto, in modo che Claude Code non legga né i file di impostazioni del progetto né il suo `.mcp.json`808* Passa `--setting-sources user`, oppure imposta `settingSources` dell'SDK senza le impostazioni del progetto, in modo che Claude Code non legga né i file di impostazioni del progetto né il suo `.mcp.json`

807* Iniziate con [`--bare`](https://code.claude.com/docs/it/headless#start-faster-with-bare-mode) in modo che Claude Code non legga hook, skill, comandi personalizzati, subagent, plugin, o server `.mcp.json` dal progetto. Il blocco `env` del progetto e helper come `awsAuthRefresh` nei suoi file di impostazioni si applicano comunque, e Claude Code legge `apiKeyHelper` solo da `--settings`809* Avvia con [`--bare`](https://code.claude.com/docs/it/headless#start-faster-with-bare-mode) in modo che Claude Code non legga hook, skill, comandi personalizzati, subagent, plugin o server `.mcp.json` dal progetto. Il blocco `env` del progetto e gli helper come `awsAuthRefresh` nei suoi file di impostazioni si applicano comunque, e Claude Code legge `apiKeyHelper` solo da `--settings`

808* Passate `--settings '{"disableAllHooks": true}'` per [disattivare gli hook](https://code.claude.com/docs/it/hooks.md#disable-or-remove-hooks) per quella esecuzione. Impostarlo solo nelle vostre impostazioni utente non è sufficiente, perché le impostazioni del progetto del repository hanno precedenza sulle vostre e possono impostarlo di nuovo a `false`810* Passa `--settings '{"disableAllHooks": true}'` per [disattivare gli hook](https://code.claude.com/docs/it/hooks.md#disable-or-remove-hooks) per quell'esecuzione. Impostarlo solo nelle tue impostazioni utente non basta, perché le impostazioni del progetto del repository hanno la precedenza sulle tue e possono reimpostarlo a `false`

809* Aggiungete una voce [`disabledMcpjsonServers`](https://code.claude.com/docs/it/settings-reference#disabledmcpjsonservers) per rifiutare un server `.mcp.json` per nome in ogni tipo di sessione811* Aggiungi una voce [`disabledMcpjsonServers`](https://code.claude.com/docs/it/settings-reference#disabledmcpjsonservers) per rifiutare un server `.mcp.json` per nome in ogni tipo di sessione

810 812 

811## Configurazioni di esempio813## Configurazioni di esempio

812 814 

Details

313 313 

314Per vedere le chiamate agli strumenti che l'API ha eseguito autonomamente durante la richiesta, come le chiamate allo [strumento advisor](https://code.claude.com/docs/it/advisor.md), leggi `result.serverToolUses`. Claude Code non esegue queste chiamate, quindi nessun hook `tool.call` o `tool.check` si attiva per esse. Il campo è assente quando la risposta non contiene chiamate di questo tipo e richiede Claude Code v2.1.290 o successivo.314Per vedere le chiamate agli strumenti che l'API ha eseguito autonomamente durante la richiesta, come le chiamate allo [strumento advisor](https://code.claude.com/docs/it/advisor.md), leggi `result.serverToolUses`. Claude Code non esegue queste chiamate, quindi nessun hook `tool.call` o `tool.check` si attiva per esse. Il campo è assente quando la risposta non contiene chiamate di questo tipo e richiede Claude Code v2.1.290 o successivo.

315 315 

316#### Inviare una richiesta a un modello diverso

317 

318Se una richiesta `turn.step` non riesce con un errore del modello quando `model` è un alias come `haiku`, aggiorna a Claude Code v2.1.309 o successivo, oppure usa un id di modello completo. Prima della v2.1.309, un alias veniva inviato così come scritto.

319 

320Per inviare una richiesta a un modello diverso, passa a `next` l'evento con `model` modificato, come in `yield* next({ ...e, model: 'haiku' })`.

321 

316### Modificare o rifiutare una lettura delle impostazioni322### Modificare o rifiutare una lettura delle impostazioni

317 323 

318Un hook `settings.read` viene eseguito sulla lettura di un mod e sulla lettura di Claude Code stesso:324Usa un hook `settings.read` per modificare o rifiutare una lettura delle impostazioni, sia quella di un mod sia quella di Claude Code stesso:

319 325 

320* **La lettura di un mod**: un mod chiama [`$.settings.read`](https://code.claude.com/docs/it/plugins/mods/api#read-one-source-or-one-key).326* **La lettura di un mod**: un mod chiama [`$.settings.read`](https://code.claude.com/docs/it/plugins/mods/api#read-one-source-or-one-key).

321* **La lettura di Claude Code stesso**: Claude Code costruisce le impostazioni unite della sessione. Questa lettura si ripete quando cambiano le impostazioni o i plugin caricati.327* **La lettura di Claude Code stesso**: il tuo hook viene eseguito per la prima volta quando Claude Code unisce le impostazioni della sessione, dopo che i mod della sessione sono stati caricati. Il tuo hook viene eseguito di nuovo quando cambiano le impostazioni o i plugin caricati.

322 328 

323Prima di fare affidamento su una delle due letture, verifica la protezione e la tua versione:329Verifica quali mod ricevono questo evento e la tua versione di Claude Code:

324 330 

325* **La protezione integrata**: con le impostazioni gestite, o con un [`/login`](https://code.claude.com/docs/it/authentication#authentication-precedence) Team o Enterprise come credenziale della sessione, la [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default) può saltare questo hook in un mod che installi o carichi con `--plugin-dir`. Per verificarlo, cerca nel [log di debug](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#read-the-debug-log) `settings.read bypassed by cc-plugin-sec-default`. Se una riga con quel testo nomina il tuo mod, chiedi all'amministratore della tua organizzazione di [installare il mod come uno dei mod dell'organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods).331* **La protezione integrata**: con le impostazioni gestite, o con un [`/login`](https://code.claude.com/docs/it/authentication#authentication-precedence) Team o Enterprise come credenziale della sessione, la [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default) può saltare questo hook in un mod che installi o carichi con `--plugin-dir`. Per verificarlo, cerca nel [log di debug](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#read-the-debug-log) `settings.read bypassed by cc-plugin-sec-default`. Se una riga con quel testo nomina il tuo mod, chiedi all'amministratore della tua organizzazione di [installare il mod come uno dei mod dell'organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods).

326* **La versione**: l'attivazione dell'evento sulla lettura di Claude Code stesso, e il campo `e.layers`, richiedono Claude Code v2.1.304 o successivo.332* **La versione**: l'attivazione dell'evento sulla lettura di Claude Code stesso, e il campo `e.layers`, richiedono Claude Code v2.1.304 o successivo.


336 342 

337#### Distinguere la lettura di Claude Code stesso dalla lettura di un mod343#### Distinguere la lettura di Claude Code stesso dalla lettura di un mod

338 344 

339Nella [lettura di Claude Code stesso](#settings-read-hook), [`next.origin`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function) è `{ plugin: 'engine', tier: 'core' }`, e nella lettura di un mod `next.origin.plugin` è il nome del mod chiamante.345Controlla [`next.origin`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function):

346 

347* **La lettura di Claude Code stesso**: `{ plugin: 'engine', tier: 'core' }`

348* **La lettura di un mod**: `plugin` è il nome del mod chiamante

340 349 

341#### Cosa può restituire un hook `settings.read`350#### Cosa può restituire un hook `settings.read`

342 351 

343Il tuo hook può restituire il risultato di [`next(e)`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function) invariato, un `{ value }` proprio oppure `{ deny: reason }`. Nella [lettura di Claude Code stesso](#settings-read-hook) e nella lettura di un mod, un `{ value }` sostituisce ciò che la lettura fornisce e `{ deny: reason }` rifiuta la lettura:352Restituisci invariato il risultato di [`next(e)`](#settings-read-next) per lasciare la lettura così com'è, oppure restituisci uno di questi:

344 353 

345| Valore restituito | Nella lettura di Claude Code stesso | Nella lettura di un mod |354| Valore restituito | Nella [lettura di Claude Code stesso](#settings-read-hook) | Nella lettura di un mod |

346| :- | :- | :- |355| :- | :- | :- |

347| `{ value }` | Per ogni chiave che modifichi, ciò che restituisci sostituisce l'intero valore di quella chiave nelle impostazioni unite della sessione, se [rispetta lo schema della chiave](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-refused) | La chiamata di quel mod si risolve nel tuo `value`, oppure nella `key` richiesta presa dal tuo `value`, quindi restituisci un oggetto intero e non un array |356| `{ value }` | Per ogni chiave modificata, sostituisci il suo intero valore nelle impostazioni unite della sessione, se il tuo [rispetta lo schema della chiave](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-refused) | La chiamata di quel mod si risolve nel tuo `value`, oppure nella `key` richiesta presa dal tuo `value`, quindi restituisci un oggetto intero e non un array |

348| `{ deny: reason }` | La sessione mantiene le impostazioni così come erano state unite prima che qualsiasi hook rispondesse, e il [log di debug registra il tuo `reason`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#settings-read-refused) | La chiamata di quel mod viene rifiutata con `<calling mod>: $.settings.read: <reason>` |357| `{ deny: reason }` | La sessione mantiene le impostazioni così come erano state unite prima che qualsiasi hook rispondesse, e il [log di debug registra il tuo `reason`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#settings-read-refused) | La chiamata di quel mod viene rifiutata con `<calling mod>: $.settings.read: <reason>` |

349 358 

350Nella lettura di Claude Code stesso, costruisci il tuo `{ value }` a partire dal [`value` di `next(e)`](#settings-read-next), poiché una chiave che ometti risulta non impostata. Quando Claude Code legge una chiave come `env` da ciascuna origine separatamente, modificarla nel tuo `value` [non ha effetto](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-no-effect).359Nella lettura di Claude Code stesso, costruisci il tuo `{ value }` a partire dal [`value` di `next(e)`](#settings-read-next), poiché una chiave che ometti risulta non impostata. Quando Claude Code legge una chiave come `env` da ciascuna origine separatamente, modificarla nel tuo `value` [non ha effetto](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-no-effect).


373})382})

374```383```

375 384 

376Nella lettura di Claude Code stesso, se il tuo hook restituisce un valore al di fuori dello schema della chiave, come una stringa, solo quella chiave mantiene il valore unito prima che qualsiasi hook rispondesse. Il log di debug riporta quindi [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#settings-read-key-refused). Se il tuo valore è valido e la chiave comunque non cambia, consulta [perché una chiave restituita non ha effetto](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-no-effect).385Nella lettura di Claude Code stesso, se il tuo hook restituisce un valore al di fuori dello schema della chiave, come una stringa, solo quella chiave mantiene il valore unito prima che qualsiasi hook rispondesse. Il log di debug riporta quindi [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#settings-read-key-refused). Se il tuo valore è valido e la chiave comunque non cambia, consulta [perché una chiave non ha effetto](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

377 386 

378### Gestire gli eventi degli hook delle impostazioni387### Gestire gli eventi degli hook delle impostazioni

379 388 

Details

421Note: Type a note and press Enter421Note: Type a note and press Enter

422```422```

423 423 

424Aggiungi `rows` per permettere al campo di contenere più righe. Invio continua a inviare il testo, e una barra rovesciata prima di Invio inizia una nuova riga, così come Shift+Invio dove [il terminale lo supporta](https://code.claude.com/docs/it/terminal-config.md#enter-multiline-prompts). La galleria mostra [un campo con `rows`](https://code.claude.com/docs/it/plugins/mods/gallery#input).424Imposta `rows` a 2 o più per [un campo che contiene più righe](https://code.claude.com/docs/it/plugins/mods/gallery.md#input).

425 425 

426La [galleria dell'interfaccia](https://code.claude.com/docs/it/plugins/mods/gallery.md) contiene esempi e screenshot della maggior parte degli elementi. Questa tabella elenca tutti gli elementi:426La [galleria dell'interfaccia](https://code.claude.com/docs/it/plugins/mods/gallery.md) contiene esempi e screenshot della maggior parte degli elementi. Questa tabella elenca tutti gli elementi:

427 427 


546| Tasto | Cosa fa |546| Tasto | Cosa fa |

547| :- | :- |547| :- | :- |

548| Tab | Passa al controllo successivo |548| Tab | Passa al controllo successivo |

549| Su e Giù | Spostano tra i controlli finché il tuo disegno entra nello spazio disponibile. Quando il pannello o la banda ha più righe di quante ne possa mostrare, lo fanno scorrere. In un `Input`, [si spostano prima tra le righe del campo](https://code.claude.com/docs/it/plugins/mods/gallery.md#input). |549| Su e Giù | Spostano tra i controlli finché il tuo disegno entra nello spazio disponibile. Quando il pannello o la banda ha più righe di quante ne possa mostrare, lo fanno scorrere. In un `Input` nel terminale, [si spostano tra le righe del campo](https://code.claude.com/docs/it/plugins/mods/gallery.md#input), e dalla sua prima o ultima riga passano al controllo precedente o successivo. |

550| Invio | Preme il `Button` con il focus, invia l'`Input` con il focus o effettua la scelta in un `Select` |550| Invio | Preme il `Button` con il focus, invia l'`Input` con il focus o effettua la scelta in un `Select` |

551| Il tasto di scelta rapida di un pulsante | Preme quel pulsante. Mentre un `Input` ha il focus, ogni tasto stampabile va al campo. |551| Il tasto di scelta rapida di un pulsante | Preme quel pulsante. Mentre un `Input` ha il focus, ogni tasto stampabile va al campo. |

552| Pagina su, Pagina giù, Home e Fine | Fanno scorrere il tuo pannello o la tua banda quando ha più righe di quante ne possa mostrare |552| Pagina su, Pagina giù, Home e Fine | Fanno scorrere il tuo pannello o la tua banda quando ha più righe di quante ne possa mostrare |

Details

110 110 

111### Comandi e configurazione111### Comandi e configurazione

112 112 

113Gli eventi dei comandi e della configurazione si attivano quando un comando viene eseguito o elencato, quando una riga di `/config` viene mostrata o modificata e durante una lettura delle impostazioni:

114 

115| Evento | Si attiva quando | Un hook può restituire |113| Evento | Si attiva quando | Un hook può restituire |

116| :- | :- | :- |114| :- | :- | :- |

117| [`command.run`](https://code.claude.com/docs/it/plugins/mods/api#add-a-command) | Un comando sta per essere eseguito | `{ text }`, `{}` oppure `next(e)` |115| [`command.run`](https://code.claude.com/docs/it/plugins/mods/api#add-a-command) | Un comando sta per essere eseguito | `{ text }`, `{}` oppure `next(e)` |

118| `command.describe` | Una volta per ogni comando, per l'elenco dei comandi | `{ description, argumentHint, isHidden }` |116| `command.describe` | Una volta per ogni comando, per l'elenco dei comandi | `{ description, argumentHint, isHidden }` |

119| `config.set` | Una riga di `/config` sta per cambiare | `next({ ...e, value })` oppure `{ deny: reason }` |117| `config.set` | Una riga di `/config` sta per cambiare | `next({ ...e, value })` oppure `{ deny: reason }` |

120| `config.describe` | Una volta per ogni riga di `/config` | `{ label, description, isHidden }` |118| `config.describe` | Una volta per ogni riga di `/config` | `{ label, description, isHidden }` |

121| [`settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook) | Un mod chiama [`$.settings.read`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network), oppure Claude Code costruisce le impostazioni unite della sessione | `next(e)`, `{ value }` oppure `{ deny: reason }` |119| [`settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook) | Un mod chiama [`$.settings.read`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network), oppure Claude Code costruisce le impostazioni unite della sessione. Richiede Claude Code v2.1.304 o versioni successive per la lettura effettuata da Claude Code stesso e per `e.layers` | `next(e)`, `{ value }` oppure `{ deny: reason }` |

122 120 

123#### `e.layers` e `e.source` su `settings.read`121#### `e.layers` e `e.source` su `settings.read`

124 122 

125* **`e.layers`**: un oggetto `{ source, settings }` per ogni origine in uso che contiene impostazioni, a partire da quella con la [precedenza](https://code.claude.com/docs/it/settings.md#settings-precedence) più bassa. Consulta [Cosa riceve un hook `settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-receives).123* **`e.layers`**: un oggetto `{ source, settings }` per ogni origine in uso che contiene impostazioni, a partire da quella con la [precedenza](https://code.claude.com/docs/it/settings.md#settings-precedence) più bassa. Consulta [Cosa riceve un hook `settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-receives).

126* **`e.source`**: l'unica origine richiesta da un mod, come in `$.settings.read({ source: 'policy' })`. Assente nella lettura effettuata da Claude Code stesso e in qualsiasi altra lettura delle impostazioni unite124* **`e.source`**: l'unica origine richiesta da un mod, come in `$.settings.read({ source: 'policy' })`. Assente nella lettura effettuata da Claude Code stesso e in una lettura delle impostazioni unite

127 

128Su `settings.read`, l'attivazione dell'evento durante la lettura effettuata da Claude Code stesso e il campo `e.layers` richiedono Claude Code v2.1.304 o versioni successive. Per sapere quando viene eseguito l'hook e cosa può restituire, con un esempio, consulta [Modificare o rifiutare una lettura delle impostazioni](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-hook).

129 125 

130### Turni126### Turni

131 127 


271| :- | :- | :-: | :-: | :-: |267| :- | :- | :-: | :-: | :-: |

272| [`Box`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `key`, layout flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |268| [`Box`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `key`, layout flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |

273| [`Text`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |269| [`Text`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |

274| [`Button`](https://code.claude.com/docs/it/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `hover` | ✓ | ✓ | ✓ |270| [`Button`](https://code.claude.com/docs/it/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `children`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `variant`, `role`, `hover` | ✓ | ✓ | ✓ |

275| [`Link`](https://code.claude.com/docs/it/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Limiti](#limits). | ✓ | ✓ | ✓ |271| [`Link`](https://code.claude.com/docs/it/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Limiti](#limits). | ✓ | ✓ | ✓ |

276| [`Code`](https://code.claude.com/docs/it/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |272| [`Code`](https://code.claude.com/docs/it/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |

277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |273| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |


288* **Hotkey numerici nella banda**: un `hotkey` numerico su un pulsante nella banda si attiva anche quando l'utente digita solo quella cifra in un prompt vuoto e si ferma284* **Hotkey numerici nella banda**: 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

289* **Una banda compressa**: mentre la banda è [compressa](https://code.claude.com/docs/it/plugins/mods/interface.md#when-the-user-collapses-the-band), né una combinazione `action` né un hotkey premono un pulsante al suo interno285* **Una banda compressa**: mentre la banda è [compressa](https://code.claude.com/docs/it/plugins/mods/interface.md#when-the-user-collapses-the-band), né una combinazione `action` né un hotkey premono un pulsante al suo interno

290* **Due pulsanti sullo stesso hotkey**: quando due pulsanti nello stesso disegno indicano lo stesso `hotkey`, lo ottiene quello successivo286* **Due pulsanti sullo stesso hotkey**: quando due pulsanti nello stesso disegno indicano lo stesso `hotkey`, lo ottiene quello successivo

287* **`variant`**: `primary` o `secondary`, e qualsiasi altro valore genera un'eccezione. Nel terminale, un pulsante `primary` viene disegnato nel colore di accento, a meno che non sia `plain`.

288* **`role`**: `dismiss` contrassegna un pulsante di chiusura, e qualsiasi altro valore genera un'eccezione. Esegui la chiusura nel tuo `onPress`. In una banda che contiene testo e una riga di pulsanti, l'app Desktop può disegnare il primo pulsante `dismiss` della riga come un proprio controllo di chiusura. Il terminale disegna il pulsante come farebbe senza `role`.

289 

290Un `Button` può contenere `children` al posto di una `label`:

291 

292* **Cosa possono essere i children**: stringhe ed elementi `Text`, come un nome seguito da un dettaglio attenuato o da un chip colorato. Claude Code rifiuta qualsiasi altro elemento all'interno di un `Button`.

293* **Assegnare un nome al pulsante**: la `label` assegna il nome al pulsante e, per impostazione predefinita, corrisponde al testo dei suoi children. Assegna una `key` o una `label` a un pulsante con children diversi da una singola stringa.

294* **Nel terminale**: i children vengono disegnati dove si troverebbe la label, e una pressione in qualsiasi punto su di essi conta come una sola pressione, quindi puoi trasformare ogni riga di un elenco in un singolo pulsante

295* **Nell'app Desktop e nell'estensione VS Code**: il pulsante disegna la sua `label`

296 

297> [!NOTE]

298>

299> Un `Button` con children diversi da una singola stringa richiede Claude Code v2.1.295 o successivo.

291 300 

292`autoFocus` accetta solo `true` su qualsiasi controllo, quindi ometti la prop per lasciarlo disattivato.301`autoFocus` accetta solo `true` su qualsiasi controllo, quindi ometti la prop per lasciarlo disattivato.

293 302 


295 304 

296* **`Box`**: `position` con i relativi `top`, `left`, `right` e `bottom`, `alignSelf`, `borderDimColor` e `hover`305* **`Box`**: `position` con i relativi `top`, `left`, `right` e `bottom`, `alignSelf`, `borderDimColor` e `hover`

297* **`Text`**: `size`, `mono`, `tabular` e `hover`306* **`Text`**: `size`, `mono`, `tabular` e `hover`

298* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action` e `hover`, quindi lì l'utente preme un pulsante con un clic, oppure con Invio quando ha il focus307* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action` e `hover`, quindi lì l'utente preme un pulsante con un clic, oppure con Invio quando ha il focus. L'estensione ignora anche `variant` e `role`.

299* **`Code`**: `language`, `path`, `startLine`, `format` e `wrap`, quindi il codice viene disegnato senza colori né numeri di riga, e un blocco `format: 'diff'` mostra il testo grezzo del diff308* **`Code`**: `language`, `path`, `startLine`, `format` e `wrap`, quindi il codice viene disegnato senza colori né numeri di riga, e un blocco `format: 'diff'` mostra il testo grezzo del diff

300* **`Input` e `Select`**: `autoFocus`309* **`Input` e `Select`**: `autoFocus`, e `rows` su un `Input`

301* **`Svg`**: `isInteractive`310* **`Svg`**: `isInteractive`

302 311 

303### Stili del bordo di `Box`312### Stili del bordo di `Box`


364| Il tempo di esecuzione di un gestore `.catch` | 1 secondo |373| Il tempo di esecuzione di un gestore `.catch` | 1 secondo |

365| Tutti gli hook `session.end` insieme | Quanto il [budget dell'hook SessionEnd](https://code.claude.com/docs/it/hooks.md#sessionend-input), 1,5 secondi a meno che tu non lo modifichi, contati da quando terminano gli hook `SessionEnd` delle tue impostazioni |374| Tutti gli hook `session.end` insieme | Quanto il [budget dell'hook SessionEnd](https://code.claude.com/docs/it/hooks.md#sessionend-input), 1,5 secondi a meno che tu non lo modifichi, contati da quando terminano gli hook `SessionEnd` delle tue impostazioni |

366| Timeout di `$.process.run` | 30 secondi per impostazione predefinita, 10 minuti al massimo |375| Timeout di `$.process.run` | 30 secondi per impostazione predefinita, 10 minuti al massimo |

376| `stdout` e `stderr` di `$.process.run` | 4 MiB ciascuno. `isStdoutTruncated` o `isStderrTruncated` è `true` quando uno dei due è stato troncato. |

367| `maxTokens` di `$.model.complete` | 1024 per impostazione predefinita, fino a 64.000 o al limite di output del modello |377| `maxTokens` di `$.model.complete` | 1024 per impostazione predefinita, fino a 64.000 o al limite di output del modello |

368| `$.fs.read` e `$.fs.write` | 4 MiB per un singolo file |378| `$.fs.read` e `$.fs.write` | 4 MiB per un singolo file |

369| Il corpo di una richiesta `$.http.fetch` | 4 MiB, contati in caratteri. Una chiamata con un corpo più grande viene rifiutata. |379| Il corpo di una richiesta `$.http.fetch` | 4 MiB, contati in caratteri. Una chiamata con un corpo più grande viene rifiutata. |


381| `$.store` | 4 MiB di JSON in totale |391| `$.store` | 4 MiB di JSON in totale |

382| `$.session.messages()` | Le 4.096 voci più recenti |392| `$.session.messages()` | Le 4.096 voci più recenti |

383| Ridisegni di `$.ui.invalidate('ui.render')` | Limitati a 10 al secondo, o 30 nel terminale per il riquadro visibile, la fascia espansa e la riga di suggerimento sotto il prompt. Le chiamate che arrivano prima vengono accorpate. |393| Ridisegni di `$.ui.invalidate('ui.render')` | Limitati a 10 al secondo, o 30 nel terminale per il riquadro visibile, la fascia espansa e la riga di suggerimento sotto il prompt. Le chiamate che arrivano prima vengono accorpate. |

384| `$.ui.toast` | Mostrato per 4 secondi, a meno che tu non passi `{ timeoutMs }` |394| `$.ui.toast` | Mostrato per 4 secondi, a meno che tu non passi `{ timeoutMs }`. Nel [renderer classico](https://code.claude.com/docs/it/fullscreen.md#enable-fullscreen-rendering), un toast più recente di un mod può [prendere il posto di quello precedente](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#a-toast-doesn’t-appear) che è visualizzato o in attesa di essere visualizzato. |

385| Un riquadro aperto senza che l'utente lo abbia richiesto | Posizionato a partire da 144 colonne del terminale, 110 dopo che l'utente lo ha aperto una volta |395| Un riquadro aperto senza che l'utente lo abbia richiesto | Posizionato a partire da 144 colonne del terminale, 110 dopo che l'utente lo ha aperto una volta |

396| Profondità di annidamento degli argomenti di una chiamata all'API dei mod | 28.000 livelli. Oltre questo limite, la chiamata viene rifiutata con un messaggio che termina con `nesting deeper than 28000 levels is not supported`. Richiede Claude Code v2.1.299 o versioni successive. |

397| Profondità di annidamento di un evento modificato passato a `next`, al di fuori degli [hook generatori asincroni](#events) come uno su `turn.step` | 28.000 livelli. Oltre questo limite, `next` viene rifiutato con un messaggio che termina con `nesting deeper than 28000 levels is not supported`. Richiede Claude Code v2.1.299 o versioni successive. |

398| Profondità di annidamento del valore restituito da un hook, al di fuori di `ui.render`, `ui.resolve` e degli hook generatori asincroni | 28.000 livelli. Oltre questo limite, il risultato dell'hook viene rifiutato e [l'avviso che lo segnala](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing) include `nesting deeper than 28000 levels is not supported`. Richiede Claude Code v2.1.299 o versioni successive. |

386| Scope, come funzioni, blocchi e cicli, annidati l'uno dentro l'altro in un singolo file di un modulo degli hook | 2.000 |399| Scope, come funzioni, blocchi e cicli, annidati l'uno dentro l'altro in un singolo file di un modulo degli hook | 2.000 |

387| Nomi di comandi, strumenti, tipi di subagent e riquadri | Lettere, cifre, `_` e `-`, fino a 64 caratteri |400| Nomi di comandi, strumenti, tipi di subagent e riquadri | Lettere, cifre, `_` e `-`, fino a 64 caratteri |

388| Un singolo test di `claude plugin test` | 5 secondi, a meno che il test non imposti `timeoutMs` |401| Un singolo test di `claude plugin test` | 5 secondi, a meno che il test non imposti `timeoutMs` |

Details

341 341 

342### Una chiave restituita dal tuo hook `settings.read` non ha effetto342### Una chiave restituita dal tuo hook `settings.read` non ha effetto

343 343 

344Le voci `env` restituite non diventano variabili d'ambiente. Le regole `allow`, `ask` e `deny` restituite non vengono verificate nelle chiamate agli strumenti. Impostale in un [file di impostazioni](https://code.claude.com/docs/it/settings.md), oppure chiama [`$.env.set`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) per le variabili d'ambiente.344Se restituisci regole di permesso o `env` nella [lettura propria di Claude Code](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-hook), le regole non vengono verificate nelle chiamate agli strumenti e le voci `env` non diventano variabili d'ambiente. Usa un [file di impostazioni](https://code.claude.com/docs/it/settings.md) per entrambi, oppure [`$.env.set`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) per `env`.

345 345 

346Per un'altra chiave, verifica [quali mod ricevono `settings.read` e da quale versione](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook), poi cerca `settings.read` nel [log di debug](#read-the-debug-log) e individua una di queste righe:346Per un'altra chiave, verifica [quali mod ricevono `settings.read` e da quale versione](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook), poi cerca `settings.read` nel [log di debug](#read-the-debug-log) e individua una di queste righe:

347 347 


349| :- | :- |349| :- | :- |

350| `settings.read hook skipped`, dopo il nome del tuo mod | Il tuo hook non è riuscito. [Correggi l'errore riportato dalla riga](#hook-skipped). |350| `settings.read hook skipped`, dopo il nome del tuo mod | Il tuo hook non è riuscito. [Correggi l'errore riportato dalla riga](#hook-skipped). |

351| `settings.read bypassed by cc-plugin-sec-default`, su una riga che nomina il tuo mod prima di esso | La [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default) ha saltato il tuo hook. Chiedi all'amministratore della tua organizzazione di [installare il mod come uno dei mod dell'organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods). |351| `settings.read bypassed by cc-plugin-sec-default`, su una riga che nomina il tuo mod prima di esso | La [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default) ha saltato il tuo hook. Chiedi all'amministratore della tua organizzazione di [installare il mod come uno dei mod dell'organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods). |

352| `settings.read: the answer for <key> is no value the key can hold` | Il valore restituito non è conforme allo schema della chiave. [Restituiscine uno consentito](#settings-read-key-refused). |352| `settings.read: the answer for <key> is no value the key can hold` | Claude Code ha rifiutato il valore restituito da un hook per quella chiave. L'hook può essere il tuo o quello di un altro mod. Segui [il passaggio per il tuo caso](#settings-read-key-refused). |

353| `settings.read: the merge never settles for <key>` | Le chiavi nominate dalla riga mantengono i valori delle origini delle impostazioni. Impostale in un file di impostazioni. |353| `settings.read: the merge never settles for <key>` | Le chiavi nominate dalla riga mantengono i valori delle origini delle impostazioni. Impostale in un file di impostazioni. |

354| `answered settings.read without next()`, dopo il nome di un mod | Rilevante solo se quel mod [viene eseguito prima del tuo](https://code.claude.com/docs/it/plugins/mods/events.md#the-order-mods-run-in). In tal caso il tuo hook non è stato eseguito in quella lettura. [Disattiva quel mod](https://code.claude.com/docs/it/plugins/mods/overview.md#turn-mods-on-or-off) oppure, se è stato distribuito dalla tua organizzazione, chiedi al suo amministratore di farlo. |354| `answered settings.read without next()`, dopo il nome di un mod | Il tuo hook è interessato se il mod indicato [viene eseguito prima del tuo](https://code.claude.com/docs/it/plugins/mods/events.md#the-order-mods-run-in). In tal caso il tuo hook non è stato eseguito in quella lettura. [Disattiva quel mod](https://code.claude.com/docs/it/plugins/mods/overview.md#turn-mods-on-or-off) oppure, se è stato distribuito dalla tua organizzazione, chiedi al suo amministratore di farlo. |

355| `settings.read: refused to the engine` | La lettura è stata rifiutata, quindi nessun `{ value }` di alcun hook è stato applicato. [Scopri cosa l'ha rifiutata](#settings-read-refused). |355| `settings.read: refused to the engine` | Il tuo valore non è stato applicato perché la lettura propria di Claude Code è stata rifiutata. [Scopri cosa l'ha rifiutata](#settings-read-refused). |

356 356 

357Se nessuna riga spiega la chiave, controlla i mod eseguiti prima del tuo per individuare un hook `settings.read` che [modifica la chiave](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-example). Disattiva quel mod, oppure chiedi all'amministratore della tua organizzazione di farlo. Se nessun hook lo fa, imposta la chiave in un file di impostazioni.357Se nessuna riga spiega la chiave, controlla i mod eseguiti prima del tuo per individuare un hook `settings.read` che [modifica la chiave](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-example). Disattiva quel mod, oppure chiedi all'amministratore della tua organizzazione di farlo. Se nessun hook lo fa, imposta la chiave in un file di impostazioni.

358 358 

359### `the answer for <key> is no value the key can hold`359### `the answer for <key> is no value the key can hold`

360 360 

361Questa riga del [log di debug](#read-the-debug-log) indica che Claude Code ha rifiutato il valore restituito dal tuo hook [`settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook) per la chiave indicata, e solo per quella chiave:361Questa riga del [log di debug](#read-the-debug-log) indica che Claude Code ha rifiutato il valore restituito da un hook [`settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook) per la chiave indicata, e solo per quella chiave:

362 362 

363```text theme={null}363```text theme={null}

364settings.read: the answer for <key> is no value the key can hold; the settings' own value stands364settings.read: the answer for <key> is no value the key can hold; the settings' own value stands

365```365```

366 366 

367Il valore che hai restituito per la chiave indicata non era conforme allo schema di quella chiave, ad esempio per tipo o per intervallo. Restituisci un valore consentito dalla voce della chiave nel [riferimento delle impostazioni](https://code.claude.com/docs/it/settings-reference.md). Finché il tuo valore non è conforme, la chiave mantiene il valore risultante dal merge delle origini delle impostazioni prima che qualsiasi hook rispondesse. La riga lo chiama il valore proprio delle impostazioni.367Il valore restituito per la chiave indicata non era conforme allo schema di quella chiave, ad esempio per tipo o per intervallo.

368 

369* **Il tuo valore non è conforme allo schema della chiave**: restituiscine uno consentito dalla voce della chiave nel [riferimento delle impostazioni](https://code.claude.com/docs/it/settings-reference.md).

370* **Il tuo valore è conforme**: il valore non conforme proviene dall'hook `settings.read` di un altro mod. Per trovare quel mod, segui [i passaggi per disattivare i mod uno alla volta](#settings-read-refused). Cerca questa riga in ogni nuovo log invece di `refused to the engine`.

371 

372Finché il valore non è conforme, la chiave mantiene il valore risultante dal merge delle origini delle impostazioni prima che qualsiasi hook rispondesse. La riga lo chiama il valore proprio delle impostazioni.

368 373 

369### `settings.read: refused to the engine`374### `settings.read: refused to the engine`

370 375 

371Questa riga del [log di debug](#read-the-debug-log) indica che [la lettura propria di Claude Code](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-hook) è stata rifiutata, quindi nessun `{ value }` di alcun hook è stato applicato, compreso il tuo. Quando un hook `settings.read` rifiuta quella lettura con [`{ deny: reason }`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-returns), la riga riporta il motivo di quell'hook:376Vedi questa riga nel [log di debug](#read-the-debug-log) quando [la lettura propria di Claude Code](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-hook) viene rifiutata, e Claude Code scarta il valore di ogni hook. Quando un hook `settings.read` rifiuta quella lettura con [`{ deny: reason }`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-returns), la riga riporta il motivo di quell'hook:

372 377 

373```text theme={null}378```text theme={null}

374settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand379settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand

375```380```

376 381 

377Cerca il testo `<reason>` nel codice del tuo hook:382Cerca nel tuo codice il motivo tra parentesi:

378 383 

379* **Il tuo codice lo contiene**: il tuo hook ha rifiutato la lettura. Fai in modo che restituisca `{ value }` quando [`next.origin`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-origin) indica la lettura propria di Claude Code.384* **Il tuo codice lo contiene**: il tuo hook ha rifiutato la lettura. Fai in modo che restituisca `{ value }` quando [`next.origin`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-origin) indica la lettura propria di Claude Code.

380* **Il tuo codice non lo contiene**: [disattiva](https://code.claude.com/docs/it/plugins/mods/overview.md#turn-mods-on-or-off) gli altri tuoi mod uno alla volta. Dopo ciascuno, esegui di nuovo il comando di questa sessione dalla tua shell con un solo `--debug-file` su un nuovo percorso, e cerca `refused to the engine` in quel file. Se la riga è presente, disattiva il mod successivo. In caso contrario, l'ultimo mod che hai disattivato ha rifiutato la lettura, quindi lascialo disattivato.385* **Il tuo codice non lo contiene**: [disattiva](https://code.claude.com/docs/it/plugins/mods/overview.md#turn-mods-on-or-off) gli altri tuoi mod uno alla volta. Se un mod è stato distribuito dalla tua organizzazione, chiedi al suo amministratore di disattivarlo. Dopo ciascuno:

386 1. Avvia la sessione dalla tua shell con `claude --debug-file ./settings-read-2.log`, seguito dai flag con cui era stata avviata. Usa ogni volta un nuovo percorso.

387 2. Cerca `refused to the engine` in quel file. Se la riga è presente, disattiva il mod successivo. In caso contrario, l'ultimo mod che hai disattivato ha rifiutato la lettura, quindi lascialo disattivato.

381 388 

382Se non rimane nessun altro mod, usa un [file di impostazioni](https://code.claude.com/docs/it/settings.md) per le chiavi restituite dal tuo hook. I suoi valori restano validi mentre la lettura viene rifiutata.389Se la riga rimane anche quando non resta nessun altro mod, imposta le chiavi restituite dal tuo hook in un [file di impostazioni](https://code.claude.com/docs/it/settings.md). I suoi valori restano validi mentre la lettura viene rifiutata.

383 390 

384## Leggere il log di debug391## Leggere il log di debug

385 392 

Details

192Anche l'estensione VS Code e l'app Desktop hanno un interruttore per la connessione automatica:192Anche l'estensione VS Code e l'app Desktop hanno un interruttore per la connessione automatica:

193 193 

194* **Estensione VS Code**: **Enable Remote Control for all sessions** nella sezione Settings del [menu dei comandi](https://code.claude.com/docs/it/vs-code.md#use-the-prompt-box).194* **Estensione VS Code**: **Enable Remote Control for all sessions** nella sezione Settings del [menu dei comandi](https://code.claude.com/docs/it/vs-code.md#use-the-prompt-box).

195* **App Desktop**: **Settings > Claude Code > Connect new sessions to Remote Control**. Consulta [Controllare quali sessioni appaiono sugli altri dispositivi](https://code.claude.com/docs/it/desktop.md#control-which-sessions-appear-on-your-other-devices).195* **App Desktop**: **Connect new sessions to Remote Control** in **Settings > Code** o **Settings > Claude Code**. Consulta [Controllare quali sessioni appaiono sugli altri dispositivi](https://code.claude.com/docs/it/desktop.md#control-which-sessions-appear-on-your-other-devices).

196 196 

197Per attivare la connessione automatica da un file di impostazioni, imposta [`remoteControlAtStartup`](https://code.claude.com/docs/it/settings-reference#remotecontrolatstartup) su `true` nel tuo file `~/.claude/settings.json` utente o nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md). Nelle impostazioni di progetto o locali (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code onora un `false` e disattiva la connessione automatica per quel repository, ma ignora un `true`, quindi un file archiviato non può attivare Remote Control per tutti coloro che aprono il repository.197Per attivare la connessione automatica da un file di impostazioni, imposta [`remoteControlAtStartup`](https://code.claude.com/docs/it/settings-reference#remotecontrolatstartup) su `true` nel tuo file `~/.claude/settings.json` utente o nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md). Nelle impostazioni di progetto o locali (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code onora un `false` e disattiva la connessione automatica per quel repository, ma ignora un `true`, quindi un file archiviato non può attivare Remote Control per tutti coloro che aprono il repository.

198 198 


363 * Comandi con output testuale: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` e `/reload-plugins`. `/usage-credits` stampa l'URL di fatturazione invece di aprire un browser. `/reload-plugins` funziona solo quando la sessione è in esecuzione in un terminale interattivo; una sessione senza terminale interattivo lo rifiuta.363 * Comandi con output testuale: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` e `/reload-plugins`. `/usage-credits` stampa l'URL di fatturazione invece di aprire un browser. `/reload-plugins` funziona solo quando la sessione è in esecuzione in un terminale interattivo; una sessione senza terminale interattivo lo rifiuta.

364 * `/model`, `/effort`, `/fast`, `/color` e `/rename`: passa il valore come argomento, ad esempio `/model sonnet` o `/effort high`. Da mobile e dal web, `/model` e `/effort` accettano l'argomento al posto del selettore o del cursore del terminale.364 * `/model`, `/effort`, `/fast`, `/color` e `/rename`: passa il valore come argomento, ad esempio `/model sonnet` o `/effort high`. Da mobile e dal web, `/model` e `/effort` accettano l'argomento al posto del selettore o del cursore del terminale.

365 * `/mcp`: dall'app mobile, restituisce un riepilogo testuale dello stato dei server invece di aprire il selettore. Sul web, `/mcp` da solo apre una directory di [connettori claude.ai](https://code.claude.com/docs/it/mcp.md#use-mcp-servers-from-claude-ai) invece di restituire il riepilogo. I [sottocomandi](https://code.claude.com/docs/it/commands.md#all-commands) `reconnect`, `enable` e `disable` funzionano da entrambi quando la sessione è in esecuzione in un terminale interattivo. `/mcp reconnect` senza nome del server riprova con ogni server che ha avuto un errore o che richiede l'autenticazione. Per autorizzare un connettore claude.ai senza il selettore, consulta [Autorizza di nuovo un connettore dalla tua shell](#authorize-a-connector-again-from-your-shell).365 * `/mcp`: dall'app mobile, restituisce un riepilogo testuale dello stato dei server invece di aprire il selettore. Sul web, `/mcp` da solo apre una directory di [connettori claude.ai](https://code.claude.com/docs/it/mcp.md#use-mcp-servers-from-claude-ai) invece di restituire il riepilogo. I [sottocomandi](https://code.claude.com/docs/it/commands.md#all-commands) `reconnect`, `enable` e `disable` funzionano da entrambi quando la sessione è in esecuzione in un terminale interattivo. `/mcp reconnect` senza nome del server riprova con ogni server che ha avuto un errore o che richiede l'autenticazione. Per autorizzare un connettore claude.ai senza il selettore, consulta [Autorizza di nuovo un connettore dalla tua shell](#authorize-a-connector-again-from-your-shell).

366 * `/config`: dall'app mobile, passa `key=value` per definire un'impostazione, oppure eseguilo senza argomenti per elencare le chiavi che puoi impostare. Sul web, `/config` apre invece la sezione Claude Code delle tue impostazioni.366 * `/config`: dall'app mobile, passa `key=value` per definire un'impostazione, oppure eseguilo senza argomenti per elencare le chiavi che puoi impostare. Sul web, `/config` apre invece **Settings > Code** o **Settings > Claude Code**.

367 * Nei piani Team ed Enterprise, `/usage-credits` da mobile o dal web non invia una [richiesta di crediti di utilizzo al tuo amministratore](https://code.claude.com/docs/it/costs.md#add-usage-credits-to-your-subscription). L'invio richiede una conferma che appare solo nella CLI interattiva, quindi il comando ti indica di eseguirlo lì.367 * Nei piani Team ed Enterprise, `/usage-credits` da mobile o dal web non invia una [richiesta di crediti di utilizzo al tuo amministratore](https://code.claude.com/docs/it/costs.md#add-usage-credits-to-your-subscription). L'invio richiede una conferma che appare solo nella CLI interattiva, quindi il comando ti indica di eseguirlo lì.

368 * `/autocompact`, dalla v2.1.221: passa la dimensione della finestra come argomento, ad esempio `/autocompact 500k`. Senza argomenti, stampa come testo la dimensione attuale della finestra invece di aprire la finestra di dialogo che il comando mostra in una sessione del terminale.368 * `/autocompact`, dalla v2.1.221: passa la dimensione della finestra come argomento, ad esempio `/autocompact 500k`. Senza argomenti, stampa come testo la dimensione attuale della finestra invece di aprire la finestra di dialogo che il comando mostra in una sessione del terminale.

369 * `/advisor`, dalla v2.1.260: passa il modello come argomento, ad esempio `/advisor opus`, oppure passa `off` per disattivare l'advisor. Entrambe le forme si applicano solo alla sessione corrente e lasciano invariata la tua impostazione predefinita salvata. Senza argomenti, stampa come testo l'advisor attuale invece di aprire il selettore.369 * `/advisor`, dalla v2.1.260: passa il modello come argomento, ad esempio `/advisor opus`, oppure passa `off` per disattivare l'advisor. Entrambe le forme si applicano solo alla sessione corrente e lasciano invariata la tua impostazione predefinita salvata. Senza argomenti, stampa come testo l'advisor attuale invece di aprire il selettore.

routines.md +9 −5

Details

77 77 

78**2. Dai un nome all'attività e scrivi il prompt**78**2. Dai un nome all'attività e scrivi il prompt**

79 79 

80Dai all'attività pianificata un nome descrittivo e scrivi il prompt che Claude esegue ogni volta. Il prompt è la parte più importante: l'attività viene eseguita autonomamente, quindi il prompt deve essere autosufficiente ed esplicito su cosa fare e su come si presenta il successo. Seleziona un modello nel selettore di modello dell'input del prompt. Claude lo utilizza a ogni esecuzione.80Dai all'attività pianificata un nome descrittivo e scrivi il prompt che Claude esegue ogni volta. Il prompt è la parte più importante: l'attività viene eseguita autonomamente, quindi il prompt deve essere autosufficiente ed esplicito su cosa fare e su come si presenta il successo.

81 81 

82Quando un trigger si attiva, la sessione riceve il prompt salvato come compito assegnato e lo esegue, anziché trattarlo come contenuto non attendibile arrivato a metà conversazione. Il trigger attesta solo che il prompt è stato archiviato in anticipo da una sessione autorizzata sul tuo account. Il prompt attivato non è quindi un input utente in tempo reale e non può valere come approvazione o consenso per le azioni durante l'esecuzione. Il contenuto che la sessione recupera durante l'esecuzione mantiene la sua gestione normale.82Quando un trigger si attiva, la sessione riceve il prompt salvato come compito assegnato e lo esegue, anziché trattarlo come contenuto non attendibile arrivato a metà conversazione. Il trigger attesta solo che il prompt è stato archiviato in anticipo da una sessione autorizzata sul tuo account. Il prompt attivato non è quindi un input utente in tempo reale e non può valere come approvazione o consenso per le azioni durante l'esecuzione. Il contenuto che la sessione recupera durante l'esecuzione mantiene la sua gestione normale.

83 83 


115 115 

116Se la tua attività ha bisogno di raggiungere direttamente i tuoi servizi, o un dominio al di fuori di tale elenco, modifica l'[accesso di rete](https://code.claude.com/docs/it/cloud-environments.md#network-access) dell'ambiente prima dell'esecuzione. Per utilizzare un ambiente separato, [creane uno](https://code.claude.com/docs/it/cloud-environments.md#configure-your-environment) prima.116Se la tua attività ha bisogno di raggiungere direttamente i tuoi servizi, o un dominio al di fuori di tale elenco, modifica l'[accesso di rete](https://code.claude.com/docs/it/cloud-environments.md#network-access) dell'ambiente prima dell'esecuzione. Per utilizzare un ambiente separato, [creane uno](https://code.claude.com/docs/it/cloud-environments.md#configure-your-environment) prima.

117 117 

118**6. Rivedi i connettori**118**6. Seleziona un modello e un livello di sforzo**

119 

120Seleziona un modello nel selettore di modello dell'input del prompt, che Claude utilizzerà a ogni esecuzione. Per un'attività Claude Code, se il modello offre [livelli di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level), **Effort** nello stesso selettore mostra il livello corrente. Per cambiarlo, seleziona un altro livello. L'opzione **Default** del selettore non offre livelli.

121 

122**7. Rivedi i connettori**

119 123 

120Passa alla scheda **Connectors** di **Advanced settings**. Tutti i tuoi [connettori MCP](https://code.claude.com/docs/it/mcp.md) connessi sono inclusi per impostazione predefinita. Rimuovi quelli di cui l'attività non ha bisogno: Claude può utilizzare un connettore incluso durante un'esecuzione, comprese le scritture. Per sapere quando un'esecuzione si ferma per chiederti prima conferma, consulta [Richieste di permesso durante un'esecuzione](#permission-prompts-during-a-run).124Passa alla scheda **Connectors** di **Advanced settings**. Tutti i tuoi [connettori MCP](https://code.claude.com/docs/it/mcp.md) connessi sono inclusi per impostazione predefinita. Rimuovi quelli di cui l'attività non ha bisogno: Claude può utilizzare un connettore incluso durante un'esecuzione, comprese le scritture. Per sapere quando un'esecuzione si ferma per chiederti prima conferma, consulta [Richieste di permesso durante un'esecuzione](#permission-prompts-during-a-run).

121 125 

122**7. Crea l'attività**126**8. Crea l'attività**

123 127 

124Fai clic su **Create**. La finestra di dialogo si chiude e si apre la pagina di dettaglio della nuova attività. L'attività viene eseguita la prossima volta che uno dei suoi trigger corrisponde. Per avviare subito un'esecuzione, fai clic su **Run now** nella pagina di dettaglio.128Fai clic su **Create**. La finestra di dialogo si chiude e si apre la pagina di dettaglio della nuova attività. L'attività viene eseguita la prossima volta che uno dei suoi trigger corrisponde. Per avviare subito un'esecuzione, fai clic su **Run now** nella pagina di dettaglio.

125 129 


136Nell'app Desktop, se si apre un menu con **Local** e **Cloud**, seleziona **Cloud**. Si apre una pagina intitolata **New routine** o **New scheduled task**. Compila i suoi campi:140Nell'app Desktop, se si apre un menu con **Local** e **Cloud**, seleziona **Cloud**. Si apre una pagina intitolata **New routine** o **New scheduled task**. Compila i suoi campi:

137 141 

138* **Name**: inseriscine uno.142* **Name**: inseriscine uno.

139* **Instructions**: inserisci il prompt. Nella stessa casella, seleziona il modello, i repository e l'ambiente. Per sapere cosa controlla ciascuno di essi, consulta i passaggi in [Creare dal web](#create-from-the-web).143* **Instructions**: inserisci il prompt. Nella stessa casella, seleziona il modello, il livello di sforzo se il modello ne offre uno, i repository e l'ambiente. Per sapere cosa controlla ciascuno di essi, consulta i passaggi in [Creare dal web](#create-from-the-web).

140* **Select a trigger**: seleziona **Schedule**, **GitHub event** o **API**. Per una pianificazione, consulta [Aggiungere un trigger di pianificazione](#add-a-schedule-trigger). Per un [evento GitHub](#add-a-github-trigger), seleziona un repository. Per un [trigger API](#add-an-api-trigger), copia il token dalla finestra di dialogo **API token** che si apre dopo aver fatto clic su **Create**, perché viene mostrato una sola volta. Per combinare più trigger, fai clic su **Add another trigger**.144* **Select a trigger**: seleziona **Schedule**, **GitHub event** o **API**. Per una pianificazione, consulta [Aggiungere un trigger di pianificazione](#add-a-schedule-trigger). Per un [evento GitHub](#add-a-github-trigger), seleziona un repository. Per un [trigger API](#add-an-api-trigger), copia il token dalla finestra di dialogo **API token** che si apre dopo aver fatto clic su **Create**, perché viene mostrato una sola volta. Per combinare più trigger, fai clic su **Add another trigger**.

141* **Connectors**: tutti i tuoi connettori connessi sono inclusi per impostazione predefinita, quindi rimuovi quelli di cui l'attività non ha bisogno.145* **Connectors**: tutti i tuoi connettori connessi sono inclusi per impostazione predefinita, quindi rimuovi quelli di cui l'attività non ha bisogno.

142 146 


153* **Trigger API**: modifica l'attività sul web su [claude.ai/code/routines](https://claude.ai/code/routines)157* **Trigger API**: modifica l'attività sul web su [claude.ai/code/routines](https://claude.ai/code/routines)

154* **[Trigger GitHub](#add-a-github-trigger)**: modifica l'attività sul web oppure chiedi a Claude nella CLI. Per aggiungerne uno dalla CLI serve Claude Code v2.1.225 o successivo158* **[Trigger GitHub](#add-a-github-trigger)**: modifica l'attività sul web oppure chiedi a Claude nella CLI. Per aggiungerne uno dalla CLI serve Claude Code v2.1.225 o successivo

155 159 

156Un'attività pianificata senza trigger di pianificazione, come una avviata solo da chiamate API o eventi GitHub, non ha un'ora di esecuzione successiva. La CLI non ne mostra nessuna quando Claude la salva o l'aggiorna. Prima della v2.1.211, la CLI segnalava per queste attività un'ora di esecuzione successiva nell'anno 1.160Un'attività pianificata senza trigger di pianificazione, come una avviata solo da chiamate API o eventi GitHub, non ha un'ora di esecuzione successiva. La CLI non ne mostra nessuna quando Claude la salva o l'aggiorna.

157 161 

158## Configurare i trigger162## Configurare i trigger

159 163 

sandboxing.md +2 −1

Details

320* **Ogni comando nella chiamata deve corrispondere**: `npm ci && docker compose build` resta in sandbox a meno che un'altra voce non copra `npm ci`320* **Ogni comando nella chiamata deve corrispondere**: `npm ci && docker compose build` resta in sandbox a meno che un'altra voce non copra `npm ci`

321* **Claude Code confronta il testo della chiamata**: uno script o un target `make` che chiama `docker` internamente non corrisponde, e nemmeno `/usr/local/bin/docker`321* **Claude Code confronta il testo della chiamata**: uno script o un target `make` che chiama `docker` internamente non corrisponde, e nemmeno `/usr/local/bin/docker`

322* **Alcune chiamate restano in sandbox**: un reindirizzamento a un file, un `cd` o una sostituzione di comando come `$(...)` mantiene in sandbox l'intera chiamata. La [voce di riferimento](https://code.claude.com/docs/it/settings-reference.md#sandbox-excludedcommands) elenca altre chiamate che restano in sandbox322* **Alcune chiamate restano in sandbox**: un reindirizzamento a un file, un `cd` o una sostituzione di comando come `$(...)` mantiene in sandbox l'intera chiamata. La [voce di riferimento](https://code.claude.com/docs/it/settings-reference.md#sandbox-excludedcommands) elenca altre chiamate che restano in sandbox

323* **Un `git clone` richiede percorsi relativi**: la tua voce non copre un clone che indica un percorso assoluto, un percorso che inizia con `~` o uno con un segmento `..`. Se il clone può essere posizionato all'interno della tua directory di lavoro, chiedi a Claude di usare un percorso relativo senza segmenti `..`, come `vendor/lib`

323* **Il punto in cui salvi la voce può fare la differenza**: quando la sandbox è [richiesta dall'amministratore](#repository-settings-under-an-admin-required-sandbox), Claude Code ignora le voci in `.claude/settings.json` e `.claude/settings.local.json`324* **Il punto in cui salvi la voce può fare la differenza**: quando la sandbox è [richiesta dall'amministratore](#repository-settings-under-an-admin-required-sandbox), Claude Code ignora le voci in `.claude/settings.json` e `.claude/settings.local.json`

324 325 

325Un comando escluso segue il normale flusso dei permessi:326Un comando escluso segue il normale flusso dei permessi:


354 355 

355La sandbox ha due livelli indipendenti: l'[isolamento del filesystem](#filesystem-isolation) controlla quali percorsi i comandi in sandbox possono leggere e scrivere, e l'[isolamento di rete](#network-isolation) controlla quali domini possono raggiungere. Con il livello del filesystem disattivato, i comandi in sandbox ottengono accesso illimitato in lettura e scrittura al filesystem dell'host, mentre il loro traffico di rete in uscita resta limitato ai domini consentiti. Disattiva questo livello quando usi la sandbox per controllare dove si connettono i comandi anziché cosa scrivono.356La sandbox ha due livelli indipendenti: l'[isolamento del filesystem](#filesystem-isolation) controlla quali percorsi i comandi in sandbox possono leggere e scrivere, e l'[isolamento di rete](#network-isolation) controlla quali domini possono raggiungere. Con il livello del filesystem disattivato, i comandi in sandbox ottengono accesso illimitato in lettura e scrittura al filesystem dell'host, mentre il loro traffico di rete in uscita resta limitato ai domini consentiti. Disattiva questo livello quando usi la sandbox per controllare dove si connettono i comandi anziché cosa scrivono.

356 357 

357`sandbox.filesystem.disabled` ha `false` come valore predefinito. Richiede Claude Code v2.1.216 o successivo.358`sandbox.filesystem.disabled` ha `false` come valore predefinito.

358 359 

359> [!WARNING]360> [!WARNING]

360>361>

Details

381 381 

382| Flag, con un valore di esempio | A chi passarlo | Cosa fa |382| Flag, con un valore di esempio | A chi passarlo | Cosa fa |

383| :- | :- | :- |383| :- | :- | :- |

384| `--release-idle-session-min 30` | Ogni runner avviato dal tuo hook | Il runner rilascia la sua sessione dopo quel numero di minuti di inattività e poi esce con 0. La sessione riprende quando il suo utente invia il messaggio successivo, ma [il lavoro non ancora inviato con push va perso](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#additional-limitations). |384| `--release-idle-session-min 30` | Ogni runner avviato dal tuo hook | Il runner rilascia la sua sessione dopo quel numero di minuti di inattività e poi esce con 0. La sessione riprende quando il suo utente invia il messaggio successivo, ma [il lavoro non ancora inviato con push va perso](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#additional-limitations). [Mantieni la sessione](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run) per i processi che ha lasciato in esecuzione. |

385| `--kill-session-after-min 480` | Ogni runner avviato dal tuo hook | Limita ogni sessione a quel numero di minuti, come rete di sicurezza per le [sessioni che non vengono considerate inattive](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), quindi impostalo al di sopra della tua sessione più lunga prevista |385| `--kill-session-after-min 480` | Ogni runner avviato dal tuo hook | Limita ogni sessione a quel numero di minuti, come rete di sicurezza per le [sessioni che non vengono considerate inattive](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), quindi impostalo al di sopra della tua sessione più lunga prevista |

386| `--exit-if-unused-min 60` | Runner in standby, che il tuo hook avvia per le richieste di pre-riscaldamento | Un runner in standby che non prende mai una sessione termina dopo quel numero di minuti. Se imposti [`--min-idle`](https://code.claude.com/docs/it/self-hosted-environments-reference#orchestrator-cli-flags), ottieni un sostituto a meno che il runner in standby non fosse in eccesso, quindi usa un valore ben superiore al tuo tempo di avvio. |386| `--exit-if-unused-min 60` | Runner in standby, che il tuo hook avvia per le richieste di pre-riscaldamento | Un runner in standby che non prende mai una sessione termina dopo quel numero di minuti. Se imposti [`--min-idle`](https://code.claude.com/docs/it/self-hosted-environments-reference#orchestrator-cli-flags), ottieni un sostituto a meno che il runner in standby non fosse in eccesso, quindi usa un valore ben superiore al tuo tempo di avvio. |

387 387 

Details

68| `code.claude.com` e `claude.com` | 443 | Ricerche di documentazione dall'agente claude-code-guide integrato e richieste WebFetch pre-approvate durante le sessioni. Il blocco di questi host influisce solo sulle ricerche di documentazione. |68| `code.claude.com` e `claude.com` | 443 | Ricerche di documentazione dall'agente claude-code-guide integrato e richieste WebFetch pre-approvate durante le sessioni. Il blocco di questi host influisce solo sulle ricerche di documentazione. |

69| `*.frame.claudeusercontent.com` | 443 | Solo quando lo [strumento Artifact](https://code.claude.com/docs/it/artifacts.md#availability) è disponibile per le sessioni nella tua organizzazione; i valori predefiniti variano in base al piano, secondo la tabella di disponibilità lì. Imposta `CLAUDE_CODE_DISABLE_ARTIFACT=1` sul runner per mantenere lo strumento disabilitato indipendentemente dall'impostazione dell'organizzazione. |69| `*.frame.claudeusercontent.com` | 443 | Solo quando lo [strumento Artifact](https://code.claude.com/docs/it/artifacts.md#availability) è disponibile per le sessioni nella tua organizzazione; i valori predefiniti variano in base al piano, secondo la tabella di disponibilità lì. Imposta `CLAUDE_CODE_DISABLE_ARTIFACT=1` sul runner per mantenere lo strumento disabilitato indipendentemente dall'impostazione dell'organizzazione. |

70| `registry.npmjs.org` | 443 | Quando una sessione installa un plugin, sia per il recupero dei pacchetti plugin da fonte npm che per l'installazione delle dipendenze Node.js di un plugin, o quando un server MCP lanciato da `npx` viene eseguito |70| `registry.npmjs.org` | 443 | Quando una sessione installa un plugin, sia per il recupero dei pacchetti plugin da fonte npm che per l'installazione delle dipendenze Node.js di un plugin, o quando un server MCP lanciato da `npx` viene eseguito |

71| Un mirror interno dei registri di pacchetti usati dalle tue build, o i registri stessi | 443, o la porta del tuo mirror | Quando le sessioni installano dipendenze per compilare o testare i tuoi repository |

71| `http-intake.logs.us5.datadoghq.com` | 443 | Metriche operative di Anthropic. Solo quando `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` è impostato; disabilitato per impostazione predefinita negli ambienti self-hosted. |72| `http-intake.logs.us5.datadoghq.com` | 443 | Metriche operative di Anthropic. Solo quando `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` è impostato; disabilitato per impostazione predefinita negli ambienti self-hosted. |

72| `browser-intake-us5-datadoghq.com` | 443 | Caricamenti di rapporti di errore di Anthropic, inviati solo quando la [segnalazione di errori](https://code.claude.com/docs/it/data-usage.md#telemetry-services) è abilitata per l'account della sessione. Soppressa da `DISABLE_ERROR_REPORTING=1` o `DISABLE_TELEMETRY=1`. |73| `browser-intake-us5-datadoghq.com` | 443 | Caricamenti di rapporti di errore di Anthropic, inviati solo quando la [segnalazione di errori](https://code.claude.com/docs/it/data-usage.md#telemetry-services) è abilitata per l'account della sessione. Soppressa da `DISABLE_ERROR_REPORTING=1` o `DISABLE_TELEMETRY=1`. |

73| Gli endpoint del tuo provider cloud per le richieste al modello, le ricerche dei modelli e il rinnovo delle credenziali, come `bedrock-runtime.us-east-1.amazonaws.com` o `aiplatform.googleapis.com` | 443 | Solo quando il runner [invia richieste al modello ad Amazon Bedrock o ad Agent Platform di Google Cloud](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |74| Gli endpoint del tuo provider cloud per le richieste al modello, le ricerche dei modelli e il rinnovo delle credenziali, come `bedrock-runtime.us-east-1.amazonaws.com` o `aiplatform.googleapis.com` | 443 | Solo quando il runner [invia richieste al modello ad Amazon Bedrock o ad Agent Platform di Google Cloud](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |


631 632 

632Nei primi due stadi che seguono il segnale, il runner rilascia le sessioni, e una sessione rilasciata riprende su un runner nuovo quando il suo utente invia il messaggio successivo. Contando dal primo segnale, il runner attraversa tre stadi:633Nei primi due stadi che seguono il segnale, il runner rilascia le sessioni, e una sessione rilasciata riprende su un runner nuovo quando il suo utente invia il messaggio successivo. Contando dal primo segnale, il runner attraversa tre stadi:

633 634 

634* **Per i primi `n` minuti**: il runner serve le sue sessioni normalmente e continua ad applicare `--startup-timeout-min` e `--kill-session-after-min`. Se imposti anche [`--release-idle-session-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags), il runner rilascia qualsiasi sessione il cui utente è stato inattivo per quel tempo; senza di esso, le sessioni inattive rimangono sul runner.635* **Per i primi `n` minuti**: il runner serve le sue sessioni normalmente e continua ad applicare `--startup-timeout-min` e `--kill-session-after-min`. Se imposti anche [`--release-idle-session-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags), il runner rilascia qualsiasi sessione il cui utente è stato inattivo per quel tempo, a meno che tu non [trattenga quella sessione](#keep-an-idle-session-while-its-processes-run). Senza il flag, le sessioni inattive rimangono sul runner.

635* **Quando gli `n` minuti scadono**: il runner rilascia ogni sessione che ancora tiene, inattiva o no. Il runner aspetta che il turno di una sessione a metà turno finisca, e fino a 60 secondi in più per le attività in background di un turno, prima di rilasciare quella sessione.636* **Quando gli `n` minuti scadono**: il runner rilascia ogni sessione che ancora tiene, inattiva o no. Il runner aspetta che il turno di una sessione a metà turno finisca, e fino a 60 secondi in più per le attività in background di un turno, prima di rilasciare quella sessione.

636* **Quando la grazia post-release scade**: il runner drena qualsiasi sessione che ancora tiene, e il piano di controllo rimette subito in coda ogni sessione drenata a un altro runner. La grazia post-release inizia quando gli `n` minuti scadono ed è di 75 secondi con i valori predefiniti. Se imposti `--drain-wait-sec` sopra i 60 secondi, la grazia post-release è invece `--drain-wait-sec` più 15 secondi.637* **Quando la grazia post-release scade**: il runner drena qualsiasi sessione che ancora tiene, e il piano di controllo rimette subito in coda ogni sessione drenata a un altro runner. La grazia post-release inizia quando gli `n` minuti scadono ed è di 75 secondi con i valori predefiniti. Se imposti `--drain-wait-sec` sopra i 60 secondi, la grazia post-release è invece `--drain-wait-sec` più 15 secondi.

637 638 


716 717 

717### Rilascia le sessioni inattive su una flotta fissa718### Rilascia le sessioni inattive su una flotta fissa

718 719 

719Se le sessioni restano in coda su una flotta fissa mentre tutti i runner sono online, la causa potrebbe essere costituita dalle sessioni inattive. Per impostazione predefinita, una sessione mantiene il suo slot dopo la fine del suo turno, e il suo runner resta bloccato sull'[owner](https://code.claude.com/docs/it/self-hosted-environments#key-concepts) di quella sessione. Se l'[attività pianificata cloud](https://code.claude.com/docs/it/routines.md) del tuo team avvia una nuova sessione a ogni esecuzione, le sue sessioni inattive possono occupare tutti gli slot.720Se le sessioni restano in coda su una flotta fissa mentre tutti i runner sono online, la causa potrebbe essere costituita dalle sessioni inattive. Per impostazione predefinita, una sessione mantiene il suo slot dopo la fine del suo turno, e il suo runner resta bloccato sull'[owner](https://code.claude.com/docs/it/self-hosted-environments#key-concepts) di quella sessione. Le sessioni di altri owner non possono usare gli slot liberi di quel runner. Se l'[attività pianificata cloud](https://code.claude.com/docs/it/routines.md) del tuo team avvia una nuova sessione a ogni esecuzione, le sue sessioni inattive possono occupare tutti gli slot.

720 721 

721Per verificarlo, leggi `claude_code_self_hosted_runner_session_idle_seconds` nelle [metriche Prometheus](https://code.claude.com/docs/it/self-hosted-environments-reference.md#prometheus-metrics) di ogni runner. Ogni sessione detenuta da un runner ha la propria serie: `0` mentre la sessione è occupata, altrimenti i secondi trascorsi da quando è diventata inattiva. Scegli il tempo di inattività che vuoi consentire: più lungo delle pause che le persone fanno a metà di un'attività, e abbastanza breve da rilasciare ogni esecuzione prima che inizi quella successiva dell'attività pianificata. Confronta le serie con questo valore.722Per verificarlo, leggi `claude_code_self_hosted_runner_session_idle_seconds` nelle [metriche Prometheus](https://code.claude.com/docs/it/self-hosted-environments-reference.md#prometheus-metrics) di ogni runner. Ogni sessione detenuta da un runner ha la propria serie: `0` mentre la sessione è occupata, altrimenti i secondi trascorsi da quando è diventata inattiva. Scegli il tempo di inattività che vuoi consentire: più lungo delle pause che le persone fanno a metà di un'attività, e abbastanza breve da rilasciare ogni esecuzione prima che inizi quella successiva dell'attività pianificata. Confronta le serie con questo valore.

722 723 


725* **Un runner senza serie**: nessuna sessione lo occupa. Consulta **Sessions stay queued** in [Risoluzione dei problemi](#troubleshooting).726* **Un runner senza serie**: nessuna sessione lo occupa. Consulta **Sessions stay queued** in [Risoluzione dei problemi](#troubleshooting).

726* **Un runner le cui metriche non rispondono**: il suo processo potrebbe essere terminato. Consulta **An environment that looks healthy** in [Quando il runner termina](#when-the-runner-exits).727* **Un runner le cui metriche non rispondono**: il suo processo potrebbe essere terminato. Consulta **An environment that looks healthy** in [Quando il runner termina](#when-the-runner-exits).

727 728 

728Per rilasciare le sessioni inattive, avvia ogni runner con [`--release-idle-session-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags) e quel tempo in minuti, ad esempio `--release-idle-session-min 30`. Il runner rilascia quindi qualsiasi sessione che resta inattiva così a lungo, sia che l'abbia avviata un'attività pianificata sia una persona.729Per rilasciare le sessioni inattive, avvia ogni runner con [`--release-idle-session-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags) e quel tempo in minuti, ad esempio `--release-idle-session-min 30`. Il runner rilascia quindi qualsiasi sessione che resta inattiva così a lungo, sia che l'abbia avviata un'attività pianificata sia una persona, a meno che tu non la [trattenga per i processi che ha lasciato in esecuzione](#keep-an-idle-session-while-its-processes-run).

729 730 

730* **Lavoro non inviato**: una sessione rilasciata riprende al messaggio successivo, senza il lavoro di cui non aveva fatto il push. Per conservarne i commit, consulta [Le sessioni riprese perdono il lavoro non inviato](#additional-limitations).731* **Lavoro non inviato**: una sessione rilasciata riprende al messaggio successivo, senza il lavoro di cui non aveva fatto il push. Per conservarne i commit, consulta [Le sessioni riprese perdono il lavoro non inviato](#additional-limitations).

731* **Uscita del runner**: un runner che rilascia la sua ultima sessione avvia una [normale uscita](#when-the-runner-exits). Fai in modo che il tuo supervisor lo riavvii su un filesystem pulito, come descritto in [Rafforza il tuo deploy](#harden-your-deployment).732* **Uscita del runner**: un runner che rilascia la sua ultima sessione avvia una [normale uscita](#when-the-runner-exits). Fai in modo che il tuo supervisor lo riavvii su un filesystem pulito, come descritto in [Rafforza il tuo deploy](#harden-your-deployment).

732* **Sessioni che non diventano mai inattive**: imposta anche [`--kill-session-after-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags), perché [alcune sessioni non vengono considerate inattive](#some-sessions-don’t-count-as-idle)733* **Sessioni che non diventano mai inattive**: imposta anche [`--kill-session-after-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags), perché [alcune sessioni non vengono considerate inattive](#some-sessions-don’t-count-as-idle)

733 734 

735### Mantieni una sessione inattiva mentre i suoi processi sono in esecuzione

736 

737Per mantenere una sessione inattiva finché non terminano i processi che ha lasciato sul tuo host, come i job `nohup`, avvia il runner con [`--hold-idle-file`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags) e continua a eseguire il touch di quel file dall'host. Richiede Claude Code v2.1.311 o versioni successive.

738 

739Questi passaggi presuppongono un runner non root su un host. Se il tuo runner viene eseguito come `root`, le sue sessioni possono eseguire il touch del file da sole, quindi eseguilo prima come utente dedicato.

740 

741**1. Scegli un percorso per il file**

742 

743Scegli un file regolare locale, ad esempio `/var/lib/claude-hold/hold-idle`, in una directory in cui le sessioni non possono scrivere, directory padre incluse, così che una sessione non possa scriverci. Il runner e le sue sessioni condividono un unico utente del sistema operativo, quindi crea prima quella directory, di proprietà di un altro utente come `root`, con modalità `755`.

744 

745**2. Avvia il runner**

746 

747Dalla tua shell, avvia il runner con `--hold-idle-file`, `--release-idle-session-min` e [`--max-hold-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags), il limite massimo di un trattenimento, calcolato da quando una sessione diventa inattiva. Senza questa opzione, il limite è di un giorno. Impostalo su un valore superiore a `--release-idle-session-min`, altrimenti nulla viene trattenuto. Questo esempio rilascia le sessioni inattive dopo 30 minuti e rilascia una sessione trattenuta al massimo 4 ore dopo che è diventata inattiva:

748 

749```bash theme={null}

750claude self-hosted-runner \

751 --environment-secret-file /etc/claude/environment-secret \

752 --release-idle-session-min 30 \

753 --hold-idle-file /var/lib/claude-hold/hold-idle \

754 --max-hold-min 240

755```

756 

757**3. Esegui il touch del file mentre i processi sono in esecuzione**

758 

759Mentre i processi sono in esecuzione, esegui `touch` sul file dall'host come proprietario della directory, più spesso di ogni tre minuti. Il primo `touch` crea il file. Ad esempio, aggiungi questa riga al crontab di `root`:

760 

761```text theme={null}

762* * * * * pgrep -x nightly-build > /dev/null && touch /var/lib/claude-hold/hold-idle

763```

764 

765La riga viene eseguita una volta al minuto ed esegue il touch del file mentre è in esecuzione un qualsiasi processo chiamato `nightly-build`, così una sessione che ne avvia uno resta trattenuta fino al limite. Sostituisci il controllo `pgrep` con il metodo con cui il tuo host individua ciò che le sessioni hanno lasciato in esecuzione.

766 

767Il controllo deve smettere di trovare corrispondenze quando questi terminano, altrimenti ogni sessione inattiva su quel runner resta trattenuta fino al limite.

768 

769**4. Conferma il trattenimento**

770 

771Mentre i processi sono in esecuzione, verifica che l'ora di modifica del file resti inferiore a tre minuti fa. Quando il tempo di inattività di una sessione si esaurisce, cerca `idle release held` nel log del runner. Se non compare alcuna riga di questo tipo, leggi `leftover-hold=` nella riga `watchdog config` che il runner registra all'avvio, che mostra il file e il limite, oppure il motivo per cui nulla viene trattenuto.

772 

773Tre minuti dopo l'ultimo `touch`, il trattenimento termina. Entro circa un altro minuto, il log mostra `idle release no longer held` e il runner rilascia la sessione.

774 

775Anche mentre il file continua a cambiare, un trattenimento può terminare, in casi come questi:

776 

777* **Oltre il limite**: `--max-hold-min` si esaurisce. Per trattenere più a lungo, aumentalo

778* **Rilasci forzati**: hai impostato [`--retire-at`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags), [`--defer-shutdown-max-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags) o [`--kill-session-after-min`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags), e quel limite viene raggiunto. Per trattenere più a lungo, imposta un limite successivo

779 

734## Problemi noti e limitazioni780## Problemi noti e limitazioni

735 781 

736Le seguenti sono le limitazioni in questa versione, con workaround dove uno esiste.782Le seguenti sono le limitazioni in questa versione, con workaround dove uno esiste.


828* **Claude Tag a volte non pubblica la sua risposta in Slack**: il promemoria di risposta è un [hook fornito dal control plane](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Verifica con `claude --version` che il runner sia Claude Code v2.1.229 o successivo, poiché i runner meno recenti ignorano gli hook forniti; verifica che `python3 --version` riesca all'interno dell'immagine del runner, poiché gli hook eseguono `python3`; e verifica che nessun file di impostazioni disattivi gli hook, che si tratti di `disableAllHooks` in `managed-settings.json`, nel `~/.claude/settings.json` dell'utente del runner o nel `.claude/settings.json` o `.claude/settings.local.json` del repository, oppure di `allowManagedHooksOnly` o di uno [`strictPluginOnlyCustomization`](https://code.claude.com/docs/it/settings-reference#strictpluginonlycustomization) che copre gli hook nelle impostazioni gestite.874* **Claude Tag a volte non pubblica la sua risposta in Slack**: il promemoria di risposta è un [hook fornito dal control plane](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Verifica con `claude --version` che il runner sia Claude Code v2.1.229 o successivo, poiché i runner meno recenti ignorano gli hook forniti; verifica che `python3 --version` riesca all'interno dell'immagine del runner, poiché gli hook eseguono `python3`; e verifica che nessun file di impostazioni disattivi gli hook, che si tratti di `disableAllHooks` in `managed-settings.json`, nel `~/.claude/settings.json` dell'utente del runner o nel `.claude/settings.json` o `.claude/settings.local.json` del repository, oppure di `allowManagedHooksOnly` o di uno [`strictPluginOnlyCustomization`](https://code.claude.com/docs/it/settings-reference#strictpluginonlycustomization) che copre gli hook nelle impostazioni gestite.

829* **Una sessione inizia senza uno dei suoi repository**: su un runner senza un [hook `checkout`](https://code.claude.com/docs/it/self-hosted-environments-configuration#checkout), l'host git può rifiutare il controllo di accesso del runner per un repository che la sessione legge solo. Il runner quindi salta quel repository, registra una riga `[runner:warn] could not access context source` che nomina il rifiuto, e avvia la sessione su quelli rimanenti.875* **Una sessione inizia senza uno dei suoi repository**: su un runner senza un [hook `checkout`](https://code.claude.com/docs/it/self-hosted-environments-configuration#checkout), l'host git può rifiutare il controllo di accesso del runner per un repository che la sessione legge solo. Il runner quindi salta quel repository, registra una riga `[runner:warn] could not access context source` che nomina il rifiuto, e avvia la sessione su quelli rimanenti.

830 876 

831 Il runner salta solo un rifiuto chiaro: l'host risponde che il repository non è stato trovato, git non trova credenziali per l'host, o l'autenticazione fallisce. Un errore di rete, un timeout, o un HTTP `403` comunque fa fallire l'avvio della sessione, così come un rifiuto per un repository a cui la sessione spinge i risultati. Il runner comunque fa fallire una sessione che saltare lascerebbe senza alcun repository. Con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), il runner salta solo un repository che il git proxy stesso nega.877 Con le proprie credenziali git, il runner può saltare un repository quando l'host risponde che il repository non è stato trovato, git non trova credenziali per l'host o l'autenticazione fallisce.

878 

879 Con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), quando il git proxy rifiuta un repository con `access denied by the git proxy`, il runner lo salta. La riga di log indica quindi `blocked by the git proxy`. Per le cause da verificare, consulta il caso `remote: access denied by the git proxy` in [Quando le sessioni non si avviano su un runner con il git proxy](#when-anthropic-doesnt-serve-a-session).

880 

881 Un errore di rete, un timeout o qualsiasi altro HTTP `403` fa comunque fallire l'avvio della sessione, così come un rifiuto per un repository a cui la sessione invia i risultati. Il runner fa comunque fallire una sessione che, saltando il repository, resterebbe senza alcun repository.

832 882 

833 Il controllo di accesso viene eseguito di nuovo ogni volta che la sessione inizia su un runner, quindi una volta che l'identità git del runner ha accesso in lettura, il prossimo avvio clona il repository. Prima della v2.1.274, ognuno di questi rifiuti faceva fallire l'avvio della sessione.883 Il controllo di accesso viene eseguito di nuovo ogni volta che la sessione inizia su un runner, quindi una volta che l'identità git del runner ha accesso in lettura, il prossimo avvio clona il repository. Prima della v2.1.274, ognuno di questi rifiuti faceva fallire l'avvio della sessione.

884* **Il log mostra `could not read context source`**: questa riga, a differenza di `could not access context source`, significa che l'host git ha continuato a rispondere con HTTP `429`, oppure che un wrapper installato come `git` ha continuato a uscire con `75`. Il runner ha saltato quel repository. Per riprovare, avvia una nuova sessione. Il runner riprova inoltre il repository ogni volta che questa sessione si avvia su un runner.

885 

886 Senza hook `checkout`, il runner può saltare un repository che la sessione legge soltanto, a meno che non sia il primo tra i repository della sessione. Prima della v2.1.311, l'avvio della sessione falliva.

834* **Una sessione non si avvia e mostra `This runner couldn't read`**: il runner ha chiesto un repository all'host git con le sue [credenziali git](#configure-git) e ha ricevuto una risposta di repository non trovato. Il repository non esiste, oppure quelle credenziali non possono raggiungerlo.887* **Una sessione non si avvia e mostra `This runner couldn't read`**: il runner ha chiesto un repository all'host git con le sue [credenziali git](#configure-git) e ha ricevuto una risposta di repository non trovato. Il repository non esiste, oppure quelle credenziali non possono raggiungerlo.

835 * **Se amministri il runner**: concedi alle sue credenziali git l'accesso in lettura al repository, poi avvia una nuova sessione.888 * **Se amministri il runner**: concedi alle sue credenziali git l'accesso in lettura al repository, poi avvia una nuova sessione.

836 * **Se hai avviato tu la sessione**: se il repository non esiste, avvia una nuova sessione con il repository corretto. Se il runner non riesce a raggiungere il repository, chiedi all'amministratore del runner di concedere l'accesso, poi avvia una nuova sessione.889 * **Se hai avviato tu la sessione**: se il repository non esiste, avvia una nuova sessione con il repository corretto. Se il runner non riesce a raggiungere il repository, chiedi all'amministratore del runner di concedere l'accesso, poi avvia una nuova sessione.

Details

37| `--git-host-rewrite <from>=<to>` | none | unset | Riscrivi gli URL di origine `https://<from>/...` a `https://<to>/...` prima della clonazione, per DNS a orizzonte diviso. Ripetibile; solo flag. |37| `--git-host-rewrite <from>=<to>` | none | unset | Riscrivi gli URL di origine `https://<from>/...` a `https://<to>/...` prima della clonazione, per DNS a orizzonte diviso. Ripetibile; solo flag. |

38| `--git-ssh-rewrite <host>` | none | unset | Riscrivi gli URL di origine `https://<host>/...` a `git@<host>:...` prima della clonazione, per host git solo SSH. Ripetibile; solo flag. |38| `--git-ssh-rewrite <host>` | none | unset | Riscrivi gli URL di origine `https://<host>/...` a `git@<host>:...` prima della clonazione, per host git solo SSH. Ripetibile; solo flag. |

39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Porta per il listener `/healthz` e `/metrics`. Imposta `0` per disabilitare. |39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Porta per il listener `/healthz` e `/metrics`. Imposta `0` per disabilitare. |

40| `--hold-idle-file <path>` | `SELF_HOSTED_RUNNER_HOLD_IDLE_FILE` | unset | File che il tuo host continua a modificare per trattenere una sessione inattiva sul runner. Vedi [Keep an idle session while its processes run](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run). Richiede Claude Code v2.1.311 o successivo. |

40| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Directory degli script hook del ciclo di vita. Vedi [Lifecycle hooks](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#lifecycle-hooks). |41| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Directory degli script hook del ciclo di vita. Vedi [Lifecycle hooks](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#lifecycle-hooks). |

41| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Dove il runner mantiene lo snapshot di avvio della [directory di configurazione dell'host](#environment-variable-only-settings) che semina ogni sessione da. `disk` copia lo snapshot in una directory di proprietà del runner sotto `--base-dir` e, all'inizio di ogni sessione, verifica ogni file rispetto a un digest in memoria. Se un file nella copia è stato modificato, la sessione fallisce e il runner rifiuta le sessioni fino a quando non lo riavvii. `memory` mantiene l'intero snapshot sull'heap, limitato a 64 MiB; oltre il limite, le sessioni iniziano senza configurazione dell'host e mostrano un avviso che dice così. Quando il runner non può scrivere lo snapshot del disco, registra l'errore e usa `memory` per quella esecuzione. Richiede Claude Code v2.1.271 o successivo. |42| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Dove il runner mantiene lo snapshot di avvio della [directory di configurazione dell'host](#environment-variable-only-settings) che semina ogni sessione da. `disk` copia lo snapshot in una directory di proprietà del runner sotto `--base-dir` e, all'inizio di ogni sessione, verifica ogni file rispetto a un digest in memoria. Se un file nella copia è stato modificato, la sessione fallisce e il runner rifiuta le sessioni fino a quando non lo riavvii. `memory` mantiene l'intero snapshot sull'heap, limitato a 64 MiB; oltre il limite, le sessioni iniziano senza configurazione dell'host e mostrano un avviso che dice così. Quando il runner non può scrivere lo snapshot del disco, registra l'errore e usa `memory` per quella esecuzione. Richiede Claude Code v2.1.271 o successivo. |

42| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limita una sessione a N minuti di tempo reale, come limite di sicurezza per le sessioni bloccate. Su v2.1.260 o successivo, il runner rilascia una sessione che raggiunge il limite in modo che possa riprendere al prossimo messaggio dell'utente, e la termina solo se è ancora sul runner quando la finestra di grazia [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) finisce. Prima della v2.1.260, il runner terminava la sessione al limite. Vedi [Some sessions don't count as idle](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) per i dettagli e come scegliere un valore. `0` disabilita. |43| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limita una sessione a N minuti di tempo reale, come limite di sicurezza per le sessioni bloccate. Su v2.1.260 o successivo, il runner rilascia una sessione che raggiunge il limite in modo che possa riprendere al prossimo messaggio dell'utente, e la termina solo se è ancora sul runner quando la finestra di grazia [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) finisce. Prima della v2.1.260, il runner terminava la sessione al limite. Vedi [Some sessions don't count as idle](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) per i dettagli e come scegliere un valore. `0` disabilita. |

43| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-blocca il runner a un account specifico all'avvio invece di bloccare alla prima sessione. Accetta un indirizzo email o un ID `user_...` nell'organizzazione dell'ambiente. Un runner pre-bloccato non raccoglie mai sessioni del canale Claude Tag, che non hanno account. |44| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-blocca il runner a un account specifico all'avvio invece di bloccare alla prima sessione. Accetta un indirizzo email o un ID `user_...` nell'organizzazione dell'ambiente. Un runner pre-bloccato non raccoglie mai sessioni del canale Claude Tag, che non hanno account. |

44| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Specchia i log del runner in un file oltre a stdout e stderr, creato con permessi `0600`. Richiesto per `self-hosted-runner doctor` per accodare i log localmente. |45| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Specchia i log del runner in un file oltre a stdout e stderr, creato con permessi `0600`. Richiesto per `self-hosted-runner doctor` per accodare i log localmente. |

45| `--log-level <level>` | none | `info` | `info` o `debug` |46| `--log-level <level>` | none | `info` | `info` o `debug` |

47| `--max-hold-min <n>` | `SELF_HOSTED_RUNNER_MAX_HOLD_MS` | `1440` | Con `--hold-idle-file`, rilascia comunque una sessione trattenuta N minuti dopo che è diventata inattiva. Un valore pari o inferiore a `--release-idle-session-min` non trattiene nulla. `0` disattiva la trattenuta. Richiede Claude Code v2.1.311 o successivo. |

46| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Budget per l'hook [`post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session) alla fine di ogni sessione, incluso l'arresto del runner |48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Budget per l'hook [`post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session) alla fine di ogni sessione, incluso l'arresto del runner |

47| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | unset | Comando shell che il runner esegue per ogni connessione al tuo proxy di uscita, usando il suo stdout ritagliato come valore dell'intestazione `Proxy-Authorization`. Richiede `HTTPS_PROXY` o `HTTP_PROXY`, e non può essere combinato con `--proxy-authorization-file`. Vedi [Authenticate to an egress proxy](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Richiede Claude Code v2.1.238 o successivo. |49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | unset | Comando shell che il runner esegue per ogni connessione al tuo proxy di uscita, usando il suo stdout ritagliato come valore dell'intestazione `Proxy-Authorization`. Richiede `HTTPS_PROXY` o `HTTP_PROXY`, e non può essere combinato con `--proxy-authorization-file`. Vedi [Authenticate to an egress proxy](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Richiede Claude Code v2.1.238 o successivo. |

48| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | File che il runner legge per ogni connessione al tuo proxy di uscita, usando i suoi contenuti ritagliati come valore dell'intestazione `Proxy-Authorization`. Usa questo flag per un token che un altro processo ruota in posizione. Porta gli stessi requisiti di `--proxy-authorization-command`, e non può essere combinato con esso. Vedi [Authenticate to an egress proxy](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Richiede Claude Code v2.1.238 o successivo. |50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | File che il runner legge per ogni connessione al tuo proxy di uscita, usando i suoi contenuti ritagliati come valore dell'intestazione `Proxy-Authorization`. Usa questo flag per un token che un altro processo ruota in posizione. Porta gli stessi requisiti di `--proxy-authorization-command`, e non può essere combinato con esso. Vedi [Authenticate to an egress proxy](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Richiede Claude Code v2.1.238 o successivo. |

49| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | Alla fine di una sessione avviata dal runner come un drenaggio o una versione inattiva, esegui il push dei rami di risultato tracciati a `origin` prima di eliminare lo spazio di lavoro, in modo che i commit in volo sopravvivano a un riavvio. Best-effort; aggiunge 30 secondi al budget di arresto, e richiede git 2.29 o più recente per riprendere dal ramo sottoposto a push. Limita l'accesso push ai ref `claude/*` prima di abilitare; vedi [Resumed sessions lose unpushed work](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#additional-limitations). I repository estratti tramite un hook del ciclo di vita `checkout` non vengono sottoposti a push; fai uno snapshot di quelli dall'hook [`post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session) invece. |51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | Alla fine di una sessione avviata dal runner come un drenaggio o una versione inattiva, esegui il push dei rami di risultato tracciati a `origin` prima di eliminare lo spazio di lavoro, in modo che i commit in volo sopravvivano a un riavvio. Best-effort; aggiunge 30 secondi al budget di arresto, e richiede git 2.29 o più recente per riprendere dal ramo sottoposto a push. Limita l'accesso push ai ref `claude/*` prima di abilitare; vedi [Resumed sessions lose unpushed work](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#additional-limitations). I repository estratti tramite un hook del ciclo di vita `checkout` non vengono sottoposti a push; fai uno snapshot di quelli dall'hook [`post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session) invece. |

50| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Rilascia uno slot di sessione dopo N minuti di inattività una volta che un turno finisce o la sessione attende l'azione dell'utente. Una sessione che è ancora a metà turno, inclusa una che contiene un compito in background che non finisce mai o un'approvazione richiesta dall'interno di una chiamata di strumento in esecuzione, non conta come inattiva; abbina con `--kill-session-after-min` come backstop duro. Dopo che il compito in background di una sessione finisce, il runner considera la sessione occupata fino a quando il turno di follow-up che legge il risultato inizia, per al massimo la finestra [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Fino a quando il runner riceve un segnale di arresto o raggiunge il suo tempo di ritiro, un rilascio che lascia il runner senza sessioni attive avvia lo stesso percorso di uscita di un drenaggio normale, governato da `--drain-grace-sec`. Dopo un primo segnale che hai differito con [`--defer-shutdown-max-min`](https://code.claude.com/docs/it/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), il runner esce non appena un rilascio lo lascia senza sessioni. `0` disabilita. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Rilascia uno slot di sessione dopo N minuti di inattività una volta che un turno finisce o la sessione attende l'azione dell'utente. [Alcune sessioni non contano come inattive](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), quindi abbinalo a `--kill-session-after-min`. Un'attività in background terminata mantiene la sessione occupata al massimo per la finestra [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Per ritardare un rilascio, imposta [`--hold-idle-file`](https://code.claude.com/docs/it/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run). `0` disabilita. |

51| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Rimuovi le directory per sessione di una sessione sotto `<base-dir>/_sessions/` quando la sessione termina su questo runner, indipendentemente dall'esito. [Reuse a pre-warmed checkout](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) descrive cosa contengono e chi può leggerli quando rimangono. La rimozione è best-effort: le directory per sessione rimangono in posizione quando il runner viene ucciso o raggiunge la scadenza di drenaggio prima che la pulizia venga eseguita. Con il flag attivo, il log di debug di una sessione fallita o interrotta non viene mantenuto su disco. Richiede Claude Code v2.1.268 o successivo. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Rimuovi le directory per sessione di una sessione sotto `<base-dir>/_sessions/` quando la sessione termina su questo runner, indipendentemente dall'esito. [Reuse a pre-warmed checkout](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) descrive cosa contengono e chi può leggerli quando rimangono. La rimozione è best-effort: le directory per sessione rimangono in posizione quando il runner viene ucciso o raggiunge la scadenza di drenaggio prima che la pulizia venga eseguita. Con il flag attivo, il log di debug di una sessione fallita o interrotta non viene mantenuto su disco. Richiede Claude Code v2.1.268 o successivo. |

52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Ritira il runner a un timestamp Unix assoluto in secondi, per l'infrastruttura che uccide il runner a un'ora nota; [Runner lifecycle](https://code.claude.com/docs/it/self-hosted-environments#runner-lifecycle) descrive la sequenza di rilascio e come dimensionare il margine. I valori prima del 2001 o dopo l'anno 5138 vengono rifiutati dal flag e ignorati dalla variabile d'ambiente. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Ritira il runner a un timestamp Unix assoluto in secondi, per l'infrastruttura che uccide il runner a un'ora nota; [Runner lifecycle](https://code.claude.com/docs/it/self-hosted-environments#runner-lifecycle) descrive la sequenza di rilascio e come dimensionare il margine. I valori prima del 2001 o dopo l'anno 5138 vengono rifiutati dal flag e ignorati dalla variabile d'ambiente. |

53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Quali degli elenchi di regole del classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) che il control plane invia con una sessione possono raggiungere quella sessione: `all`, `no-allow` o `none`. Vedi [Elenchi di regole della modalità auto](#auto-mode-rule-lists) per cosa applica ciascun valore. Un valore non valido arresta il runner all'avvio. Richiede Claude Code v2.1.295 o successivo. |55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Quali degli elenchi di regole del classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) che il control plane invia con una sessione possono raggiungere quella sessione: `all`, `no-allow` o `none`. Vedi [Elenchi di regole della modalità auto](#auto-mode-rule-lists) per cosa applica ciascun valore. Un valore non valido arresta il runner all'avvio. Richiede Claude Code v2.1.295 o successivo. |


314 316 

315### Avvisi su runner persi e sessioni in attesa317### Avvisi su runner persi e sessioni in attesa

316 318 

317Su una [flotta fissa](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#scale-the-fleet), carica `ClaudeRunnersBelowFloor`. Con i [runner on-demand](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#on-demand-runners), carica invece `ClaudeOrchestratorSessionsWaiting` e `ClaudeOrchestratorQueueWaitHigh`.319Per ricevere un avviso quando si perdono runner, le sessioni restano in attesa o l'orchestrator non è attivo, carica queste regole di avviso Prometheus accanto alle [regole di avviso di esempio](#sample-alert-rules):

320 

321* **[Flotta fissa](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#scale-the-fleet)**: `ClaudeRunnersBelowFloor`

322* **[Runner on-demand](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#on-demand-runners)**: `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh` e `ClaudeOrchestratorAbsent`

318 323 

319#### Avviso quando una flotta fissa perde runner324#### Avviso quando una flotta fissa perde runner

320 325 


372* **Soglia**: se c'è sempre qualche sessione in attesa, alza il `> 0` in `ClaudeOrchestratorSessionsWaiting` sopra il numero che vedi di solito377* **Soglia**: se c'è sempre qualche sessione in attesa, alza il `> 0` in `ClaudeOrchestratorSessionsWaiting` sopra il numero che vedi di solito

373* **`ClaudeOrchestratorDisconnected`**: mantienilo caricato dalle [regole di avviso di esempio](#sample-alert-rules), perché `ClaudeOrchestratorSessionsWaiting` smette di attivarsi circa 2 minuti dopo che l'ultimo orchestrator nel namespace si disconnette378* **`ClaudeOrchestratorDisconnected`**: mantienilo caricato dalle [regole di avviso di esempio](#sample-alert-rules), perché `ClaudeOrchestratorSessionsWaiting` smette di attivarsi circa 2 minuti dopo che l'ultimo orchestrator nel namespace si disconnette

374 379 

380#### Avviso quando l'orchestrator non è attivo

381 

382Per sapere quando l'[orchestrator](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#on-demand-runners) stesso non è attivo, carica `ClaudeOrchestratorAbsent`. Si attiva quando nessun orchestrator nel namespace è stato raccolto per 5 minuti:

383 

384```yaml theme={null}

385groups:

386 # On-demand runners only. Replace claude-runners with the orchestrator's namespace.

387 - name: claude-code-self-hosted-on-demand-orchestrator

388 rules:

389 - alert: ClaudeOrchestratorAbsent

390 expr: absent(claude_code_self_hosted_orchestrator_connected{namespace="claude-runners"})

391 for: 5m

392 labels: {severity: critical}

393 annotations:

394 summary: "No orchestrator has been scraped for 5 minutes. If it's down, no on-demand runner starts, and sessions wait. Check the orchestrator workload first, then its scrape target if it's running."

395```

396 

397* **Namespace**: sostituisci `claude-runners` con il namespace dell'orchestrator, e copia l'avviso per ogni ulteriore namespace che esegue un orchestrator. Se i tuoi target non hanno un'etichetta `namespace`, rimuovi il matcher, altrimenti l'avviso si attiva dopo 5 minuti e resta attivo.

398* **Server Prometheus che non raccolgono l'orchestrator**: escludi l'avviso dai loro file di regole, perché su un server del genere si attiva dopo 5 minuti e resta attivo

399* **Non fare affidamento sugli altri avvisi dell'orchestrator**: leggono metriche servite dall'orchestrator stesso. `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh` e le [regole di avviso di esempio](#sample-alert-rules) dell'orchestrator smettono tutte di attivarsi entro circa 10 minuti dal momento in cui l'orchestrator si arresta.

400 

375### Passa attraverso le metriche del figlio della sessione401### Passa attraverso le metriche del figlio della sessione

376 402 

377Ogni sessione viene eseguita nel suo processo figlio con le sue metriche OpenTelemetry; a `--capacity` superiore a uno, il runner riscrive come quelle metriche figlio vengono esposte. L'impostazione di `OTEL_METRICS_EXPORTER=prometheus` sull'host del runner e `CLAUDE_CODE_ENABLE_TELEMETRY=1` nell'ambiente della sessione, ad esempio dal tuo [script wrapper](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#wrapper-scripts) o dall'ambiente del runner stesso, che le sessioni ereditano, ri-espone gli strumenti di contatore e gauge di ogni figlio sull'endpoint `/metrics` del runner, insieme alle serie del runner. Il runner riscrive l'esportatore del figlio per eseguire il push su OTLP a un ricevitore solo loopback sulla porta di salute, etichetta ogni serie con etichette `session_id` e `client_platform`, e rimuove le serie di una sessione quando quella sessione termina. Gli istogrammi non passano, e una metrica figlio il cui nome entrerebbe in collisione con il prefisso del runner è eliminata.403Ogni sessione viene eseguita nel suo processo figlio con le sue metriche OpenTelemetry; a `--capacity` superiore a uno, il runner riscrive come quelle metriche figlio vengono esposte. L'impostazione di `OTEL_METRICS_EXPORTER=prometheus` sull'host del runner e `CLAUDE_CODE_ENABLE_TELEMETRY=1` nell'ambiente della sessione, ad esempio dal tuo [script wrapper](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#wrapper-scripts) o dall'ambiente del runner stesso, che le sessioni ereditano, ri-espone gli strumenti di contatore e gauge di ogni figlio sull'endpoint `/metrics` del runner, insieme alle serie del runner. Il runner riscrive l'esportatore del figlio per eseguire il push su OTLP a un ricevitore solo loopback sulla porta di salute, etichetta ogni serie con etichette `session_id` e `client_platform`, e rimuove le serie di una sessione quando quella sessione termina. Gli istogrammi non passano, e una metrica figlio il cui nome entrerebbe in collisione con il prefisso del runner è eliminata.

Details

288 288 

289 Il comando non può leggere dalla tastiera quando ne reindirizzi l'input tramite pipe o redirezione e, su macOS e Linux, non può nemmeno aprire `/dev/tty`. Se reindirizzi anche il suo output, l'esecuzione è invece non interattiva, e le impostazioni fornite si applicano solo per quell'esecuzione.289 Il comando non può leggere dalla tastiera quando ne reindirizzi l'input tramite pipe o redirezione e, su macOS e Linux, non può nemmeno aprire `/dev/tty`. Se reindirizzi anche il suo output, l'esecuzione è invece non interattiva, e le impostazioni fornite si applicano solo per quell'esecuzione.

290* **Un errore chiude la finestra di dialogo prima che tu risponda**: Claude Code non applica le impostazioni fornite e mantiene le ultime impostazioni approvate. Mostra di nuovo la finestra di dialogo nella sessione successiva in grado di mostrarla.290* **Un errore chiude la finestra di dialogo prima che tu risponda**: Claude Code non applica le impostazioni fornite e mantiene le ultime impostazioni approvate. Mostra di nuovo la finestra di dialogo nella sessione successiva in grado di mostrarla.

291* **Un'esecuzione non interattiva**, come `claude -p`, una sessione dell'Agent SDK o una sessione nel pannello della chat dell'estensione VS Code o nella scheda Code dell'app desktop: Claude Code non può mostrare la finestra di dialogo, quindi quando le impostazioni fornite richiederebbero approvazione, le applica solo per quell'esecuzione. Non le registra come approvate né le scrive nella [cache locale](#fetch-and-caching-behavior), e la sessione interattiva successiva mostra la finestra di dialogo. Finché un utente non approva in una sessione interattiva, ogni esecuzione non interattiva recupera di nuovo le impostazioni all'avvio. Prima della v2.1.207, un'esecuzione non interattiva salvava le impostazioni come approvate, quindi le sessioni interattive successive non mostravano mai la finestra di dialogo per esse.291* **Un'esecuzione non interattiva**, come `claude -p`, una sessione dell'Agent SDK o una sessione nel pannello della chat dell'estensione VS Code o nella scheda Code dell'app desktop: Claude Code non può mostrare la finestra di dialogo. Quando le impostazioni fornite richiederebbero approvazione, si applicano solo per quell'esecuzione.

292 

293 Claude Code non registra le impostazioni come approvate né le scrive nella [cache locale](#fetch-and-caching-behavior), e la sessione interattiva successiva mostra la finestra di dialogo. Finché un utente non approva in una sessione interattiva, ogni esecuzione non interattiva recupera di nuovo le impostazioni all'avvio.

292 294 

293#### Variabili d'ambiente e finestra di dialogo di approvazione295#### Variabili d'ambiente e finestra di dialogo di approvazione

294 296 


306* `OTEL_EXPORTER_OTLP_ENDPOINT`308* `OTEL_EXPORTER_OTLP_ENDPOINT`

307* `CLAUDE_CODE_DISABLE_1M_CONTEXT`309* `CLAUDE_CODE_DISABLE_1M_CONTEXT`

308 310 

309Quando una variabile fornita richiede approvazione, la finestra di dialogo ne indica il nome, così l'utente vede esattamente cosa la policy chiede di impostare. Prima della v2.1.218, Claude Code applicava meno variabili senza chiedere all'utente, quindi impostazioni come `DISABLE_AUTO_COMPACT` attivavano la finestra di dialogo con qualsiasi valore non vuoto.311Quando una variabile fornita richiede approvazione, la finestra di dialogo ne indica il nome, così l'utente vede esattamente cosa la policy chiede di impostare.

310 312 

311Claude Code decide se quattro interruttori relativi alla privacy richiedono approvazione in base al valore fornito anziché al nome della variabile: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY` e `DO_NOT_TRACK`. Un valore truthy come `1` o `true` si limita a disattivare il tracciamento, la segnalazione o altro traffico non essenziale, quindi Claude Code lo applica senza chiedere all'utente. Per qualsiasi altro valore non vuoto, Claude Code mostra la finestra di dialogo. Prima della v2.1.218, tutte tranne `DO_NOT_TRACK` si applicavano senza approvazione con qualsiasi valore, e `DO_NOT_TRACK` attivava la finestra di dialogo con qualsiasi valore non vuoto.313Claude Code decide se quattro interruttori relativi alla privacy richiedono approvazione in base al valore fornito anziché al nome della variabile: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY` e `DO_NOT_TRACK`. Un valore truthy come `1` o `true` si limita a disattivare il tracciamento, la segnalazione o altro traffico non essenziale, quindi Claude Code lo applica senza chiedere all'utente. Per qualsiasi altro valore non vuoto, Claude Code mostra la finestra di dialogo.

312 314 

313Claude Code decide inoltre se [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/it/env-vars) richiede approvazione in base al valore fornito: un valore truthy si limita ad attivare il [timeout di inattività del corpo](https://code.claude.com/docs/it/network-config.md#streaming-idle-watchdogs), quindi Claude Code lo applica senza chiedere all'utente. Per qualsiasi altro valore non vuoto, Claude Code mostra la finestra di dialogo. Prima della v2.1.248, qualsiasi valore non vuoto attivava la finestra di dialogo.315Claude Code decide inoltre se [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/it/env-vars) richiede approvazione in base al valore fornito: un valore truthy si limita ad attivare il [timeout di inattività del corpo](https://code.claude.com/docs/it/network-config.md#streaming-idle-watchdogs), quindi Claude Code lo applica senza chiedere all'utente. Per qualsiasi altro valore non vuoto, Claude Code mostra la finestra di dialogo. Prima della v2.1.248, qualsiasi valore non vuoto attivava la finestra di dialogo.

314 316 

sessions.md +2 −2

Details

46Quando Claude Code carica una conversazione dalla sua trascrizione, la sessione ripresa ripristina la conversazione insieme allo stato salvato in essa:46Quando Claude Code carica una conversazione dalla sua trascrizione, la sessione ripresa ripristina la conversazione insieme allo stato salvato in essa:

47 47 

48* Cronologia della conversazione: i messaggi, le chiamate agli strumenti e i risultati. Se la sessione è stata [compattata](https://code.claude.com/docs/it/context-window.md#what-survives-compaction), la conversazione si apre su una riga `Conversation compacted`. Claude continua con il riepilogo dell'ultima compattazione, i messaggi che quella compattazione ha lasciato non riepilogati e ogni messaggio successivo. I messaggi riepilogati dall'ultima compattazione non vengono caricati di nuovo.48* Cronologia della conversazione: i messaggi, le chiamate agli strumenti e i risultati. Se la sessione è stata [compattata](https://code.claude.com/docs/it/context-window.md#what-survives-compaction), la conversazione si apre su una riga `Conversation compacted`. Claude continua con il riepilogo dell'ultima compattazione, i messaggi che quella compattazione ha lasciato non riepilogati e ogni messaggio successivo. I messaggi riepilogati dall'ultima compattazione non vengono caricati di nuovo.

49* Chiamate agli strumenti interrotte: uno strumento ancora in esecuzione quando il processo precedente è terminato, ad esempio in seguito a un crash, non viene completato né rieseguito quando riprendi. Claude vede la chiamata contrassegnata come interrotta prima che il suo risultato venisse registrato e gli viene detto di verificare se ha avuto effetto prima di eseguirla di nuovo, a meno che non sia impostata [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/it/env-vars#variables).49* Chiamate agli strumenti interrotte: uno strumento ancora in esecuzione quando il processo precedente è terminato, ad esempio in seguito a un crash, non viene rieseguito quando riprendi.

50* Modello: la sessione continua con il modello che stava usando, tranne nei casi descritti in [Impostare il modello](https://code.claude.com/docs/it/model-config.md#setting-your-model).50* Modello: la sessione continua con il modello che stava usando, tranne nei casi descritti in [Impostare il modello](https://code.claude.com/docs/it/model-config.md#setting-your-model).

51* Agente: una sessione avviata con [`--agent`](https://code.claude.com/docs/it/sub-agents#invoke-subagents-explicitly) o con l'impostazione `agent` continua come quell'agente, mantenendo le sue restrizioni sugli strumenti e il suo modello. Passa `--agent` quando riprendi per sceglierne un altro; per il prompt di sistema in entrambi i casi, consulta [Flag del prompt di sistema nelle conversazioni riprese](https://code.claude.com/docs/it/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code cerca l'agente in due posizioni: la directory originale della sessione, a condizione che tu abbia [considerato attendibile quel workspace](https://code.claude.com/docs/it/permissions.md#project-allow-rules-and-workspace-trust), e poi la directory da cui riprendi, così un agente con ambito di progetto viene comunque caricato quando riprendi da un'altra directory. Se Claude Code non trova l'agente in nessuna delle due posizioni, la sessione riprende con gli strumenti predefiniti e mostra un [avviso che indica il nome dell'agente](https://code.claude.com/docs/it/errors.md#session-agent-no-longer-available).51* Agente: una sessione avviata con [`--agent`](https://code.claude.com/docs/it/sub-agents#invoke-subagents-explicitly) o con l'impostazione `agent` continua come quell'agente, mantenendo le sue restrizioni sugli strumenti e il suo modello. Passa `--agent` quando riprendi per sceglierne un altro; per il prompt di sistema in entrambi i casi, consulta [Flag del prompt di sistema nelle conversazioni riprese](https://code.claude.com/docs/it/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code cerca l'agente in due posizioni: la directory originale della sessione, a condizione che tu abbia [considerato attendibile quel workspace](https://code.claude.com/docs/it/permissions.md#project-allow-rules-and-workspace-trust), e poi la directory da cui riprendi, così un agente con ambito di progetto viene comunque caricato quando riprendi da un'altra directory. Se Claude Code non trova l'agente in nessuna delle due posizioni, la sessione riprende con gli strumenti predefiniti e mostra un [avviso che indica il nome dell'agente](https://code.claude.com/docs/it/errors.md#session-agent-no-longer-available).

52* Modalità di permesso: se riprendi da un terminale con `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sola sessione, senza `-p`, Claude Code ripristina la modalità di permesso in cui si trovava la sessione, tranne nei casi descritti in [modalità di permesso alla ripresa](#permission-mode-on-resume), che tratta anche il selettore delle sessioni, `/resume` e la ripresa con `claude -p`. Passa `--permission-mode` o `--dangerously-skip-permissions` per sovrascrivere la modalità ripristinata.52* Modalità di permesso: se riprendi da un terminale con `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sola sessione, senza `-p`, Claude Code ripristina la modalità di permesso in cui si trovava la sessione, tranne nei casi descritti in [modalità di permesso alla ripresa](#permission-mode-on-resume), che tratta anche il selettore delle sessioni, `/resume` e la ripresa con `claude -p`. Passa `--permission-mode` o `--dangerously-skip-permissions` per sovrascrivere la modalità ripristinata.


224* **`/compact [instructions]`**: sostituisci la cronologia con un riassunto, facoltativamente focalizzato su ciò che specifichi224* **`/compact [instructions]`**: sostituisci la cronologia con un riassunto, facoltativamente focalizzato su ciò che specifichi

225* **`/context`**: mostra cosa sta attualmente consumando contesto225* **`/context`**: mostra cosa sta attualmente consumando contesto

226 226 

227Per come la compattazione interagisce con CLAUDE.md, skills e regole, vedi la [guida della finestra di contesto](https://code.claude.com/docs/it/context-window.md). Per strategie su quando cancellare rispetto a compattare, vedi [Best practices](https://code.claude.com/docs/it/best-practices.md#manage-your-session).227Per come la compattazione interagisce con CLAUDE.md, skill e regole, vedi la [guida della finestra di contesto](https://code.claude.com/docs/it/context-window.md). Per strategie su quando cancellare rispetto a compattare, vedi [Best practice](https://code.claude.com/docs/it/best-practices.md#keep-cost-and-context-down).

228 228 

229## Esportare e individuare i dati della sessione229## Esportare e individuare i dati della sessione

230 230 

settings.md +1 −1

Details

326* **Impostazioni di progetto condivise con più repository**: in un ambiente ospitato da Anthropic, una sessione con più repository inizia sopra i clone e legge solo le chiavi `enabledPlugins` e `extraKnownMarketplaces` dal `.claude/settings.json` di ogni repository, non le regole di permesso, gli hook, `env` o altre chiavi. I marketplace e i plugin che queste due chiavi dichiarano comunque [non si caricano in una sessione cloud](https://code.claude.com/docs/it/cloud-environments.md#what-carries-over-from-your-setup). Per un ambiente auto-ospitato, consulta [quali impostazioni del repository si applicano](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).326* **Impostazioni di progetto condivise con più repository**: in un ambiente ospitato da Anthropic, una sessione con più repository inizia sopra i clone e legge solo le chiavi `enabledPlugins` e `extraKnownMarketplaces` dal `.claude/settings.json` di ogni repository, non le regole di permesso, gli hook, `env` o altre chiavi. I marketplace e i plugin che queste due chiavi dichiarano comunque [non si caricano in una sessione cloud](https://code.claude.com/docs/it/cloud-environments.md#what-carries-over-from-your-setup). Per un ambiente auto-ospitato, consulta [quali impostazioni del repository si applicano](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).

327* **Impostazioni utente e di progetto locale** (`~/.claude/settings.json` e `.claude/settings.local.json`): non lette. Entrambe rimangono sulla vostra macchina, e il file locale non è nel clone.327* **Impostazioni utente e di progetto locale** (`~/.claude/settings.json` e `.claude/settings.local.json`): non lette. Entrambe rimangono sulla vostra macchina, e il file locale non è nel clone.

328* **Impostazioni gestite**: un file `managed-settings.json` o un profilo MDM sul vostro dispositivo non raggiunge una sessione cloud. Le [impostazioni gestite dal server](https://code.claude.com/docs/it/server-managed-settings.md) della vostra organizzazione lo fanno; la [copertura della superficie](https://code.claude.com/docs/it/model-config.md#surface-coverage) elenca quali sessioni cloud le ricevono. Un [ambiente auto-ospitato](https://code.claude.com/docs/it/self-hosted-environments) legge anche il file di impostazioni gestite nella sua immagine di runner. [Come Claude Code combina le fonti gestite](https://code.claude.com/docs/it/managed-settings.md#how-claude-code-combines-managed-sources) dice quando quel file si applica.328* **Impostazioni gestite**: un file `managed-settings.json` o un profilo MDM sul vostro dispositivo non raggiunge una sessione cloud. Le [impostazioni gestite dal server](https://code.claude.com/docs/it/server-managed-settings.md) della vostra organizzazione lo fanno; la [copertura della superficie](https://code.claude.com/docs/it/model-config.md#surface-coverage) elenca quali sessioni cloud le ricevono. Un [ambiente auto-ospitato](https://code.claude.com/docs/it/self-hosted-environments) legge anche il file di impostazioni gestite nella sua immagine di runner. [Come Claude Code combina le fonti gestite](https://code.claude.com/docs/it/managed-settings.md#how-claude-code-combines-managed-sources) dice quando quel file si applica.

329* **`/config`**: nel tuo browser su claude.ai/code, apre la sezione Claude Code delle tue impostazioni claude.ai invece di modificare un valore. Per modificare un'impostazione per una sessione cloud, imposta una [variabile d'ambiente](https://code.claude.com/docs/it/cloud-environments.md#set-environment-variables) sull'ambiente. In una sessione con un repository al di fuori dei thread di un progetto, puoi invece eseguire il commit della chiave nel `.claude/settings.json` di quel repository.329* **`/config`**: nel tuo browser su claude.ai/code, apre la pagina delle impostazioni **Code** o **Claude Code** di claude.ai invece di modificare un valore. Per modificare un'impostazione per una sessione cloud, imposta una [variabile d'ambiente](https://code.claude.com/docs/it/cloud-environments.md#set-environment-variables) sull'ambiente. In una sessione con un repository al di fuori dei thread di un progetto, puoi invece eseguire il commit della chiave nel `.claude/settings.json` di quel repository.

330 330 

331[Cosa si trasporta dalla vostra configurazione](https://code.claude.com/docs/it/cloud-environments.md#what-carries-over-from-your-setup) elenca il resto: `CLAUDE.md`, skills, MCP server, plugin e credenziali.331[Cosa si trasporta dalla vostra configurazione](https://code.claude.com/docs/it/cloud-environments.md#what-carries-over-from-your-setup) elenca il resto: `CLAUDE.md`, skills, MCP server, plugin e credenziali.

332 332 

Details

1293* Un comando che inizia con `sudo`, `eval` o `xargs`1293* Un comando che inizia con `sudo`, `eval` o `xargs`

1294* Un `cd`, `pushd` o `popd`, ovunque appaia nella chiamata1294* Un `cd`, `pushd` o `popd`, ovunque appaia nella chiamata

1295* Una sostituzione di comando, una subshell o un blocco di controllo di flusso come `if` o `for`1295* Una sostituzione di comando, una subshell o un blocco di controllo di flusso come `if` o `for`

1296* Un reindirizzamento, come `docker build . > build.log`, diverso da uno che duplica solo un descrittore di file, come `2>&1`1296* Un reindirizzamento, come `docker build . > build.log` o un heredoc `<<EOF`, diverso da uno che si limita a duplicare un descrittore di file, come fa `2>&1`

1297* Un nome di comando che proviene da una variabile1297* Un nome di comando che proviene da una variabile

1298* Un `git clone`, `git init`, `git worktree add`, `git worktree move` o `git bundle create` con un argomento di percorso che è assoluto, inizia con `~` o contiene un segmento `..`1298* Un `git clone`, `git init`, `git worktree add`, `git worktree move` o `git bundle create` con un argomento di percorso che è assoluto, inizia con `~` o contiene un segmento `..`

1299 1299 


1521 1521 

1522### `sandbox.filesystem.disabled`1522### `sandbox.filesystem.disabled`

1523 1523 

1524Salta l'isolamento del filesystem mantenendo l'isolamento della rete. I comandi in sandbox ottengono accesso in lettura e scrittura senza restrizioni al filesystem host, e il loro traffico di rete in uscita rimane confinato a [`network.allowedDomains`](#sandbox-network-alloweddomains). Usalo quando metti in sandbox per controllare dove i comandi si connettono piuttosto che cosa scrivono. Richiede Claude Code v2.1.216 o successivo.1524Salta l'isolamento del filesystem mantenendo l'isolamento di rete. I comandi in sandbox ottengono accesso illimitato in lettura e scrittura al filesystem dell'host, e il loro traffico di rete in uscita resta limitato a [`network.allowedDomains`](#sandbox-network-alloweddomains). Usala quando usi la sandbox per controllare dove si connettono i comandi anziché cosa scrivono.

1525 1525 

1526* **Scope**: [`User or managed`](#scopes). Quando le impostazioni gestite configurano in qualsiasi modo `sandbox.filesystem`, o elencano una voce `sandbox.credentials.files` con `"mode": "deny"`, solo le impostazioni gestite possono impostarla.1526* **Scope**: [`User or managed`](#scopes). Quando le impostazioni gestite configurano in qualsiasi modo `sandbox.filesystem`, o elencano una voce `sandbox.credentials.files` con `"mode": "deny"`, solo le impostazioni gestite possono impostarla.

1527* **Type**: Boolean1527* **Type**: Boolean


1545}1545}

1546```1546```

1547 1547 

1548Con il livello disattivato, Claude Code non applica le voci `denyRead` o `credentials.files` `deny`, mentre le voci `credentials.envVars` e le voci `mask` applicate continuano a funzionare. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) ha comunque `true` come valore predefinito, quindi impostalo su `false` per continuare a ricevere richieste di conferma. Vedi [Disable filesystem isolation](https://code.claude.com/docs/it/sandboxing.md#disable-filesystem-isolation) per l'elenco completo delle fonti che possono impostarla e cosa cambia quando l'isolamento è disattivato. Richiede Claude Code v2.1.216 o successivo.1548Con il livello disattivato, Claude Code non applica le voci `denyRead` né le voci `deny` di `credentials.files`, mentre le voci `credentials.envVars` e le voci `mask` applicate continuano a funzionare. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) ha comunque `true` come valore predefinito, quindi impostalo su `false` per continuare a ricevere richieste di conferma. Consulta [Disattivare l'isolamento del filesystem](https://code.claude.com/docs/it/sandboxing.md#disable-filesystem-isolation) per l'elenco completo delle origini che possono impostarla e per cosa cambia quando l'isolamento è disattivato.

1549 1549 

1550### `sandbox.ignoreViolations`1550### `sandbox.ignoreViolations`

1551 1551 


2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, viene ignorata in ogni file.2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, viene ignorata in ogni file.

2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, viene ignorata in ogni file. La variabile richiede Claude Code v2.1.283 o successiva.2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, viene ignorata in ogni file. La variabile richiede Claude Code v2.1.283 o successiva.

2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` e `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, vengono ignorate in ogni file.2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` e `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, vengono ignorate in ogni file.

2395* [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, viene ignorata in ogni file.

2395* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` e `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, vengono ignorate in ogni file. Le variabili richiedono Claude Code v2.1.304 o successiva.2396* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` e `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/it/env-vars#variables), che Claude Code legge solo dall'ambiente di avvio, vengono ignorate in ogni file. Le variabili richiedono Claude Code v2.1.304 o successiva.

2396 2397 

2397### `fileCheckpointingEnabled`2398### `fileCheckpointingEnabled`


2716}2717}

2717```2718```

2718 2719 

2719Vedi [Codici brevi emoji](https://code.claude.com/docs/it/interactive-mode.md#emoji-shortcodes). Richiede Claude Code v2.1.217 o successivo.2720Vedi [Codici brevi emoji](https://code.claude.com/docs/it/interactive-mode.md#emoji-shortcodes).

2720 2721 

2721### `fileSuggestion`2722### `fileSuggestion`

2722 2723 


3691 3692 

3692### `workflowSizeGuideline`3693### `workflowSizeGuideline`

3693 3694 

3694Imposta il [numero di agenti a cui Claude mira](https://code.claude.com/docs/it/workflows.md#set-a-size-guideline) nei workflow dinamici che scrive. Claude Code invia il valore a Claude come consiglio, non come limite imposto: `"small"` chiede meno di 5 agenti, `"medium"` meno di 10 e `"large"` meno di 50. Scegli `"small"` quando vuoi limitare ciò che un workflow spende. Richiede Claude Code v2.1.219 o successivo.3695Imposta il [numero di agenti a cui Claude mira](https://code.claude.com/docs/it/workflows.md#set-a-size-guideline) nei workflow dinamici che scrive. Claude Code invia il valore a Claude come consiglio, non come limite imposto: `"small"` chiede meno di 5 agenti, `"medium"` meno di 10 e `"large"` meno di 50. Scegli `"small"` quando vuoi limitare ciò che un workflow spende.

3695 3696 

3696* **Scope**: [`Any file`](#scopes). Un valore lì ha la precedenza sulla scelta **Dynamic workflow size** in `/config`, che Claude Code memorizza in `~/.claude.json`, e Claude Code nasconde quella riga mentre un file di impostazioni imposta la chiave.3697* **Scope**: [`Any file`](#scopes). Un valore lì ha la precedenza sulla scelta **Dynamic workflow size** in `/config`, che Claude Code memorizza in `~/.claude.json`, e Claude Code nasconde quella riga mentre un file di impostazioni imposta la chiave.

3697* **Type**: stringa, uno di:3698* **Type**: stringa, uno di:


3707}3708}

3708```3709```

3709 3710 

3710Richiede Claude Code v2.1.219 o successivo; dalla v2.1.202 alla v2.1.218, imposta invece la linea guida in `/config`.

3711 

3712## Plugin e skills3711## Plugin e skills

3713 3712 

3714Abilita i plugin, registra i marketplace, limita le origini dei plugin che un'organizzazione consente e controlla quali skills si caricano. Per l'installazione e la creazione di plugin, vedi [Plugin](https://code.claude.com/docs/it/plugins/overview.md).3713Abilita i plugin, registra i marketplace, limita le origini dei plugin che un'organizzazione consente e controlla quali skills si caricano. Per l'installazione e la creazione di plugin, vedi [Plugin](https://code.claude.com/docs/it/plugins/overview.md).

skills.md +5 −7

Details

83| Sottocomando | Cosa fa | Versione minima |83| Sottocomando | Cosa fa | Versione minima |

84| :- | :- | :- |84| :- | :- | :- |

85| `migrate` | Aggiornare il vostro codice Claude API esistente a un modello più recente | Precedente a v2.1.221 |85| `migrate` | Aggiornare il vostro codice Claude API esistente a un modello più recente | Precedente a v2.1.221 |

86| `upgrade` | Spostare la dipendenza SDK Anthropic del vostro progetto attraverso una versione principale, attualmente il pacchetto Python `anthropic` da 0.x a 1.x | v2.1.236 o successivo |86| `upgrade` | Aggiorna l'SDK Anthropic del tuo progetto a una nuova versione principale e adatta il tuo codice alle sue modifiche incompatibili | v2.1.236 o successivo |

87| `api-version` | Aggiorna il tuo codice Claude API per una [versione dell'API](https://platform.claude.com/docs/en/api/versioning) più recente, quindi passa le tue richieste a quella versione | v2.1.307 o successivo |87| `api-version` | Aggiorna il tuo codice Claude API per una [versione dell'API](https://platform.claude.com/docs/en/api/versioning) più recente, quindi passa le tue richieste a quella versione | v2.1.307 o successivo |

88| `managed-agents-onboard` | Guidarvi attraverso la creazione di un nuovo Managed Agent | Precedente a v2.1.221 |88| `managed-agents-onboard` | Guidarvi attraverso la creazione di un nuovo Managed Agent | Precedente a v2.1.221 |

89| `managed-agents-onboard <url>` | Crea il Managed Agent descritto dalla pagina all'URL, ad esempio una pagina della [documentazione di Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) | v2.1.290 o successivo |89| `managed-agents-onboard <url>` | Crea il Managed Agent descritto dalla pagina all'URL, ad esempio una pagina della [documentazione di Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) | v2.1.290 o successivo |


3713. Push to the deployment target3713. Push to the deployment target

372```372```

373 373 

374Mantieni conciso il corpo stesso. Una volta caricata una skill, il suo contenuto [resta nel contesto nei turni successivi](#skill-content-lifecycle), quindi ogni riga è un costo ricorrente in token. Indica cosa fare invece di raccontare come o perché, e applica lo stesso criterio di concisione che useresti per il [contenuto di CLAUDE.md](https://code.claude.com/docs/it/best-practices.md#write-an-effective-claude-md).374Mantieni conciso il corpo stesso. Una volta caricata una skill, il suo contenuto [resta nel contesto nei turni successivi](#skill-content-lifecycle), quindi ogni riga è un costo ricorrente in token. Indica cosa fare invece di raccontare come o perché, e applica lo stesso criterio di concisione che useresti per il [contenuto di CLAUDE.md](https://code.claude.com/docs/it/best-practices.md#keep-claude-md-short).

375 375 

376### Riferimento del frontmatter376### Riferimento del frontmatter

377 377 


388Your skill instructions here...388Your skill instructions here...

389```389```

390 390 

391Tutti i campi sono facoltativi. Solo `description` è consigliato, così Claude sa quando usare la skill. Il nome di un campo deve corrispondere esattamente alla tabella, trattini inclusi: Claude Code ignora un campo che non riconosce senza segnalare alcun errore.391Tutti i campi sono facoltativi. Solo `description` è consigliato, così Claude sa quando usare la skill. Il nome di un campo deve corrispondere esattamente alla tabella, trattini inclusi: Claude Code ignora un campo che non riconosce senza segnalare alcun errore. I campi booleani accettano `yes`, `no`, `on`, `off`, `1` e `0` con qualsiasi combinazione di maiuscole e minuscole, oltre a `true` e `false`.

392 392 

393Claude Code legge il frontmatter solo quando il `---` di apertura è la prima riga del file. Altrimenti tratta l'intero file, marcatori `---` inclusi, come contenuto della skill. Se lo YAML tra i marcatori non viene analizzato correttamente, la skill viene comunque caricata senza alcun campo impostato; vedi [La skill non si attiva](#skill-not-triggering) per trovare e correggere l'errore.393Claude Code legge il frontmatter solo quando il `---` di apertura è la prima riga del file. Altrimenti tratta l'intero file, marcatori `---` inclusi, come contenuto della skill. Se lo YAML tra i marcatori non viene analizzato correttamente, la skill viene comunque caricata senza alcun campo impostato; vedi [La skill non si attiva](#skill-not-triggering) per trovare e correggere l'errore.

394 394 

395I campi booleani accettano `yes`, `no`, `on`, `off`, `1` e `0` con qualsiasi combinazione di maiuscole e minuscole, oltre a `true` e `false`. Prima della v2.1.218, Claude Code riconosceva solo `true` e `false`.

396 

397| Campo | Obbligatorio | Descrizione |395| Campo | Obbligatorio | Descrizione |

398| :- | :- | :- |396| :- | :- | :- |

399| `name` | No | Nome del comando mostrato nel menu `/`. Il valore predefinito è il nome della directory. Vedi [Come una skill ottiene il nome del comando](#how-a-skill-gets-its-command-name) per capire come il campo interagisce con il nome che digiti per invocare la skill. |397| `name` | No | Nome del comando mostrato nel menu `/`. Il valore predefinito è il nome della directory. Vedi [Come una skill ottiene il nome del comando](#how-a-skill-gets-its-command-name) per capire come il campo interagisce con il nome che digiti per invocare la skill. |


409| `effort` | No | [Livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) quando questa skill è attiva. Sovrascrive il livello di sforzo della sessione. Quando lo ometti, il livello deriva dall'[ordine di risoluzione dello sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level). Opzioni: `low`, `medium`, `high`, `xhigh`, `max`; i livelli disponibili dipendono dal modello. |407| `effort` | No | [Livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) quando questa skill è attiva. Sovrascrive il livello di sforzo della sessione. Quando lo ometti, il livello deriva dall'[ordine di risoluzione dello sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level). Opzioni: `low`, `medium`, `high`, `xhigh`, `max`; i livelli disponibili dipendono dal modello. |

410| `context` | No | Imposta su `fork` per eseguire in un contesto di subagent forkato. Vedi [Eseguire le skill in un subagent](#run-skills-in-a-subagent). |408| `context` | No | Imposta su `fork` per eseguire in un contesto di subagent forkato. Vedi [Eseguire le skill in un subagent](#run-skills-in-a-subagent). |

411| `agent` | No | Quale tipo di subagent usare quando è impostato `context: fork`. |409| `agent` | No | Quale tipo di subagent usare quando è impostato `context: fork`. |

412| `background` | No | Si applica solo con `context: fork`. Imposta su `false` per attendere il risultato del subagent forkato nel turno che ha invocato la skill, invece di [eseguirlo in background](#run-skills-in-a-subagent). Predefinito: `true`. Richiede Claude Code v2.1.218 o successivo. |410| `background` | No | Si applica solo con `context: fork`. Imposta su `false` per attendere il risultato del subagent forkato nel turno che ha invocato la skill, invece di [eseguirlo in background](#run-skills-in-a-subagent). Predefinito: `true`. |

413| `hooks` | No | Hook che Claude Code registra quando la skill viene invocata e che restano in esecuzione per il resto della sessione. Vedi [Hook nelle skill e negli agenti](https://code.claude.com/docs/it/hooks.md#hooks-in-skills-and-agents) per il formato di configurazione, l'opzione `once` e i [limiti degli hook delle skill](https://code.claude.com/docs/it/hooks.md#limits-on-skill-hooks). |411| `hooks` | No | Hook che Claude Code registra quando la skill viene invocata e che restano in esecuzione per il resto della sessione. Vedi [Hook nelle skill e negli agenti](https://code.claude.com/docs/it/hooks.md#hooks-in-skills-and-agents) per il formato di configurazione, l'opzione `once` e i [limiti degli hook delle skill](https://code.claude.com/docs/it/hooks.md#limits-on-skill-hooks). |

414| `paths` | No | Pattern glob che limitano quando questa skill viene attivata. Accetta una stringa separata da virgole o un elenco YAML. Quando è impostato, Claude carica automaticamente la skill solo quando lavora con file che corrispondono ai pattern. I pattern sono relativi alla directory di lavoro corrente di Claude e i file al di fuori di quella directory non corrispondono. Usa lo stesso formato glob delle [regole specifiche per percorso](https://code.claude.com/docs/it/memory.md#path-specific-rules). |412| `paths` | No | Pattern glob che limitano quando questa skill viene attivata. Accetta una stringa separata da virgole o un elenco YAML. Quando è impostato, Claude carica automaticamente la skill solo quando lavora con file che corrispondono ai pattern. I pattern sono relativi alla directory di lavoro corrente di Claude e i file al di fuori di quella directory non corrispondono. Usa lo stesso formato glob delle [regole specifiche per percorso](https://code.claude.com/docs/it/memory.md#path-specific-rules). |

415| `shell` | No | Shell da usare per i blocchi `` !`command` `` e ` ```! ` in questa skill. Accetta `bash` (predefinito) o `powershell`. Impostare `powershell` esegue i comandi shell inline tramite PowerShell quando lo [strumento PowerShell](https://code.claude.com/docs/it/tools-reference.md#powershell-tool) è abilitato: è attivo per impostazione predefinita su Windows senza Git Bash, attivo per impostazione predefinita con Git Bash per gli account claude.ai e Console, e richiede `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` nelle sessioni Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry e su macOS, Linux e WSL. Impostalo su `0` per disattivare lo strumento. |413| `shell` | No | Shell da usare per i blocchi `` !`command` `` e ` ```! ` in questa skill. Accetta `bash` (predefinito) o `powershell`. Impostare `powershell` esegue i comandi shell inline tramite PowerShell quando lo [strumento PowerShell](https://code.claude.com/docs/it/tools-reference.md#powershell-tool) è abilitato: è attivo per impostazione predefinita su Windows senza Git Bash, attivo per impostazione predefinita con Git Bash per gli account claude.ai e Console, e richiede `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` nelle sessioni Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry e su macOS, Linux e WSL. Impostalo su `0` per disattivare lo strumento. |


800>798>

801> Nonostante il nome, una skill con `context: fork` non viene eseguita in un [fork della conversazione corrente](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation), che darebbe al subagent tutto ciò che hai discusso finora. Quando l'attività dipende da quella cronologia, fai il fork della conversazione invece di usare `context: fork`.799> Nonostante il nome, una skill con `context: fork` non viene eseguita in un [fork della conversazione corrente](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation), che darebbe al subagent tutto ciò che hai discusso finora. Quando l'attività dipende da quella cronologia, fai il fork della conversazione invece di usare `context: fork`.

802 800 

803Il subagent forkato viene eseguito in [background](https://code.claude.com/docs/it/sub-agents.md#run-subagents-in-foreground-or-background): continui a lavorare mentre viene eseguito, e il suo risultato arriva nella tua conversazione quando si completa. Imposta `background: false` nel frontmatter per invece attendere il risultato nel turno che ha invocato la skill. Prima della v2.1.218, le skill forkate bloccavano sempre il turno fino al completamento.801Il subagent forkato viene eseguito in [background](https://code.claude.com/docs/it/sub-agents.md#run-subagents-in-foreground-or-background): continui a lavorare mentre viene eseguito, e il suo risultato arriva nella tua conversazione quando si completa. Imposta `background: false` nel frontmatter per invece attendere il risultato nel turno che ha invocato la skill.

804 802 

805Claude Code attende anche il risultato, anche quando la skill non imposta `background: false`, in casi come questi:803Claude Code attende anche il risultato, anche quando la skill non imposta `background: false`, in casi come questi:

806 804 

sub-agents.md +3 −10

Details

352* **ID modello completo**: usi un ID modello completo come `claude-opus-5-5` o `claude-sonnet-5`. Accetta gli stessi valori del flag `--model`352* **ID modello completo**: usi un ID modello completo come `claude-opus-5-5` o `claude-sonnet-5`. Accetta gli stessi valori del flag `--model`

353* **inherit**: usi lo stesso modello della conversazione principale353* **inherit**: usi lo stesso modello della conversazione principale

354 354 

355Quando Claude invoca un subagent, può anche passare un parametro `model` per quella specifica invocazione. Claude Code risolve il modello del subagent in questo ordine:355Quando Claude invoca un subagent, può anche passare un parametro `model` per quella specifica invocazione. In una chiamata allo strumento Agent, quel parametro accetta un alias del modello: `sonnet`, `opus`, `haiku` o `fable`. Claude non può passare un ID modello completo né `inherit` in quella chiamata. Claude Code risolve il modello del subagent in questo ordine:

356 356 

3571. Il parametro `model` per invocazione3571. Il parametro `model` per invocazione

3582. Il frontmatter `model` della definizione del subagent, dove `inherit` seleziona il modello della conversazione principale3582. Il frontmatter `model` della definizione del subagent, dove `inherit` seleziona il modello della conversazione principale


760>760>

761> Gli hook nel frontmatter si attivano quando l'agente viene generato come subagent tramite lo strumento Agent o un @-mention, e quando l'agente viene eseguito come principale della sessione tramite [`--agent`](#invoke-subagents-explicitly) o l'impostazione `agent`. Nel caso della sessione principale, vengono eseguiti insieme a qualsiasi hook definito in [`settings.json`](https://code.claude.com/docs/it/hooks).761> Gli hook nel frontmatter si attivano quando l'agente viene generato come subagent tramite lo strumento Agent o un @-mention, e quando l'agente viene eseguito come principale della sessione tramite [`--agent`](#invoke-subagents-explicitly) o l'impostazione `agent`. Nel caso della sessione principale, vengono eseguiti insieme a qualsiasi hook definito in [`settings.json`](https://code.claude.com/docs/it/hooks).

762 762 

763Per consentire agli hook del frontmatter di un subagent a livello di progetto di essere eseguiti, accetti la [finestra di dialogo di fiducia dell'area di lavoro](https://code.claude.com/docs/it/permissions.md#project-allow-rules-and-workspace-trust) per la cartella che contiene il file dell'agente. Gli hook dai subagent a livello di utente in `~/.claude/agents/` e dalle definizioni che passa con `--agents` vengono eseguiti senza questo passaggio. Se ha aggiunto una cartella con `--add-dir` da fuori del repository dell'area di lavoro fidata, ha fiducia di quella cartella separatamente: i suoi hook `.claude/agents/` non ereditano la concessione dell'area di lavoro.763Per consentire l'esecuzione degli hook nel frontmatter di un subagent a livello di progetto, accetta la [finestra di dialogo di fiducia del workspace](https://code.claude.com/docs/it/permissions.md#project-allow-rules-and-workspace-trust) per la cartella che contiene il file dell'agente. Gli hook dei subagent a livello utente in `~/.claude/agents/` e delle definizioni che passi con `--agents` vengono eseguiti senza questo passaggio. Se hai aggiunto una cartella con `--add-dir` da fuori del repository del tuo workspace attendibile, concedi la fiducia a quella cartella separatamente: i suoi hook in `.claude/agents/` non ereditano la concessione del workspace.

764 764 

765Fino a quando non ha fiducia della cartella, il subagent viene comunque eseguito, ma Claude Code salta i suoi hook del frontmatter e registra un errore nel log di debug spiegando come avere fiducia della cartella. Questa è una regola più ristretta di quella per gli hook nei file di impostazioni: avere fiducia di una cartella principale non è sufficiente, e una sessione `-p` non conta come fidata. [Cosa viene eseguito prima di avere fiducia di una cartella](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) confronta i due. Prima di v2.1.218, gli hook del frontmatter potevano essere eseguiti da cartelle che non aveva fiducia, incluso nelle sessioni non interattive.765Finché non concedi la fiducia alla cartella, il subagent viene comunque eseguito, ma Claude Code salta i suoi hook del frontmatter e registra nel log di debug un errore che spiega come concedere la fiducia alla cartella. È una regola più restrittiva di quella per gli hook nei file di impostazioni: la fiducia in una cartella superiore non è sufficiente, e una sessione `-p` non conta come attendibile. [Cosa viene eseguito prima di concedere la fiducia a una cartella](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) confronta le due regole.

766 766 

767Tutti gli [hook events](https://code.claude.com/docs/it/hooks.md#hook-events) sono supportati. Gli eventi più comuni per i subagent sono:767Tutti gli [hook events](https://code.claude.com/docs/it/hooks.md#hook-events) sono supportati. Gli eventi più comuni per i subagent sono:

768 768 


1075 1075 

1076Nel terminale, Claude Code mostra i subagent annidati come un albero nel pannello dei subagent sotto l'input del prompt e contrassegna ogni riga che ha ancora discendenti nel pannello con il loro conteggio `(+N)`. Apri una riga per vedere i subagent allo stesso livello e i figli diretti di quel subagent, con un percorso che risale fino a `main`.1076Nel terminale, Claude Code mostra i subagent annidati come un albero nel pannello dei subagent sotto l'input del prompt e contrassegna ogni riga che ha ancora discendenti nel pannello con il loro conteggio `(+N)`. Apri una riga per vedere i subagent allo stesso livello e i figli diretti di quel subagent, con un percorso che risale fino a `main`.

1077 1077 

1078> [!NOTE]

1079>

1080> Le versioni precedenti usavano valori predefiniti diversi:

1081>

1082> * **Dalla v2.1.172 alla v2.1.216**: i subagent potevano annidarsi per impostazione predefinita, fino a cinque livelli di profondità, e il limite non poteva essere modificato.

1083> * **Dalla v2.1.217 alla v2.1.218**: il limite predefinito era uno, quindi un subagent non poteva avviarne di propri a meno che tu non lo aumentassi; la v2.1.219 ha portato il valore predefinito a tre.

1084 

1085### Limite di subagent simultanei1078### Limite di subagent simultanei

1086 1079 

1087Due limiti controllano l'uso dei subagent, ciascuno con la propria variabile: questo impedisce a Claude di avviare altri subagent quando ne sono in esecuzione troppi, mentre il [limite di profondità](#let-subagents-spawn-their-own-subagents) stabilisce fino a che livello i subagent possono annidarsi. Non c'è limite al numero totale di subagent che Claude può avviare nel corso di una sessione.1080Due limiti controllano l'uso dei subagent, ciascuno con la propria variabile: questo impedisce a Claude di avviare altri subagent quando ne sono in esecuzione troppi, mentre il [limite di profondità](#let-subagents-spawn-their-own-subagents) stabilisce fino a che livello i subagent possono annidarsi. Non c'è limite al numero totale di subagent che Claude può avviare nel corso di una sessione.

Details

290>290>

291> Ogni [subagent](https://code.claude.com/docs/it/sub-agents.md) e attività parallela è mostrato in uno degli otto colori denominati in modo che tu possa distinguerli nella trascrizione. I nomi dei token seguono il modello `<color>_FOR_SUBAGENTS_ONLY`, dove `<color>` è `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan`. Sovrascrivi questi per cambiare l'aspetto di ogni colore denominato. Ad esempio, un subagent con `color: blue` nella sua definizione viene disegnato utilizzando il valore `blue_FOR_SUBAGENTS_ONLY`.291> Ogni [subagent](https://code.claude.com/docs/it/sub-agents.md) e attività parallela è mostrato in uno degli otto colori denominati in modo che tu possa distinguerli nella trascrizione. I nomi dei token seguono il modello `<color>_FOR_SUBAGENTS_ONLY`, dove `<color>` è `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan`. Sovrascrivi questi per cambiare l'aspetto di ogni colore denominato. Ad esempio, un subagent con `color: blue` nella sua definizione viene disegnato utilizzando il valore `blue_FOR_SUBAGENTS_ONLY`.

292>292>

293> Claude Code esegue il rendering della parola chiave [`ultrathink`](https://code.claude.com/docs/it/model-config#use-ultrathink-for-one-off-deep-reasoning) nell'input del prompt con un gradiente arcobaleno a sette colori. I nomi dei token seguono il modello `rainbow_<color>` e `rainbow_<color>_shimmer`, dove `<color>` è `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, o `violet`.293> Quando [`ultrathink`](https://code.claude.com/docs/it/model-config#use-ultrathink-for-one-off-deep-reasoning) può aumentare l'effort di un turno, Claude Code esegue il rendering della parola nell'input del prompt con un gradiente arcobaleno a sette colori. I nomi dei token seguono il modello `rainbow_<color>` e `rainbow_<color>_shimmer`, dove `<color>` è `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, o `violet`.

294 294 

295## Passa al rendering a schermo intero295## Passa al rendering a schermo intero

296 296 

ultrareview.md +4 −2

Details

85 85 

86### Passa una richiesta in parole semplici86### Passa una richiesta in parole semplici

87 87 

88Su Claude Code v2.1.218 o successivo, puoi anche descrivere in parole semplici ciò su cui stai lavorando:88Puoi anche descrivere in parole semplici ciò su cui stai lavorando:

89 89 

90```text theme={null}90```text theme={null}

91/code-review ultra check my auth changes91/code-review ultra check my auth changes


159 159 

160Quando esegui il sottocomando, acconsenti al fallback sull'intero repository e al prompt su fatturazione e termini, quindi l'esecuzione non si ferma a chiederti conferma. È il fatto di eseguirlo tu stesso a valere come consenso. Quando invece è Claude a eseguire il sottocomando per te, ad esempio tramite lo strumento Bash, Claude Code rifiuta la review dell'intero repository.160Quando esegui il sottocomando, acconsenti al fallback sull'intero repository e al prompt su fatturazione e termini, quindi l'esecuzione non si ferma a chiederti conferma. È il fatto di eseguirlo tu stesso a valere come consenso. Quando invece è Claude a eseguire il sottocomando per te, ad esempio tramite lo strumento Bash, Claude Code rifiuta la review dell'intero repository.

161 161 

162`claude -p '/code-review ultra'` non ti restituisce i risultati, quindi negli script usa `claude ultrareview`. L'esecuzione con `-p` avvia la review nel cloud ed esce senza attenderla. Quando la review addebiterebbe crediti di utilizzo, l'esecuzione con `-p` si interrompe senza avviarla. Prima della v2.1.218, `/code-review ultra` in una sessione non interattiva eseguiva una review locale.162> [!NOTE]

163>

164> `claude -p '/code-review ultra'` non ti restituisce i risultati, quindi negli script usa `claude ultrareview`. L'esecuzione con `-p` avvia la review nel cloud ed esce senza attenderla. Quando la review addebiterebbe crediti di utilizzo, l'esecuzione con `-p` si interrompe senza avviarla.

163 165 

164| Flag | Descrizione |166| Flag | Descrizione |

165| - | - |167| - | - |

Details

182* Puoi anche fare clic su **Modifiche** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.182* Puoi anche fare clic su **Modifiche** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.

183* Per mostrare il pannello quando è nascosto, fai clic sull'icona **Mostra barra laterale della sessione** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.183* Per mostrare il pannello quando è nascosto, fai clic sull'icona **Mostra barra laterale della sessione** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.

184 184 

185Il diff confronta le modifiche della sessione rispetto al suo branch base per impostazione predefinita. Per confrontare rispetto a un branch diverso, seleziona **Confronta con** e scegline uno.185Il diff confronta le modifiche della sessione rispetto al suo branch base per impostazione predefinita. Per confrontare rispetto a un branch diverso, seleziona **Confronta con** e scegline uno. Rispetto al branch base, il diff può [omettere le modifiche di cui non è ancora stato effettuato il push](https://code.claude.com/docs/it/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

186 186 

187**2. Lascia commenti inline**187**2. Lascia commenti inline**

188 188 

189Seleziona qualsiasi riga nel diff, digita il tuo feedback e premi Invio. I commenti si accumulano fino a quando non invii il tuo prossimo messaggio, quindi vengono raggruppati con esso. Claude vede "a `src/auth.ts:47`, non catturare l'errore qui" insieme alla tua istruzione principale, quindi non devi descrivere dove si trova il problema.189Passa il mouse su una riga nel diff e fai clic sul **+** che appare accanto al suo numero di riga per aprire una casella di commento, quindi digita il tuo feedback e premi Invio. I commenti si accumulano fino a quando non invii il tuo prossimo messaggio, quindi vengono raggruppati con esso. Claude vede "a `src/auth.ts:47`, non catturare l'errore qui" insieme alla tua istruzione principale, quindi non devi descrivere dove si trova il problema.

190 190 

191**3. Crea una pull request**191**3. Crea una pull request**

192 192 

workflows.md +5 −9

Details

155* Il [limite di subagent concorrenti](https://code.claude.com/docs/it/sub-agents.md#concurrent-subagent-limit) della sessione non viene applicato per i subagent che Claude genera con lo strumento Agent155* Il [limite di subagent concorrenti](https://code.claude.com/docs/it/sub-agents.md#concurrent-subagent-limit) della sessione non viene applicato per i subagent che Claude genera con lo strumento Agent

156* In modalità di autorizzazione automatica, non ti viene chiesto di [approvare il primo lancio del flusso di lavoro](#approve-the-plan-before-it-runs)156* In modalità di autorizzazione automatica, non ti viene chiesto di [approvare il primo lancio del flusso di lavoro](#approve-the-plan-before-it-runs)

157 157 

158`/effort ultracode` dura per la sessione corrente; per avere ogni sessione che inizi con esso, imposta l'impostazione [`ultracode`](https://code.claude.com/docs/it/settings-reference#ultracode). Disattivalo con `/effort ultracode off` quando ritorni al lavoro di routine. Il cursore `/effort` offre il toggle solo [quando ultracode è disponibile](https://code.claude.com/docs/it/model-config.md#when-ultracode-is-available).158`/effort ultracode` dura per la sessione corrente; per fare in modo che ogni sessione inizi con esso, imposta l'impostazione [`ultracode`](https://code.claude.com/docs/it/settings-reference#ultracode). Disattivalo con `/effort ultracode off` quando ritorni al lavoro di routine. Il cursore `/effort` offre il toggle solo [quando ultracode è disponibile](https://code.claude.com/docs/it/model-config.md#when-ultracode-is-available). Prima della v2.1.284, `/effort ultracode` impostava la sessione su `xhigh`, e `/effort ultracode off` falliva con `Invalid argument`.

159 159 

160### Approvare il piano prima che venga eseguito160### Approvare il piano prima che venga eseguito

161 161 


198* `.claude/workflows/` nel tuo progetto: condiviso con chiunque cloni il repo198* `.claude/workflows/` nel tuo progetto: condiviso con chiunque cloni il repo

199* `~/.claude/workflows/` nella tua home directory: disponibile in ogni progetto, visibile solo a te. Se imposti [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars), questa posizione è la directory `workflows/` sotto quel percorso.199* `~/.claude/workflows/` nella tua home directory: disponibile in ogni progetto, visibile solo a te. Se imposti [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars), questa posizione è la directory `workflows/` sotto quel percorso.

200 200 

201La finestra di dialogo di salvataggio mostra il percorso risolto per la posizione personale.201La finestra di dialogo di salvataggio mostra il percorso risolto per la posizione personale. Premi Invio per salvare. Il flusso di lavoro viene eseguito come `/<name>` nelle future sessioni da entrambi i percorsi.

202 202 

203Premi Invio per salvare. Il flusso di lavoro viene eseguito come `/<name>` nelle future sessioni da entrambi i percorsi.203Claude Code controlla il percorso di salvataggio per i collegamenti simbolici prima di scrivere e mostra un errore invece di scrivere attraverso uno di essi:

204 

205Claude Code controlla il percorso di salvataggio per i symlink prima di scrivere e mostra un errore invece di scrivere attraverso uno. Quello che controlla dipende da dove salvi:

206 204 

207* Posizione del progetto: Claude Code rifiuta se `.claude`, `.claude/workflows`, o il file di destinazione è un symlink.205* Posizione del progetto: Claude Code rifiuta se `.claude`, `.claude/workflows`, o il file di destinazione è un symlink.

208* Posizione personale: Claude Code rifiuta solo se il file di destinazione stesso è un symlink, quindi una directory `~/.claude` gestita da uno strumento dotfiles funziona comunque.206* Posizione personale: Claude Code rifiuta solo se il file di destinazione stesso è un symlink, quindi una directory `~/.claude` gestita da uno strumento dotfiles funziona comunque.

209 207 

210Prima della v2.1.216, Claude Code seguiva il link, che potrebbe posizionare il file al di fuori della posizione che hai scelto.

211 

212In un monorepo con diverse directory `.claude/`, puoi mantenere i flussi di lavoro insieme al pacchetto a cui si applicano. Il salvataggio nella posizione del progetto scrive nella directory `.claude/workflows/` più vicina che già esiste tra la tua directory di lavoro e la radice del repository, o nella radice del repository se non ne esiste ancora nessuna. I flussi di lavoro del progetto si caricano anche da ogni `.claude/workflows/` lungo quel percorso, e quando più di uno definisce lo stesso nome Claude Code esegue quello più vicino alla directory di lavoro.208In un monorepo con diverse directory `.claude/`, puoi mantenere i flussi di lavoro insieme al pacchetto a cui si applicano. Il salvataggio nella posizione del progetto scrive nella directory `.claude/workflows/` più vicina che già esiste tra la tua directory di lavoro e la radice del repository, o nella radice del repository se non ne esiste ancora nessuna. I flussi di lavoro del progetto si caricano anche da ogni `.claude/workflows/` lungo quel percorso, e quando più di uno definisce lo stesso nome Claude Code esegue quello più vicino alla directory di lavoro.

213 209 

214Se un flusso di lavoro di progetto e un flusso di lavoro personale condividono un nome, viene eseguito quello di progetto.210Se un flusso di lavoro di progetto e un flusso di lavoro personale condividono un nome, viene eseguito quello di progetto.


469| `medium` | Meno di 10 agenti |465| `medium` | Meno di 10 agenti |

470| `large` | Meno di 50 agenti |466| `large` | Meno di 50 agenti |

471 467 

472L'impostazione predefinita è `medium`, oppure `small` quando accedi con un piano Pro e Claude Code v2.1.271 o successivo. Finché non scegli un valore, la riga `/config` mostra il valore come predefinito, e la linea `Running in background` del workflow nomina la dimensione in vigore. Richiede Claude Code v2.1.219 o successivo; le versioni precedenti hanno come impostazione predefinita `unrestricted`.468L'impostazione predefinita è `medium`, oppure `small` quando accedi con un piano Pro e Claude Code v2.1.271 o successivo. Finché non scegli un valore, la riga `/config` mostra il valore come predefinito, e la linea `Running in background` del workflow nomina la dimensione in vigore.

473 469 

474Per modificare la linea guida, scegli un valore per l'impostazione Dynamic workflow size in `/config`, oppure esegui `/config workflowSizeGuideline=small`. Su v2.1.219 e successivo, puoi anche impostare la chiave [`workflowSizeGuideline`](https://code.claude.com/docs/it/settings-reference#workflowsizeguideline) in qualsiasi file di impostazioni; quel valore ha la precedenza su `/config`, e Claude Code nasconde la riga `/config` mentre un file di impostazioni ne fornisce uno.470Per modificare la linea guida, scegli un valore per l'impostazione Dynamic workflow size in `/config`, oppure esegui `/config workflowSizeGuideline=small`. Puoi anche impostare la [chiave `workflowSizeGuideline`](https://code.claude.com/docs/it/settings-reference#workflowsizeguideline) in qualsiasi file di impostazioni; quel valore ha la precedenza su `/config`, e Claude Code nasconde la riga `/config` mentre un file di impostazioni ne fornisce uno.

475 471 

476Le modifiche hanno effetto al prompt successivo. I [limiti degli agenti del runtime](#behavior-and-limits) si applicano comunque indipendentemente dall'impostazione.472Le modifiche hanno effetto al prompt successivo. I [limiti degli agenti del runtime](#behavior-and-limits) si applicano comunque indipendentemente dall'impostazione.

477 473 

worktrees.md +22 −10

Details

43 43 

44Potete anche chiedere a Claude di "lavorare in un worktree" durante una sessione, e creerà uno con lo strumento [`EnterWorktree`](https://code.claude.com/docs/it/tools-reference). Una volta in un worktree, Claude può passare direttamente a un altro sotto `.claude/worktrees/` chiamando `EnterWorktree` con il percorso di destinazione; il worktree precedente rimane su disco intatto.44Potete anche chiedere a Claude di "lavorare in un worktree" durante una sessione, e creerà uno con lo strumento [`EnterWorktree`](https://code.claude.com/docs/it/tools-reference). Una volta in un worktree, Claude può passare direttamente a un altro sotto `.claude/worktrees/` chiamando `EnterWorktree` con il percorso di destinazione; il worktree precedente rimane su disco intatto.

45 45 

46Quando Claude entra in un percorso al di fuori della directory `.claude/worktrees/` del repository, Claude Code chiede prima la vostra approvazione, perché lo spostamento porta la directory di lavoro della sessione, l'accesso in scrittura e la configurazione del progetto come `CLAUDE.md` e le impostazioni in quella posizione. Una regola di [permesso](https://code.claude.com/docs/it/permissions.md) `EnterWorktree` o la scelta di "non chiedere di nuovo" non sopprime questo prompt; solo la modalità `bypassPermissions` lo salta. Prima della v2.1.206, Claude poteva entrare in qualsiasi percorso di worktree esistente senza chiedere.46Quando Claude entra in un percorso al di fuori della directory `.claude/worktrees/` del repository, Claude Code chiede prima la tua approvazione. Lo spostamento porta in quella posizione la directory di lavoro della sessione, l'accesso in scrittura e la configurazione del progetto come `CLAUDE.md` e le impostazioni. Una [regola di permesso](https://code.claude.com/docs/it/permissions.md) `EnterWorktree` o la scelta di "non chiedere di nuovo" non sopprime questa richiesta; solo la modalità `bypassPermissions` la salta.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>


63 63 

64Le esecuzioni non interattive con `-p` non hanno un prompt di uscita, quindi Claude non pulisce i loro worktree, e Claude Code lascia il blocco che ha preso su ognuno al momento della creazione in posizione fino a quando una [scansione di blocco stale](#clean-up-subagent-and-background-session-worktrees) successiva della sessione lo rilascia. Per rimuoverne uno, eseguite `git worktree remove`; se git rifiuta perché il worktree è bloccato, eseguite prima `git worktree unlock` su di esso.64Le esecuzioni non interattive con `-p` non hanno un prompt di uscita, quindi Claude non pulisce i loro worktree, e Claude Code lascia il blocco che ha preso su ognuno al momento della creazione in posizione fino a quando una [scansione di blocco stale](#clean-up-subagent-and-background-session-worktrees) successiva della sessione lo rilascia. Per rimuoverne uno, eseguite `git worktree remove`; se git rifiuta perché il worktree è bloccato, eseguite prima `git worktree unlock` su di esso.

65 65 

66Su Windows, rimuovere un worktree non elimina i file al di fuori di esso. Se una cartella all'interno del worktree è un collegamento a qualcos'altro, come una junction NTFS o un symlink di directory, Claude Code elimina solo il collegamento e mantiene la cartella a cui punta. Prima della v2.1.205, rimuovere un worktree con un collegamento annidato in una sottodirectory potrebbe eliminare la cartella a cui puntava.66Su Windows, rimuovere un worktree non elimina i file al di fuori di esso. Se una cartella all'interno del worktree è un collegamento a qualcos'altro, come una junction NTFS o un collegamento simbolico di directory, Claude Code elimina solo il collegamento.

67 67 

68## Riprendere una sessione di worktree68## Riprendere una sessione di worktree

69 69 


81>81>

82> Prima della v2.1.212, una ripresa non interattiva rimaneva nella directory di avvio e `ExitWorktree` segnalava che non c'era una sessione di worktree attiva da cui uscire.82> Prima della v2.1.212, una ripresa non interattiva rimaneva nella directory di avvio e `ExitWorktree` segnalava che non c'era una sessione di worktree attiva da cui uscire.

83 83 

84Quando Claude entra o esce da un worktree che Claude Code ha creato con git, la trascrizione segue: Claude Code registra la sessione sotto la nuova directory di lavoro della sessione, nello stesso modo in cui [`/cd`](https://code.claude.com/docs/it/commands) lo fa, quindi `/desktop` e `--resume` la trovano lì. Uscire la sposta di nuovo nello stesso modo. Un worktree creato da un hook [`WorktreeCreate`](#non-git-version-control) mantiene la sua trascrizione nella directory di lancio. Richiede Claude Code v2.1.198 o successivo.84Quando Claude entra o esce da un worktree che Claude Code ha creato con git, la trascrizione lo segue. Claude Code registra la sessione sotto la nuova directory di lavoro della sessione, nello stesso modo in cui fa [`/cd`](https://code.claude.com/docs/it/commands), quindi `/desktop` e `--resume` la trovano lì. L'uscita la riporta indietro nello stesso modo. Un worktree creato da un [hook `WorktreeCreate`](#non-git-version-control) mantiene la sua trascrizione nella directory di avvio.

85 85 

86## Come Claude Code applica l'isolamento86## Come Claude Code applica l'isolamento

87 87 


139 139 

140Claude Code scrive un marcatore nei metadati git di ogni worktree che crea con git, e la scansione mantiene qualsiasi worktree senza uno, incluso un worktree che un hook [`WorktreeCreate`](#non-git-version-control) ha creato.140Claude Code scrive un marcatore nei metadati git di ogni worktree che crea con git, e la scansione mantiene qualsiasi worktree senza uno, incluso un worktree che un hook [`WorktreeCreate`](#non-git-version-control) ha creato.

141 141 

142#### Blocchi dei worktree e rimozione manuale

143 

142Mentre un agente è in esecuzione, Claude Code mantiene un `git worktree lock` sul suo worktree in modo che la pulizia concorrente non possa rimuoverlo, e rilascia il blocco quando l'agente finisce. Claude Code mantiene lo stesso blocco sul worktree che ha creato per una sessione inviata in background mentre la sessione viene eseguita, quindi la scansione lascia il worktree in posizione e `git worktree remove` rifiuta di rimuoverlo.144Mentre un agente è in esecuzione, Claude Code mantiene un `git worktree lock` sul suo worktree in modo che la pulizia concorrente non possa rimuoverlo, e rilascia il blocco quando l'agente finisce. Claude Code mantiene lo stesso blocco sul worktree che ha creato per una sessione inviata in background mentre la sessione viene eseguita, quindi la scansione lascia il worktree in posizione e `git worktree remove` rifiuta di rimuoverlo.

143 145 

144La scansione rilascia anche un blocco che Claude Code ha impostato per una sessione il cui processo è uscito, quindi una sessione in background uccisa non lascia il suo worktree permanentemente bloccato. La scansione non rilascia mai un blocco che avete impostato voi stessi con `git worktree lock`. Prima della v2.1.210, un blocco lasciato da una sessione uccisa rimaneva in posizione fino a quando non eseguivate `git worktree unlock`.146La scansione rilascia anche un blocco che Claude Code ha impostato per una sessione il cui processo è uscito, quindi una sessione in background uccisa non lascia il suo worktree permanentemente bloccato. La scansione non rilascia mai un blocco che hai impostato tu stesso con `git worktree lock`.

145 147 

146Per pulire un worktree che la scansione mantiene, eseguite `git worktree remove`, aggiungendo `--force` se il worktree ha modifiche non committate o file non tracciati. Se git rifiuta perché il worktree è bloccato, eseguite prima `git worktree unlock` su di esso.148Per pulire un worktree che la scansione mantiene, eseguite `git worktree remove`, aggiungendo `--force` se il worktree ha modifiche non committate o file non tracciati. Se git rifiuta perché il worktree è bloccato, eseguite prima `git worktree unlock` su di esso.

147 149 


158 160 

159Non potete impostare `worktree.baseRef` a un nome di branch. Per avviare un worktree da un branch esistente specifico, [createlo con git direttamente](#manage-worktrees-manually).161Non potete impostare `worktree.baseRef` a un nome di branch. Per avviare un worktree da un branch esistente specifico, [createlo con git direttamente](#manage-worktrees-manually).

160 162 

161Per una base `"fresh"`, Claude Code mantiene `origin/HEAD` aggiornato: quando il repository non è stato sottoposto a fetch nelle ultime 24 ore, esegue il fetch del branch predefinito, con un limite di cinque secondi, e utilizza il ref memorizzato nella cache locale se il fetch fallisce. Il fetch non attende mai input nel tuo terminale, quindi viene considerato fallito anche quando git o ssh chiederebbero una password, una passphrase della chiave o la conferma di un nuovo host SSH. Se nessun remote è configurato, oppure `origin/HEAD` non è memorizzato nella cache locale e non è possibile recuperarlo, il worktree ricade sul tuo `HEAD` locale corrente. Prima della v2.1.208, un worktree fresh utilizzava qualunque `origin/HEAD` fosse già memorizzato nella cache locale.163Per una base `"fresh"`, Claude Code mantiene `origin/HEAD` aggiornato:

164 

165* Quando il repository non è stato sottoposto a fetch nelle ultime 24 ore, esegue il fetch del branch predefinito, con un limite di cinque secondi, e utilizza il ref memorizzato nella cache locale se il fetch fallisce.

166* Il fetch non attende mai input nel tuo terminale. Viene considerato fallito anche quando git o ssh chiederebbero una password, una passphrase della chiave o la conferma di un nuovo host SSH.

167* Se nessun remote è configurato, oppure `origin/HEAD` non è memorizzato nella cache locale e non è possibile recuperarlo, il worktree ricade sul tuo `HEAD` locale corrente.

162 168 

163Questo esempio fa sì che ogni nuovo worktree si dirama dal vostro lavoro corrente:169Questo esempio fa sì che ogni nuovo worktree si dirama dal vostro lavoro corrente:

164 170 


210 216 

211Passare a `--worktree` un nome la cui directory esiste già apre quel worktree esistente invece di crearne uno nuovo.217Passare a `--worktree` un nome la cui directory esiste già apre quel worktree esistente invece di crearne uno nuovo.

212 218 

213Con il `"fresh"` [base](#choose-the-base-branch) predefinito, un worktree riaperto si ripristina al branch predefinito del repository invece di continuare al suo vecchio tip quando tutte le seguenti condizioni sono soddisfatte:219Con la [base](#choose-the-base-branch) predefinita `"fresh"`, un worktree riaperto si reimposta sul branch predefinito del repository invece di continuare dal suo vecchio tip quando sono soddisfatte tutte le seguenti condizioni:

214 220 

215* Non ha modifiche non committate o file non tracciati.221* Non ha modifiche non committate o file non tracciati.

216* È ancora sul branch che Claude Code ha creato per esso.222* È ancora sul branch che Claude Code ha creato per esso.


225* `worktree.baseRef` è `"head"`.231* `worktree.baseRef` è `"head"`.

226* Il nome è un riferimento a una pull request o merge request.232* Il nome è un riferimento a una pull request o merge request.

227 233 

228Prima della v2.1.208, quando riutilizzavate un nome, Claude Code riapriva sempre il vecchio worktree al suo vecchio tip.

229 

230### Sostituire la creazione del worktree con un hook234### Sostituire la creazione del worktree con un hook

231 235 

232Configurate un hook [`WorktreeCreate`](https://code.claude.com/docs/it/hooks#worktreecreate) per sostituire completamente la logica predefinita di `git worktree`, incluso il posizionamento dei worktree da qualche parte diverso da `.claude/worktrees/`. Per un esempio completo, vedere [Controllo versione non-git](#non-git-version-control).236Configurate un hook [`WorktreeCreate`](https://code.claude.com/docs/it/hooks#worktreecreate) per sostituire completamente la logica predefinita di `git worktree`, incluso il posizionamento dei worktree da qualche parte diverso da `.claude/worktrees/`. Per un esempio completo, vedere [Controllo versione non-git](#non-git-version-control).


236Un worktree ottiene i suoi propri file e branch, ma condivide quanto segue con il checkout principale:240Un worktree ottiene i suoi propri file e branch, ma condivide quanto segue con il checkout principale:

237 241 

238* **La directory `.git` del repository**: i comandi git in un worktree scrivono nella directory `.git` condivisa del repository principale, e il [sandboxing](https://code.claude.com/docs/it/sandboxing.md#filesystem-isolation) consente quelle scritture, quindi comandi come `git commit` funzionano da dentro un worktree con la sandbox abilitata.242* **La directory `.git` del repository**: i comandi git in un worktree scrivono nella directory `.git` condivisa del repository principale, e il [sandboxing](https://code.claude.com/docs/it/sandboxing.md#filesystem-isolation) consente quelle scritture, quindi comandi come `git commit` funzionano da dentro un worktree con la sandbox abilitata.

239* **Plugin**: i plugin installati a [ambito del progetto](https://code.claude.com/docs/it/plugins/loading.md#find-where-a-plugin-is-enabled) dal checkout principale caricano anche nei worktree dello stesso repository, quindi non è necessario reinstallarli per ogni worktree. Richiede Claude Code v2.1.200 o successivo.243* **Plugin**: i plugin installati a [ambito del progetto](https://code.claude.com/docs/it/plugins/loading.md#find-where-a-plugin-is-enabled) dal checkout principale caricano anche nei worktree dello stesso repository, quindi non è necessario reinstallarli per ogni worktree.

240* **Approvazioni di permesso**: scegliere "Sì, e non chiedere di nuovo" per un comando Bash in una sessione di worktree salva la regola nel `.claude/settings.local.json` del checkout principale, quindi si applica nel checkout principale e in ogni altro worktree del repository, e sopravvive alla rimozione del worktree. Su Windows e negli altri casi in cui Claude Code [non utilizza la radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file), la regola rimane con quel worktree. Prima della v2.1.211, un'approvazione concessa in un worktree era salvata all'interno di quel worktree, non si applicava altrove, e era persa quando il worktree era rimosso. Vedere [dove le approvazioni sono salvate](https://code.claude.com/docs/it/permissions.md#permission-system).244* **Approvazioni di permesso**: scegliere "Sì, e non chiedere di nuovo" per un comando Bash in una sessione di worktree salva la regola nel `.claude/settings.local.json` del checkout principale. La regola si applica nel checkout principale e in ogni altro worktree del repository, e sopravvive alla rimozione del worktree.

245 

246 Su Windows e negli altri casi in cui Claude Code [non utilizza la radice del repository](https://code.claude.com/docs/it/settings.md#where-claude-code-looks-for-each-file), la regola rimane con quel worktree. Consulta [dove vengono salvate le approvazioni](https://code.claude.com/docs/it/permissions.md#permission-system).

241* **Skill, agenti e comandi non tracciati**: quando il checkout del worktree non ha una directory `.claude/skills` alla sua radice, ad esempio perché il vostro `.claude/skills` è gitignored, Claude Code carica le [skill del progetto](https://code.claude.com/docs/it/skills.md#where-skills-live) del checkout principale nella sessione del worktree. In un worktree con la sua propria directory `.claude/skills`, carica solo quella copia.247* **Skill, agenti e comandi non tracciati**: quando il checkout del worktree non ha una directory `.claude/skills` alla sua radice, ad esempio perché il vostro `.claude/skills` è gitignored, Claude Code carica le [skill del progetto](https://code.claude.com/docs/it/skills.md#where-skills-live) del checkout principale nella sessione del worktree. In un worktree con la sua propria directory `.claude/skills`, carica solo quella copia.

242 248 

243 Lo stesso read-through copre `.claude/agents` e `.claude/commands`. Per le skill, il read-through richiede Claude Code v2.1.277 o successivo.249 Lo stesso read-through copre `.claude/agents` e `.claude/commands`. Per le skill, il read-through richiede Claude Code v2.1.277 o successivo.


322 328 

323Claude Code rifiuta di creare un worktree quando `.claude`, `.claude/worktrees`, o la directory del worktree stesso è un symlink, e l'errore nomina il percorso symlinked. Rimuovete il symlink e riprovate. Prima della v2.1.212, se il repository conteneva già un symlink committato in uno di quei percorsi, la creazione del worktree lo seguiva e poteva creare file al di fuori del repository.329Claude Code rifiuta di creare un worktree quando `.claude`, `.claude/worktrees`, o la directory del worktree stesso è un symlink, e l'errore nomina il percorso symlinked. Rimuovete il symlink e riprovate. Prima della v2.1.212, se il repository conteneva già un symlink committato in uno di quei percorsi, la creazione del worktree lo seguiva e poteva creare file al di fuori del repository.

324 330 

331### Un worktree creato da Claude Code ha il contenuto originale degli oggetti sostituiti

332 

333Se il tuo repository usa [`git replace`](https://git-scm.com/docs/git-replace), i file in un worktree che Claude Code crea contengono il contenuto degli oggetti originali anziché quello delle sostituzioni indicate dalle tue voci `refs/replace/`. Claude Code esegue i comandi git che effettuano il checkout dei file del worktree con `GIT_NO_REPLACE_OBJECTS=1`, ignorando qualsiasi valore che hai esportato per quella variabile.

334 

335Per ottenere il contenuto sostituito, [crea tu stesso il worktree](#manage-worktrees-manually) con `git worktree add` e avvia Claude Code al suo interno.

336 

325### I file Git LFS sono file puntatore in un worktree che Claude Code ha creato337### I file Git LFS sono file puntatore in un worktree che Claude Code ha creato

326 338 

327Se configurate [Git LFS](https://git-lfs.com) con `git lfs install --local`, un worktree che Claude Code crea contiene file puntatore LFS invece dei file reali. Il flag `--local` scrive il filtro LFS nel `.git/config` del repository stesso piuttosto che nella vostra configurazione git globale. Un semplice `git lfs install` scrive nella vostra configurazione globale e non è interessato. Lo stesso si applica a qualsiasi altro [driver di filtro](https://git-scm.com/docs/gitattributes) definito nel config del repository stesso.339Se configurate [Git LFS](https://git-lfs.com) con `git lfs install --local`, un worktree che Claude Code crea contiene file puntatore LFS invece dei file reali. Il flag `--local` scrive il filtro LFS nel `.git/config` del repository stesso piuttosto che nella vostra configurazione git globale. Un semplice `git lfs install` scrive nella vostra configurazione globale e non è interessato. Lo stesso si applica a qualsiasi altro [driver di filtro](https://git-scm.com/docs/gitattributes) definito nel config del repository stesso.