SpyBara
Go Premium

Documentation 2026-11-13 23:02 UTC to 2026-11-14 03:01 UTC

37 files changed +340 −193. View all changes and history on the product overview
2026
Sat 14 03:01 Fri 13 23:02 Thu 12 23:02 Wed 11 22:59 Tue 10 21:57 Mon 9 23:02 Sun 8 22:58 Sat 7 23:58 Fri 6 23:01 Thu 5 23:03 Wed 4 23:59 Tue 3 23:58 Mon 2 23:57 Sun 1 23:57
Details

14 14 

15## Come funziona il checkpointing15## Come funziona il checkpointing

16 16 

17Quando abiliti il checkpointing dei file, l'SDK crea backup dei file prima di modificarli tramite gli strumenti Write, Edit o NotebookEdit. I messaggi dell'utente nel flusso di risposta includono un UUID di checkpoint che puoi utilizzare come punto di ripristino.17Quando abiliti il checkpointing dei file, l'SDK crea backup dei file prima di modificarli tramite gli strumenti Write, Edit o NotebookEdit. Ogni prompt che avvia un turno è un checkpoint, e l'UUID del relativo messaggio utente è il punto di ripristino.

18 18 

19> [!NOTE]19> [!NOTE]

20>20>


147 147 

148**2. Acquisisci l'UUID di checkpoint e l'ID di sessione**148**2. Acquisisci l'UUID di checkpoint e l'ID di sessione**

149 149 

150Con l'opzione `replay-user-messages` impostata, ogni messaggio dell'utente nel flusso di risposta ha un UUID che funge da checkpoint.150Con l'opzione `replay-user-messages` impostata, il messaggio dell'utente per ogni prompt che avvia un turno ha un UUID che funge da checkpoint. Anche i messaggi dell'utente che contengono risultati degli strumenti hanno un UUID, ma non è un checkpoint.

151 151 

