SpyBara
Go Premium

Documentation 2026-10-25 23:58 UTC to 2026-10-26 22:57 UTC

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

admin-setup.md +1 −1

Details

93| [Sandboxing](https://code.claude.com/docs/it/sandboxing.md) | Isolamento del filesystem e della rete a livello di sistema operativo con allowlist di domini | `sandbox.enabled`, `sandbox.network.allowedDomains` |93| [Sandboxing](https://code.claude.com/docs/it/sandboxing.md) | Isolamento del filesystem e della rete a livello di sistema operativo con allowlist di domini | `sandbox.enabled`, `sandbox.network.allowedDomains` |

94| [Managed policy CLAUDE.md](https://code.claude.com/docs/it/memory.md#deploy-organization-wide-claude-md) | Indicazioni comportamentali a livello di organizzazione per Claude, anziché una regola applicata dal client | File nel percorso della policy gestita |94| [Managed policy CLAUDE.md](https://code.claude.com/docs/it/memory.md#deploy-organization-wide-claude-md) | Indicazioni comportamentali a livello di organizzazione per Claude, anziché una regola applicata dal client | File nel percorso della policy gestita |

95| [MCP server control](https://code.claude.com/docs/it/managed-mcp.md) | Limitare quali server MCP gli utenti possono aggiungere o connettere, distribuire un set fisso, o fornire server remoti a ogni utente insieme ai loro | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, o un file `managed-mcp.json` distribuito |95| [MCP server control](https://code.claude.com/docs/it/managed-mcp.md) | Limitare quali server MCP gli utenti possono aggiungere o connettere, distribuire un set fisso, o fornire server remoti a ogni utente insieme ai loro | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, o un file `managed-mcp.json` distribuito |

96| [Plugin marketplace control](https://code.claude.com/docs/it/plugins/org.md#restrict-what-users-can-install) | Limitare quali fonti di marketplace gli utenti possono aggiungere e installare, rifiutare i flag CLI che caricano plugin, agent e server MCP per una singola esecuzione, bloccare le [fonti di plugin `command`](https://code.claude.com/docs/it/plugins/marketplace-reference#command-plugin-source), e allowlist quali plugin dei marketplace possono essere suggeriti | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |96| [Plugin marketplace control](https://code.claude.com/docs/it/plugins/org.md#restrict-what-users-can-install) | Limitare quali fonti di marketplace gli utenti possono aggiungere e da quali possono installare, e rifiutare i flag CLI che caricano in sideload plugin, agenti e server MCP per una singola esecuzione. Bloccare le [fonti di plugin `command`](https://code.claude.com/docs/it/plugins/marketplace-reference#command-plugin-source) e definire un'allowlist dei marketplace i cui plugin possono essere suggeriti nel terminale | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |

97| [Customization lockdown](https://code.claude.com/docs/it/settings-reference.md#strictpluginonlycustomization) | Bloccare skills, agent, hook e server MCP da fonti utente e progetto, in modo che possano provenire solo da plugin o impostazioni gestite. Bloccare le skills interrompe anche la sincronizzazione dei [skills che i tuoi sviluppatori abilitano su claude.ai](https://code.claude.com/docs/it/skills.md#where-synced-skills-load) | `strictPluginOnlyCustomization` |97| [Customization lockdown](https://code.claude.com/docs/it/settings-reference.md#strictpluginonlycustomization) | Bloccare skills, agent, hook e server MCP da fonti utente e progetto, in modo che possano provenire solo da plugin o impostazioni gestite. Bloccare le skills interrompe anche la sincronizzazione dei [skills che i tuoi sviluppatori abilitano su claude.ai](https://code.claude.com/docs/it/skills.md#where-synced-skills-load) | `strictPluginOnlyCustomization` |

98| [Disable claude.ai sync](https://code.claude.com/docs/it/settings-reference.md#syncclaudeaiskills) | Impedire a Claude Code di caricare i [skills](https://code.claude.com/docs/it/skills.md#how-synced-skills-behave) e i [plugin](https://code.claude.com/docs/it/plugins/loading.md#synced-plugins) che i tuoi sviluppatori abilitano su claude.ai. Se disattivi Skills per la tua organizzazione su claude.ai, Claude Code interrompe la sincronizzazione di entrambi, e su v2.1.273 o successivo rimuove anche quelli già sincronizzati. Per interrompere uno dei due senza disattivare Skills, imposta la sua chiave su `false` nelle impostazioni gestite | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |98| [Disable claude.ai sync](https://code.claude.com/docs/it/settings-reference.md#syncclaudeaiskills) | Impedire a Claude Code di caricare i [skills](https://code.claude.com/docs/it/skills.md#how-synced-skills-behave) e i [plugin](https://code.claude.com/docs/it/plugins/loading.md#synced-plugins) che i tuoi sviluppatori abilitano su claude.ai. Se disattivi Skills per la tua organizzazione su claude.ai, Claude Code interrompe la sincronizzazione di entrambi, e su v2.1.273 o successivo rimuove anche quelli già sincronizzati. Per interrompere uno dei due senza disattivare Skills, imposta la sua chiave su `false` nelle impostazioni gestite | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

99| [Hook restrictions](https://code.claude.com/docs/it/settings-reference.md#allowmanagedhooksonly) | Limitare quali hook vengono eseguiti e limitare gli URL degli hook HTTP; consulta [cosa viene eseguito sotto `allowManagedHooksOnly`](https://code.claude.com/docs/it/settings-reference#what-runs-under-allowmanagedhooksonly) per l'elenco completo degli effetti | `allowManagedHooksOnly`, `allowedHttpHookUrls` |99| [Hook restrictions](https://code.claude.com/docs/it/settings-reference.md#allowmanagedhooksonly) | Limitare quali hook vengono eseguiti e limitare gli URL degli hook HTTP; consulta [cosa viene eseguito sotto `allowManagedHooksOnly`](https://code.claude.com/docs/it/settings-reference#what-runs-under-allowmanagedhooksonly) per l'elenco completo degli effetti | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

Details

233| `"default"` | Le chiamate agli strumenti che richiedono approvazione e non sono coperte da regole di consentimento attivano il vostro callback `canUseTool`; nessun callback significa negare | Applicazioni interattive con un callback di approvazione personalizzato |233| `"default"` | Le chiamate agli strumenti che richiedono approvazione e non sono coperte da regole di consentimento attivano il vostro callback `canUseTool`; nessun callback significa negare | Applicazioni interattive con un callback di approvazione personalizzato |

234| `"acceptEdits"` | Approva automaticamente le modifiche ai file e i comandi comuni del filesystem (`mkdir`, `touch`, `mv`, `cp`, ecc.); altri comandi Bash seguono le regole predefinite | Fidate delle modifiche di Claude e volete un'iterazione più veloce, ad esempio durante la prototipazione o quando lavorate in una directory isolata |234| `"acceptEdits"` | Approva automaticamente le modifiche ai file e i comandi comuni del filesystem (`mkdir`, `touch`, `mv`, `cp`, ecc.); altri comandi Bash seguono le regole predefinite | Fidate delle modifiche di Claude e volete un'iterazione più veloce, ad esempio durante la prototipazione o quando lavorate in una directory isolata |

235| `"plan"` | Claude esplora e pianifica senza modificare i vostri file sorgente; le modifiche ai file non vengono mai approvate automaticamente e vengono richieste tramite il vostro callback `canUseTool` | Volete che Claude proponga modifiche senza eseguirle, ad esempio durante la revisione del codice o quando dovete approvare le modifiche prima che vengano apportate |235| `"plan"` | Claude esplora e pianifica senza modificare i vostri file sorgente; le modifiche ai file non vengono mai approvate automaticamente e vengono richieste tramite il vostro callback `canUseTool` | Volete che Claude proponga modifiche senza eseguirle, ad esempio durante la revisione del codice o quando dovete approvare le modifiche prima che vengano apportate |

236| `"dontAsk"` | Non chiede mai. Gli strumenti pre-approvati da [regole di permesso](https://code.claude.com/docs/it/settings-reference.md#permission-settings) vengono eseguiti, e così anche le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle tue directory di lavoro. Ogni chiamata che altrimenti richiederebbe conferma viene negata, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). `AskUserQuestion`, gli strumenti connettore [impostati dalla tua organizzazione su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti MCP contrassegnati [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool) e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths) vengono negati anche se li hai consentiti | Vuoi una superficie di strumenti fissa ed esplicita per un agente headless e preferisci un rifiuto esplicito rispetto a un affidamento silenzioso all'assenza di `canUseTool` |236| `"dontAsk"` | Non chiede mai. Gli strumenti pre-approvati da [regole di permesso](https://code.claude.com/docs/it/settings-reference.md#permission-settings) vengono eseguiti, e così anche le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle tue directory di lavoro. Ogni chiamata che altrimenti richiederebbe conferma viene negata, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Alcune chiamate, come le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths), vengono negate anche se le hai consentite. Per l'elenco, consulta [Modalità Don't ask](https://code.claude.com/docs/it/agent-sdk/permissions.md#don’t-ask-mode-dontask) | Agenti headless senza nessuno che approvi le chiamate |

237| `"auto"` | Utilizza un classificatore di modello per esaminare azioni come comandi shell e richieste di rete, consentendo o bloccando ognuna che esamina. Vedere [Modalità Auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per disponibilità e ordine di decisione | Agenti autonomi che desiderano ancora protezioni di sicurezza sull'utilizzo degli strumenti |237| `"auto"` | Utilizza un classificatore di modello per esaminare azioni come comandi shell e richieste di rete, consentendo o bloccando ognuna che esamina. Vedere [Modalità Auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per disponibilità e ordine di decisione | Agenti autonomi che desiderano ancora protezioni di sicurezza sull'utilizzo degli strumenti |

238| `"bypassPermissions"` | Esegue tutti gli strumenti consentiti senza chiedere, tranne gli strumenti corrispondenti a una regola [`ask`](https://code.claude.com/docs/it/settings-reference#permission-settings) esplicita, strumenti connettore [impostati dalla vostra organizzazione su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools) e strumenti che richiedono l'interazione dell'utente. Le [protezioni di messaggistica tra sessioni](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) si applicano ancora. Vedere [Come vengono valutate le autorizzazioni](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated) per l'ordine di precedenza. In TypeScript SDK, richiede anche `allowDangerouslySkipPermissions: true` in `options`. Non può essere utilizzato quando si esegue come root su Unix. Utilizzare solo in ambienti isolati dove le azioni dell'agente non possono influenzare i sistemi che vi interessano | CI, container o altri ambienti isolati |238| `"bypassPermissions"` | Esegue le chiamate agli strumenti senza chiedere approvazione, incluse le chiamate a strumenti che non hai elencato in `allowedTools`. Alcune chiamate vanno comunque al tuo callback `canUseTool`, elencate in [Modalità bypass permissions](https://code.claude.com/docs/it/agent-sdk/permissions.md#bypass-permissions-mode-bypasspermissions). Nel TypeScript SDK, richiede anche `allowDangerouslySkipPermissions: true` in `options`. Non può essere utilizzata quando si esegue come root su Unix. Utilizzala solo in ambienti isolati dove le azioni dell'agente non possono influenzare i sistemi che ti interessano | CI, container o altri ambienti isolati |

239 239 

240Per le applicazioni interattive, utilizzate `"default"` con un callback di approvazione dello strumento per visualizzare i prompt di approvazione. Per gli agenti autonomi su una macchina di sviluppo, `"acceptEdits"` approva automaticamente le modifiche ai file e i comandi comuni del filesystem (`mkdir`, `touch`, `mv`, `cp`, ecc.) mentre ancora limita altri comandi `Bash` dietro le regole di consentimento. Riservate `"bypassPermissions"` per CI, container o altri ambienti isolati. Vedere [Autorizzazioni](https://code.claude.com/docs/it/agent-sdk/permissions.md) per i dettagli completi.240Per le applicazioni interattive, utilizzate `"default"` con un callback di approvazione dello strumento per visualizzare i prompt di approvazione. Per gli agenti autonomi su una macchina di sviluppo, `"acceptEdits"` approva automaticamente le modifiche ai file e i comandi comuni del filesystem (`mkdir`, `touch`, `mv`, `cp`, ecc.) mentre ancora limita altri comandi `Bash` dietro le regole di consentimento. Riservate `"bypassPermissions"` per CI, container o altri ambienti isolati. Vedere [Autorizzazioni](https://code.claude.com/docs/it/agent-sdk/permissions.md) per i dettagli completi.

241 241 

Details

16| Rendere un parametro facoltativo | Dichiaralo facoltativo nello schema e applica il valore predefinito nell'handler. Vedi [Rendere un parametro facoltativo](#make-a-parameter-optional). |16| Rendere un parametro facoltativo | Dichiaralo facoltativo nello schema e applica il valore predefinito nell'handler. Vedi [Rendere un parametro facoltativo](#make-a-parameter-optional). |

17| Registrare uno strumento con Claude | Avvolgi in `create_sdk_mcp_server` / `createSdkMcpServer` e passa a `mcpServers` in `query()`. Vedi [Chiamare uno strumento personalizzato](#call-a-custom-tool). |17| Registrare uno strumento con Claude | Avvolgi in `create_sdk_mcp_server` / `createSdkMcpServer` e passa a `mcpServers` in `query()`. Vedi [Chiamare uno strumento personalizzato](#call-a-custom-tool). |

18| Pre-approvare uno strumento | Aggiungi ai tuoi strumenti consentiti. Vedi [Configurare gli strumenti consentiti](#configure-allowed-tools). |18| Pre-approvare uno strumento | Aggiungi ai tuoi strumenti consentiti. Vedi [Configurare gli strumenti consentiti](#configure-allowed-tools). |

19| Richiedere l'approvazione per le chiamate a uno strumento, o bloccare lo strumento | Nell'SDK TypeScript, aggiungi una `permission_policy` per lo strumento all'oggetto di configurazione restituito da `createSdkMcpServer()`. Vedi [Richiedere l'approvazione per strumenti specifici](#require-approval-for-specific-tools). |

19| Rimuovere uno strumento integrato dal contesto di Claude | Passa un array `tools` elencando solo gli strumenti integrati che desideri. Vedi [Configurare gli strumenti consentiti](#configure-allowed-tools). |20| Rimuovere uno strumento integrato dal contesto di Claude | Passa un array `tools` elencando solo gli strumenti integrati che desideri. Vedi [Configurare gli strumenti consentiti](#configure-allowed-tools). |

20| Permettere a Claude di chiamare strumenti in parallelo | Imposta `readOnlyHint: true` su strumenti senza effetti collaterali. Vedi [Aggiungere annotazioni degli strumenti](#add-tool-annotations). |21| Permettere a Claude di chiamare strumenti in parallelo | Imposta `readOnlyHint: true` su strumenti senza effetti collaterali. Vedi [Aggiungere annotazioni degli strumenti](#add-tool-annotations). |

21| Controllare il messaggio di errore che Claude legge | Restituisci `isError: true` per comporre il messaggio invece di esporre l'eccezione grezza. Vedi [Gestire gli errori](#handle-errors). |22| Controllare il messaggio di errore che Claude legge | Restituisci `isError: true` per comporre il messaggio invece di esporre l'eccezione grezza. Vedi [Gestire gli errori](#handle-errors). |


327| Campo | Predefinito | Significato |328| Campo | Predefinito | Significato |

328| :- | :- | :- |329| :- | :- | :- |

329| `readOnlyHint` | `false` | Lo strumento non modifica il suo ambiente. Controlla se lo strumento può essere chiamato in parallelo con altri strumenti di sola lettura. |330| `readOnlyHint` | `false` | Lo strumento non modifica il suo ambiente. Controlla se lo strumento può essere chiamato in parallelo con altri strumenti di sola lettura. |

330| `destructiveHint` | `true` | Lo strumento può eseguire aggiornamenti distruttivi. Solo informativo. |331| `destructiveHint` | `true` | Lo strumento può eseguire aggiornamenti distruttivi. Impostalo esplicitamente su `true` per qualsiasi strumento che [contrassegni come `always_ask`](#require-approval-for-specific-tools). |

331| `idempotentHint` | `false` | Le chiamate ripetute con gli stessi argomenti non hanno effetti aggiuntivi. Solo informativo. |332| `idempotentHint` | `false` | Le chiamate ripetute con gli stessi argomenti non hanno effetti aggiuntivi. Solo informativo. |

332| `openWorldHint` | `true` | Lo strumento raggiunge sistemi al di fuori del vostro processo. Solo informativo. |333| `openWorldHint` | `true` | Lo strumento raggiunge sistemi al di fuori del vostro processo. Solo informativo. |

333 334 


383 384 

384Per rimuovere completamente un tool integrato, omettetelo da `tools` o elencate il suo nome semplice in `disallowedTools` (Python: `disallowed_tools`); entrambi mantengono il tool fuori dal contesto in modo che Claude non lo tenti mai. Una regola `disallowedTools` con ambito blocca le chiamate corrispondenti ma lascia il tool visibile, quindi Claude potrebbe sprecare un turno tentandolo. Vedere [Configurare i permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md) per l'ordine di valutazione completo.385Per rimuovere completamente un tool integrato, omettetelo da `tools` o elencate il suo nome semplice in `disallowedTools` (Python: `disallowed_tools`); entrambi mantengono il tool fuori dal contesto in modo che Claude non lo tenti mai. Una regola `disallowedTools` con ambito blocca le chiamate corrispondenti ma lascia il tool visibile, quindi Claude potrebbe sprecare un turno tentandolo. Vedere [Configurare i permessi](https://code.claude.com/docs/it/agent-sdk/permissions.md) per l'ordine di valutazione completo.

385 386 

387### Richiedere l'approvazione per strumenti specifici

388 

389Imposta il `permission_policy` di uno strumento su `always_ask` e `allowedTools` smette di approvare le chiamate a quello strumento, così possono raggiungere la tua callback [`canUseTool`](https://code.claude.com/docs/it/agent-sdk/user-input) anche se lo strumento è elencato. Imposta invece `always_deny` e [una chiamata allo strumento viene negata](https://code.claude.com/docs/it/agent-sdk/permissions.md#how-permissions-are-evaluated), ma un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) in un plugin che carichi [può comunque approvarla](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Il campo è disponibile solo in TypeScript e richiede Agent SDK v0.3.301 o successiva.

390 

391Inserisci la voce della policy in un array `tools` sull'oggetto di configurazione restituito da `createSdkMcpServer()`, non nell'opzione `tools` che passi a quella funzione. Questo esempio espande `weatherServer` dall'[esempio dello strumento meteo](#weather-tool-example) e aggiunge un array `tools` che assegna a `get_temperature` la policy `always_ask`:

392 

393```typescript TypeScript theme={null}

394options: {

395 mcpServers: {

396 weather: {

397 ...weatherServer,

398 tools: [{ name: "get_temperature", permission_policy: "always_ask" as const }]

399 }

400 },

401 allowedTools: ["mcp__weather__get_temperature"],

402 permissionMode: "default",

403 canUseTool: async (toolName, input) => {

404 console.log(`Approval requested for ${toolName}`);

405 return { behavior: "allow", updatedInput: input };

406 }

407}

408```

409 

410Per provare la policy, sostituisci le `options` nello script di [Chiamare uno strumento personalizzato](#call-a-custom-tool) con le `options` di questo esempio, quindi esegui quello script dal tuo terminale. Lo script stampa `Approval requested for mcp__weather__get_temperature`, seguito dalla risposta di Claude sulla temperatura. Per uno script completo, consulta il [riferimento TypeScript](https://code.claude.com/docs/it/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance).

411 

412Se utilizzi la [modalità di permesso](https://code.claude.com/docs/it/agent-sdk/permissions.md#permission-modes) `auto` o `plan`, imposta `destructiveHint: true` nelle [annotazioni](#add-tool-annotations) dello strumento affinché le chiamate allo strumento raggiungano comunque la tua callback. Altrimenti il [classificatore della modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) può approvare alcune chiamate `always_ask`, alle [condizioni elencate nel riferimento TypeScript](https://code.claude.com/docs/it/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call), e una chiamata che approva non raggiunge la tua callback. Imposta l'hint esplicitamente, perché un `destructiveHint` non impostato vale `false` per le chiamate `always_ask` invece di assumere il valore predefinito `true`.

413 

386## Gestire gli errori414## Gestire gli errori

387 415 

388Un errore del handler non interrompe il ciclo dell'agente. Il server MCP in-process dell'SDK cattura le eccezioni non gestite e le restituisce come risultati di errore, quindi il modo in cui segnalate un errore determina ciò che Claude legge, non se la query fallisce:416Un errore del handler non interrompe il ciclo dell'agente. Il server MCP in-process dell'SDK cattura le eccezioni non gestite e le restituisce come risultati di errore, quindi il modo in cui segnalate un errore determina ciò che Claude legge, non se la query fallisce:

Details

10 10 

11## Come vengono valutate le autorizzazioni11## Come vengono valutate le autorizzazioni

12 12 

13> [!NOTE]

14>

15> Se carichi un plugin che contiene un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md), consulta [dove si collocano le decisioni di un mod tra regole e hook](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods).

16 

13Quando Claude richiede uno strumento, l'SDK controlla le autorizzazioni in questo ordine:17Quando Claude richiede uno strumento, l'SDK controlla le autorizzazioni in questo ordine:

14 18 

15**1. Hook**19**1. Hook**


20 24 

21**2. Regole deny**25**2. Regole deny**

22 26 

23Controllare le regole `deny` (da `disallowed_tools` e [settings.json](https://code.claude.com/docs/it/settings-reference.md#permission-settings)). Se una regola deny corrisponde, lo strumento viene bloccato, anche in modalità `bypassPermissions`. Le regole deny con nome semplice come `Bash` rimuovono lo strumento dal contesto di Claude prima che questa valutazione inizi, quindi solo le regole con ambito come `Bash(rm *)` vengono controllate in questo passaggio.27Se una regola deny da `disallowed_tools` o da [settings.json](https://code.claude.com/docs/it/settings-reference.md#permission-settings) corrisponde, la chiamata viene negata e [`canUseTool`](https://code.claude.com/docs/it/agent-sdk/user-input) non viene chiamato, anche in modalità [`bypassPermissions`](#bypass-permissions-mode-bypasspermissions) e anche quando un hook ha restituito `allow`.

28 

29Nell'SDK TypeScript, se imposti la `permission_policy` di uno [strumento personalizzato](https://code.claude.com/docs/it/agent-sdk/custom-tools.md#require-approval-for-specific-tools) su [`always_deny`](https://code.claude.com/docs/it/agent-sdk/typescript#mcpservertoolpolicy), una chiamata a quello strumento viene negata in questo passaggio.

24 30 

25**3. Regole ask**31**3. Regole ask**

26 32 


28 34 

29Gli strumenti che richiedono l'interazione dell'utente si comportano allo stesso modo: `AskUserQuestion` e gli strumenti MCP il cui server imposta [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool) passano sempre al callback, anche quando una regola allow corrisponde. In modalità `dontAsk` entrambi i casi vengono negati, perché quella modalità non richiede mai. L'annotazione MCP richiede Claude Code v2.1.199 o successivo.35Gli strumenti che richiedono l'interazione dell'utente si comportano allo stesso modo: `AskUserQuestion` e gli strumenti MCP il cui server imposta [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool) passano sempre al callback, anche quando una regola allow corrisponde. In modalità `dontAsk` entrambi i casi vengono negati, perché quella modalità non richiede mai. L'annotazione MCP richiede Claude Code v2.1.199 o successivo.

30 36 

31Gli strumenti del connettore [claude.ai](https://code.claude.com/docs/it/mcp.md#organization-controls-on-connector-tools) che la vostra organizzazione ha impostato su `ask` lasciano anche il flusso in questo passaggio. Ogni chiamata passa al callback, anche in modalità `bypassPermissions` e anche quando una regola allow corrisponde. Il callback riceve il motivo `Your organization requires approval for this tool`. In modalità `dontAsk` la chiamata viene negata, perché quella modalità non richiede mai.37Anche gli strumenti dei [connettori claude.ai](https://code.claude.com/docs/it/mcp.md#organization-controls-on-connector-tools) che la tua organizzazione ha impostato su `ask` lasciano il flusso in questo passaggio. Ogni chiamata passa al callback, anche in modalità `bypassPermissions` e anche quando una regola allow corrisponde. Il callback riceve il motivo `Your organization requires approval for this tool`. In modalità `dontAsk` la chiamata viene invece negata, perché quella modalità non chiede mai conferma.

32 38 

33**4. Modalità di autorizzazione**39Nell'SDK TypeScript, se imposti la `permission_policy` di uno strumento personalizzato su [`always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools), nessuna regola allow approva le sue chiamate, nemmeno una voce di `allowedTools`. In modalità `dontAsk` Claude Code nega quelle chiamate, e in modalità `auto`, `plan` o `bypassPermissions` [può approvarle](https://code.claude.com/docs/it/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call) prima che il tuo callback venga eseguito.

34 40 

35Applicare la [modalità di autorizzazione](#permission-modes) attiva:41**4. Modalità di permesso**

36 42 

37* In modalità `bypassPermissions`, Claude Code approva tutto ciò che raggiunge questo passaggio tranne le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute, che passano invece oltre.43Applicare la [modalità di permesso](#permission-modes) attiva:

44 

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

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

39* In modalità `plan`, Claude Code invia gli strumenti di modifica file e scrittura shell al tuo callback `canUseTool` indipendentemente dalle regole allow, in modo che le operazioni di scrittura non possano essere approvate automaticamente durante la pianificazione.47* In modalità `plan`, Claude Code invia gli strumenti di modifica file al tuo callback `canUseTool` indipendentemente dalle regole allow.

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

41 49 

42**5. Regole allow**50**5. Regole allow**

43 51 

44Controllare le regole `allow` (da `allowed_tools` e settings.json). Se una regola corrisponde, lo strumento viene approvato. Anche una chiamata che lo strumento approva da solo viene risolta in questo passaggio, senza alcuna regola necessaria: ad esempio una lettura di file all'interno delle tue directory di lavoro o un [comando Bash di sola lettura](https://code.claude.com/docs/it/permissions.md#read-only-commands).52Controllare le regole `allow` (da `allowed_tools` e settings.json). Se una regola corrisponde, lo strumento viene approvato. Anche una chiamata che lo strumento approva da solo viene risolta in questo passaggio, senza alcuna regola necessaria: ad esempio una lettura di file all'interno delle tue directory di lavoro o un [comando Bash di sola lettura](https://code.claude.com/docs/it/permissions.md#read-only-commands).

45 53 

46Le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute non vengono approvate da una regola allow. Se poi raggiungano il tuo callback dipende dalla modalità di permesso: in una sessione Agent SDK in modalità `auto`, ad esempio, Claude Code le nega per impostazione predefinita senza chiamarlo. La [tabella delle modalità per i percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-path-removals-in-each-permission-mode) elenca cosa fa ogni modalità con esse.54Le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute non vengono approvate da una regola allow, e i comandi segnalati con `Dangerous rm operation not ruled out` non vengono approvati da una regola `Bash` o `Bash(*)`. Se poi raggiungano il tuo callback dipende dalla modalità di permesso: in una sessione Agent SDK in modalità `auto`, ad esempio, Claude Code li nega per impostazione predefinita senza chiamarlo. La [tabella delle modalità per i percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-path-removals-in-each-permission-mode) elenca cosa fa ogni modalità con essi.

47 55 

48Una regola allow non approva una lettura da un [percorso di rete](https://code.claude.com/docs/it/permissions.md#network-paths).56Una regola allow non approva una lettura da un [percorso di rete](https://code.claude.com/docs/it/permissions.md#network-paths).

49 57 


57 65 

58Se passate un callback `canUseTool` in una configurazione in cui l'SDK TypeScript si aspetta che l'ordine di valutazione approvi automaticamente le chiamate prima che il callback sia consultato, l'SDK emette un avviso di processo Node.js una volta quando la query viene costruita. Il codice dell'avviso è `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Due configurazioni lo attivano:66Se passate un callback `canUseTool` in una configurazione in cui l'SDK TypeScript si aspetta che l'ordine di valutazione approvi automaticamente le chiamate prima che il callback sia consultato, l'SDK emette un avviso di processo Node.js una volta quando la query viene costruita. Il codice dell'avviso è `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Due configurazioni lo attivano:

59 67 

60* `permissionMode: 'bypassPermissions'`, che approva automaticamente ogni chiamata che raggiunge il passaggio della modalità di autorizzazione a parte le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves)68* `permissionMode: 'bypassPermissions'`: il testo dell'avviso inizia con `canUseTool will not be invoked: permissionMode 'bypassPermissions'`. Le chiamate agli strumenti vengono approvate prima che `canUseTool` venga consultato, quindi il tuo callback viene eseguito solo per poche chiamate, come quelle elencate in [Modalità bypass dei permessi](#bypass-permissions-mode-bypasspermissions). Per controllare anche le chiamate approvate, sposta i controlli del tuo callback in un [hook `PreToolUse`](https://code.claude.com/docs/it/agent-sdk/hooks)

61* Ogni voce `allowedTools` semplice come `"Read"`, che approva automaticamente l'intero strumento prima che il callback venga consultato, a parte le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths)69* Una voce di `allowedTools` composta solo dal nome di uno strumento, come `"Read"`: l'avviso elenca ciascuna di queste voci dopo `canUseTool will not be invoked for:`. Le chiamate a uno strumento elencato vengono approvate prima che `canUseTool` venga consultato, a parte le [chiamate che una regola allow non approva mai](#calls-an-allow-rule-never-approves). Per fare in modo che il tuo callback venga eseguito per le chiamate di uno strumento elencato che richiedono approvazione, rimuovi la voce di quello strumento da `allowedTools`

62 70 

63Le voci con uno specificatore come `Bash(ls *)` e la modalità `acceptEdits` non lo attivano, e le regole allow provenienti da file di impostazioni non sono visibili al controllo.71Le voci con uno specificatore come `Bash(ls *)` e la modalità `acceptEdits` non lo attivano, e le regole allow provenienti da file di impostazioni non sono visibili al controllo.

64 72 

65Ascoltate con `process.on('warning', ...)` e abbinate il codice per registrarlo o sopprimerlo. Per controllare ogni chiamata di strumento indipendentemente dalla modalità e dalle regole, utilizzate invece un [hook `PreToolUse`](https://code.claude.com/docs/it/agent-sdk/hooks).73L'avviso non blocca alcuna chiamata né modifica alcuna opzione. Se il tuo callback riceve già ogni chiamata che vuoi controllare, lascia la configurazione così com'è. Per registrare l'avviso nei log, mettiti in ascolto con `process.on('warning', ...)` e confronta il codice `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`.

66 74 

67Questa pagina si concentra su **regole allow e deny** e **modalità di autorizzazione**. Per gli altri passaggi:75Questa pagina si concentra su **regole allow e deny** e **modalità di autorizzazione**. Per gli altri passaggi:

68 76 


90>98>

91> **Gli strumenti approvati automaticamente non raggiungono mai `canUseTool`.** Una chiamata a uno strumento approvata in qualsiasi fase precedente, da `acceptEdits` o `bypassPermissions`, o da una regola allow, salta il callback `canUseTool`, quindi i controlli di autorizzazione che inserite lì vengono silenziosamente ignorati per quello strumento.99> **Gli strumenti approvati automaticamente non raggiungono mai `canUseTool`.** Una chiamata a uno strumento approvata in qualsiasi fase precedente, da `acceptEdits` o `bypassPermissions`, o da una regola allow, salta il callback `canUseTool`, quindi i controlli di autorizzazione che inserite lì vengono silenziosamente ignorati per quello strumento.

92>100>

93> Nessuna regola allow approva automaticamente `AskUserQuestion`, gli strumenti MCP contrassegnati [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool), gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), o le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute con `rm` e `rmdir`. In modalità `dontAsk` Claude Code nega queste chiamate senza invocare il callback. In altre modalità le prime tre raggiungono il callback. La [tabella delle modalità per i percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-path-removals-in-each-permission-mode) elenca cosa fa ciascuna modalità con una rimozione di percorso critico. Il controllo che riconosce queste rimozioni [può non rilevare alcuni comandi](https://code.claude.com/docs/it/permission-modes.md#critical-paths).101> Se le chiamate a uno strumento in `allowed_tools` raggiungono comunque il tuo callback `canUseTool`, o vengono negate in modalità `dontAsk`, verifica se si tratta di [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths) o di una delle chiamate seguenti. Nessuna regola allow approva queste chiamate. In modalità `dontAsk`, che non chiede mai, Claude Code le nega senza invocare `canUseTool`, e nelle altre modalità di permesso le gestisci come indicato in ciascuna voce:

102>

103> * `AskUserQuestion`, gli strumenti MCP contrassegnati [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool) e gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools): rispondi nel callback. [Gestire le domande di chiarimento](https://code.claude.com/docs/it/agent-sdk/user-input.md#handle-clarifying-questions) mostra come rispondere ad `AskUserQuestion`, e una chiamata a un connettore arriva con il motivo `Your organization requires approval for this tool`

104>

105> * Strumenti personalizzati che la tua applicazione contrassegna come [`always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools): decidi la chiamata nel callback. Per evitare che queste chiamate arrivino, [modifica la policy durante la sessione](https://code.claude.com/docs/it/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance). In modalità `auto`, `plan` e `bypassPermissions` la chiamata può invece essere approvata prima del callback, nei casi elencati in [Modalità di permesso che possono approvare una chiamata `always_ask`](https://code.claude.com/docs/it/agent-sdk/typescript#permission-modes-that-can-approve-an-always_ask-call)

94>106>

95> La copertura dipende dalla forma della voce: un nome semplice come `Read` o `mcp__github__get_issue` approva automaticamente ogni chiamata a quello strumento a parte tali eccezioni e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths), mentre una regola limitata come `Bash(npm test *)` approva automaticamente solo le chiamate corrispondenti, e le altre chiamate `Bash` che necessitano di approvazione passano comunque al callback. Per i controlli che devono essere eseguiti su ogni chiamata a uno strumento, usa un [hook `PreToolUse`](https://code.claude.com/docs/it/agent-sdk/hooks): gli hook vengono eseguiti prima di ogni altro passaggio, e una negazione da parte di un hook si applica anche in modalità `bypassPermissions`.107> * [Rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute con `rm` e `rmdir`: in modalità `default`, `acceptEdits` e `bypassPermissions`, consenti o nega la rimozione nel callback, dove [`decisionReason`](https://code.claude.com/docs/it/agent-sdk/typescript#canusetool) inizia con `Dangerous rm`. Per le modalità `auto` e `plan`, consulta [Rimozioni di percorsi critici in ciascuna modalità di permesso](https://code.claude.com/docs/it/permission-modes.md#critical-path-removals-in-each-permission-mode). Il controllo che riconosce queste rimozioni [può non rilevare alcuni comandi](https://code.claude.com/docs/it/permission-modes.md#critical-paths)

108>

109> * **Nome semplice**: una voce come `Read` o `mcp__github__get_issue` approva automaticamente ogni chiamata a quello strumento a parte le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths).

110>

111> * **Regola limitata**: una voce come `Bash(npm test *)` approva automaticamente solo le chiamate corrispondenti, e le altre chiamate `Bash` che necessitano di approvazione passano comunque al callback.

112>

113> Per i controlli che devono essere eseguiti su ogni chiamata a uno strumento, usa un [hook `PreToolUse`](https://code.claude.com/docs/it/agent-sdk/hooks): gli hook vengono eseguiti prima di ogni altro passaggio, e una negazione da parte di un hook si applica anche in modalità `bypassPermissions`.

96 114 

97Per un agente bloccato, abbinate `allowedTools` con `permissionMode: "dontAsk"`:115Per un agente bloccato, abbinate `allowedTools` con `permissionMode: "dontAsk"`:

98 116 


103};121};

104```122```

105 123 

106Gli strumenti elencati sono approvati, a parte le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). Ogni altra chiamata che comporterebbe una richiesta di permesso viene invece negata, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods).124Le chiamate elencate a `Read`, `Glob` e `Grep` sono approvate, a parte le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). Ogni altra chiamata che comporterebbe una richiesta di permesso viene invece negata, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods).

107 125 

108Le chiamate che non necessitano di approvazione in modalità `default` vengono eseguite indipendentemente dal fatto che tu le elenchi. Includono i [comandi Bash di sola lettura](https://code.claude.com/docs/it/permissions.md#read-only-commands), strumenti come `Agent` che non chiedono prima di essere eseguiti, e letture di file all'interno delle tue directory di lavoro. Per rimuovere completamente uno strumento dalla richiesta, aggiungi il suo nome semplice a `disallowedTools`.126Le chiamate che non necessitano di approvazione in modalità `default` vengono eseguite indipendentemente dal fatto che tu le elenchi. Includono i [comandi Bash di sola lettura](https://code.claude.com/docs/it/permissions.md#read-only-commands), strumenti come `Agent` che non chiedono prima di essere eseguiti, e letture di file all'interno delle tue directory di lavoro. Per nascondere completamente uno strumento integrato a Claude anziché negarne le chiamate, aggiungi il suo nome semplice a `disallowedTools`.

109 127 

110> [!WARNING]128> [!WARNING]

111>129>


128| `default` | Comportamento di autorizzazione standard | Nessuna approvazione automatica basata sulla modalità; le chiamate che richiedono approvazione e non corrispondono a nessuna regola allow attivano il callback `canUseTool` |146| `default` | Comportamento di autorizzazione standard | Nessuna approvazione automatica basata sulla modalità; le chiamate che richiedono approvazione e non corrispondono a nessuna regola allow attivano il callback `canUseTool` |

129| `dontAsk` | Nega invece di chiedere | Qualsiasi chiamata che altrimenti genererebbe una richiesta di conferma viene negata senza chiamare `canUseTool`, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Le chiamate approvate da `allowed_tools` o da regole allow in `settings.json` vengono eseguite, così come le chiamate che non richiedono approvazione in modalità `default`. Alcune chiamate, come le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths), vengono negate anche quando `allowed_tools` o una regola allow corrisponde. Per l'elenco, consulta [Modalità non chiedere](#don’t-ask-mode-dontask) |147| `dontAsk` | Nega invece di chiedere | Qualsiasi chiamata che altrimenti genererebbe una richiesta di conferma viene negata senza chiamare `canUseTool`, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Le chiamate approvate da `allowed_tools` o da regole allow in `settings.json` vengono eseguite, così come le chiamate che non richiedono approvazione in modalità `default`. Alcune chiamate, come le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths), vengono negate anche quando `allowed_tools` o una regola allow corrisponde. Per l'elenco, consulta [Modalità non chiedere](#don’t-ask-mode-dontask) |

130| `acceptEdits` | Accetta automaticamente le modifiche ai file | Le modifiche ai file e le [operazioni del filesystem](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, ecc.) vengono approvate automaticamente |148| `acceptEdits` | Accetta automaticamente le modifiche ai file | Le modifiche ai file e le [operazioni del filesystem](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, ecc.) vengono approvate automaticamente |

131| `bypassPermissions` | Ignora i controlli di autorizzazione | Gli strumenti vengono eseguiti senza richieste di autorizzazione, ad eccezione delle [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves). Utilizzare con cautela |149| `bypassPermissions` | Ignora i controlli di autorizzazione | Gli strumenti vengono eseguiti senza richieste di autorizzazione, ad eccezione delle [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) e, al di fuori di una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), degli strumenti personalizzati che la tua applicazione [contrassegna come `always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools). Utilizzare con cautela |

132| `plan` | Modalità di pianificazione | Claude esplora e pianifica senza modificare i file sorgente; le modifiche ai file non vengono mai approvate automaticamente e richiedono il callback `canUseTool` |150| `plan` | Modalità di pianificazione | Claude esplora e pianifica senza modificare i file sorgente; le modifiche ai file non vengono mai approvate automaticamente e richiedono il callback `canUseTool` |

133| `auto` | Approvazioni classificate dal modello | Un classificatore del modello esamina azioni come comandi shell e richieste di rete, consentendo o bloccando ciascuna che esamina. Vedere [Modalità Auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per la disponibilità e l'ordine di decisione |151| `auto` | Approvazioni classificate dal modello | Un classificatore del modello esamina azioni come comandi shell e richieste di rete, consentendo o bloccando ciascuna che esamina. Vedere [Modalità Auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per la disponibilità e l'ordine di decisione |

134 152 


256* Lavora su un percorso al di fuori di tale ambito274* Lavora su un percorso al di fuori di tale ambito

257* Scrive in un percorso protetto275* Scrive in un percorso protetto

258* Rimuove con `rm` o `rmdir` un percorso che Claude Code riconosce come [percorso critico](https://code.claude.com/docs/it/permission-modes.md#critical-paths)276* Rimuove con `rm` o `rmdir` un percorso che Claude Code riconosce come [percorso critico](https://code.claude.com/docs/it/permission-modes.md#critical-paths)

277* Esegue [`touch`](https://code.claude.com/docs/it/permission-modes#auto-approve-file-edits-with-acceptedits-mode) con, ad esempio, un'opzione, un glob o un prefisso `timeout 5` o `LANG=C`

259 278 

260**Utilizzare quando:** si confida nelle modifiche di Claude e si desidera un'iterazione più veloce, ad esempio durante la prototipazione o quando si lavora in una directory isolata.279**Utilizzare quando:** si confida nelle modifiche di Claude e si desidera un'iterazione più veloce, ad esempio durante la prototipazione o quando si lavora in una directory isolata.

261 280 


263 282 

264Converte qualsiasi richiesta di permesso in una negazione, senza chiamare `canUseTool`, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Gli strumenti pre-approvati da `allowed_tools`, da regole allow in `settings.json` o da un hook vengono eseguiti normalmente. Vengono eseguite anche le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle tue directory di lavoro e le chiamate a `Agent`.283Converte qualsiasi richiesta di permesso in una negazione, senza chiamare `canUseTool`, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Gli strumenti pre-approvati da `allowed_tools`, da regole allow in `settings.json` o da un hook vengono eseguiti normalmente. Vengono eseguite anche le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle tue directory di lavoro e le chiamate a `Agent`.

265 284 

266Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente, le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths) e le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute vengono negati anche quando una regola allow corrisponde. Nemmeno un'approvazione da parte di un hook `PreToolUse` sblocca una rimozione riconosciuta di un percorso critico o una lettura da un percorso di rete. Il controllo che riconosce queste rimozioni [può non individuare alcuni comandi](https://code.claude.com/docs/it/permission-modes.md#critical-paths).285Queste chiamate vengono negate anche quando una regola allow corrisponde:

286 

287* Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools)

288* Gli strumenti che richiedono interazione dell'utente, come `AskUserQuestion` e gli strumenti MCP il cui server imposta [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool)

289* Gli strumenti personalizzati il cui `permission_policy` è impostato dalla tua applicazione su [`always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools)

290* Le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths)

291* Le [rimozioni di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths) riconosciute

292 

293Se il tuo hook `PreToolUse` restituisce `allow` per una rimozione riconosciuta di un percorso critico, una lettura da un percorso di rete o una chiamata a uno strumento contrassegnato come `always_ask`, la chiamata viene comunque negata. Il controllo che riconosce queste rimozioni [può non individuare alcuni comandi](https://code.claude.com/docs/it/permission-modes.md#critical-paths).

267 294 

268**Utilizzare quando:** si desidera una superficie di strumenti fissa ed esplicita per un agente headless e si preferisce un rifiuto netto rispetto all'affidamento silenzioso all'assenza di `canUseTool`.295**Utilizzare quando:** si desidera una superficie di strumenti fissa ed esplicita per un agente headless e si preferisce un rifiuto netto rispetto all'affidamento silenzioso all'assenza di `canUseTool`.

269 296 

270#### Modalità ignora autorizzazioni (`bypassPermissions`)297#### Modalità ignora autorizzazioni (`bypassPermissions`)

271 298 

272Approva automaticamente gli usi degli strumenti senza richiedere conferma, ad eccezione dei casi elencati nell'avviso di seguito. I hook vengono comunque eseguiti e possono bloccare le operazioni se necessario. Su Linux e macOS, Claude Code rifiuta di avviarsi in questa modalità come root o sotto `sudo` al di fuori di una [sandbox riconosciuta](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), e la query non riesce prima del primo turno.299Approva automaticamente gli usi degli strumenti senza richiedere conferma, ad eccezione delle [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves). Gli hook vengono comunque eseguiti e possono bloccare le operazioni se necessario. Su Linux e macOS, Claude Code rifiuta di avviarsi in questa modalità come root o sotto `sudo` al di fuori di una [sandbox riconosciuta](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), e la query non riesce prima del primo turno.

273 300 

274> [!WARNING]301> [!WARNING]

275>302>


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

279>306>

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

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

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

283 310 

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

285 312 

286Claude esplora la base di codice e produce un piano senza modificare i file sorgente. Gli strumenti di sola lettura vengono eseguiti come nella modalità di autorizzazione `default`.313Claude esplora il codebase e produce un piano senza modificare i tuoi file sorgente. Le modifiche ai file non vengono mai approvate automaticamente nel plan mode, anche quando una regola allow corrisponde o un hook `PreToolUse` restituisce `allow`. Passano invece per il tuo callback `canUseTool`.

287 314 

288Le modifiche ai file non vengono mai approvate automaticamente nel plan mode, anche quando una regola allow corrisponde o un hook `PreToolUse` restituisce `allow`. Passano invece per il tuo callback `canUseTool`. Su Claude Code v2.1.212 o successivo, i comandi shell che modificano i file, come `touch` e `rm`, raggiungono il tuo callback `canUseTool` allo stesso modo.315Quando la modalità auto è disponibile per la sessione, per impostazione predefinita i comandi che Claude esegue durante la pianificazione non raggiungono il tuo callback, perché li [esamina invece](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) il modello classificatore usato dalla [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode). Con questa revisione attiva, il classificatore può anche approvare chiamate di sola lettura che altrimenti raggiungerebbero il tuo callback, come una chiamata `WebFetch` senza alcuna regola allow.

289 316 

290Nell'SDK TypeScript, se si imposta `allowDangerouslySkipPermissions: true` insieme a `permissionMode: 'plan'`, le modifiche ai file e i comandi shell che modificano i file raggiungono comunque il callback `canUseTool`. L'opzione consente di passare a `bypassPermissions` in seguito con `setPermissionMode()`.317> [!NOTE]

318>

319> Nell'SDK TypeScript, se imposti `allowDangerouslySkipPermissions: true` insieme a `permissionMode: 'plan'`, le modifiche ai file raggiungono comunque il tuo callback `canUseTool`. Per passare in seguito a `bypassPermissions` con `setPermissionMode()` una sessione che inizia in plan mode, devi impostare `allowDangerouslySkipPermissions` fin dall'inizio.

291 320 

292Claude può utilizzare `AskUserQuestion` per chiarire i requisiti prima di finalizzare il piano. Vedere [Gestire approvazioni e input dell'utente](https://code.claude.com/docs/it/agent-sdk/user-input.md#handle-clarifying-questions) per la gestione di queste richieste.321Claude può utilizzare `AskUserQuestion` per chiarire i requisiti prima di finalizzare il piano. Vedere [Gestire approvazioni e input dell'utente](https://code.claude.com/docs/it/agent-sdk/user-input.md#handle-clarifying-questions) per la gestione di queste richieste.

293 322 

Details

70>70>

71> Il percorso deve puntare alla directory radice del plugin: la directory padre di `skills/`, `agents/`, `hooks/`, `commands/`, o `.claude-plugin/`.71> Il percorso deve puntare alla directory radice del plugin: la directory padre di `skills/`, `agents/`, `hooks/`, `commands/`, o `.claude-plugin/`.

72 72 

73### Aggiungere plugin a una sessione in esecuzione

74 

75Nell'SDK TypeScript, chiama [`reloadPlugins()`](https://code.claude.com/docs/it/agent-sdk/typescript#load-more-plugin-folders-with-addplugins) sull'oggetto `Query` restituito da `query()` ed elenca la directory del plugin nell'opzione `addPlugins` di quella chiamata. Ogni voce di `addPlugins` è un oggetto `{ type: "local", path }` con un `path` assoluto. Richiede l'Agent SDK TypeScript v0.3.301 o successivo.

76 

77In questo esempio, `q` è l'oggetto `Query` restituito da `query()`. L'esempio aggiunge una directory di plugin alla sessione in esecuzione e, dopo che `reloadPlugins()` ha restituito il risultato, stampa il percorso di ogni plugin nella sessione:

78 

79```typescript theme={null}

80const result = await q.reloadPlugins({

81 addPlugins: [{ type: "local", path: "/home/user/plugins/another-plugin" }]

82});

83 

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

85```

86 

87Se il plugin è stato caricato, l'elenco stampato include `/home/user/plugins/another-plugin`. Se quel percorso manca dall'elenco, o se `reloadPlugins()` viene rifiutata, consulta [Quando `reloadPlugins()` non carica le cartelle di `addPlugins`](https://code.claude.com/docs/it/agent-sdk/typescript#when-reloadplugins-doesnt-load-the-addplugins-folders) per conoscerne le cause.

88 

73## Verifica dell'installazione del plugin89## Verifica dell'installazione del plugin

74 90 

75Quando i plugin si caricano correttamente, appaiono nel messaggio di inizializzazione del sistema. Puoi verificare che i tuoi plugin siano disponibili:91Quando i plugin si caricano correttamente, appaiono nel messaggio di inizializzazione del sistema. Puoi verificare che i tuoi plugin siano disponibili:

Details

200| :- | :- | :- | :- |200| :- | :- | :- | :- |

201| `title` | `string` | `undefined` | Titolo leggibile per lo strumento |201| `title` | `string` | `undefined` | Titolo leggibile per lo strumento |

202| `readOnlyHint` | `boolean` | `false` | Se `true`, lo strumento non modifica il suo ambiente |202| `readOnlyHint` | `boolean` | `false` | Se `true`, lo strumento non modifica il suo ambiente |

203| `destructiveHint` | `boolean` | `true` | Se `true`, lo strumento può eseguire aggiornamenti distruttivi (significativo solo quando `readOnlyHint` è `false`) |203| `destructiveHint` | `boolean` | `true` | Se `true`, lo strumento può eseguire aggiornamenti distruttivi. Imposta esplicitamente `destructiveHint: true` su qualsiasi strumento che contrassegni come [`always_ask`](#mcpservertoolpolicy), altrimenti il classificatore della modalità auto può approvare le chiamate a quello strumento al posto della tua callback `canUseTool`. Lasciare `destructiveHint` non impostato non basta, perché Claude Code tratta un `destructiveHint` non impostato come `false` quando gestisce le chiamate `always_ask`, anche se il valore predefinito della specifica MCP è `true` |

204| `idempotentHint` | `boolean` | `false` | Se `true`, le chiamate ripetute con gli stessi argomenti non hanno effetto aggiuntivo (significativo solo quando `readOnlyHint` è `false`) |204| `idempotentHint` | `boolean` | `false` | Se `true`, le chiamate ripetute con gli stessi argomenti non hanno effetto aggiuntivo (significativo solo quando `readOnlyHint` è `false`) |

205| `openWorldHint` | `boolean` | `true` | Se `true`, lo strumento interagisce con entità esterne (ad esempio, ricerca web). Se `false`, il dominio dello strumento è chiuso (ad esempio, uno strumento di memoria) |205| `openWorldHint` | `boolean` | `true` | Se `true`, lo strumento interagisce con entità esterne (ad esempio, ricerca web). Se `false`, il dominio dello strumento è chiuso (ad esempio, uno strumento di memoria) |

206 206 


630 ): Promise<SDKControlReadFileResponse | null>;630 ): Promise<SDKControlReadFileResponse | null>;

631 reloadPlugins(options?: {631 reloadPlugins(options?: {

632 holdOnCacheImpact?: boolean;632 holdOnCacheImpact?: boolean;

633 addPlugins?: SdkPluginConfig[];

633 }): Promise<SDKControlReloadPluginsResponse>;634 }): Promise<SDKControlReloadPluginsResponse>;

634 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;635 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;

635 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;636 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;


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

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

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

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

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

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

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


1135 1136 

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

1137 1138 

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

1140 

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

1142 

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

1144 

1145```typescript theme={null}

1146const result = await q.reloadPlugins({

1147 addPlugins: [{ type: "local", path: "/opt/my-app/plugins/reports" }]

1148});

1149 

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

1151```

1152 

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

1154 

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

1156 

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

1158 

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

1160 

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

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

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

1164 

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

1166 

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

1168 

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

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

1171 

1138### `SDKControlReloadSkillsResponse`1172### `SDKControlReloadSkillsResponse`

1139 1173 

1140Tipo restituito da [`reloadSkills()`](#query-object).1174Tipo restituito da [`reloadSkills()`](#query-object).


1430 1464 

1431#### `McpSdkServerConfigWithInstance`1465#### `McpSdkServerConfigWithInstance`

1432 1466 

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

1468 

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

1434type McpSdkServerConfigWithInstance = {1470type McpSdkServerConfigWithInstance = {

1435 type: "sdk";1471 type: "sdk";

1436 name: string;1472 name: string;

1437 timeout?: number;1473 timeout?: number;

1474 tools?: McpServerToolPolicy[];

1438 instance: McpServer;1475 instance: McpServer;

1439};1476};

1440```1477```

1441 1478 

1479Per impostare una policy, espandi l'oggetto restituito da `createSdkMcpServer()` in un nuovo oggetto in `mcpServers` e aggiungi l'elenco `tools` a quel nuovo oggetto. L'opzione `tools` di `createSdkMcpServer()` stessa è un elenco diverso, che contiene le definizioni degli strumenti e non accetta voci di policy. L'elenco delle policy richiede Agent SDK v0.3.301 o successiva, e [`McpServerToolPolicy`](#mcpservertoolpolicy) descrive cosa fa ciascun valore di `permission_policy`.

1480 

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

1482 

1483```typescript theme={null}

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

1485import { z } from "zod";

1486 

1487const deleteRecord = tool(

1488 "delete_record",

1489 "Delete a customer record by ID",

1490 { id: z.string() },

1491 async ({ id }) => ({ content: [{ type: "text", text: `Deleted record ${id}` }] }),

1492 { annotations: { destructiveHint: true } }

1493);

1494 

1495const records = createSdkMcpServer({ name: "records", tools: [deleteRecord] });

1496 

1497for await (const message of query({

1498 prompt: "Delete customer record 42",

1499 options: {

1500 mcpServers: {

1501 // Spread the returned config and add the policy list beside it

1502 records: {

1503 ...records,

1504 tools: [{ name: "delete_record", permission_policy: "always_ask" as const }]

1505 }

1506 },

1507 allowedTools: ["mcp__records__*"],

1508 canUseTool: async (toolName, input) => {

1509 console.log(`Approval requested for ${toolName}`);

1510 return { behavior: "allow", updatedInput: input };

1511 }

1512 }

1513})) {

1514 if (message.type === "result" && message.subtype === "success") {

1515 console.log(message.result);

1516 }

1517}

1518```

1519 

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

1521 

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

1523 

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

1525* **Un elenco vuoto**: ogni policy del server viene cancellata

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

1527 

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

1529 

1530#### `McpServerToolPolicy`

1531 

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

1533 

1534```typescript theme={null}

1535type McpServerToolPolicy = {

1536 name: string;

1537 permission_policy?: "always_allow" | "always_ask" | "always_deny";

1538 org_max_permission?: "allow" | "ask" | "blocked";

1539};

1540```

1541 

1542| Campo | Tipo | Descrizione |

1543| :- | :- | :- |

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

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

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

1547 

1548##### Valori di `permission_policy`

1549 

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

1551 

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

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

1554 

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

1556 

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

1558 

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

1560 

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

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

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

1564 

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

1566 

1442#### `McpClaudeAIProxyServerConfig`1567#### `McpClaudeAIProxyServerConfig`

1443 1568 

1444```typescript theme={null}1569```typescript theme={null}


1464| Campo | Tipo | Descrizione |1589| Campo | Tipo | Descrizione |

1465| :- | :- | :- |1590| :- | :- | :- |

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

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

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

1469 1594 

1470**Esempio:**1595**Esempio:**


5076};5201};

5077```5202```

5078 5203 

5079`source` indica la provenienza della definizione del server, con gli stessi valori e la stessa regola di fiducia del `source` di [`McpServerProvenance`](#mcpserverprovenance). Il campo richiede Agent SDK v0.3.274 o versioni successive ed è assente nelle versioni precedenti.5204Usa `source` per decidere quanto fidarti di un server, e il `_meta` di ogni voce di `tools` per trovare una risorsa UI che il server ha associato a quello strumento:

5205 

5206* **`source`**: la provenienza della definizione del server, con gli stessi valori del `source` di [`McpServerProvenance`](#mcpserverprovenance). Basa le decisioni di fiducia su `source` anziché su `name`, perché solo il tuo server in-process riporta `sdk`, qualunque sia il nome con cui è registrato qualsiasi altro server. Se non riconosci un valore di `source`, tratta quel server come tratti qualsiasi server il cui `source` non è `sdk`. Richiede Agent SDK v0.3.274 o versioni successive

5207* **`_meta`**: l'oggetto `ui` e la stringa `ui/resourceUri` del `_meta` che il server ha dichiarato per lo strumento. Claude Code trattiene ogni altra chiave di `_meta`. `ui/resourceUri` è una grafia di primo livello meno recente di `ui.resourceUri`. Quando il server associa allo strumento una [risorsa UI di MCP Apps](https://code.claude.com/docs/it/mcp.md#reference-mcp-resources), `ui.resourceUri` o `ui/resourceUri` contiene l'URI `ui://` della risorsa. Recupera quell'URI con [`readMcpResource()`](#query-object) e visualizza la risorsa nella tua applicazione. Richiede Agent SDK v0.3.280 o versioni successive

5208 

5209Claude Code invia `_meta` solo quando l'array [`capabilities`](#sdksystemmessage) del messaggio `system` con sottotipo `init` elenca `mcp_tool_ui_meta_v1`. Non sei tu ad attivare `mcp_tool_ui_meta_v1`.

5210 

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

5212 

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

5214 

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

5216 

5217 * `resourceUri` è assente, oppure è una stringa che inizia con `ui://`

5218 * `visibility` è assente, oppure elenca solo `"model"` e `"app"`

5219 * L'intero oggetto è di al massimo 4.096 caratteri quando serializzato come JSON

5220 

5221 Se uno qualsiasi dei controlli non viene superato, la tua applicazione riceve al massimo un `ui` il cui unico membro è un array `visibility` con le voci `"model"` e `"app"` elencate dal server.

5222* **`ui/resourceUri`**: raggiunge la tua applicazione se è una stringa che inizia con `ui://` ed è di al massimo 4.096 caratteri. Altrimenti Claude Code lo scarta

5080 5223 

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

5082 5225 

5083### `McpServerStatusConfig`5226### `McpServerStatusConfig`

5084 5227 


5313Quando chiami `setMcpServers()`, Claude Code applica queste regole:5456Quando chiami `setMcpServers()`, Claude Code applica queste regole:

5314 5457 

5315* **Server non indicati dalla chiamata**: al di fuori di una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), Claude Code disconnette i server aggiunti da una precedente chiamata `setMcpServers()` e i server SDK in-process, e li elenca in `removed`. Gli altri server continuano a funzionare e non sono elencati in `removed`, tra cui i server stdio, HTTP e SSE dell'opzione [`mcpServers`](#options), i server dei file di impostazioni e i server forniti dai plugin.5458* **Server non indicati dalla chiamata**: al di fuori di una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), Claude Code disconnette i server aggiunti da una precedente chiamata `setMcpServers()` e i server SDK in-process, e li elenca in `removed`. Gli altri server continuano a funzionare e non sono elencati in `removed`, tra cui i server stdio, HTTP e SSE dell'opzione [`mcpServers`](#options), i server dei file di impostazioni e i server forniti dai plugin.

5316* **Server indicati dalla chiamata**: Claude Code sostituisce un server stdio, HTTP o SSE aggiunto da una precedente chiamata `setMcpServers()` solo quando la sua configurazione differisce da quella che hai passato. Un server SDK in-process già registrato con quel nome rimane invariato, quindi per sostituirne uno, omettilo in una chiamata e aggiungilo in quella successiva.5459* **Server stdio, HTTP e SSE aggiunti da una precedente chiamata `setMcpServers()`**: al di fuori di una sessione cloud, un server che indichi di nuovo con una configurazione identica mantiene la connessione e gli strumenti. Non compare né in `added` né in `removed`. Se passi una configurazione modificata, Claude Code riconnette il server usando quella configurazione e lo elenca in `added`, non in `removed`.

5460* **Server stdio, HTTP e SSE indicati dalla chiamata che nessuna chiamata precedente ha aggiunto**: al di fuori di una sessione cloud, Claude Code aggiunge il server e lo elenca in `added`, oppure in `errors` se rifiuta il server.

5461* **Server SDK in-process indicati dalla chiamata**: un server già registrato tramite `mcpServers` o una chiamata precedente mantiene la sua istanza in esecuzione e il suo timeout. Se passi un [elenco di policy `tools`](#mcpsdkserverconfigwithinstance) per esso, anche vuoto, ne sostituisci le policy; altrimenti restano invariate. Per eseguire una nuova istanza al di fuori di una sessione cloud, ometti il server in una chiamata e indicalo in quella successiva.

5317* **Server integrati avviati dalla CLI all'avvio**: se la chiamata ne indica uno, Claude Code scarta quella voce e la riporta in `errors`.5462* **Server integrati avviati dalla CLI all'avvio**: se la chiamata ne indica uno, Claude Code scarta quella voce e la riporta in `errors`.

5318* **Server stdio, HTTP o SSE che condividono il nome con un server di un ambito di installazione MCP come `.mcp.json`**: con quel nome la sessione usa gli strumenti del tuo server anziché quelli del [server dell'ambito di installazione](https://code.claude.com/docs/it/mcp.md#mcp-installation-scopes). Prima di Claude Code v2.1.305, Claude Code poteva disconnettere il tuo server e connettere il server dell'ambito di installazione quando la tua app [ricaricava i plugin](#query-object).5463* **Server stdio, HTTP o SSE che condividono il nome con un server di un ambito di installazione MCP come `.mcp.json`**: con quel nome la sessione usa gli strumenti del tuo server anziché quelli del [server dell'ambito di installazione](https://code.claude.com/docs/it/mcp.md#mcp-installation-scopes). Prima di Claude Code v2.1.305, Claude Code poteva disconnettere il tuo server e connettere il server dell'ambito di installazione quando la tua app [ricaricava i plugin](#query-object).

5319 5464 


5800 5945 

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

5802 5947 

5948### `BUILTIN_TOOL_NAMES` e `LEGACY_TOOL_NAME_ALIASES`

5949 

5950Usa queste due costanti per verificare i nomi degli strumenti inseriti dagli utenti della tua applicazione. Entrambe scrivono ogni nome nel modo in cui lo scrivi nelle regole di permesso, nei matcher degli hook e nelle opzioni `tools` e `disallowedTools`. Importale da `@anthropic-ai/claude-agent-sdk` o da `@anthropic-ai/claude-agent-sdk/core`. Richiedono Agent SDK v0.3.301 o versioni successive e sono in fase alpha.

5951 

5952Le dichiarazioni di tipo dell'SDK assegnano a `BUILTIN_TOOL_NAMES` un tipo tupla readonly e a `LEGACY_TOOL_NAME_ALIASES` un tipo record da stringa a stringa:

5953 

5954```typescript theme={null}

5955const BUILTIN_TOOL_NAMES: readonly ["Agent", /* ...more names... */ "Write"];

5956const LEGACY_TOOL_NAME_ALIASES: Readonly<Record<string, string>>;

5957```

5958 

5959* **`BUILTIN_TOOL_NAMES`**: i nomi degli strumenti integrati di Claude Code in ordine alfabetico, come `Agent`, `Bash` e `Read`. I nomi degli strumenti MCP non sono inclusi. Poiché il tipo è una tupla di letterali stringa, `(typeof BUILTIN_TOOL_NAMES)[number]` ti fornisce un tipo unione dei nomi

5960* **`LEGACY_TOOL_NAME_ALIASES`**: i nomi precedenti degli strumenti che le regole di permesso, i matcher degli hook e le opzioni `tools` e `disallowedTools` accettano ancora. Ogni chiave è un nome precedente e il suo valore è quello attuale: ad esempio, `Task` corrisponde ad `Agent`, e `KillShell` e `KillBash` corrispondono a `TaskStop`

5961 

5962Puoi confermare un nome con uno dei due test: `BUILTIN_TOOL_NAMES` lo include, oppure `Object.hasOwn(LEGACY_TOOL_NAME_ALIASES, name)` restituisce `true`. Un nome che non supera nessuno dei due può comunque essere valido, perché `BUILTIN_TOOL_NAMES` esclude gli strumenti MCP e alcuni strumenti integrati. Se costruisci un elenco di esclusione a partire da `BUILTIN_TOOL_NAMES`, Claude può comunque usare gli strumenti che la costante esclude. Per negare ogni strumento, imposta invece [`disallowedTools: ["*"]`](https://code.claude.com/docs/it/agent-sdk/permissions#allow-and-deny-rules).

5963 

5964Trovare un nome in `BUILTIN_TOOL_NAMES` non ti dice che la sessione dispone di quello strumento: `TodoWrite` è elencato anche se è [disabilitato per impostazione predefinita](https://code.claude.com/docs/it/tools-reference.md). Per vedere quali strumenti ha una sessione, leggi l'array `tools` del suo [`SDKSystemMessage`](#sdksystemmessage). Quell'array include gli strumenti MCP ed elenca lo strumento Agent come `Task`, quindi converti ogni nome tramite `LEGACY_TOOL_NAME_ALIASES` prima di confrontarlo con `BUILTIN_TOOL_NAMES`.

5965 

5803### `AbortError`5966### `AbortError`

5804 5967 

5805Classe di errore personalizzata per le operazioni di abort.5968Classe di errore personalizzata per le operazioni di abort.

agent-teams.md +1 −1

Details

188 188 

189### Assegnare e rivendicare attività189### Assegnare e rivendicare attività

190 190 

191L'elenco di attività condiviso coordina il lavoro nel team. Il lead crea attività e i compagni di team le elaborano. Le attività hanno tre stati: in sospeso, in corso e completate. Le attività possono anche dipendere da altre attività: un'attività in sospeso con dipendenze non risolte non può essere rivendicata fino a quando quelle dipendenze non sono completate.191L'elenco di attività condiviso coordina il lavoro nel team. Il lead crea attività e i compagni di team le elaborano. Le attività hanno tre stati: in sospeso, in corso e completate. Un'attività può anche dipendere da altre attività e appare come bloccata nell'elenco delle attività fino a quando queste non sono completate. I compagni di team non rivendicano autonomamente un'attività bloccata, ma tu o il lead potete comunque assegnarla.

192 192 

193Gli agenti [senza i Task tools](https://code.claude.com/docs/it/tools-reference.md#task-tool-availability) coordinano attraverso messaggi invece della lista di attività condivisa.193Gli agenti [senza i Task tools](https://code.claude.com/docs/it/tools-reference.md#task-tool-availability) coordinano attraverso messaggi invece della lista di attività condivisa.

194 194 

agent-view.md +18 −9

Details

206* Una sessione terminata: il suo risultato206* Una sessione terminata: il suo risultato

207* Una sessione in lavorazione: la sua frase di stato completa207* Una sessione in lavorazione: la sua frase di stato completa

208 208 

209Subito dopo sono elencate le eventuali pull request collegate alla sessione. Per una sessione che ti sta aspettando, una riga come `waiting 3m` sotto di esse mostra da quanto tempo è in attesa, ed è l'unico tempo mostrato nel pannello. L'età sul bordo destro della riga è un numero diverso: conta da quando la sessione è stata avviata.209Subito dopo sono elencate le eventuali pull request collegate alla sessione. Sotto di esse appare un'ulteriore riga per una sessione che ti sta aspettando o che è in esecuzione in modalità sicura:

210 

211* Una riga come `waiting 3m`: da quanto tempo la sessione ti sta aspettando. L'età sul bordo destro della riga è un numero diverso: conta da quando la sessione è stata avviata

212* `safe mode · customizations are off`: questa sessione viene eseguita con [le tue personalizzazioni disattivate](https://code.claude.com/docs/it/debug-your-config.md#test-against-a-clean-configuration) perché l'hai avviata dalla tua shell con `claude --bg --safe-mode`. Puoi lasciarla così com'è. Per continuare la conversazione con le tue personalizzazioni di nuovo attive, esegui [`claude stop <id>`](#manage-sessions-from-the-shell) e poi [`claude --resume`](https://code.claude.com/docs/it/sessions#resume-a-session), entrambi nella tua shell

210 213 

211Nella maggior parte dei casi il pannello peek è sufficiente e non hai bisogno di aprire la trascrizione completa.214Nella maggior parte dei casi il pannello peek è sufficiente e non hai bisogno di aprire la trascrizione completa.

212 215 


468 471 

469#### Cosa viene trasportato quando invii in background472#### Cosa viene trasportato quando invii in background

470 473 

471L'invio in background avvia un nuovo processo che riprende dalla conversazione salvata, e il lavoro in background in corso si sposta in esso. I comandi shell in background in esecuzione, i subagent in background, i workflow dinamici, le attività pianificate che hai creato con [`/loop`](https://code.claude.com/docs/it/scheduled-tasks) e le [risposte automatiche di Claude ai commenti degli artefatti](https://code.claude.com/docs/it/artifacts.md#let-claude-reply-to-comments-on-its-own) vengono tutti trasportati e continuano a essere eseguiti lì. Un subagent si sposta insieme a tutto ciò che ha avviato, quindi viene trasportato solo quando anche tutto quel lavoro può spostarsi.474Quando invii la sessione in background, ogni tipo di lavoro in background in corso viene trasportato nella sessione in background, continua solo quando Claude lo riavvia lì, oppure si interrompe:

472 

473Quando un [workflow dinamico](https://code.claude.com/docs/it/workflows.md) ha ancora subagent in esecuzione, Claude Code chiede prima di inviare in background con la finestra di dialogo `Background this session?`, che dice quanti subagent verrebbero riavviati. Scegli `Stay` per lasciarli finire prima. Se confermi, Claude Code riproduce l'esecuzione nella sessione in background: i subagent che erano ancora in esecuzione ricominciano dall'inizio, quindi i token che hanno usato finora vengono spesi di nuovo. Vedi [Riprendere dopo una pausa](https://code.claude.com/docs/it/workflows.md#resume-after-a-pause) per sapere quali subagent completati restituiscono i loro risultati salvati e quali vengono eseguiti di nuovo.

474 475 

475Claude Code interrompe il lavoro in background che non può essere trasportato, come un [monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool) in esecuzione, e insieme ad esso interrompe un subagent in background che possiede un monitor. Quando uno di questi lavori è in esecuzione, Claude Code mostra la finestra di dialogo `Background this session?` in modo che tu possa confermare prima che interrompa il lavoro.476* **Viene trasportato**: i comandi shell in background in esecuzione, i subagent in background, le attività pianificate che hai creato con [`/loop`](https://code.claude.com/docs/it/scheduled-tasks) e le [risposte automatiche di Claude ai commenti degli artefatti](https://code.claude.com/docs/it/artifacts.md#let-claude-reply-to-comments-on-its-own) continuano a essere eseguiti nella sessione in background. Un subagent si sposta insieme a tutto ciò che ha avviato, quindi viene trasportato solo quando anche tutto quel lavoro può spostarsi.

477* **Continua solo quando Claude lo riavvia**: un [workflow dinamico](https://code.claude.com/docs/it/workflows.md) in esecuzione. Se il workflow non è proseguito quando controlli la sessione in background, [chiedi a Claude di riavviarlo](#dynamic-workflows-when-you-background).

478* **Si interrompe**: il lavoro che non può spostarsi nella sessione in background, come un [monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool) in esecuzione. Quando uno di questi lavori è in esecuzione, Claude Code mostra la finestra di dialogo `Background this session?` in modo che tu possa confermare prima che interrompa il lavoro. Un subagent in background che possiede un monitor si interrompe insieme al monitor.

476 479 

477Una volta in background, la sessione può avviare nuovi subagent, monitor e comandi in background, e questi continuano a essere eseguiti durante i successivi distacchi e ricollegamenti.480Una volta in background, la sessione può avviare nuovi subagent, monitor e comandi in background, e questi continuano a essere eseguiti durante i successivi distacchi e ricollegamenti.

478 481 


488 491 

489Vengono trasportate anche le directory che hai aggiunto durante la sessione con [`/add-dir`](https://code.claude.com/docs/it/permissions#additional-directories-grant-file-access-not-configuration). Trasportare `--allow-dangerously-skip-permissions` mantiene `bypassPermissions` raggiungibile nella sessione in background, ma non concede nulla di nuovo: la modalità richiede comunque che la tua [accettazione del disclaimer di bypass](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) risulti registrata.492Vengono trasportate anche le directory che hai aggiunto durante la sessione con [`/add-dir`](https://code.claude.com/docs/it/permissions#additional-directories-grant-file-access-not-configuration). Trasportare `--allow-dangerously-skip-permissions` mantiene `bypassPermissions` raggiungibile nella sessione in background, ma non concede nulla di nuovo: la modalità richiede comunque che la tua [accettazione del disclaimer di bypass](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) risulti registrata.

490 493 

494##### Workflow dinamici quando invii in background

495 

496Se un [workflow dinamico](https://code.claude.com/docs/it/workflows.md) non è proseguito dopo che hai inviato in background la sua sessione, chiedi a Claude di [riavviare il workflow](https://code.claude.com/docs/it/workflows.md#resume-after-you-leave-the-session). L'esecuzione continua solo quando Claude la riavvia nella sessione in background, e Claude Code può chiederti prima di approvare quel riavvio. La conversazione della sessione mostra un avviso che indica che il workflow `could not be resumed`.

497 

498Quando Claude riavvia il workflow, tutti i suoi subagent che erano ancora in esecuzione quando hai inviato in background la sessione ricominciano dall'inizio e spendono di nuovo i loro token. Se premi `←` o esegui `/background` mentre alcuni sono ancora in esecuzione, la finestra di dialogo `Background this session?` dice quanti sono. Per lasciarli finire prima, scegli `Stay`.

499 

491### Inviare un agente dalla tua shell500### Inviare un agente dalla tua shell

492 501 

493Passa `--bg` o la sua forma lunga `--background` per avviare una sessione che va direttamente in background:502Passa `--bg` o la sua forma lunga `--background` per avviare una sessione che va direttamente in background:


844* **Dopo un aggiornamento automatico**: il supervisor riavvia se stesso sulla nuova versione e sposta le sessioni inattive in background. Le sessioni che sono in esecuzione, in attesa di te, o collegate non vengono interrotte.853* **Dopo un aggiornamento automatico**: il supervisor riavvia se stesso sulla nuova versione e sposta le sessioni inattive in background. Le sessioni che sono in esecuzione, in attesa di te, o collegate non vengono interrotte.

845* **Il supervisor stesso si ferma**, ad esempio perché il suo processo è stato terminato dall'esterno di Claude Code: su macOS e Linux, le tue sessioni si fermano a meno che un nuovo supervisor non si colleghi entro circa un minuto. Per avviarne uno, esegui `claude agents` nella tua shell. Trascorso quel minuto, vedi [Mantieni le sessioni in esecuzione dopo l'arresto del supervisor](#keep-sessions-running-after-the-supervisor-stops).854* **Il supervisor stesso si ferma**, ad esempio perché il suo processo è stato terminato dall'esterno di Claude Code: su macOS e Linux, le tue sessioni si fermano a meno che un nuovo supervisor non si colleghi entro circa un minuto. Per avviarne uno, esegui `claude agents` nella tua shell. Trascorso quel minuto, vedi [Mantieni le sessioni in esecuzione dopo l'arresto del supervisor](#keep-sessions-running-after-the-supervisor-stops).

846 855 

847Quando il processo di una sessione si ferma o si riavvia, i comandi shell in background, i workflow dinamici e i subagent in background che Claude ha avviato in essa si trasferiscono al suo prossimo processo; i monitor in esecuzione e i comandi shell che un subagent ha avviato si fermano con il processo. L'eliminazione della sessione ferma tutto ciò che ha trasferito. Per fermare tutto con il processo invece, imposta [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](https://code.claude.com/docs/it/env-vars#variables) su `1`.856Quando il processo di una sessione si ferma o si riavvia, i comandi shell in background e i subagent in background che Claude ha avviato in essa si trasferiscono al suo prossimo processo. Un workflow dinamico [continua solo quando Claude lo riavvia](#dynamic-workflows-when-you-background). I monitor in esecuzione e i comandi shell che un subagent ha avviato si fermano con il processo. Se elimini la sessione, tutto ciò che ha trasferito si ferma. Per fermare tutto con il processo invece, imposta [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](https://code.claude.com/docs/it/env-vars#variables) su `1`.

848 857 

849Il supervisor e le sue sessioni si autenticano con le stesse credenziali archiviate delle tue sessioni interattive. Per quali impostazioni e variabili di shell raggiungono una sessione, incluso `PATH`, vedi [Impostazioni e provider](#settings-and-provider). Per gli endpoint del gateway, vedi [Gateway LLM](#llm-gateway).858Il supervisor e le sue sessioni si autenticano con le stesse credenziali archiviate delle tue sessioni interattive. Per quali impostazioni e variabili di shell raggiungono una sessione, incluso `PATH`, vedi [Impostazioni e provider](#settings-and-provider). Per gli endpoint del gateway, vedi [Gateway LLM](#llm-gateway).

850 859 


897 906 

898### Il passaggio in background mostra una finestra di dialogo `Background this session?`907### Il passaggio in background mostra una finestra di dialogo `Background this session?`

899 908 

900Se premi `←` per mandare in background la sessione corrente e Claude Code mostra una finestra di dialogo `Background this session?`, la sessione ha del lavoro in background in corso che il passaggio in background interromperebbe, riavvierebbe o lascerebbe in esecuzione senza supervisione, e Claude Code chiede conferma prima di fare una di queste cose:909Quando premi `←` per mandare in background una sessione, una finestra di dialogo `Background this session?` significa che la sessione ha del lavoro in background in corso che verrebbe interrotto, bloccato a metà o lasciato in esecuzione senza supervisione:

901 910 

902* **Lavoro che non può essere spostato**: la sessione ha del lavoro che non può essere spostato nella sessione in background, come un [monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool) in esecuzione. La finestra di dialogo indica il lavoro in background che Claude Code interromperebbe e, separatamente, conta le attività che vengono trasferite.911* **Lavoro che non può essere spostato**: la sessione ha del lavoro che non può essere spostato nella sessione in background, come un [monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool) in esecuzione. La finestra di dialogo indica il lavoro in background che Claude Code interromperebbe e, separatamente, conta le attività che vengono trasferite.

903* **Un workflow con subagent in esecuzione**: un [workflow dinamico](https://code.claude.com/docs/it/workflows.md) ha ancora dei subagent in esecuzione. Il workflow stesso viene trasferito, ma i suoi subagent in esecuzione ripartono dall'inizio, e la finestra di dialogo indica quanti sono.912* **Un workflow con subagent in esecuzione**: un [workflow dinamico](https://code.claude.com/docs/it/workflows.md) ha ancora dei subagent in esecuzione. Se passi comunque in background, quei subagent si interrompono, e la finestra di dialogo indica quanti sono. Ripartono dall'inizio quando Claude [riavvia il workflow nella sessione in background](#dynamic-workflows-when-you-background).

904* **Risposte automatiche agli artefatti**: Claude sta [rispondendo autonomamente ai commenti su un artefatto](https://code.claude.com/docs/it/artifacts.md#let-claude-reply-to-comments-on-its-own). Queste risposte continuano nella sessione in background, e la finestra di dialogo lo indica.913* **Risposte automatiche agli artefatti**: Claude sta [rispondendo autonomamente ai commenti su un artefatto](https://code.claude.com/docs/it/artifacts.md#let-claude-reply-to-comments-on-its-own). Queste risposte continuano nella sessione in background, e la finestra di dialogo lo indica.

905 914 

906Esegui `/tasks` per vedere tutto ciò che è in esecuzione, quindi conferma per passare comunque in background oppure scegli `Stay` per lasciare che il lavoro finisca prima. Consulta [Cosa viene trasferito quando passi in background](#what-carries-over-when-you-background) per sapere quali tipi di lavoro vengono trasferiti e quali Claude Code interrompe.915Esegui `/tasks` per vedere tutto ciò che è in esecuzione, quindi conferma per passare comunque in background oppure scegli `Stay` per lasciare che il lavoro finisca prima. Consulta [Cosa viene trasferito quando passi in background](#what-carries-over-when-you-background) per sapere quali tipi di lavoro vengono trasferiti e quali Claude Code interrompe.


1118| v2.1.200 | Una versione più vecchia di Claude Code che riscrive l'elenco delle sessioni in `roster.json` preserva i campi scritti da una versione più nuova, corrispondendo alla garanzia `state.json` esistente, quindi le sessioni avviate dalla versione più nuova continuano ad accettare input dopo il riavvio del supervisor. Quando apri una sessione che ha smesso di rispondere, il supervisor riavvia il suo processo e la sessione continua la risposta interrotta da dove si era fermata. Agent view applica un flag `--plugin-dir` posizionato dopo `agents` al proprio completamento automatico di subagent e skill nell'input di dispatch così come alle sessioni inviate. |1127| v2.1.200 | Una versione più vecchia di Claude Code che riscrive l'elenco delle sessioni in `roster.json` preserva i campi scritti da una versione più nuova, corrispondendo alla garanzia `state.json` esistente, quindi le sessioni avviate dalla versione più nuova continuano ad accettare input dopo il riavvio del supervisor. Quando apri una sessione che ha smesso di rispondere, il supervisor riavvia il suo processo e la sessione continua la risposta interrotta da dove si era fermata. Agent view applica un flag `--plugin-dir` posizionato dopo `agents` al proprio completamento automatico di subagent e skill nell'input di dispatch così come alle sessioni inviate. |

1119| v2.1.199 | Una sessione in background il cui processo esce prima di finire l'avvio su un host con poca memoria mostra `possibly low memory — free some up and retry` nello stato della sua riga invece di solo il motivo dell'uscita nudo. Mettere in background una sessione con `←` o `/background` trasporta il suo `/color` alla nuova riga. |1128| v2.1.199 | Una sessione in background il cui processo esce prima di finire l'avvio su un host con poca memoria mostra `possibly low memory — free some up and retry` nello stato della sua riga invece di solo il motivo dell'uscita nudo. Mettere in background una sessione con `←` o `/background` trasporta il suo `/color` alla nuova riga. |

1120| v2.1.198 | Agent view invia una notifica attraverso `preferredNotifChannel` quando una sessione in background ha bisogno di input, finisce, o fallisce, e attiva l'hook `Notification` con il tipo `agent_needs_input` o `agent_completed`. `←` e `/exit` dentro `claude attach <id>` ritornano a agent view invece di uscire alla shell; `Ctrl+Z` ritorna alla shell. Una sessione in background che ha isolato il suo lavoro in un worktree esegue il commit, esegue il push del proprio branch isolato, mai `main` o `master`, e apre una pull request in bozza quando finisce invece di chiedere prima. `/login` viene eseguito in agent view e apre la finestra di dialogo di accesso. La finestra di dialogo di uscita `Background work is running` offre `Move to background and exit`. Il trasferimento di uscita copre anche i subagent in background, che riprendono dalla loro trascrizione al prossimo risveglio invece di essere segnalati come falliti. `claude --bg` combinato con `-p` o `--print` viene rifiutato con un errore. L'host della sessione in background richiede il permesso di rete locale macOS al primo accesso LAN invece di fallire con `connect: no route to host`. |1129| v2.1.198 | Agent view invia una notifica attraverso `preferredNotifChannel` quando una sessione in background ha bisogno di input, finisce, o fallisce, e attiva l'hook `Notification` con il tipo `agent_needs_input` o `agent_completed`. `←` e `/exit` dentro `claude attach <id>` ritornano a agent view invece di uscire alla shell; `Ctrl+Z` ritorna alla shell. Una sessione in background che ha isolato il suo lavoro in un worktree esegue il commit, esegue il push del proprio branch isolato, mai `main` o `master`, e apre una pull request in bozza quando finisce invece di chiedere prima. `/login` viene eseguito in agent view e apre la finestra di dialogo di accesso. La finestra di dialogo di uscita `Background work is running` offre `Move to background and exit`. Il trasferimento di uscita copre anche i subagent in background, che riprendono dalla loro trascrizione al prossimo risveglio invece di essere segnalati come falliti. `claude --bg` combinato con `-p` o `--print` viene rifiutato con un errore. L'host della sessione in background richiede il permesso di rete locale macOS al primo accesso LAN invece di fallire con `connect: no route to host`. |

1121| v2.1.196 | Una singola pressione di `←` mette in background una sessione in primo piano; le versioni precedenti richiedevano due pressioni, con un suggerimento nel footer e una conferma. `--dangerously-skip-permissions` passato a `claude agents` mostra il disclaimer di bypass invece di essere silenziosamente scartato. Le sessioni interattive che non hai mai nominato portano un nome predefinito come `my-app-3f` negli elenchi di sessioni e `claude agents --json`. I comandi shell in background e i workflow dinamici sopravvivono al processo della sessione che viene fermato, riavviato, o aggiornato, incluso su Windows; imposta `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1` per disattivare il trasferimento. Una trascrizione interpretata erroneamente come vuota al riavvio viene rinominata con un suffisso `.orphaned-` invece di essere eliminata. |1130| v2.1.196 | Una singola pressione di `←` mette in background una sessione in primo piano; le versioni precedenti richiedevano due pressioni, con un suggerimento nel footer e una conferma. `--dangerously-skip-permissions` passato a `claude agents` mostra il disclaimer di bypass invece di essere silenziosamente scartato. Le sessioni interattive che non hai mai nominato portano un nome predefinito come `my-app-3f` negli elenchi di sessioni e `claude agents --json`. I comandi shell in background sopravvivono al processo della sessione che viene fermato, riavviato, o aggiornato, incluso su Windows; imposta `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1` per disattivare il trasferimento. Una trascrizione interpretata erroneamente come vuota al riavvio viene rinominata con un suffisso `.orphaned-` invece di essere eliminata. |

1122| v2.1.195 | Il lavoro in background in corso si trasferisce anche quando metti in background una sessione su Windows. Il gruppo `Completed` riempie lo spazio verticale rimanente e l'intestazione si compatta su terminali corti. Una versione più vecchia di Claude Code non scarta più i campi `state.json` delle sessioni più nuove né nasconde quelle sessioni da `claude agents`. Il collegamento a una sessione fermata passa immediatamente invece di mostrare una schermata vuota per fino a cinque secondi. Un supervisor che non riesce ad accettare connessioni esce e rilascia il suo blocco da solo. |1131| v2.1.195 | Il lavoro in background in corso si trasferisce anche quando metti in background una sessione su Windows. Il gruppo `Completed` riempie lo spazio verticale rimanente e l'intestazione si compatta su terminali corti. Una versione più vecchia di Claude Code non scarta più i campi `state.json` delle sessioni più nuove né nasconde quelle sessioni da `claude agents`. Il collegamento a una sessione fermata passa immediatamente invece di mostrare una schermata vuota per fino a cinque secondi. Un supervisor che non riesce ad accettare connessioni esce e rilascia il suo blocco da solo. |

1123| v2.1.191 | `claude --bg` con un nome `--agent` che non corrisponde a nessuno dei tuoi subagent fallisce il lancio: la sessione esce immediatamente con un errore `--agent '<name>' not found` invece di eseguire con l'agente predefinito. |1132| v2.1.191 | `claude --bg` con un nome `--agent` che non corrisponde a nessuno dei tuoi subagent fallisce il lancio: la sessione esce immediatamente con un errore `--agent '<name>' not found` invece di eseguire con l'agente predefinito. |

1124| v2.1.174 | Le sessioni in background non ereditano più variabili di endpoint gateway come `ANTHROPIC_BASE_URL` dalla shell di avvio del supervisor; il supervisor fornisce uno snapshot di credenziali fresco ai worker pre-riscaldati, correggendo gli errori spurii di `Could not resolve authentication method`. |1133| v2.1.174 | Le sessioni in background non ereditano più variabili di endpoint gateway come `ANTHROPIC_BASE_URL` dalla shell di avvio del supervisor; il supervisor fornisce uno snapshot di credenziali fresco ai worker pre-riscaldati, correggendo gli errori spurii di `Could not resolve authentication method`. |

Details

927 927 

928Quando passi, elimina qualsiasi riga `serve_to_desktop` nella stessa modifica che rinomina i blocchi. Dove un'istruzione nomina il blocco `cli`, usa il tuo blocco `code`.928Quando passi, elimina qualsiasi riga `serve_to_desktop` nella stessa modifica che rinomina i blocchi. Dove un'istruzione nomina il blocco `cli`, usa il tuo blocco `code`.

929 929 

930`serve_to_desktop: true` è un modo legacy per offrire le impostazioni `cli` di una policy alla scheda Code. Non ha effetto quando Claude Desktop si connette tramite [`bootstrapUrl`](#claude-desktop-overlay). Finché le tue policy usano `cli`, un avviso all'avvio che nomina questa chiave significa che quelle impostazioni non raggiungono la scheda Code:

931 

932* **Per coprire la scheda Code**: passa a `code`, una volta che le macchine degli utenti soddisfano le condizioni in [Applicare le impostazioni `code` nella scheda Code](#apply-code-settings-in-the-code-tab)

933* **Per restare su `cli`**: imposta `serve_to_desktop: false` accanto a `cli` in una policy per silenziare l'avviso

934 

930#### Cosa va in `cli`935#### Cosa va in `cli`

931 936 

932Ogni valore `code` o `cli` è un documento `managed-settings.json` completo di Claude Code, lo stesso schema che distribuiresti tramite MDM o `/etc/claude-code/managed-settings.json`, espresso qui in YAML. La CLI applica il documento ricevuto al livello gestito, sopra le impostazioni utente e di progetto, al posto delle impostazioni gestite dal server. Di conseguenza ignora le impostazioni [limitate alle sorgenti di policy a livello di sistema operativo](https://code.claude.com/docs/it/server-managed-settings.md#current-limitations), come `policyHelper` e `wslInheritsWindowsSettings`.937Ogni valore `code` o `cli` è un documento `managed-settings.json` completo di Claude Code, lo stesso schema che distribuiresti tramite MDM o `/etc/claude-code/managed-settings.json`, espresso qui in YAML. La CLI applica il documento ricevuto al livello gestito, sopra le impostazioni utente e di progetto, al posto delle impostazioni gestite dal server. Di conseguenza ignora le impostazioni [limitate alle sorgenti di policy a livello di sistema operativo](https://code.claude.com/docs/it/server-managed-settings.md#current-limitations), come `policyHelper` e `wslInheritsWindowsSettings`.


974| - | - | - |979| - | - | - |

975| `availableModels` | Gateway + CLI | Allowlist dei modelli. Controllata anche su `/v1/messages`, quindi un client modificato non può aggirarla. |980| `availableModels` | Gateway + CLI | Allowlist dei modelli. Controllata anche su `/v1/messages`, quindi un client modificato non può aggirarla. |

976| [`deniedModels`](https://code.claude.com/docs/it/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/it/settings-reference#availablemodelsmatch) | Gateway + CLI | [Blocca modelli o versioni specifici](https://code.claude.com/docs/it/model-config.md#block-specific-models-or-versions) che `availableModels` altrimenti consentirebbe. Un modello bloccato viene rifiutato con un `400` su `/v1/messages` ed è escluso da `/v1/models`. Il controllo del gateway richiede Claude Code v2.1.299 o successiva sul server del gateway. Il controllo della CLI richiede la v2.1.283 o successiva sui client, e i client precedenti ignorano entrambe le chiavi. |981| [`deniedModels`](https://code.claude.com/docs/it/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/it/settings-reference#availablemodelsmatch) | Gateway + CLI | [Blocca modelli o versioni specifici](https://code.claude.com/docs/it/model-config.md#block-specific-models-or-versions) che `availableModels` altrimenti consentirebbe. Un modello bloccato viene rifiutato con un `400` su `/v1/messages` ed è escluso da `/v1/models`. Il controllo del gateway richiede Claude Code v2.1.299 o successiva sul server del gateway. Il controllo della CLI richiede la v2.1.283 o successiva sui client, e i client precedenti ignorano entrambe le chiavi. |

977| `permissions.allow` / `.deny` | CLI | Regole per strumenti e comandi. Vedi [Permessi](https://code.claude.com/docs/it/permissions.md). |982| `permissions.allow` / `.deny` | CLI | Regole per strumenti e comandi. Consulta [Permessi](https://code.claude.com/docs/it/permissions.md) e [cosa non corrisponde a una regola Bash](https://code.claude.com/docs/it/permissions.md#bash-rule-limits). |

978| `permissions.disableBypassPermissionsMode` | CLI | Imposta su `disable` per bloccare [`bypassPermissions`](https://code.claude.com/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode), la modalità che salta le richieste di permesso, e il flag `--dangerously-skip-permissions` |983| `permissions.disableBypassPermissionsMode` | CLI | Imposta su `disable` per bloccare [`bypassPermissions`](https://code.claude.com/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode), la modalità che salta le richieste di permesso, e il flag `--dangerously-skip-permissions` |

979| `allowManagedPermissionRulesOnly` | CLI | Quando `true`, le impostazioni gestite diventano l'unica fonte di impostazioni per le regole di permesso. La voce [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/it/settings-reference#allowmanagedpermissionrulesonly) elenca ogni fonte che Claude Code ignora in quel caso. |984| `allowManagedPermissionRulesOnly` | CLI | Quando `true`, le impostazioni gestite diventano l'unica fonte di impostazioni per le regole di permesso. La voce [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/it/settings-reference#allowmanagedpermissionrulesonly) elenca ogni fonte che Claude Code ignora in quel caso. |

980| `env` | CLI | Variabili d'ambiente sottoposte a merge nel processo CLI. Da usare per telemetria, aggiornamento automatico e override dei nomi dei modelli. |985| `env` | CLI | Variabili d'ambiente sottoposte a merge nel processo CLI. Da usare per telemetria, aggiornamento automatico e override dei nomi dei modelli. |


1003 1008 

1004La chiave `cli` si chiamava `settings` nelle release precedenti, e il gateway accetta ancora quella grafia come alias. Per i nuovi deploy, usa [`code`](#choose-cli-or-code).1009La chiave `cli` si chiamava `settings` nelle release precedenti, e il gateway accetta ancora quella grafia come alias. Per i nuovi deploy, usa [`code`](#choose-cli-or-code).

1005 1010 

1011#### Test a policy before deployment

1012 

1013Per testare una modifica a una policy, avvia il gateway su un database Postgres usa e getta. Il gateway si connette a Postgres e applica le migrazioni del suo schema prima di controllare il contenuto dei blocchi `cli`, `code` e `desktop`. Quando non riesce a raggiungere il database, l'avvio si ferma su `could not connect to Postgres` e non segnala nulla sul loro contenuto.

1014 

1006#### Finestra di contesto nelle sessioni da terminale1015#### Finestra di contesto nelle sessioni da terminale

1007 1016 

1008Le sessioni da terminale con accesso effettuato tramite `/login` usano la finestra di contesto da 1M per Opus 4.7 e successivi, Sonnet 5 e successivi, e i modelli Fable. L'ID del modello non ha bisogno del suffisso `[1m]`, e le sessioni si compattano a circa 967K token. Prima di Claude Code v2.1.287 sulla macchina dello sviluppatore, Claude Code trattava i modelli Opus e Fable come dotati di una finestra da 200K a meno che l'ID del modello non terminasse con `[1m]`.1017Le sessioni da terminale con accesso effettuato tramite `/login` usano la finestra di contesto da 1M per Opus 4.7 e successivi, Sonnet 5 e successivi, e i modelli Fable. L'ID del modello non ha bisogno del suffisso `[1m]`, e le sessioni si compattano a circa 967K token. Prima di Claude Code v2.1.287 sulla macchina dello sviluppatore, Claude Code trattava i modelli Opus e Fable come dotati di una finestra da 200K a meno che l'ID del modello non terminasse con `[1m]`.


1589 # The contractors policy inherits this key.1598 # The contractors policy inherits this key.

1590 enforceAvailableModels: true1599 enforceAvailableModels: true

1591 permissions:1600 permissions:

1592 allow: [Read, Grep, Bash, Edit]1601 allow: [Read, Grep, Edit]

1593 deny: ["WebFetch"]1602 deny: ["WebFetch"]

1594 env: { HTTP_PROXY: http://proxy.example.com:8080 }1603 env: { HTTP_PROXY: http://proxy.example.com:8080 }

1595 1604 

Details

393| La `/login` di uno sviluppatore mostra il selettore di account standard invece della schermata **Cloud gateway** | `forceLoginMethod` o `forceLoginGatewayUrl` non è impostato nelle impostazioni gestite su quella macchina | Distribuisci il [file delle impostazioni gestite](https://code.claude.com/docs/it/claude-apps-gateway#set-the-gateway-url) al dispositivo; `/login` legge l'URL del gateway da lì |393| La `/login` di uno sviluppatore mostra il selettore di account standard invece della schermata **Cloud gateway** | `forceLoginMethod` o `forceLoginGatewayUrl` non è impostato nelle impostazioni gestite su quella macchina | Distribuisci il [file delle impostazioni gestite](https://code.claude.com/docs/it/claude-apps-gateway#set-the-gateway-url) al dispositivo; `/login` legge l'URL del gateway da lì |

394| Le richieste di uno sviluppatore falliscono con `Not signed in to the Cloud gateway — run /login.` | Le impostazioni gestite della macchina impostano `forceLoginMethod: "gateway"` o `forceLoginGatewayUrl`, e la sessione non ha un accesso al gateway. Un accesso a claude.ai residuo non soddisfa il requisito. | Chiedi allo sviluppatore di eseguire `/login` e completare l'accesso al gateway. Vedi anche [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/it/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |394| Le richieste di uno sviluppatore falliscono con `Not signed in to the Cloud gateway — run /login.` | Le impostazioni gestite della macchina impostano `forceLoginMethod: "gateway"` o `forceLoginGatewayUrl`, e la sessione non ha un accesso al gateway. Un accesso a claude.ai residuo non soddisfa il requisito. | Chiedi allo sviluppatore di eseguire `/login` e completare l'accesso al gateway. Vedi anche [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/it/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |

395| Claude Desktop segnala che la sua configurazione di bootstrap non poteva essere recuperata | `/user/bootstrap` ha restituito 404: il criterio che corrisponde all'utente non contiene una chiave `desktop`, oppure nessun criterio corrisponde. Il log di audit del gateway registra ogni rifiuto come `desktop_bootstrap.denied` con il motivo. | Aggiungi un blocco `desktop` al criterio che corrisponde all'utente, oppure al livello base `match: {}`; un `desktop: {}` vuoto è sufficiente. Vedi [Claude Desktop overlay](https://code.claude.com/docs/it/claude-apps-gateway-config.md#claude-desktop-overlay). |395| Claude Desktop segnala che la sua configurazione di bootstrap non poteva essere recuperata | `/user/bootstrap` ha restituito 404: il criterio che corrisponde all'utente non contiene una chiave `desktop`, oppure nessun criterio corrisponde. Il log di audit del gateway registra ogni rifiuto come `desktop_bootstrap.denied` con il motivo. | Aggiungi un blocco `desktop` al criterio che corrisponde all'utente, oppure al livello base `match: {}`; un `desktop: {}` vuoto è sufficiente. Vedi [Claude Desktop overlay](https://code.claude.com/docs/it/claude-apps-gateway-config.md#claude-desktop-overlay). |

396| Il log di audit mostra `auth.denied` con `reason: invalid_token` su `/v1/logs` o `/v1/metrics` | Hai impostato [`otelHeadersHelper`](https://code.claude.com/docs/it/settings-reference#otelheadershelper) nelle impostazioni gestite di una macchina. In una sessione di Claude Desktop su quella macchina, Claude Code invia l'intestazione `Authorization` fornita dall'helper al relay di telemetria del gateway al posto del token di sessione. Dove Claude Desktop include una versione di Claude Code precedente a v2.1.307, ottieni lo stesso rifiuto se imposti un'intestazione `Authorization` in `OTEL_EXPORTER_OTLP_HEADERS` o in una sua forma per singolo segnale in quelle impostazioni. | Rimuovi l'helper da quelle impostazioni. Dove Claude Desktop include una versione di Claude Code precedente a v2.1.307, rimuovi la variabile. |

396| L'avvio mostra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La build di Claude Code installata precede il supporto del gateway | Chiedi allo sviluppatore di aggiornare Claude Code a una versione che include il supporto Cloud gateway |397| L'avvio mostra `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La build di Claude Code installata precede il supporto del gateway | Chiedi allo sviluppatore di aggiornare Claude Code a una versione che include il supporto Cloud gateway |

397| L'avvio esce con `Administrator policy requires a Cloud gateway sign-in on this machine` | L'ambiente dello sviluppatore imposta `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, le loro impostazioni configurano un [`apiKeyHelper`](https://code.claude.com/docs/it/settings-reference#apikeyhelper), oppure una chiave API da un accesso precedente a Claude Console è ancora salvata | Chiedi allo sviluppatore di cancellare ciascuno che si applica: annulla l'impostazione della variabile, rimuovi la voce `apiKeyHelper`, oppure esegui `claude auth logout` per rimuovere la chiave salvata. Una sessione che seleziona un provider cloud con `CLAUDE_CODE_USE_*` quindi inizia senza accesso; per ogni altra sessione, chiedigli di avviare `claude` e accedere con `/login`. Vedi anche [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/it/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |398| L'avvio esce con `Administrator policy requires a Cloud gateway sign-in on this machine` | L'ambiente dello sviluppatore imposta `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, le loro impostazioni configurano un [`apiKeyHelper`](https://code.claude.com/docs/it/settings-reference#apikeyhelper), oppure una chiave API da un accesso precedente a Claude Console è ancora salvata | Chiedi allo sviluppatore di cancellare ciascuno che si applica: annulla l'impostazione della variabile, rimuovi la voce `apiKeyHelper`, oppure esegui `claude auth logout` per rimuovere la chiave salvata. Una sessione che seleziona un provider cloud con `CLAUDE_CODE_USE_*` quindi inizia senza accesso; per ogni altra sessione, chiedigli di avviare `claude` e accedere con `/login`. Vedi anche [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/it/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |

398| L'avvio o `/login` segnala `Claude Code may not be enabled for your organization` dopo un 403 al caricamento delle impostazioni gestite | Il gateway, o qualcosa davanti ad esso, ha risposto alla richiesta `/managed/settings` con 403. La rotta delle impostazioni del gateway stesso non risponde mai con 403. Lo stato proviene dai controlli IP [`access_control`](https://code.claude.com/docs/it/claude-apps-gateway-config#http-tuning) o da un proxy o WAF davanti al gateway. Il log di audit registra un rifiuto del controllo IP come `access.denied` con il motivo. Lo sviluppatore rimane connesso. | Controlla il log di audit per `access.denied` al momento dell'errore e correggi gli elenchi `access_control` o il front end, quindi chiedi allo sviluppatore di avviare `claude` di nuovo |399| L'avvio o `/login` segnala `Claude Code may not be enabled for your organization` dopo un 403 al caricamento delle impostazioni gestite | Il gateway, o qualcosa davanti ad esso, ha risposto alla richiesta `/managed/settings` con 403. La rotta delle impostazioni del gateway stesso non risponde mai con 403. Lo stato proviene dai controlli IP [`access_control`](https://code.claude.com/docs/it/claude-apps-gateway-config#http-tuning) o da un proxy o WAF davanti al gateway. Il log di audit registra un rifiuto del controllo IP come `access.denied` con il motivo. Lo sviluppatore rimane connesso. | Controlla il log di audit per `access.denied` al momento dell'errore e correggi gli elenchi `access_control` o il front end, quindi chiedi allo sviluppatore di avviare `claude` di nuovo |

Details

288 288 

289I [team di agenti](https://code.claude.com/docs/it/agent-teams.md) sono disabilitati per impostazione predefinita ma possono essere abilitati aggiungendo `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` alle [variabili di ambiente](https://code.claude.com/docs/it/cloud-environments.md#set-environment-variables).289I [team di agenti](https://code.claude.com/docs/it/agent-teams.md) sono disabilitati per impostazione predefinita ma possono essere abilitati aggiungendo `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` alle [variabili di ambiente](https://code.claude.com/docs/it/cloud-environments.md#set-environment-variables).

290 290 

291### Suggerimenti di plugin nella conversazione

292 

293Una scheda nella conversazione che elenca uno o più [plugin](https://code.claude.com/docs/it/plugins/overview.md), con un pulsante **Add**, indica che Claude ti sta suggerendo dei plugin per la tua attività. Claude può fare questi suggerimenti senza che tu lo chieda. Non devi rispondere, e Claude prosegue con l'attività in ogni caso.

294 

295#### Aggiungere o rimuovere un plugin suggerito

296 

297Seleziona **Add** su un plugin per attivarlo per il tuo account claude.ai, dove rimane attivo anche dopo la fine della sessione. Per annullare, apri il plugin aggiunto dalla scheda, seleziona **Manage** per raggiungere la pagina del plugin su claude.ai e rimuovi il plugin da quella pagina.

298 

299#### Disattivare i suggerimenti di plugin

300 

301Per impedire a Claude di suggerire plugin, nega gli strumenti `SearchPlugins` e `SuggestPluginInstall` con le [regole di permesso](https://code.claude.com/docs/it/permissions.md#manage-permissions). In una sessione con un solo repository al di fuori di un [progetto](https://code.claude.com/docs/it/claude-projects.md), esegui il commit delle regole nel file `.claude/settings.json` di quel repository, elencando entrambi i nomi degli strumenti in `permissions.deny`:

302 

303```json theme={null}

304{

305 "permissions": {

306 "deny": ["SearchPlugins", "SuggestPluginInstall"]

307 }

308}

309```

310 

311Claude Code ignora le regole di permesso nel file `.claude/settings.json` del repository, incluse queste regole di negazione, quando le [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md) che si applicano alla sessione impostano [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/it/settings-reference#allowmanagedpermissionrulesonly). In tal caso, inserisci invece le regole in quelle impostazioni gestite. Per altre configurazioni, come una sessione con più repository o un thread cloud in un progetto, consulta quali [impostazioni raggiungono una sessione cloud](https://code.claude.com/docs/it/settings.md#settings-in-cloud-sessions).

312 

291### Riprendere un messaggio in coda313### Riprendere un messaggio in coda

292 314 

293Se invii un messaggio mentre Claude sta lavorando, il messaggio rimane in coda finché Claude non lo legge. Per riprendere un messaggio in coda, fai clic sulla ✕ su di esso. Il testo ritorna nella casella dei messaggi, così puoi modificarlo o inviare qualcos'altro.315Se invii un messaggio mentre Claude sta lavorando, il messaggio rimane in coda finché Claude non lo legge. Per riprendere un messaggio in coda, fai clic sulla ✕ su di esso. Il testo ritorna nella casella dei messaggi, così puoi modificarlo o inviare qualcos'altro.

Details

103 103 

104Oltre alla configurazione che scrivi tu, `~/.claude` contiene i dati che Claude Code scrive durante le sessioni. Questi file sono in testo semplice. Tutto ciò che passa attraverso uno strumento viene scritto in una trascrizione su disco: contenuti dei file, output dei comandi, testo incollato.104Oltre alla configurazione che scrivi tu, `~/.claude` contiene i dati che Claude Code scrive durante le sessioni. Questi file sono in testo semplice. Tutto ciò che passa attraverso uno strumento viene scritto in una trascrizione su disco: contenuti dei file, output dei comandi, testo incollato.

105 105 

106La trascrizione può contenere anche ciò che Claude Code invia al modello insieme ai tuoi messaggi:

107 

108* Il prompt di sistema

109* Le definizioni degli strumenti

110* I parametri delle richieste

111* I file di istruzioni che ha caricato, come CLAUDE.md

112 

106### Ripuliti automaticamente113### Ripuliti automaticamente

107 114 

108Claude Code elimina i file nei percorsi seguenti una volta che sono più vecchi di [`cleanupPeriodDays`](https://code.claude.com/docs/it/settings-reference#cleanupperioddays), purché riesca a determinare in modo sicuro il periodo di conservazione. Il valore predefinito è 30 giorni e il minimo è 1; impostare `0` produce un errore di convalida. La stessa soglia di età si applica alla rimozione automatica dei [worktree orfani](https://code.claude.com/docs/it/worktrees.md#clean-up-subagent-and-background-session-worktrees).115Claude Code elimina i file nei percorsi seguenti una volta che sono più vecchi di [`cleanupPeriodDays`](https://code.claude.com/docs/it/settings-reference#cleanupperioddays), purché riesca a determinare in modo sicuro il periodo di conservazione. Il valore predefinito è 30 giorni e il minimo è 1; impostare `0` produce un errore di convalida. La stessa soglia di età si applica alla rimozione automatica dei [worktree orfani](https://code.claude.com/docs/it/worktrees.md#clean-up-subagent-and-background-session-worktrees).

109 116 

110| Percorso in `~/.claude/` | Contenuto |117| Percorso in `~/.claude/` | Contenuto |

111| - | - |118| - | - |

112| `projects/<project>/<session>.jsonl` | Trascrizione completa della conversazione: ogni messaggio, chiamata a uno strumento e risultato di uno strumento |119| `projects/<project>/<session>.jsonl` | Trascrizione della conversazione: messaggi, chiamate agli strumenti e risultati degli strumenti, più il prompt di sistema, le definizioni degli strumenti e i parametri delle richieste che Claude Code ha inviato al modello |

113| `projects/<project>/<session>.orphaned-<timestamp>-<suffix>.jsonl`, `projects/<project>/<session>.jsonl.superseded-<timestamp>` | Una trascrizione precedente della sessione che Claude Code ha messo da parte invece di sovrascriverla o eliminarla. Non compare nel selettore delle sessioni |120| `projects/<project>/<session>.orphaned-<timestamp>-<suffix>.jsonl`, `projects/<project>/<session>.jsonl.superseded-<timestamp>` | Una trascrizione precedente della sessione che Claude Code ha messo da parte invece di sovrascriverla o eliminarla. Non compare nel selettore delle sessioni |

114| `projects/<project>/<session>/subagents/` | Trascrizioni delle conversazioni dei [subagent](https://code.claude.com/docs/it/sub-agents.md), rimosse insieme alla trascrizione della sessione principale quando questa scade |121| `projects/<project>/<session>/subagents/` | Trascrizioni dei [subagent](https://code.claude.com/docs/it/sub-agents.md) nello stesso formato della trascrizione della sessione, rimosse insieme alla trascrizione della sessione principale quando questa scade |

115| `projects/<project>/<session>/tool-results/` | Output di grandi dimensioni degli strumenti riversati in file separati e copie a grandezza intera delle [immagini restituite dagli strumenti MCP](https://code.claude.com/docs/it/mcp.md#images-in-tool-results) |122| `projects/<project>/<session>/tool-results/` | Output di grandi dimensioni degli strumenti riversati in file separati e copie a grandezza intera delle [immagini restituite dagli strumenti MCP](https://code.claude.com/docs/it/mcp.md#images-in-tool-results) |

116| `projects/<project>/<session>/mcp-tasks/` | Ciò che serve a una sessione ripresa per seguire di nuovo le sue [attività MCP](https://code.claude.com/docs/it/mcp.md#mcp-tasks-that-run-on-the-server) in esecuzione, e i risultati delle attività completate che Claude non ha ancora letto |123| `projects/<project>/<session>/mcp-tasks/` | Ciò che serve a una sessione ripresa per seguire di nuovo le sue [attività MCP](https://code.claude.com/docs/it/mcp.md#mcp-tasks-that-run-on-the-server) in esecuzione, e i risultati delle attività completate che Claude non ha ancora letto |

117| `file-history/<session>/` | Snapshot precedenti alla modifica dei file cambiati da Claude, usati per il [ripristino dei checkpoint](https://code.claude.com/docs/it/checkpointing.md). Contiene gli snapshot dei 100 checkpoint più recenti; i file di snapshot a cui nessun checkpoint conservato fa riferimento vengono eliminati, tranne il primo snapshot di ciascun file |124| `file-history/<session>/` | Snapshot precedenti alla modifica dei file cambiati da Claude, usati per il [ripristino dei checkpoint](https://code.claude.com/docs/it/checkpointing.md). Contiene gli snapshot dei 100 checkpoint più recenti; i file di snapshot a cui nessun checkpoint conservato fa riferimento vengono eliminati, tranne il primo snapshot di ciascun file |

Details

6 6 

7> Installa il Claude Security plugin per scansionare il tuo codebase alla ricerca di vulnerabilità in una sessione Claude Code e trasforma i risultati in patch che esamini e applichi.7> Installa il Claude Security plugin per scansionare il tuo codebase alla ricerca di vulnerabilità in una sessione Claude Code e trasforma i risultati in patch che esamini e applichi.

8 8 

9Il Claude Security plugin esegue una scansione multi-agente delle vulnerabilità del tuo codebase all'interno di una sessione Claude Code. Un team di agenti Claude mappa la tua architettura, costruisce un modello di minaccia, ricerca le vulnerabilità e esamina in modo indipendente ogni risultato prima di scrivere il rapporto. Utilizza il plugin per scansionare un intero repository o [solo un set di modifiche](#scan-only-your-changes), come il diff di un branch, il diff di una pull request o un singolo commit, quindi trasforma i risultati che scegli in patch che esamini e applichi tu stesso.9Il Claude Security plugin esegue una scansione multi-agente delle vulnerabilità del tuo codebase all'interno di una sessione Claude Code. [Per impostazione predefinita](#choose-a-scan-effort), quando scansioni un intero repository, gli agenti Claude mappano la tua architettura, costruiscono un modello di minaccia, ricercano le vulnerabilità ed esaminano in modo indipendente ogni risultato prima di scrivere il rapporto.

10 

11Utilizza il plugin per scansionare un intero repository o [solo un set di modifiche](#scan-only-your-changes), come il diff di un branch, il diff di una pull request o un singolo commit, quindi trasforma i risultati che scegli in patch che esamini e applichi tu stesso.

10 12 

11Il plugin viene eseguito localmente nella tua sessione, utilizza [qualsiasi modello tu abbia accesso in Claude Code](#models-and-providers), e ogni scansione conta verso il tuo [utilizzo](https://code.claude.com/docs/it/costs.md). Se desideri un servizio gestito che monitori i tuoi repository, o desideri eseguire scansioni su [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), consulta il prodotto [Claude Security](https://claude.com/product/claude-security), disponibile nel piano Enterprise.13Il plugin viene eseguito localmente nella tua sessione, utilizza [qualsiasi modello tu abbia accesso in Claude Code](#models-and-providers), e ogni scansione conta verso il tuo [utilizzo](https://code.claude.com/docs/it/costs.md). Se desideri un servizio gestito che monitori i tuoi repository, o desideri eseguire scansioni su [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), consulta il prodotto [Claude Security](https://claude.com/product/claude-security), disponibile nel piano Enterprise.

12 14 


51 53 

52Una volta che il plugin è attivo, sei pronto a [scansionare e correggere il tuo codebase](#scan-and-fix-your-codebase).54Una volta che il plugin è attivo, sei pronto a [scansionare e correggere il tuo codebase](#scan-and-fix-your-codebase).

53 55 

56### Aggiorna il plugin

57 

58Per aggiornare il plugin manualmente, consulta [Aggiorna i plugin ora](https://code.claude.com/docs/it/plugins/install.md#update-plugins-now). Claude Code inoltre [aggiorna il plugin automaticamente](https://code.claude.com/docs/it/plugins/install.md#keep-plugins-updated), a meno che l'aggiornamento automatico non sia disattivato.

59 

54### Disinstalla il plugin60### Disinstalla il plugin

55 61 

56Per rimuovere il plugin, disinstallalo dal menu `/plugin`, oppure esegui `claude plugin uninstall claude-security` nel tuo terminale.62Per rimuovere il plugin, disinstallalo dal menu `/plugin`, oppure esegui `claude plugin uninstall claude-security` nel tuo terminale.


95 101 

96Su un repository di grandi dimensioni, scansiona un'area alla volta invece dell'intero albero. Scegli uno degli ambiti focalizzati che il plugin offre, come il tuo livello API o il tuo codice di autenticazione, e l'esecuzione si dimensiona in base a quello che scegli. La sezione di copertura del rapporto indica cosa è stato e non è stato esaminato. Esegui un'altra scansione su un'area diversa in qualsiasi momento.102Su un repository di grandi dimensioni, scansiona un'area alla volta invece dell'intero albero. Scegli uno degli ambiti focalizzati che il plugin offre, come il tuo livello API o il tuo codice di autenticazione, e l'esecuzione si dimensiona in base a quello che scegli. La sezione di copertura del rapporto indica cosa è stato e non è stato esaminato. Esegui un'altra scansione su un'area diversa in qualsiasi momento.

97 103 

104### Scegli uno sforzo di scansione

105 

106Lo sforzo di scansione imposta quanto in profondità va una scansione. I tuoi risultati passano attraverso la stessa verifica indipendente con `low`, `medium` e `high`.

107 

108* **`low`**: una prima occhiata rapida. Salta la mappa dell'architettura e il modello delle minacce quando scansioni il tuo codebase.

109* **`medium`**: il valore predefinito.

110* **`high`**: ciò che fa `medium`, più una ricerca aggiuntiva di vulnerabilità nello stesso codice.

111 

112Indica lo sforzo di scansione nella tua richiesta al prompt di Claude Code, come `/claude-security scan my public API code at high` o `/claude-security scan my branch at high`.

113 

114Se una scansione di un repository di grandi dimensioni trova meno di quanto ti aspetti, scegli lo sforzo di scansione `high`, esegui una seconda scansione, o fai entrambe le cose. Ognuna può segnalare risultati che una singola scansione `medium` non trova.

115 

98### Leggi i risultati della scansione116### Leggi i risultati della scansione

99 117 

100Ogni scansione scrive i suoi risultati in una directory `CLAUDE-SECURITY-<timestamp>/` con timestamp nel tuo repository:118Ogni scansione scrive i suoi risultati in una directory `CLAUDE-SECURITY-<timestamp>/` con timestamp nel tuo repository:


102* **`CLAUDE-SECURITY-RESULTS.md`**: il rapporto, con l'ID di ogni risultato, come `F1`, più il suo impatto, lo scenario di exploit, la gravità, la confidenza e la raccomandazione120* **`CLAUDE-SECURITY-RESULTS.md`**: il rapporto, con l'ID di ogni risultato, come `F1`, più il suo impatto, lo scenario di exploit, la gravità, la confidenza e la raccomandazione

103* **`CLAUDE-SECURITY-RESULTS.jsonl`**: gli stessi risultati in forma leggibile da macchina, un oggetto JSON per riga121* **`CLAUDE-SECURITY-RESULTS.jsonl`**: gli stessi risultati in forma leggibile da macchina, un oggetto JSON per riga

104* **`CLAUDE-SECURITY-RESULTS.sarif`**: gli stessi risultati come un log [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) per la scansione del codice GitHub e qualsiasi altro strumento che legge lo standard. La scansione classifica i risultati secondo le loro categorie di debolezza [CWE](https://cwe.mitre.org/)122* **`CLAUDE-SECURITY-RESULTS.sarif`**: gli stessi risultati come un log [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) per la scansione del codice GitHub e qualsiasi altro strumento che legge lo standard. La scansione classifica i risultati secondo le loro categorie di debolezza [CWE](https://cwe.mitre.org/)

105* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: il timbro di revisione, che registra quale commit è stato scansionato, con quale sforzo, se le modifiche non sottoposte a commit facevano parte dell'albero scansionato e quanto accuratamente l'esecuzione è stata verificata, così un rapporto è sempre legato al codice che descrive. Una scansione al di fuori del controllo versione timbra `UNVERSIONED` al posto del commit123* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: il timbro di revisione, che registra quale commit è stato scansionato, con quale [sforzo di scansione](#choose-a-scan-effort), se le modifiche non sottoposte a commit facevano parte dell'albero scansionato e quanto accuratamente l'esecuzione è stata verificata, così un rapporto è sempre legato al codice che descrive. Una scansione al di fuori del controllo versione timbra `UNVERSIONED` al posto del commit

106 124 

107Quella directory è l'unica modifica che una scansione apporta al tuo checkout, e ha il suo `.gitignore`, così un `git add` casuale non spazza mai un rapporto in un commit. Per mantenere un rapporto nella cronologia per un audit trail, elimina quel singolo file `.gitignore` e esegui il commit della directory come qualsiasi altro.125Quella directory è l'unica modifica che una scansione apporta al tuo checkout, e ha il suo `.gitignore`, così un `git add` casuale non spazza mai un rapporto in un commit. Per mantenere un rapporto nella cronologia per un audit trail, elimina quel singolo file `.gitignore` e esegui il commit della directory come qualsiasi altro.

108 126 

desktop.md +64 −0

Details

994* **Shell**: la shell impostata per il tuo account sulla macchina remota deve eseguire i comandi inviati tramite SSH, come fanno Bash, Zsh e `sh`994* **Shell**: la shell impostata per il tuo account sulla macchina remota deve eseguire i comandi inviati tramite SSH, come fanno Bash, Zsh e `sh`

995* **Rete**: Claude Code viene eseguito sulla macchina remota ed effettua le sue richieste di rete da lì, quindi la macchina necessita dell'[accesso alla rete richiesto da Claude Code](https://code.claude.com/docs/it/network-config.md#network-access-requirements). Se la macchina non riesce a scaricare Claude Code, Desktop lo scarica sul tuo computer e lo carica sulla macchina. Le altre richieste di Claude Code partono comunque dalla macchina remota. Su una macchina remota Linux, se quelle richieste richiedono un proxy, [impostalo per le sessioni SSH](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions).995* **Rete**: Claude Code viene eseguito sulla macchina remota ed effettua le sue richieste di rete da lì, quindi la macchina necessita dell'[accesso alla rete richiesto da Claude Code](https://code.claude.com/docs/it/network-config.md#network-access-requirements). Se la macchina non riesce a scaricare Claude Code, Desktop lo scarica sul tuo computer e lo carica sulla macchina. Le altre richieste di Claude Code partono comunque dalla macchina remota. Su una macchina remota Linux, se quelle richieste richiedono un proxy, [impostalo per le sessioni SSH](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions).

996 996 

997#### Verificare la chiave host di una macchina remota

998 

999Una chiave host è la chiave che una macchina remota presenta per dimostrare quale macchina è, e un'impronta digitale (fingerprint) è una forma abbreviata di quella chiave. Quando consideri attendibile una chiave, il tuo computer la salva e si connette a qualunque cosa la presenti, senza chiedere di nuovo. Verifica una chiave prima di considerarla attendibile, perché qualcosa potrebbe intercettare la connessione.

1000 

1001Per prima cosa individua a quale macchina appartiene la chiave, in base a dove vedi l'impronta digitale:

1002 

1003* **Desktop chiede `Connect to <host> for the first time?`, oppure hai selezionato Review new key**: la macchina indicata da Desktop, `<host>`

1004* **Desktop chiede `Connect through <jump host> for the first time?`**: il jump host, ovvero la macchina attraverso cui passa la tua connessione, non la macchina che vuoi raggiungere

1005* **`ssh` chiede o avvisa in un terminale**: la macchina indicata nel suo messaggio, che potrebbe non essere quella che hai digitato

1006 

1007Ottieni l'impronta digitale della macchina dalla macchina stessa, non tramite la connessione che stai verificando:

1008 

1009* **La macchina è gestita da qualcun altro**: chiedi loro l'impronta digitale della chiave host

1010* **La gestisci tu ed esegue Linux o macOS**: esegui `ssh-keygen -lf /etc/ssh/ssh_host_<type>_key.pub` su di essa, dalla sua console o tramite una connessione che già consideri attendibile. Per `<type>`, usa il tipo di chiave che Desktop o `ssh` mostra accanto all'impronta digitale, in minuscolo: `ed25519` per `ED25519` o `ssh-ed25519`.

1011 

1012Quindi confronta l'impronta digitale della macchina con quella che ti è stata mostrata:

1013 

1014* **Corrispondono**: considera attendibile la chiave. Seleziona **Trust and connect** o **Trust new key** in Desktop, oppure rispondi `yes` nel terminale.

1015* **Sono diverse, o non puoi verificare**: non connetterti. Seleziona **Cancel** in Desktop, oppure rispondi `no` nel terminale. Se la macchina è gestita da qualcun altro, comunica loro quale impronta digitale ti è stata mostrata.

1016 

1017Se sei arrivato qui da un passaggio di risoluzione dei problemi, torna a quel passaggio dopo uno dei due risultati.

1018 

997#### Impostare un proxy o un certificato CA per le sessioni SSH1019#### Impostare un proxy o un certificato CA per le sessioni SSH

998 1020 

999Se una macchina remota Linux raggiunge internet tramite un proxy o ha bisogno di un certificato CA, aggiungi le [variabili per proxy e CA](https://code.claude.com/docs/it/network-config.md) sotto `env` in `~/.claude/settings.json` su quella macchina. Aggiungile anche se le esporti già in `~/.profile`, `~/.bash_profile`, `~/.zprofile` o `~/.zshrc` su quella macchina.1021Se una macchina remota Linux raggiunge internet tramite un proxy o ha bisogno di un certificato CA, aggiungi le [variabili per proxy e CA](https://code.claude.com/docs/it/network-config.md) sotto `env` in `~/.claude/settings.json` su quella macchina. Aggiungile anche se le esporti già in `~/.profile`, `~/.bash_profile`, `~/.zprofile` o `~/.zshrc` su quella macchina.


2135 2157 

2136Se gli interruttori del server MCP non rispondono o i server non riescono a connettersi su Windows, controlla che il server sia configurato correttamente nelle tue impostazioni, riavvia l'app, verifica che il processo del server sia in esecuzione in Task Manager e rivedi i log del server per gli errori di connessione.2158Se gli interruttori del server MCP non rispondono o i server non riescono a connettersi su Windows, controlla che il server sia configurato correttamente nelle tue impostazioni, riavvia l'app, verifica che il processo del server sia in esecuzione in Task Manager e rivedi i log del server per gli errori di connessione.

2137 2159 

2160### SSH host key verification failed

2161 

2162Ciascuno di questi messaggi significa che Desktop ha rifiutato una [chiave host](#check-a-remote-machines-host-key):

2163 

2164* `SSH host key verification failed` o `Host denied (verification failed)` sotto **View details** su una scheda `Couldn't connect to <host>`

2165* `Connection failed: Host key changed or not trusted` accanto alla casella del prompt o dopo **Test connection**

2166* `<host>'s host key is not trusted` o `<host>'s host key has changed` su una sessione disconnessa

2167 

2168Desktop di solito rifiuta una chiave perché differisce da quella salvata sul tuo computer, oppure perché non è salvata alcuna chiave per quella macchina. Una macchina ricostruita o reinstallata di solito presenta una nuova chiave, e lo stesso vale per qualcosa che intercetta la connessione. Controlla la chiave prima di connetterti di nuovo, partendo da ciò che Desktop mostra insieme al messaggio:

2169 

2170* **Sei su Windows e Desktop dice `Connection failed: Host key changed or not trusted`**: per prima cosa escludi un [client OpenSSH mancante](#ssh-host-key-refused-on-windows-without-an-openssh-client)

2171* **Desktop ti dice di impostare `UserKnownHostsFile`**: in `~/.ssh/config`, impostalo su `~/.ssh/known_hosts`, quindi [controlla la chiave da un terminale](#check-the-host-key-from-a-terminal)

2172* **Vedi un pulsante Review new key**: selezionalo e [confronta](#check-a-remote-machines-host-key) l'impronta digitale che Desktop mostra con quella della macchina stessa. Se corrispondono, seleziona **Trust new key** per sostituire la chiave salvata. Altrimenti seleziona **Cancel**.

2173* **Non vedi alcun pulsante Review new key, Desktop mostra `Couldn't show the new key`, oppure Desktop rifiuta di nuovo la chiave dopo Trust new key**: [controlla la chiave da un terminale](#check-the-host-key-from-a-terminal)

2174 

2175#### Controlla la chiave host da un terminale

2176 

2177Esegui `ssh <SSH host>` sul tuo computer, con il valore **SSH host** della tua [connessione SSH](#ssh-sessions) in Desktop. Aggiungi `-p <SSH port>` se la connessione ha un valore **SSH port**. Su Windows, usa PowerShell, perché Desktop non si connette con l'`ssh` di Git Bash o WSL. Se PowerShell non trova `ssh`, [installa il client OpenSSH di Microsoft](#ssh-host-key-refused-on-windows-without-an-openssh-client).

2178 

2179Annota quale macchina `ssh` nomina nel suo messaggio, che può essere un jump host e non `<SSH host>`, quindi segui il caso corrispondente:

2180 

2181* **`ssh` chiede se continuare la connessione**: [confronta](#check-a-remote-machines-host-key) l'impronta digitale che mostra con quella della macchina stessa. Rispondi `yes` solo se corrispondono.

2182* **`ssh` avvisa che la chiave host è cambiata**: [confronta](#check-a-remote-machines-host-key) l'impronta digitale dell'avviso con quella della macchina stessa. Solo se corrispondono, elimina la riga indicata da `Offending <type> key in <file>:<line>` ed esegui di nuovo `ssh`. Se `ssh` avvisa di nuovo riguardo a un'altra riga, confronta, elimina ed esegui di nuovo come prima.

2183* **`ssh` rifiuta una chiave che non conosce, senza chiedere**: ottieni la riga `known_hosts` di quella macchina da chi la gestisce, non tramite la connessione che stai verificando. Aggiungi la riga al tuo file `known_hosts`, con il nome indicato nel messaggio di `ssh` come nome host, ed esegui di nuovo `ssh`.

2184* **`ssh` procede con l'accesso senza chiederti nulla sulla chiave host**: non digitare ancora una password. [Controlla le chiavi di cui `ssh` si fida già](#check-the-keys-that-ssh-already-trusts).

2185 

2186Una volta che `ssh` accetta una chiave che hai controllato o aggiunto, riprova in Desktop. Se Desktop rifiuta di nuovo la chiave, vedi [Ottieni i log di Desktop per un problema SSH](#get-desktops-logs-for-an-ssh-problem).

2187 

2188##### Controlla le chiavi di cui `ssh` si fida già

2189 

2190Esegui di nuovo lo stesso comando `ssh` aggiungendo `-v -S none`. Nel suo output, una riga `Server host key:` mostra un'impronta digitale, e la riga `Host '<name>' is known` successiva nomina la macchina a cui appartiene. [Confronta](#check-a-remote-machines-host-key) ogni impronta digitale che trovi con quella della macchina stessa.

2191 

2192* **Un jump host non ha alcuna riga `Server host key:`**: esegui anche `ssh -v -S none <jump host>` e confronta quell'impronta digitale allo stesso modo.

2193* **Un'impronta digitale non corrisponde, o non puoi verificarla**: non connetterti di nuovo. Rimuovi la chiave salvata: sotto `Host '<name>' is known`, la riga `Found key in <file>:<line>` nomina il file che la contiene. Esegui `ssh-keygen -R "<name>" -f <file>`. Se conservi le chiavi host in più di un file, rimuovi la chiave da ciascuno. Se non puoi modificare un file, avvisa chi gestisce il tuo computer.

2194* **Tutte le impronte digitali corrispondono**: riprova in Desktop. Se Desktop rifiuta di nuovo la chiave, vedi [Ottieni i log di Desktop per un problema SSH](#get-desktops-logs-for-an-ssh-problem).

2195 

2196### Chiave host SSH rifiutata su Windows senza un client OpenSSH

2197 

2198Su Windows senza un client OpenSSH, Desktop rifiuta anche una chiave host corretta, con `Connection failed: Host key changed or not trusted`. Ha bisogno del client per cercare le chiavi salvate. Per vedere se ne hai uno, esegui `ssh` in PowerShell. Se PowerShell non riconosce `ssh`, installa il [client OpenSSH di Microsoft](https://learn.microsoft.com/windows-server/administration/openssh/openssh_install_firstuse) e riavvia Desktop.

2199 

2200Quindi connettiti di nuovo. Se Desktop chiede se connettersi per la prima volta, [controlla la chiave host della macchina](#check-a-remote-machines-host-key) prima di considerarla attendibile. Se Desktop rifiuta ancora la chiave, segui gli altri casi sotto [SSH host key verification failed](#ssh-host-key-verification-failed).

2201 

2138### La connessione SSH non riesce dopo l'accesso2202### La connessione SSH non riesce dopo l'accesso

2139 2203 

2140Trova il titolo della scheda, o il codice alla fine del messaggio di errore, in questa tabella, quindi fai ciò che indica l'ultima colonna. Per vedere il messaggio, seleziona **View details** sulla scheda dell'errore.2204Trova il titolo della scheda, o il codice alla fine del messaggio di errore, in questa tabella, quindi fai ciò che indica l'ultima colonna. Per vedere il messaggio, seleziona **View details** sulla scheda dell'errore.

env-vars.md +2 −2

Details

236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Imposta su `1` per rimuovere il parametro `run_in_background` dagli strumenti Bash, PowerShell e subagent e per disattivare la scorciatoia Ctrl+B e le esecuzioni in background delle [skill eseguite in fork](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent). Claude Code smette quindi anche di spostare automaticamente in background i subagent, le chiamate lunghe agli strumenti MCP e i comandi shell andati in timeout. Le [attività MCP](https://code.claude.com/docs/it/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task) e lo [strumento Monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool) vengono comunque eseguiti in background |236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Imposta su `1` per rimuovere il parametro `run_in_background` dagli strumenti Bash, PowerShell e subagent e per disattivare la scorciatoia Ctrl+B e le esecuzioni in background delle [skill eseguite in fork](https://code.claude.com/docs/it/skills.md#run-skills-in-a-subagent). Claude Code smette quindi anche di spostare automaticamente in background i subagent, le chiamate lunghe agli strumenti MCP e i comandi shell andati in timeout. Le [attività MCP](https://code.claude.com/docs/it/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task) e lo [strumento Monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool) vengono comunque eseguiti in background |

237| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Imposta su `1` per impedire a Claude Code di trattare una risposta in streaming di [Amazon Bedrock](https://code.claude.com/docs/it/amazon-bedrock.md) con un header `Content-Type` mancante o vuoto come event stream binario di Amazon Bedrock. Per impostazione predefinita, Claude Code presume che un gateway abbia rimosso l'header da una risposta altrimenti non modificata, quindi decodifica il corpo e lo streaming continua a funzionare. Impostala solo per un gateway che riemette anche lo stream come server-sent events; Claude Code legge allora il corpo senza header come server-sent events. Richiede Claude Code v2.1.239 o versioni successive |237| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Imposta su `1` per impedire a Claude Code di trattare una risposta in streaming di [Amazon Bedrock](https://code.claude.com/docs/it/amazon-bedrock.md) con un header `Content-Type` mancante o vuoto come event stream binario di Amazon Bedrock. Per impostazione predefinita, Claude Code presume che un gateway abbia rimosso l'header da una risposta altrimenti non modificata, quindi decodifica il corpo e lo streaming continua a funzionare. Impostala solo per un gateway che riemette anche lo stream come server-sent events; Claude Code legge allora il corpo senza header come server-sent events. Richiede Claude Code v2.1.239 o versioni successive |

238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Imposta su `1` per saltare il controllo che verifica che una risposta in streaming di [Amazon Bedrock](https://code.claude.com/docs/it/amazon-bedrock.md) abbia il content-type `application/vnd.amazon.eventstream`. Senza questa variabile, quando una risposta ha un content-type diverso, Claude Code fa fallire la richiesta con un errore che indica quel tipo, il che significa che un [gateway o un proxy sta trasformando la risposta](https://code.claude.com/docs/it/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy). Configura il gateway in modo che inoltri l'header `Content-Type` e il corpo senza modifiche invece di impostare questa variabile. Richiede Claude Code v2.1.208 o versioni successive |238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Imposta su `1` per saltare il controllo che verifica che una risposta in streaming di [Amazon Bedrock](https://code.claude.com/docs/it/amazon-bedrock.md) abbia il content-type `application/vnd.amazon.eventstream`. Senza questa variabile, quando una risposta ha un content-type diverso, Claude Code fa fallire la richiesta con un errore che indica quel tipo, il che significa che un [gateway o un proxy sta trasformando la risposta](https://code.claude.com/docs/it/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy). Configura il gateway in modo che inoltri l'header `Content-Type` e il corpo senza modifiche invece di impostare questa variabile. Richiede Claude Code v2.1.208 o versioni successive |

239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Imposta su `1` per interrompere il lavoro in corso di una [sessione in background](https://code.claude.com/docs/it/agent-view.md) quando il [supervisore](https://code.claude.com/docs/it/agent-view.md#the-supervisor-process) arresta, riavvia o aggiorna il processo di quella sessione, invece di passarlo al processo successivo della sessione. Quel lavoro comprende i comandi shell in background in esecuzione della sessione e i workflow dinamici, oltre ai subagent in background a partire dalla v2.1.198. Influisce solo su quel passaggio: mettere una sessione in background con `←` o [`/background`](https://code.claude.com/docs/it/agent-view#from-inside-a-session) trasferisce comunque il lavoro in background in corso. Richiede Claude Code v2.1.196 o successiva |239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Imposta `1` per interrompere il lavoro in corso di una [sessione in background](https://code.claude.com/docs/it/agent-view.md) quando il [supervisore](https://code.claude.com/docs/it/agent-view.md#the-supervisor-process) arresta, riavvia o aggiorna il processo di quella sessione, invece di passarlo al processo successivo della sessione. Quel lavoro comprende i comandi shell in background in esecuzione della sessione, più i subagent in background a partire dalla v2.1.198. Influisce solo su quel passaggio: spostare una sessione in background con `←` o [`/background`](https://code.claude.com/docs/it/agent-view#from-inside-a-session) trasferisce comunque il lavoro in background in corso. Richiede Claude Code v2.1.196 o successivo |

240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Imposta su `1` per impedire a Claude Code di terminare i [comandi shell in background](https://code.claude.com/docs/it/interactive-mode.md#background-bash-commands) in caso di pressione sulla memoria. Per impostazione predefinita, su macOS e Linux, Claude Code termina le shell in background quando il sistema operativo segnala una pressione critica sulla memoria e la sessione è rimasta inattiva per 30 minuti senza turni o subagent in esecuzione. Windows non ha un segnale di pressione sulla memoria, quindi lì questa variabile non ha effetto. Richiede Claude Code v2.1.193 o versioni successive |240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Imposta su `1` per impedire a Claude Code di terminare i [comandi shell in background](https://code.claude.com/docs/it/interactive-mode.md#background-bash-commands) in caso di pressione sulla memoria. Per impostazione predefinita, su macOS e Linux, Claude Code termina le shell in background quando il sistema operativo segnala una pressione critica sulla memoria e la sessione è rimasta inattiva per 30 minuti senza turni o subagent in esecuzione. Windows non ha un segnale di pressione sulla memoria, quindi lì questa variabile non ha effetto. Richiede Claude Code v2.1.193 o versioni successive |

241| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Imposta su `1` per disattivare le [skill](https://code.claude.com/docs/it/skills.md) e i workflow inclusi in Claude Code: le skill e i workflow inclusi vengono rimossi completamente, mentre i comandi integrati come `/init` restano digitabili ma sono nascosti al modello. `/doctor` resta digitabile come i comandi integrati; nascondilo invece con `DISABLE_DOCTOR_COMMAND`. Le skill provenienti dai plugin, da `.claude/skills/` e da `.claude/commands/` non sono interessate. Equivale all'impostazione [`disableBundledSkills`](https://code.claude.com/docs/it/settings-reference#disablebundledskills) |241| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Imposta su `1` per disattivare le [skill](https://code.claude.com/docs/it/skills.md) e i workflow inclusi in Claude Code: le skill e i workflow inclusi vengono rimossi completamente, mentre i comandi integrati come `/init` restano digitabili ma sono nascosti al modello. `/doctor` resta digitabile come i comandi integrati; nascondilo invece con `DISABLE_DOCTOR_COMMAND`. Le skill provenienti dai plugin, da `.claude/skills/` e da `.claude/commands/` non sono interessate. Equivale all'impostazione [`disableBundledSkills`](https://code.claude.com/docs/it/settings-reference#disablebundledskills) |

242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Imposta su `1` per mantenere disponibili gli strumenti del browser di [Claude in Chrome](https://code.claude.com/docs/it/chrome.md) omettendo la sezione Chrome del prompt di sistema e la [skill inclusa](https://code.claude.com/docs/it/skills.md#bundled-skills) `/claude-in-chrome`. Pensata per gli host che incorporano Claude Code e forniscono le proprie indicazioni per il browser. Richiede Claude Code v2.1.257 o versioni successive |242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Imposta su `1` per mantenere disponibili gli strumenti del browser di [Claude in Chrome](https://code.claude.com/docs/it/chrome.md) omettendo la sezione Chrome del prompt di sistema e la [skill inclusa](https://code.claude.com/docs/it/skills.md#bundled-skills) `/claude-in-chrome`. Pensata per gli host che incorporano Claude Code e forniscono le proprie indicazioni per il browser. Richiede Claude Code v2.1.257 o versioni successive |

243| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Imposta su `1` per impedire il caricamento nel contesto di qualsiasi file di memoria CLAUDE.md, inclusi i file di memoria utente, di progetto e automatica |243| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Imposta su `1` per impedire il caricamento nel contesto di qualsiasi file di memoria CLAUDE.md, inclusi i file di memoria utente, di progetto e automatica |

244| `CLAUDE_CODE_DISABLE_CRON` | Imposta `1` per disattivare le [attività pianificate con ambito di sessione](https://code.claude.com/docs/it/scheduled-tasks.md). La skill `/loop` e gli strumenti cron diventano non disponibili e le attività già pianificate smettono di attivarsi, incluse quelle già in esecuzione a metà sessione |244| `CLAUDE_CODE_DISABLE_CRON` | Imposta `1` per disattivare le [attività pianificate con ambito di sessione](https://code.claude.com/docs/it/scheduled-tasks.md). La skill `/loop` e gli strumenti cron diventano non disponibili e le attività già pianificate smettono di attivarsi, incluse quelle già in esecuzione a metà sessione |

245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Imposta su `1` per disattivare il limite di tempo sulle richieste di conferma per la [rimozione di percorsi critici](https://code.claude.com/docs/it/permission-modes.md#critical-paths). In modalità `auto` Claude Code invia invece queste rimozioni al classificatore, e in modalità `bypassPermissions` la richiesta attende la tua risposta. Impostala nell'ambiente che avvia Claude Code, poiché Claude Code ignora una copia fornita tramite un blocco `env` delle impostazioni. Richiede Claude Code v2.1.281 o versioni successive |245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Imposta `1` per disattivare il [limite di tempo e i rifiuti](https://code.claude.com/docs/it/permission-modes.md#time-limits-and-denials-in-auto-and-bypasspermissions-modes) di `auto` e `bypassPermissions` sulle rimozioni di percorsi critici. Queste rimozioni passano quindi al classificatore in modalità `auto` e ricevono una richiesta di conferma senza limite di tempo in modalità `bypassPermissions` ovunque Claude Code possa mostrarne una. Impostala nell'ambiente che avvia Claude Code, poiché Claude Code ignora una copia fornita tramite un blocco `env` delle impostazioni. Richiede Claude Code v2.1.281 o successiva |

246| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Imposta su `1` per rimuovere dalle richieste API gli header `anthropic-beta` di pre-release, i campi del corpo associati e i campi beta dello schema degli strumenti come `defer_loading` e `eager_input_streaming`. Usala quando un gateway proxy rifiuta le richieste con un errore `Unexpected value(s)` per l'header `anthropic-beta` o un errore `Extra inputs are not permitted`. [Disattivare le funzionalità di pre-release](https://code.claude.com/docs/it/llm-gateway-protocol.md#disable-pre-release-capabilities) elenca cosa rimuove la variabile, incluso [MCP Tool Search](https://code.claude.com/docs/it/mcp.md#scale-with-mcp-tool-search), e cosa Claude Code continua a inviare |246| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Imposta su `1` per rimuovere dalle richieste API gli header `anthropic-beta` di pre-release, i campi del corpo associati e i campi beta dello schema degli strumenti come `defer_loading` e `eager_input_streaming`. Usala quando un gateway proxy rifiuta le richieste con un errore `Unexpected value(s)` per l'header `anthropic-beta` o un errore `Extra inputs are not permitted`. [Disattivare le funzionalità di pre-release](https://code.claude.com/docs/it/llm-gateway-protocol.md#disable-pre-release-capabilities) elenca cosa rimuove la variabile, incluso [MCP Tool Search](https://code.claude.com/docs/it/mcp.md#scale-with-mcp-tool-search), e cosa Claude Code continua a inviare |

247| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Imposta su `1` per disattivare i [subagent Explore e Plan](https://code.claude.com/docs/it/sub-agents.md#built-in-subagents) integrati. Claude esplora invece con i suoi strumenti di ricerca o con il subagent general-purpose, e il [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) legge i file direttamente invece di avviare gli agenti Explore e Plan. I subagent personalizzati denominati `Explore` o `Plan` non sono interessati. Per rimuovere ogni tipo di subagent integrato nell'Agent SDK o in modalità non interattiva, usa invece `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`. Richiede Claude Code v2.1.198 o versioni successive |247| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Imposta su `1` per disattivare i [subagent Explore e Plan](https://code.claude.com/docs/it/sub-agents.md#built-in-subagents) integrati. Claude esplora invece con i suoi strumenti di ricerca o con il subagent general-purpose, e il [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) legge i file direttamente invece di avviare gli agenti Explore e Plan. I subagent personalizzati denominati `Explore` o `Plan` non sono interessati. Per rimuovere ogni tipo di subagent integrato nell'Agent SDK o in modalità non interattiva, usa invece `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`. Richiede Claude Code v2.1.198 o versioni successive |

248| `CLAUDE_CODE_DISABLE_FAST_MODE` | Imposta su `1` per disattivare la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md) |248| `CLAUDE_CODE_DISABLE_FAST_MODE` | Imposta su `1` per disattivare la [modalità veloce](https://code.claude.com/docs/it/fast-mode.md) |

errors.md +34 −2

Details

244| `MCP server "<name>" was not saved to` / `was not removed from` | [Errori della riga di comando](#mcp-server-was-not-saved-or-removed) |244| `MCP server "<name>" was not saved to` / `was not removed from` | [Errori della riga di comando](#mcp-server-was-not-saved-or-removed) |

245| `MCP server "<name>" may not have been saved` / `may not have been removed` | [Errori della riga di comando](#mcp-server-may-not-have-been-saved-or-removed) |245| `MCP server "<name>" may not have been saved` / `may not have been removed` | [Errori della riga di comando](#mcp-server-may-not-have-been-saved-or-removed) |

246| `Server rejected the Authorization header minted by the configured headersHelper` | [Errori della riga di comando](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |246| `Server rejected the Authorization header minted by the configured headersHelper` | [Errori della riga di comando](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |

247| `This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability` | [Errori della riga di comando](#mcp-server-rejected-the-elicitation-capability) |

247| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errori della riga di comando](#mcp-permission-prompt-tool-not-found) |248| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errori della riga di comando](#mcp-permission-prompt-tool-not-found) |

248| `OAuth callback port <port> is already in use — another process may be holding it` | [Errori della riga di comando](#oauth-callback-port-is-already-in-use) |249| `OAuth callback port <port> is already in use — another process may be holding it` | [Errori della riga di comando](#oauth-callback-port-is-already-in-use) |

249| `No available ports for OAuth redirect` | [Errori della riga di comando](#no-available-ports-for-oauth-redirect) |250| `No available ports for OAuth redirect` | [Errori della riga di comando](#no-available-ports-for-oauth-redirect) |


3280* **`Error: Workspace not trusted. <folder> is your home directory`**: poiché la fiducia per la tua directory home non viene mai salvata, eseguire prima `claude` lì non può aiutare. Esegui invece `claude ultrareview` da una directory di progetto, dopo aver eseguito lì `claude` una volta per accettare la finestra di dialogo di fiducia, oppure aggiungi `--trust-workspace`.3281* **`Error: Workspace not trusted. <folder> is your home directory`**: poiché la fiducia per la tua directory home non viene mai salvata, eseguire prima `claude` lì non può aiutare. Esegui invece `claude ultrareview` da una directory di progetto, dopo aver eseguito lì `claude` una volta per accettare la finestra di dialogo di fiducia, oppure aggiungi `--trust-workspace`.

3281* **`No answer in time.` seguito da `Error: Workspace not trusted`**: la domanda `Trust <folder>? [y/N]` è rimasta senza risposta per 5 minuti. Esegui di nuovo `claude ultrareview` e rispondi.3282* **`No answer in time.` seguito da `Error: Workspace not trusted`**: la domanda `Trust <folder>? [y/N]` è rimasta senza risposta per 5 minuti. Esegui di nuovo `claude ultrareview` e rispondi.

3282* **`Ultrareview did not start: <folder> is not trusted`**: hai rifiutato alla domanda `Trust <folder>? [y/N]`, ad esempio rispondendo `n` o premendo Invio. Per avviare la revisione, esegui di nuovo `claude ultrareview` e rispondi `y`.3283* **`Ultrareview did not start: <folder> is not trusted`**: hai rifiutato alla domanda `Trust <folder>? [y/N]`, ad esempio rispondendo `n` o premendo Invio. Per avviare la revisione, esegui di nuovo `claude ultrareview` e rispondi `y`.

3283* **``Ultrareview did not start: `--trust-workspace` takes no value``**: qualcosa di diverso da un flag segue `--trust-workspace`, ad esempio il numero di una PR o `false`. Se non consideri attendibile la cartella, ometti il flag. Per considerarla attendibile per questa esecuzione, metti il numero della PR o il branch di base prima del flag: `claude ultrareview 1234 --trust-workspace`.3284* **``Ultrareview did not start: `--trust-workspace` takes no value``**: dopo `--trust-workspace` segue qualcosa che non è un flag, come un numero di PR o `false`. Se non ti fidi della cartella, ometti il flag. Per considerarla attendibile per questa esecuzione, metti il numero di PR o il branch di base prima del flag: `claude ultrareview 1234 --trust-workspace`.

3284 3285 

3285Prima della v2.1.309, `claude ultrareview` non accettava `--trust-workspace`.3286Prima della v2.1.309, `claude ultrareview` non accettava `--trust-workspace`.

3286 3287 


3473 3474 

3474Prima della v2.1.248, Claude Code eseguiva il discovery OAuth per un server il cui helper forniva l'header `Authorization`. Quel discovery poteva fallire con `Incompatible auth server: does not support dynamic client registration` invece di segnalare la credenziale rifiutata.3475Prima della v2.1.248, Claude Code eseguiva il discovery OAuth per un server il cui helper forniva l'header `Authorization`. Quel discovery poteva fallire con `Incompatible auth server: does not support dynamic client registration` invece di segnalare la credenziale rifiutata.

3475 3476 

3477### Il server MCP ha rifiutato la capacità di elicitation

3478 

3479Un server MCP basato su Java MCP SDK dalla 0.11.0 alla 0.17.0 ha rifiutato la connessione. Queste versioni dell'SDK non riescono ad analizzare le [modalità di elicitation](https://code.claude.com/docs/it/mcp.md#elicitation-modes-claude-code-declares) `form` e `url` che Claude Code dichiara nel suo handshake. `claude mcp list` mostra il server come non riuscito con questo messaggio al posto dell'errore del server stesso:

3480 

3481```text theme={null}

3482This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).

3483```

3484 

3485**Cosa fare:**

3486 

3487* Aggiorna il server a Java MCP SDK 0.17.1 o successivo, oppure a una delle release di Spring AI indicate dal messaggio

3488* Oppure aggiungi `"bareElicitationCapability": true` alla voce di quel server nella tua configurazione MCP, quindi riavvia Claude Code. Il campo è accettato nelle voci stdio, `sse`, `http` e `ws` e richiede Claude Code v2.1.281 o versioni successive

3489 

3490Questa voce di `.mcp.json` imposta il campo per un server HTTP:

3491 

3492```json theme={null}

3493{

3494 "mcpServers": {

3495 "inventory": {

3496 "type": "http",

3497 "url": "https://mcp.example.com/mcp",

3498 "bareElicitationCapability": true

3499 }

3500 }

3501}

3502```

3503 

3504Dopo il riavvio, `/mcp` mostra il server come connesso. Claude Code dichiara la modalità form solo a quel server, quindi rimuovi il campo dopo averlo aggiornato.

3505 

3506Un server può anche fallire con un proprio testo di errore, come uno contenente `Unrecognized field "form"`. Si applicano le stesse soluzioni.

3507 

3476### Strumento di richiesta di permesso MCP non trovato3508### Strumento di richiesta di permesso MCP non trovato

3477 3509 

3478Lo strumento che hai passato a [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) non era tra gli strumenti MCP connessi quando l'esecuzione ha avuto bisogno per la prima volta di una decisione sui permessi, o perché il suo server non si è mai connesso o perché nessun server connesso espone uno strumento con quel nome. Claude Code invia comunque il tuo prompt: l'esecuzione [non interattiva](https://code.claude.com/docs/it/headless.md) termina con questo errore, e codice di uscita 1, alla prima chiamata a uno strumento, quindi non produce alcuna risposta anche se la richiesta è stata effettuata. Prima del primo prompt, Claude Code attende che quel server si connetta fino al timeout di connessione per server di 30 secondi impostato da [`MCP_TIMEOUT`](https://code.claude.com/docs/it/env-vars). Prima della v2.1.206, l'avvio non attendeva che il server completasse la connessione, quindi anche un server funzionante ma lento ad avviarsi produceva questo errore.3510Lo strumento che hai passato a [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) non era tra gli strumenti MCP connessi quando l'esecuzione ha avuto bisogno per la prima volta di una decisione sui permessi, o perché il suo server non si è mai connesso o perché nessun server connesso espone uno strumento con quel nome. Claude Code invia comunque il tuo prompt: l'esecuzione [non interattiva](https://code.claude.com/docs/it/headless.md) termina con questo errore, e codice di uscita 1, alla prima chiamata a uno strumento, quindi non produce alcuna risposta anche se la richiesta è stata effettuata. Prima del primo prompt, Claude Code attende che quel server si connetta fino al timeout di connessione per server di 30 secondi impostato da [`MCP_TIMEOUT`](https://code.claude.com/docs/it/env-vars). Prima della v2.1.206, l'avvio non attendeva che il server completasse la connessione, quindi anche un server funzionante ma lento ad avviarsi produceva questo errore.


3542Stringhe simili vengono generate prima ancora che il comando venga eseguito:3574Stringhe simili vengono generate prima ancora che il comando venga eseguito:

3543 3575 

3544* `Shell command permission check failed for pattern "..."`: il controllo dei permessi del comando non lo ha consentito. [Controlli dei permessi sui comandi inseriti](https://code.claude.com/docs/it/skills.md#permission-checks-on-injected-commands) spiega quali risultati causano l'interruzione in ciascuna modalità di permesso e come pre-approvare un comando con `allowed-tools`3576* `Shell command permission check failed for pattern "..."`: il controllo dei permessi del comando non lo ha consentito. [Controlli dei permessi sui comandi inseriti](https://code.claude.com/docs/it/skills.md#permission-checks-on-injected-commands) spiega quali risultati causano l'interruzione in ciascuna modalità di permesso e come pre-approvare un comando con `allowed-tools`

3545* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: il frontmatter della skill richiede bash su una macchina che ne è priva. Installa Git for Windows o modifica il frontmatter in `shell: powershell`. Consulta [Come vengono eseguiti i comandi iniettati](https://code.claude.com/docs/it/skills.md#how-injected-commands-run)3577* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: il frontmatter della skill richiede bash su una macchina che non lo ha. Installa Git for Windows o cambia il frontmatter in `shell: powershell`. Consulta [Come vengono eseguiti i comandi inseriti](https://code.claude.com/docs/it/skills.md#how-injected-commands-run)

3546* `No shell command in <name> was run`: uno dei comandi `!` del file contiene un carattere di controllo grezzo diverso da tabulazione o a capo, quindi nessuno di essi viene eseguito. Consulta [come trovare e rimuovere il carattere](#no-shell-command-was-run)3578* `No shell command in <name> was run`: uno dei comandi `!` del file contiene un carattere di controllo grezzo diverso da tabulazione o a capo, quindi nessuno di essi viene eseguito. Consulta [come trovare e rimuovere il carattere](#no-shell-command-was-run)

3547 3579 

3548**Cosa fare:**3580**Cosa fare:**

hooks.md +1 −1

Details

1957 1957 

1958| Campo | Descrizione |1958| Campo | Descrizione |

1959| :- | :- |1959| :- | :- |

1960| `permissionDecision` | `"allow"` salta la richiesta di permesso, tranne per le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). `AskUserQuestion` ed `ExitPlanMode` richiedono [`updatedInput` abbinato ad `"allow"`](#allow-with-updatedinput). Per il plan mode, consulta [Approvazioni degli hook nel plan mode](https://code.claude.com/docs/it/permissions.md#hook-approvals-in-plan-mode). `"deny"` impedisce la chiamata allo strumento. `"ask"` chiede all'utente di confermare. `"defer"` termina il turno in modo che lo strumento possa essere ripreso in seguito, e richiede la [modalità non interattiva](#defer-a-tool-call-for-later) con il flag `-p`. Le [regole di negazione e di richiesta](https://code.claude.com/docs/it/permissions.md#manage-permissions) vengono comunque valutate indipendentemente da ciò che restituisce l'hook |1960| `permissionDecision` | `"allow"` salta la richiesta di permesso, tranne che per le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) e le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths). Non salta nemmeno l'approvazione per le chiamate agli [strumenti che un'app dell'Agent SDK contrassegna come `always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools), a meno che la [modalità di permesso non approvi la chiamata](https://code.claude.com/docs/it/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call). `AskUserQuestion` ed `ExitPlanMode` richiedono [`updatedInput` abbinato a `"allow"`](#allow-with-updatedinput). Per il plan mode, consulta [Approvazioni degli hook nel plan mode](https://code.claude.com/docs/it/permissions.md#hook-approvals-in-plan-mode). `"deny"` impedisce la chiamata allo strumento. `"ask"` chiede all'utente di confermare. `"defer"` termina il turno in modo che lo strumento possa essere ripreso in seguito e richiede la [modalità non interattiva](#defer-a-tool-call-for-later) con il flag `-p`. Le [regole di negazione e di richiesta di conferma](https://code.claude.com/docs/it/permissions.md#manage-permissions) vengono comunque valutate indipendentemente da ciò che l'hook restituisce |

1961| `permissionDecisionReason` | Per `"ask"`, mostrato all'utente nella richiesta di permesso. Quando Claude Code [nega la chiamata](https://code.claude.com/docs/it/headless.md#turn-off-permission-prompts-in-unattended-runs) in un'esecuzione `-p` in cui nessuno può rispondere a quella richiesta, Claude legge invece il motivo nel risultato dello strumento. Per `"deny"`, mostrato a Claude. Per `"allow"` e `"defer"`, scritto solo nel [log di debug](#debug-hooks) |1961| `permissionDecisionReason` | Per `"ask"`, mostrato all'utente nella richiesta di permesso. Quando Claude Code [nega la chiamata](https://code.claude.com/docs/it/headless.md#turn-off-permission-prompts-in-unattended-runs) in un'esecuzione `-p` in cui nessuno può rispondere a quella richiesta, Claude legge invece il motivo nel risultato dello strumento. Per `"deny"`, mostrato a Claude. Per `"allow"` e `"defer"`, scritto solo nel [log di debug](#debug-hooks) |

1962| `updatedInput` | Modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includi i campi non modificati insieme a quelli modificati. Claude Code valuta le regole di permesso e l'[idoneità al passaggio automatico in background](https://code.claude.com/docs/it/tools-reference.md#foreground-commands-that-move-to-the-background) di un comando Bash sull'input restituito dal tuo hook, non sull'input inviato da Claude. Combinalo con `"allow"` per approvare automaticamente, oppure con `"ask"` per mostrare all'utente l'input modificato. Per `"defer"`, ignorato |1962| `updatedInput` | Modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includi i campi non modificati insieme a quelli modificati. Claude Code valuta le regole di permesso e l'[idoneità al passaggio automatico in background](https://code.claude.com/docs/it/tools-reference.md#foreground-commands-that-move-to-the-background) di un comando Bash sull'input restituito dal tuo hook, non sull'input inviato da Claude. Combinalo con `"allow"` per approvare automaticamente, oppure con `"ask"` per mostrare all'utente l'input modificato. Per `"defer"`, ignorato |

1963| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al risultato dello strumento. Ignorata quando `permissionDecision` è `"defer"`. Consulta [Aggiungere contesto per Claude](#add-context-for-claude) |1963| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al risultato dello strumento. Ignorata quando `permissionDecision` è `"defer"`. Consulta [Aggiungere contesto per Claude](#add-context-for-claude) |

hooks-guide.md +2 −0

Details

629 629 

630* Letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths)630* Letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths)

631* Strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool)631* Strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool)

632* Chiamate agli [strumenti che un'app dell'Agent SDK contrassegna come `always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools), a meno che la [modalità di permesso non approvi la chiamata](https://code.claude.com/docs/it/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call)

632* Strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code633* Strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code

633 634 

634 Per sapere cosa fa `"allow"` in plan mode, consulta [Approvazioni degli hook in plan mode](https://code.claude.com/docs/it/permissions.md#hook-approvals-in-plan-mode).635 Per sapere cosa fa `"allow"` in plan mode, consulta [Approvazioni degli hook in plan mode](https://code.claude.com/docs/it/permissions.md#hook-approvals-in-plan-mode).


963* **Cosa vale comunque rispetto ad `"allow"`**: un hook che restituisce `"allow"` non aggira le regole di negazione delle impostazioni, e non può sopprimere la richiesta di permesso per:964* **Cosa vale comunque rispetto ad `"allow"`**: un hook che restituisce `"allow"` non aggira le regole di negazione delle impostazioni, e non può sopprimere la richiesta di permesso per:

964 * Le letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths)965 * Le letture da [percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths)

965 * Gli strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool)966 * Gli strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool)

967 * Le chiamate agli [strumenti che un'app Agent SDK contrassegna come `always_ask`](https://code.claude.com/docs/it/agent-sdk/custom-tools#require-approval-for-specific-tools), a meno che la [modalità di permesso non approvi la chiamata](https://code.claude.com/docs/it/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call)

966 * Gli strumenti dei connettori che [la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui tale impostazione raggiunge Claude Code968 * Gli strumenti dei connettori che [la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui tale impostazione raggiunge Claude Code

967 969 

968In [plan mode](https://code.claude.com/docs/it/permissions.md#hook-approvals-in-plan-mode), se il tuo hook `PreToolUse` restituisce `"allow"` per la modifica di un file, ottieni la stessa richiesta di permesso, lo stesso blocco o la stessa approvazione che la modifica otterrebbe senza alcun hook. Per rimuovere questo limite sulle approvazioni degli hook, [approva il piano](https://code.claude.com/docs/it/permission-modes.md#review-and-approve-a-plan) o passa a un'altra modalità di permesso.970In [plan mode](https://code.claude.com/docs/it/permissions.md#hook-approvals-in-plan-mode), se il tuo hook `PreToolUse` restituisce `"allow"` per la modifica di un file, ottieni la stessa richiesta di permesso, lo stesso blocco o la stessa approvazione che la modifica otterrebbe senza alcun hook. Per rimuovere questo limite sulle approvazioni degli hook, [approva il piano](https://code.claude.com/docs/it/permission-modes.md#review-and-approve-a-plan) o passa a un'altra modalità di permesso.

Details

407| [`managedMcpServers`](https://code.claude.com/docs/it/settings-reference#managedmcpservers) | Server MCP remoti forniti a ogni utente insieme ai loro. Fornisce server piuttosto che bloccare qualcosa. Vedi [Provide servers through managed settings](https://code.claude.com/docs/it/managed-mcp.md#provide-servers-through-managed-settings). Richiede Claude Code v2.1.259 o successivo |407| [`managedMcpServers`](https://code.claude.com/docs/it/settings-reference#managedmcpservers) | Server MCP remoti forniti a ogni utente insieme ai loro. Fornisce server piuttosto che bloccare qualcosa. Vedi [Provide servers through managed settings](https://code.claude.com/docs/it/managed-mcp.md#provide-servers-through-managed-settings). Richiede Claude Code v2.1.259 o successivo |

408| [`managedSourcesBehavior`](https://code.claude.com/docs/it/settings-reference#managedsourcesbehavior) | Se Claude Code applica solo la fonte gestita con priorità più alta o [compone ogni una di loro](#compose-every-managed-source) |408| [`managedSourcesBehavior`](https://code.claude.com/docs/it/settings-reference#managedsourcesbehavior) | Se Claude Code applica solo la fonte gestita con priorità più alta o [compone ogni una di loro](#compose-every-managed-source) |

409| [`parentSettingsBehavior`](https://code.claude.com/docs/it/settings-reference#parentsettingsbehavior) | Se le impostazioni parent fornite dall'host si uniscono sotto la policy gestita |409| [`parentSettingsBehavior`](https://code.claude.com/docs/it/settings-reference#parentsettingsbehavior) | Se le impostazioni parent fornite dall'host si uniscono sotto la policy gestita |

410| [`pluginSuggestionMarketplaces`](https://code.claude.com/docs/it/settings-reference#pluginsuggestionmarketplaces) | Marketplace i cui plugin Claude Code può suggerire agli utenti |410| [`pluginSuggestionMarketplaces`](https://code.claude.com/docs/it/settings-reference#pluginsuggestionmarketplaces) | Marketplace i cui plugin Claude Code può suggerire agli utenti nel terminale |

411| [`pluginTrustMessage`](https://code.claude.com/docs/it/settings-reference#plugintrustmessage) | Messaggio personalizzato aggiunto all'avviso di fiducia del plugin mostrato prima dell'installazione |411| [`pluginTrustMessage`](https://code.claude.com/docs/it/settings-reference#plugintrustmessage) | Messaggio personalizzato aggiunto all'avviso di fiducia del plugin mostrato prima dell'installazione |

412| [`policyHelper`](https://code.claude.com/docs/it/settings-reference#policyhelper) | Eseguibile che calcola le impostazioni gestite all'avvio; vedi [Compute managed settings with a policy helper](https://code.claude.com/docs/it/settings-reference.md#policyhelper) |412| [`policyHelper`](https://code.claude.com/docs/it/settings-reference#policyhelper) | Eseguibile che calcola le impostazioni gestite all'avvio; vedi [Compute managed settings with a policy helper](https://code.claude.com/docs/it/settings-reference.md#policyhelper) |

413| [`sandbox.filesystem.allowManagedReadPathsOnly`](https://code.claude.com/docs/it/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Quando `true`, solo i percorsi `filesystem.allowRead` dalle impostazioni gestite sono rispettati. `denyRead` si unisce ancora da tutte le fonti |413| [`sandbox.filesystem.allowManagedReadPathsOnly`](https://code.claude.com/docs/it/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Quando `true`, solo i percorsi `filesystem.allowRead` dalle impostazioni gestite sono rispettati. `denyRead` si unisce ancora da tutte le fonti |

mcp.md +10 −1

Details

1624 1624 

1625Se state creando un server MCP che utilizza l'elicitazione, consultate la [specifica di elicitazione MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) per i dettagli del protocollo e gli esempi di schema.1625Se state creando un server MCP che utilizza l'elicitazione, consultate la [specifica di elicitazione MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) per i dettagli del protocollo e gli esempi di schema.

1626 1626 

1627Sulle connessioni che utilizzano [revisione del protocollo 2026-07-28](#mcp-client-runtimes), Claude Code dichiara `elicitation: {form: {}, url: {}}` nelle sue capacità client, quindi un server lì può richiedere entrambe le modalità attraverso la richiesta di elicitazione standard del protocollo.1627### Modalità di elicitazione dichiarate da Claude Code

1628 

1629Se crei un server MCP, le capacità client che Claude Code invia quando si connette indicano al tuo server quali modalità di elicitazione può richiedere. Claude Code dichiara `elicitation: {form: {}, url: {}}` sulle seguenti connessioni, quindi un server su una qualsiasi di esse può richiedere entrambe le modalità:

1630 

1631* Connessioni che utilizzano la [revisione del protocollo 2026-07-28](#mcp-client-runtimes)

1632* Connessioni sulle revisioni precedenti del protocollo, 2025-11-25 e anteriori, ai server stdio, `sse`, `http` e `ws` presenti nella configurazione MCP di Claude Code di un utente. Richiede Claude Code v2.1.287 o versioni successive

1633 

1634Sulle sue altre connessioni con le revisioni precedenti, come quelle ai [connettori di claude.ai](#use-mcp-servers-from-claude-ai), Claude Code dichiara il semplice `elicitation: {}`, che consente richieste di elicitazione solo in modalità modulo.

1635 

1636Un server basato su Java MCP SDK 0.17.0 o versioni precedenti può rifiutare una dichiarazione che contiene `form` e `url`. Consulta [MCP server rejected the elicitation capability](https://code.claude.com/docs/it/errors.md#mcp-server-rejected-the-elicitation-capability).

1628 1637 

1629## Utilizzare le risorse MCP1638## Utilizzare le risorse MCP

1630 1639 

Details

36* Strumenti corrispondenti a una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita36* Strumenti corrispondenti a una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita

37* Strumenti dei connettori che la tua organizzazione ha [impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), nelle sessioni in cui tale impostazione raggiunge Claude Code37* Strumenti dei connettori che la tua organizzazione ha [impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), nelle sessioni in cui tale impostazione raggiunge Claude Code

38* Strumenti che richiedono l'interazione dell'utente: lo strumento integrato `AskUserQuestion` e gli strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool)38* Strumenti che richiedono l'interazione dell'utente: lo strumento integrato `AskUserQuestion` e gli strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool)

39* Le rimozioni riconosciute con `rm` e `rmdir` che hanno come destinazione un [percorso critico](#critical-paths), che nessuna regola allow né alcun `"allow"` di un hook `PreToolUse` approva39* Le [rimozioni di percorsi critici](#critical-paths) riconosciute con `rm` e `rmdir`, che nessuna regola allow né alcun `"allow"` di un hook `PreToolUse` approva, e i comandi Bash contrassegnati con [`Dangerous rm operation not ruled out`](#dangerous-rm-operation-not-ruled-out)

40* Le [misure di protezione per la messaggistica tra sessioni](#skip-all-checks-with-bypasspermissions-mode)40* Le [misure di protezione per la messaggistica tra sessioni](#skip-all-checks-with-bypasspermissions-mode)

41* Le letture al di fuori delle directory di lavoro mentre [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) è attivo: i comandi Bash riconosciuti come letture di file chiedono conferma anche in modalità auto e in modalità `bypassPermissions`, e lo stesso vale per qualsiasi [nuovo tentativo fuori dalla sandbox](https://code.claude.com/docs/it/sandboxing.md#the-unsandboxed-retry-escape-hatch) che richiede l'approvazione per essere eseguito al di fuori della sandbox. Richiede Claude Code v2.1.257 o versioni successive.41* Le letture al di fuori delle directory di lavoro mentre [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) è attivo: i comandi Bash riconosciuti come letture di file chiedono conferma anche in modalità auto e in modalità `bypassPermissions`, e lo stesso vale per qualsiasi [nuovo tentativo fuori dalla sandbox](https://code.claude.com/docs/it/sandboxing.md#the-unsandboxed-retry-escape-hatch) che richiede l'approvazione per essere eseguito al di fuori della sandbox. Richiede Claude Code v2.1.257 o versioni successive.

42 42 


265 265 

266La modalità `acceptEdits` consente a Claude di creare e modificare file nella tua directory di lavoro senza richiedere conferma. La barra di stato mostra `⏵⏵ accept edits on` mentre questa modalità è attiva.266La modalità `acceptEdits` consente a Claude di creare e modificare file nella tua directory di lavoro senza richiedere conferma. La barra di stato mostra `⏵⏵ accept edits on` mentre questa modalità è attiva.

267 267 

268Oltre alle modifiche ai file, la modalità `acceptEdits` auto-approva i comuni comandi Bash del filesystem: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` e `sed`. Questi comandi vengono anche auto-approvati quando preceduti da variabili di ambiente sicure come `LANG=C` o `NO_COLOR=1`, o da wrapper di processi come `timeout`, `nice` o `nohup`. Come per le modifiche ai file, l'auto-approvazione si applica solo ai percorsi all'interno della tua directory di lavoro o `additionalDirectories`.268Oltre alle modifiche ai file, la modalità `acceptEdits` auto-approva i comuni comandi Bash del filesystem: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` e `sed`. Ad eccezione di `touch`, questi comandi vengono anche auto-approvati quando preceduti da variabili d'ambiente sicure come `LANG=C` o `NO_COLOR=1`, o da wrapper di processi come `timeout`, `nice` o `nohup`. Come per le modifiche ai file, l'auto-approvazione si applica solo ai percorsi all'interno della tua directory di lavoro o `additionalDirectories`.

269 269 

270Questi richiedono comunque conferma:270Questi richiedono comunque conferma:

271 271 

272* I percorsi al di fuori di tale ambito272* I percorsi al di fuori di tale ambito

273* Le scritture su [percorsi protetti](#protected-paths)273* Le scritture su [percorsi protetti](#protected-paths)

274* Le [rimozioni di percorsi critici](#critical-paths) riconosciute con `rm` e `rmdir`274* Le [rimozioni di percorsi critici](#critical-paths) riconosciute con `rm` e `rmdir`

275* `touch` con qualsiasi elemento oltre a semplici percorsi di file, ad esempio un'opzione, un glob o un prefisso come `timeout 5` o `LANG=C`

275* Tutti gli altri comandi Bash tranne il [set di sola lettura integrato](https://code.claude.com/docs/it/permissions.md#read-only-commands)276* Tutti gli altri comandi Bash tranne il [set di sola lettura integrato](https://code.claude.com/docs/it/permissions.md#read-only-commands)

276 277 

277Ogni percorso passa anche attraverso il [controllo dei collegamenti simbolici](https://code.claude.com/docs/it/permissions.md#symlinks), quindi nemmeno una scrittura che si risolve al di fuori di tale ambito viene auto-approvata.278Ogni percorso passa anche attraverso il [controllo dei collegamenti simbolici](https://code.claude.com/docs/it/permissions.md#symlinks), quindi nemmeno una scrittura che si risolve al di fuori di tale ambito viene auto-approvata.


369* **Una connessione diretta all'API Anthropic**: nelle sessioni di terminale interattivo e nelle sessioni `-p`, Agent SDK, [estensione VS Code](https://code.claude.com/docs/it/vs-code.md) e [app desktop](https://code.claude.com/docs/it/desktop.md), indipendentemente dal tuo piano o tipo di account, man mano che Anthropic lo distribuisce. Nelle sessioni di terminale interattivo, questo richiede Claude Code v2.1.271 o successivo sui piani Pro, Max e Team, e v2.1.278 o successivo sui piani Enterprise e sugli account Claude API. Nelle sessioni `-p`, Agent SDK, estensione VS Code e app desktop, questo richiede Claude Code v2.1.281 o successivo. Dalla v2.1.282, una sessione che [non recupera i feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching), ad esempio perché hai disattivato la telemetria, chiede al server per impostazione predefinita in qualsiasi tipo di sessione.370* **Una connessione diretta all'API Anthropic**: nelle sessioni di terminale interattivo e nelle sessioni `-p`, Agent SDK, [estensione VS Code](https://code.claude.com/docs/it/vs-code.md) e [app desktop](https://code.claude.com/docs/it/desktop.md), indipendentemente dal tuo piano o tipo di account, man mano che Anthropic lo distribuisce. Nelle sessioni di terminale interattivo, questo richiede Claude Code v2.1.271 o successivo sui piani Pro, Max e Team, e v2.1.278 o successivo sui piani Enterprise e sugli account Claude API. Nelle sessioni `-p`, Agent SDK, estensione VS Code e app desktop, questo richiede Claude Code v2.1.281 o successivo. Dalla v2.1.282, una sessione che [non recupera i feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching), ad esempio perché hai disattivato la telemetria, chiede al server per impostazione predefinita in qualsiasi tipo di sessione.

370* **Un provider cloud, o un gateway LLM o proxy**: su [Claude Platform su AWS](https://code.claude.com/docs/it/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry, e ogni volta che punti `ANTHROPIC_BASE_URL` a un [gateway LLM o proxy](https://code.claude.com/docs/it/llm-gateway), indipendentemente dal tuo piano. Chiedere per impostazione predefinita richiede Claude Code v2.1.278 o successivo.371* **Un provider cloud, o un gateway LLM o proxy**: su [Claude Platform su AWS](https://code.claude.com/docs/it/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry, e ogni volta che punti `ANTHROPIC_BASE_URL` a un [gateway LLM o proxy](https://code.claude.com/docs/it/llm-gateway), indipendentemente dal tuo piano. Chiedere per impostazione predefinita richiede Claude Code v2.1.278 o successivo.

371* **Una sessione [gateway di app Claude](https://code.claude.com/docs/it/claude-apps-gateway) con accesso**: richiede Claude Code v2.1.280 o successivo372* **Una sessione [gateway di app Claude](https://code.claude.com/docs/it/claude-apps-gateway) con accesso**: richiede Claude Code v2.1.280 o successivo

373* **Una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) in un ambiente ospitato da Anthropic**: indipendentemente dal tuo piano, quando la avvii dal web, dall'app mobile o dall'app desktop con **Cloud** selezionato. Le sessioni avviate da un'[attività pianificata cloud](https://code.claude.com/docs/it/routines.md) chiedono al server man mano che Anthropic lo distribuisce.

372 374 

373Dove il server esamina le azioni, sono i suoi verdetti a deciderle. Sono possibili altri due risultati:375Dove il server esamina le azioni, sono i suoi verdetti a deciderle. Sono possibili altri due risultati:

374 376 


647 649 

648La modalità `bypassPermissions` disabilita i prompt di autorizzazione e i controlli di sicurezza in modo che le chiamate agli strumenti vengono eseguite immediatamente, incluse le scritture su [percorsi protetti](#protected-paths).650La modalità `bypassPermissions` disabilita i prompt di autorizzazione e i controlli di sicurezza in modo che le chiamate agli strumenti vengono eseguite immediatamente, incluse le scritture su [percorsi protetti](#protected-paths).

649 651 

650Le [azioni che nessuna modalità approva automaticamente](#actions-no-mode-auto-approves) richiedono comunque una conferma in questa modalità. La lettura di [un artefatto pubblico di un'altra organizzazione](https://code.claude.com/docs/it/artifacts.md#read-an-artifact-shared-with-you) richiede la tua approvazione, e questa modalità non la chiede, quindi Claude non può leggerne uno. Anche i blocchi di [Remove-Item in PowerShell](#remove-item-in-powershell) si applicano in questa modalità.652Anche in modalità `bypassPermissions`, ciascuna delle [azioni che nessuna modalità approva automaticamente](#actions-no-mode-auto-approves) riceve una richiesta di conferma o un rifiuto invece di essere eseguita da sola. La lettura di [un artefatto pubblico di un'altra organizzazione](https://code.claude.com/docs/it/artifacts.md#read-an-artifact-shared-with-you) richiede la tua approvazione, e questa modalità non la chiede, quindi Claude non può leggerne uno. Anche i blocchi di [Remove-Item in PowerShell](#remove-item-in-powershell) si applicano in questa modalità.

651 653 

652Due misure di protezione per la [messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md) si applicano comunque in questa modalità, e nelle sessioni di terminale interattivo in modalità plan dove le autorizzazioni di bypass sono disponibili:654Due misure di protezione per la [messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md) si applicano comunque in questa modalità, e nelle sessioni di terminale interattivo in modalità plan dove le autorizzazioni di bypass sono disponibili:

653 655 


769* `.devcontainer.json`771* `.devcontainer.json`

770* `.ripgreprc`, `pyrightconfig.json`772* `.ripgreprc`, `pyrightconfig.json`

771* `.mcp.json`, `.claude.json`773* `.mcp.json`, `.claude.json`

774* Un file che hai passato a [`--settings`](https://code.claude.com/docs/it/cli-reference#cli-flags), `--mcp-config` o `--agents` quando hai avviato la sessione

772* Il file a cui punta il tuo [file di impostazioni](https://code.claude.com/docs/it/settings.md#settings-files-and-who-they-affect) utente, di progetto o locale quando il file di impostazioni è esso stesso un collegamento simbolico, ad esempio verso un repository di dotfile. Nelle modalità che instradano le scritture su percorsi protetti al classificatore, una scrittura su questo file richiede invece conferma, anche quando corrisponde una regola allow. Se il percorso del file stesso è anche quello di un file di impostazioni, come `.claude/settings.json` in un'altra cartella, la scrittura va al classificatore come le altre scritture su percorsi protetti775* Il file a cui punta il tuo [file di impostazioni](https://code.claude.com/docs/it/settings.md#settings-files-and-who-they-affect) utente, di progetto o locale quando il file di impostazioni è esso stesso un collegamento simbolico, ad esempio verso un repository di dotfile. Nelle modalità che instradano le scritture su percorsi protetti al classificatore, una scrittura su questo file richiede invece conferma, anche quando corrisponde una regola allow. Se il percorso del file stesso è anche quello di un file di impostazioni, come `.claude/settings.json` in un'altra cartella, la scrittura va al classificatore come le altre scritture su percorsi protetti

773 776 

774## Percorsi critici777## Percorsi critici


844 847 

845Per un glob o una barra finale sotto una variabile, il prompt nomina il comando `rm` contrassegnato e dice come riscriverlo in modo che il controllo passi.848Per un glob o una barra finale sotto una variabile, il prompt nomina il comando `rm` contrassegnato e dice come riscriverlo in modo che il controllo passi.

846 849 

850### Il prompt `Dangerous rm operation not ruled out`

851 

852Il motivo completo è:

853 

854```text theme={null}

855Dangerous rm operation not ruled out — the shell may read this command differently than it was parsed

856```

857 

858Questo motivo significa che la shell potrebbe interpretare il comando in modo diverso da come lo ha fatto Claude Code, quindi una rimozione potrebbe trovarsi in una parte non controllata, anche senza alcun `rm` presente. In modalità `auto` o `bypassPermissions`, una negazione con questa frase proviene dallo stesso controllo:

859 

860```text theme={null}

861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

862```

863 

864Ricevi il prompt o la negazione che riceve una rimozione di percorso critico [nella tua modalità di permesso](#critical-path-removals-in-each-permission-mode), `bypassPermissions` inclusa. Non puoi approvare il comando con una regola allow `Bash` o `Bash(*)`, con la [modalità auto-allow](https://code.claude.com/docs/it/sandboxing.md#auto-allow-mode) della sandbox o con un hook `PreToolUse` che restituisce `"allow"`. Leggi il comando, poi approva il prompt oppure, dopo una negazione, eseguilo nella tua shell.

865 

847### Il prompt per le unità montate866### Il prompt per le unità montate

848 867 

849Il prompt per le unità montate compare su macOS, Linux e WSL quando un `rm` ricorsivo prende di mira un [percorso di unità montata](#paths-that-get-the-mounted-drive-prompt) elencato, come `/mnt/c` o `/Volumes/USB/build`. Il suo motivo è `Dangerous rm operation on mounted drive path: <path>`. Un target `/*` riceve il prompt anche senza il flag ricorsivo, poiché Claude Code interpreta `rm /Volumes/USB/build/*` come una rimozione di `/Volumes/USB/build`.868Il prompt per le unità montate compare su macOS, Linux e WSL quando un `rm` ricorsivo prende di mira un [percorso di unità montata](#paths-that-get-the-mounted-drive-prompt) elencato, come `/mnt/c` o `/Volumes/USB/build`. Il suo motivo è `Dangerous rm operation on mounted drive path: <path>`. Un target `/*` riceve il prompt anche senza il flag ricorsivo, poiché Claude Code interpreta `rm /Volumes/USB/build/*` come una rimozione di `/Volumes/USB/build`.


900| `plan` | Ti chiede di approvarlo. Quando [il classificatore esamina i comandi durante la pianificazione](#analyze-before-you-edit-with-plan-mode) e nessuna autorizzazione di bypass è disponibile, lo gestisce come in modalità `auto` |919| `plan` | Ti chiede di approvarlo. Quando [il classificatore esamina i comandi durante la pianificazione](#analyze-before-you-edit-with-plan-mode) e nessuna autorizzazione di bypass è disponibile, lo gestisce come in modalità `auto` |

901| `auto` | Ti chiede di approvarlo nel terminale, con un [limite di tempo](#time-limits-and-denials-in-auto-and-bypasspermissions-modes). Altrove, lo nega |920| `auto` | Ti chiede di approvarlo nel terminale, con un [limite di tempo](#time-limits-and-denials-in-auto-and-bypasspermissions-modes). Altrove, lo nega |

902| `dontAsk` | Lo nega |921| `dontAsk` | Lo nega |

903| `bypassPermissions` | Ti chiede di approvarlo, con un limite di tempo nel terminale |922| `bypassPermissions` | Nel terminale, ti chiede di approvarlo prima che scada un limite di tempo. Altrove, consulta [cosa succede in ogni luogo](#time-limits-and-denials-in-auto-and-bypasspermissions-modes) |

904 923 

905Se una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita corrisponde al comando, Claude Code ti chiede invece, anche in modalità `auto` e senza un limite di tempo. Nelle modalità che chiedono, un hook [`PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) può rispondere al prompt.924Se una [regola ask](https://code.claude.com/docs/it/permissions.md#manage-permissions) esplicita corrisponde al comando, Claude Code ti chiede invece, anche in modalità `auto` e senza un limite di tempo. Nelle modalità che chiedono, un hook [`PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) può rispondere al prompt.

906 925 


912* Premi un tasto qualsiasi mentre il prompt è aperto per fermare il conto alla rovescia e mantenere il prompt in attesa della tua risposta.931* Premi un tasto qualsiasi mentre il prompt è aperto per fermare il conto alla rovescia e mantenere il prompt in attesa della tua risposta.

913* Dopo tre di questi prompt scaduti senza risposta in una sessione, Claude Code smette di mostrarli e nega ulteriori rimozioni di percorsi critici immediatamente. L'invio di un nuovo messaggio ricomincia il conteggio.932* Dopo tre di questi prompt scaduti senza risposta in una sessione, Claude Code smette di mostrarli e nega ulteriori rimozioni di percorsi critici immediatamente. L'invio di un nuovo messaggio ricomincia il conteggio.

914 933 

915In modalità `auto`, ovunque Claude Code non possa mostrarti un prompt del terminale, nega il comando immediatamente, ad esempio in [esecuzioni non interattive](https://code.claude.com/docs/it/headless.md) con `-p`, in sessioni [Agent SDK](https://code.claude.com/docs/it/agent-sdk/permissions.md), e nel pannello chat dell'estensione VS Code e nell'app Desktop. La negazione dice a Claude di segnalare cosa voleva eliminare e lasciare la rimozione a te.934Il limite di tempo si applica in Claude Code v2.1.281 e successivi, così come la negazione in modalità `auto` fuori dal terminale.

935 

936Lontano dal terminale, non ricevi quel prompt:

916 937 

917La gestione di `auto` e `bypassPermissions` richiede Claude Code v2.1.281 o successivo. Per disattivarla, imposta [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1`](https://code.claude.com/docs/it/env-vars#variables) nell'ambiente che avvia Claude Code. In modalità `auto`, le rimozioni di percorsi critici vanno al classificatore invece, e in modalità `bypassPermissions` il prompt non ha un limite di tempo.938| Dove | `auto` | `bypassPermissions` |

939| :- | :- | :- |

940| Pannello chat dell'[estensione VS Code](https://code.claude.com/docs/it/vs-code.md) | Lo nega | Lo nega a meno che un [hook `PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) non lo consenta |

941| [App Desktop](https://code.claude.com/docs/it/desktop.md) | Lo nega | Lo nega a meno che un hook `PermissionRequest` non lo consenta |

942| [Esecuzione `-p`](https://code.claude.com/docs/it/headless) o [sessione Agent SDK](https://code.claude.com/docs/it/agent-sdk/permissions.md) | Lo nega | Decide il tuo [`--permission-prompt-tool`](https://code.claude.com/docs/it/cli-reference#cli-flags) o la tua [callback `canUseTool`](https://code.claude.com/docs/it/agent-sdk/user-input#handle-tool-approval-requests). Senza nessuno dei due, o con [`--permission-prompts none`](https://code.claude.com/docs/it/headless#turn-off-permission-prompts-in-unattended-runs), lo nega a meno che un hook `PermissionRequest` non lo consenta |

943 

944Ovunque la rimozione venga negata, puoi leggere l'intero comando ed eseguirlo nella tua shell.

945 

946Per cambiare ciò che ottieni in ciascuna modalità, imposta [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`](https://code.claude.com/docs/it/env-vars#variables) su `1`:

947 

948* **`bypassPermissions`**: il prompt del terminale non ha limite di tempo e il pannello chat di VS Code ti chiede conferma

949* **`auto`**: decide il [classificatore](#eliminate-prompts-with-auto-mode), nel terminale, nel pannello chat di VS Code, nelle esecuzioni `-p` e nelle sessioni Agent SDK

950 

951Impostala nell'ambiente che avvia Claude Code, come la tua shell o l'opzione `env` dell'SDK, non in un file di impostazioni di Claude Code. Per il pannello chat, aggiungila a [`claudeCode.environmentVariables`](https://code.claude.com/docs/it/vs-code#extension-settings) nel `settings.json` utente di VS Code stesso, poi avvia una nuova conversazione:

952 

953```json theme={null}

954{

955 "claudeCode.environmentVariables": [

956 { "name": "CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT", "value": "1" }

957 ]

958}

959```

918 960 

919### Remove-Item in PowerShell961### Remove-Item in PowerShell

920 962 

Details

41 41 

42Se un tutorial o un insieme di istruzioni meno recente ti dice di eseguire `/plugin marketplace add anthropics/claude-code`, questo aggiunge il marketplace demo, denominato `claude-code-plugins`. Non è il marketplace ufficiale.42Se un tutorial o un insieme di istruzioni meno recente ti dice di eseguire `/plugin marketplace add anthropics/claude-code`, questo aggiunge il marketplace demo, denominato `claude-code-plugins`. Non è il marketplace ufficiale.

43 43 

44La maggior parte dei plugin del marketplace demo si trova anche nel marketplace ufficiale con gli stessi nomi. Ad esempio, `code-review`, `feature-dev`, `commit-commands` e `security-guidance` sono presenti in entrambi. Installali da `claude-plugins-official` così da non avere due copie installate.44La maggior parte dei plugin del marketplace demo si trova anche nel marketplace ufficiale con gli stessi nomi. Ad esempio, `code-review`, `feature-dev` e `commit-commands` sono presenti in entrambi. Installali da `claude-plugins-official` così da non avere due copie installate.

45 45 

46## Trovare plugin nel marketplace ufficiale46## Trovare plugin nel marketplace ufficiale

47 47 

Details

403 403 

404Per gli intervalli di versione, la convenzione di tag git `<plugin>--v<version>` su cui si risolvono, e la fiducia cross-marketplace, vedi [Plugin dependencies](https://code.claude.com/docs/it/plugins/dependencies.md).404Per gli intervalli di versione, la convenzione di tag git `<plugin>--v<version>` su cui si risolvono, e la fiducia cross-marketplace, vedi [Plugin dependencies](https://code.claude.com/docs/it/plugins/dependencies.md).

405 405 

406Per fare in modo che Claude Code suggerisca un plugin quando un progetto lo corrisponde, aggiungi un blocco `relevance` alla voce con i segnali che identificano il progetto. Gli utenti vedono suggerimenti dal tuo marketplace solo quando un amministratore lo elenca in `pluginSuggestionMarketplaces`. Per i segnali e il passaggio di abilitazione, vedi [Plugin relevance](https://code.claude.com/docs/it/plugins/relevance.md).406Per fare in modo che Claude Code suggerisca un plugin quando un progetto lo corrisponde, aggiungi un blocco `relevance` alla voce con i segnali che identificano il progetto. Gli utenti vedono questi suggerimenti solo quando un amministratore elenca il tuo marketplace in `pluginSuggestionMarketplaces`. Per i segnali e il passaggio di abilitazione, vedi [Plugin relevance](https://code.claude.com/docs/it/plugins/relevance.md).

407 407 

408## Work around what a marketplace can't do408## Work around what a marketplace can't do

409 409 

Details

95 95 

96Nessuno di questi controlli esegue un mod in una sandbox. Un mod che consenti viene eseguito come l'utente, con l'accesso dell'utente a file, processi e rete.96Nessuno di questi controlli esegue un mod in una sandbox. Un mod che consenti viene eseguito come l'utente, con l'accesso dell'utente a file, processi e rete.

97 97 

98### Sapere quali hook del mod di un utente non vengono eseguiti

99 

100Dove viene caricata la [protezione integrata](#know-what-happens-by-default), un hook che il mod di un utente registra su uno di questi eventi non viene mai eseguito, e `/plugin` lo comunica a quell'utente in una nota. Nelle righe di [`session.append`](https://code.claude.com/docs/it/plugins/mods/reference#session), `door` è il tipo di riga memorizzata su cui è filtrato l'hook.

101 

102| Hook su | Cos'è l'evento |

103| :- | :- |

104| [`classic.<Event>`](https://code.claude.com/docs/it/plugins/mods/events#hook-the-settings-hook-events), come `classic.Stop` | Un [evento di hook delle impostazioni](https://code.claude.com/docs/it/hooks.md#hook-events) |

105| [`prompt.compose`](https://code.claude.com/docs/it/plugins/mods/reference#prompts-and-what-claude-reads) | L'elenco delle sezioni del prompt di sistema |

106| `prompt.section` | Una sezione del prompt di sistema |

107| `prompt.context` | Il contesto inviato con il primo messaggio di una conversazione |

108| `prompt.attachment` | Un messaggio che Claude Code aggiunge per Claude, come un promemoria |

109| `skill.prompt` | Il testo di una skill mentre viene espanso per Claude |

110| `attribution.text` | Il testo di attribuzione di un commit o di una pull request |

111| [`session.compact`](https://code.claude.com/docs/it/plugins/mods/reference#session) | Una compattazione della conversazione |

112| `settings.read` | Una lettura delle impostazioni, come una chiamata `$.settings.read` di un mod |

113| `session.append{door=attachment}` | La riga memorizzata per un messaggio che Claude Code aggiunge per Claude |

114| `session.append{door=hook-context}` | La riga memorizzata per il contesto proveniente da un hook delle impostazioni |

115| `session.append{door=compaction}` | Le righe memorizzate per il riepilogo e il limite di una compattazione |

116 

117La protezione ignora gli hook di un utente anche in alcuni altri casi, come le descrizioni degli strumenti della tua organizzazione, su [`tool.describe`](https://code.claude.com/docs/it/plugins/mods/reference#tools), e la riga memorizzata per il testo di una skill. Per questi `/plugin` non mostra alcuna nota. Se un hook su un altro evento non fa nulla, consulta [Scoprire perché un mod non fa nulla](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing).

118 

119La nota compare nei dettagli del plugin e nella scheda **Errors** di `/plugin`. Richiede Claude Code v2.1.299 o successivo. Nomina ogni hook della tabella così come il mod lo ha registrato, come in questo esempio:

120 

121```text theme={null}

122Its hooks on classic.Stop, prompt.section do not run here: where an organization manages Claude Code, these events pass over the plugins you install

123Only a plugin that counts as your organization's own runs hooks on these events. An administrator sets that up in managed settings

124```

125 

126Per consentire l'esecuzione di questi hook, modifica le impostazioni gestite in uno di due modi:

127 

128* **Eseguire il mod come mod della tua organizzazione**: [installa il mod in modo che conti come tuo](#install-your-organizations-mods). I suoi hook su questi eventi vengono quindi eseguiti, e la protezione resta caricata per ogni altro mod. Il mod si attiva per chiunque riceva queste impostazioni e deve trovarsi in una directory che posizioni su ogni macchina. Se lo elenchi in `prependPlugins`, mantieni `sec-default@builtin` nell'elenco.

129* **Rimuovere la protezione**: escludi `sec-default@builtin` da `prependPlugins`. Basta un elenco vuoto, `"prependPlugins": []`. Perdi l'intera protezione, non solo questi eventi. Il mod di un utente può quindi fare ciò che [la protezione altrimenti gli impedisce di fare](#know-what-happens-by-default), e [le opzioni della protezione](#set-options-on-the-built-in-guard) non si applicano.

130 

131Se distribuisci un elenco senza la protezione tramite le [impostazioni gestite dal server](https://code.claude.com/docs/it/server-managed-settings.md#fetch-and-caching-behavior), la protezione resta caricata finché il server non conferma le impostazioni per la sessione. Per confermare una delle due modifiche su una macchina che esegue la v2.1.299 o successiva, apri `/plugin` in una sessione su quella macchina e verifica che la nota non ci sia più.

132 

133Un hook `session.append` senza filtro `door` viene comunque eseguito e non riceve alcuna nota, ma le righe memorizzate nella tabella non lo raggiungono.

134 

98## Decidi se lasciare attivi i mod135## Decidi se lasciare attivi i mod

99 136 

100Un mod può fare più delle altre parti di un plugin perché viene eseguito all'interno di Claude Code. Vede ogni prompt e ogni chiamata a uno strumento, può modificarli e può consentire o negare una chiamata a uno strumento prima che compaia una richiesta di permesso.137Un mod può fare più delle altre parti di un plugin perché viene eseguito all'interno di Claude Code. Vede ogni prompt e ogni chiamata a uno strumento, può modificarli e può consentire o negare una chiamata a uno strumento prima che compaia una richiesta di permesso.


142| `$.prompt.submit` | Invia un prompt e può inviarlo come se fossero parole dell'utente stesso |179| `$.prompt.submit` | Invia un prompt e può inviarlo come se fossero parole dell'utente stesso |

143| `$.session.send` | Invia un messaggio che viene letto dal Claude di un'altra sessione, di un subagent o di un [compagno di team](https://code.claude.com/docs/it/agent-teams.md) |180| `$.session.send` | Invia un messaggio che viene letto dal Claude di un'altra sessione, di un subagent o di un [compagno di team](https://code.claude.com/docs/it/agent-teams.md) |

144 181 

145Nella riga `hooks:`, [`tool.call`](https://code.claude.com/docs/it/plugins/mods/reference#tools) e [`prompt.submit`](https://code.claude.com/docs/it/plugins/mods/reference#prompts-and-what-claude-reads) indicano che il mod vede ogni chiamata a uno strumento e ogni prompt, e può modificarli. [`session.append`](https://code.claude.com/docs/it/plugins/mods/reference#session) indica che il mod può riscrivere ogni riga della conversazione prima che venga memorizzata. [`ui.render{component=AskUserQuestion}`](https://code.claude.com/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) indica che il mod può ridisegnare la finestra di dialogo che Claude usa per porre una domanda all'utente. `tool.check` indica che il mod può approvare o negare una chiamata a uno strumento prima che compaia una richiesta di permesso. [Sapere cosa succede per impostazione predefinita](#know-what-happens-by-default) elenca quali delle tue regole e dei tuoi hook hanno la precedenza sulla sua risposta.182Nella riga `hooks:`, [`tool.call`](https://code.claude.com/docs/it/plugins/mods/reference#tools) e [`prompt.submit`](https://code.claude.com/docs/it/plugins/mods/reference#prompts-and-what-claude-reads) indicano che il mod vede ogni chiamata a uno strumento e ogni prompt, e può modificarli. [`session.append`](https://code.claude.com/docs/it/plugins/mods/reference#session) indica che il mod può riscrivere ogni riga della conversazione prima che venga memorizzata, eccetto [le righe che la protezione tralascia](#hooks-the-guard-passes-over). [`ui.render{component=AskUserQuestion}`](https://code.claude.com/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) indica che il mod può ridisegnare la finestra di dialogo che Claude usa per porre una domanda all'utente. `tool.check` indica che il mod può approvare o negare una chiamata a uno strumento prima che compaia una richiesta di permesso. [Sapere cosa succede per impostazione predefinita](#know-what-happens-by-default) elenca quali delle tue regole e dei tuoi hook hanno la precedenza sulla sua risposta.

146 183 

147## Scegli quanto consentire184## Scegli quanto consentire

148 185 

Details

377 377 

378### Gestire gli eventi degli hook delle impostazioni378### Gestire gli eventi degli hook delle impostazioni

379 379 

380Gli hook delle impostazioni sono gli hook di comando, HTTP, prompt e agente che configuri nei file di impostazioni. Ogni [evento degli hook delle impostazioni](https://code.claude.com/docs/it/hooks.md#hook-events), come `Stop`, `SessionEnd` o `PostToolUse`, è anche un evento denominato `classic.` seguito dal nome dell'evento dell'hook delle impostazioni, come `classic.Stop`. `e` è il JSON che un hook delle impostazioni riceve su stdin, incluso `transcript_path`.380Gli hook delle impostazioni sono gli hook di comando, HTTP, prompt e agente che configuri nei file di impostazioni. Ogni [evento degli hook delle impostazioni](https://code.claude.com/docs/it/hooks.md#hook-events), come `Stop`, `SessionEnd` o `PostToolUse`, è anche un evento denominato `classic.` seguito dal nome dell'evento dell'hook delle impostazioni, come `classic.Stop`. `e` è il JSON che un hook delle impostazioni riceve su stdin, incluso `transcript_path`. Dove viene caricata la [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default), [un hook su questi eventi in un mod che installi non viene eseguito](https://code.claude.com/docs/it/plugins/mods/admin.md#hooks-the-guard-passes-over).

381 381 

382Questo hook usa `Stop`, che si attiva quando Claude termina di rispondere, per registrare dove viene salvata la trascrizione della sessione:382Questo hook usa `Stop`, che si attiva quando Claude termina di rispondere, per registrare dove viene salvata la trascrizione della sessione:

383 383 


425* **È fallito prima di chiamare `next`**: Claude Code lo salta, e il gestore successivo viene eseguito al suo posto425* **È fallito prima di chiamare `next`**: Claude Code lo salta, e il gestore successivo viene eseguito al suo posto

426* **È fallito dopo che `next` è stato risolto**: quel risultato rimane valido, e nulla viene eseguito una seconda volta426* **È fallito dopo che `next` è stato risolto**: quel risultato rimane valido, e nulla viene eseguito una seconda volta

427 427 

428Una riga indica il mod, l'evento e il motivo, ad esempio `my-mod: tool.call hook skipped: threw Error: boom`. Dove la leggi dipende dalla sessione, come elencato in [Scoprire perché un mod non fa nulla](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing). Un hook `ui.render` il cui disegno non supera la validazione viene segnalato in modo diverso, come descritto in [Costruire un albero a partire dagli elementi](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements).428Una riga indica il mod, l'evento e il motivo, ad esempio `my-mod: tool.call hook skipped: threw Error: boom`. Dove la leggi dipende dalla sessione, come elencato in [Scoprire perché un mod non fa nulla](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing). Un hook `ui.render` il cui [albero non supera la validazione](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) conta come un hook che ha restituito un risultato con la forma sbagliata.

429 429 

430Per fare in modo che un hook che blocca le chiamate fallisca in modo chiuso, aggiungi un gestore di errori `.catch` che risponda al suo posto. Qui, `guard` è la tua funzione hook, e il gestore verifica [`next.called`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function) per capire se `guard` aveva già chiamato `next` quando è fallito:430Per fare in modo che un hook che blocca le chiamate fallisca in modo chiuso, aggiungi un gestore di errori `.catch` che risponda al suo posto. Qui, `guard` è la tua funzione hook, e il gestore verifica [`next.called`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function) per capire se `guard` aveva già chiamato `next` quando è fallito:

431 431 

Details

421Note: Type a note and press Enter421Note: Type a note and press Enter

422```422```

423 423 

424Aggiungi `rows` per permettere al campo di contenere più righe. Invio continua a inviare il testo, e una barra rovesciata prima di Invio inizia una nuova riga, così come Shift+Invio dove [il terminale lo supporta](https://code.claude.com/docs/it/terminal-config.md#enter-multiline-prompts). La galleria mostra [un campo con `rows`](https://code.claude.com/docs/it/plugins/mods/gallery#input).

425 

424La [galleria dell'interfaccia](https://code.claude.com/docs/it/plugins/mods/gallery.md) contiene esempi e screenshot della maggior parte degli elementi. Questa tabella elenca tutti gli elementi:426La [galleria dell'interfaccia](https://code.claude.com/docs/it/plugins/mods/gallery.md) contiene esempi e screenshot della maggior parte degli elementi. Questa tabella elenca tutti gli elementi:

425 427 

426| Elemento | Cosa disegna | Dove |428| Elemento | Cosa disegna | Dove |


436 438 

437Se il tuo modulo è un file `.tsx` o `.jsx`, puoi scrivere l'albero in JSX. Prima destruttura gli elementi da `$.ui.resolve(e)`.439Se il tuo modulo è un file `.tsx` o `.jsx`, puoi scrivere l'albero in JSX. Prima destruttura gli elementi da `$.ui.resolve(e)`.

438 440 

439Se un albero usa un elemento che l'app non ha, una prop che un elemento non accetta o un figlio dove non è previsto, Claude Code disegna la propria versione di quel punto.441Se il tuo disegno non viene visualizzato, controlla se il suo albero contiene una prop che un elemento non accetta o un figlio dove non è previsto. Un hook che restituisce un albero del genere [non riesce](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails), e una [riga `hook skipped`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#a-pane-or-band-is-empty) indica il tuo mod e la regola che l'albero ha violato. Per un `Text` in un pannello con una prop chiamata `bogusProp`, quella riga è:

440 442 

441In una sessione avviata con `--plugin-dir`, una riga della trascrizione lo segnala, ad esempio `ui.render (Pane) refused: Text prop "bogusProp" is not allowed; the engine drew its own`. Il [log di debug](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#read-the-debug-log) lo registra come `ui.render (Pane): a hook returned a tree that does not validate` con lo stesso motivo. Nient'altro compare nella sessione, quindi quando un disegno non viene visualizzato, controlla quella riga o il log.443```text theme={null}

444my-mod: ui.render hook skipped: returned the wrong shape (a tree Pane refuses: Text prop "bogusProp" is not allowed)

445```

442 446 

443### `Link` nell'app Desktop e in VS Code447### `Link` nell'app Desktop e in VS Code

444 448 


542| Tasto | Cosa fa |546| Tasto | Cosa fa |

543| :- | :- |547| :- | :- |

544| Tab | Passa al controllo successivo |548| Tab | Passa al controllo successivo |

545| Su e Giù | Spostano tra i controlli finché il tuo disegno entra nello spazio disponibile. Quando il pannello o la banda ha più righe di quante ne possa mostrare, lo fanno scorrere. |549| Su e Giù | Spostano tra i controlli finché il tuo disegno entra nello spazio disponibile. Quando il pannello o la banda ha più righe di quante ne possa mostrare, lo fanno scorrere. In un `Input`, [si spostano prima tra le righe del campo](https://code.claude.com/docs/it/plugins/mods/gallery.md#input). |

546| Invio | Preme il `Button` con il focus, invia l'`Input` con il focus o effettua la scelta in un `Select` |550| Invio | Preme il `Button` con il focus, invia l'`Input` con il focus o effettua la scelta in un `Select` |

547| Il tasto di scelta rapida di un pulsante | Preme quel pulsante. Mentre un `Input` ha il focus, ogni tasto stampabile va al campo. |551| Il tasto di scelta rapida di un pulsante | Preme quel pulsante. Mentre un `Input` ha il focus, ogni tasto stampabile va al campo. |

548| Pagina su, Pagina giù, Home e Fine | Fanno scorrere il tuo pannello o la tua banda quando ha più righe di quante ne possa mostrare |552| Pagina su, Pagina giù, Home e Fine | Fanno scorrere il tuo pannello o la tua banda quando ha più righe di quante ne possa mostrare |

Details

275| [`Link`](https://code.claude.com/docs/it/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Limiti](#limits). | ✓ | ✓ | ✓ |275| [`Link`](https://code.claude.com/docs/it/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Limiti](#limits). | ✓ | ✓ | ✓ |

276| [`Code`](https://code.claude.com/docs/it/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |276| [`Code`](https://code.claude.com/docs/it/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |

277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |

278| [`Input`](https://code.claude.com/docs/it/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |278| [`Input`](https://code.claude.com/docs/it/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, [`rows`](https://code.claude.com/docs/it/plugins/mods/gallery#input), `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |

279| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |279| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |

280| `Svg` | una `source` di markup SVG fino a 131.072 caratteri, testo `alt`, `width`, `height` e `isInteractive` | | ✓ | ✓ |280| `Svg` | una `source` di markup SVG fino a 131.072 caratteri, testo `alt`, `width`, `height` e `isInteractive` | | ✓ | ✓ |

281| [`Client`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |281| [`Client`](https://code.claude.com/docs/it/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |


333 333 

334Se imposti `gap`, `padding` o `margin` su un passo, il passo si applica contemporaneamente in orizzontale e in verticale. Ad esempio, nel terminale e nell'estensione VS Code, `padding: 'md'` corrisponde a due celle su ciascun lato e a una riga sopra e sotto.334Se imposti `gap`, `padding` o `margin` su un passo, il passo si applica contemporaneamente in orizzontale e in verticale. Ad esempio, nel terminale e nell'estensione VS Code, `padding: 'md'` corrisponde a due celle su ciascun lato e a una riga sopra e sotto.

335 335 

336I nomi dei passi richiedono Claude Code v2.1.299 o successivo. Su una release precedente, Claude Code [disegna la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) al posto di un albero che usa il nome di un passo.336I nomi dei passi richiedono Claude Code v2.1.299 o successivo. Su una release precedente, un albero che usa il nome di un passo non viene disegnato.

337 337 

338### Prop tipografiche di `Text`338### Prop tipografiche di `Text`

339 339 


346| `mono` | `true` per chiedere il carattere a spaziatura fissa dell'app | Ignorata: il terminale è sempre a spaziatura fissa | Ignorata, quindi il testo mantiene il carattere proprio dell'estensione |346| `mono` | `true` per chiedere il carattere a spaziatura fissa dell'app | Ignorata: il terminale è sempre a spaziatura fissa | Ignorata, quindi il testo mantiene il carattere proprio dell'estensione |

347| `tabular` | `true` per chiedere cifre di larghezza uguale, in modo che un numero che si aggiorna sul posto o una colonna di numeri restino allineati | Ignorata: le cifre del terminale occupano già una cella ciascuna | Ignorata |347| `tabular` | `true` per chiedere cifre di larghezza uguale, in modo che un numero che si aggiorna sul posto o una colonna di numeri restino allineati | Ignorata: le cifre del terminale occupano già una cella ciascuna | Ignorata |

348 348 

349Queste quattro prop richiedono Claude Code v2.1.299 o successivo. Su una release precedente, Claude Code [disegna la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) al posto di un albero che imposta `size`, `weight`, `mono` o `tabular`.349Queste quattro prop richiedono Claude Code v2.1.299 o successivo. Su una release precedente, un albero che imposta `size`, `weight`, `mono` o `tabular` non viene disegnato.

350 350 

351#### Sostituisci `bold` con `weight`351#### Sostituisci `bold` con `weight`

352 352 

353`bold` su un `Text` è deprecato in favore di `weight` e funziona ancora. Per sostituirlo su un `Text` senza `weight`, cambia `bold: true` in `weight: 'semibold'` per ottenere lo stesso risultato su Claude Code v2.1.299 o successivo.353`bold` su un `Text` è deprecato in favore di `weight` e funziona ancora. Per sostituirlo su un `Text` senza `weight`, cambia `bold: true` in `weight: 'semibold'` per ottenere lo stesso risultato su Claude Code v2.1.299 o successivo.

354 354 

355Su una release precedente alla v2.1.299, un albero che imposta `weight` non viene disegnato e Claude Code [disegna invece la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements). Se imposti sia `bold` sia `weight` su un `Text`, `bold` non ha alcun effetto.355Su una release precedente alla v2.1.299, un albero che imposta `weight` non viene disegnato. Se imposti sia `bold` sia `weight` su un `Text`, `bold` non ha alcun effetto.

356 356 

357## Limiti357## Limiti

358 358 

359Gli hook e le chiamate all'API dei mod sono soggetti a limiti di tempo e di dimensione. Claude Code salta un hook che supera un limite di tempo.359Gli hook e le chiamate all'API dei mod sono soggetti a limiti di tempo e di dimensione. Claude Code salta un hook che supera un limite di tempo. Un albero che supera il limite di annidamento, di elementi, di celle `Raster` o di byte di `Image` [non viene disegnato](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#a-pane-or-band-is-empty).

360 360 

361| Limite | Valore |361| Limite | Valore |

362| :- | :- |362| :- | :- |


372| Reindirizzamenti seguiti da una singola chiamata `$.http.fetch` | 5 |372| Reindirizzamenti seguiti da una singola chiamata `$.http.fetch` | 5 |

373| Il motivo `drop` di un hook o il motivo `deny` di `config.set` | 4.096 caratteri. La parte finale di un motivo più lungo viene troncata, e il drop o il deny si applica comunque. Il troncamento richiede Claude Code v2.1.292 o versioni successive; nelle versioni precedenti l'hook invece [non riesce](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails). |373| Il motivo `drop` di un hook o il motivo `deny` di `config.set` | 4.096 caratteri. La parte finale di un motivo più lungo viene troncata, e il drop o il deny si applica comunque. Il troncamento richiede Claude Code v2.1.292 o versioni successive; nelle versioni precedenti l'hook invece [non riesce](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails). |

374| Testo in un singolo albero | Vengono disegnati i primi 100.000 caratteri |374| Testo in un singolo albero | Vengono disegnati i primi 100.000 caratteri |

375| Il `language` o il `path` di un `Code`, il `value` di un'opzione `Select` o il `module` di un `Client` | 10.000 caratteri. Se uno è più lungo, Claude Code [disegna la propria versione del sito](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements). |375| Il `language` o il `path` di un `Code`, il `value` di un'opzione `Select` o il `module` di un `Client` | 10.000 caratteri. Se uno è più lungo, l'hook `ui.render` che lo ha restituito [non riesce](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails). |

376| L'`href` di un `Link` | 2.048 caratteri. Un `href` più lungo impedisce il disegno dell'intero albero. |376| L'`href` di un `Link` | 2.048 caratteri. Se è più lungo, l'hook `ui.render` che lo ha restituito [non riesce](https://code.claude.com/docs/it/plugins/mods/events.md#handle-a-hook-that-fails). |

377| Profondità di annidamento di un singolo albero | 32 livelli sotto l'elemento radice |

378| Elementi e figli di testo in un singolo albero | 20.000 |

379| Celle `Raster` in un singolo albero, ovvero le `columns` di ogni `Raster` moltiplicate per le sue `rows` | 262.144 |

380| Byte PNG o RGBA di tutte le `Image` in un singolo albero | 2 MiB |

377| `$.store` | 4 MiB di JSON in totale |381| `$.store` | 4 MiB di JSON in totale |

378| `$.session.messages()` | Le 4.096 voci più recenti |382| `$.session.messages()` | Le 4.096 voci più recenti |

379| Ridisegni di `$.ui.invalidate('ui.render')` | Limitati a 10 al secondo, o 30 nel terminale per il riquadro visibile, la fascia espansa e la riga di suggerimento sotto il prompt. Le chiamate che arrivano prima vengono accorpate. |383| Ridisegni di `$.ui.invalidate('ui.render')` | Limitati a 10 al secondo, o 30 nel terminale per il riquadro visibile, la fascia espansa e la riga di suggerimento sotto il prompt. Le chiamate che arrivano prima vengono accorpate. |

Details

312| Metodo | Cosa fa |312| Metodo | Cosa fa |

313| :- | :- |313| :- | :- |

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

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

316| `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| `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. |317| `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| `unmount()` | Rimuove il disegno |318| `unmount()` | Rimuove il disegno |

319 319 

320Ogni metodo si risolve dopo che il tuo handler ha terminato, quindi puoi controllare il risultato nella riga successiva. Imposta `props` su ciò che Claude Code passerebbe per quel punto. La [tabella dei punti di rendering](https://code.claude.com/docs/it/plugins/mods/reference.md#render-sites) elenca le prop di ciascun punto, e [i tipi per la tua build](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build) ne contengono i tipi.320Ogni metodo si risolve dopo che il tuo handler ha terminato, quindi puoi controllare il risultato nella riga successiva. Imposta `props` su ciò che Claude Code passerebbe per quel punto. La [tabella dei punti di rendering](https://code.claude.com/docs/it/plugins/mods/reference.md#render-sites) elenca le prop di ciascun punto, e [i tipi per la tua build](https://code.claude.com/docs/it/plugins/mods/create.md#get-the-types-for-your-build) ne contengono i tipi.

321 321 

322Un test di disegno controlla l'albero restituito dal tuo hook e se è valido per quell'app. Non controlla come l'app lo visualizza, quindi verifica un nuovo layout anche in una sessione reale.322Per individuare un [albero di elementi](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) non valido per l'app indicata in `surface`, usa `find` per verificare la presenza di un elemento aggiunto dal tuo hook. Il test non controlla come l'app visualizza un albero, quindi verifica un nuovo layout anche in una sessione reale.

323 323 

324### Testare un disegno dopo `/clear`324### Testare un disegno dopo `/clear`

325 325 

Details

226 226 

227Per trovare quel mod, [scrivi un log di debug](#read-the-debug-log) e cerca al suo interno `answered ui.render without next()`. Una riga come `other-mod (user) answered ui.render without next()` indica un mod che ha restituito il proprio albero senza chiamare `next(e)`. Non indica il [punto di rendering](https://code.claude.com/docs/it/plugins/mods/reference.md#render-sites), quindi può comparire anche un mod che disegna solo un riquadro. Un mod che chiama `next(e)` e scarta il risultato non genera alcuna riga, quindi controlla anche gli hook eseguiti prima del tuo.227Per trovare quel mod, [scrivi un log di debug](#read-the-debug-log) e cerca al suo interno `answered ui.render without next()`. Una riga come `other-mod (user) answered ui.render without next()` indica un mod che ha restituito il proprio albero senza chiamare `next(e)`. Non indica il [punto di rendering](https://code.claude.com/docs/it/plugins/mods/reference.md#render-sites), quindi può comparire anche un mod che disegna solo un riquadro. Un mod che chiama `next(e)` e scarta il risultato non genera alcuna riga, quindi controlla anche gli hook eseguiti prima del tuo.

228 228 

229Dopo la modifica, non vedi nulla nella banda se uno qualsiasi dei mod restituisce un albero che non supera la convalida. Per leggere il motivo, cerca una riga `ui.render (AbovePrompt) refused:` nella trascrizione di una sessione `--plugin-dir`, oppure cerca `does not validate` nel log di debug. Con più mod nella banda, nessuna delle due righe indica un mod, quindi controlla l'albero di ciascun mod.229La banda di un mod manca anche quando l'albero restituito dal suo hook non supera la convalida, mentre le bande degli altri mod restano. Per scoprire quale mod e perché, [scrivi un log di debug](#read-the-debug-log) e cerca al suo interno [`ui.render hook skipped`](#a-pane-or-band-is-empty).

230 230 

231### Un riquadro o una banda è vuota o mostra il contenuto abituale di Claude Code231### Un riquadro o una banda è vuota o mostra il contenuto abituale di Claude Code

232 232 

233L'[albero](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) restituito dal tuo hook non ha superato la convalida. Con `--plugin-dir`, la trascrizione riporta `ui.render (Pane) refused:` seguito dal motivo, come in `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`. Il log di debug contiene `a hook returned a tree that does not validate` con lo stesso motivo.233L'[albero](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) restituito dal tuo hook non ha superato la convalida. Una riga [`hook skipped`](#hook-skipped) [nella trascrizione o nel log di debug](#find-out-why-a-mod-does-nothing) indica il tuo mod e il motivo, come in questa per un `Box` in un riquadro:

234 234 

235Leggi il motivo su quella riga. Le cause comuni sono una prop che l'elemento non accetta e un elemento che l'app non possiede.235```text theme={null}

236first-mod: ui.render hook skipped: returned the wrong shape (a tree Pane refuses: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse)

237```

238 

239Correggi ciò che indica il motivo. Se il motivo è troncato, [scrivi un log di debug](#read-the-debug-log) e cerca al suo interno `a hook returned a tree that does not validate` per leggere il resto.

240 

241Se invece la riga riporta `refused:` subito dopo il nome del punto di rendering, come in `ui.render (Pane) refused:`, consulta [Una riga `ui.render` riporta `refused`](#ui-render-refused).

242 

243### Una riga `ui.render` riporta `refused`

244 

245`ui.render (<site>) refused:`, oppure `ui.render (<site>): the chain settled on a tree that does not validate` nel [log di debug](#read-the-debug-log), significa che l'[albero](https://code.claude.com/docs/it/plugins/mods/interface.md#build-a-tree-from-elements) in quel punto di rendering supera un [limite di dimensione](https://code.claude.com/docs/it/plugins/mods/reference.md#limits). Entrambe le righe indicano il [punto di rendering](https://code.claude.com/docs/it/plugins/mods/reference.md#render-sites) e poi il motivo, e il motivo indica il limite.

246 

247Modifica i mod che disegnano in quel punto di rendering in modo che i loro hook [`ui.render`](https://code.claude.com/docs/it/plugins/mods/reference#interface) restituiscano alberi più piccoli, oppure chiedi ai loro autori di farlo. Se la riga della trascrizione inizia con `hooks`, più di un mod caricato ha un hook `ui.render` per quel punto di rendering, quindi controlla gli alberi di ciascuno di quei mod. Per più mod le cui bande sopra il prompt si annidano in un albero profondo più di 32 livelli, la riga riporta:

248 

249```text theme={null}

250hooks: ui.render (AbovePrompt) refused: deeper than 32; nothing was drawn

251```

252 

253Prima della v2.1.307, una riga `refused:` per qualsiasi punto di rendering segnalava qualsiasi albero che non superava la convalida, e per `Pane` e `AbovePrompt` terminava con `; the engine drew its own`. In quelle versioni, correggi ciò che indica il motivo.

236 254 

237### `needs a key`, `is drawn twice` o `key each once`255### `needs a key`, `is drawn twice` o `key each once`

238 256 


383hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render401hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render

384```402```

385 403 

386Anche un disegno che non ha superato la validazione conta come risultato rifiutato e ottiene una riga. Per scrivere le tue righe nel log, chiama [`$.ui.log`](https://code.claude.com/docs/it/plugins/mods/api#show-something-without-starting-a-turn) con un secondo argomento, come in `$.ui.log('message', { to: 'debug' })`. Senza il secondo argomento, `$.ui.log` aggiunge una riga attenuata alla trascrizione.404Per scrivere le tue righe nel log, chiama [`$.ui.log`](https://code.claude.com/docs/it/plugins/mods/api#show-something-without-starting-a-turn) con un secondo argomento, come in `$.ui.log('message', { to: 'debug' })`. Senza il secondo argomento, `$.ui.log` aggiunge una riga attenuata alla trascrizione.

387 405 

388Mentre modifichi un mod caricato con `--plugin-dir`, la trascrizione mostra una riga per ogni ricaricamento che nomina il mod ed elenca i suoi hook. Se un salvataggio rompe il modulo, la riga riporta `reload failed, the previous version stays loaded:` con il motivo, e l'ultima versione funzionante continua a essere eseguita finché Claude Code non ricarica di nuovo i plugin, ad esempio quando esegui `/reload-plugins`.406Mentre modifichi un mod caricato con `--plugin-dir`, la trascrizione mostra una riga per ogni ricaricamento che nomina il mod ed elenca i suoi hook. Se un salvataggio rompe il modulo, la riga riporta `reload failed, the previous version stays loaded:` con il motivo, e l'ultima versione funzionante continua a essere eseguita finché Claude Code non ricarica di nuovo i plugin, ad esempio quando esegui `/reload-plugins`.

389 407 

plugins/org.md +6 −2

Details

182| `blockedMarketplaces` | Elenco bloccato delle fonti di marketplace, controllato prima dell'elenco consentito | Non blocca un marketplace già registrato da una fonte che non corrisponde |182| `blockedMarketplaces` | Elenco bloccato delle fonti di marketplace, controllato prima dell'elenco consentito | Non blocca un marketplace già registrato da una fonte che non corrisponde |

183| `syncClaudeAiPlugins` | Impostare `false` per interrompere il download e il caricamento da parte di Claude Code dei plugin [sincronizzati da claude.ai](https://code.claude.com/docs/it/plugins/loading.md#synced-plugins) per l'account di ogni utente. Richiede Claude Code v2.1.273 o successivo | Non disattiva un plugin sincronizzato. Per questo, impostare `"<name>@synced": false` in [`enabledPlugins`](https://code.claude.com/docs/it/settings-reference#enabledplugins) |183| `syncClaudeAiPlugins` | Impostare `false` per interrompere il download e il caricamento da parte di Claude Code dei plugin [sincronizzati da claude.ai](https://code.claude.com/docs/it/plugins/loading.md#synced-plugins) per l'account di ogni utente. Richiede Claude Code v2.1.273 o successivo | Non disattiva un plugin sincronizzato. Per questo, impostare `"<name>@synced": false` in [`enabledPlugins`](https://code.claude.com/docs/it/settings-reference#enabledplugins) |

184| `enabledPlugins` | `true` forza l'abilitazione, `false` blocca in ogni ambito e nasconde il plugin | Non installa un plugin il cui marketplace non è registrato o consentito |184| `enabledPlugins` | `true` forza l'abilitazione, `false` blocca in ogni ambito e nasconde il plugin | Non installa un plugin il cui marketplace non è registrato o consentito |

185| `disableSideloadFlags` | Rifiuta `--plugin-dir`, `--plugin-url`, `--agents`, l'opzione `plugins` dell'Agent SDK, e non-SDK `--mcp-config` all'avvio, e rifiuta le cartelle nominate nella variabile [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/it/env-vars#variables) allo stesso modo | Non limita `.mcp.json`, `claude mcp add`, o server forniti da SDK. Abbinarlo a [`allowedMcpServers`](https://code.claude.com/docs/it/managed-mcp) |185| `disableSideloadFlags` | Rifiuta all'avvio `--plugin-dir`, `--plugin-url`, `--agents`, l'opzione `plugins` dell'Agent SDK e le cartelle indicate nella variabile [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/it/env-vars#variables), e anche `--mcp-config` a meno che ogni server al suo interno non sia una voce in-process `type: "sdk"`. Rifiuta le cartelle di plugin che un'applicazione Agent SDK aggiunge durante la sessione con [`addPlugins`](https://code.claude.com/docs/it/agent-sdk/typescript#load-more-plugin-folders-with-addplugins) | Non limita `.mcp.json`, `claude mcp add` o i server forniti dall'SDK. Abbinalo a [`allowedMcpServers`](https://code.claude.com/docs/it/managed-mcp) |

186| `disableCommandPluginSources` | Blocca i plugin con una fonte `command` dall'installazione, aggiornamento o caricamento. Una fonte `command` è quella il cui directory di plugin è prodotto eseguendo un comando sulla macchina. Quando non impostato, assume il valore di `allowManagedHooksOnly` | Non influisce su altri tipi di fonte |186| `disableCommandPluginSources` | Blocca i plugin con una fonte `command` dall'installazione, aggiornamento o caricamento. Una fonte `command` è quella il cui directory di plugin è prodotto eseguendo un comando sulla macchina. Quando non impostato, assume il valore di `allowManagedHooksOnly` | Non influisce su altri tipi di fonte |

187| `allowManagedHooksOnly` | Limita quali hook vengono eseguiti. Vedere [`allowManagedHooksOnly`](https://code.claude.com/docs/it/settings-reference#allowmanagedhooksonly) | Non si fida degli hook dai plugin che gli utenti abilitano da soli |187| `allowManagedHooksOnly` | Limita quali hook vengono eseguiti. Vedere [`allowManagedHooksOnly`](https://code.claude.com/docs/it/settings-reference#allowmanagedhooksonly) | Non si fida degli hook dai plugin che gli utenti abilitano da soli |

188| `strictPluginOnlyCustomization` | Blocca skill, agenti, hook e server MCP che non provengono da un plugin, dalle impostazioni gestite o dai componenti integrati di Claude Code. Impedisce anche il caricamento dei [plugin skills-directory](#keep-skills-directory-plugins-loading). Imposta `true` per coprire tutti e quattro i tipi, o un array di valori `skills`, `agents`, `hooks` e `mcp` come `["skills", "hooks"]` per coprirne alcuni | Non limita quali plugin installano gli utenti. Abbinalo a `strictKnownMarketplaces` |188| `strictPluginOnlyCustomization` | Blocca skill, agenti, hook e server MCP che non provengono da un plugin, dalle impostazioni gestite o dai componenti integrati di Claude Code. Impedisce anche il caricamento dei [plugin skills-directory](#keep-skills-directory-plugins-loading). Imposta `true` per coprire tutti e quattro i tipi, o un array di valori `skills`, `agents`, `hooks` e `mcp` come `["skills", "hooks"]` per coprirne alcuni | Non limita quali plugin installano gli utenti. Abbinalo a `strictKnownMarketplaces` |

189| `pluginSuggestionMarketplaces` | Marketplace i cui plugin possono apparire come suggerimenti di installazione. Vedere [Consigliare plugin](#recommend-plugins) | Non influisce sui suggerimenti incorporati |189| `pluginSuggestionMarketplaces` | Marketplace i cui plugin possono apparire come suggerimenti di installazione nel terminale. Consulta [Consigliare plugin](#recommend-plugins) | Non influisce sui suggerimenti integrati |

190| `pluginTrustMessage` | Aggiunge il vostro testo all'avviso di fiducia che `/plugin` mostra prima che un plugin si installi | Non cambia il testo dell'avviso stesso |190| `pluginTrustMessage` | Aggiunge il vostro testo all'avviso di fiducia che `/plugin` mostra prima che un plugin si installi | Non cambia il testo dell'avviso stesso |

191| `allowedChannelPlugins` | Sostituisce l'elenco predefinito di plugin autorizzati a inviare messaggi di canale. Richiede `channelsEnabled: true` | Vedere [Limitare quali plugin di canale possono essere eseguiti](https://code.claude.com/docs/it/channels.md#restrict-which-channel-plugins-can-run) |191| `allowedChannelPlugins` | Sostituisce l'elenco predefinito di plugin autorizzati a inviare messaggi di canale. Richiede `channelsEnabled: true` | Vedere [Limitare quali plugin di canale possono essere eseguiti](https://code.claude.com/docs/it/channels.md#restrict-which-channel-plugins-can-run) |

192| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](https://code.claude.com/docs/it/env-vars) | Interrompe le sessioni di terminale interattive dal registrare automaticamente il marketplace ufficiale | Non rimuove un marketplace già registrato. L'elenco consentito e l'elenco bloccato controllano la stessa registrazione automatica senza di esso. Una macchina che ha iniziato una volta con esso impostato non riprende la registrazione automatica dopo averlo disimpostato |192| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](https://code.claude.com/docs/it/env-vars) | Interrompe le sessioni di terminale interattive dal registrare automaticamente il marketplace ufficiale | Non rimuove un marketplace già registrato. L'elenco consentito e l'elenco bloccato controllano la stessa registrazione automatica senza di esso. Una macchina che ha iniziato una volta con esso impostato non riprende la registrazione automatica dopo averlo disimpostato |


361 361 

362I suggerimenti da un marketplace vengono visualizzati solo quando è registrato sulla macchina dell'utente, si elenca il suo nome in `pluginSuggestionMarketplaces` nelle impostazioni gestite e si dichiara la sua origine nella stessa policy. Dichiarare l'origine come voce `extraKnownMarketplaces` del marketplace o come voce dell'elenco consentiti. Il marketplace ufficiale richiede solo il nome. Vedere [Abilitare i suggerimenti nelle impostazioni gestite](https://code.claude.com/docs/it/plugins/relevance.md#enable-suggestions-in-managed-settings).362I suggerimenti da un marketplace vengono visualizzati solo quando è registrato sulla macchina dell'utente, si elenca il suo nome in `pluginSuggestionMarketplaces` nelle impostazioni gestite e si dichiara la sua origine nella stessa policy. Dichiarare l'origine come voce `extraKnownMarketplaces` del marketplace o come voce dell'elenco consentiti. Il marketplace ufficiale richiede solo il nome. Vedere [Abilitare i suggerimenti nelle impostazioni gestite](https://code.claude.com/docs/it/plugins/relevance.md#enable-suggestions-in-managed-settings).

363 363 

364> [!NOTE]

365>

366> Nella conversazione di una sessione cloud, Claude può suggerire plugin indipendentemente dal fatto che tu imposti `pluginSuggestionMarketplaces`. Per disattivare questi suggerimenti, consulta [Disattivare i suggerimenti dei plugin](https://code.claude.com/docs/it/claude-code-on-the-web.md#turn-off-plugin-suggestions).

367 

364## Audit and review368## Audit and review

365 369 

366OpenTelemetry events and the Analytics API tell you what your fleet installs and runs.370OpenTelemetry events and the Analytics API tell you what your fleet installs and runs.

Details

8 8 

9Claude Code può suggerire l'installazione di un plugin dal marketplace della tua organizzazione quando la sessione di un utente corrisponde ai segnali che definisci per quel plugin. I segnali includono la directory di lavoro, i file che Claude ha letto e i comandi che Claude ha eseguito. Li definisci aggiungendo un blocco `relevance` alla voce del plugin in `marketplace.json`.9Claude Code può suggerire l'installazione di un plugin dal marketplace della tua organizzazione quando la sessione di un utente corrisponde ai segnali che definisci per quel plugin. I segnali includono la directory di lavoro, i file che Claude ha letto e i comandi che Claude ha eseguito. Li definisci aggiungendo un blocco `relevance` alla voce del plugin in `marketplace.json`.

10 10 

11Un operatore del marketplace scrive le voci `relevance`. Un amministratore quindi inserisce il marketplace nella whitelist nelle impostazioni gestite. Gli utenti non vedono alcun suggerimento da un marketplace finché non è inserito nella whitelist.11Un operatore del marketplace scrive le voci `relevance`. Un amministratore quindi inserisce il marketplace nell'allowlist nelle impostazioni gestite. Nel terminale, gli utenti non vedono alcun suggerimento da un marketplace finché non è inserito nell'allowlist.

12 12 

13> [!NOTE]13> [!NOTE]

14>14>

15> Questi casi sono trattati in altre pagine:15> Questi casi sono trattati in altre pagine:

16>16>

17> * **Vuoi installare plugin**: vedi [Installare e gestire plugin](https://code.claude.com/docs/it/plugins/install.md)17> * **Vuoi installare plugin**: vedi [Installare e gestire plugin](https://code.claude.com/docs/it/plugins/install.md)

18> * **Vuoi disattivare i suggerimenti**: vedi [Comprendere come funziona la rilevanza dei plugin](#understand-how-plugin-relevance-works)18> * **Vuoi disattivare i suggerimenti**: vedi [Comprendere come funziona la rilevanza dei plugin](#understand-how-plugin-relevance-works) oppure, per i suggerimenti che Claude fa nella conversazione di una sessione cloud, [Disattivare i suggerimenti dei plugin](https://code.claude.com/docs/it/claude-code-on-the-web.md#turn-off-plugin-suggestions)

19 19 

20Inizia con le sezioni per il tuo ruolo:20Inizia con le sezioni per il tuo ruolo:

21 21 


158 158 

159## Enable suggestions in managed settings159## Enable suggestions in managed settings

160 160 

161Gli utenti non vedono alcun suggerimento da un marketplace finché un amministratore non lo inserisce nella whitelist nelle [impostazioni gestite](https://code.claude.com/docs/it/plugins/org.md), anche quando il suo `marketplace.json` dichiara `relevance`.161Nel terminale, gli utenti non vedono alcun suggerimento da un marketplace finché un amministratore non lo inserisce nell'allowlist nelle [impostazioni gestite](https://code.claude.com/docs/it/plugins/org.md), anche quando il suo `marketplace.json` dichiara `relevance`.

162 162 

163Per inserire un marketplace nella whitelist, modifica le tue impostazioni gestite come segue:163Per inserire un marketplace nella whitelist, modifica le tue impostazioni gestite come segue:

164 164 

sandboxing.md +1 −1

Details

891 891 

892### Una cartella denominata `objects` o `refs` scompare dopo un comando892### Una cartella denominata `objects` o `refs` scompare dopo un comando

893 893 

894Una cartella `objects` o `refs` di primo livello comparsa durante la sessione può essere [eliminata al termine di un comando sandboxato](#when-the-sandbox-deletes-head-objects-or-refs). Non importa se l'abbia creata un comando, Claude o tu. Per mantenere una cartella, lasciaci dentro qualcosa. Se un file o un collegamento simbolico `HEAD` si è trovato al primo livello durante la sessione, spostalo altrove, quindi riavvia ogni sessione di Claude Code aperta lì.894Una cartella `objects` o `refs` di primo livello comparsa durante la sessione può essere [eliminata al termine di un comando sandboxato](#when-the-sandbox-deletes-head-objects-or-refs). Non importa se l'abbia creata un comando, Claude o tu. Per mantenere una cartella, lasciaci dentro qualcosa. Se un file o un collegamento simbolico `HEAD` si è trovato al primo livello durante la sessione, spostalo altrove, quindi riavvia ogni sessione di Claude Code aperta nella tua directory di lavoro.

895 895 

896Prima della v2.1.307, la cartella veniva eliminata anche se conteneva qualcosa e non c'era alcun `HEAD`. Se usi una versione precedente, [aggiorna Claude Code](https://code.claude.com/docs/it/setup.md#update-claude-code).896Prima della v2.1.307, la cartella veniva eliminata anche se conteneva qualcosa e non c'era alcun `HEAD`. Se usi una versione precedente, [aggiorna Claude Code](https://code.claude.com/docs/it/setup.md#update-claude-code).

897 897 

Details

170 170 

171**Avvii successivi con impostazioni nella cache:**171**Avvii successivi con impostazioni nella cache:**

172 172 

173* Le impostazioni nella cache si applicano immediatamente all'avvio, a eccezione dei valori `modelPricing` e `managedMcpServers` nella cache e delle variabili d'ambiente che Claude Code trattiene fino alla conferma del payload da parte del server173* Le impostazioni nella cache si applicano immediatamente all'avvio, a eccezione dei valori `modelPricing` e `managedMcpServers` nella cache; delle variabili d'ambiente che Claude Code trattiene fino alla conferma del payload da parte del server; della rimozione, del riposizionamento o della disattivazione della [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default) da parte di un elenco di plugin nella cache; e, su una macchina in cui un'origine gestita dall'endpoint elenca o abilita plugin propri, dello [status di plugin dell'organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods) di un plugin abilitato solo da un elenco nella cache

174* Un [`modelPricing`](https://code.claude.com/docs/it/settings-reference#modelpricing) nella cache non si applica finché il recupero della sessione non conferma il payload. Fino ad allora, i costi che gli sviluppatori vedono in `/usage` e nella riga di stato sono a prezzo di listino174* Un [`modelPricing`](https://code.claude.com/docs/it/settings-reference#modelpricing) nella cache non si applica finché il recupero della sessione non conferma il payload. Fino ad allora, i costi che gli sviluppatori vedono in `/usage` e nella riga di stato sono a prezzo di listino

175* Un blocco [`managedMcpServers`](https://code.claude.com/docs/it/settings-reference#managedmcpservers) nella cache non si applica finché il recupero della sessione non conferma il payload. Claude Code attende fino a 30 secondi quel recupero prima di connettere i server MCP. Se il recupero non riesce o va in timeout, la sessione inizia senza i server dell'organizzazione, `/status` lo segnala, e i server si connettono non appena un recupero successivo li conferma. Consulta [Quando si connettono i server forniti](https://code.claude.com/docs/it/managed-mcp.md#when-provided-servers-connect) per il comportamento completo, incluso il primo avvio. Richiede Claude Code v2.1.259 o successivo175* Un blocco [`managedMcpServers`](https://code.claude.com/docs/it/settings-reference#managedmcpservers) nella cache non si applica finché il recupero della sessione non conferma il payload. Claude Code attende fino a 30 secondi quel recupero prima di connettere i server MCP. Se il recupero non riesce o va in timeout, la sessione inizia senza i server dell'organizzazione, `/status` lo segnala, e i server si connettono non appena un recupero successivo li conferma. Consulta [Quando si connettono i server forniti](https://code.claude.com/docs/it/managed-mcp.md#when-provided-servers-connect) per il comportamento completo, incluso il primo avvio. Richiede Claude Code v2.1.259 o successivo

176* Un valore [`prependPlugins`](https://code.claude.com/docs/it/settings-reference#prependplugins), [`appendPlugins`](https://code.claude.com/docs/it/settings-reference#appendplugins) o [`enabledPlugins`](https://code.claude.com/docs/it/settings-reference#enabledplugins) nella cache non può rimuovere la protezione integrata, cambiarne la posizione o disattivarla finché il recupero della sessione non conferma il payload

177* Su una macchina in cui un'[origine gestita dall'endpoint](https://code.claude.com/docs/it/managed-settings.md#choose-a-delivery-mechanism) elenca o abilita plugin propri, un plugin abilitato solo da un elenco nella cache conta come [plugin dell'utente](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods), non della tua organizzazione, finché il recupero non conferma il payload

176* Claude Code recupera le impostazioni aggiornate in background178* Claude Code recupera le impostazioni aggiornate in background

177* Le impostazioni nella cache persistono in caso di errori di rete. Se il recupero all'avvio non riesce, Claude Code avvisa nelle sessioni interattive che è in vigore la policy nella cache179* Le impostazioni nella cache persistono in caso di errori di rete. Se il recupero all'avvio non riesce, Claude Code avvisa nelle sessioni interattive che è in vigore la policy nella cache

178* I valori trattenuti all'avvio restano trattenuti fino al primo recupero riuscito180* I valori trattenuti all'avvio restano trattenuti fino al primo recupero riuscito

sessions.md +1 −1

Details

249 249 

250Per impostazione predefinita, Claude Code archivia i trascritti come JSONL in `~/.claude/projects/<project>/<session-id>.jsonl`, dove `<project>` è il percorso della directory di lavoro con caratteri non alfanumerici sostituiti da `-`. Per una directory di lavoro il cui nome convertito supera i 200 caratteri, Claude Code tronca il nome a 200 caratteri e aggiunge un hash del percorso completo, in modo che il nome della directory rimanga entro i limiti del file system.250Per impostazione predefinita, Claude Code archivia i trascritti come JSONL in `~/.claude/projects/<project>/<session-id>.jsonl`, dove `<project>` è il percorso della directory di lavoro con caratteri non alfanumerici sostituiti da `-`. Per una directory di lavoro il cui nome convertito supera i 200 caratteri, Claude Code tronca il nome a 200 caratteri e aggiunge un hash del percorso completo, in modo che il nome della directory rimanga entro i limiti del file system.

251 251 

252Ogni riga è un oggetto JSON per un messaggio, uso dello strumento o voce di metadati. Il formato della voce è interno a Claude Code e cambia tra le versioni, quindi gli script che analizzano direttamente questi file possono interrompersi in qualsiasi rilascio. Per costruire sui dati della sessione, utilizza `/export` o le [interfacce di script](#access-conversations-from-scripts) invece.252Ogni riga è un oggetto JSON: un messaggio, un uso o un risultato di uno strumento, un record di una richiesta che Claude Code ha inviato al modello, o una voce di metadati. Il formato della voce è interno a Claude Code e cambia tra le versioni, quindi gli script che analizzano direttamente questi file possono interrompersi in qualsiasi rilascio. Per costruire sui dati della sessione, utilizza `/export` o le [interfacce di script](#access-conversations-from-scripts) invece.

253 253 

254La posizione, la conservazione e il comportamento di scrittura sono configurabili:254La posizione, la conservazione e il comportamento di scrittura sono configurabili:

255 255 

Details

2037* **Type**: array di stringhe, ognuna un nome di servizio; un singolo `*` finale corrisponde a un prefisso, e `"*"` da solo corrisponde a ogni servizio2037* **Type**: array di stringhe, ognuna un nome di servizio; un singolo `*` finale corrisponde a un prefisso, e `"*"` da solo corrisponde a ogni servizio

2038* **Default**: non impostato2038* **Default**: non impostato

2039 2039 

2040Questo consente ogni servizio sotto il prefisso `com.apple.coresimulator.`:2040Questo esempio consente ogni servizio con il prefisso `com.apple.CoreSimulator.`:

2041 2041 

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

2043{2043{

2044 "sandbox": {2044 "sandbox": {

2045 "network": {2045 "network": {

2046 "allowMachLookup": ["com.apple.coresimulator.*"]2046 "allowMachLookup": ["com.apple.CoreSimulator.*"]

2047 }2047 }

2048 }2048 }

2049}2049}


4729* **Type**: array di strings, percorsi di directory relativi alla radice del repository4729* **Type**: array di strings, percorsi di directory relativi alla radice del repository

4730* **Default**: non impostato, quindi ogni worktree estrae l'intero albero4730* **Default**: non impostato, quindi ogni worktree estrae l'intero albero

4731 4731 

4732Questo esempio estrae solo `packages/my-app` e `shared/utils`, più i file a livello di radice, in ogni worktree:4732Includi `.claude` nell'elenco in modo che ogni worktree contenga anche i file `.claude/settings.json` e `.claude/rules/` del repository. Questo esempio estrae solo `.claude`, `packages/my-app` e `shared/utils`, più i file a livello di radice, in ogni worktree:

4733 4733 

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

4735{4735{

4736 "worktree": {4736 "worktree": {

4737 "sparsePaths": ["packages/my-app", "shared/utils"]4737 "sparsePaths": [".claude", "packages/my-app", "shared/utils"]

4738 }4738 }

4739}4739}

4740```4740```


5525 5525 

5526Claude Code accetta comunque un `--mcp-config` i cui server sono tutti voci in-process `type: "sdk"`, quindi l'Agent SDK e l'estensione VS Code continuano a funzionare. Gli utenti possono comunque aggiungere server con `claude mcp add` o un file `.mcp.json`; per il controllo per-server, imposta anche [`allowedMcpServers`](https://code.claude.com/docs/it/managed-mcp). Richiede Claude Code v2.1.193 o successivo.5526Claude Code accetta comunque un `--mcp-config` i cui server sono tutti voci in-process `type: "sdk"`, quindi l'Agent SDK e l'estensione VS Code continuano a funzionare. Gli utenti possono comunque aggiungere server con `claude mcp add` o un file `.mcp.json`; per il controllo per-server, imposta anche [`allowedMcpServers`](https://code.claude.com/docs/it/managed-mcp). Richiede Claude Code v2.1.193 o successivo.

5527 5527 

5528Lo stesso controllo copre le cartelle plugin nominate nella variabile di ambiente [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/it/env-vars#variables), che richiede Claude Code v2.1.280 o successivo. Quando la variabile nomina una cartella, Claude Code esce con lo stesso errore e l'errore dice di annullare l'impostazione della variabile.5528`disableSideloadFlags` rifiuta anche le cartelle dei plugin provenienti da queste fonti:

5529 

5530* **La variabile d'ambiente [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/it/env-vars#variables)**: quando la variabile nomina una cartella di plugin, Claude Code esce all'avvio con un errore che nomina la variabile e indica di annullarne l'impostazione. Richiede Claude Code v2.1.280 o successivo

5531* **L'opzione [`addPlugins`](https://code.claude.com/docs/it/agent-sdk/typescript#load-more-plugin-folders-with-addplugins) dell'Agent SDK**: quando un'applicazione passa cartelle di plugin a `reloadPlugins()` in `addPlugins`, quella chiamata fallisce con un errore. La sessione continua a essere eseguita con i plugin che aveva già. Richiede Claude Code v2.1.301 o successivo

5529 5532 

5530Nelle sessioni cloud, Claude Code ignora anche gli aggiornamenti MCP mid-session consegnati dal server, il percorso dietro la configurazione della sessione cloud e le chiamate SDK `setMcpServers()` che raggiungono quelle sessioni. Le voci in-process `type: "sdk"` e gli strumenti Slack di una sessione Claude Tag rimangono esenti anche lì. Prima della v2.1.268, sia questo drop che lo startup drop rimuovevano anche gli strumenti Slack di una sessione Claude Tag. Prima della v2.1.239, un `--mcp-config` consegnato dal server bloccava l'avvio di una sessione cloud.5533Nelle sessioni cloud, Claude Code ignora anche gli aggiornamenti MCP mid-session consegnati dal server, il percorso dietro la configurazione della sessione cloud e le chiamate SDK `setMcpServers()` che raggiungono quelle sessioni. Le voci in-process `type: "sdk"` e gli strumenti Slack di una sessione Claude Tag rimangono esenti anche lì. Prima della v2.1.268, sia questo drop che lo startup drop rimuovevano anche gli strumenti Slack di una sessione Claude Tag. Prima della v2.1.239, un `--mcp-config` consegnato dal server bloccava l'avvio di una sessione cloud.

5531 5534 

vs-code.md +36 −17

Details

203What's in @src/components/ (include a trailing slash for folders)203What's in @src/components/ (include a trailing slash for folders)

204```204```

205 205 

206Per i PDF di grandi dimensioni, puoi chiedere a Claude di leggere pagine specifiche invece dell'intero file. Chiedi una singola pagina, un intervallo come le pagine 1-10, oppure un intervallo aperto come dalla pagina 3 in poi. La lettura di pagine specifiche richiede [poppler-utils](https://code.claude.com/docs/it/tools-reference.md#read-tool-behavior) sulla macchina in cui viene eseguito Claude Code.206### Leggere pagine specifiche di un PDF

207 

208Quando selezioni del testo nell'editor, Claude può vedere automaticamente il codice evidenziato. Il piè di pagina della casella del prompt mostra quante righe sono selezionate. Premi `Option+K` (Mac) / `Alt+K` (Windows/Linux) per inserire una @-menzione con il percorso del file e i numeri di riga, ad esempio `@app.ts#5-10`. Fai clic sulla **X** nell'indicatore della selezione per rimuoverla, in modo che Claude non riceva la selezione. L'indicatore ricompare quando selezioni altro testo.

209 207 

210L'estensione non invia il testo selezionato da alcuni file:208Per i PDF di grandi dimensioni, puoi chiedere a Claude di leggere pagine specifiche invece dell'intero file. Chiedi una singola pagina, un intervallo come le pagine 1-10, oppure un intervallo aperto come dalla pagina 3 in poi. La lettura di pagine specifiche richiede [poppler-utils](https://code.claude.com/docs/it/tools-reference.md#read-tool-behavior) sulla macchina in cui viene eseguito Claude Code.

211 

212* Quando il file si trova nel tuo workspace e corrisponde alle impostazioni `files.exclude` o `search.exclude`, Claude riceve al massimo il percorso del file e non il testo che hai selezionato.

213* Lo stesso vale per un file ignorato da git, purché l'impostazione `search.useIgnoreFiles` di VS Code e l'[impostazione `respectGitIgnore`](#extension-settings) dell'estensione siano entrambe attive, come avviene per impostazione predefinita.

214 209 

215Questo filtro riguarda solo il pannello della chat. Quando Claude Code viene eseguito nel terminale integrato, la CLI invia il testo selezionato indipendentemente dal file. Per impedire che i contenuti di un file arrivino a Claude in quel caso, aggiungi una [regola di negazione `Read`](#the-built-in-ide-mcp-server).210### Includere l'output del terminale nei prompt

216 211 

217Claude vede anche quale file hai aperto nell'editor, anche quando non è selezionato nulla, e la casella del prompt ne mostra il nome. Per aggiungere solo il testo selezionato, disattiva l'[impostazione Attach Open File](vscode://settings/claudeCode.attachOpenFile). L'impostazione richiede Claude Code v2.1.271 o versioni successive.212Fai riferimento all'output del terminale nei tuoi prompt usando `@terminal:name`, dove `name` è il titolo del terminale. Questo consente a Claude di vedere l'output dei comandi, i messaggi di errore o i log senza copiarli e incollarli.

218 213 

219Puoi anche allegare immagini e file al tuo messaggio:214### Allegare immagini e file

220 215 

221* Per allegare un'immagine, incollala dagli appunti nella casella del prompt.216* Per allegare un'immagine, incollala dagli appunti nella casella del prompt.

222* Per allegare file, tieni premuto `Shift` mentre li trascini nella casella del prompt.217* Per allegare file, tieni premuto `Shift` mentre li trascini nella casella del prompt.

223* Per rimuovere un allegato dal contesto, fai clic sulla X presente su di esso.218* Per rimuovere un allegato dal contesto, fai clic sulla X presente su di esso.

224 219 

225### Includere l'output del terminale nei prompt

226 

227Fai riferimento all'output del terminale nei tuoi prompt usando `@terminal:name`, dove `name` è il titolo del terminale. Questo consente a Claude di vedere l'output dei comandi, i messaggi di errore o i log senza copiarli e incollarli.

228 

229### Incollare testo220### Incollare testo

230 221 

231Il testo che incolli rimane visibile nella casella del prompt, invece di essere compresso in un segnaposto come avviene [nel terminale](https://code.claude.com/docs/it/terminal-config.md#paste-large-content). Nelle sessioni in cui Claude Code [contrassegna il testo incollato](https://code.claude.com/docs/it/terminal-config.md#how-claude-treats-pasted-text), Claude vede comunque un incollaggio di grandi dimensioni come testo incollato anziché digitato.222Il testo che incolli rimane visibile nella casella del prompt, invece di essere compresso in un segnaposto come avviene [nel terminale](https://code.claude.com/docs/it/terminal-config.md#paste-large-content). Nelle sessioni in cui Claude Code [contrassegna il testo incollato](https://code.claude.com/docs/it/terminal-config.md#how-claude-treats-pasted-text), Claude vede comunque un incollaggio di grandi dimensioni come testo incollato anziché digitato.


235* Se quando incolli compare un avviso come `Removed 3 invisible characters from the pasted text`, il testo è stato inserito senza quei caratteri.226* Se quando incolli compare un avviso come `Removed 3 invisible characters from the pasted text`, il testo è stato inserito senza quei caratteri.

236* Se al momento dell'invio compare un avviso sui caratteri rimossi, non è stato inviato nulla. Il testo ripulito è di nuovo nella casella del prompt. Invia di nuovo per inviare il testo così come viene mostrato.227* Se al momento dell'invio compare un avviso sui caratteri rimossi, non è stato inviato nulla. Il testo ripulito è di nuovo nella casella del prompt. Invia di nuovo per inviare il testo così come viene mostrato.

237 228 

229### Contesto automatico dalla selezione e dal file aperto

230 

231Quando selezioni del testo nell'editor, Claude può vedere automaticamente il codice evidenziato. Il piè di pagina della casella del prompt mostra quante righe sono selezionate. Claude vede anche quale file hai aperto nell'editor, anche quando non è selezionato nulla, e la casella del prompt ne mostra il nome.

232 

233Premi `Option+K` (Mac) / `Alt+K` (Windows/Linux) per inserire una @-menzione con il percorso del file e i numeri di riga, ad esempio `@app.ts#5-10`.

234 

235#### Escludere la selezione e il file aperto dai tuoi messaggi

236 

237Per impedire che il testo selezionato o il file aperto finiscano nei tuoi messaggi, disattiva l'impostazione corrispondente nelle impostazioni di VS Code:

238 

239* **Testo selezionato**: disattiva l'[impostazione Attach Selection](vscode://settings/claudeCode.attachSelection). Richiede Claude Code v2.1.300 o versioni successive. Per escludere una singola selezione, fai clic sulla **X** accanto al conteggio delle righe. Il conteggio ricompare quando selezioni altro testo.

240* **File aperto**: disattiva l'[impostazione Attach Open File](vscode://settings/claudeCode.attachOpenFile). Richiede Claude Code v2.1.271 o versioni successive. Il file resta escluso a meno che il tuo messaggio non includa testo che hai selezionato al suo interno.

241 

242Per aggiungere del testo come @-menzione con Attach Selection disattivata, selezionalo e premi `Option+K` su Mac o `Alt+K` su Windows e Linux.

243 

244Entrambe le impostazioni si applicano anche quando esegui `claude` nel terminale integrato di VS Code.

245 

246#### Testo selezionato da file esclusi o ignorati

247 

248Nel pannello della chat, l'estensione non invia il testo selezionato da alcuni file:

249 

250* Quando il file si trova nel tuo workspace e corrisponde alle impostazioni `files.exclude` o `search.exclude`, Claude riceve al massimo il percorso del file e non il testo che hai selezionato.

251* Lo stesso vale per un file ignorato da git, purché l'impostazione `search.useIgnoreFiles` di VS Code e l'[impostazione `respectGitIgnore`](#extension-settings) dell'estensione siano entrambe attive, come avviene per impostazione predefinita.

252 

253Questo filtro riguarda solo il pannello della chat. Quando Claude Code viene eseguito nel terminale integrato, Claude può ricevere il testo che selezioni in questi file. Per impedire che i contenuti di un file arrivino a Claude in quel caso, aggiungi una [regola di negazione `Read`](https://code.claude.com/docs/it/permissions#read-and-edit).

254 

238### Formule matematiche LaTeX nelle risposte255### Formule matematiche LaTeX nelle risposte

239 256 

240Il pannello della chat mostra le formule matematiche LaTeX nelle risposte di Claude come formule tipografiche. Il rendering delle formule richiede Claude Code v2.1.301 o versioni successive. In [modalità terminale](#switch-to-terminal-mode), le formule non vengono composte tipograficamente. Il pannello compone sia le formule in display sia quelle inline:257Il pannello della chat mostra le formule matematiche LaTeX nelle risposte di Claude come formule tipografiche. Il rendering delle formule richiede Claude Code v2.1.301 o versioni successive. In [modalità terminale](#switch-to-terminal-mode), le formule non vengono composte tipograficamente. Il pannello compone sia le formule in display sia quelle inline:


694| `preferredLocation` | `panel` | Dove si apre Claude: `sidebar` (a destra) o `panel` (nuova scheda) |711| `preferredLocation` | `panel` | Dove si apre Claude: `sidebar` (a destra) o `panel` (nuova scheda) |

695| `lockEditorGroups` | `true` | [Blocca i gruppi di editor che Claude avvia per le sue schede](#choose-where-claude-lives), in modo che i file che apri mentre una scheda di Claude ha il focus vadano in un altro gruppo. Se disattivata, l'estensione non blocca mai un gruppo di editor. Richiede Claude Code v2.1.274 o successiva |712| `lockEditorGroups` | `true` | [Blocca i gruppi di editor che Claude avvia per le sue schede](#choose-where-claude-lives), in modo che i file che apri mentre una scheda di Claude ha il focus vadano in un altro gruppo. Se disattivata, l'estensione non blocca mai un gruppo di editor. Richiede Claude Code v2.1.274 o successiva |

696| `autosave` | `true` | Salva automaticamente i file prima che Claude li legga o li scriva |713| `autosave` | `true` | Salva automaticamente i file prima che Claude li legga o li scriva |

697| `attachOpenFile` | `true` | Aggiunge ai tuoi messaggi il file aperto nell'editor e lo mostra nella casella del prompt. Se disattivata, viene aggiunto solo il testo selezionato. Richiede Claude Code v2.1.271 o successiva |714| `attachOpenFile` | `true` | Aggiunge ai tuoi messaggi il file aperto nell'editor e lo mostra nella casella del prompt. Se disattivata, il file viene aggiunto solo insieme al testo che selezioni. Richiede Claude Code v2.1.271 o successiva |

715| `attachSelection` | `true` | Aggiunge ai tuoi messaggi il testo che selezioni nell'editor e lo mostra nella casella del prompt. Se disattivata, puoi comunque [aggiungere una selezione come @-mention](#automatic-context-from-your-selection-and-open-file). Richiede Claude Code v2.1.300 o successiva |

698| `useCtrlEnterToSend` | `false` | Usa Ctrl/Cmd+Invio invece di Invio per inviare i prompt |716| `useCtrlEnterToSend` | `false` | Usa Ctrl/Cmd+Invio invece di Invio per inviare i prompt |

699| `scrollToBottomOnSend` | `true` | Scorre la conversazione fino in fondo quando invii un messaggio. Se disattivata, la conversazione resta dove l'hai lasciata. Richiede Claude Code v2.1.275 o successiva |717| `scrollToBottomOnSend` | `true` | Scorre la conversazione fino in fondo quando invii un messaggio. Se disattivata, la conversazione resta dove l'hai lasciata. Richiede Claude Code v2.1.275 o successiva |

700| `showMessageTimestamps` | `true` | Mostra quando è stato inviato ciascun messaggio. Una riga con la data segna il punto in cui cambia il giorno. Richiede Claude Code v2.1.284 o successiva. Prima della v2.1.290, il valore predefinito era `false` |718| `showMessageTimestamps` | `true` | Mostra quando è stato inviato ciascun messaggio. Una riga con la data segna il punto in cui cambia il giorno. Richiede Claude Code v2.1.284 o successiva. Prima della v2.1.290, il valore predefinito era `false` |


705| `continueAfterReload` | `true` | Dopo il ricaricamento di una finestra, Claude [continua il passaggio che era stato interrotto](#continue-conversations-after-a-reload) nella sessione ripristinata. Richiede Claude Code v2.1.274 o successiva |723| `continueAfterReload` | `true` | Dopo il ricaricamento di una finestra, Claude [continua il passaggio che era stato interrotto](#continue-conversations-after-a-reload) nella sessione ripristinata. Richiede Claude Code v2.1.274 o successiva |

706| `hideOnboarding` | `false` | Nasconde la checklist di onboarding (icona del tocco di laurea) |724| `hideOnboarding` | `false` | Nasconde la checklist di onboarding (icona del tocco di laurea) |

707| `focusView` | `false` | Nasconde le chiamate agli strumenti, i risultati degli strumenti e il ragionamento dietro righe espandibili, lasciando visibili i tuoi prompt e le risposte di Claude. L'ultima lista di cose da fare di Claude resta visibile; questo richiede Claude Code v2.1.225 o successiva. Puoi anche attivare o disattivare la vista Focus dal menu dei comandi. Richiede Claude Code v2.1.221 o successiva |725| `focusView` | `false` | Nasconde le chiamate agli strumenti, i risultati degli strumenti e il ragionamento dietro righe espandibili, lasciando visibili i tuoi prompt e le risposte di Claude. L'ultima lista di cose da fare di Claude resta visibile; questo richiede Claude Code v2.1.225 o successiva. Puoi anche attivare o disattivare la vista Focus dal menu dei comandi. Richiede Claude Code v2.1.221 o successiva |

708| `respectGitIgnore` | `true` | Esclude i pattern di .gitignore dalle ricerche di file e dal [contesto della selezione](#reference-files-and-folders) |726| `respectGitIgnore` | `true` | Esclude i pattern di .gitignore dalle ricerche di file e dal [contesto della selezione](#selected-text-from-excluded-or-ignored-files) |

709| `usePythonEnvironment` | `true` | Attiva l'ambiente Python del workspace quando esegui Claude. Richiede l'estensione Python. |727| `usePythonEnvironment` | `true` | Attiva l'ambiente Python del workspace quando esegui Claude. Richiede l'estensione Python. |

710| `environmentVariables` | `[]` | Imposta le variabili d'ambiente per il processo di Claude. Per una configurazione condivisa, usa invece le impostazioni di Claude Code. Una voce [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars) si applica solo quando il suo valore è un percorso assoluto; l'estensione non espande `~` e ignora un valore relativo. |728| `environmentVariables` | `[]` | Imposta le variabili d'ambiente per il processo di Claude. Per una configurazione condivisa, usa invece le impostazioni di Claude Code. Una voce [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/it/env-vars) si applica solo quando il suo valore è un percorso assoluto; l'estensione non espande `~` e ignora un valore relativo. |

711| `disableLoginPrompt` | `false` | Salta le richieste di autenticazione (per configurazioni con provider di terze parti) |729| `disableLoginPrompt` | `false` | Salta le richieste di autenticazione (per configurazioni con provider di terze parti) |


835 853 

836**Contesto della selezione e del file aperto.** Mentre è connessa, la CLI include la selezione corrente dell'editor e il percorso del file attivo come contesto in ogni prompt che invii. Quando ciò accade, la trascrizione mostra una riga `⧉ Selected N lines from <file>`. Questi casi modificano tale contesto:854**Contesto della selezione e del file aperto.** Mentre è connessa, la CLI include la selezione corrente dell'editor e il percorso del file attivo come contesto in ogni prompt che invii. Quando ciò accade, la trascrizione mostra una riga `⧉ Selected N lines from <file>`. Questi casi modificano tale contesto:

837 855 

856* **[Impostazione Attach Selection](#keep-your-selection-and-open-file-out-of-your-messages) disattivata**: la CLI non include la tua selezione come contesto.

857* **Impostazione Attach Open File disattivata**: la CLI include il percorso del file attivo solo quando include anche una selezione.

838* **Messaggi in coda**: se [metti in coda un messaggio mentre Claude lavora](https://code.claude.com/docs/it/interactive-mode.md#queue-messages-while-claude-works), il messaggio mantiene la selezione che avevi quando hai premuto `Enter`, qualunque cosa selezioni in seguito.858* **Messaggi in coda**: se [metti in coda un messaggio mentre Claude lavora](https://code.claude.com/docs/it/interactive-mode.md#queue-messages-while-claude-works), il messaggio mantiene la selezione che avevi quando hai premuto `Enter`, qualunque cosa selezioni in seguito.

839* **File sensibili**: per escludere un file sensibile come `.env`, aggiungi una [regola di negazione `Read`](https://code.claude.com/docs/it/permissions#read-and-edit) per il suo percorso. Una regola di negazione corrispondente impedisce sia al testo selezionato sia all'avviso del file aperto per quel file di raggiungere Claude.859* **File sensibili**: per escludere un file sensibile come `.env`, aggiungi una [regola di negazione `Read`](https://code.claude.com/docs/it/permissions#read-and-edit) per il suo percorso. Una regola di negazione corrispondente impedisce sia al testo selezionato sia all'avviso del file aperto per quel file di raggiungere Claude.

840* **Attach Open File disattivato**: se disattivi l'[impostazione Attach Open File](#extension-settings), la CLI riceve il percorso del file attivo solo mentre hai del testo selezionato al suo interno.

841 860 

842**Trasporto e autenticazione.** Il server si associa a `127.0.0.1` su una porta casuale nell'intervallo 10000–65535, e la porta non è configurabile. Il trasporto e il token di autenticazione funzionano come segue:861**Trasporto e autenticazione.** Il server si associa a `127.0.0.1` su una porta casuale nell'intervallo 10000–65535, e la porta non è configurabile. Il trasporto e il token di autenticazione funzionano come segue:

843 862 

workflows.md +5 −4

Details

333 333 

334Il runtime del flusso di lavoro esegue lo script in un ambiente isolato, separato dalla tua conversazione. I risultati intermedi rimangono nelle variabili dello script invece di finire nel contesto di Claude.334Il runtime del flusso di lavoro esegue lo script in un ambiente isolato, separato dalla tua conversazione. I risultati intermedi rimangono nelle variabili dello script invece di finire nel contesto di Claude.

335 335 

336Ogni esecuzione scrive il suo script in un file nella directory della tua sessione in `~/.claude/projects/`. Claude riceve il percorso quando l'esecuzione inizia, quindi puoi chiederglielo. Puoi aprire quel file per leggere l'orchestrazione che Claude ha scritto, confrontarlo con lo script di un'esecuzione precedente, o modificarlo e chiedere a Claude di riavviare dalla versione modificata.336A meno che Claude non avvii un'esecuzione dal percorso di un file di script, Claude Code scrive lo script dell'esecuzione in un file nella directory della tua sessione in `~/.claude/projects/`. Claude riceve il percorso dello script quando l'esecuzione inizia, quindi puoi chiederglielo. Puoi aprire quel file per leggere l'orchestrazione che Claude ha scritto, confrontarlo con lo script di un'esecuzione precedente, o modificarlo e chiedere a Claude di riavviare dalla versione modificata.

337 337 

338Claude può avviare un flusso di lavoro solo da un file di script che la sessione è già autorizzata a leggere. Per eseguire uno script mantenuto al di fuori della tua directory di lavoro, aggiungi prima la sua directory con [`/add-dir`](https://code.claude.com/docs/it/permissions#working-directories) o una [regola di autorizzazione Read](https://code.claude.com/docs/it/permissions.md#read-and-edit).338Claude può avviare un flusso di lavoro solo da un file di script che la sessione è già autorizzata a leggere. Per eseguire uno script mantenuto al di fuori della tua directory di lavoro, aggiungi prima la sua directory con [`/add-dir`](https://code.claude.com/docs/it/permissions#working-directories) o una [regola di autorizzazione Read](https://code.claude.com/docs/it/permissions.md#read-and-edit).

339 339 


387 387 

388#### Riprendere dopo aver lasciato la sessione388#### Riprendere dopo aver lasciato la sessione

389 389 

390Puoi riprendere un'esecuzione all'interno della stessa sessione di Claude Code. Quello che accade a un workflow in esecuzione quando lasci la sessione dipende da come la lasci:390Se metti la sessione in background o esci da Claude Code mentre è in corso un'esecuzione di un workflow, l'esecuzione non prosegue da sola. L'esecuzione prosegue solo quando Claude la riavvia con una chiamata `Workflow`, che [riproduce l'esecuzione a partire dai suoi risultati salvati](#which-agents-run-again).

391 391 

392* Se [metti la sessione in background](https://code.claude.com/docs/it/agent-view.md#what-carries-over-when-you-background), Claude Code riproduce l'esecuzione allo stesso modo nella sessione in background e la continua.392* **Hai messo la sessione in background o hai scelto [`Move to background and exit`](https://code.claude.com/docs/it/agent-view#from-inside-a-session)**: se l'esecuzione non è proseguita quando controlli la [sessione in background](https://code.claude.com/docs/it/agent-view.md#what-carries-over-when-you-background), chiedi lì a Claude di riavviare il workflow. A seconda della tua [modalità di permesso](#approve-the-plan-before-it-runs), Claude Code ti chiede prima di approvare il riavvio. Se la sessione appare sotto `Needs input` in agent view, [collegati a essa](https://code.claude.com/docs/it/agent-view.md#attach-to-a-session) per rispondere alla richiesta di approvazione.

393* Se esci da Claude Code mentre un workflow è in esecuzione e [agent view è attivo](https://code.claude.com/docs/it/agent-view.md#from-inside-a-session), la finestra di dialogo di uscita offre `Move to background and exit`, che trasporta l'esecuzione allo stesso modo. Se scegli invece `Exit and stop tasks`, o l'opzione non è offerta, l'esecuzione si interrompe con la sessione. Claude Code mantiene i risultati salvati dell'esecuzione nella directory di quella sessione in `~/.claude/projects/`, quindi una sessione che riprendi con `claude --resume` può riprodurli quando chiedi a Claude di riavviare il workflow. In una sessione che avvii da zero, Claude non ha un'esecuzione precedente da riavviare e avvia il workflow da capo come una nuova esecuzione.393* **Il riavvio nella sessione in background non è riuscito con `nothing to resume`**: chiedi a Claude di avviare il workflow da capo come una nuova esecuzione. Se Claude ha avviato l'esecuzione dal percorso di un file di script al di fuori di `~/.claude/projects/`, ad esempio uno nella tua directory di lavoro, Claude non può riavviarla nella sessione in background.

394* **Hai scelto `Exit and stop tasks`, o non ti è stata offerta l'opzione `Move to background and exit`**: l'esecuzione si è interrotta con la sessione, e Claude Code mantiene i risultati salvati dell'esecuzione nella directory di quella sessione in `~/.claude/projects/`. Riprendi la sessione con `claude --resume` nella tua shell, quindi chiedi a Claude di riavviare il workflow. In una sessione nuova, Claude non ha un'esecuzione precedente da riavviare e avvia il workflow da capo.

394 395 

395In una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), Claude Code salva anche i risultati dell'esecuzione con la cronologia della conversazione della sessione, che sopravvive quando la VM della sessione viene recuperata. Quando [riapri una tale sessione](https://code.claude.com/docs/it/claude-code-on-the-web.md#environment-expired) e chiedi a Claude di riavviare il workflow, gli agenti completati restituiscono ancora i loro risultati salvati.396In una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), Claude Code salva anche i risultati dell'esecuzione con la cronologia della conversazione della sessione, che sopravvive quando la VM della sessione viene recuperata. Quando [riapri una tale sessione](https://code.claude.com/docs/it/claude-code-on-the-web.md#environment-expired) e chiedi a Claude di riavviare il workflow, gli agenti completati restituiscono ancora i loro risultati salvati.

396 397