152Per la maggior parte dei casi d'uso, acquisisci l'UUID del primo messaggio dell'utente (`message.uuid`); il ripristino ad esso ripristina i file tracciati al loro stato originale. Per archiviare più checkpoint e ripristinare a stati intermedi, vedi [Più punti di ripristino](#multiple-restore-points).152Per la maggior parte dei casi d'uso, acquisisci l'UUID del primo messaggio dell'utente (`message.uuid`); il ripristino ad esso ripristina i file tracciati al loro stato originale. Per archiviare più checkpoint e ripristinare a stati intermedi, vedi [Più punti di ripristino](#multiple-restore-points).

153 153 


171 171 

172### Checkpoint prima di operazioni rischiose172### Checkpoint prima di operazioni rischiose

173 173 

174Questo modello mantiene solo l'UUID di checkpoint più recente, aggiornandolo prima di ogni turno dell'agente. Se qualcosa va storto durante l'elaborazione, puoi immediatamente ripristinare all'ultimo stato sicuro e uscire dal ciclo.174Questo modello mantiene solo l'UUID di checkpoint più recente, aggiornandolo a ogni prompt che avvia un turno. Se qualcosa va storto durante l'elaborazione, puoi immediatamente ripristinare all'ultimo stato sicuro e uscire dal ciclo.

175 175 

176Prima di eseguire questo esempio, sostituisci `your_revert_condition` (Python) o `yourRevertCondition` (TypeScript) con il tuo controllo personale, come il rilevamento di errori o un errore di convalida; il segnaposto non è definito nell'esempio.176Prima di eseguire questo esempio, sostituisci `your_revert_condition` (Python) o `yourRevertCondition` (TypeScript) con il tuo controllo personale, come il rilevamento di errori o un errore di convalida; il segnaposto non è definito nell'esempio.

177 177 


193 await client.query("Refactor the authentication module")193 await client.query("Refactor the authentication module")

194 194 

195 async for message in client.receive_response():195 async for message in client.receive_response():

196 # Update checkpoint before each agent turn starts196 # Update checkpoint at each prompt you send; a tool result isn't one

197 # This overwrites the previous checkpoint. Only keep the latest197 # This overwrites the previous checkpoint. Only keep the latest

198 if isinstance(message, UserMessage) and message.uuid:198 if (

199 isinstance(message, UserMessage)

200 and message.uuid

201 and message.tool_use_result is None

202 and message.parent_tool_use_id is None

203 ):

199 safe_checkpoint = message.uuid204 safe_checkpoint = message.uuid

200 205 

201 # Decide when to revert based on your own logic206 # Decide when to revert based on your own logic


225 let safeCheckpoint: string | undefined;230 let safeCheckpoint: string | undefined;

226 231 

227 for await (const message of response) {232 for await (const message of response) {

228 // Update checkpoint before each agent turn starts233 // Update checkpoint at each prompt you send; a tool result isn't one

229 // This overwrites the previous checkpoint. Only keep the latest234 // This overwrites the previous checkpoint. Only keep the latest

230 if (message.type === "user" && message.uuid) {235 if (message.type === "user" && "isReplay" in message && message.isReplay && message.uuid) {

231 safeCheckpoint = message.uuid;236 safeCheckpoint = message.uuid;

232 }237 }

233 238 


246 251 

247### Più punti di ripristino252### Più punti di ripristino

248 253 

249Se Claude effettua modifiche su più turni, potresti voler ripristinare a un punto specifico piuttosto che all'inizio. Ad esempio, se Claude effettua il refactoring di un file nel turno uno e aggiunge test nel turno due, potresti voler mantenere il refactoring ma annullare i test.254Se Claude effettua modifiche su più prompt, potresti voler ripristinare a un punto specifico piuttosto che tornare fino all'inizio. Ad esempio, se il tuo primo prompt effettua il refactoring di un file e il secondo aggiunge test, ripristina al checkpoint del tuo secondo prompt per mantenere il refactoring e annullare i test.

250 255 

251Questo modello archivia tutti gli UUID di checkpoint in un array con metadati. Dopo il completamento della sessione, puoi ripristinare a qualsiasi checkpoint precedente:256Questo modello archivia ogni UUID di checkpoint in un array con metadati. Dopo il completamento della sessione, puoi ripristinare a qualsiasi checkpoint precedente:

252 257 

253```python Python theme={null}258```python Python theme={null}

254import asyncio259import asyncio


284 await client.query("Refactor the authentication module")289 await client.query("Refactor the authentication module")

285 290 

286 async for message in client.receive_response():291 async for message in client.receive_response():

287 if isinstance(message, UserMessage) and message.uuid:292 if (

293 isinstance(message, UserMessage)

294 and message.uuid

295 and message.tool_use_result is None

296 and message.parent_tool_use_id is None

297 ):

288 checkpoints.append(298 checkpoints.append(

289 Checkpoint(299 Checkpoint(

290 id=message.uuid,300 id=message.uuid,


338 348 

339 try {349 try {

340 for await (const message of response) {350 for await (const message of response) {

341 if (message.type === "user" && message.uuid) {351 if (message.type === "user" && "isReplay" in message && message.isReplay && message.uuid) {

342 checkpoints.push({352 checkpoints.push({

343 id: message.uuid,353 id: message.uuid,

344 description: `After turn ${checkpoints.length + 1}`,354 description: `After turn ${checkpoints.length + 1}`,


638 648 

639* Il checkpointing dei file non era abilitato sulla sessione originale (`enable_file_checkpointing` o `enableFileCheckpointing` non era impostato su `true`)649* Il checkpointing dei file non era abilitato sulla sessione originale (`enable_file_checkpointing` o `enableFileCheckpointing` non era impostato su `true`)

640* La sessione non è stata completata correttamente prima di tentare di riprendere e ripristinare650* La sessione non è stata completata correttamente prima di tentare di riprendere e ripristinare

651* L'UUID proveniva da un messaggio dell'utente che contiene il risultato di uno strumento, il quale non è un checkpoint

641 652 

642**Soluzione**: Assicurati che `enable_file_checkpointing=True` (Python) o `enableFileCheckpointing: true` (TypeScript) fosse impostato sulla sessione originale, quindi utilizza il modello mostrato negli esempi: acquisisci l'UUID del primo messaggio dell'utente, completa la sessione completamente, quindi riprendi con un prompt vuoto e chiama `rewindFiles()` una volta.653**Soluzione**: Assicurati che `enable_file_checkpointing=True` (Python) o `enableFileCheckpointing: true` (TypeScript) fosse impostato sulla sessione originale, quindi utilizza il modello mostrato negli esempi: acquisisci l'UUID del primo messaggio dell'utente, completa la sessione completamente, quindi riprendi con un prompt vuoto e chiama `rewindFiles()` una volta.

643 654 

Details

496| **Persistenza** | File per progetto | Salvati come file | Solo sessione | Solo sessione |496| **Persistenza** | File per progetto | Salvati come file | Solo sessione | Solo sessione |

497| **Riutilizzabilità** | Per progetto | Tra progetti | Duplicazione del codice | Duplicazione del codice |497| **Riutilizzabilità** | Per progetto | Tra progetti | Duplicazione del codice | Duplicazione del codice |

498| **Gestione** | Nel filesystem | CLI + file | Nel codice | Nel codice |498| **Gestione** | Nel filesystem | CLI + file | Nel codice | Nel codice |

499| **Strumenti predefiniti** | Preservati | Preservati | Preservati | Persi (a meno che non inclusi) |499| **Indicazioni sugli strumenti** | Preservate | Preservate | Preservate | Perse (salvo se incluse) |

500| **Sicurezza integrata** | Mantenuta | Mantenuta | Mantenuta | Deve essere aggiunta |500| **Sicurezza integrata** | Mantenuta | Mantenuta | Mantenuta | Deve essere aggiunta |

501| **Livello di personalizzazione** | Solo aggiunte | Aggiunte; possono omettere le istruzioni di programmazione | Solo aggiunte | Controllo completo |501| **Livello di personalizzazione** | Solo aggiunte | Aggiunte; possono omettere le istruzioni di programmazione | Solo aggiunte | Controllo completo |

502| **Controllo versione** | Con progetto | Sì | Con codice | Con codice |502| **Controllo versione** | Con progetto | Sì | Con codice | Con codice |

Details

875| `allowed_tools` | `list[str]` | `[]` | Strumenti da approvare automaticamente senza chiedere, a eccezione delle letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). Questo non limita Claude a solo questi strumenti. Se nomini uno degli [strumenti di tracciamento delle attività](https://code.claude.com/docs/it/agent-sdk/todo-tracking.md#model-availability) qui, Claude Code li abilita anche per la sessione. Gli altri strumenti non elencati passano a `permission_mode` e `can_use_tool`. Usa `disallowed_tools` per bloccare gli strumenti. Vedi [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |875| `allowed_tools` | `list[str]` | `[]` | Strumenti da approvare automaticamente senza chiedere, a eccezione delle letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). Questo non limita Claude a solo questi strumenti. Se nomini uno degli [strumenti di tracciamento delle attività](https://code.claude.com/docs/it/agent-sdk/todo-tracking.md#model-availability) qui, Claude Code li abilita anche per la sessione. Gli altri strumenti non elencati passano a `permission_mode` e `can_use_tool`. Usa `disallowed_tools` per bloccare gli strumenti. Vedi [Permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md#allow-and-deny-rules) |

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

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

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

879| `permission_mode` | `PermissionMode \| None` | `None` | Modalità di permesso per l'utilizzo degli strumenti |879| `permission_mode` | `PermissionMode \| None` | `None` | Modalità di permesso per l'utilizzo degli strumenti |

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 |

Details

340| `Read`, `Edit`, `Glob` | Analizzare e modificare il codice |340| `Read`, `Edit`, `Glob` | Analizzare e modificare il codice |

341| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Automazione completa |341| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Automazione completa |

342 342 

343Per limitare gli strumenti integrati dell'agente a uno di questi insiemi, passalo come `tools`. Se invece elenchi un insieme in `allowedTools`, [pre-approvi quegli strumenti](https://code.claude.com/docs/it/agent-sdk/custom-tools.md#configure-allowed-tools) e l'agente può comunque chiamare gli altri, in base alla tua modalità di permesso.

344 

343**Permission modes** controllano quanto controllo umano desideri. L'SDK valuta la modalità attiva insieme alle tue regole di allow e deny in un ordine fisso, descritto in [How permissions are evaluated](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated). Per l'elenco completo delle modalità, il loro comportamento e quando utilizzare ciascuna, vedi [Permission mode in How the agent loop works](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#permission-mode).345**Permission modes** controllano quanto controllo umano desideri. L'SDK valuta la modalità attiva insieme alle tue regole di allow e deny in un ordine fisso, descritto in [How permissions are evaluated](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated). Per l'elenco completo delle modalità, il loro comportamento e quando utilizzare ciascuna, vedi [Permission mode in How the agent loop works](https://code.claude.com/docs/it/agent-sdk/agent-loop.md#permission-mode).

344 346 

345## Passaggi successivi347## Passaggi successivi

Details

146| `prompt` | `string` | Sì | Il prompt di sistema dell'agente che definisce il suo ruolo e comportamento |146| `prompt` | `string` | Sì | Il prompt di sistema dell'agente che definisce il suo ruolo e comportamento |

147| `tools` | `string[]` | 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) |147| `tools` | `string[]` | 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) |

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

149| `model` | `string` | No | Override del modello per questo agente. Accetta un alias come `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, o un ID modello completo. `'inherit'` utilizza il modello principale. Quando lo ometti, Claude Code sceglie il modello nell'[ordine del modello di subagent](https://code.claude.com/docs/it/sub-agents.md#choose-a-model) |149| `model` | `string` | No | Override del modello per questo agente. Accetta un alias come `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, o un ID modello completo. `'inherit'` utilizza il modello dell'agente che ha generato questo. Quando ometti `model`, Claude Code sceglie il modello nell'[ordine del modello di subagent](https://code.claude.com/docs/it/sub-agents.md#choose-a-model) |

150| `skills` | `string[]` | No | Elenco di nomi di skill da precaricare nel contesto dell'agente all'avvio. Vengono precaricati al massimo i [primi 32 nomi distinti](https://code.claude.com/docs/it/sub-agents.md#preload-skills-into-subagents) dell'elenco. Le skill non elencate rimangono invocabili attraverso lo strumento Skill |150| `skills` | `string[]` | No | Elenco di nomi di skill da precaricare nel contesto dell'agente all'avvio. Vengono precaricati al massimo i [primi 32 nomi distinti](https://code.claude.com/docs/it/sub-agents.md#preload-skills-into-subagents) dell'elenco. Le skill non elencate rimangono invocabili attraverso lo strumento Skill |

151| `memory` | `'user' \| 'project' \| 'local'` | No | Fonte di memoria per questo agente |151| `memory` | `'user' \| 'project' \| 'local'` | No | Fonte di memoria per questo agente |

152| `mcpServers` | `(string \| object)[]` | No | Server MCP disponibili per questo agente, per nome o configurazione inline |152| `mcpServers` | `(string \| object)[]` | No | Server MCP disponibili per questo agente, per nome o configurazione inline |

Details

589| `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) |589| `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) |

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

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

592| `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) |592| `strictMcpConfig` | `boolean` | `false` | Usa i server passati in `mcpServers` e ignora il `.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) |

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

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

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


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

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

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

1288| `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) |1288| `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 dell'agente che ha generato questo. Quando ometti `model`, Claude Code sceglie il modello secondo l'[ordine dei modelli dei subagent](https://code.claude.com/docs/it/sub-agents.md#choose-a-model) |

1289| `mcpServers` | No | Specifiche dei server MCP per questo agente |1289| `mcpServers` | No | Specifiche dei server MCP per questo agente |

1290| `skills` | No | Array di nomi di skill da precaricare nel contesto dell'agente |1290| `skills` | No | Array di nomi di skill da precaricare nel contesto dell'agente |

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

agent-teams.md +26 −9

Details

102>102>

103> `tmux` ha limitazioni note su alcuni sistemi operativi e tradizionalmente funziona meglio su macOS. L'uso di `tmux -CC` in iTerm2 è il punto di ingresso consigliato per `tmux`.103> `tmux` ha limitazioni note su alcuni sistemi operativi e tradizionalmente funziona meglio su macOS. L'uso di `tmux -CC` in iTerm2 è il punto di ingresso consigliato per `tmux`.

104 104 

105Il valore predefinito è `"in-process"`. Imposta `"auto"` per abilitare i riquadri divisi quando stai già eseguendo all'interno di una sessione tmux, oppure quando il tuo terminale è iTerm2 con la CLI `it2` installata, ripiegando su in-process negli altri casi. L'impostazione `"tmux"` abilita la modalità a riquadri divisi e rileva automaticamente se usare tmux o iTerm2 in base al tuo terminale.105Con i team di agenti [abilitati](#enable-agent-teams), segui questi passaggi per dare a ogni compagno di squadra il proprio riquadro:

106 106 

107Imposta `"iterm2"` per usare esplicitamente i riquadri divisi nativi di iTerm2. Questa modalità richiede la [CLI `it2`](https://github.com/mkusaka/it2) e mostra un errore con il comando di installazione se `it2` manca. La richiesta di configurazione che propone di installare `it2` o di passare a tmux compare con `"auto"` o `"tmux"` quando il tuo terminale è iTerm2 e tmux è disponibile come fallback.107**1. Installa tmux o configura iTerm2**

108 108 

109Per sovrascrivere il valore predefinito, imposta [`teammateMode`](https://code.claude.com/docs/it/settings-reference#teammatemode) in `~/.claude/settings.json`:109La modalità a riquadri divisi richiede [tmux](https://github.com/tmux/tmux/wiki) oppure iTerm2 con la [CLI `it2`](https://github.com/mkusaka/it2). Configura quello in cui eseguirai Claude Code:

110 

111* **tmux**: installalo tramite il gestore di pacchetti del tuo sistema. Consulta il [wiki di tmux](https://github.com/tmux/tmux/wiki/Installing) per le istruzioni specifiche per piattaforma.

112* **iTerm2**: installa la [CLI `it2`](https://github.com/mkusaka/it2), poi abilita la Python API in **iTerm2 > Settings > General > Magic > Enable Python API**.

113 

114**2. Attiva i riquadri divisi**

115 

116I compagni di squadra vengono eseguiti in-process finché non modifichi l'impostazione [`teammateMode`](https://code.claude.com/docs/it/settings-reference#teammatemode).

117 

118Impostala su `"auto"` in `~/.claude/settings.json`:

110 119 

111```json theme={null}120```json theme={null}

112{121{


114}123}

115```124```

116 125 

126Con `"auto"`, i compagni di squadra si aprono in riquadri divisi quando esegui Claude Code all'interno di tmux o iTerm2, e vengono eseguiti in-process negli altri terminali.

127 

128**3. Avvia Claude Code e genera i compagni di squadra**

129 

130Esegui `claude` all'interno di tmux o in iTerm2, poi chiedi a Claude di generare i compagni di squadra.

131 

132Se in iTerm2 compare una richiesta di configurazione per `it2`, seleziona **Install it2 now** per aprire i riquadri nella tua finestra di iTerm2.

133 

134Se esegui Claude Code al di fuori di tmux e iTerm2, oppure i riquadri non si aprono nella tua finestra di iTerm2, modifica di nuovo `teammateMode`:

135 

136* **Al di fuori di tmux e iTerm2**: con tmux installato, imposta `teammateMode` su `"tmux"`. I riquadri si aprono in una sessione tmux separata. Per osservarli, copia il comando dalla riga `View teammates` nel prompt di Claude Code ed esegui quel comando in un secondo terminale.

137* **I riquadri non si aprono nella tua finestra di iTerm2**: imposta `teammateMode` su `"iterm2"` per usare i riquadri nativi di iTerm2. I compagni di squadra si avviano quindi solo quando esegui Claude Code in iTerm2 con `it2` configurata.

138 

117Per impostare la modalità per una singola sessione, passala come flag:139Per impostare la modalità per una singola sessione, passala come flag:

118 140 

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


122 144 

123Il flag `--teammate-mode` è sperimentale e non compare in `claude --help`.145Il flag `--teammate-mode` è sperimentale e non compare in `claude --help`.

124 146 

125La modalità a riquadri divisi richiede [tmux](https://github.com/tmux/tmux/wiki) oppure iTerm2 con la [CLI `it2`](https://github.com/mkusaka/it2). Per installarli manualmente:

126 

127* **tmux**: installalo tramite il gestore di pacchetti del tuo sistema. Consulta il [wiki di tmux](https://github.com/tmux/tmux/wiki/Installing) per le istruzioni specifiche per piattaforma.

128* **iTerm2**: installa la [CLI `it2`](https://github.com/mkusaka/it2), poi abilita la Python API in **iTerm2 → Settings → General → Magic → Enable Python API**.

129 

130### Specificare compagni di squadra e modelli147### Specificare compagni di squadra e modelli

131 148 

132Claude decide il numero di compagni di squadra da generare in base alla tua attività, oppure puoi specificare esattamente ciò che desideri:149Claude decide il numero di compagni di squadra da generare in base alla tua attività, oppure puoi specificare esattamente ciò che desideri:


497* **Nessun subagent in background da compagni di team in-process**: i subagent di un compagno di team in-process vengono eseguiti in primo piano, perché il lavoro in background di un compagno di team non può sopravvivere al processo del lead. Claude Code restituisce un errore quando un compagno di team genera un subagent la cui definizione imposta `background: true`. Anche una richiesta `run_in_background: true` di un compagno di team fallisce, con un errore o eseguendosi silenziosamente in primo piano. I subagent lanciati dalla conversazione principale seguono il [default in background](https://code.claude.com/docs/it/sub-agents.md#run-subagents-in-foreground-or-background).514* **Nessun subagent in background da compagni di team in-process**: i subagent di un compagno di team in-process vengono eseguiti in primo piano, perché il lavoro in background di un compagno di team non può sopravvivere al processo del lead. Claude Code restituisce un errore quando un compagno di team genera un subagent la cui definizione imposta `background: true`. Anche una richiesta `run_in_background: true` di un compagno di team fallisce, con un errore o eseguendosi silenziosamente in primo piano. I subagent lanciati dalla conversazione principale seguono il [default in background](https://code.claude.com/docs/it/sub-agents.md#run-subagents-in-foreground-or-background).

498* **Il lead è fisso**: la sessione principale è il lead per tutta la sua durata. Non potete promuovere un compagno di team a lead o trasferire la leadership.515* **Il lead è fisso**: la sessione principale è il lead per tutta la sua durata. Non potete promuovere un compagno di team a lead o trasferire la leadership.

499* **Nessuna modalità di permesso per singolo compagno di team al momento della generazione**: i compagni di team iniziano con la modalità di permesso descritta in [Permessi](#permissions).516* **Nessuna modalità di permesso per singolo compagno di team al momento della generazione**: i compagni di team iniziano con la modalità di permesso descritta in [Permessi](#permissions).

500* **Split panes richiedono tmux o iTerm2**: la modalità in-process predefinita funziona in qualsiasi terminale. La modalità split-pane non è supportata nel terminale integrato di VS Code, Windows Terminal o Ghostty.517* **Split panes richiedono tmux o iTerm2**: la modalità in-process predefinita funziona in qualsiasi terminale.

501 518 

502## Prossimi passi519## Prossimi passi

503 520 

agent-view.md +30 −39

Details

144| Forma | Cosa significa |144| Forma | Cosa significa |

145| :- | :- |145| :- | :- |

146| `✻` o `✽` animato | Il processo della sessione è in esecuzione, oppure la sessione ha bisogno del tuo input |146| `✻` o `✽` animato | Il processo della sessione è in esecuzione, oppure la sessione ha bisogno del tuo input |

147| `∙` | Il processo è terminato. Puoi comunque dare un'occhiata alla riga e, quando rispondi o ti colleghi, Claude lo riavvia dalla sua conversazione salvata |147| `∙` | Il processo è terminato. Puoi comunque dare un'occhiata alla riga e, quando rispondi o premi `Enter`, Claude lo riavvia dalla sua conversazione salvata |

148| `✢` | Una sessione [`/loop`](https://code.claude.com/docs/it/scheduled-tasks) in pausa tra un'iterazione e l'altra. La riga mostra il numero di esecuzioni e un conto alla rovescia |148| `✢` | Una sessione [`/loop`](https://code.claude.com/docs/it/scheduled-tasks) in pausa tra un'iterazione e l'altra. La riga mostra il numero di esecuzioni e un conto alla rovescia |

149 149 

150L'etichetta `#N` o `!N` che può apparire sul bordo destro di una riga è un collegamento alla [pull request o merge request](#pull-request-status) della sessione, non fa parte dell'icona di stato.150L'etichetta `#N` o `!N` che può apparire sul bordo destro di una riga è un collegamento alla [pull request o merge request](#pull-request-status) della sessione, non fa parte dell'icona di stato.


316* Premi `Enter` su un'intestazione di gruppo per comprimerla, tranne quando è attivo un [filtro](#filter-sessions), nel qual caso ogni gruppo rimane espanso316* Premi `Enter` su un'intestazione di gruppo per comprimerla, tranne quando è attivo un [filtro](#filter-sessions), nel qual caso ogni gruppo rimane espanso

317* Premi `Ctrl+X` per fermare una sessione e di nuovo `Ctrl+X` entro due secondi per eliminarla dall'elenco, oppure `Esc` per chiudere la conferma senza eliminare. La seconda pressione elimina la sessione anche quando il tentativo di arresto non riesce, ad esempio perché il [servizio in background non risponde](#agent-view-says-the-background-service-did-not-respond). In quel caso la conferma rimane attiva per altri due secondi e l'eliminazione termina direttamente il processo della sessione317* Premi `Ctrl+X` per fermare una sessione e di nuovo `Ctrl+X` entro due secondi per eliminarla dall'elenco, oppure `Esc` per chiudere la conferma senza eliminare. La seconda pressione elimina la sessione anche quando il tentativo di arresto non riesce, ad esempio perché il [servizio in background non risponde](#agent-view-says-the-background-service-did-not-respond). In quel caso la conferma rimane attiva per altri due secondi e l'eliminazione termina direttamente il processo della sessione

318 318 

319Premere `Ctrl+X` su un'intestazione di gruppo elimina, dopo conferma, ogni sessione di quel gruppo. Tranne nei casi di conservazione descritti in [Cosa rimuove l'eliminazione di una sessione](#what-deleting-a-session-removes), l'eliminazione rimuove la sessione dall'elenco. Un worktree che Claude ha creato per essa viene rimosso, conservato o lasciato al suo posto a seconda di come elimini e di cosa contiene il worktree. La trascrizione della conversazione rimane sulla tua macchina locale, disponibile tramite `claude --resume`.319Premi `Ctrl+X` su un'intestazione di gruppo per eliminare, dopo conferma, ogni sessione di quel gruppo, tranne quelle che Claude Code [si rifiuta di eliminare](#delete-a-session-after-claude-code-refuses). Consulta [Cosa rimuove l'eliminazione di una sessione](#what-deleting-a-session-removes) per sapere cosa succede al worktree di ciascuna sessione. La trascrizione della conversazione rimane sulla tua macchina locale, disponibile tramite `claude --resume`.

320 320 

321Le sessioni completate che non entrano nello schermo vengono raggruppate in una riga `… N more`. Il gruppo `Completed` occupa lo spazio verticale rimasto dopo i gruppi attivi. Su un terminale basso, l'intestazione si compatta in una singola riga di riepilogo così che le sessioni in lavorazione o che hanno bisogno di input rimangano visibili.321Le sessioni completate che non entrano nello schermo vengono raggruppate in una riga `… N more`. Il gruppo `Completed` occupa lo spazio verticale rimasto dopo i gruppi attivi. Su un terminale basso, l'intestazione si compatta in una singola riga di riepilogo così che le sessioni in lavorazione o che hanno bisogno di input rimangano visibili.

322 322 


622 622 

623#### Cosa rimuove l'eliminazione di una sessione623#### Cosa rimuove l'eliminazione di una sessione

624 624 

625Elimina una sessione premendo `Ctrl+X` due volte nella [vista agente](#organize-the-list) o con [`claude rm`](#manage-sessions-from-the-shell). Tranne nei casi di mantenimento descritti di seguito, la sessione esce dall'elenco. La sua trascrizione rimane sulla tua macchina tramite `claude --resume`, e la rimozione sopravvive ai riavvii del supervisore.625Elimina una sessione premendo `Ctrl+X` due volte nella [vista agente](#organize-the-list) o con [`claude rm`](#manage-sessions-from-the-shell). La sessione scompare dall'elenco, a meno che Claude Code non [si rifiuti di eliminarla](#delete-a-session-after-claude-code-refuses). La sua trascrizione rimane sulla tua macchina, disponibile tramite `claude --resume`.

626 626 

627Cosa succede a un worktree che Claude ha creato per la sessione:627Cosa succede a un worktree che Claude ha creato per la sessione:

628 628 

629* La vista agente lo rimuove, incluse le modifiche non sottoposte a commit, quindi esegui prima il commit di ciò che vuoi mantenere.629* La vista agente lo rimuove, incluse le modifiche non sottoposte a commit, quindi esegui prima il commit di ciò che vuoi mantenere.

630* `claude rm` lo mantiene, insieme alla riga della sessione, quando ha modifiche non sottoposte a commit.630* `claude rm` lo mantiene, insieme alla riga della sessione, quando ha modifiche non sottoposte a commit.

631* Né la vista agente né `claude rm` rimuovono un worktree che un'altra sessione in esecuzione sta usando o ha bloccato, ed eliminare di nuovo non cambia questo. Claude Code mantiene il worktree e la sessione, e indica la directory mantenuta e il motivo; nella vista agente, la riga della sessione mostra `not removed`. Chiudi l'altra sessione, quindi elimina di nuovo.

632* Quando elimini una sessione il cui worktree ha commit che Claude Code non può confermare siano salvati altrove, Claude Code mantiene il worktree e la sessione, e il messaggio indica il branch del worktree e quanti commit non sono stati sottoposti a push. Il messaggio offre anche i due modi per procedere: fare il push dei commit, o eliminare di nuovo per scartarli.

633 631 

634 I commit su un remote non bloccano l'eliminazione. Nemmeno i commit sulla copia locale del branch predefinito del tuo remote `origin`, purché quel branch sia estratto nel tuo checkout principale, cioè la directory del repository stessa anziché un worktree.632Uno dei motivi per cui Claude Code si rifiuta di eliminare una sessione sono i [commit non sottoposti a push nel suo worktree](https://code.claude.com/docs/it/errors.md#worktree-has-commits-that-are-not-pushed-anywhere). Per mantenere quei commit, fanne il push prima di eliminare la sessione.

635 633 

636 Dopo quel rifiuto, scegli:634Alcuni worktree rimangono su disco, sia che tu usi la vista agente sia `claude rm`:

637 635 

638 * Per mantenere i commit, fanne il push, o eseguine il merge in quel branch predefinito, quindi elimina di nuovo la sessione.636* Se hai creato tu stesso un worktree e hai avviato la sessione al suo interno, il worktree rimane su disco e sta a te mantenerlo o rimuoverlo.

639 * Per scartarli, elimina di nuovo la sessione senza fare il push: premi `Ctrl+X` due volte sulla sua riga nella vista agente, o esegui il comando `claude rm <id> --discard-unpushed` che il rifiuto ha stampato. Questo rimuove la sessione e il worktree insieme al suo branch, scartando i commit non sottoposti a push e le eventuali modifiche non sottoposte a commit.637* Se una directory di worktree che Claude ha creato all'interno del tuo repository non ha più il suo file `.git`, la directory rimane su disco e sta a te rimuoverla. Il branch del worktree rimane nel repository, quindi mantieni i commit su quel branch.

640 638 

641 Quando elimini di nuovo, Claude Code scarta solo ciò che il rifiuto ha mostrato: se nel frattempo il worktree ha ricevuto un nuovo commit, Claude Code lo mantiene di nuovo e mostra lo stato aggiornato.639##### Eliminare una sessione dopo il rifiuto di Claude Code

642 640 

643 Quando anche i record di un'altra sessione terminata nominano il worktree, questo rimane quando elimini di nuovo; fai il push dei commit, quindi elimina di nuovo.641Quando Claude Code si rifiuta di eliminare una sessione a causa del suo worktree, segui il messaggio che mostra. Se il messaggio nomina commit non sottoposti a push, vedi [Worktree has commits that are not pushed anywhere](https://code.claude.com/docs/it/errors.md#worktree-has-commits-that-are-not-pushed-anywhere).

644* Un worktree che git non riconosce più, ad esempio dopo `git worktree prune`, non blocca l'eliminazione. Claude Code elimina la sessione e lascia la directory su disco.

645* Quando git o il tuo [hook `WorktreeRemove`](https://code.claude.com/docs/it/hooks#worktreeremove) non riesce a rimuovere il worktree, Claude Code mantiene il worktree e la sessione, e il messaggio indica la causa. Per un hook, il messaggio dice come è terminato, ad esempio `exited 1`, e cita l'inizio del suo stderr. Il messaggio ti dice anche quale di queste azioni eseguire dopo:

646 642 

647 * Elimina di nuovo la sessione per rimuovere comunque la directory, premendo `Ctrl+X` due volte sulla sua riga nella vista agente o eseguendo il comando `claude rm <id> --force-remove-worktree <worktree-id>` che il rifiuto di `claude rm` ha stampato. Il branch del worktree rimane nel repository.643##### Risolvere un messaggio `Worktree not removed`

648 644 

649 Claude Code offre questa opzione solo quando può confermare tutto quanto segue:645Un messaggio `Worktree not removed` significa che Claude Code o il tuo [hook `WorktreeRemove`](https://code.claude.com/docs/it/hooks#worktreeremove) non ha completato la rimozione del worktree della sessione. Fai il push degli eventuali commit e copia altrove i file che vuoi mantenere, quindi segui il messaggio.

650 646 

651 * La directory è uno dei worktree collegati del repository sotto `.claude/worktrees/`647##### Risolvere un messaggio `files that weren't checked against a repository`

652 * Né il worktree né un submodule estratto hanno modifiche non sottoposte a commit ai file tracciati

653 * Nessun record di un'altra sessione lo nomina

654 648 

655 Quando Claude Code non può verificare lo stato del checkout di un submodule, ad esempio uno sostituito da un repository git separato, non offre nemmeno questa opzione.649Questo messaggio di `claude rm` significa che rimangono dei file in una directory di worktree che non si trova all'interno di alcun repository git o che è gestita da un [hook `WorktreeCreate`](https://code.claude.com/docs/it/hooks#worktreecreate). Copia altrove i file che vuoi mantenere, quindi esegui il passaggio relativo al tuo caso:

656 * Risolvi ciò che ostacola l'operazione, ad esempio eseguendo il commit o lo stash delle modifiche non sottoposte a commit, spostando un repository git separato fuori dal worktree, chiudendo ciò che sta usando la directory, o correggendo l'hook, quindi elimina di nuovo la sessione.

657 * Rimuovi tu stesso la directory, quindi elimina di nuovo la sessione.

658 650 

659Un worktree che hai creato tu stesso e all'interno del quale hai avviato la sessione viene lasciato in posizione in entrambi i casi.651| Il tuo caso | Cosa fare |

660 652| :- | :- |

661Una sessione la cui directory di worktree non appartiene a nessun repository git, perché il repository è stato eliminato o un [hook `WorktreeCreate`](https://code.claude.com/docs/it/hooks#worktreecreate) ha creato la directory altrove, può comunque essere eliminata. Finché nella directory rimangono file:653| Nessun hook `WorktreeCreate` gestisce la directory | Per scartare i file, premi `Ctrl+X` due volte sulla riga della sessione nella vista agente. Oppure rimuovi tu stesso la directory, quindi esegui di nuovo `claude rm <id>` |

662 654| Un hook `WorktreeCreate` gestisce la directory e hai un [hook `WorktreeRemove`](https://code.claude.com/docs/it/hooks#worktreeremove) | Per provare a rimuovere la directory con il tuo hook, premi `Ctrl+X` due volte sulla riga della sessione nella vista agente. Oppure rimuovi tu stesso la directory, quindi esegui di nuovo `claude rm <id>` |

663* La vista agente chiede la stessa doppia pressione di `Ctrl+X` prima di scartarli. Per una directory creata da un hook esegue invece il tuo [hook `WorktreeRemove`](https://code.claude.com/docs/it/hooks#worktreeremove), e senza di esso rifiuta l'eliminazione e mantiene la sessione.655| Un hook `WorktreeCreate` gestisce la directory e non hai alcun hook `WorktreeRemove` | Rimuovi tu stesso la directory, quindi esegui di nuovo `claude rm <id>` |

664* `claude rm` mantiene la sessione e il worktree, e indica il motivo.

665 

666Entrambe le vie mantengono una directory nominata dai record di un'altra sessione terminata.

667 656 

668### Impostare il modello, lo sforzo e la modalità veloce657### Impostare il modello, lo sforzo e la modalità veloce

669 658 


774| [`--add-dir <path>`](https://code.claude.com/docs/it/permissions#additional-directories-grant-file-access-not-configuration) | Concede l'accesso ai file a una directory aggiuntiva |763| [`--add-dir <path>`](https://code.claude.com/docs/it/permissions#additional-directories-grant-file-access-not-configuration) | Concede l'accesso ai file a una directory aggiuntiva |

775| [`--plugin-dir <path>`](https://code.claude.com/docs/it/plugins/create#load-a-directory-or-archive-for-one-session) | Carica un plugin da una directory locale |764| [`--plugin-dir <path>`](https://code.claude.com/docs/it/plugins/create#load-a-directory-or-archive-for-one-session) | Carica un plugin da una directory locale |

776| [`--mcp-config <file-or-json>`](https://code.claude.com/docs/it/mcp) | Carica server MCP da un file di configurazione o da una stringa JSON |765| [`--mcp-config <file-or-json>`](https://code.claude.com/docs/it/mcp) | Carica server MCP da un file di configurazione o da una stringa JSON |

777| `--strict-mcp-config` | Usa solo i server MCP da `--mcp-config`, ignorando le altre configurazioni MCP. Vedi [Controllo esclusivo con managed-mcp.json](https://code.claude.com/docs/it/managed-mcp.md#exclusive-control-with-managed-mcp-json) per sapere cosa fa il flag con un file MCP gestito |766| `--strict-mcp-config` | Salta i server MCP configurati in posizioni come `.mcp.json` e carica quelli che passi con `--mcp-config`. Vedi [Controllo esclusivo con managed-mcp.json](https://code.claude.com/docs/it/managed-mcp.md#exclusive-control-with-managed-mcp-json) per sapere cosa fa il flag con un file MCP gestito |

778 767 

779Ripeti `--add-dir`, `--plugin-dir` o `--mcp-config` una volta per ogni valore. `claude agents` non supporta la forma separata da spazi, come `--add-dir a b c`.768Ripeti `--add-dir`, `--plugin-dir` o `--mcp-config` una volta per ogni valore. `claude agents` non supporta la forma separata da spazi, come `--add-dir a b c`.

780 769 


802| `claude stop <id>` | Ferma una sessione. Accetta anche `claude kill` |791| `claude stop <id>` | Ferma una sessione. Accetta anche `claude kill` |

803| `claude respawn <id>` | Riavvia una sessione, in esecuzione o fermata, ad esempio per utilizzare un binario Claude Code aggiornato. Una sessione che ha una conversazione salvata la riprende |792| `claude respawn <id>` | Riavvia una sessione, in esecuzione o fermata, ad esempio per utilizzare un binario Claude Code aggiornato. Una sessione che ha una conversazione salvata la riprende |

804| `claude respawn --all` | Riavvia ogni sessione in esecuzione, ad esempio per spostare tutte le sessioni su un binario Claude Code aggiornato contemporaneamente |793| `claude respawn --all` | Riavvia ogni sessione in esecuzione, ad esempio per spostare tutte le sessioni su un binario Claude Code aggiornato contemporaneamente |

805| `claude rm <id>` | Rimuovi una sessione dall'elenco, insieme a un worktree creato da Claude per essa quando è sicuro eliminarlo; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). La trascrizione della conversazione rimane sulla tua macchina locale e rimane disponibile tramite `claude --resume` |794| `claude rm <id>` | Rimuovi una sessione dall'elenco, insieme a un worktree creato da Claude per essa quando è sicuro eliminarlo. Se Claude Code si rifiuta di eliminare la sessione a causa del suo worktree, vedi [Eliminare una sessione dopo il rifiuto di Claude Code](#delete-a-session-after-claude-code-refuses). La trascrizione della conversazione rimane sulla tua macchina locale e rimane disponibile tramite `claude --resume` |

806| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Elimina una sessione la cui eliminazione è stata rifiutata a causa di commit non sottoposti a push, scartando il worktree insieme al suo branch e ai commit. Passa il valore esatto che il rifiuto ha stampato; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). Richiede v2.1.260 o successivo |795| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Riprova a eliminare una sessione e a scartare il suo worktree, dopo che Claude Code si è rifiutato a causa di commit non sottoposti a push. Copia il comando dal messaggio di `claude rm` che lo propone; vedi [Worktree has commits that are not pushed anywhere](https://code.claude.com/docs/it/errors.md#worktree-has-commits-that-are-not-pushed-anywhere). Richiede v2.1.260 o successivo |

807| `claude rm <id> --force-remove-worktree <worktree-id>` | Elimina una sessione la cui eliminazione è stata rifiutata perché git o l'hook `WorktreeRemove` non potevano rimuovere il suo worktree, eliminando comunque la directory del worktree e lasciando il suo branch nel repository. Passa il valore esatto che il rifiuto ha stampato; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). Richiede v2.1.268 o successivo |796| `claude rm <id> --force-remove-worktree <worktree-id>` | Riprova a eliminare una sessione e a rimuovere comunque la directory del suo worktree, dopo che Claude Code si è rifiutato perché non è riuscito a rimuovere il worktree. Copia il comando dal messaggio di `claude rm` che lo propone; vedi [Risolvere un messaggio `Worktree not removed`](#resolve-a-worktree-not-removed-message). Richiede v2.1.268 o successivo |

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

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

810| `claude daemon stop --any` | Ferma il processo supervisore e le sessioni in background che ospita. Passa `--keep-workers` per lasciare le sessioni in background in esecuzione in modo che [il supervisore successivo](#the-supervisor-process) si riconnetta ad esse. Il prossimo `claude agents` o `claude --bg` avvia un supervisore nuovo |799| `claude daemon stop --any` | Ferma il processo supervisore e le sessioni in background che ospita. Passa `--keep-workers` per lasciare le sessioni in background in esecuzione in modo che [il supervisore successivo](#the-supervisor-process) si riconnetta ad esse. Il prossimo `claude agents` o `claude --bg` avvia un supervisore nuovo |


939 928 

940 Premi `Enter` sulla riga e il piè di pagina mostra `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to remove it.` Premi di nuovo `Enter` sulla stessa riga per riprendere la conversazione salvata. Una risposta, oppure `claude attach <id>`, la riprende senza quel messaggio nel piè di pagina.929 Premi `Enter` sulla riga e il piè di pagina mostra `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to remove it.` Premi di nuovo `Enter` sulla stessa riga per riprendere la conversazione salvata. Una risposta, oppure `claude attach <id>`, la riprende senza quel messaggio nel piè di pagina.

941 930 

942Quando la [pulizia delle trascrizioni](https://code.claude.com/docs/it/settings-reference.md#cleanupperioddays) ha rimosso la conversazione salvata di una sessione interrotta, Claude Code si rifiuta di aprire la riga: il messaggio indica che non c'è nulla da riprendere. `claude rm <id>` elimina la riga, tranne nei [casi di conservazione](#what-deleting-a-session-removes) descritti sopra, e `claude respawn <id>` esegue di nuovo il suo prompt originale. Consulta [This session's saved conversation is no longer on disk](https://code.claude.com/docs/it/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk).931Quando la [pulizia delle trascrizioni](https://code.claude.com/docs/it/settings-reference.md#cleanupperioddays) ha rimosso la conversazione salvata di una sessione interrotta, Claude Code si rifiuta di aprire la riga: il messaggio indica che non c'è nulla da riprendere. `claude rm <id>` elimina la riga, tranne quando [Claude Code si rifiuta](#what-deleting-a-session-removes), e `claude respawn <id>` esegue di nuovo il suo prompt originale. Consulta [This session's saved conversation is no longer on disk](https://code.claude.com/docs/it/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk).

943 932 

944La sola sospensione della macchina non interrompe le sessioni. Le sessioni vengono mantenute durante la sospensione e il supervisore si ricollega a esse al risveglio.933La sola sospensione della macchina non interrompe le sessioni. Le sessioni vengono mantenute durante la sospensione e il supervisore si ricollega a esse al risveglio.

945 934 


973 962 

974Quando il processo di una sessione in background termina prima di completare l'avvio e l'host ha poca memoria disponibile, lo stato della riga indica la terminazione e aggiunge `possibly low memory — free some up and retry`.963Quando il processo di una sessione in background termina prima di completare l'avvio e l'host ha poca memoria disponibile, lo stato della riga indica la terminazione e aggiunge `possibly low memory — free some up and retry`.

975 964 

976La nota è un'ipotesi, non una causa confermata. Claude Code la aggiunge solo quando il processo è terminato silenziosamente, senza scrivere un errore e senza essere interrotto da un segnale, e l'host segnalava poca memoria in quel momento. Quando il processo ha scritto un errore prima di terminare, la riga mostra invece quell'errore.965> [!NOTE]

966>

967> La nota è un'ipotesi, non una causa confermata. Claude Code la aggiunge solo quando il processo è terminato silenziosamente, senza scrivere un errore e senza essere interrotto da un segnale, e l'host segnalava poca memoria in quel momento. Quando il processo ha scritto un errore prima di terminare, la riga mostra invece quell'errore.

977 968 

978Libera memoria sulla macchina, quindi collegati alla riga o rispondile e il supervisore avvia un nuovo processo per la sessione. Quando la memoria rimane scarsa, il supervisore [interrompe anche le sessioni inattive](#the-supervisor-process) per liberare risorse autonomamente, e interrompe anche le sessioni inattive fissate se interrompere le altre non ha liberato nulla.969Libera memoria sull'host, quindi premi `Enter` sulla riga e premilo di nuovo se [il piè di pagina lo chiede](#opening-a-session-says-it-has-no-saved-transcript). Il [supervisore](#the-supervisor-process) avvia un nuovo processo per la sessione. Quando la memoria rimane scarsa, il supervisore [interrompe anche le sessioni inattive](#the-supervisor-process) per liberare risorse autonomamente, e interrompe anche le sessioni inattive fissate se interrompere le altre non ha liberato nulla.

979 970 

980### La vista agenti indica che il servizio in background non ha risposto971### La vista agenti indica che il servizio in background non ha risposto

981 972 


1036 1027 

1037### `.claude/worktrees/` si sta riempiendo1028### `.claude/worktrees/` si sta riempiendo

1038 1029 

1039L'eliminazione di una sessione nella vista agenti rimuove il worktree che Claude ha creato per essa, ma [alcune eliminazioni mantengono il worktree o lasciano la sua directory sul disco](#what-deleting-a-session-removes), quindi le directory residue possono accumularsi. Le directory che Git non riconosce più non compaiono in `git worktree list`, quindi rimuovile a mano.1030L'eliminazione di una sessione nella vista agenti rimuove il worktree che Claude ha creato per essa, ma [alcune directory dei worktree rimangono sul disco](#what-deleting-a-session-removes). Le directory che Git non riconosce più non compaiono in `git worktree list`, quindi rimuovile a mano.

1040 1031 

1041Elenca le voci residue con `git worktree list` nella directory del progetto e rimuovi ciascuna con `git worktree remove <path>`. Consulta [Pulire i worktree](https://code.claude.com/docs/it/worktrees.md#clean-up-worktrees).1032Elenca le voci residue con `git worktree list` nella directory del progetto e rimuovi ciascuna con `git worktree remove <path>`. Se Git si rifiuta, consulta [Pulire i worktree dei subagent e delle sessioni in background](https://code.claude.com/docs/it/worktrees.md#clean-up-subagent-and-background-session-worktrees).

1042 1033 

1043## Limitazioni1034## Limitazioni

1044 1035 


1046 1037 

1047* **I limiti di velocità si applicano**: le sessioni in background consumano l'utilizzo dell'abbonamento allo stesso modo delle sessioni interattive, quindi eseguire dieci agenti in parallelo utilizza la quota approssimativamente dieci volte più velocemente rispetto all'esecuzione di uno.1038* **I limiti di velocità si applicano**: le sessioni in background consumano l'utilizzo dell'abbonamento allo stesso modo delle sessioni interattive, quindi eseguire dieci agenti in parallelo utilizza la quota approssimativamente dieci volte più velocemente rispetto all'esecuzione di uno.

1048* **Le sessioni sono locali**: le sessioni in background vengono eseguite sulla vostra macchina. Vengono preservate durante la sospensione ma si fermano se la macchina si spegne.1039* **Le sessioni sono locali**: le sessioni in background vengono eseguite sulla vostra macchina. Vengono preservate durante la sospensione ma si fermano se la macchina si spegne.

1049* **I worktrees creati da Claude vengono eliminati con la sessione in agent view**: unite i cambiamenti prima di eliminare una sessione che ha modificato file nel suo proprio worktree. [Alcuni eliminazioni mantengono il worktree](#what-deleting-a-session-removes).1040* **I worktree creati da Claude vengono eliminati con la sessione in agent view**: esegui il commit delle modifiche prima di eliminare una sessione che ha modificato file nel proprio worktree. [Alcuni worktree rimangono sul disco](#what-deleting-a-session-removes).

1050 1041 

1051## Risorse correlate1042## Risorse correlate

1052 1043 

artifacts.md +2 −2

Details

432 432 

433Per impostare quanto tempo gli artifact vengono conservati prima dell'eliminazione automatica, vai a [**Organization settings > Data and privacy**](https://claude.ai/admin-settings/data-privacy-controls). Puoi impostare periodi di conservazione separati per gli artifact che sono ancora privati al loro autore e gli artifact che sono stati condivisi.433Per impostare quanto tempo gli artifact vengono conservati prima dell'eliminazione automatica, vai a [**Organization settings > Data and privacy**](https://claude.ai/admin-settings/data-privacy-controls). Puoi impostare periodi di conservazione separati per gli artifact che sono ancora privati al loro autore e gli artifact che sono stati condivisi.

434 434 

435### Review the audit log435### Verificare l'attività degli artefatti con la Compliance API

436 436 

437La pubblicazione, la condivisione e l'eliminazione di un artifact appaiono ciascuna nel registro di audit della tua organizzazione sotto i tipi di evento `claude_artifact_*`, la stessa famiglia utilizzata per gli artifact creati nelle conversazioni di claude.ai.437Sui piani Enterprise, interroga l'[Activity Feed](https://platform.claude.com/docs/en/manage-claude/compliance-activity-feed) della Compliance API per vedere chi ha pubblicato, condiviso o eliminato un artefatto. Per trovare i tipi di attività in base ai quali filtrare, espandi `activity_types` nel [riferimento dell'Activity Feed](https://platform.claude.com/docs/en/api/compliance/activities/list) e cerca i nomi che contengono `artifact`.

438 438 

439### Allowlist the viewer domain439### Allowlist the viewer domain

440 440 

Details

163Claude decide dove va ogni messaggio che invii nella conversazione:163Claude decide dove va ogni messaggio che invii nella conversazione:

164 164 

165* Una domanda veloce di solito riceve una risposta nella conversazione.165* Una domanda veloce di solito riceve una risposta nella conversazione.

166* Il nuovo lavoro va a un nuovo thread o a un thread già al lavoro in quell'area, e Claude ti dice quale. Ogni nuovo thread appare sotto il tuo messaggio come una card: una casella con il titolo e lo stato del thread, che fai clic per aprire il thread.166* Il nuovo lavoro va a un nuovo thread o a un thread già al lavoro in quell'area, e Claude ti dice quale. Ogni nuovo thread appare nella conversazione e fai clic su di esso per aprire il thread.

167* Diversi compiti non correlati in un messaggio diventano thread separati.167* Diversi compiti non correlati in un messaggio diventano thread separati.

168 168 

169Se Claude instrada qualcosa diversamente da come volevi, dillo. [Sintonizza come Claude esegue un progetto](#tune-how-claude-runs-a-project) elenca le cose che puoi dirgli, ad esempio riutilizzare un thread esistente per i follow-up o rispondere al posto di avviare un thread.169Se Claude instrada qualcosa diversamente da come volevi, dillo. [Sintonizza come Claude esegue un progetto](#tune-how-claude-runs-a-project) elenca le cose che puoi dirgli, ad esempio riutilizzare un thread esistente per i follow-up o rispondere al posto di avviare un thread.

170 170 

171I risultati completi di un thread rimangono nel thread e apri la sua card nella conversazione per leggerli. I file che un thread ha prodotto si trovano anche nella [**Library**](#see-what-needs-you-in-overview) del progetto.171I risultati completi di un thread rimangono nel thread, quindi apri il thread per leggerli. I file che un thread ha prodotto si trovano anche nella [**Library**](#see-what-needs-you-in-overview) del progetto.

172 172 

173A volte Claude propone thread invece di avviarli, in un elenco **Suggested threads**. Fai clic sulla freccia su un suggerimento per avviare quel thread. Quando diversi sono elencati, un pulsante sotto l'elenco avvia tutti loro.173A volte Claude propone thread invece di avviarli, in un elenco **Suggested threads**. Fai clic sulla freccia su un suggerimento per avviare quel thread. Quando diversi sono elencati, un pulsante sotto l'elenco avvia tutti loro.

174 174 


180* **Pull request**: apre una quando chiedi, e può aprirne una da sola per una correzione di bug o un altro cambiamento concreto.180* **Pull request**: apre una quando chiedi, e può aprirne una da sola per una correzione di bug o un altro cambiamento concreto.

181* **Dopo che l'apre**: osserva la pull request con [auto-fix](https://code.claude.com/docs/it/claude-code-on-the-web.md#auto-fix-pull-requests) attivato, indipendentemente dal fatto che auto-fix sia attivo per le tue altre sessioni cloud. Spinge correzioni quando CI fallisce, affronta i commenti di revisione e risponde nel thread quando i controlli passano e la pull request è pronta per te.181* **Dopo che l'apre**: osserva la pull request con [auto-fix](https://code.claude.com/docs/it/claude-code-on-the-web.md#auto-fix-pull-requests) attivato, indipendentemente dal fatto che auto-fix sia attivo per le tue altre sessioni cloud. Spinge correzioni quando CI fallisce, affronta i commenti di revisione e risponde nel thread quando i controlli passano e la pull request è pronta per te.

182 182 

183Quando un thread ha spinto un branch o aperto una pull request, la sua card nella conversazione può mostrare un pulsante per il passo successivo:

184 

185* **Resolve conflicts**, **Fix CI**, **Address comments** e **Merge it** inviano quell'istruzione al thread come messaggio da te, così puoi richiedere il thread stesso invece di aspettare che reagisca alla pull request.

186* **Review PR** apre la pull request su GitHub.

187* **Create PR** appare quando un thread inattivo ha spinto un branch ma non ha aperto una pull request. Facendo clic su di esso crea la pull request da quel branch direttamente piuttosto che inviare al thread un'istruzione per aprirne una.

188 

189Per cambiare quando i thread aprono le pull request, ad esempio solo quando chiedi, o da quale branch iniziano, dillo nell'attività o nelle [istruzioni del progetto](#write-project-instructions).183Per cambiare quando i thread aprono le pull request, ad esempio solo quando chiedi, o da quale branch iniziano, dillo nell'attività o nelle [istruzioni del progetto](#write-project-instructions).

190 184 

191### Vedi cosa ha bisogno di te in Overview185### Vedi cosa ha bisogno di te in Overview


212 206 

213### Apri un thread quando hai bisogno di controllo207### Apri un thread quando hai bisogno di controllo

214 208 

215Fai clic sulla card di un thread nella conversazione o sulla sua riga in Overview per aprire la sua trascrizione nel riquadro Overview. Da lì puoi:209Fai clic su un thread nella conversazione o sulla sua riga in Overview per aprire il thread nel riquadro Overview. Da lì puoi:

216 210 

217* Leggere cosa ha fatto Claude, passo dopo passo.211* Leggere cosa ha fatto Claude, passo dopo passo.

218* Guidare l'attività scrivendo nella casella di messaggio del thread. Un messaggio lì va direttamente a quel thread, mentre un follow-up nella conversazione del progetto lo raggiunge solo quando Claude abbina il follow-up a quel thread.212* Guidare l'attività scrivendo nella casella di messaggio del thread. Un messaggio lì va direttamente a quel thread, mentre un follow-up nella conversazione del progetto lo raggiunge solo quando Claude abbina il follow-up a quel thread.

Details

128| `--session-id` | Usa un ID di sessione specifico per la conversazione (deve essere un UUID valido) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |128| `--session-id` | Usa un ID di sessione specifico per la conversazione (deve essere un UUID valido) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

129| `--setting-sources` | Elenco separato da virgole delle fonti di impostazione da caricare (`user`, `project`, `local`). Vedi [agent view](https://code.claude.com/docs/it/agent-view.md#what-carries-over-when-you-background) e [team di agenti](https://code.claude.com/docs/it/agent-teams.md#context-and-communication) per le sessioni che avvii da questa che ereditano l'elenco | `claude --setting-sources user,project` |129| `--setting-sources` | Elenco separato da virgole delle fonti di impostazione da caricare (`user`, `project`, `local`). Vedi [agent view](https://code.claude.com/docs/it/agent-view.md#what-carries-over-when-you-background) e [team di agenti](https://code.claude.com/docs/it/agent-teams.md#context-and-communication) per le sessioni che avvii da questa che ereditano l'elenco | `claude --setting-sources user,project` |

130| `--settings` | Percorso a un file JSON di impostazioni o una stringa JSON inline. I valori che imposti qui sostituiscono le stesse chiavi nei tuoi file `settings.json` per questa sessione. Le chiavi che ometti mantengono i loro valori basati su file. Il file deve essere un file regolare non più grande di 2 MiB. Vedi [precedenza delle impostazioni](https://code.claude.com/docs/it/settings.md#settings-precedence) | `claude --settings ./settings.json` |130| `--settings` | Percorso a un file JSON di impostazioni o una stringa JSON inline. I valori che imposti qui sostituiscono le stesse chiavi nei tuoi file `settings.json` per questa sessione. Le chiavi che ometti mantengono i loro valori basati su file. Il file deve essere un file regolare non più grande di 2 MiB. Vedi [precedenza delle impostazioni](https://code.claude.com/docs/it/settings.md#settings-precedence) | `claude --settings ./settings.json` |

131| `--strict-mcp-config` | Usa solo i server MCP da `--mcp-config`, ignorando tutte le altre configurazioni MCP. Vedi [Controllo esclusivo con managed-mcp.json](https://code.claude.com/docs/it/managed-mcp.md#exclusive-control-with-managed-mcp-json) per quello che il flag fa sotto un file MCP gestito | `claude --strict-mcp-config --mcp-config ./mcp.json` |131| `--strict-mcp-config` | Salta i server MCP configurati in posizioni come `.mcp.json`, `~/.claude.json` o un plugin, e carica quelli che passi con `--mcp-config`. Vedi [Controllo esclusivo con managed-mcp.json](https://code.claude.com/docs/it/managed-mcp.md#exclusive-control-with-managed-mcp-json) per quello che il flag fa sotto un file MCP gestito | `claude --strict-mcp-config --mcp-config ./mcp.json` |

132| `--system-prompt` | Sostituisci l'intero prompt di sistema con testo personalizzato | `claude --system-prompt "You are a Python expert"` |132| `--system-prompt` | Sostituisci l'intero prompt di sistema con testo personalizzato | `claude --system-prompt "You are a Python expert"` |

133| `--system-prompt-file` | Carica il prompt di sistema da un file, sostituendo il prompt predefinito | `claude --system-prompt-file ./custom-prompt.txt` |133| `--system-prompt-file` | Carica il prompt di sistema da un file, sostituendo il prompt predefinito | `claude --system-prompt-file ./custom-prompt.txt` |

134| `--system-prompt-snapshot` | Passa `off` per ricostruire il prompt di sistema su ogni richiesta invece di riutilizzare il prompt [registrato sulla prima richiesta della conversazione](#system-prompt-flags-in-resumed-conversations), ad esempio mentre iteri sul testo `--append-system-prompt` tra le esecuzioni `--continue`. Richiede Claude Code v2.1.257 o successivo | `claude --system-prompt-snapshot off` |134| `--system-prompt-snapshot` | Passa `off` per ricostruire il prompt di sistema su ogni richiesta invece di riutilizzare il prompt [registrato sulla prima richiesta della conversazione](#system-prompt-flags-in-resumed-conversations), ad esempio mentre iteri sul testo `--append-system-prompt` tra le esecuzioni `--continue`. Richiede Claude Code v2.1.257 o successivo | `claude --system-prompt-snapshot off` |

desktop.md +2 −1

Details

2127 2127 

2128Per impedirlo, distribuisci anche `forceLoginOrgUUID` nel criterio di Claude Desktop (in `HKLM` su Windows), con l'ID della tua organizzazione claude.ai. A meno che il criterio stesso non [selezioni la Claude API](https://claude.com/docs/third-party/claude-desktop/claude-api#choose-an-authentication-approach), Claude Desktop smette di usare la chiave API o l'account Console di una persona al successivo avvio dell'app.2128Per impedirlo, distribuisci anche `forceLoginOrgUUID` nel criterio di Claude Desktop (in `HKLM` su Windows), con l'ID della tua organizzazione claude.ai. A meno che il criterio stesso non [selezioni la Claude API](https://claude.com/docs/third-party/claude-desktop/claude-api#choose-an-authentication-approach), Claude Desktop smette di usare la chiave API o l'account Console di una persona al successivo avvio dell'app.

2129 2129 

2130Controlla due casi prima di distribuirlo:2130Controlla tre casi prima di distribuirlo:

2131 2131 

2132* **Organizzazioni Claude Console**: non distribuire `forceLoginOrgUUID` da solo con l'ID di un'organizzazione Claude Console, altrimenti impediresti alle tue persone di accedere a Claude Desktop. Vedi invece [Quali dispositivi offrono l'accesso con account Claude API](https://claude.com/docs/third-party/claude-desktop/claude-api#which-devices-offer-the-claude-api-account-sign-in).2132* **Organizzazioni Claude Console**: non distribuire `forceLoginOrgUUID` da solo con l'ID di un'organizzazione Claude Console, altrimenti impediresti alle tue persone di accedere a Claude Desktop. Vedi invece [Quali dispositivi offrono l'accesso con account Claude API](https://claude.com/docs/third-party/claude-desktop/claude-api#which-devices-offer-the-claude-api-account-sign-in).

2133* **Enterprise Admin Console**: se fornisce la configurazione di Claude Desktop dei tuoi computer, aggiornali prima a Claude Desktop v2.37337.0 o successivo, perché le versioni precedenti la ignorano una volta impostata questa chiave. Vedi [Mantenere un dispositivo sul suo profilo gestito](https://claude.com/docs/third-party/claude-desktop/admin-console#keep-a-device-on-its-managed-profile).2133* **Enterprise Admin Console**: se fornisce la configurazione di Claude Desktop dei tuoi computer, aggiornali prima a Claude Desktop v2.37337.0 o successivo, perché le versioni precedenti la ignorano una volta impostata questa chiave. Vedi [Mantenere un dispositivo sul suo profilo gestito](https://claude.com/docs/third-party/claude-desktop/admin-console#keep-a-device-on-its-managed-profile).

2134* **Provider di terze parti**: se le persone configurano nell'app la propria [configurazione di inferenza di terze parti](https://claude.com/docs/third-party/claude-desktop/in-app-configuration), Claude Desktop ignora quella configurazione a partire dal successivo avvio dopo che hai distribuito questa chiave. Per mantenere le persone su Amazon Bedrock, Agent Platform di Google Cloud, Microsoft Foundry o un gateway LLM, [distribuisci una configurazione](https://claude.com/docs/third-party/claude-desktop/configuration) sui loro computer nello stesso criterio di Claude Desktop.

2134 2135 

2135### Requisiti di accesso alla rete2136### Requisiti di accesso alla rete

2136 2137 

Details

182* **Review allowed permissions**: vedi e revoca le approvazioni degli strumenti salvate per questa attività dal pannello **Always allowed**182* **Review allowed permissions**: vedi e revoca le approvazioni degli strumenti salvate per questa attività dal pannello **Always allowed**

183* **Delete**: rimuovi l'attività. Le sessioni create dall'attività vengono [archiviate](https://code.claude.com/docs/it/desktop.md#organize-and-find-sessions), non eliminate. La cartella che contiene il file `SKILL.md` dell'attività rimane su disco in `~/.claude/scheduled-tasks/<task-name>/`, oppure in `scheduled-tasks/<task-name>/` sotto [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars) se hai impostato quella variabile. Per rimuovere quella cartella, eliminala manualmente.183* **Delete**: rimuovi l'attività. Le sessioni create dall'attività vengono [archiviate](https://code.claude.com/docs/it/desktop.md#organize-and-find-sessions), non eliminate. La cartella che contiene il file `SKILL.md` dell'attività rimane su disco in `~/.claude/scheduled-tasks/<task-name>/`, oppure in `scheduled-tasks/<task-name>/` sotto [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars) se hai impostato quella variabile. Per rimuovere quella cartella, eliminala manualmente.

184 184 

185Puoi anche elencare, creare, modificare e mettere in pausa le attività chiedendo a Claude in qualsiasi sessione Desktop. Ad esempio, "pausa la mia attività dependency-audit" o "mostrami le mie attività pianificate." Per eliminare un'attività, usa il pulsante **Delete** sulla sua pagina di dettaglio.185Puoi anche gestire le attività chiedendo a Claude, lasciando che un'attività si aggiorni da sola o modificando il prompt di un'attività su disco:

186 186 

187Per consentire a un'attività di modificare la propria pianificazione o il proprio prompt con lo strumento MCP `update_scheduled_task`, fai clic su **Run now** e approva la chiamata ogni volta.187* **Chiedi a Claude**: elenca, crea, modifica e metti in pausa le attività chiedendo a Claude in qualsiasi sessione Desktop. Ad esempio, "pausa la mia attività dependency-audit" o "mostrami le mie attività pianificate." Per eliminare un'attività, usa il pulsante **Delete** sulla sua pagina di dettaglio.

188 188* **Lascia che un'attività si aggiorni da sola**: per consentire a un'attività di modificare la propria pianificazione o il proprio prompt con lo strumento MCP `update_scheduled_task`, fai clic su **Run now** e approva la chiamata ogni volta

189Per modificare il prompt di un'attività su disco, apri `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (o sotto [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars) se impostato). Il file utilizza frontmatter YAML per `name` e `description`, con il prompt come corpo. Le modifiche hanno effetto alla prossima esecuzione. La pianificazione, la cartella e lo stato abilitato non sono in questo file: modificali tramite il modulo Edit o chiedi a Claude.189* **Modifica il prompt su disco**: apri `~/.claude/scheduled-tasks/<task-name>/SKILL.md`, oppure `scheduled-tasks/<task-name>/SKILL.md` sotto [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars) se hai impostato quella variabile. Il file utilizza frontmatter YAML per `name` e `description`, con il prompt come corpo. Le modifiche hanno effetto alla prossima esecuzione. La pianificazione, la cartella e lo stato abilitato non sono in questo file: modificali tramite il modulo Edit o chiedi a Claude.

190 190 

191## Risorse correlate191## Risorse correlate

192 192 

env-vars.md +1 −1

Details

356| `CLAUDE_CODE_PERFORCE_MODE` | Imposta su `1` per abilitare la protezione da scrittura compatibile con Perforce. Quando è impostata, Edit, Write e NotebookEdit non riescono e mostrano un suggerimento `p4 edit <file>` se il file di destinazione non ha il bit di scrittura del proprietario, che Perforce rimuove dai file sincronizzati finché `p4 edit` non li apre. Questo impedisce a Claude Code di aggirare il tracciamento delle modifiche di Perforce |356| `CLAUDE_CODE_PERFORCE_MODE` | Imposta su `1` per abilitare la protezione da scrittura compatibile con Perforce. Quando è impostata, Edit, Write e NotebookEdit non riescono e mostrano un suggerimento `p4 edit <file>` se il file di destinazione non ha il bit di scrittura del proprietario, che Perforce rimuove dai file sincronizzati finché `p4 edit` non li apre. Questo impedisce a Claude Code di aggirare il tracciamento delle modifiche di Perforce |

357| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sovrascrive la directory radice dei plugin. Nonostante il nome, imposta la directory padre, non la cache stessa: i marketplace e la cache dei plugin si trovano in sottodirectory di questo percorso. Il valore predefinito è `~/.claude/plugins` |357| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sovrascrive la directory radice dei plugin. Nonostante il nome, imposta la directory padre, non la cache stessa: i marketplace e la cache dei plugin si trovano in sottodirectory di questo percorso. Il valore predefinito è `~/.claude/plugins` |

358| `CLAUDE_CODE_PLUGIN_DIRS` | Directory dei plugin da caricare per la sessione, ciascuna caricata come la caricherebbe un flag [`--plugin-dir`](https://code.claude.com/docs/it/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Separa più percorsi con `:` su Unix o `;` su Windows. Indica ciascun percorso come percorso assoluto o inizialo con `~`, perché Claude Code salta i percorsi relativi. Richiede Claude Code v2.1.280 o successiva. Consulta [Caricare un plugin per una sola sessione](https://code.claude.com/docs/it/plugins/create.md#load-a-directory-or-archive-for-one-session) |358| `CLAUDE_CODE_PLUGIN_DIRS` | Directory dei plugin da caricare per la sessione, ciascuna caricata come la caricherebbe un flag [`--plugin-dir`](https://code.claude.com/docs/it/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Separa più percorsi con `:` su Unix o `;` su Windows. Indica ciascun percorso come percorso assoluto o inizialo con `~`, perché Claude Code salta i percorsi relativi. Richiede Claude Code v2.1.280 o successiva. Consulta [Caricare un plugin per una sola sessione](https://code.claude.com/docs/it/plugins/create.md#load-a-directory-or-archive-for-one-session) |

359| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Controlla se Claude Code ricarica un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) quando i file del mod cambiano. Il ricaricamento si applica a un mod caricato da una directory con `--plugin-dir` ed è attivo per impostazione predefinita nelle sessioni interattive. Imposta su `1` per attivarlo anche nelle sessioni non interattive, oppure su `0` per disattivarlo in ogni sessione. Richiede Claude Code v2.1.287 o successiva. Consulta [impostazioni e variabili d'ambiente dei mod](https://code.claude.com/docs/it/plugins/mods/reference.md#settings-and-environment-variables) |359| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Controlla se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) si ricarica quando i suoi file cambiano. Per impostazione predefinita, i mod nelle [directory delle skill](https://code.claude.com/docs/it/plugins/org.md#keep-skills-directory-plugins-loading) si ricaricano in qualsiasi sessione che richiede più di un prompt, incluse quelle [non interattive](https://code.claude.com/docs/it/headless.md). I mod nelle directory `--plugin-dir` si ricaricano solo nelle sessioni interattive del terminale. Imposta a `1` per ricaricarli come i mod delle directory delle skill, oppure a `0` per disattivare il ricaricamento ovunque. Richiede Claude Code v2.1.287 o successiva |

360| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in millisecondi per la clonazione o l'aggiornamento di un marketplace di plugin (predefinito: 120000). Aumenta questo valore per repository di grandi dimensioni o connessioni di rete lente. Consulta [Git clone timed out](https://code.claude.com/docs/it/plugins/troubleshooting.md#git-clone-timed-out-after-120s) |360| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in millisecondi per la clonazione o l'aggiornamento di un marketplace di plugin (predefinito: 120000). Aumenta questo valore per repository di grandi dimensioni o connessioni di rete lente. Consulta [Git clone timed out](https://code.claude.com/docs/it/plugins/troubleshooting.md#git-clone-timed-out-after-120s) |

361| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Imposta su `1` per saltare il tentativo di nuova clonazione e continuare a usare il checkout esistente del marketplace quando un aggiornamento del marketplace non riesce a raggiungere il remoto o ad autenticarsi. Utile in ambienti offline o air-gapped in cui una nuova clonazione fallirebbe allo stesso modo. Consulta [Gli aggiornamenti del marketplace non riescono negli ambienti offline](https://code.claude.com/docs/it/plugins/troubleshooting.md#marketplace-updates-keep-failing-offline) |361| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Imposta su `1` per saltare il tentativo di nuova clonazione e continuare a usare il checkout esistente del marketplace quando un aggiornamento del marketplace non riesce a raggiungere il remoto o ad autenticarsi. Utile in ambienti offline o air-gapped in cui una nuova clonazione fallirebbe allo stesso modo. Consulta [Gli aggiornamenti del marketplace non riescono negli ambienti offline](https://code.claude.com/docs/it/plugins/troubleshooting.md#marketplace-updates-keep-failing-offline) |

362| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Imposta su `1` per clonare le sorgenti GitHub in forma abbreviata `owner/repo` tramite HTTPS anziché SSH. Si applica all'installazione e all'aggiornamento dei plugin, e a `/plugin marketplace add` e `update`. Utile nei runner CI, nei container o in qualsiasi ambiente senza una chiave SSH configurata per `github.com` |362| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Imposta su `1` per clonare le sorgenti GitHub in forma abbreviata `owner/repo` tramite HTTPS anziché SSH. Si applica all'installazione e all'aggiornamento dei plugin, e a `/plugin marketplace add` e `update`. Utile nei runner CI, nei container o in qualsiasi ambiente senza una chiave SSH configurata per `github.com` |

errors.md +4 −8

Details

5556 5556 

5557### Worktree has commits that are not pushed anywhere5557### Worktree has commits that are not pushed anywhere

5558 5558 

5559Hai provato a eliminare una [sessione in background](https://code.claude.com/docs/it/agent-view.md#what-deleting-a-session-removes) il cui worktree contiene commit che Claude Code non può confermare siano salvati altrove. Claude Code mantiene il worktree e la riga della sessione piuttosto che distruggere i commit senza che tu li veda. `claude rm` nomina il branch e i commit non inviati con push, e dice come procedere:5559Hai provato a eliminare una [sessione in background](https://code.claude.com/docs/it/agent-view.md#what-deleting-a-session-removes) il cui worktree contiene commit che Claude Code non può confermare siano salvati altrove. `claude rm` dice come procedere:

5560 5560 

5561```text theme={null}5561```text theme={null}

5562kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”5562kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”


5566 5566 

5567Quando Claude Code non può riassumere i commit, la riga di dettaglio riporta invece `The worktree has unpushed commits`. Nella [vista agente](https://code.claude.com/docs/it/agent-view.md), la riga della sessione mostra `not removed` con lo stesso motivo.5567Quando Claude Code non può riassumere i commit, la riga di dettaglio riporta invece `The worktree has unpushed commits`. Nella [vista agente](https://code.claude.com/docs/it/agent-view.md), la riga della sessione mostra `not removed` con lo stesso motivo.

5568 5568 

5569I commit su un remote non bloccano l'eliminazione. Nemmeno i commit sulla copia locale del branch predefinito del tuo remote `origin`, purché quel branch sia estratto nel tuo checkout principale, la directory del repository stesso piuttosto che un worktree.

5570 

5571**Cosa fare:**5569**Cosa fare:**

5572 5570 

5573* 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 sessione5571* Per mantenere i commit, esegui il push. Una volta che il push li ha portati su un branch di tracciamento remoto, come `origin/claude/fix-login`, prova di nuovo a eliminare la sessione.

5574* 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.5572* Se il messaggio offre di scartare i commit, assicurati prima di non aver bisogno del worktree, dei commit o di eventuali modifiche non sottoposte a commit. Quindi esegui il passaggio indicato dal messaggio: premi `Ctrl+X` due volte sulla riga della sessione nella vista agente, oppure esegui il comando `claude rm <id> --discard-unpushed <commit>@<worktree-id>` stampato da `claude rm`. Se Claude Code rifiuta di nuovo, segui il nuovo messaggio.

5575* 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 sessione5573* 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 prova di nuovo a eliminare la sessione

5576 5574 

5577Prima 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.5575Prima 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.

5578 5576 

5579Prima 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.5577Prima 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.

5580 5578 

5581Prima 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.

5582 

5583### Terminal host process died5579### Terminal host process died

5584 5580 

5585Il terminale di ogni [sessione in background](https://code.claude.com/docs/it/agent-view.md) viene eseguito in un processo host sotto il servizio in background, e quel processo è morto mentre il servizio manteneva ancora la sua connessione, quindi la sessione non poteva essere raggiunta.5581Il terminale di ogni [sessione in background](https://code.claude.com/docs/it/agent-view.md) viene eseguito in un processo host sotto il servizio in background, e quel processo è morto mentre il servizio manteneva ancora la sua connessione, quindi la sessione non poteva essere raggiunta.

Details

35Queste hanno differenze specifiche del provider:35Queste hanno differenze specifiche del provider:

36 36 

37* **Server MCP**: i [connettori da claude.ai](https://code.claude.com/docs/it/mcp.md#use-mcp-servers-from-claude-ai) si caricano solo quando il tuo abbonamento claude.ai è il metodo di autenticazione attivo. La [ricerca degli strumenti](https://code.claude.com/docs/it/mcp.md#configure-tool-search) non è supportata sulle [distribuzioni Microsoft Foundry ospitate su Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options). Su Google Cloud's Agent Platform, la ricerca degli strumenti non è supportata su modelli precedenti a Claude Opus 4.5, Claude Sonnet 4.5 e Claude Haiku 4.537* **Server MCP**: i [connettori da claude.ai](https://code.claude.com/docs/it/mcp.md#use-mcp-servers-from-claude-ai) si caricano solo quando il tuo abbonamento claude.ai è il metodo di autenticazione attivo. La [ricerca degli strumenti](https://code.claude.com/docs/it/mcp.md#configure-tool-search) non è supportata sulle [distribuzioni Microsoft Foundry ospitate su Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options). Su Google Cloud's Agent Platform, la ricerca degli strumenti non è supportata su modelli precedenti a Claude Opus 4.5, Claude Sonnet 4.5 e Claude Haiku 4.5

38* **Subagent**: quando la conversazione principale esegue Fable, il [subagent Explore integrato](https://code.claude.com/docs/it/sub-agents.md#built-in-subagents) viene eseguito su Opus con un abbonamento Claude, un account Console Anthropic o un [gateway LLM](https://code.claude.com/docs/it/llm-gateway) raggiunto tramite `ANTHROPIC_BASE_URL`. Sugli altri provider, incluso Claude Platform on AWS, viene eseguito su Fable38* **Subagent**: quando la conversazione principale esegue Fable, il [subagent Explore](https://code.claude.com/docs/it/sub-agents.md#built-in-subagents) integrato viene eseguito su Opus con un abbonamento Claude, un account Anthropic Console o un [LLM gateway](https://code.claude.com/docs/it/llm-gateway) raggiunto tramite `ANTHROPIC_BASE_URL`. Su altri provider, incluso Claude Platform on AWS, viene eseguito su Fable

39* **[Commands](https://code.claude.com/docs/it/commands.md#all-commands)**:39* **[Commands](https://code.claude.com/docs/it/commands.md#all-commands)**:

40 * `/design-sync` e `/import` con la sua forma di subcommand `claude import` non sono disponibili su Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e Claude Platform on AWS, e tramite un [gateway di app Claude](https://code.claude.com/docs/it/claude-apps-gateway#availability-and-limitations)40 * `/design-sync` e `/import` con la sua forma di subcommand `claude import` non sono disponibili su Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e Claude Platform on AWS, e tramite un [gateway di app Claude](https://code.claude.com/docs/it/claude-apps-gateway#availability-and-limitations)

41 * `/voice` richiede un account claude.ai41 * `/voice` richiede un account claude.ai

Details

188>188>

189> **Mettete i guardrail negli hooks.** Un'istruzione come "non modificare mai `.env`" in CLAUDE.md o una skill è una richiesta, non una garanzia. Un hook `PreToolUse` che blocca la modifica è un'applicazione. Se una regola deve valere ogni volta, fatene un hook piuttosto che un'istruzione di prompt.189> **Mettete i guardrail negli hooks.** Un'istruzione come "non modificare mai `.env`" in CLAUDE.md o una skill è una richiesta, non una garanzia. Un hook `PreToolUse` che blocca la modifica è un'applicazione. Se una regola deve valere ogni volta, fatene un hook piuttosto che un'istruzione di prompt.

190>190>

191> **L'output dell'hook entra nel contesto.** Un hook `PostToolUse` che esegue il vostro linter alimenta i risultati come testo che Claude legge; una skill `/fix-lint` dice a Claude come risolverli.191> **Abbina un hook a una skill.** Usa un hook `PostToolUse` per eseguire il tuo linter e [inviare gli errori a Claude](https://code.claude.com/docs/it/hooks.md#exit-code-2-behavior-per-event). Per dare a Claude le tue regole per correggere gli errori, scrivi una skill come `/fix-lint`.

192 192 

193### Comprendete come le funzionalità si stratificano193### Comprendete come le funzionalità si stratificano

194 194 

glossary.md +1 −1

Details

283 283 

284### Sandboxing284### Sandboxing

285 285 

286Isolamento a livello di OS del filesystem e della rete per lo strumento Bash. I comandi vengono eseguiti all'interno di un confine che definisci in anticipo, in modo che Claude possa lavorare liberamente al suo interno senza richieste di approvazione per ogni comando. Il sandboxing è un livello separato dalle [regole di permesso](#permission-rule).286Isolamento a livello di OS del filesystem e della rete per lo strumento Bash. I comandi vengono eseguiti all'interno di un confine che definisci in anticipo. Il sandboxing è un livello separato dalle [regole di permesso](#permission-rule).

287 287 

288Scopri di più: [Sandboxing](https://code.claude.com/docs/it/sandboxing.md)288Scopri di più: [Sandboxing](https://code.claude.com/docs/it/sandboxing.md)

289 289 

hooks-guide.md +5 −1

Details

242 242 

243### Bloccare le modifiche ai file protetti243### Bloccare le modifiche ai file protetti

244 244 

245Impedite a Claude di modificare file sensibili come `.env`, `package-lock.json`, o qualsiasi cosa in `.git/`. Claude riceve un feedback che spiega perché la modifica è stata bloccata, in modo da poter adattare il suo approccio.245Impedisci agli strumenti `Edit` e `Write` di Claude di modificare file sensibili come `.env`, `package-lock.json`, o qualsiasi cosa in `.git/`. Claude riceve un feedback che spiega perché la modifica è stata bloccata, in modo da poter adattare il suo approccio.

246 246 

247Questo esempio utilizza un file di script separato che l'hook chiama. Lo script controlla il percorso del file di destinazione rispetto a un elenco di modelli protetti ed esce con il codice 2 per bloccare la modifica.247Questo esempio utilizza un file di script separato che l'hook chiama. Lo script controlla il percorso del file di destinazione rispetto a un elenco di modelli protetti ed esce con il codice 2 per bloccare la modifica.

248 248 


306 306 

307Chiedete a Claude di aggiungere un commento al vostro file `.env`. Claude Code blocca la modifica prima che si esegua e passa il messaggio `Blocked:` dello script a Claude come feedback.307Chiedete a Claude di aggiungere un commento al vostro file `.env`. Claude Code blocca la modifica prima che si esegua e passa il messaggio `Blocked:` dello script a Claude come feedback.

308 308 

309Claude può comunque modificare i file protetti con comandi shell. Per bloccare alcuni di questi comandi, aggiungi una [regola di negazione `Edit`](https://code.claude.com/docs/it/permissions#what-read-and-edit-rules-cover) per ciascun percorso sotto `permissions.deny` in `.claude/settings.json`, come `Edit(/.env)` per il file `.env` nella radice del progetto.

310 

311Anche con queste regole, Claude può modificare `.env` in altri modi. Per limitare i file su cui i comandi possono scrivere, consulta [Configurare il sandboxing](https://code.claude.com/docs/it/sandboxing.md#configure-sandboxing).

312 

309### Reiniettare il contesto dopo la compattazione313### Reiniettare il contesto dopo la compattazione

310 314 

311Quando la finestra di contesto di Claude si riempie, la compattazione riassume la conversazione per liberare spazio. Questo può perdere dettagli importanti. Utilizzate un hook `SessionStart` con un matcher `compact` per reiniettare il contesto critico dopo ogni compattazione.315Quando la finestra di contesto di Claude si riempie, la compattazione riassume la conversazione per liberare spazio. Questo può perdere dettagli importanti. Utilizzate un hook `SessionStart` con un matcher `compact` per reiniettare il contesto critico dopo ogni compattazione.

Details

296* Il campo `output_config.effort` di primo livello. [Nuovi tentativi automatici e inoltro degli errori](#automatic-retry-and-error-forwarding) tratta il caso di un upstream che lo rifiuta296* Il campo `output_config.effort` di primo livello. [Nuovi tentativi automatici e inoltro degli errori](#automatic-retry-and-error-forwarding) tratta il caso di un upstream che lo rifiuta

297* Il campo `thinking` del ragionamento adattivo, che non ha un'intestazione beta297* Il campo `thinking` del ragionamento adattivo, che non ha un'intestazione beta

298* Le voci `role: "system"` che contengono i [messaggi di sistema a metà conversazione](#feature-pass-through)298* Le voci `role: "system"` che contengono i [messaggi di sistema a metà conversazione](#feature-pass-through)

299* Il valore `anthropic-beta` e il campo `safeguards` per la [revisione del classificatore lato server](https://code.claude.com/docs/it/permission-modes.md#server-side-classifier-review) della modalità auto, nelle sessioni in cui tale revisione resta attiva, ad esempio quando `/status` mostra **Auto mode server** come `Enabled`. Per disattivare la revisione, imposta `CLAUDE_CODE_AUTO_MODE_SERVER=0` prima di avviare la sessione. Nel terminale, `/status` mostra quindi **Auto mode server** come `Disabled`.

299* Il valore `anthropic-beta` OAuth richiesto dall'autenticazione tramite abbonamento300* Il valore `anthropic-beta` OAuth richiesto dall'autenticazione tramite abbonamento

300* I valori di intestazione e i campi del corpo che gli sviluppatori aggiungono autonomamente tramite [`ANTHROPIC_BETAS`](https://code.claude.com/docs/it/env-vars) o [`CLAUDE_CODE_EXTRA_BODY`](https://code.claude.com/docs/it/env-vars)301* I valori di intestazione e i campi del corpo che gli sviluppatori aggiungono autonomamente tramite [`ANTHROPIC_BETAS`](https://code.claude.com/docs/it/env-vars) o [`CLAUDE_CODE_EXTRA_BODY`](https://code.claude.com/docs/it/env-vars)

301 302 

managed-mcp.md +3 −2

Details

30| Pattern | Cosa fa | Configura |30| Pattern | Cosa fa | Configura |

31| :- | :- | :- |31| :- | :- | :- |

32| **Disabilita MCP** | Nessun server si carica, a parte i pochi che [si caricano sotto controllo esclusivo](#exclusive-control-with-managed-mcp-json) | `managed-mcp.json` con una mappa server vuota |32| **Disabilita MCP** | Nessun server si carica, a parte i pochi che [si caricano sotto controllo esclusivo](#exclusive-control-with-managed-mcp-json) | `managed-mcp.json` con una mappa server vuota |

33| **Distribuzione fissa** | Ogni utente ottiene gli stessi server e non può aggiungerne altri | `managed-mcp.json` con i server che desideri |33| **Distribuzione fissa** | Ogni utente ottiene i server che elenchi, e i server che configura non si caricano | `managed-mcp.json` con i server che desideri |

34| **Server forniti** | Ogni utente ottiene i server remoti che elenchi e mantiene i propri | `managedMcpServers` nelle impostazioni gestite |34| **Server forniti** | Ogni utente ottiene i server remoti che elenchi e mantiene i propri | `managedMcpServers` nelle impostazioni gestite |

35| **Catalogo approvato** | Pubblica un elenco di server approvati; gli utenti aggiungono quelli che desiderano, tutto il resto è bloccato | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |35| **Catalogo approvato** | Pubblica un elenco di server approvati; gli utenti aggiungono quelli che desiderano, tutto il resto è bloccato | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |

36| **Solo server plugin** | Gli utenti non possono aggiungere server tramite `~/.claude.json` o `.mcp.json`; i [plugin della directory skills](https://code.claude.com/docs/it/plugins/loading.md#skills-directory-plugins-blocked-by-managed-settings) smettono di caricarsi come plugin, e i server di altri plugin si caricano comunque | [`strictPluginOnlyCustomization`](https://code.claude.com/docs/it/settings-reference#strictpluginonlycustomization) con `mcp` nell'elenco |36| **Solo server plugin** | Gli utenti non possono aggiungere server tramite `~/.claude.json` o `.mcp.json`; i [plugin della directory skills](https://code.claude.com/docs/it/plugins/loading.md#skills-directory-plugins-blocked-by-managed-settings) smettono di caricarsi come plugin, e i server di altri plugin si caricano comunque | [`strictPluginOnlyCustomization`](https://code.claude.com/docs/it/settings-reference#strictpluginonlycustomization) con `mcp` nell'elenco |


49* I server definiti nel file49* I server definiti nel file

50* I server che [fornisci tramite `managedMcpServers`](#provide-servers-through-managed-settings)50* I server che [fornisci tramite `managedMcpServers`](#provide-servers-through-managed-settings)

51* I server in-process registrati dall'app che ha avviato la sessione, come il server proprio dell'estensione VS Code o i [connettori forniti dall'app desktop](https://code.claude.com/docs/it/mcp.md#how-connectors-reach-claude-code)51* I server in-process registrati dall'app che ha avviato la sessione, come il server proprio dell'estensione VS Code o i [connettori forniti dall'app desktop](https://code.claude.com/docs/it/mcp.md#how-connectors-reach-claude-code)

52* Il server che Claude Code crea quando un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) [aggiunge strumenti](https://code.claude.com/docs/it/plugins/mods/api.md#add-a-tool). Per bloccare gli strumenti aggiunti dai mod dei tuoi utenti, [impedisci il caricamento dei mod installati dagli utenti](https://code.claude.com/docs/it/plugins/mods/admin.md#stop-user-installed-mods-from-loading).

52* Il server integrato [Claude in Chrome](https://code.claude.com/docs/it/chrome.md), se lo [consenti insieme al set gestito](#allow-claude-in-chrome-alongside-the-managed-set)53* Il server integrato [Claude in Chrome](https://code.claude.com/docs/it/chrome.md), se lo [consenti insieme al set gestito](#allow-claude-in-chrome-alongside-the-managed-set)

53 54 

54Gli utenti non possono aggiungere, modificare o usare altri server MCP, inclusi i server forniti dai plugin e i server passati con il [flag CLI `--mcp-config`](https://code.claude.com/docs/it/cli-reference#cli-flags). Il file sopprime anche i connettori claude.ai che Claude Code recupera autonomamente, a meno che tu non li [consenta insieme al set gestito](#allow-claude-ai-connectors-alongside-the-managed-set).55Gli utenti non possono aggiungere, modificare o usare altri server MCP, inclusi i server forniti dai plugin e i server passati con il [flag CLI `--mcp-config`](https://code.claude.com/docs/it/cli-reference#cli-flags). Il file sopprime anche i connettori claude.ai che Claude Code recupera autonomamente, a meno che tu non li [consenta insieme al set gestito](#allow-claude-ai-connectors-alongside-the-managed-set).


137}138}

138```139```

139 140 

140`claude mcp add` non riesce con l'errore della policy enterprise indicato sopra. I server configurati in precedenza dagli utenti smettono di essere caricati al successivo avvio di una sessione, senza alcun avviso che ne indichi la policy come causa. I server che fornisci tramite `managedMcpServers`, e qualsiasi altro elemento che consenti insieme al set gestito, vengono comunque caricati anche con una mappa vuota, quindi lascia queste chiavi non impostate per disattivare completamente MCP.141`claude mcp add` non riesce con l'errore della policy enterprise indicato sopra. I server configurati in precedenza dagli utenti smettono di essere caricati al successivo avvio di una sessione, senza alcun avviso che ne indichi la policy come causa. I server che fornisci tramite `managedMcpServers`, e qualsiasi altro elemento che consenti insieme al set gestito, [vengono comunque caricati](#exclusive-control-with-managed-mcp-json) anche con una mappa vuota, quindi lascia queste chiavi non impostate.

141 142 

142### Consentire i connettori claude.ai insieme al set gestito143### Consentire i connettori claude.ai insieme al set gestito

143 144 

mcp.md +1 −1

Details

806 806 

807* Aggiungilo a [`disabledMcpjsonServers`](https://code.claude.com/docs/it/settings-reference#disabledmcpjsonservers), che lo blocca in ogni modalità di autorizzazione.807* Aggiungilo a [`disabledMcpjsonServers`](https://code.claude.com/docs/it/settings-reference#disabledmcpjsonservers), che lo blocca in ogni modalità di autorizzazione.

808* Escludi completamente le impostazioni del progetto con [`--setting-sources`](https://code.claude.com/docs/it/cli-reference#cli-flags) o l'opzione `settingSources` dell'SDK.808* Escludi completamente le impostazioni del progetto con [`--setting-sources`](https://code.claude.com/docs/it/cli-reference#cli-flags) o l'opzione `settingSources` dell'SDK.

809* Avvia la sessione con [`--strict-mcp-config`](https://code.claude.com/docs/it/cli-reference#cli-flags). Claude Code utilizza quindi solo i server MCP che passi con `--mcp-config`. Saltare il prompt di approvazione per i server con ambito del progetto che Claude Code non sta caricando richiede Claude Code v2.1.246 o successivo; prima di v2.1.246, una sessione ristretta attendeva comunque l'approvazione per loro, il che lasciava le sessioni in background in attesa all'avvio. Vedi [Controllo esclusivo con managed-mcp.json](https://code.claude.com/docs/it/managed-mcp.md#exclusive-control-with-managed-mcp-json) per quello che il flag fa sotto un file MCP gestito.809* Avvia la sessione con [`--strict-mcp-config`](https://code.claude.com/docs/it/cli-reference#cli-flags). Claude Code carica quindi i server che passi con `--mcp-config` e salta quelli configurati in posizioni come `.mcp.json`. Saltare il prompt di approvazione per i server con ambito del progetto che Claude Code non sta caricando richiede Claude Code v2.1.246 o successivo. Vedi [Controllo esclusivo con managed-mcp.json](https://code.claude.com/docs/it/managed-mcp.md#exclusive-control-with-managed-mcp-json) per quello che il flag fa sotto un file MCP gestito.

810 810 

811[Approvazioni del server del progetto e fiducia dell'area di lavoro](#project-server-approvals-and-workspace-trust) copre come le approvazioni impegnate nel repository interagiscono con la fiducia dell'area di lavoro.811[Approvazioni del server del progetto e fiducia dell'area di lavoro](#project-server-approvals-and-workspace-trust) copre come le approvazioni impegnate nel repository interagiscono con la fiducia dell'area di lavoro.

812 812 

model-config.md +2 −2

Details

273* **`/model`**: Claude Code rifiuta il passaggio con un errore273* **`/model`**: Claude Code rifiuta il passaggio con un errore

274* **Flag `--model`, `ANTHROPIC_MODEL`, o l'impostazione `model`**: Claude Code sostituisce il valore all'avvio con un avviso che nomina sia i modelli richiesti che quelli sostituiti, e la sessione inizia sul modello predefinito274* **Flag `--model`, `ANTHROPIC_MODEL`, o l'impostazione `model`**: Claude Code sostituisce il valore all'avvio con un avviso che nomina sia i modelli richiesti che quelli sostituiti, e la sessione inizia sul modello predefinito

275* **[`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions)**: Claude Code ignora la variabile275* **[`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions)**: Claude Code ignora la variabile

276* **Override di subagent o teammate**: Claude Code esegue il subagent o il teammate su un modello di fallback piuttosto che far fallire la richiesta. Vedere [Scegliere un modello](https://code.claude.com/docs/it/sub-agents.md#choose-a-model) per il fallback del subagent e [Specificare teammate e modelli](https://code.claude.com/docs/it/agent-teams.md#specify-teammates-and-models) per il fallback del teammate.276* **Override di subagent o teammate**: Claude Code esegue il subagent o il teammate su un modello di fallback piuttosto che far fallire la richiesta. Vedi [Quando un'allowlist blocca il modello di un subagent](https://code.claude.com/docs/it/sub-agents.md#when-an-allowlist-blocks-a-subagent-model) per il fallback del subagent e [Specificare teammate e modelli](https://code.claude.com/docs/it/agent-teams.md#specify-teammates-and-models) per il fallback del teammate.

277 277 

278 Nelle sessioni interattive, Claude Code ti avverte quando sostituisce il modello di un subagent, da questo fallback o dalla sostituzione della versione più recente consentita di cui sopra, nominando i modelli richiesti e sostituiti; non segnala il fallback di un teammate.278 Nelle sessioni interattive, Claude Code ti avverte quando sostituisce il modello di un subagent di primo livello. Non segnala il fallback di un teammate.

279 279 

280 Dove opera la sostituzione della versione più recente consentita di cui sopra, un alias di famiglia bloccato la segue invece. Prima della versione 2.1.222, un alias ricadeva come qualsiasi altro valore bloccato su ogni provider280 Dove opera la sostituzione della versione più recente consentita di cui sopra, un alias di famiglia bloccato la segue invece. Prima della versione 2.1.222, un alias ricadeva come qualsiasi altro valore bloccato su ogni provider

281* **Override di skill o comando**: Claude Code ignora l'override, incluso un alias di famiglia bloccato, e lo skill o il comando viene eseguito sul modello della sessione. Uno skill o un comando che [viene eseguito in un subagent](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent) segue il comportamento del subagent di cui sopra281* **Override di skill o comando**: Claude Code ignora l'override, incluso un alias di famiglia bloccato, e lo skill o il comando viene eseguito sul modello della sessione. Uno skill o un comando che [viene eseguito in un subagent](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent) segue il comportamento del subagent di cui sopra

Details

50| Vuoi | Inizia con | Isolamento necessario | Note |50| Vuoi | Inizia con | Isolamento necessario | Note |

51| :- | :- | :- | :- |51| :- | :- | :- | :- |

52| Revisionare ogni azione tu stesso | Modalità Manual: `claude --permission-mode default` | Nessuno | Lavoro sensibile, codice non familiare |52| Revisionare ogni azione tu stesso | Modalità Manual: `claude --permission-mode default` | Nessuno | Lavoro sensibile, codice non familiare |

53| Iterare localmente con meno prompt, senza un classificatore | Modalità Manual più la sandbox Bash in [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#sandbox-modes): `claude --permission-mode default`, quindi esegui `/sandbox` e seleziona auto-allow | La sandbox Bash integrata, su macOS, Linux e WSL2 | Le regole di negazione si applicano comunque, e le regole di richiesta che nominano un comando, come `Bash(git push *)`, richiedono comunque un prompt. La [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode) copre altri comandi che possono chiedere conferma. Per attivare la sandbox da un file di impostazioni, imposta [`sandbox.enabled`](https://code.claude.com/docs/it/settings-reference#sandbox-enabled) su `true` |53| Iterare localmente con meno richieste di conferma, senza un classificatore | Modalità Manual più la sandbox Bash in [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#sandbox-modes): `claude --permission-mode default`, quindi esegui `/sandbox` e seleziona auto-allow | La sandbox Bash integrata, su macOS, Linux e WSL2 | Le regole di negazione si applicano comunque, e le regole di richiesta che nominano un comando, come `Bash(git push *)`, chiedono comunque conferma. La [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode) copre altri comandi che possono chiedere conferma. Per attivare invece la sandbox da un file di impostazioni, imposta [`sandbox.enabled`](https://code.claude.com/docs/it/settings-reference#sandbox-enabled) e [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/it/settings-reference#sandbox-autoallowbashifsandboxed) su `true` |

54| Esplorare prima di modificare qualsiasi cosa | `claude --permission-mode plan` | Nessuno | Claude Code blocca le modifiche finché non [approvi un piano](#review-and-approve-a-plan) |54| Esplorare prima di modificare qualsiasi cosa | `claude --permission-mode plan` | Nessuno | Claude Code blocca le modifiche finché non [approvi un piano](#review-and-approve-a-plan) |

55| Lavorare senza intervento in modalità auto | `claude --permission-mode auto`, la [modalità di autorizzazione iniziale integrata](#which-mode-a-session-starts-in) con v2.1.283 o successivo | Nessuno; una sandbox o un container aggiunge difesa in profondità | Richiede un [modello supportato](#eliminate-prompts-with-auto-mode), e la tua organizzazione può [disattivare la modalità auto](#eliminate-prompts-with-auto-mode) |55| Lavorare senza intervento in modalità auto | `claude --permission-mode auto`, la [modalità di autorizzazione iniziale integrata](#which-mode-a-session-starts-in) con v2.1.283 o successivo | Nessuno; una sandbox o un container aggiunge difesa in profondità | Richiede un [modello supportato](#eliminate-prompts-with-auto-mode), e la tua organizzazione può [disattivare la modalità auto](#eliminate-prompts-with-auto-mode) |

56| Eseguire in CI con una lista di autorizzazione esatta | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | Nessuno oltre a quello che il tuo runner CI fornisce | [Cloud sessions](https://code.claude.com/docs/it/claude-code-on-the-web.md) ignora `dontAsk` dai file di impostazioni |56| Eseguire in CI con una lista di autorizzazione esatta | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | Nessuno oltre a quello che il tuo runner CI fornisce | [Cloud sessions](https://code.claude.com/docs/it/claude-code-on-the-web.md) ignora `dontAsk` dai file di impostazioni |

permissions.md +1 −1

Details

743 743 

744Utilizzate entrambi per la difesa in profondità, poiché le restrizioni sandbox si applicano comunque anche se un'iniezione di prompt bypassa il processo decisionale di Claude. I percorsi e i domini dalle impostazioni sandbox e dalle regole di autorizzazione sono [uniti nella configurazione sandbox finale](https://code.claude.com/docs/it/sandboxing.md#permission-rules).744Utilizzate entrambi per la difesa in profondità, poiché le restrizioni sandbox si applicano comunque anche se un'iniezione di prompt bypassa il processo decisionale di Claude. I percorsi e i domini dalle impostazioni sandbox e dalle regole di autorizzazione sono [uniti nella configurazione sandbox finale](https://code.claude.com/docs/it/sandboxing.md#permission-rules).

745 745 

746Quando il sandboxing è abilitato e lasciate `autoAllowBashIfSandboxed` al suo valore predefinito di `true`, i comandi Bash in sandbox vengono eseguiti senza richiedere un prompt anche se le vostre autorizzazioni includono una regola ask bare `Bash`, o la [forma equivalente `Bash(*)` ](#match-all-uses-of-a-tool): il confine della sandbox sostituisce il prompt per l'intero strumento.746Quando abiliti il sandboxing e imposti [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/it/settings-reference#sandbox-autoallowbashifsandboxed) su `true`, i comandi Bash in sandbox vengono eseguiti senza chiedere conferma. Questo vale anche con una regola ask `Bash` semplice o con la [forma equivalente `Bash(*)`](#match-all-uses-of-a-tool): il confine della sandbox sostituisce la richiesta di conferma per l'intero strumento.

747 747 

748In [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode), Claude Code salta questa sostituzione. Senza una regola ask, i [comandi di sola lettura integrati](#read-only-commands) vengono comunque eseguiti senza chiedere conferma, e qualsiasi altro comando shell passa attraverso il normale flusso dei permessi mentre sei ancora in fase di pianificazione; consulta [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) per sapere come Claude Code gestisce i comandi in quella modalità. Con una regola ask `Bash` semplice, ogni comando Bash chiede conferma, inclusi i comandi di sola lettura in sandbox, esattamente come al di fuori del sandboxing.748In [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode), Claude Code salta questa sostituzione. Senza una regola ask, i [comandi di sola lettura integrati](#read-only-commands) vengono comunque eseguiti senza chiedere conferma, e qualsiasi altro comando shell passa attraverso il normale flusso dei permessi mentre sei ancora in fase di pianificazione; consulta [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) per sapere come Claude Code gestisce i comandi in quella modalità. Con una regola ask `Bash` semplice, ogni comando Bash chiede conferma, inclusi i comandi di sola lettura in sandbox, esattamente come al di fuori del sandboxing.

749 749 

Details

438 438 

439* **I campi di `backdrop`**: `scene` è un [nome](https://code.claude.com/docs/it/plugins/mods/reference.md#limits) che scegli tu per uno sfondo disegnato dal tuo hook. Per gli altri campi e per `overrideColorScheme`, consulta [i tipi per la tua build](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build).439* **I campi di `backdrop`**: `scene` è un [nome](https://code.claude.com/docs/it/plugins/mods/reference.md#limits) che scegli tu per uno sfondo disegnato dal tuo hook. Per gli altri campi e per `overrideColorScheme`, consulta [i tipi per la tua build](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build).

440* **Se lo sfondo viene disegnato**: `$.theme.set` si risolve con `isDrawn: true` quando un'app Desktop o mobile connessa alla sessione dichiara di disegnare gli sfondi. Altrimenti `isDrawn` è `false` e `reason` ne indica il motivo.440* **Se lo sfondo viene disegnato**: `$.theme.set` si risolve con `isDrawn: true` quando un'app Desktop o mobile connessa alla sessione dichiara di disegnare gli sfondi. Altrimenti `isDrawn` è `false` e `reason` ne indica il motivo.

441* **Un solo sfondo per ogni sessione**: una chiamata a `$.theme.set` sostituisce lo sfondo della sessione e `$.theme.clear()` rimuove quello sfondo, indipendentemente da quale mod lo abbia impostato. Chiama `$.theme.clear()` solo quando l'utente lo richiede.441* **Un solo tema per ogni sessione**: un mod che chiama `$.theme.set` sostituisce lo sfondo e i [colori](#change-the-colors-of-the-desktop-app) della sessione, e un mod che chiama `$.theme.clear()` li rimuove, indipendentemente da quale mod li abbia impostati. Chiama `$.theme.clear()` solo quando l'utente lo richiede.

442 

443### Modifica i colori dell'app Desktop

444 

445Per modificare i colori della scheda Code dell'app Desktop con un mod, [chiedine uno a Claude](#ask-claude-for-a-colors-mod) oppure [scrivilo tu stesso](#write-a-colors-mod-yourself). Entrambi i metodi richiedono Claude Code v2.1.324 o successiva nella scheda Code, quindi [verifica prima la versione lì](https://code.claude.com/docs/it/desktop.md#claude-code-version-in-the-code-tab). Claude Code nel terminale mantiene i propri colori.

446 

447#### Chiedi a Claude un mod per i colori

448 

449**1. Descrivi i colori**

450 

451Avvia una sessione locale nella scheda Code e di' a Claude quali colori desideri. Ad esempio, inserisci `make a mod that makes the app cream in light mode and dark brown in dark mode`. Claude scrive i file del mod.

452 

453**2. Approva il mod**

454 

455Rispondi alle domande che Claude Code pone sui file del mod e sul ricaricamento a caldo. Per sapere che cosa fa ciascuna risposta, consulta [Chiedi a Claude un mod](https://code.claude.com/docs/it/plugins/mods/create.md#ask-claude-for-a-mod).

456 

457**3. Verifica i colori**

458 

459La scheda Code cambia colore quando il mod viene caricato. Per regolare un colore, di' a Claude che cosa cambiare. Se non cambia nulla, consulta [Correggi i colori dei mod mancanti](#fix-missing-mod-colors-in-the-desktop-app).

460 

461#### Scrivi tu stesso un mod per i colori

462 

463`makeColors` è una funzione che costruisce un tema a partire da alcuni colori esadecimali. Questi passaggi creano un mod chiamato `paper` che la usa.

464 

465**1. Fai copiare makeColors a Claude**

466 

467Avvia una sessione locale nella scheda Code e inserisci `copy make-colors.js and make-colors.d.ts from your plugin-authoring skill into ~/.claude/skills/paper/hooks/`. Verifica che entrambi i file si trovino in quella directory.

468 

469**2. Salva il manifest e hooks.json**

470 

471Da [Scrivi tu stesso un mod](https://code.claude.com/docs/it/plugins/mods/create.md#write-a-mod-yourself), salva `.claude-plugin/plugin.json` e `hooks/hooks.json` in `~/.claude/skills/paper/`, e cambia `first-mod` in `paper` in entrambi i file. Un mod [in `~/.claude/skills/`](https://code.claude.com/docs/it/plugins/create#scaffold-a-plugin-that-loads-every-session) viene caricato quando avvii una sessione.

472 

473**3. Scrivi il codice**

474 

475Salva questo file come `~/.claude/skills/paper/hooks/register.js`. All'avvio di una sessione, il codice chiama `$.theme.set` con i colori per la modalità chiara e la modalità scura:

476 

477```javascript theme={null}

478import { makeColors } from './make-colors.js'

479 

480const { theme } = makeColors({

481 label: 'Paper',

482 // surface-0 is the background, text-primary is the main text, and text-muted is the faint text

483 light: {

484 gray: { anchors: { 'surface-0': '#efe6d3', 'text-primary': '#2a241d', 'text-muted': '#6a5f50' } },

485 },

486 dark: {

487 gray: { anchors: { 'surface-0': '#1f1a15', 'text-primary': '#f0e7d7', 'text-muted': '#aca08d' } },

488 },

489})

490 

491export function register(on) {

492 on('session.start', async ($, e, next) => {

493 await $.theme.set({ colors: theme })

494 return next(e)

495 })

496}

497```

498 

499Per usare i tuoi colori, sostituisci i valori esadecimali con altri colori esadecimali a sei cifre.

500 

501**4. Verifica i colori**

502 

503Avvia una nuova sessione locale nella scheda Code. Con i valori dell'esempio, lo sfondo è color crema in modalità chiara e marrone scuro in modalità scura. Se non cambia nulla, consulta [Correggi i colori dei mod mancanti](#fix-missing-mod-colors-in-the-desktop-app).

504 

505### Correggi i colori dei mod mancanti nell'app Desktop

506 

507Se usi un [provider di terze parti](https://code.claude.com/docs/it/third-party-integrations.md) invece di un account Claude in [Claude Desktop v5.11492.5 o precedente](https://code.claude.com/docs/it/desktop.md#check-your-version), la scheda Code mantiene i propri colori, quindi salta queste verifiche. Altrimenti, se i colori di un mod non appaiono nella scheda Code, o se scompaiono, verifica queste cause:

508 

509* **Versione obsoleta**: [aggiorna l'app Desktop](https://code.claude.com/docs/it/desktop.md#claude-code-version-in-the-code-tab), riavviala e avvia una nuova sessione locale nella scheda Code. Se il mod è stato scritto da Claude, richiedilo di nuovo lì.

510* **Mod non caricato**: se il mod è stato scritto da Claude, consulta quando viene caricato in [Chiedi a Claude un mod](https://code.claude.com/docs/it/plugins/mods/create.md#ask-claude-for-a-mod). Se l'hai scritto tu, confronta i tuoi file e i relativi percorsi con [Scrivi tu stesso un mod per i colori](#write-a-colors-mod-yourself).

511* **Tema rifiutato**: chiedi a Claude di eseguire la chiamata [`makeColors`](#write-a-colors-mod-yourself) del mod. Se la chiamata genera un errore, o il suo elenco `problems` contiene una voce che inizia con `Desktop won't paint this theme`, fai correggere il tema a Claude. Se hai installato il mod, invia ciò che Claude trova al suo autore.

512* **Un'altra chiamata `$.theme`**: quando un qualsiasi mod nella sessione chiama `$.theme.set` o `$.theme.clear()`, i colori e lo [sfondo](#put-a-backdrop-behind-the-conversation) di una chiamata precedente scompaiono. Nel tuo mod, passa `colors` e `backdrop` nella stessa chiamata a `$.theme.set`. Usa un solo mod alla volta che imposta un tema.

513 

514### Rimuovi i colori dei mod dall'app Desktop

515 

516Per togliere i colori di un mod dalla scheda Code, disattiva prima il mod. Un mod ancora attivo può impostare di nuovo i propri colori.

517 

518**1. Disattiva il mod**

519 

520* **Claude ha scritto il mod**: sposta la sua directory fuori dalla [cartella dei mod](https://code.claude.com/docs/it/plugins/mods/create.md#ask-claude-for-a-mod) della sessione in cui Claude l'ha scritto.

521* **Hai messo il mod in `~/.claude/skills/`**: sposta la sua directory, come `~/.claude/skills/paper/`, in una posizione fuori da `~/.claude/skills/`.

522* **Hai installato il mod**: nell'app Desktop, [disabilita o disinstalla il suo plugin](https://code.claude.com/docs/it/desktop.md#install-plugins) da **Manage plugins**. Se non vedi **Manage plugins** e hai [la CLI](https://code.claude.com/docs/it/quickstart.md), puoi [disabilitare o disinstallare un plugin del marketplace dalla tua shell](https://code.claude.com/docs/it/plugins/install.md#manage-plugins-from-your-shell).

523 

524**2. Avvia una nuova sessione**

525 

526Avvia una nuova sessione locale nella scheda Code.

527 

528**3. Rimuovi i colori che restano**

529 

530Se i colori sono ancora presenti, apri **Settings** dalla scheda Code e cerca lì `code appearance`. Apri il risultato e seleziona **Remove colors**.

442 531 

443## Costruire un albero di elementi532## Costruire un albero di elementi

444 533 


677 766 

678Gli stessi tasti o, nel rendering a schermo intero, un clic sulla riga espandono di nuovo la banda. Fino ad allora, nulla preme un pulsante al suo interno: nessun tasto di scelta rapida, nessuna cifra digitata in un prompt vuoto e nessuna scorciatoia da tastiera per l'[`action`](https://code.claude.com/docs/it/plugins/mods/reference#elements) di un pulsante. Se la banda ha il focus della tastiera quando l'utente la comprime, il focus torna al prompt, e Ctrl+X e poi Tab salta la banda finché è compressa.767Gli stessi tasti o, nel rendering a schermo intero, un clic sulla riga espandono di nuovo la banda. Fino ad allora, nulla preme un pulsante al suo interno: nessun tasto di scelta rapida, nessuna cifra digitata in un prompt vuoto e nessuna scorciatoia da tastiera per l'[`action`](https://code.claude.com/docs/it/plugins/mods/reference#elements) di un pulsante. Se la banda ha il focus della tastiera quando l'utente la comprime, il focus torna al prompt, e Ctrl+X e poi Tab salta la banda finché è compressa.

679 768 

680La banda rimane compressa finché l'utente non la espande, anche dopo `/clear`, e torna espansa al successivo avvio di Claude Code. Il tuo mod non può espanderla né sapere che è compressa: l'hook `ui.render` continua a essere eseguito, e nulla in `e.props` lo indica. Non fare della banda l'unico posto in cui il tuo mod mostra qualcosa a cui l'utente deve rispondere.769La banda rimane compressa finché l'utente non la espande, anche dopo `/clear`, e torna espansa al successivo avvio di Claude Code. Il tuo mod non può espanderla. Non fare della banda l'unico posto in cui il tuo mod mostra qualcosa a cui l'utente deve rispondere. Per mostrarlo altrove solo mentre la banda è compressa, leggi `e.props.isCollapsed` nel tuo hook `ui.render`, che continua a essere eseguito. `isCollapsed` richiede Claude Code v2.1.321 o versioni successive.

681 770 

682### Ricevere input digitato e disegnare una riga per ogni elemento771### Ricevere input digitato e disegnare una riga per ogni elemento

683 772 

Details

212 212 

213Alcuni di questi eventi si attivano anche per le azioni di Claude Code stesso, quindi verifica se `next.origin.plugin` è `engine` prima di rifiutarne uno.213Alcuni di questi eventi si attivano anche per le azioni di Claude Code stesso, quindi verifica se `next.origin.plugin` è `engine` prima di rifiutarne uno.

214 214 

215#### Campi sulle richieste `http.fetch` di Claude Code stesso

216 

217In un hook `http.fetch`, un [`next.origin`](#the-hook-function) pari a `{ plugin: 'engine', tier: 'core' }` contrassegna una delle richieste di Claude Code stesso, come una richiesta al modello, e non una chiamata `$.http.fetch` di un mod. Dove è caricata la [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default), il tuo hook non riceve questi eventi a meno che il tuo mod non [sia considerato un mod della tua organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods).

218 

219In questi eventi, `e.init` e il `value` in cui si risolve `next(e)` possono contenere, tra gli altri, questi campi:

220 

221| Campo | Cosa significa |

222| :- | :- |

223| `e.init.compress` | Impostato quando Claude Code comprime il corpo dopo il tuo hook. `e.init.body` contiene il corpo non compresso. Per inviare il corpo non compresso, chiama `next({ ...e, init: { ...e.init, compress: undefined } })`. |

224| `value.isStreaming` | Impostato su `true` perché Claude Code legge da sé il corpo della risposta, quindi `value.text` è vuoto. Leggi invece `value.status` e `value.headers`. Per rispondere con il tuo `text`, restituisci un `value` senza `isStreaming`. |

225 

226Questi eventi e campi richiedono Claude Code v2.1.321 o versioni successive.

227 

215## Metodi dell'API dei mod228## Metodi dell'API dei mod

216 229 

217L'API dei mod è l'argomento `$` che ogni hook riceve. I suoi metodi sono raggruppati in namespace, come `$.ui`. Questa tabella elenca i metodi di ogni namespace per nome, quindi `open` nella riga `$.ui` corrisponde alla chiamata `$.ui.open(...)`. Le guide mostrano l'uso di quelli più comuni, e [i tipi per la tua build](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build) documentano ogni metodo con un esempio.230L'API dei mod è l'argomento `$` che ogni hook riceve. I suoi metodi sono raggruppati in namespace, come `$.ui`. Questa tabella elenca i metodi di ogni namespace per nome, quindi `open` nella riga `$.ui` corrisponde alla chiamata `$.ui.open(...)`. Le guide mostrano l'uso di quelli più comuni, e [i tipi per la tua build](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build) documentano ogni metodo con un esempio.


222| [`$.ui`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, [`place`](https://code.claude.com/docs/it/plugins/mods/interface#place-a-row-in-the-transcript), `focus`, `scroll`, `toast`, `notify`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit`, `view`. `view` richiede Claude Code v2.1.300 o versioni successive e `place` v2.1.314 o versioni successive. |235| [`$.ui`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, [`place`](https://code.claude.com/docs/it/plugins/mods/interface#place-a-row-in-the-transcript), `focus`, `scroll`, `toast`, `notify`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit`, `view`. `view` richiede Claude Code v2.1.300 o versioni successive e `place` v2.1.314 o versioni successive. |

223| [`$.theme`](https://code.claude.com/docs/it/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `set`, `clear`: imposta uno sfondo che l'app Desktop o mobile disegna, e rimuove lo sfondo. Richiede Claude Code v2.1.319 o versioni successive. |236| [`$.theme`](https://code.claude.com/docs/it/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `set`, `clear`: imposta uno sfondo che l'app Desktop o mobile disegna, e rimuove lo sfondo. Richiede Claude Code v2.1.319 o versioni successive. |

224| [`$.command`](https://code.claude.com/docs/it/plugins/mods/api#add-a-command) | `register`, `run`, `list` |237| [`$.command`](https://code.claude.com/docs/it/plugins/mods/api#add-a-command) | `register`, `run`, `list` |

225| [`$.tool`](https://code.claude.com/docs/it/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |238| [`$.tool`](https://code.claude.com/docs/it/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list`. Quando una `call` richiede l'approvazione di una persona, ad esempio una a cui un hook o la tua organizzazione risponde con `ask`, si risolve con `{ deny: "<tool> wasn't run: this call needs a person's approval, and a mod's own call can't ask for it." }`, dove `<tool>` è il nome dello strumento. |

226| `$.agent` | `register`, `spawn`, `list`. `list()` restituisce i subagent e i compagni di squadra di questa sessione, ciascuno con uno `status` tra `pending`, `running`, `waiting`, `idle`, `completed`, `failed` o `killed`, dove `idle` e `waiting` richiedono Claude Code v2.1.289 o versioni successive. |239| `$.agent` | `register`, `spawn`, `list`. `list()` restituisce i subagent e i compagni di squadra di questa sessione, ciascuno con uno `status` tra `pending`, `running`, `waiting`, `idle`, `completed`, `failed` o `killed`, dove `idle` e `waiting` richiedono Claude Code v2.1.289 o versioni successive. |

227| [`$.model`](https://code.claude.com/docs/it/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |240| [`$.model`](https://code.claude.com/docs/it/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |

228| [`$.prompt`](https://code.claude.com/docs/it/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude legge il testo di `submit({ text })` dopo una frase che indica il tuo mod come mittente. `submit({ text, asUser: true })` invia il testo come parole dell'utente stesso, senza quella frase. |241| [`$.prompt`](https://code.claude.com/docs/it/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude legge il testo di `submit({ text })` dopo una frase che indica il tuo mod come mittente. `submit({ text, asUser: true })` invia il testo come parole dell'utente stesso, senza quella frase. |


250| Punto | `e.props` | `e.requestId` | Visualizzato su |263| Punto | `e.props` | `e.requestId` | Visualizzato su |

251| :- | :- | :- | :- |264| :- | :- | :- | :- |

252| [`Pane`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | L'`id` del pannello | Terminale, Desktop, VS Code |265| [`Pane`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | L'`id` del pannello | Terminale, Desktop, VS Code |

253| [`AbovePrompt`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Una sola istanza | Terminale, Desktop |266| [`AbovePrompt`](https://code.claude.com/docs/it/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, [`isCollapsed`](https://code.claude.com/docs/it/plugins/mods/interface#when-the-user-collapses-the-band), `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Una sola istanza | Terminale, Desktop |

254| `AbovePromptList`, la pila di righe `AbovePrompt` | `rows`, un elenco con un `{ plugin, tree }` per la riga di ciascun mod, più le prop di `AbovePrompt` | Una sola istanza | Terminale, Desktop. Richiede Claude Code v2.1.323 o successiva. |267| `AbovePromptList`, la pila di righe `AbovePrompt` | `rows`, un elenco con un `{ plugin, tree }` per la riga di ciascun mod, più le prop di `AbovePrompt` | Una sola istanza | Terminale, Desktop. Richiede Claude Code v2.1.323 o successiva. |

255| [`Placed`](https://code.claude.com/docs/it/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | Il `requestId` restituito da `$.ui.place` | Terminale |268| [`Placed`](https://code.claude.com/docs/it/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | Il `requestId` restituito da `$.ui.place` | Terminale |

256| [`Backdrop`](https://code.claude.com/docs/it/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `scene`, `plugin`, `glass`, `overrideColorScheme`. Prima della v2.1.323, `scene` era `id` e `overrideColorScheme` era `colorScheme`. | `backdrop` | Superfici `desktop` e `mobile`. Il tuo hook viene eseguito quando l'app Desktop o mobile chiede di disegnare uno sfondo. |269| [`Backdrop`](https://code.claude.com/docs/it/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `scene`, `plugin`, `glass`, `overrideColorScheme`. Prima della v2.1.323, `scene` era `id` e `overrideColorScheme` era `colorScheme`. | `backdrop` | Superfici `desktop` e `mobile`. Il tuo hook viene eseguito quando l'app Desktop o mobile chiede di disegnare uno sfondo. |


426| Nome | Dove | Cosa fa |439| Nome | Dove | Cosa fa |

427| :- | :- | :- |440| :- | :- | :- |

428| `CLAUDE_CODE_PLUGIN_DIRS` | Ambiente, oppure `env` in `~/.claude/settings.json` | Directory di plugin da caricare come fa `--plugin-dir`, per le app a cui non puoi passare un flag. Percorsi assoluti separati da `:`, oppure da `;` su Windows. |441| `CLAUDE_CODE_PLUGIN_DIRS` | Ambiente, oppure `env` in `~/.claude/settings.json` | Directory di plugin da caricare come fa `--plugin-dir`, per le app a cui non puoi passare un flag. Percorsi assoluti separati da `:`, oppure da `;` su Windows. |

429| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Ambiente | `1` fa sì che una sessione non interattiva di lunga durata ricarichi i mod di `--plugin-dir` al salvataggio |442| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Ambiente | Indica se i mod vengono ricaricati al salvataggio. Consulta il [riferimento delle variabili d'ambiente](https://code.claude.com/docs/it/env-vars.md) per i valori predefiniti e i valori possibili |

430| `prependPlugins`, `appendPlugins` | Impostazioni gestite. Impostazioni utente solo su una macchina senza impostazioni gestite né file [`managed-mcp.json`](https://code.claude.com/docs/it/managed-mcp#deploy-managed-mcp-json), in una sessione la cui credenziale non è un `/login` Team o Enterprise. | Elenchi di id di plugin, come `acme-guard@acme-tools`. I mod in `prependPlugins` vengono eseguiti prima di ogni mod installato da un utente, e i mod in `appendPlugins` vengono eseguiti dopo, nell'ordine elencato. Consulta [L'ordine in cui vengono eseguiti i mod](https://code.claude.com/docs/it/plugins/mods/events.md#the-order-mods-run-in). |443| `prependPlugins`, `appendPlugins` | Impostazioni gestite. Impostazioni utente solo su una macchina senza impostazioni gestite né file [`managed-mcp.json`](https://code.claude.com/docs/it/managed-mcp#deploy-managed-mcp-json), in una sessione la cui credenziale non è un `/login` Team o Enterprise. | Elenchi di id di plugin, come `acme-guard@acme-tools`. I mod in `prependPlugins` vengono eseguiti prima di ogni mod installato da un utente, e i mod in `appendPlugins` vengono eseguiti dopo, nell'ordine elencato. Consulta [L'ordine in cui vengono eseguiti i mod](https://code.claude.com/docs/it/plugins/mods/events.md#the-order-mods-run-in). |

431| `allowManagedModsOnly` | Impostazioni gestite, come [opzione della protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Solo i mod che [contano come quelli della tua organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods) e i mod integrati in Claude Code eseguono i propri hook. Gli hook delle impostazioni degli utenti continuano a essere eseguiti. |444| `allowManagedModsOnly` | Impostazioni gestite, come [opzione della protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Solo i mod che [contano come quelli della tua organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods) e i mod integrati in Claude Code eseguono i propri hook. Gli hook delle impostazioni degli utenti continuano a essere eseguiti. |

432| `allowModsToOverrideDenyRules` | Impostazioni gestite, come [opzione della protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Consente a un mod installato da un utente di approvare una chiamata a uno strumento superando la maggior parte degli [esiti che restano in vigore per impostazione predefinita](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods), inclusa una regola `deny` |445| `allowModsToOverrideDenyRules` | Impostazioni gestite, come [opzione della protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Consente a un mod installato da un utente di approvare una chiamata a uno strumento superando la maggior parte degli [esiti che restano in vigore per impostazione predefinita](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods), inclusa una regola `deny` |

Details

115 115 

116### Seguire le regole del test kit116### Seguire le regole del test kit

117 117 

118Il test kit ha alcune regole proprie, e violarne una produce gli errori in cui si imbattono per primi i nuovi autori di test:

119 

120* **Registra ogni stub prima della prima chiamata del test su `$`.** Chiamare `on` dopo di essa genera un errore come `on("ui.render") after the test first called $`.118* **Registra ogni stub prima della prima chiamata del test su `$`.** Chiamare `on` dopo di essa genera un errore come `on("ui.render") after the test first called $`.

121 119 

122* **[`session.start`](https://code.claude.com/docs/it/plugins/mods/reference#session) non viene eseguito da solo.** Ogni test inizia con il tuo modulo appena caricato e nessuno dei suoi hook chiamato, quindi le variabili a livello di modulo mantengono i loro valori iniziali. Se un hook dipende da ciò che `session.start` imposta, attivalo per primo:120* **[`session.start`](https://code.claude.com/docs/it/plugins/mods/reference#session) non viene eseguito da solo.** Ogni test inizia con il tuo modulo appena caricato e nessuno dei suoi hook chiamato, quindi le variabili a livello di modulo mantengono i loro valori iniziali. Se un hook dipende da ciò che `session.start` imposta, attivalo per primo:


132 130 

133 Il secondo stub risponde alla chiamata `$.command.register` effettuata da un hook `session.start` come quello del [tutorial](https://code.claude.com/docs/it/plugins/mods/create.md#write-a-mod-yourself). Senza di esso, quella chiamata viene rifiutata con `no implementation for command.register` e il kit salta il tuo hook, quindi nulla di ciò che segue la chiamata nell'hook viene eseguito. Il test non fallisce in quel punto. L'hook saltato viene elencato sotto `the engine reported:` solo se una verifica successiva fallisce.131 Il secondo stub risponde alla chiamata `$.command.register` effettuata da un hook `session.start` come quello del [tutorial](https://code.claude.com/docs/it/plugins/mods/create.md#write-a-mod-yourself). Senza di esso, quella chiamata viene rifiutata con `no implementation for command.register` e il kit salta il tuo hook, quindi nulla di ciò che segue la chiamata nell'hook viene eseguito. Il test non fallisce in quel punto. L'hook saltato viene elencato sotto `the engine reported:` solo se una verifica successiva fallisce.

134 132 

135* **Un hook che restituisce `next(e)` ha bisogno di uno stub che risponda.** Quando il tuo hook [`ui.render`](https://code.claude.com/docs/it/plugins/mods/reference#interface) restituisce `next(e)`, ad esempio per non disegnare nulla mentre Claude è inattivo, [montarlo](#test-a-drawing) fallisce con `no implementation for ui.render`. Registra uno stub che restituisce un elemento come dati semplici:133* **Registra uno stub `ui.render` per scegliere cosa restituisce `next(e)`.** Quando il tuo hook [`ui.render`](https://code.claude.com/docs/it/plugins/mods/reference#interface) restituisce `next(e)`, ad esempio per non disegnare nulla mentre Claude è inattivo, il [montaggio](#test-a-drawing) riesce senza alcuno stub. Per fare in modo che `next(e)` restituisca un elemento scelto da te, registra uno stub che lo restituisce come dati semplici:

136 134 

137 ```typescript theme={null}135 ```typescript theme={null}

138 // Stands for what Claude Code would draw at the site136 // Stands for what Claude Code would draw at the site

139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))137 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))

140 ```138 ```

141 139 

142 Con lo stub registrato, il montaggio riesce, e `ui.find({ type: 'Text' })` restituisce quell'elemento ogni volta che il tuo hook ha restituito `next(e)`. Dalla v2.1.323 in poi, per la band, passa il nome del tuo mod come secondo argomento di `on`, come in `{ plugin: 'my-mod' }`. Senza di esso, lo stub non risponde al tuo `next(e)`.140 Dove il sito [può disegnare quell'elemento](https://code.claude.com/docs/it/plugins/mods/interface.md#change-what-claude-code-already-draws), `ui.find({ type: 'Text' })` lo restituisce quando il tuo hook ha restituito `next(e)`. Dalla v2.1.323 in poi, per la band, passa il nome del tuo mod come secondo argomento di `on`, come in `{ plugin: 'my-mod' }`. Senza di esso, lo stub non risponde al tuo `next(e)`. Prima della v2.1.321, il montaggio fallisce con `no implementation for ui.render` se non registri lo stub.

143 141 

144* **Uno stub per `turn.step` è un generatore asincrono**, e il test legge lo stream fino alla fine per ottenere il risultato:142* **Uno stub per `turn.step` è un generatore asincrono**, e il test legge lo stream fino alla fine per ottenere il risultato:

145 143 


316| `press({ key: 'more' })` | Preme il `Button` con quella key |314| `press({ key: 'more' })` | Preme il `Button` con quella key |

317| `input({ key: 'new-note', text: 'buy milk' })` | Digita il testo nell'`Input` con quella key e preme Enter. Aggiungi `kind: 'change'` per digitare senza inviare. Per un campo con `rows`, il testo può contenere `\n`. |315| `input({ key: 'new-note', text: 'buy milk' })` | Digita il testo nell'`Input` con quella key e preme Enter. Aggiungi `kind: 'change'` per digitare senza inviare. Per un campo con `rows`, il testo può contenere `\n`. |

318| `select({ key: 'size', value: 'large' })` | Sceglie l'opzione con quel valore nel `Select` con quella key |316| `select({ key: 'size', value: 'large' })` | Sceglie l'opzione con quel valore nel `Select` con quella key |

317| `keepsBeneath()` | In un test senza stub di `ui.render`, si risolve in `true` quando il disegno include ciò che ha restituito `next(e)`, e in `false` quando il tuo hook lo ha escluso. In un test che ne registra uno, usa `find` per cercare ciò che lo stub ha disegnato. Richiede Claude Code v2.1.321 o successivo. |

319| `find({ key: 'more' })` o `find({ type: 'Text', text: 'Count: 2' })` | Restituisce il primo elemento corrispondente come `{ type, props, children }`, oppure `undefined`. `text` può essere una stringa o un'espressione regolare. |318| `find({ key: 'more' })` o `find({ type: 'Text', text: 'Count: 2' })` | Restituisce il primo elemento corrispondente come `{ type, props, children }`, oppure `undefined`. `text` può essere una stringa o un'espressione regolare. |

320| `unmount()` | Rimuove il disegno |319| `unmount()` | Rimuove il disegno |

321 320 

Details

41 41 

42| Vuoi | Inizia con |42| Vuoi | Inizia con |

43| :- | :- |43| :- | :- |

44| Ridurre i prompt di autorizzazione durante il lavoro quotidiano sulla tua macchina | Lo [sandboxed Bash tool](https://code.claude.com/docs/it/sandboxing.md), configurato con `/sandbox` |44| Ridurre le richieste di permesso durante il lavoro quotidiano sulla tua macchina | Lo [strumento Bash in sandbox](https://code.claude.com/docs/it/sandboxing.md) in modalità auto-allow, configurato con `/sandbox` |

45| Lasciare che Claude lavori in modo automatico con `--dangerously-skip-permissions` o in modalità auto | Il [dev container](https://code.claude.com/docs/it/devcontainer.md) preconfigurato, qualsiasi container o VM, o il [sandbox runtime](#sandbox-runtime) |45| Lasciare che Claude lavori in modo automatico con `--dangerously-skip-permissions` o in modalità auto | Il [dev container](https://code.claude.com/docs/it/devcontainer.md) preconfigurato, qualsiasi container o VM, o il [sandbox runtime](#sandbox-runtime) |

46| Isolare i server MCP e gli hooks così come Bash, senza Docker | Il sandbox runtime |46| Isolare i server MCP e gli hooks così come Bash, senza Docker | Il sandbox runtime |

47| Standardizzare un ambiente sandboxed in un team | Il [dev container](https://code.claude.com/docs/it/devcontainer.md) preconfigurato, copiato nel tuo repository |47| Standardizzare un ambiente sandboxed in un team | Il [dev container](https://code.claude.com/docs/it/devcontainer.md) preconfigurato, copiato nel tuo repository |

sandboxing.md +4 −7

Details

6 6 

7> Limita i file e gli host di rete che i comandi shell di Claude Code possono raggiungere con la sandbox integrata. Attivala, imposta il perimetro e risolvi ciò che interrompe.7> Limita i file e gli host di rete che i comandi shell di Claude Code possono raggiungere con la sandbox integrata. Attivala, imposta il perimetro e risolvi ciò che interrompe.

8 8 

9La sandbox di Bash è un perimetro che il sistema operativo applica attorno ai comandi shell che Claude esegue sulla tua macchina. Sei tu a stabilire quali file e domini di rete quei comandi possono raggiungere, e i limiti si applicano ai comandi Bash, PowerShell e Monitor e ai processi che avviano. Poiché è il sistema operativo ad applicare i limiti mentre un comando è in esecuzione, Claude Code può [eseguire i comandi in sandbox senza chiederti](#sandbox-modes) di approvarli uno per uno.9La sandbox di Bash è un perimetro che il sistema operativo applica attorno ai comandi shell che Claude esegue sulla tua macchina. Sei tu a stabilire quali file e domini di rete quei comandi possono raggiungere, e i limiti si applicano ai comandi Bash, PowerShell e Monitor e ai processi che avviano. I comandi in sandbox passano comunque attraverso il normale flusso dei permessi, tranne quando scegli la [modalità auto-allow](#sandbox-modes), che può eseguirli senza chiedertelo.

10 10 

11La sandbox copre solo i comandi shell. Gli strumenti per i file di Claude, i server MCP e gli hook [vengono eseguiti al di fuori di essa](#what-runs-outside-the-sandbox).11La sandbox copre solo i comandi shell. Gli strumenti per i file di Claude, i server MCP e gli hook [vengono eseguiti al di fuori di essa](#what-runs-outside-the-sandbox).

12 12 


394| Voci `deny` e `mask` di `credentials.envVars` | Applicate. La rimozione delle variabili d'ambiente è indipendente dal livello del filesystem |394| Voci `deny` e `mask` di `credentials.envVars` | Applicate. La rimozione delle variabili d'ambiente è indipendente dal livello del filesystem |

395| [Voci `mask` di `credentials.files`](#mask-credential-files) applicate come maschere | Applicate: il mascheramento è indipendente dal livello del filesystem. Una voce [ripiegata su `deny`](#mask-credential-files) non viene applicata, come qualsiasi voce `deny` |395| [Voci `mask` di `credentials.files`](#mask-credential-files) applicate come maschere | Applicate: il mascheramento è indipendente dal livello del filesystem. Una voce [ripiegata su `deny`](#mask-credential-files) non viene applicata, come qualsiasi voce `deny` |

396 396 

397Cambiano altre due cose:397I comandi in sandbox ereditano inoltre il `$TMPDIR` della tua shell invece della directory temporanea per utente, perché ogni directory temporanea è scrivibile e Claude Code non reindirizza più i comandi a quella per utente.

398 398 

399* I comandi in sandbox ereditano il `$TMPDIR` della tua shell invece della directory temporanea per utente, perché ogni directory temporanea è scrivibile e Claude Code non reindirizza più i comandi a quella per utente.399Su Linux la variabile spesso non è impostata nella shell padre. Le indicazioni dello strumento Bash dicono a Claude di creare directory temporanee con `mktemp -d` invece di affidarsi a `$TMPDIR`.

400 

401 Su Linux la variabile spesso non è impostata nella shell padre. Le indicazioni dello strumento Bash dicono a Claude di creare directory temporanee con `mktemp -d` invece di affidarsi a `$TMPDIR`.

402* [`autoAllowBashIfSandboxed`](https://code.claude.com/docs/it/settings-reference#sandbox-autoallowbashifsandboxed) ha ancora `true` come valore predefinito, quindi i comandi in sandbox continuano a essere eseguiti senza richiesta di conferma. Impostalo su `false` per chiedere conferma per i comandi in sandbox.

403 400 

404### Proteggere le credenziali401### Proteggere le credenziali

405 402 


1095}1092}

1096```1093```

1097 1094 

1098Questo attiva la [modalità auto-allow](#sandbox-modes). Per la modalità con permessi regolari, imposta anche [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/it/settings-reference#sandbox-autoallowbashifsandboxed) su `false`. La modifica ha effetto nella sessione in corso al successivo comando shell eseguito da Claude, e la scheda **Mode** di `/sandbox` indica quindi la modalità in vigore.1095Questo attiva la [modalità con permessi regolari](#sandbox-modes). Per la modalità auto-allow, imposta anche [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/it/settings-reference#sandbox-autoallowbashifsandboxed) su `true`. La modifica ha effetto nella sessione in corso al successivo comando shell eseguito da Claude, e la scheda **Mode** di `/sandbox` indica quindi la modalità in vigore.

1099 1096 

1100## Limitazioni1097## Limitazioni

1101 1098 

security.md +3 −3

Details

25 25 

26Per mitigare i rischi nei sistemi agentici:26Per mitigare i rischi nei sistemi agentici:

27 27 

28* **Strumento bash in sandbox**: [Sandbox](https://code.claude.com/docs/it/sandboxing.md) comandi bash con isolamento del filesystem e della rete, riducendo i prompt di permesso mantenendo la sicurezza. Configurare con `/sandbox` per definire i confini dove Claude Code può lavorare autonomamente28* **Strumento Bash in sandbox**: Esegui i comandi Bash in [sandbox](https://code.claude.com/docs/it/sandboxing.md) con isolamento del filesystem e della rete. Configuralo con `/sandbox`

29* **Confine della directory di lavoro**: In modalità manuale, Claude Code ti chiede conferma prima che i suoi strumenti per i file leggano o scrivano al di fuori della cartella in cui è stato avviato e delle sue sottocartelle. Il confine è una richiesta di permesso, quindi un comando Bash che approvi può comunque scrivere ovunque possa farlo il tuo account utente29* **Confine della directory di lavoro**: In modalità manuale, Claude Code ti chiede conferma prima che i suoi strumenti per i file leggano o scrivano al di fuori della cartella in cui è stato avviato e delle sue sottocartelle. Il confine è una richiesta di permesso, quindi un comando Bash che approvi può comunque scrivere ovunque possa farlo il tuo account utente

30 * Per leggere una cartella senza la richiesta, aggiungila come [directory aggiuntiva](https://code.claude.com/docs/it/permissions.md#working-directories)30 * Per leggere una cartella senza la richiesta, aggiungila come [directory aggiuntiva](https://code.claude.com/docs/it/permissions.md#working-directories)

31 * Per limitare i comandi Bash a livello di sistema operativo, attiva il [sandboxing](https://code.claude.com/docs/it/sandboxing.md#filesystem-isolation)31 * Per limitare i comandi Bash a livello di sistema operativo, attiva il [sandboxing](https://code.claude.com/docs/it/sandboxing.md#filesystem-isolation)


43### Protezioni fondamentali43### Protezioni fondamentali

44 44 

45* **Sistema di permessi**: In Manual mode, le operazioni sensibili richiedono un'approvazione esplicita45* **Sistema di permessi**: In Manual mode, le operazioni sensibili richiedono un'approvazione esplicita

46* **Approvazione dei comandi di rete**: I comandi che recuperano contenuti dal web come `curl` e `wget` non sono approvati automaticamente per impostazione predefinita. In Manual mode richiedono un'approvazione come qualsiasi altro comando Bash non di sola lettura, quindi è possibile comunque approvarli una volta o aggiungere una regola di autorizzazione esplicita come `Bash(curl *)`. Per bloccarli completamente, aggiungeteli a [`permissions.deny`](https://code.claude.com/docs/it/permissions#tool-specific-permission-rules). Una regola di negazione corrisponde al comando [come scritto](https://code.claude.com/docs/it/permissions.md#bash-rule-limits); per l'applicazione della rete che non dipende dal testo del comando, vedere [isolamento della rete sandbox](https://code.claude.com/docs/it/sandboxing.md#network-isolation)46* **Approvazione dei comandi di rete**: i comandi che recuperano contenuti dal web, come `curl` e `wget`, non vengono approvati automaticamente per impostazione predefinita. In modalità Manual mostrano una richiesta di permesso come qualsiasi altro comando Bash non di sola lettura, quindi puoi comunque approvarli una volta o aggiungere una regola di autorizzazione esplicita come `Bash(curl *)`. Per impedire a Claude di eseguirli, aggiungili a [`permissions.deny`](https://code.claude.com/docs/it/permissions#tool-specific-permission-rules). Una regola di negazione corrisponde al comando [così come è scritto](https://code.claude.com/docs/it/permissions.md#bash-rule-limits); per un controllo della rete che non dipenda dal testo del comando, consulta [isolamento di rete della sandbox](https://code.claude.com/docs/it/sandboxing.md#network-isolation)

47 47 

48### Misure di protezione della privacy48### Misure di protezione della privacy

49 49 


62* **Verifica della fiducia**: In una sessione interattiva, Claude Code mostra la finestra di dialogo di fiducia del workspace quando lo avvii in una cartella che non hai contrassegnato come attendibile. I server nel file `.mcp.json` di un progetto hanno una propria richiesta di approvazione, e [Ambito di progetto](https://code.claude.com/docs/it/mcp.md#project-scope) elenca le sessioni che la saltano62* **Verifica della fiducia**: In una sessione interattiva, Claude Code mostra la finestra di dialogo di fiducia del workspace quando lo avvii in una cartella che non hai contrassegnato come attendibile. I server nel file `.mcp.json` di un progetto hanno una propria richiesta di approvazione, e [Ambito di progetto](https://code.claude.com/docs/it/mcp.md#project-scope) elenca le sessioni che la saltano

63 * Nota: Una sessione `-p` non mostra nessuna delle due richieste. [Cosa viene eseguito prima di considerare attendibile una cartella](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) elenca cosa possono eseguire lì i file di un repository63 * Nota: Una sessione `-p` non mostra nessuna delle due richieste. [Cosa viene eseguito prima di considerare attendibile una cartella](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) elenca cosa possono eseguire lì i file di un repository

64 * Nota: Quando avvii Claude Code direttamente nella tua directory home, l'accettazione della fiducia viene mantenuta solo per la sessione corrente e non viene scritta su disco, quindi il prompt riappare ad ogni avvio. Non esiste un'impostazione per renderla persistente. Avvia Claude Code da una sottodirectory del progetto, dove l'accettazione della fiducia viene salvata per directory64 * Nota: Quando avvii Claude Code direttamente nella tua directory home, l'accettazione della fiducia viene mantenuta solo per la sessione corrente e non viene scritta su disco, quindi il prompt riappare ad ogni avvio. Non esiste un'impostazione per renderla persistente. Avvia Claude Code da una sottodirectory del progetto, dove l'accettazione della fiducia viene salvata per directory

65* **Rilevamento della command injection**: In Manual mode, Claude Code chiede conferma prima di eseguire un comando Bash che non riesce ad analizzare completamente. Una regola allow per una parte di un comando, come `Bash(git *)`, non salta questa richiesta. I [comandi in sandbox](https://code.claude.com/docs/it/permissions.md#how-permissions-interact-with-sandboxing) possono essere eseguiti senza di essa65* **Rilevamento della command injection**: In Manual mode, Claude Code chiede conferma prima di eseguire un comando Bash che non riesce ad analizzare completamente. Una regola allow per una parte di un comando, come `Bash(git *)`, non salta questa richiesta. I [comandi in sandbox](https://code.claude.com/docs/it/permissions.md#how-permissions-interact-with-sandboxing) in [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode) possono essere eseguiti senza di essa

66* **Corrispondenza fail-closed**: In Manual mode, i comandi non corrispondenti richiedono per impostazione predefinita l'approvazione manuale66* **Corrispondenza fail-closed**: In Manual mode, i comandi non corrispondenti richiedono per impostazione predefinita l'approvazione manuale

67* **Archiviazione sicura delle credenziali**: Le chiavi API e i token sono archiviati nel Keychain di macOS quando disponibile. Su Linux sono archiviati in un file con modalità `0600`, e su Windows in un file che eredita i controlli di accesso della directory del tuo profilo utente. Consulta [Gestione delle credenziali](https://code.claude.com/docs/it/authentication.md#credential-management)67* **Archiviazione sicura delle credenziali**: Le chiavi API e i token sono archiviati nel Keychain di macOS quando disponibile. Su Linux sono archiviati in un file con modalità `0600`, e su Windows in un file che eredita i controlli di accesso della directory del tuo profilo utente. Consulta [Gestione delle credenziali](https://code.claude.com/docs/it/authentication.md#credential-management)

68 68 

Details

1355 1355 

1356### `sandbox.autoAllowBashIfSandboxed`1356### `sandbox.autoAllowBashIfSandboxed`

1357 1357 

1358Consente a Claude Code di eseguire i comandi Bash in sandbox senza una richiesta di permesso. I comandi che non possono essere eseguiti nella sandbox passano comunque per il normale flusso dei permessi, e le regole `deny` e le regole `ask` limitate al contenuto come `Bash(git push *)` continuano ad applicarsi; una regola ask `Bash` generica viene saltata per i comandi in sandbox. Impostala su `false` per far passare anche i comandi in sandbox per il normale flusso dei permessi, che la scheda **Mode** di `/sandbox` chiama modalità dei permessi normali.1358Consente a Claude Code di eseguire i comandi Bash in sandbox senza una richiesta di permesso. I comandi che non possono essere eseguiti nella sandbox seguono comunque il normale flusso dei permessi. Le regole `deny` e le regole `ask` limitate al contenuto, come `Bash(git push *)`, continuano ad applicarsi, ma una regola ask `Bash` semplice viene saltata per i comandi in sandbox. Per impostarla su `true` nelle impostazioni gestite, aggiungila al blocco `sandbox` della tua [fonte gestita con la priorità più alta](https://code.claude.com/docs/it/managed-settings.md#how-claude-code-combines-managed-sources).

1359 1359 

1360* **Scope**: [`Any file`](#scopes)1360* **Scope**: [`Any file`](#scopes)

1361* **Type**: Boolean1361* **Type**: Boolean

1362 * `true`: Claude Code esegue i comandi Bash in sandbox senza una richiesta di permesso, tranne nei casi descritti in [Auto-allow mode](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode); `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` disattiva l'auto-consentimento1362 * `true`: Claude Code esegue i comandi Bash in sandbox senza una richiesta di permesso, tranne nei casi descritti in [Auto-allow mode](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode); `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` disattiva l'auto-consentimento

1363 * `false`: i comandi in sandbox seguono il flusso di permessi regolare, quindi decidono le tue regole allow e la modalità di permesso. La scheda **Mode** di `/sandbox` chiama questa modalità di permessi regolari1363 * `false`: i comandi in sandbox seguono il flusso di permessi regolare, quindi decidono le tue regole allow e la modalità di permesso. La scheda **Mode** di `/sandbox` chiama questa modalità di permessi regolari

1364* **Default**: `true`1364* **Predefinito**: `false`. Prima della v2.1.324, il valore predefinito era `true`

1365 1365 

1366Questo mantiene la sandbox attiva e invia i comandi in sandbox attraverso il flusso di permessi regolare:1366Per mantenere attiva la sandbox ed eseguire i comandi in sandbox senza una richiesta di permesso, imposta entrambe le chiavi nel tuo blocco `sandbox`:

1367 1367 

1368```json settings.json theme={null}1368```json settings.json theme={null}

1369{1369{

1370 "sandbox": {1370 "sandbox": {

1371 "enabled": true,1371 "enabled": true,

1372 "autoAllowBashIfSandboxed": false1372 "autoAllowBashIfSandboxed": true

1373 }1373 }

1374}1374}

1375```1375```


1653}1653}

1654```1654```

1655 1655 

1656Con 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.1656Con 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. Consulta [Disattivare l'isolamento del filesystem](https://code.claude.com/docs/it/sandboxing.md#disable-filesystem-isolation) per l'elenco completo delle fonti che possono impostarla e di cosa cambia quando l'isolamento è disattivato.

1657 1657 

1658### `sandbox.ignoreViolations`1658### `sandbox.ignoreViolations`

1659 1659 


4870 4870 

4871### `agentPushNotifEnabled`4871### `agentPushNotifEnabled`

4872 4872 

4873Consenti a Claude di inviare una notifica push al tuo telefono quando decide che ne vale la pena, ad esempio quando un'attività lunga si conclude. In una sessione locale, Claude può inviarne una mentre [Remote Control](https://code.claude.com/docs/it/remote-control.md) è connesso. Appare in `/config` come **Push when Claude decides**. Quando lo modifichi lì, Claude Code salva anche il valore nel tuo account.4873Consenti a Claude di inviare una notifica push al tuo telefono quando decide che ne vale la pena, ad esempio quando un'attività lunga si conclude. In una sessione locale, Claude può inviarne una mentre [Remote Control](https://code.claude.com/docs/it/remote-control.md) è connesso. Appare in `/config` come **Push when Claude decides**.

4874 4874 

4875* **Scope**: [`Any file`](#scopes). Claude Code legge anche un valore lasciato in `~/.claude.json` da versioni precedenti.4875* **Scope**: [`Any file`](#scopes). Claude Code legge anche un valore lasciato in `~/.claude.json` da versioni precedenti.

4876* **Type**: Boolean4876* **Type**: Boolean


4884}4884}

4885```4885```

4886 4886 

4887Se esegui sessioni sotto un server [`claude remote-control`](https://code.claude.com/docs/it/remote-control#start-a-remote-control-session), queste seguono il valore salvato nel tuo account anziché questa chiave. Per modificare quel valore, esegui `/config` in una sessione di Claude Code nel tuo terminale e attiva o disattiva **Push when Claude decides**. Se l'interruttore mostra già il valore che desideri, modificalo e poi ripristinalo in modo che Claude Code salvi quel valore nel tuo account.4887Con questa sola chiave non ricevi notifiche. Per configurarle, segui i passaggi in [Notifiche push mobile](https://code.claude.com/docs/it/remote-control.md#mobile-push-notifications).

4888 4888 

4889Vedi [Notifiche push mobile](https://code.claude.com/docs/it/remote-control.md#mobile-push-notifications).4889Se esegui sessioni sotto un server [`claude remote-control`](https://code.claude.com/docs/it/remote-control#start-a-remote-control-session), queste seguono il valore salvato nel tuo account anziché questa chiave. Per modificare quel valore, esegui `/config` in una sessione di Claude Code nel tuo terminale e attiva o disattiva **Push when Claude decides**. Se l'interruttore mostra già il valore che desideri, modificalo e poi ripristinalo in modo che Claude Code salvi quel valore nel tuo account.

4890 4890 

4891### `awaySummaryEnabled`4891### `awaySummaryEnabled`

4892 4892 


5043}5043}

5044```5044```

5045 5045 

5046Vedi [Notifiche push mobile](https://code.claude.com/docs/it/remote-control.md#mobile-push-notifications).5046Con questa sola chiave non ricevi notifiche. Per configurarle, segui i passaggi in [Notifiche push mobile](https://code.claude.com/docs/it/remote-control.md#mobile-push-notifications).

5047 5047 

5048### `preferredNotifChannel`5048### `preferredNotifChannel`

5049 5049 


5421 5421 

5422### `minimumVersion`5422### `minimumVersion`

5423 5423 

5424Impedisci agli aggiornamenti automatici in background e a `claude update` di installare qualsiasi versione al di sotto di questa, quindi il passaggio al canale `"stable"` non ti fa eseguire il downgrade da una build `"latest"` più recente. Claude Code scrive questa chiave per te quando scegli di rimanere sulla versione corrente mentre cambi canale in `/config`, e la cancella quando torni a `"latest"`.5424Impedisci agli aggiornamenti automatici in background e a `claude update` di installare qualsiasi versione al di sotto di quella che imposti. Claude Code scrive questa chiave per te quando scegli di rimanere sulla versione corrente mentre cambi canale in `/config`. Claude Code cancella la chiave quando torni a `"latest"` in `/config`.

5425 5425 

5426* **Scope**: [`Any file`](#scopes). Impostalo nelle impostazioni gestite per fissare un minimo a livello di organizzazione che le impostazioni utente e di progetto non possono abbassare.5426* **Scope**: [`Any file`](#scopes). Imposta questa chiave nelle impostazioni gestite per fissare un minimo a livello di organizzazione che le impostazioni utente e di progetto non possono sovrascrivere.

5427* **Type**: string, un numero di versione come `"2.1.100"`; un valore che non è una versione valida viene ignorato5427* **Type**: string, un numero di versione come `"2.1.323"`; un valore che non è una versione valida viene ignorato

5428* **Default**: non impostato, quindi gli aggiornamenti possono installare qualsiasi versione che il canale offre5428* **Default**: non impostato, quindi gli aggiornamenti possono installare qualsiasi versione che il canale offre

5429 5429 

5430Questo esempio segue il canale stable e rifiuta di installare qualsiasi versione al di sotto di 2.1.100:5430Questo esempio segue il canale stable e rifiuta di installare qualsiasi versione al di sotto di 2.1.323:

5431 5431 

5432```json settings.json theme={null}5432```json settings.json theme={null}

5433{5433{

5434 "autoUpdatesChannel": "stable",5434 "autoUpdatesChannel": "stable",

5435 "minimumVersion": "2.1.100"5435 "minimumVersion": "2.1.323"

5436}5436}

5437```5437```

5438 5438 

setup.md +19 −10

Details

40>40>

41> **macOS, Linux, WSL:**41> **macOS, Linux, WSL:**

42>42>

43> ```bash theme={null}43> ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

44> curl -fsSL https://claude.ai/install.sh | bash44> curl -fsSL https://claude.ai/install.sh | bash

45> ```45> ```

46>46>


48>48>

49> **Windows PowerShell:**49> **Windows PowerShell:**

50>50>

51> ```powershell theme={null}51> ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

52> irm https://claude.ai/install.ps1 | iex52> irm https://claude.ai/install.ps1 | iex

53> ```53> ```

54>54>

55> **Windows CMD:**55> **Windows CMD:**

56>56>

57> ```batch theme={null}57> ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

58> curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd58> curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

59> ```59> ```

60>60>


72 72 

73> [tab] Homebrew73> [tab] Homebrew

74>74>

75> ```bash theme={null}75> ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

76> brew install --cask claude-code76> brew install --cask claude-code

77> ```77> ```

78>78>


84 84 

85> [tab] WinGet85> [tab] WinGet

86>86>

87> ```powershell theme={null}87> ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

88> winget install Anthropic.ClaudeCode88> winget install Anthropic.ClaudeCode

89> ```89> ```

90>90>


220}220}

221```221```

222 222 

223Con questa impostazione, un'installazione nativa si aggiorna alla versione stable anche quando quella versione è più vecchia della tua. Per evitare il downgrade, [fissa anche una versione minima](#pin-a-minimum-version).

224 

223Un modello appena lanciato può richiedere una versione di Claude Code più recente di quella fornita dal canale stable. Per eseguire subito il modello, passa al canale latest.225Un modello appena lanciato può richiedere una versione di Claude Code più recente di quella fornita dal canale stable. Per eseguire subito il modello, passa al canale latest.

224 226 

225Per le distribuzioni aziendali, potete applicare un canale di rilascio coerente in tutta l'organizzazione utilizzando [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md).227Per le distribuzioni aziendali, potete applicare un canale di rilascio coerente in tutta l'organizzazione utilizzando [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md).


230 232 

231### Fissare una versione minima233### Fissare una versione minima

232 234 

233L'impostazione `minimumVersion` stabilisce un limite inferiore. Gli aggiornamenti automatici in background e `claude update` rifiutano di installare qualsiasi versione al di sotto di questo valore, quindi il passaggio al canale `"stable"` non vi fa regredire se siete già su una build `"latest"` più recente.235Per spostare un'installazione nativa sul [canale di rilascio](#configure-release-channel) `"stable"` senza un downgrade, imposta [`minimumVersion`](https://code.claude.com/docs/it/settings-reference#minimumversion) sulla versione che stai eseguendo. Gli aggiornamenti automatici in background e `claude update` rifiutano di installare qualsiasi versione al di sotto del minimo.

236 

237Imposta il minimo in `/config` per far compilare a Claude Code la tua versione corrente, oppure nel tuo file di impostazioni per digitare il numero tu stesso:

234 238 

235Il passaggio da `"latest"` a `"stable"` tramite `/config` vi chiede di rimanere sulla versione corrente o di consentire il downgrade. Se scegliete di rimanere, viene impostato `minimumVersion` a quella versione. Il passaggio di nuovo a `"latest"` lo cancella.239* **In `/config`**: cambia **Auto-update channel** in stable, quindi seleziona **Stay on current version**. Se torni a latest in `/config`, Claude Code cancella il minimo.

240* **Nel tuo [file di impostazioni](https://code.claude.com/docs/it/settings.md)**: esegui `claude --version` nella tua shell e imposta `minimumVersion` sul numero all'inizio dell'output. Nella stessa modifica, imposta `autoUpdatesChannel` su `"stable"`.

236 241 

237Aggiungetelo al vostro [file settings.json](https://code.claude.com/docs/it/settings.md) per fissare un limite inferiore esplicitamente:242Questo `~/.claude/settings.json` passa a stable un'installazione alla versione 2.1.323:

238 243 

239```json theme={null}244```json theme={null}

240{245{

241 "autoUpdatesChannel": "stable",246 "autoUpdatesChannel": "stable",

242 "minimumVersion": "2.1.100"247 "minimumVersion": "2.1.323"

243}248}

244```249```

245 250 

246Nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), questo applica un minimo a livello di organizzazione che le impostazioni utente e di progetto non possono ignorare.251L'installazione rimane sulla 2.1.323 finché il canale stable non fornisce una versione più recente.

252 

253#### Impostare limiti di versione per la tua organizzazione

254 

255Nelle [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md), `minimumVersion` applica un minimo a livello di organizzazione che le impostazioni utente e di progetto non possono sovrascrivere.

247 256 

248Il pin `minimumVersion` vincola solo gli aggiornamenti. Per fare in modo che Claude Code rifiuti di avviarsi al di fuori di un intervallo di versioni, utilizzate invece le impostazioni gestite `requiredMinimumVersion` e `requiredMaximumVersion`. Gli aggiornamenti rispettano anche il limite `requiredMaximumVersion`. Consultate [`requiredMinimumVersion`](https://code.claude.com/docs/it/settings-reference#requiredminimumversion) e [`requiredMaximumVersion`](https://code.claude.com/docs/it/settings-reference#requiredmaximumversion).257Il pin `minimumVersion` vincola solo gli aggiornamenti. Per fare in modo che Claude Code rifiuti di avviarsi al di fuori di un intervallo di versioni, utilizzate invece le impostazioni gestite `requiredMinimumVersion` e `requiredMaximumVersion`. Gli aggiornamenti rispettano anche il limite `requiredMaximumVersion`. Consultate [`requiredMinimumVersion`](https://code.claude.com/docs/it/settings-reference#requiredminimumversion) e [`requiredMaximumVersion`](https://code.claude.com/docs/it/settings-reference#requiredmaximumversion).

249 258 

skills.md +4 −2

Details

22 22 

23Claude Code include un set di skill raggruppati, come `/doctor`, `/code-review`, `/batch`, `/debug`, `/loop`, e `/claude-api`. Gli skill raggruppati sono basati su prompt: forniscono a Claude istruzioni dettagliate e gli permettono di orchestrare il lavoro utilizzando i suoi strumenti. La maggior parte dei comandi built-in invece eseguono logica fissa direttamente.23Claude Code include un set di skill raggruppati, come `/doctor`, `/code-review`, `/batch`, `/debug`, `/loop`, e `/claude-api`. Gli skill raggruppati sono basati su prompt: forniscono a Claude istruzioni dettagliate e gli permettono di orchestrare il lavoro utilizzando i suoi strumenti. La maggior parte dei comandi built-in invece eseguono logica fissa direttamente.

24 24 

25Invochi una skill inclusa digitando `/` seguito dal nome della skill. Claude invoca automaticamente alcune skill incluse quando sono pertinenti; altre, tra cui [`/verify`](#run-and-verify-your-app), vengono eseguite solo quando le invochi tu.25Invochi una skill inclusa digitando `/` seguito dal nome della skill. Claude invoca automaticamente alcune skill incluse quando sono pertinenti.

26 26 

27La maggior parte degli skill raggruppati sono disponibili in ogni sessione. Alcuni dipendono da una funzionalità specifica: `/workflow-authoring`, ad esempio, è disponibile solo quando i [dynamic workflows](https://code.claude.com/docs/it/workflows.md) sono abilitati.27La maggior parte degli skill raggruppati sono disponibili in ogni sessione. Alcuni dipendono da una funzionalità specifica: `/workflow-authoring`, ad esempio, è disponibile solo quando i [dynamic workflows](https://code.claude.com/docs/it/workflows.md) sono abilitati.

28 28 


320 320 

321Se crei una directory delle skill di primo livello che non esisteva all'avvio della sessione, esegui [`/reload-skills`](https://code.claude.com/docs/it/commands#all-commands) per rilevare le skill che vi hai inserito. Claude Code non sta ancora monitorando quella directory, quindi esegui di nuovo `/reload-skills` dopo ogni modifica successiva lì.321Se crei una directory delle skill di primo livello che non esisteva all'avvio della sessione, esegui [`/reload-skills`](https://code.claude.com/docs/it/commands#all-commands) per rilevare le skill che vi hai inserito. Claude Code non sta ancora monitorando quella directory, quindi esegui di nuovo `/reload-skills` dopo ogni modifica successiva lì.

322 322 

323Il rilevamento delle modifiche in tempo reale copre solo il testo di `SKILL.md`. Per una cartella di skill che è anche un [plugin](https://code.claude.com/docs/it/plugins/loading.md#plugins-shared-through-a-repository), le modifiche a `hooks/`, `.mcp.json`, `agents/` e `output-styles/` richiedono `/reload-plugins` per avere effetto.323> [!NOTE]

324>

325> Il rilevamento delle modifiche in tempo reale copre il testo di `SKILL.md`. Per una cartella di skill che è anche un [plugin](https://code.claude.com/docs/it/plugins/loading.md#plugins-shared-through-a-repository), le modifiche a `.mcp.json`, `agents/` e `output-styles/` richiedono `/reload-plugins` per avere effetto. Anche le modifiche a `hooks/` lo richiedono, tranne il file del modulo di un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) quando [si ricarica da solo](https://code.claude.com/docs/it/env-vars.md).

324 326 

325### Rimuovere una skill327### Rimuovere una skill

326 328 

sub-agents.md +60 −43

Details

36>36>

37> Un agente veloce e di sola lettura ottimizzato per la ricerca e l'analisi delle basi di codice.37> Un agente veloce e di sola lettura ottimizzato per la ricerca e l'analisi delle basi di codice.

38>38>

39> * **Model**: il modello della conversazione principale. Quando la conversazione principale usa Fable, il modello di Explore dipende da come ti connetti:39> * **Model**: il modello della [conversazione principale](#which-model-a-nested-subagent-runs-on). Quando la conversazione principale usa Fable, Explore viene eseguito su Opus o resta su Fable, in base a come ti connetti.

40> * Con un abbonamento Claude, un account Anthropic Console o un [gateway LLM](https://code.claude.com/docs/it/llm-gateway) raggiunto tramite `ANTHROPIC_BASE_URL`, Explore viene eseguito sul modello Opus a cui si risolve l'[alias `opus`](https://code.claude.com/docs/it/model-config#model-aliases).40> * Con un abbonamento Claude, un account Anthropic Console o un [gateway LLM](https://code.claude.com/docs/it/llm-gateway) raggiunto tramite `ANTHROPIC_BASE_URL`, Explore viene eseguito sul modello Opus a cui si risolve l'[alias `opus`](https://code.claude.com/docs/it/model-config#model-aliases).

41> * Su Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, [Claude Platform su AWS](https://code.claude.com/docs/it/claude-platform-on-aws.md) o un [gateway delle app Claude](https://code.claude.com/docs/it/claude-apps-gateway), Explore resta sul modello della conversazione principale.41> * Su Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, [Claude Platform su AWS](https://code.claude.com/docs/it/claude-platform-on-aws.md) o un [gateway delle app Claude](https://code.claude.com/docs/it/claude-apps-gateway), Explore resta su Fable.

42> * **Tools**: strumenti di sola lettura; Write e Edit sono negati42> * **Tools**: strumenti di sola lettura; Write e Edit sono negati

43> * **Purpose**: scoperta di file, ricerca di codice, esplorazione del codebase43> * **Purpose**: scoperta di file, ricerca di codice, esplorazione del codebase

44>44>


52>52>

53> Un agente di ricerca utilizzato durante la [Plan Mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) per raccogliere contesto prima di presentare un piano.53> Un agente di ricerca utilizzato durante la [Plan Mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) per raccogliere contesto prima di presentare un piano.

54>54>

55> * **Model**: eredita dalla conversazione principale, a meno che non impostiate `CLAUDE_CODE_SUBAGENT_MODEL` e [lo forziate su ogni subagent](#run-every-subagent-on-one-model)55> * **Model**: eredita dalla [conversazione principale](#which-model-a-nested-subagent-runs-on), a meno che tu non imposti `CLAUDE_CODE_SUBAGENT_MODEL` e [lo forzi su ogni subagent](#run-every-subagent-on-one-model)

56> * **Tools**: strumenti di sola lettura; Write e Edit sono negati56> * **Tools**: strumenti di sola lettura; Write e Edit sono negati

57> * **Purpose**: ricerca della base di codice per la pianificazione57> * **Purpose**: ricerca nel codebase per la pianificazione

58>58>

59> Quando è in Plan Mode e Claude ha bisogno di comprendere la vostra base di codice, delega la ricerca al subagent Plan in modo che l'output dell'esplorazione rimanga in una finestra di contesto separata mentre la conversazione principale rimane di sola lettura.59> Quando è in Plan Mode e Claude ha bisogno di comprendere la vostra base di codice, delega la ricerca al subagent Plan in modo che l'output dell'esplorazione rimanga in una finestra di contesto separata mentre la conversazione principale rimane di sola lettura.

60 60 


62>62>

63> Un agente capace per attività complesse e multi-step che richiedono sia esplorazione che azione.63> Un agente capace per attività complesse e multi-step che richiedono sia esplorazione che azione.

64>64>

65> * **Model**: il modello [`CLAUDE_CODE_SUBAGENT_MODEL`](#choose-a-model) se lo impostate e niente assegna un modello in un altro modo, altrimenti il modello della conversazione principale; [Scegliere un modello](#choose-a-model) indica l'ordine completo, e [Eseguire ogni subagent su un modello](#run-every-subagent-on-one-model) mostra come fare in modo che la variabile sostituisca quelle fonti65> * **Model**: per impostazione predefinita il modello della conversazione principale, secondo l'[ordine dei modelli](#choose-a-model)

66> * **Tools**: ogni strumento [disponibile per i subagent](#available-tools)66> * **Tools**: ogni strumento [disponibile per i subagent](#available-tools)

67> * **Purpose**: ricerca complessa, operazioni multi-step, modifiche del codice67> * **Purpose**: ricerca complessa, operazioni multi-step, modifiche del codice

68>68>


346 346 

347### Scelga un modello347### Scelga un modello

348 348 

349Il campo `model` controlla quale modello utilizza il subagent:349Per impostazione predefinita, un subagent che definisci viene eseguito sullo stesso modello della conversazione che lo avvia. Per sceglierne tu il modello, imposta il campo [`model`](#supported-frontmatter-fields) nella sua definizione su uno di questi valori:

350 350 

351* **Alias modello**: usi uno degli alias disponibili: `sonnet`, `opus`, `haiku`, o `fable`351* **Alias del modello**: `sonnet`, `opus`, `haiku` o `fable`

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**: un valore accettato dal flag [`--model`](https://code.claude.com/docs/it/cli-reference#cli-flags), come `claude-opus-5-5` o `claude-sonnet-5`

353* **inherit**: usi lo stesso modello della conversazione principale353* **`inherit`**: il modello della conversazione principale, oppure il modello del subagent che lo genera nel caso di un [subagent annidato](#which-model-a-nested-subagent-runs-on)

354 354 

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:355Quando più di una fonte imposta un modello, Claude Code usa la prima in questo ordine:

356 356 

3571. Il parametro `model` per invocazione3571. Il parametro `model` della singola invocazione, che Claude può passare quando avvia il subagent. In una chiamata allo strumento Agent, il parametro accetta un alias del modello, non un ID modello completo né `inherit`.

3582. Il frontmatter `model` della definizione del subagent, dove `inherit` seleziona il modello della conversazione principale3582. Il campo `model` nella definizione del subagent, incluso `inherit`

3593. La variabile di ambiente [`CLAUDE_CODE_SUBAGENT_MODEL`](https://code.claude.com/docs/it/model-config#environment-variables), quando la imposta su un alias modello o ID modello3593. La variabile d'ambiente [`CLAUDE_CODE_SUBAGENT_MODEL`](https://code.claude.com/docs/it/model-config#environment-variables)

3604. Il modello della conversazione principale3604. Il modello della conversazione principale, oppure il modello del subagent che lo genera nel caso di un subagent annidato

361 361 

362Se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) installato imposta un modello nel suo hook [`agent.spawn`](https://code.claude.com/docs/it/plugins/mods/reference#subagents), Claude Code utilizza quel modello al posto del parametro della singola invocazione.362Se Claude ha passato un alias, il subagent mantiene quell'alias quando viene [ripreso o riceve un messaggio di follow-up](#resume-subagents). Se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) installato imposta un modello nel suo hook [`agent.spawn`](https://code.claude.com/docs/it/plugins/mods/reference#subagents), Claude Code utilizza quel modello al posto del parametro della singola invocazione.

363 

364In due casi, un alias di famiglia come `opus` nel parametro per invocazione o nel frontmatter si risolve al modello della conversazione principale invece della [versione a cui l'alias punta](https://code.claude.com/docs/it/model-config.md#model-aliases):

365 

366* **Il modello della conversazione principale appartiene a quella famiglia**: il subagent viene eseguito sul modello esatto della conversazione principale, incluso qualsiasi suffisso `[1m]`, quindi ottiene la stessa finestra di [contesto esteso](https://code.claude.com/docs/it/model-config.md#extended-context) della conversazione principale.

367* **Claude Code non può dire la famiglia del modello della conversazione principale, su [un provider diverso dall'API Anthropic](https://code.claude.com/docs/it/third-party-integrations.md)**: questo può accadere con un [ARN del profilo di inferenza dell'applicazione](https://code.claude.com/docs/it/amazon-bedrock.md#iam-configuration) su Amazon Bedrock che Claude Code non ha risolto a un modello di supporto. Questo caso copre solo l'alias `opus`, e non si applica quando imposta [`ANTHROPIC_DEFAULT_OPUS_MODEL`](https://code.claude.com/docs/it/model-config#environment-variables), poiché `opus` allora si risolve al modello che imposta.

368 

369Un alias in `CLAUDE_CODE_SUBAGENT_MODEL` si risolve sempre nella versione a cui punta l'alias, anche quando indica la famiglia della conversazione principale. Impostare la variabile su `inherit` equivale a lasciarla non impostata.

370 363 

371L'impostazione di `CLAUDE_CODE_SUBAGENT_MODEL` da sola non cambia il modello su cui vengono eseguiti i subagent Explore e Plan integrati. Per cambiarlo, consulti [Esegui ogni subagent su un modello](#run-every-subagent-on-one-model).364L'impostazione di `CLAUDE_CODE_SUBAGENT_MODEL` da sola non cambia il modello su cui vengono eseguiti i subagent Explore e Plan integrati. Per cambiarlo, consulti [Esegui ogni subagent su un modello](#run-every-subagent-on-one-model).

372 365 

373Prima di v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` veniva per primo in questo ordine e sostituiva sia il parametro per invocazione che il frontmatter, incluso `model: inherit`.366#### Su quale modello viene eseguito un subagent annidato

374 367 

375Claude Code controlla il parametro per invocazione, il frontmatter e i valori della variabile di ambiente rispetto alla lista di consentimento [`availableModels`](https://code.claude.com/docs/it/model-config#restrict-model-selection) della sua organizzazione. Per un valore bloccato, sostituisce un altro modello:368Per impostazione predefinita, un [subagent annidato](#let-subagents-spawn-their-own-subagents) che definisci viene eseguito sul modello del suo genitore, il subagent che lo ha generato. Per eseguire il subagent annidato su un altro modello, imposta il suo campo `model` su quel modello.

376 369 

377* Quando il valore bloccato è un alias di famiglia come `opus`, Claude Code esegue il subagent sulla versione più recente di quella famiglia che la lista di consentimento consente, seguendo le stesse [regole di sostituzione e ambito del provider](https://code.claude.com/docs/it/model-config.md#restrict-model-selection) di `/model`. Prima di v2.1.222, Claude Code eseguiva il subagent sul modello ereditato anche per un alias di famiglia bloccato.370Ad esempio, supponi che la tua conversazione principale venga eseguita su Opus e avvii un subagent revisore su Haiku. Per impostazione predefinita, questi subagent vengono eseguiti su Haiku, non su Opus, quando è il revisore a generarli:

378* Per qualsiasi altro valore bloccato, su provider dove quella sostituzione non opera, o quando la lista di consentimento non consente alcuna versione della famiglia, Claude Code esegue il subagent sul modello ereditato. Se imposta `CLAUDE_CODE_SUBAGENT_MODEL`, Claude Code prova prima quel modello, secondo le stesse regole.

379 371 

380Nelle sessioni interattive, Claude Code mostra un avviso che nomina il modello richiesto e il modello su cui viene eseguito il subagent, per entrambe le sostituzioni.372* Un subagent con `model: inherit` o senza campo `model`

373* I subagent integrati Explore, Plan e general-purpose

374* Un [fork](#fork-the-current-conversation)

381 375 

382Per verificare su quale modello è in esecuzione un subagent, esegui [`/tasks`](https://code.claude.com/docs/it/commands). Claude Code indica il modello nella riga del subagent e aggiunge l'eventuale [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) impostato per quel subagent. Richiede Claude Code v2.1.242 o successivo.376In plan mode, questi subagent vengono eseguiti su Opus se imposti il modello della sessione su [`opusplan`](https://code.claude.com/docs/it/model-config#opusplan-model-setting), oppure su Sonnet se lo imposti su `haiku`.

383 377 

384Un parametro `model` della singola invocazione si applica anche quando il subagent viene [ripreso o riceve un messaggio di follow-up](#resume-subagents), quindi il subagent rimane su quel modello.378#### Verificare il modello di un subagent

385 379 

386A partire da v2.1.198, i subagent ereditano anche la configurazione [extended thinking](https://code.claude.com/docs/it/model-config.md#extended-thinking) della conversazione principale: se il thinking è attivo nella sua sessione, è attivo per il subagent, e se è spento, rimane spento. Non c'è un'impostazione di thinking per subagent. Prima di v2.1.198, i subagent venivano eseguiti con extended thinking disabilitato indipendentemente dall'impostazione della conversazione principale.380Per verificare su quale modello è in esecuzione un subagent, esegui [`/tasks`](https://code.claude.com/docs/it/commands). Claude Code indica il modello nella riga del subagent e aggiunge l'eventuale [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) impostato per quel subagent. Richiede Claude Code v2.1.242 o successivo.

387 381 

388#### Esegui ogni subagent su un modello382#### Esegui ogni subagent su un modello

389 383 

390`CLAUDE_CODE_SUBAGENT_MODEL` è un predefinito, quindi la definizione di un subagent o un modello che Claude passa ha comunque la precedenza su di esso. Per applicare un modello a ogni subagent, [compagno di squadra](https://code.claude.com/docs/it/agent-teams.md#specify-teammates-and-models), e [agente workflow](https://code.claude.com/docs/it/workflows.md), imposti anche `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` su `1`. Richiede Claude Code v2.1.257 o successivo.384Per applicare un unico modello a ogni subagent, [compagno di squadra](https://code.claude.com/docs/it/agent-teams.md#specify-teammates-and-models) e [agente di workflow](https://code.claude.com/docs/it/workflows.md), imposta `CLAUDE_CODE_SUBAGENT_MODEL` su quel modello e `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` su `1`. Richiede Claude Code v2.1.257 o successivo.

391 

392* Se imposta entrambe le variabili, i subagent vengono eseguiti sul modello in `CLAUDE_CODE_SUBAGENT_MODEL`.

393* Se imposti solo `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, i subagent vengono eseguiti sul modello della conversazione principale, tranne il subagent integrato Explore, che viene eseguito sul [modello indicato per esso in Subagent integrati](#built-in-subagents).

394 385 

395Ad esempio, per eseguire ogni subagent su Haiku, imposti entrambe le variabili nel blocco `env` di un [file di impostazioni](https://code.claude.com/docs/it/settings.md):386Ad esempio, per eseguire ogni subagent su Haiku, imposti entrambe le variabili nel blocco `env` di un [file di impostazioni](https://code.claude.com/docs/it/settings.md):

396 387 


405 396 

406Per controllare che l'impostazione abbia avuto effetto, esegua [`/tasks`](https://code.claude.com/docs/it/commands) mentre un subagent è in esecuzione. La riga del subagent mostra il modello su cui viene eseguito.397Per controllare che l'impostazione abbia avuto effetto, esegua [`/tasks`](https://code.claude.com/docs/it/commands) mentre un subagent è in esecuzione. La riga del subagent mostra il modello su cui viene eseguito.

407 398 

408Mentre `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` è [attiva](https://code.claude.com/docs/it/env-vars.md), Claude Code ignora il campo `model` nelle definizioni dei subagent, e Claude non può passare un modello quando avvia un subagent. Questi subagent vengono comunque eseguiti sul modello della conversazione principale:399Mentre `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` è [attiva](https://code.claude.com/docs/it/env-vars.md), Claude Code ignora il campo `model` nelle definizioni dei subagent, e Claude non può passare un modello quando avvia un subagent. I seguenti subagent vengono comunque eseguiti sul modello della loro conversazione genitore:

409 400 

410* Un [fork](#fork-the-current-conversation)401* Un [fork](#fork-the-current-conversation)

411* Una [skill che viene eseguita in un subagent](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent) con `model: inherit`402* Una [skill che viene eseguita in un subagent](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent) con `model: inherit`

412 403 

404Se imposti solo `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, i subagent vengono eseguiti sul modello della conversazione principale, tranne il subagent integrato Explore, che viene eseguito sul [modello indicato per esso in Subagent integrati](#built-in-subagents).

405 

406#### Quale versione seleziona un alias del modello

407 

408Per impostazione predefinita, un subagent con un alias del modello viene eseguito sulla [versione a cui punta l'alias](https://code.claude.com/docs/it/model-config.md#model-aliases). Con un alias di famiglia come `opus` nel campo `model` o nel parametro della singola invocazione, il subagent viene eseguito sul modello della sua conversazione genitore in due casi:

409 

410* **Stessa famiglia**: ad esempio, se la tua conversazione principale viene eseguita su `claude-opus-4-7`, anche un subagent con `model: opus` viene eseguito su quella versione. Per eseguire un'altra versione, imposta un ID modello completo nel campo `model`.

411* **Famiglia sconosciuta**: Claude Code non riesce a determinare la famiglia del modello genitore, ad esempio con un ARN di Amazon Bedrock che [non riesce a risolvere](https://code.claude.com/docs/it/amazon-bedrock.md#iam-configuration). Questo caso si applica solo all'alias `opus` su [un provider diverso dall'API Anthropic](https://code.claude.com/docs/it/third-party-integrations.md). Per scegliere la versione di Opus, imposta [`ANTHROPIC_DEFAULT_OPUS_MODEL`](https://code.claude.com/docs/it/model-config#environment-variables).

412 

413#### Quando un'allowlist blocca il modello di un subagent

414 

415Se l'allowlist [`availableModels`](https://code.claude.com/docs/it/model-config#restrict-model-selection) della tua organizzazione blocca il modello impostato per un subagent, il subagent viene eseguito sul primo di questi che si applica:

416 

4171. Per un alias di famiglia bloccato, la versione più recente consentita di quella famiglia, sui [provider che supportano questa sostituzione](https://code.claude.com/docs/it/model-config.md#restrict-model-selection)

4182. Il modello in `CLAUDE_CODE_SUBAGENT_MODEL`, se lo imposti, secondo queste stesse regole

4193. Il modello della conversazione principale, oppure il modello del subagent che lo genera nel caso di un subagent annidato

420 

421Per un subagent di primo livello in una sessione interattiva, un avviso indica il modello richiesto e il suo sostituto. Per eseguire un modello specifico, cambia il valore bloccato con uno consentito dall'allowlist.

422 

423### Ragionamento esteso nei subagent

424 

425I subagent ereditano la configurazione del [ragionamento esteso](https://code.claude.com/docs/it/model-config.md#extended-thinking) della tua conversazione principale. Non esiste un'impostazione di ragionamento per singolo subagent.

426 

413### Scegliere un livello di sforzo427### Scegliere un livello di sforzo

414 428 

415Per eseguire un subagent con un proprio [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level), imposta il campo [`effort`](#supported-frontmatter-fields) nella sua definizione.429Per eseguire un subagent con un proprio [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level), imposta il campo [`effort`](#supported-frontmatter-fields) nella sua definizione.


426 440 

427#### Strumenti disponibili441#### Strumenti disponibili

428 442 

429I subagent ereditano gli [strumenti integrati](https://code.claude.com/docs/it/tools-reference.md) e gli strumenti MCP disponibili nella conversazione principale, ristretti da due filtri: il primo rimuove un breve elenco di strumenti da ogni subagent, e il secondo riduce il set di strumenti integrati per i subagent che vengono eseguiti in [background](#run-subagents-in-foreground-or-background), che è il predefinito. Su macOS, Linux e WSL, un subagent può anche ricevere gli strumenti Glob e Grep quando la conversazione principale non li ha, come descritto in [Comportamento dello strumento Glob](https://code.claude.com/docs/it/tools-reference.md#glob-tool-behavior). [Forks](#fork-the-current-conversation) saltano entrambi i filtri e ricevono il pool di strumenti esatto della conversazione principale. Il primo filtro rimuove questi strumenti, anche quando elencati nel campo `tools`:443I subagent ereditano gli [strumenti integrati](https://code.claude.com/docs/it/tools-reference.md) e gli strumenti MCP disponibili nella conversazione principale, ristretti da due filtri. Il primo rimuove un breve elenco di strumenti da ogni subagent. Il secondo riduce l'insieme di strumenti integrati per i subagent eseguiti in [background](#run-subagents-in-foreground-or-background), che è l'impostazione predefinita.

444 

445Su macOS, Linux e WSL, un subagent può anche ricevere gli strumenti Glob e Grep quando la conversazione principale non li ha, come descritto in [Comportamento dello strumento Glob](https://code.claude.com/docs/it/tools-reference.md#glob-tool-behavior). I [fork](#fork-the-current-conversation) saltano entrambi i filtri e ricevono esattamente gli strumenti della loro conversazione genitore. Il primo filtro rimuove questi strumenti, anche quando sono elencati nel campo `tools`:

430 446 

431* `Agent`, quando il subagent è al [limite di profondità](#let-subagents-spawn-their-own-subagents); in un [fork](#fork-the-current-conversation) lo strumento rimane elencato ma restituisce un errore invece di generare447* `Agent`, quando il subagent è al [limite di profondità](#let-subagents-spawn-their-own-subagents); in un [fork](#fork-the-current-conversation) lo strumento rimane elencato ma restituisce un errore invece di generare

432* `AskUserQuestion`448* `AskUserQuestion`


1077 1093 

1078Con questo valore, i tuoi subagent possono delegare a un secondo livello di subagent propri, e quel secondo livello non può delegare ulteriormente. Imposta `1` per disattivare l'annidamento.1094Con questo valore, i tuoi subagent possono delegare a un secondo livello di subagent propri, e quel secondo livello non può delegare ulteriormente. Imposta `1` per disattivare l'annidamento.

1079 1095 

1080Un subagent annidato si configura nello stesso modo di uno di primo livello e viene risolto dagli stessi [ambiti](#choose-the-subagent-scope). Per impedire a un singolo subagent di avviarne altri mentre l'annidamento è attivo, come un revisore che deve restare in sola lettura, ometti `Agent` dal suo elenco [`tools`](#available-tools) oppure aggiungilo a `disallowedTools`.1096Definisci un subagent annidato negli stessi [ambiti](#choose-the-subagent-scope) di uno di primo livello. Per impostazione predefinita, un subagent annidato che definisci viene eseguito sul [modello del subagent che lo avvia](#which-model-a-nested-subagent-runs-on). Per impedire a un singolo subagent di avviarne altri mentre l'annidamento è attivo, come un revisore che deve restare in sola lettura, ometti `Agent` dal suo elenco [`tools`](#available-tools) oppure aggiungilo a `disallowedTools`.

1081 1097 

1082Nel 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`.1098Nel 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`.

1083 1099 


1221>1237>

1222> Quando [la vista agenti è disattivata](https://code.claude.com/docs/it/agent-view.md#turn-off-agent-view), `/subtask` non è disponibile e `/fork` avvia invece il subagent fork; altrimenti `/fork` copia l'intera sessione in una nuova [sessione in background](https://code.claude.com/docs/it/agent-view.md#from-inside-a-session).1238> Quando [la vista agenti è disattivata](https://code.claude.com/docs/it/agent-view.md#turn-off-agent-view), `/subtask` non è disponibile e `/fork` avvia invece il subagent fork; altrimenti `/fork` copia l'intera sessione in una nuova [sessione in background](https://code.claude.com/docs/it/agent-view.md#from-inside-a-session).

1223 1239 

1224Un fork è un subagent che eredita l'intera conversazione fino a quel momento invece di partire da zero. In questo modo viene meno l'isolamento dell'input che i subagent altrimenti forniscono: un fork vede lo stesso prompt di sistema, gli stessi strumenti, lo stesso modello e la stessa cronologia dei messaggi della sessione principale, quindi puoi affidargli un'attività secondaria senza dover spiegare di nuovo la situazione. Le chiamate agli strumenti del fork restano comunque fuori dalla tua conversazione e torna solo il suo risultato finale, così la tua finestra di contesto principale rimane pulita. Usa un fork quando qualsiasi altro subagent richiederebbe troppo contesto per essere utile, oppure quando vuoi provare diversi approcci in parallelo partendo dallo stesso punto.1240Un fork è un subagent che eredita l'intera conversazione fino a quel momento invece di partire da zero. Usa un fork quando qualsiasi altro subagent richiederebbe troppo contesto per essere utile, oppure quando vuoi provare diversi approcci in parallelo partendo dallo stesso punto.

1241 

1242* **Input**: un fork vede lo stesso prompt di sistema, gli stessi strumenti, lo stesso [modello](#which-model-a-nested-subagent-runs-on) e la stessa cronologia dei messaggi della sua conversazione padre

1243* **Output**: le chiamate agli strumenti del fork restano fuori dalla sua conversazione padre e torna solo il suo risultato finale

1225 1244 

1226Claude può avviare un fork autonomamente mentre la modalità fork è attiva, come lo è per impostazione predefinita. Per interrompere i fork, consulta [Disattiva la modalità fork](#turn-fork-mode-on-or-off).1245Claude può avviare un fork autonomamente mentre la modalità fork è attiva, come lo è per impostazione predefinita. Per interrompere i fork, consulta [Disattiva la modalità fork](#turn-fork-mode-on-or-off).

1227 1246 


1257 1276 

1258### In cosa i fork differiscono dagli altri subagent1277### In cosa i fork differiscono dagli altri subagent

1259 1278 

1260Un fork eredita tutto ciò che la sessione principale ha nel momento in cui viene generato. Qualsiasi altro subagent parte da zero dalla sua definizione.

1261 

1262| | Fork | Subagent non fork |1279| | Fork | Subagent non fork |

1263| :- | :- | :- |1280| :- | :- | :- |

1264| Contesto | Cronologia completa della conversazione | Contesto nuovo con il prompt che passi |1281| Contesto | Cronologia completa della conversazione | Contesto nuovo con il prompt che passi |

1265| Prompt di sistema e strumenti | Uguali alla sessione principale | Dal [file di definizione](#write-subagent-files) del subagent, [filtrati per le esecuzioni in background](#available-tools) |1282| Prompt di sistema e strumenti | Uguali alla conversazione padre | Dal [file di definizione](#write-subagent-files) del subagent, [filtrati per le esecuzioni in background](#available-tools) |

1266| Modello | Uguale alla sessione principale | Dal campo `model` del subagent |1283| Modello | Uguale alla [conversazione padre](#which-model-a-nested-subagent-runs-on) | Segue l'[ordine di scelta del modello dei subagent](#choose-a-model) |

1267| Cache del prompt | Condivisa con la sessione principale | Cache separata |1284| Cache del prompt | Condivisa con la conversazione padre | Cache separata |

1268 1285 

1269Poiché il prompt di sistema e le definizioni degli strumenti di un fork sono identici a quelli del genitore, la sua prima richiesta riutilizza la [cache del prompt](https://code.claude.com/docs/it/prompt-caching.md#subagents-and-the-cache) del genitore. Grazie a questo riutilizzo, un fork costa meno di un subagent nuovo per le attività che richiedono lo stesso contesto.1286Poiché il prompt di sistema e le definizioni degli strumenti di un fork sono identici a quelli del genitore, la sua prima richiesta riutilizza la [cache del prompt](https://code.claude.com/docs/it/prompt-caching.md#subagents-and-the-cache) del genitore. Grazie a questo riutilizzo, un fork costa meno di un subagent nuovo per le attività che richiedono lo stesso contesto.

1270 1287 

workflows.md +1 −1

Details

454* Controlla `/model` prima di un'esecuzione di grandi dimensioni se di solito passi a un modello più piccolo per il lavoro di routine454* Controlla `/model` prima di un'esecuzione di grandi dimensioni se di solito passi a un modello più piccolo per il lavoro di routine

455* Chiedi a Claude di utilizzare un modello più piccolo per le fasi che non hanno bisogno di quello più forte quando descrivi il compito455* Chiedi a Claude di utilizzare un modello più piccolo per le fasi che non hanno bisogno di quello più forte quando descrivi il compito

456 456 

457Quando l'[allowlist `availableModels`](https://code.claude.com/docs/it/model-config#restrict-model-selection) della tua organizzazione blocca un modello che lo script richiede per un agente, quell'agente viene eseguito su un modello sostituito invece, seguendo le stesse [regole di sostituzione dei subagent](https://code.claude.com/docs/it/sub-agents.md#choose-a-model).457Quando l'[allowlist `availableModels`](https://code.claude.com/docs/it/model-config#restrict-model-selection) della tua organizzazione blocca un modello che lo script richiede per un agente, quell'agente viene eseguito su un modello sostituito invece, seguendo le stesse [regole di sostituzione dei subagent](https://code.claude.com/docs/it/sub-agents.md#when-an-allowlist-blocks-a-subagent-model).

458 458 

459### Impostare una linea guida di dimensione459### Impostare una linea guida di dimensione

460 460 

worktrees.md +5 −2

Details

232 232 

233Con 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:233Con 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:

234 234 

235* Non ha modifiche non committate o file non tracciati.235* La [sandbox](https://code.claude.com/docs/it/sandboxing.md#filesystem-isolation) non sta limitando le scritture di file nella tua sessione, e né i file di impostazioni `.claude` del worktree né quelli del checkout principale abilitano la sandbox.

236* Il worktree non ha modifiche non committate né file non tracciati.

236* È ancora sul branch che Claude Code ha creato per esso.237* È ancora sul branch che Claude Code ha creato per esso.

237* Non ha commit propri, o la sua pull request o merge request è stata unita e il suo branch remoto è stato eliminato.238* Non ha commit propri, o la sua pull request o merge request è stata unita e il suo branch remoto è stato eliminato.

238 239 


240 241 

241In ogni altro caso, Claude Code riapre il worktree al suo vecchio tip:242In ogni altro caso, Claude Code riapre il worktree al suo vecchio tip:

242 243 

243* Il worktree fallisce una qualsiasi delle condizioni.244* Il worktree o la sessione non soddisfa una qualsiasi delle condizioni.

244* Claude Code non può verificare lo stato del worktree.245* Claude Code non può verificare lo stato del worktree.

245* `worktree.baseRef` è `"head"`.246* `worktree.baseRef` è `"head"`.

246* Il nome è un riferimento a una pull request o merge request.247* Il nome è un riferimento a una pull request o merge request.

247 248 

249Se usi la sandbox con la base `"fresh"`, esegui `git fetch origin`, poi passa un nuovo nome a `--worktree` per partire dal branch predefinito più recente.

250 

248### Sostituire la creazione del worktree con un hook251### Sostituire la creazione del worktree con un hook

249 252 

250Configurate 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).253Configurate 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).