SpyBara
Go Premium

Documentation 2026-10-09 23:02 UTC to 2026-10-10 21:01 UTC

69 files changed +1,148 −335. View all changes and history on the product overview
2026
Sat 10 22:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

187 187 

188Claude determina quali strumenti chiamare in base all'attività, ma voi controllate se quelle chiamate sono autorizzate a essere eseguite. Potete approvare automaticamente strumenti specifici, bloccare altri completamente, o richiedere l'approvazione per tutto. Tre opzioni lavorano insieme per determinare cosa viene eseguito:188Claude determina quali strumenti chiamare in base all'attività, ma voi controllate se quelle chiamate sono autorizzate a essere eseguite. Potete approvare automaticamente strumenti specifici, bloccare altri completamente, o richiedere l'approvazione per tutto. Tre opzioni lavorano insieme per determinare cosa viene eseguito:

189 189 

190* **`allowed_tools` / `allowedTools`** approva automaticamente gli strumenti elencati. Un agente di sola lettura con `["Read", "Glob", "Grep"]` nel suo elenco di strumenti consentiti esegue quegli strumenti senza chiedere. Gli strumenti non elencati sono ancora disponibili, e le chiamate a essi che necessitano di approvazione ricadono nella modalità di autorizzazione e in `canUseTool`.190* **`allowed_tools` / `allowedTools`** approva automaticamente gli strumenti elencati. Un agente di sola lettura con `["Read", "Glob", "Grep"]` nel suo elenco di strumenti consentiti esegue quegli strumenti senza chiedere, tranne per le letture da [percorsi di rete](/docs/it/permissions#network-paths). Gli strumenti non elencati sono ancora disponibili, e le chiamate a essi che necessitano di approvazione ricadono nella modalità di permesso e in `canUseTool`.

191* **`disallowed_tools` / `disallowedTools`** blocca gli strumenti elencati, indipendentemente da altre impostazioni. Vedere [Autorizzazioni](/docs/it/agent-sdk/permissions) per l'ordine in cui le regole vengono controllate prima che uno strumento venga eseguito.191* **`disallowed_tools` / `disallowedTools`** blocca gli strumenti elencati, indipendentemente da altre impostazioni. Vedere [Autorizzazioni](/docs/it/agent-sdk/permissions) per l'ordine in cui le regole vengono controllate prima che uno strumento venga eseguito.

192* **`permission_mode` / `permissionMode`** controlla quanto controllo umano desiderate. L'SDK valuta la modalità attiva insieme alle vostre regole di consentimento e negazione in un ordine fisso, descritto in [Come vengono valutate le autorizzazioni](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated). Vedere [Modalità di autorizzazione](#permission-mode) per le modalità disponibili.192* **`permission_mode` / `permissionMode`** controlla quanto controllo umano desiderate. L'SDK valuta la modalità attiva insieme alle vostre regole di consentimento e negazione in un ordine fisso, descritto in [Come vengono valutate le autorizzazioni](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated). Vedere [Modalità di autorizzazione](#permission-mode) per le modalità disponibili.

193 193 


263| `"default"` | Gli strumenti non coperti da regole di consentimento attivano il vostro callback `canUseTool`; nessun callback significa negare | Applicazioni interattive con un callback di approvazione personalizzato |263| `"default"` | Gli strumenti non coperti da regole di consentimento attivano il vostro callback `canUseTool`; nessun callback significa negare | Applicazioni interattive con un callback di approvazione personalizzato |

264| `"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 |264| `"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 |

265| `"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 |265| `"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 |

266| `"dontAsk"` | Non chiede mai. Gli strumenti pre-approvati da [regole di autorizzazione](/docs/it/settings-reference#permission-settings) vengono eseguiti, e così anche le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle vostre directory di lavoro; ogni chiamata che altrimenti richiederebbe un prompt viene negata. `AskUserQuestion`, strumenti connettore [impostati dalla vostra organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) vengono negati anche se li avete consentiti | Volete una superficie di strumenti fissa ed esplicita per un agente headless e preferite un rifiuto esplicito rispetto a un affidamento silenzioso all'assenza di `canUseTool` |266| `"dontAsk"` | Non chiede mai. Gli strumenti pre-approvati da [regole di permesso](/docs/it/settings-reference#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. `AskUserQuestion`, gli strumenti connettore [impostati dalla tua organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) e le [letture da percorsi di rete](/docs/it/permissions#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` |

267| `"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](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per disponibilità e ordine di decisione | Agenti autonomi che desiderano ancora protezioni di sicurezza sull'utilizzo degli strumenti |267| `"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](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per disponibilità e ordine di decisione | Agenti autonomi che desiderano ancora protezioni di sicurezza sull'utilizzo degli strumenti |

268| `"bypassPermissions"` | Esegue tutti gli strumenti consentiti senza chiedere, tranne gli strumenti corrispondenti a una regola [`ask`](/docs/it/settings-reference#permission-settings) esplicita, strumenti connettore [impostati dalla vostra organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e strumenti che richiedono l'interazione dell'utente. Le [protezioni di messaggistica tra sessioni](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) si applicano ancora. Vedere [Come vengono valutate le autorizzazioni](/docs/it/agent-sdk/permissions#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 |268| `"bypassPermissions"` | Esegue tutti gli strumenti consentiti senza chiedere, tranne gli strumenti corrispondenti a una regola [`ask`](/docs/it/settings-reference#permission-settings) esplicita, strumenti connettore [impostati dalla vostra organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e strumenti che richiedono l'interazione dell'utente. Le [protezioni di messaggistica tra sessioni](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) si applicano ancora. Vedere [Come vengono valutate le autorizzazioni](/docs/it/agent-sdk/permissions#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 |

269 269 

Details

424 Approvare automaticamente strumenti specifici424 Approvare automaticamente strumenti specifici

425</h3>425</h3>

426 426 

427Per impostazione predefinita, l'agente potrebbe richiedere l'autorizzazione prima di utilizzare determinati strumenti. Questo esempio approva automaticamente gli strumenti del file system di sola lettura (Read, Glob, Grep) restituendo `permissionDecision: 'allow'`, consentendo loro di funzionare senza conferma dell'utente mentre lascia tutti gli altri strumenti soggetti ai normali controlli di autorizzazione:427Per impostazione predefinita, l'agente potrebbe chiedere il permesso prima di utilizzare determinati strumenti. Questo esempio approva automaticamente gli strumenti del file system di sola lettura (Read, Glob, Grep) restituendo `permissionDecision: 'allow'`, consentendo loro di essere eseguiti senza conferma dell'utente, fatta eccezione per le letture da [percorsi di rete](/docs/it/permissions#network-paths), mentre lascia tutti gli altri strumenti soggetti ai normali controlli dei permessi:

428 428 

429<CodeGroup>429<CodeGroup>

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

Details

43 <Step title="Regole di autorizzazione">43 <Step title="Regole di autorizzazione">

44 Controllare le regole `allow` (da `allowed_tools` e settings.json). Se una regola corrisponde, lo strumento viene approvato. 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 vostre directory di lavoro o un [comando Bash di sola lettura](/docs/it/permissions#read-only-commands).44 Controllare le regole `allow` (da `allowed_tools` e settings.json). Se una regola corrisponde, lo strumento viene approvato. 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 vostre directory di lavoro o un [comando Bash di sola lettura](/docs/it/permissions#read-only-commands).

45 45 

46 Le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](/docs/it/permission-modes#critical-paths) non vengono mai approvate da una regola di autorizzazione. Se raggiungono il vostro callback dipende dalla modalità di autorizzazione: in una sessione Agent SDK in modalità `auto`, ad esempio, Claude Code le nega per impostazione predefinita senza chiamarlo. La tabella della modalità [Percorsi critici](/docs/it/permission-modes#critical-paths) elenca cosa fa ogni modalità con loro.46 Le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](/docs/it/permission-modes#critical-paths) non vengono mai approvate da una regola di consenso. 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à in [Percorsi critici](/docs/it/permission-modes#critical-paths) elenca cosa fa ogni modalità con esse.

47 

48 Una regola di consenso non approva una lettura da un [percorso di rete](/docs/it/permissions#network-paths).

47 </Step>49 </Step>

48 50 

49 <Step title="Callback canUseTool">51 <Step title="Callback canUseTool">

50 Se non risolto da nessuno dei precedenti, chiamare il vostro callback [`canUseTool`](/docs/it/agent-sdk/user-input) per una decisione. In modalità `dontAsk`, questo passaggio viene saltato e lo strumento viene negato.52 Se la chiamata non è stata risolta da nessuno dei passaggi precedenti, chiamare il tuo [callback `canUseTool`](/docs/it/agent-sdk/user-input) per una decisione. In modalità `dontAsk`, questo passaggio viene saltato e lo strumento viene negato.

51 53 

52 Nell'SDK TypeScript, se impostate [`permissionPrompts: 'none'`](/docs/it/agent-sdk/typescript#options), il vostro callback non viene chiamato in questo passaggio. Un hook [`PermissionRequest`](/docs/it/hooks#permissionrequest) ha ancora la possibilità di decidere, e se non lo fa, Claude Code nega la chiamata. L'opzione richiede Claude Code v2.1.259 o successivo.54 Nell'SDK TypeScript, se impostate [`permissionPrompts: 'none'`](/docs/it/agent-sdk/typescript#options), il vostro callback non viene chiamato in questo passaggio. Un hook [`PermissionRequest`](/docs/it/hooks#permissionrequest) ha ancora la possibilità di decidere, e se non lo fa, Claude Code nega la chiamata. L'opzione richiede Claude Code v2.1.259 o successivo.

53 </Step>55 </Step>


60Se 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:62Se 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:

61 63 

62* `permissionMode: 'bypassPermissions'`, che approva automaticamente ogni chiamata che raggiunge il passaggio della modalità di autorizzazione a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves)64* `permissionMode: 'bypassPermissions'`, che approva automaticamente ogni chiamata che raggiunge il passaggio della modalità di autorizzazione a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves)

63* Ogni voce `allowedTools` semplice come `"Read"`, che approva automaticamente quello strumento intero prima che il callback sia consultato, a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves)65* 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](/docs/it/permission-modes#actions-no-mode-auto-approves) e le [letture da percorsi di rete](/docs/it/permissions#network-paths)

64 66 

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

66 68 


79 81 

80| Opzione | Effetto |82| Opzione | Effetto |

81| :- | :- |83| :- | :- |

82| `allowed_tools=["Read", "Grep"]` | `Read` e `Grep` sono approvati automaticamente. Gli altri strumenti non elencati qui esistono ancora, e le chiamate ad essi che necessitano di approvazione passano attraverso la modalità di autorizzazione e `canUseTool`. |84| `allowed_tools=["Read", "Grep"]` | `Read` e `Grep` sono approvati automaticamente, a parte le [letture da percorsi di rete](/docs/it/permissions#network-paths). Gli altri strumenti non elencati qui esistono ancora, e le chiamate ad essi che necessitano di approvazione passano alla modalità di permesso e a `canUseTool`. |

83| `disallowed_tools=["Bash"]` | La definizione dello strumento `Bash` viene rimossa dalla richiesta. Claude non vede lo strumento e non può tentarlo. |85| `disallowed_tools=["Bash"]` | La definizione dello strumento `Bash` viene rimossa dalla richiesta. Claude non vede lo strumento e non può tentarlo. |

84| `disallowed_tools=["Bash(rm *)"]` | `Bash` rimane disponibile. Le chiamate che corrispondono a `rm *` [come scritto](/docs/it/permissions#bash-rule-limits) vengono negate in ogni modalità di autorizzazione, inclusa `bypassPermissions`. Le altre chiamate `Bash`, incluso `/bin/rm`, passano attraverso la modalità di autorizzazione. |86| `disallowed_tools=["Bash(rm *)"]` | `Bash` rimane disponibile. Le chiamate che corrispondono a `rm *` [come scritto](/docs/it/permissions#bash-rule-limits) vengono negate in ogni modalità di autorizzazione, inclusa `bypassPermissions`. Le altre chiamate `Bash`, incluso `/bin/rm`, passano attraverso la modalità di autorizzazione. |

85| `disallowed_tools=["*"]` | Ogni definizione di strumento viene rimossa dalla richiesta. I glob dei nomi degli strumenti sono supportati nelle regole di negazione: `"*"` corrisponde a ogni strumento e `"mcp__*"` corrisponde a ogni strumento MCP su tutti i server. |87| `disallowed_tools=["*"]` | Ogni definizione di strumento viene rimossa dalla richiesta. I glob dei nomi degli strumenti sono supportati nelle regole di negazione: `"*"` corrisponde a ogni strumento e `"mcp__*"` corrisponde a ogni strumento MCP su tutti i server. |


95 97 

96 Una regola di consentimento non approva mai automaticamente `AskUserQuestion`, strumenti MCP contrassegnati [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool), strumenti del connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), o rimozioni `rm` e `rmdir` che puntano a un [percorso critico](/docs/it/permission-modes#critical-paths). In modalità `dontAsk` Claude Code nega queste chiamate senza invocare il callback. In altre modalità le prime tre raggiungono il callback. A seconda della [modalità di autorizzazione](/docs/it/permission-modes#critical-paths), una rimozione di percorso critico raggiunge il callback anche o Claude Code la nega senza chiamarla, come fa per impostazione predefinita per una sessione Agent SDK in modalità `auto`.98 Una regola di consentimento non approva mai automaticamente `AskUserQuestion`, strumenti MCP contrassegnati [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool), strumenti del connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), o rimozioni `rm` e `rmdir` che puntano a un [percorso critico](/docs/it/permission-modes#critical-paths). In modalità `dontAsk` Claude Code nega queste chiamate senza invocare il callback. In altre modalità le prime tre raggiungono il callback. A seconda della [modalità di autorizzazione](/docs/it/permission-modes#critical-paths), una rimozione di percorso critico raggiunge il callback anche o Claude Code la nega senza chiamarla, come fa per impostazione predefinita per una sessione Agent SDK in modalità `auto`.

97 99 

98 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 le eccezioni sopra, mentre una regola limitata come `Bash(npm test *)` approva automaticamente solo le chiamate corrispondenti, e le altre chiamate `Bash` che necessitano di approvazione passano ancora attraverso il callback. Per i controlli che devono essere eseguiti su ogni chiamata a uno strumento, utilizzate un [hook `PreToolUse`](/docs/it/agent-sdk/hooks): gli hook vengono eseguiti prima di ogni altro passaggio, e un hook di negazione si applica anche in modalità `bypassPermissions`.100 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](/docs/it/permissions#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`](/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`.

99</Warning>101</Warning>

100 102 

101Per un agente bloccato, abbinate `allowedTools` con `permissionMode: "dontAsk"`:103Per un agente bloccato, abbinate `allowedTools` con `permissionMode: "dontAsk"`:


107};109};

108```110```

109 111 

110Gli strumenti elencati sono approvati, a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves), e ogni altra chiamata che comporterebbe una richiesta viene invece negata. Le chiamate che non necessitano di approvazione in modalità `default` vengono eseguite indipendentemente dal fatto che le elenchiate, come i [comandi Bash di sola lettura](/docs/it/permissions#read-only-commands), strumenti come `Agent` che non chiedono prima di eseguire, e letture di file all'interno delle vostre directory di lavoro. Per mettere uno strumento completamente fuori dalla portata di Claude, aggiungete il suo nome semplice a `disallowedTools`.112Gli strumenti elencati sono approvati, a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) e le [letture da percorsi di rete](/docs/it/permissions#network-paths), e ogni altra chiamata che comporterebbe una richiesta di permesso viene invece negata. Le chiamate che non necessitano di approvazione in modalità `default` vengono eseguite indipendentemente dal fatto che tu le elenchi, come i [comandi Bash di sola lettura](/docs/it/permissions#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`.

111 113 

112<Warning>114<Warning>

113 **`allowed_tools` non vincola `bypassPermissions`.** `allowed_tools` pre-approva gli strumenti che elencate. Gli altri strumenti non elencati non vengono abbinati da alcuna regola di consentimento e passano attraverso la modalità di autorizzazione, dove `bypassPermissions` li approva. L'impostazione di `allowed_tools=["Read"]` insieme a `permission_mode="bypassPermissions"` approva comunque ogni strumento, inclusi `Bash`, `Write` e `Edit`. Se avete bisogno di `bypassPermissions` ma volete che strumenti specifici siano bloccati, utilizzate `disallowed_tools`.115 **`allowed_tools` non vincola `bypassPermissions`.** `allowed_tools` pre-approva gli strumenti che elencate. Gli altri strumenti non elencati non vengono abbinati da alcuna regola di consentimento e passano attraverso la modalità di autorizzazione, dove `bypassPermissions` li approva. L'impostazione di `allowed_tools=["Read"]` insieme a `permission_mode="bypassPermissions"` approva comunque ogni strumento, inclusi `Bash`, `Write` e `Edit`. Se avete bisogno di `bypassPermissions` ma volete che strumenti specifici siano bloccati, utilizzate `disallowed_tools`.


139| Modalità | Descrizione | Comportamento dello strumento |141| Modalità | Descrizione | Comportamento dello strumento |

140| :- | :- | :- |142| :- | :- | :- |

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

142| `dontAsk` | Nega invece di chiedere | Qualsiasi chiamata che altrimenti richiederebbe una richiesta viene negata. Le chiamate approvate da `allowed_tools` o regole vengono eseguite, così come le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle directory di lavoro; gli strumenti connector [impostati dalla vostra organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e gli strumenti che richiedono interazione dell'utente vengono negati anche se li avete pre-approvati, così come le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths). `canUseTool` non viene mai chiamato |144| `dontAsk` | Nega invece di chiedere | Qualsiasi chiamata che altrimenti genererebbe una richiesta di conferma viene negata. Le chiamate approvate da `allowed_tools` o da regole vengono eseguite, così come le chiamate che non richiedono approvazione in modalità `default`; gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e gli strumenti che richiedono interazione dell'utente vengono negati anche se li hai pre-approvati, così come le [letture da percorsi di rete](/docs/it/permissions#network-paths) e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths). `canUseTool` non viene mai chiamato |

143| `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 |145| `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 |

144| `bypassPermissions` | Ignora i controlli di autorizzazione | Gli strumenti vengono eseguiti senza richieste di autorizzazione, ad eccezione delle [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves). Utilizzare con cautela |146| `bypassPermissions` | Ignora i controlli di autorizzazione | Gli strumenti vengono eseguiti senza richieste di autorizzazione, ad eccezione delle [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves). Utilizzare con cautela |

145| `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` |147| `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` |


286 Modalità non chiedere (`dontAsk`)288 Modalità non chiedere (`dontAsk`)

287</h4>289</h4>

288 290 

289Converte qualsiasi richiesta di autorizzazione in una negazione, senza chiamare `canUseTool`. Gli strumenti pre-approvati da `allowed_tools`, regole di autorizzazione in `settings.json` o un hook vengono eseguiti normalmente, così come le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle directory di lavoro e le chiamate a `Agent`. Gli strumenti connector [impostati dalla vostra organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths) vengono negati anche quando una regola di autorizzazione corrisponde. Un'autorizzazione del hook `PreToolUse` non cancella nemmeno una rimozione di percorso critico.291Converte qualsiasi richiesta di permesso in una negazione, senza chiamare `canUseTool`. Gli strumenti pre-approvati da `allowed_tools`, da regole di permesso in `settings.json` o da un hook vengono eseguiti normalmente, così come 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`. Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente, le [letture da percorsi di rete](/docs/it/permissions#network-paths) e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths) vengono negati anche quando una regola di permesso corrisponde. Nemmeno un'approvazione da parte di un hook `PreToolUse` sblocca una rimozione di un percorso critico o una lettura da un percorso di rete.

290 292 

291**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`.293**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`.

292 294 

Details

518 print(session.summary)518 print(session.summary)

519```519```

520 520 

521<h3 id="fork_session">

522 `fork_session()`

523</h3>

524 

525Copia la trascrizione di una sessione in una nuova sessione, così puoi portare la conversazione in un'altra direzione mentre l'originale resta invariata. Per creare un branch da un punto precedente della conversazione, passa `up_to_message_id`. Sincrono.

526 

527```python theme={null}

528def fork_session(

529 session_id: str,

530 directory: str | None = None,

531 up_to_message_id: str | None = None,

532 title: str | None = None,

533) -> ForkSessionResult

534```

535 

536<h4 id="parameters-9">

537 Parametri

538</h4>

539 

540| Parametro | Tipo | Predefinito | Descrizione |

541| :- | :- | :- | :- |

542| `session_id` | `str` | obbligatorio | UUID della sessione di cui creare un fork |

543| `directory` | `str \| None` | `None` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

544| `up_to_message_id` | `str \| None` | `None` | Copia la trascrizione fino al messaggio con questo UUID incluso, ad esempio un `uuid` ottenuto da [`get_session_messages()`](#get_session_messages). Se omesso, copia l'intera trascrizione |

545| `title` | `str \| None` | `None` | Titolo per il fork. Se omesso, l'SDK ne ricava uno dalla sessione originale, seguito da `(fork)` |

546 

547Restituisce un `ForkSessionResult` il cui `session_id` è l'UUID della nuova sessione. Passalo come [`resume`](#claudeagentoptions) per continuare il fork. Il fork non include i [checkpoint dei file](/docs/it/agent-sdk/file-checkpointing) della sessione originale, quindi non puoi riportarlo a un checkpoint acquisito prima del fork.

548 

549`fork_session()` genera:

550 

551* `ValueError`: `session_id` o `up_to_message_id` non è un UUID valido

552* `ValueError`: la sessione non ha messaggi, oppure `up_to_message_id` non corrisponde a nessun messaggio nella trascrizione

553* `FileNotFoundError`: la sessione non può essere trovata

554 

555<h4 id="example-8">

556 Esempio

557</h4>

558 

559Crea un fork della sessione più recente con un nuovo titolo, quindi riprendi il fork. La sessione originale mantiene la propria cronologia.

560 

561```python theme={null}

562from claude_agent_sdk import fork_session, list_sessions

563 

564sessions = list_sessions(directory="/path/to/project", limit=1)

565if sessions:

566 forked = fork_session(sessions[0].session_id, title="Try the OAuth approach")

567 print(forked.session_id) # pass as ClaudeAgentOptions(resume=...) to continue the fork

568```

569 

521<h2 id="classes">570<h2 id="classes">

522 Classi571 Classi

523</h2>572</h2>


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

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

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

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

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

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

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


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

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

1851 1900 

1901Quando diverse attività in background terminano a breve distanza l'una dall'altra, Claude Code può rispondere alle loro notifiche in un unico turno anziché con un turno per ciascuna. Ricevi comunque un `ResultMessage` per ogni notifica, in ordine, ciascuno con un `origin` il cui `kind` è `"task-notification"`. Tutti tranne l'ultimo hanno `num_turns` impostato a `0` e un `result` vuoto, e l'ultimo contiene il turno che risponde a tutte.

1902 

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

1853 1904 

1854| Chiave | Tipo | Descrizione |1905| Chiave | Tipo | Descrizione |

Details

360* [`renameSession()`](/docs/it/agent-sdk/typescript#renamesession)360* [`renameSession()`](/docs/it/agent-sdk/typescript#renamesession)

361* [`tagSession()`](/docs/it/agent-sdk/typescript#tagsession)361* [`tagSession()`](/docs/it/agent-sdk/typescript#tagsession)

362* [`deleteSession()`](/docs/it/agent-sdk/typescript)362* [`deleteSession()`](/docs/it/agent-sdk/typescript)

363* [`forkSession()`](/docs/it/agent-sdk/typescript)363* [`forkSession()`](/docs/it/agent-sdk/typescript#forksession)

364* [`listSubagents()`](/docs/it/agent-sdk/typescript)364* [`listSubagents()`](/docs/it/agent-sdk/typescript)

365* [`getSubagentMessages()`](/docs/it/agent-sdk/typescript)365* [`getSubagentMessages()`](/docs/it/agent-sdk/typescript)

366 366 

Details

293 293 

294 Puoi riprendere da qualsiasi directory di lavoro:294 Puoi riprendere da qualsiasi directory di lavoro:

295 295 

296 * **Ricerca tra directory**: Claude Code cerca oltre la directory del progetto corrente per trovare l'ID; vedi [Riprendi una sessione](/docs/it/sessions#resume-a-session) per l'ordine di ricerca esatto e come vengono gestite le copie duplicate.296 * **Ricerca tra directory**: Claude Code cerca oltre la directory del progetto corrente per trovare l'ID; vedi [Riprendi una sessione](/docs/it/sessions#where-the-session-picker-looks) per l'ordine di ricerca esatto e come vengono gestite le copie duplicate.

297 * **Solo sulla stessa macchina**: il file di sessione deve ancora esistere sulla macchina corrente.297 * **Solo sulla stessa macchina**: il file di sessione deve ancora esistere sulla macchina corrente.

298 298 

299 Prima della v2.1.223, la ricerca era limitata alla directory del progetto corrente e ai suoi git worktrees; le versioni SDK che includono un CLI più vecchio si comportano ancora in questo modo.299 Prima della v2.1.223, la ricerca era limitata alla directory del progetto corrente e ai suoi git worktrees; le versioni SDK che includono un CLI più vecchio si comportano ancora in questo modo.


423 423 

424* **Sposta il file di sessione.** Persisti `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl` dalla prima esecuzione e ripristinalo all'interno di qualsiasi directory sotto `~/.claude/projects/` sul nuovo host prima di chiamare `resume`.424* **Sposta il file di sessione.** Persisti `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl` dalla prima esecuzione e ripristinalo all'interno di qualsiasi directory sotto `~/.claude/projects/` sul nuovo host prima di chiamare `resume`.

425 425 

426 Claude Code cerca oltre la directory del progetto corrente per trovare l'ID; vedi [Riprendi una sessione](/docs/it/sessions#resume-a-session) per l'ordine di ricerca esatto e come vengono gestite le copie duplicate. Prima della v2.1.223, la ricerca era limitata alla directory del progetto corrente e ai suoi git worktrees; le versioni dell'SDK che raggruppano un CLI più vecchio si comportano ancora in questo modo.426 Claude Code cerca oltre la directory del progetto corrente per trovare l'ID; vedi [Riprendi una sessione](/docs/it/sessions#where-the-session-picker-looks) per l'ordine di ricerca esatto e come vengono gestite le copie duplicate. Prima della v2.1.223, la ricerca era limitata alla directory del progetto corrente e ai suoi worktree git; le versioni dell'SDK che raggruppano un CLI più vecchio si comportano ancora in questo modo.

427 427 

428* **Non fare affidamento sul ripristino della sessione.** Acquisisci i risultati di cui hai bisogno (output di analisi, decisioni, diff di file) come stato dell'applicazione e passali nel prompt di una sessione nuova. Questo è spesso più robusto che spedire file di transcript in giro.428* **Non fare affidamento sul ripristino della sessione.** Acquisisci i risultati di cui hai bisogno (output di analisi, decisioni, diff di file) come stato dell'applicazione e passali nel prompt di una sessione nuova. Questo è spesso più robusto che spedire file di transcript in giro.

429 429 

Details

124 124 

125Senza i messaggi parziali abilitati, ricevete tutti i tipi di messaggio tranne `StreamEvent`. I tipi comuni includono `SystemMessage` (inizializzazione della sessione), `AssistantMessage` (blocchi di contenuto completi), `ResultMessage` (risultato finale) e un messaggio di confine compatto che indica quando la cronologia della conversazione è stata compattata (`SDKCompactBoundaryMessage` in TypeScript; `SystemMessage` con sottotipo `"compact_boundary"` in Python).125Senza i messaggi parziali abilitati, ricevete tutti i tipi di messaggio tranne `StreamEvent`. I tipi comuni includono `SystemMessage` (inizializzazione della sessione), `AssistantMessage` (blocchi di contenuto completi), `ResultMessage` (risultato finale) e un messaggio di confine compatto che indica quando la cronologia della conversazione è stata compattata (`SDKCompactBoundaryMessage` in TypeScript; `SystemMessage` con sottotipo `"compact_boundary"` in Python).

126 126 

127<h3 id="handle-a-stream-that’s-cut-off">

128 Gestire uno stream interrotto

129</h3>

130 

131Se uno stream viene interrotto a metà messaggio, ad esempio quando interrompi il turno o la connessione cade, ricevi comunque il `message_stop` di quel messaggio prima che il turno termini. Anche un blocco di testo o di ragionamento interrotto riceve il proprio `content_block_stop`. Una chiamata a uno strumento interrotta no, quindi se `message_stop` arriva mentre il blocco di una chiamata a uno strumento è ancora aperto, considera incompleto l'input di quella chiamata.

132 

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

134 

127<h2 id="stream-tool-calls">135<h2 id="stream-tool-calls">

128 Trasmettere chiamate di strumenti136 Trasmettere chiamate di strumenti

129</h2>137</h2>

Details

464| `tag` | `string \| null` | obbligatorio | Stringa di etichetta, o `null` per cancellare |464| `tag` | `string \| null` | obbligatorio | Stringa di etichetta, o `null` per cancellare |

465| `options.dir` | `string` | `undefined` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |465| `options.dir` | `string` | `undefined` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

466 466 

467<h3 id="forksession">

468 `forkSession()`

469</h3>

470 

471Copia la trascrizione di una sessione in una nuova sessione, così puoi portare la conversazione in un'altra direzione mentre l'originale rimane invariata. Per creare un branch da un punto precedente della conversazione, passa `upToMessageId`.

472 

473```typescript theme={null}

474function forkSession(

475 sessionId: string,

476 options?: ForkSessionOptions

477): Promise<ForkSessionResult>;

478```

479 

480<h4 id="parameters-10">

481 Parametri

482</h4>

483 

484| Parametro | Tipo | Predefinito | Descrizione |

485| :- | :- | :- | :- |

486| `sessionId` | `string` | obbligatorio | UUID della sessione di cui eseguire il fork |

487| `options.dir` | `string` | `undefined` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

488| `options.upToMessageId` | `string` | `undefined` | Copia la trascrizione fino al messaggio con questo `uuid` incluso: un valore da [`getSessionMessages()`](#getsessionmessages), o un `uuid` che imposti su un [`SDKUserMessage`](#sdkusermessage) trasmesso in streaming. Se omesso, copia l'intera trascrizione |

489| `options.title` | `string` | `undefined` | Titolo per il fork. Se omesso, l'SDK ne ricava uno dalla sessione originale, seguito da `(fork)` |

490 

491Restituisce `{ sessionId }`, l'UUID della nuova sessione. Passalo come [`resume`](#options) per continuare il fork. Il fork non include i [checkpoint dei file](/docs/it/agent-sdk/file-checkpointing) della sessione originale, quindi non puoi riportarlo a un checkpoint acquisito prima del fork.

492 

493`forkSession()` genera un'eccezione quando:

494 

495* `sessionId` non è un UUID

496* la sessione non viene trovata, o non contiene messaggi

497* `upToMessageId` non corrisponde a nessun messaggio nella trascrizione

498 

467<h3 id="resolvesettings">499<h3 id="resolvesettings">

468 `resolveSettings()`500 `resolveSettings()`

469</h3>501</h3>


486): Promise<ResolvedSettings>;518): Promise<ResolvedSettings>;

487```519```

488 520 

489<h4 id="parameters-10">521<h4 id="parameters-11">

490 Parametri522 Parametri

491</h4>523</h4>

492 524 


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

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

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

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

551| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Abilita le funzionalità beta |583| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Abilita le funzionalità beta |

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

553| `continue` | `boolean` | `false` | Continua la conversazione più recente |585| `continue` | `boolean` | `false` | Continua la conversazione più recente |


1588 1620 

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

1590 1622 

1591Claude Code imposta `user_message_uuid` e `user_message_uuids` sul primo messaggio dell'assistente del turno, secondo le condizioni descritte in [`user_message_uuid`](#user_message_uuid). Quando Claude Code riesegue un turno che un riavvio ha interrotto, i messaggi dell'assistente della riesecuzione che contengono questi campi contengono anche [`resume_reason`](#resume_reason).1623Claude Code imposta `user_message_uuid` e `user_message_uuids` sul primo messaggio dell'assistente del turno, alle condizioni descritte in [`user_message_uuid`](#user_message_uuid). Quando il turno continua un turno che un riavvio ha interrotto, i messaggi dell'assistente che portano questi campi portano anche [`resume_reason`](#resume_reason).

1592 1624 

1593`timestamp` è l'ora ISO 8601 in cui il contenuto del messaggio ha finito di essere generato sul processo che lo ha prodotto. Il valore proviene dall'orologio di quella macchina, quindi usalo solo per la visualizzazione e non ordinare i messaggi in base a esso. Un turno API può produrre diversi messaggi dell'assistente che condividono un `message.id`, ciascuno con il proprio `timestamp`. Quando il campo è assente, usa come ripiego il momento in cui hai ricevuto il messaggio.1625`timestamp` è l'ora ISO 8601 in cui il contenuto del messaggio ha finito di essere generato sul processo che lo ha prodotto. Il valore proviene dall'orologio di quella macchina, quindi usalo solo per la visualizzazione e non ordinare i messaggi in base a esso. Un turno API può produrre diversi messaggi dell'assistente che condividono un `message.id`, ciascuno con il proprio `timestamp`. Quando il campo è assente, usa come ripiego il momento in cui hai ricevuto il messaggio.

1594 1626 


1631 1663 

1632Imposta `inline_pastes` per indicare a Claude Code quali parti di `message.content` l'utente ha incollato anziché digitato, una stringa per ogni incolla. Il testo del prompt resta dove l'utente lo ha inserito. Claude Code può racchiudere ogni incolla elencata in tag `<pasted_content>` nella sua posizione, così Claude può distinguere il materiale incollato dalle parole dell'utente. Vengono racchiuse solo le incolla nell'ultimo blocco di testo del prompt. Richiede TypeScript Agent SDK v0.3.280 o successiva.1664Imposta `inline_pastes` per indicare a Claude Code quali parti di `message.content` l'utente ha incollato anziché digitato, una stringa per ogni incolla. Il testo del prompt resta dove l'utente lo ha inserito. Claude Code può racchiudere ogni incolla elencata in tag `<pasted_content>` nella sua posizione, così Claude può distinguere il materiale incollato dalle parole dell'utente. Vengono racchiuse solo le incolla nell'ultimo blocco di testo del prompt. Richiede TypeScript Agent SDK v0.3.280 o successiva.

1633 1665 

1666Ogni campo per i contenuti incollati ha un limite di dimensione:

1667 

1668* `pasted_content`: se le voci più i blocchi di contenuto al loro interno sono più di 1.000, Claude Code ignora l'intero campo.

1669* `inline_pastes`: Claude Code usa le prime 100 voci non vuote e ignora le restanti.

1670 

1634Imposta `shouldQuery`, `client_composed` o `priority` per cambiare il modo in cui Claude Code gestisce un messaggio che invii:1671Imposta `shouldQuery`, `client_composed` o `priority` per cambiare il modo in cui Claude Code gestisce un messaggio che invii:

1635 1672 

1636* `shouldQuery`: impostalo a `false` per aggiungere il messaggio alla trascrizione senza attivare un turno dell'assistente. Il messaggio viene trattenuto e unito al successivo messaggio utente che attiva un turno. Usalo per iniettare contesto, come l'output di un comando che hai eseguito fuori banda, senza spendere una chiamata al modello.1673* `shouldQuery`: impostalo a `false` per aggiungere il messaggio alla trascrizione senza attivare un turno dell'assistente. Il messaggio viene trattenuto e unito al successivo messaggio utente che attiva un turno. Usalo per iniettare contesto, come l'output di un comando che hai eseguito fuori banda, senza spendere una chiamata al modello.


1661* Una chiamata a WebFetch o WebSearch che Claude Code ha spostato in background per consegnare un messaggio `'now'`: il messaggio dell'utente che contiene il `tool_result` di quella chiamata ha `tool_use_result` impostato su `{ detachedToolCall: true }`. La chiamata è ancora in esecuzione e Claude ne riceve il risultato al termine. Non segue un secondo `tool_result` per quel `tool_use_id`, quindi se la tua applicazione disegna una riga per ogni chiamata a uno strumento, contrassegna questa riga come spostata in background quando arriva questo messaggio. Richiede Claude Code v2.1.287 o successiva.1698* Una chiamata a WebFetch o WebSearch che Claude Code ha spostato in background per consegnare un messaggio `'now'`: il messaggio dell'utente che contiene il `tool_result` di quella chiamata ha `tool_use_result` impostato su `{ detachedToolCall: true }`. La chiamata è ancora in esecuzione e Claude ne riceve il risultato al termine. Non segue un secondo `tool_result` per quel `tool_use_id`, quindi se la tua applicazione disegna una riga per ogni chiamata a uno strumento, contrassegna questa riga come spostata in background quando arriva questo messaggio. Richiede Claude Code v2.1.287 o successiva.

1662* Uno strumento MCP il cui risultato contiene blocchi `resource_link`: `tool_use_result` è un oggetto con un array `resourceLinks` di voci [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude riceve ogni link come una riga di testo nel blocco `tool_result`, quindi leggi `resourceLinks` per eseguire il rendering dei file restituiti dal server invece di analizzare quel testo. Claude Code omette `resourceLinks` quando il risultato non contiene link e nei risultati dei subagent, mantiene al massimo 50 link per risultato e smette di aggiungere link quando l'array raggiunge 64 KiB di JSON serializzato. `resourceLinks` richiede Agent SDK v0.3.257 o successiva.1699* Uno strumento MCP il cui risultato contiene blocchi `resource_link`: `tool_use_result` è un oggetto con un array `resourceLinks` di voci [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude riceve ogni link come una riga di testo nel blocco `tool_result`, quindi leggi `resourceLinks` per eseguire il rendering dei file restituiti dal server invece di analizzare quel testo. Claude Code omette `resourceLinks` quando il risultato non contiene link e nei risultati dei subagent, mantiene al massimo 50 link per risultato e smette di aggiungere link quando l'array raggiunge 64 KiB di JSON serializzato. `resourceLinks` richiede Agent SDK v0.3.257 o successiva.

1663* Uno strumento MCP che restituisce [`structuredContent`](#calltoolresult): `tool_use_result` è un oggetto il cui membro `structuredContent` contiene ciò che il server ha inviato e il cui membro `content` contiene il valore [`McpOutput`](#mcpoutput). I risultati dei subagent non contengono `structuredContent`.1700* Uno strumento MCP che restituisce [`structuredContent`](#calltoolresult): `tool_use_result` è un oggetto il cui membro `structuredContent` contiene ciò che il server ha inviato e il cui membro `content` contiene il valore [`McpOutput`](#mcpoutput). I risultati dei subagent non contengono `structuredContent`.

1664* Uno strumento MCP il cui `structuredContent` viene serializzato in più di 1.048.576 caratteri di JSON: Claude Code esclude `structuredContent` da `tool_use_result` e imposta al suo posto `structuredContentOmitted: true`, così la tua applicazione può distinguere un oggetto scartato da uno strumento che non ne ha inviato nessuno. Gli altri membri, come `content` e `resourceLinks`, restano, e ciò che Claude riceve non cambia. Gli strumenti dei [server SDK in-process](/docs/it/agent-sdk/custom-tools) e gli strumenti la cui voce `tools/list` dichiara una [risorsa MCP Apps `_meta.ui`](#mcpserverstatus) sono esenti e consegnano l'oggetto intero. Claude Code v2.1.287 o successiva applica questo limite.1701* Uno strumento MCP il cui `structuredContent` serializzato supera 1.048.576 caratteri di JSON: Claude Code omette `structuredContent` da `tool_use_result` e imposta al suo posto `structuredContentOmitted: true`, così la tua applicazione può distinguere un oggetto scartato da uno strumento che non ne ha inviato alcuno. Gli altri membri, come `content` e `resourceLinks`, rimangono, e ciò che Claude riceve non cambia. Claude Code v2.1.287 o successiva applica questo limite. Due tipi di strumento fanno eccezione:

1702 * Gli strumenti dei [server SDK in-process](/docs/it/agent-sdk/custom-tools) sono esenti e consegnano l'oggetto per intero.

1703 * Uno strumento la cui voce `tools/list` dichiara una [risorsa MCP Apps `ui://`](#mcpserverstatus) ha un limite di 8.388.608 caratteri su Claude Code v2.1.295 o successiva, mentre le versioni precedenti alla v2.1.295 lo esentano.

1665 1704 

1666<h3 id="sdkusermessagereplay">1705<h3 id="sdkusermessagereplay">

1667 `SDKUserMessageReplay`1706 `SDKUserMessageReplay`


1775* `ttft_stream_ms`: tempo in millisecondi fino al primo evento di flusso `message_start`, quando si apre il flusso di risposta. Inferiore a `ttft_ms`; la differenza tra i due è il tempo impiegato per lo streaming del primo messaggio. Presente solo sul ramo di successo.1814* `ttft_stream_ms`: tempo in millisecondi fino al primo evento di flusso `message_start`, quando si apre il flusso di risposta. Inferiore a `ttft_ms`; la differenza tra i due è il tempo impiegato per lo streaming del primo messaggio. Presente solo sul ramo di successo.

1776* `user_message_uuid`: l'`uuid` del messaggio che hai inviato a cui questo turno ha risposto. Consulta [`user_message_uuid`](#user_message_uuid) per sapere quali risultati lo contengono.1815* `user_message_uuid`: l'`uuid` del messaggio che hai inviato a cui questo turno ha risposto. Consulta [`user_message_uuid`](#user_message_uuid) per sapere quali risultati lo contengono.

1777* `user_message_uuids`: gli `uuid` di ogni messaggio che hai inviato a cui Claude Code ha risposto in questo turno. Consulta [`user_message_uuids`](#user_message_uuids).1816* `user_message_uuids`: gli `uuid` di ogni messaggio che hai inviato a cui Claude Code ha risposto in questo turno. Consulta [`user_message_uuids`](#user_message_uuids).

1778* `resume_reason`: perché Claude Code ha rieseguito questo turno dopo che un riavvio lo ha interrotto. Presente in entrambi i rami. Consulta [`resume_reason`](#resume_reason).1817* `resume_reason`: perché questo turno continua un turno che un riavvio ha interrotto. Presente in entrambi i rami. Vedi [`resume_reason`](#resume_reason).

1779* `local_command`: il nome del comando che il turno ha inviato, sul risultato di successo di un turno che un comando ha completato senza entrare nel ciclo dell'agente, come `/compact`. Il nome viene ridotto a lettere minuscole e trattini bassi, quindi `/reload-plugins` riporta `reload_plugins`. Un comando fornito da un server MCP, e il `/mcp` integrato, riportano `mcp`. Un comando che hai definito tu riporta `custom`. Gli argomenti non sono mai inclusi. Assente su ogni turno che è entrato nel ciclo dell'agente e sugli invii che non hanno eseguito alcun comando. Richiede Agent SDK v0.3.268 o successivo.1818* `local_command`: il nome del comando che il turno ha inviato, sul risultato di successo di un turno che un comando ha completato senza entrare nel ciclo dell'agente, come `/compact`. Il nome viene ridotto a lettere minuscole e trattini bassi, quindi `/reload-plugins` riporta `reload_plugins`. Un comando fornito da un server MCP, e il `/mcp` integrato, riportano `mcp`. Un comando che hai definito tu riporta `custom`. Gli argomenti non sono mai inclusi. Assente su ogni turno che è entrato nel ciclo dell'agente e sugli invii che non hanno eseguito alcun comando. Richiede Agent SDK v0.3.268 o successivo.

1780* `request_sent_wall_ms`: millisecondi epoch in cui Claude Code ha inviato la richiesta API, per le join con i timestamp lato server. Presente solo insieme a [`user_message_uuid`](#user_message_uuid), su un risultato di successo con `is_error` false il cui turno ha inviato una richiesta API.1819* `request_sent_wall_ms`: millisecondi epoch in cui Claude Code ha inviato la richiesta API, per le join con i timestamp lato server. Presente solo insieme a [`user_message_uuid`](#user_message_uuid), su un risultato di successo con `is_error` false il cui turno ha inviato una richiesta API.

1781* `first_content_frame_ms`: tempo in millisecondi fino al primo evento di flusso `content_block_start` o `content_block_delta`, contando i blocchi di ragionamento come contenuto. Presente solo sul ramo di successo, quando `is_error` è false. Richiede Agent SDK v0.3.260 o successivo.1820* `first_content_frame_ms`: tempo in millisecondi fino al primo evento di flusso `content_block_start` o `content_block_delta`, contando i blocchi di ragionamento come contenuto. Presente solo sul ramo di successo, quando `is_error` è false. Richiede Agent SDK v0.3.260 o successivo.


1825 1864 

1826* **Un messaggio normale che hai inviato**, cioè uno senza `isSynthetic: true`: il turno risponde a quel messaggio per tutta la sua esecuzione. Quando invii più messaggi a breve distanza, Claude Code può unirli in un unico turno, e il campo contiene allora solo l'`uuid` dell'ultimo messaggio. Per abbinare la risposta a uno qualsiasi dei messaggi uniti, usa [`user_message_uuids`](#user_message_uuids).1865* **Un messaggio normale che hai inviato**, cioè uno senza `isSynthetic: true`: il turno risponde a quel messaggio per tutta la sua esecuzione. Quando invii più messaggi a breve distanza, Claude Code può unirli in un unico turno, e il campo contiene allora solo l'`uuid` dell'ultimo messaggio. Per abbinare la risposta a uno qualsiasi dei messaggi uniti, usa [`user_message_uuids`](#user_message_uuids).

1827* **Un messaggio che hai inviato con `isSynthetic: true`**: il turno risponde inizialmente a quel messaggio. Se Claude Code raccoglie un tuo messaggio normale tra una chiamata a uno strumento e l'altra, da quel momento il turno risponde al messaggio raccolto. La restituzione dell'`uuid` di un messaggio sintetico richiede Agent SDK v0.3.265 o successivo; le versioni precedenti non restituiscono nulla sui turni sintetici.1866* **Un messaggio che hai inviato con `isSynthetic: true`**: il turno risponde inizialmente a quel messaggio. Se Claude Code raccoglie un tuo messaggio normale tra una chiamata a uno strumento e l'altra, da quel momento il turno risponde al messaggio raccolto. La restituzione dell'`uuid` di un messaggio sintetico richiede Agent SDK v0.3.265 o successivo; le versioni precedenti non restituiscono nulla sui turni sintetici.

1828* **Il prompt che Claude Code genera per rieseguire un turno interrotto con [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars)**: quando l'ultimo prompt del turno interrotto è un messaggio normale che hai inviato, sia che abbia aperto il turno sia che Claude Code lo abbia raccolto durante il turno, la riesecuzione risponde inizialmente a quel messaggio. [`resume_reason`](#resume_reason) distingue i frame della riesecuzione da quelli del tentativo interrotto. Quando l'ultimo prompt non è un tuo messaggio normale, la riesecuzione inizialmente non risponde ad alcun tuo messaggio. Se Claude Code raccoglie un tuo messaggio normale tra una chiamata a uno strumento e l'altra, da quel momento il turno risponde al messaggio raccolto. La restituzione del prompt del turno interrotto richiede Agent SDK v0.3.268 o successivo.1867* **Il prompt che Claude Code genera per continuare un turno interrotto con [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars)**: quando l'ultimo prompt del turno interrotto è un messaggio normale che hai inviato, sia che abbia aperto il turno sia che Claude Code lo abbia raccolto durante il turno, il turno continuato risponde inizialmente a quel messaggio. [`resume_reason`](#resume_reason) distingue i frame del turno continuato da quelli del tentativo interrotto. Quando l'ultimo prompt non è un tuo messaggio normale, il turno continuato inizialmente non risponde a nessun tuo messaggio. Se Claude Code raccoglie un tuo messaggio normale tra una chiamata a uno strumento e l'altra, da quel momento il turno risponde al messaggio raccolto. Riportare il prompt del turno interrotto richiede Agent SDK v0.3.268 o successiva.

1829* **Qualsiasi altro prompt generato da Claude Code stesso**: il turno inizialmente non risponde ad alcun tuo messaggio e i suoi frame non contengono alcuna restituzione. Se Claude Code raccoglie un tuo messaggio normale tra una chiamata a uno strumento e l'altra, da quel momento il turno risponde a quel messaggio. La restituzione in caso di raccolta richiede Agent SDK v0.3.265 o successivo; le versioni precedenti non restituiscono nulla su questi turni.1868* **Qualsiasi altro prompt generato da Claude Code stesso**: il turno inizialmente non risponde ad alcun tuo messaggio e i suoi frame non contengono alcuna restituzione. Se Claude Code raccoglie un tuo messaggio normale tra una chiamata a uno strumento e l'altra, da quel momento il turno risponde a quel messaggio. La restituzione in caso di raccolta richiede Agent SDK v0.3.265 o successivo; le versioni precedenti non restituiscono nulla su questi turni.

1830 1869 

1831Claude Code restituisce l'`uuid` del messaggio a cui ha risposto su tre tipi di frame:1870Claude Code restituisce l'`uuid` del messaggio a cui ha risposto su tre tipi di frame:


1857 `resume_reason`1896 `resume_reason`

1858</h4>1897</h4>

1859 1898 

1860Il motivo per cui Claude Code ha rieseguito questo turno dopo un riavvio. Claude Code imposta questo campo su un turno che ha rieseguito con [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars), in modo che tu possa distinguere la risposta e il risultato della riesecuzione da quelli del tentativo interrotto. Richiede Agent SDK v0.3.268 o successivo.1899Perché questo turno continua un turno che un riavvio ha interrotto. Claude Code imposta questo campo su un turno che continua un turno interrotto con [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars), così puoi distinguere la risposta e il risultato del turno continuato da quelli del tentativo interrotto. Richiede Agent SDK v0.3.268 o successiva.

1861 1900 

1862Claude Code imposta il campo su due tipi di frame:1901Claude Code imposta il campo su due tipi di frame:

1863 1902 

1864* **Il risultato della riesecuzione**: sia sul ramo di successo sia su quello di errore, indipendentemente dal fatto che il risultato contenga `user_message_uuid`.1903* **Il risultato del turno continuato**: sia nel ramo di successo sia in quello di errore, indipendentemente dal fatto che il risultato porti `user_message_uuid`.

1865* **I frame di risposta della riesecuzione**: quelli che contengono [`user_message_uuid`](#user_message_uuid).1904* **I frame di risposta del turno continuato**: quelli che portano [`user_message_uuid`](#user_message_uuid).

1866 1905 

1867Il valore è un breve token in minuscolo che indica perché il turno è stato rieseguito, come `interrupted_turn`.1906Il valore è un breve token in minuscolo, come `interrupted_turn`.

1868 1907 

1869<h4 id="queued_turn_count">1908<h4 id="queued_turn_count">

1870 `queued_turn_count`1909 `queued_turn_count`


2018```typescript theme={null}2057```typescript theme={null}

2019type SDKPartialAssistantMessage = {2058type SDKPartialAssistantMessage = {

2020 type: "stream_event";2059 type: "stream_event";

2021 event: BetaRawMessageStreamEvent; // Dall'SDK Anthropic2060 event: BetaRawMessageStreamEvent; // From Anthropic SDK

2022 parent_tool_use_id: string | null;2061 parent_tool_use_id: string | null;

2023 uuid: UUID;2062 uuid: UUID;

2024 session_id: string;2063 session_id: string;

2025 ttft_ms?: number; // Tempo al primo token in ms, presente solo negli eventi message_start2064 ttft_ms?: number; // Time to first token in ms, present only on message_start events

2026 user_message_uuid?: string;2065 user_message_uuid?: string;

2027 user_message_uuids?: string[];2066 user_message_uuids?: string[];

2028 resume_reason?: string;2067 resume_reason?: string;

2029};2068};

2030```2069```

2031 2070 

2032Claude Code imposta `user_message_uuid` e `user_message_uuids` sul primo evento di flusso non-ping del turno, e di nuovo quando cambia il messaggio a cui il turno sta rispondendo, secondo le condizioni descritte in [`user_message_uuid`](#user_message_uuid). Quando Claude Code riesegue un turno che un riavvio ha interrotto, gli eventi di flusso della riesecuzione che contengono questi campi contengono anche [`resume_reason`](#resume_reason).2071Claude Code imposta `user_message_uuid` e `user_message_uuids` sul primo evento di stream non ping del turno, e di nuovo quando cambia il messaggio a cui il turno sta rispondendo, alle condizioni descritte in [`user_message_uuid`](#user_message_uuid). Quando il turno continua un turno che un riavvio ha interrotto, gli eventi di stream che portano quei campi portano anche [`resume_reason`](#resume_reason).

2033 2072 

2034<h3 id="sdkcompactboundarymessage">2073<h3 id="sdkcompactboundarymessage">

2035 `SDKCompactBoundaryMessage`2074 `SDKCompactBoundaryMessage`


3560| - | - | - |3599| - | - | - |

3561| `script` | `string` | Script di workflow inline. Deve iniziare con `export const meta = { name, description }` come letterale, seguito dal corpo dello script usando `agent()`, `parallel()`, `pipeline()` e `phase()`. Un array `phases` facoltativo in `meta` raggruppa gli agenti sotto fasi denominate nella vista di progresso |3600| `script` | `string` | Script di workflow inline. Deve iniziare con `export const meta = { name, description }` come letterale, seguito dal corpo dello script usando `agent()`, `parallel()`, `pipeline()` e `phase()`. Un array `phases` facoltativo in `meta` raggruppa gli agenti sotto fasi denominate nella vista di progresso |

3562| `name` | `string` | Nome di un workflow incorporato o uno salvato in `.claude/workflows/`. Risolto in uno script |3601| `name` | `string` | Nome di un workflow incorporato o uno salvato in `.claude/workflows/`. Risolto in uno script |

3563| `scriptPath` | `string` | Percorso a un file di script di workflow su disco. Ha la precedenza su `script` e `name`. Claude Code persiste ogni invocazione dello script e restituisce il percorso nel risultato, quindi puoi modificare quel file e reinvocare con lo stesso `scriptPath` per iterare |3602| `scriptPath` | `string` | Percorso a un file di script di workflow su disco, come lo `scriptPath` restituito da un'esecuzione precedente. Ha la precedenza su `script` e `name`. Claude Code rifiuta `scriptPath` con un errore quando i tool della sessione non includono `Read` |

3564| `args` | `unknown` | Valore di input esposto allo script come `args` globale, per workflow denominati parametrizzati come una domanda di ricerca o un elenco di percorsi di file. Passa array e oggetti come valori JSON effettivi, non come stringa codificata in JSON |3603| `args` | `unknown` | Valore di input esposto allo script come `args` globale, per workflow denominati parametrizzati come una domanda di ricerca o un elenco di percorsi di file. Passa array e oggetti come valori JSON effettivi, non come stringa codificata in JSON |

3565| `resumeFromRunId` | `string` | ID di esecuzione di una precedente invocazione di `Workflow` da riprendere. Le chiamate `agent()` completate con input invariati restituiscono solitamente risultati memorizzati nella cache; il resto viene eseguito live. [Riprendi dopo una pausa](/docs/it/workflows#resume-after-a-pause) copre quali chiamate completate vengono rieseguite. Solo la stessa sessione |3604| `resumeFromRunId` | `string` | ID di esecuzione di una precedente invocazione di `Workflow` da riprendere. Le chiamate `agent()` completate con input invariati restituiscono solitamente risultati memorizzati nella cache; il resto viene eseguito live. [Riprendi dopo una pausa](/docs/it/workflows#resume-after-a-pause) copre quali chiamate completate vengono rieseguite. Solo la stessa sessione |

3566| `title` | `string` | Ignorato; il blocco `meta` dello script imposta il titolo |3605| `title` | `string` | Ignorato; il blocco `meta` dello script imposta il titolo |

agent-view.md +18 −14

Details

152| Forma | Cosa significa |152| Forma | Cosa significa |

153| :- | :- |153| :- | :- |

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

155| `∙` | Il processo è terminato. Puoi comunque dare un'occhiata alla riga e, quando rispondi o ti colleghi, Claude riparte da dove si era interrotto |155| `∙` | Il processo è terminato. Puoi comunque dare un'occhiata alla riga e, quando rispondi o ti colleghi, Claude lo riavvia dalla sua conversazione salvata |

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

157 157 

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


256 256 

257Le sessioni collegate vengono sempre visualizzate in [modalità fullscreen](/docs/it/fullscreen), indipendentemente dalla tua impostazione `tui`, perché una sessione in background non ha uno scrollback del terminale a cui aggiungere contenuto. Scorri con `PgUp`, `PgDn` o la rotella del mouse, e premi `Ctrl+O` per la modalità trascrizione. Lo scorrimento nativo del terminale e la modalità copia di tmux mostrano solo l'area visibile corrente, come quando esegui qualsiasi applicazione a schermo intero.257Le sessioni collegate vengono sempre visualizzate in [modalità fullscreen](/docs/it/fullscreen), indipendentemente dalla tua impostazione `tui`, perché una sessione in background non ha uno scrollback del terminale a cui aggiungere contenuto. Scorri con `PgUp`, `PgDn` o la rotella del mouse, e premi `Ctrl+O` per la modalità trascrizione. Lo scorrimento nativo del terminale e la modalità copia di tmux mostrano solo l'area visibile corrente, come quando esegui qualsiasi applicazione a schermo intero.

258 258 

259Una sessione collegata non [riporta il suo stato al tuo terminale](/docs/it/terminal-config#see-session-status-in-your-terminal).

260 

259Premi `←` su un prompt vuoto, oppure esegui `/exit`, per scollegarti e tornare ad agent view, sia che tu abbia aperto la sessione da agent view sia con `claude attach <id>` dalla tua shell.261Premi `←` su un prompt vuoto, oppure esegui `/exit`, per scollegarti e tornare ad agent view, sia che tu abbia aperto la sessione da agent view sia con `claude attach <id>` dalla tua shell.

260 262 

261`←` ti scollega anche mentre l'[overlay `/btw`](/docs/it/interactive-mode#side-questions-with-%2Fbtw) è aperto. Richiede Claude Code v2.1.257 o successivo. Una domanda laterale ancora in fase di risposta continua a essere eseguita mentre sei via. La prossima volta che ti colleghi, l'overlay si riapre con essa, o con la sua risposta.263`←` ti scollega anche mentre l'[overlay `/btw`](/docs/it/interactive-mode#side-questions-with-%2Fbtw) è aperto. Richiede Claude Code v2.1.257 o successivo. Una domanda laterale ancora in fase di risposta continua a essere eseguita mentre sei via. La prossima volta che ti colleghi, l'overlay si riapre con essa, o con la sua risposta.


264 266 

265Anche `Ctrl+Z` ti scollega, ma torna invece al punto da cui sei partito: agent view se ti sei collegato da lì, oppure la tua shell se hai eseguito `claude attach`. Usa `Ctrl+Z` quando una finestra di dialogo ha il focus e non risponde a `←`.267Anche `Ctrl+Z` ti scollega, ma torna invece al punto da cui sei partito: agent view se ti sei collegato da lì, oppure la tua shell se hai eseguito `claude attach`. Usa `Ctrl+Z` quando una finestra di dialogo ha il focus e non risponde a `←`.

266 268 

267`Ctrl+C` mantiene il suo comportamento standard di interruzione mentre sei collegato: annulla una risposta in corso o un comando shell `!` anziché scollegarti. Premere `Ctrl+C` due volte su un prompt vuoto ti scollega, come in qualsiasi sessione.269`Ctrl+C` mantiene il suo comportamento standard di interruzione mentre sei collegato: annulla una risposta in corso o un comando shell `!` anziché scollegarti. Premere `Ctrl+C` due volte su un prompt vuoto ti scollega.

268 270 

269Scollegarti non ferma mai una sessione in background: `←`, `Ctrl+Z`, `/exit` e il doppio `Ctrl+C` o doppio `Ctrl+D` la lasciano tutti in esecuzione. Per terminare una sessione dall'interno, esegui `/stop`.271Scollegarti non ferma mai una sessione in background: `←`, `Ctrl+Z`, `/exit` e il doppio `Ctrl+C` o doppio `Ctrl+D` la lasciano tutti in esecuzione. Se ti scolleghi mentre un `/loop` attende la sua prossima iterazione, il loop continua a essere eseguito e quell'iterazione parte all'orario previsto senza di te. Per fermare il loop prima di scollegarti, consulta [Fermare un loop](/docs/it/scheduled-tasks#stop-a-loop). Per terminare una sessione dall'interno, esegui `/stop`.

270 272 

271<h4 id="switch-sessions-without-leaving-the-terminal">273<h4 id="switch-sessions-without-leaving-the-terminal">

272 Cambiare sessione senza lasciare il terminale274 Cambiare sessione senza lasciare il terminale


293Dopo circa dieci secondi, Claude Code mette la sessione in background senza attendere oltre, tranne in casi come questi:295Dopo circa dieci secondi, Claude Code mette la sessione in background senza attendere oltre, tranne in casi come questi:

294 296 

295* **I subagent in primo piano sono ancora in esecuzione**: Claude Code continua ad attendere affinché il lavoro dei [subagent in primo piano](/docs/it/sub-agents#run-subagents-in-foreground-or-background) avviati da Claude venga trasferito, e mostra `Still backgrounding after the current tool`. Premi di nuovo `←` per mettere la sessione in background senza attendere, il che riavvia quei subagent dall'inizio.297* **I subagent in primo piano sono ancora in esecuzione**: Claude Code continua ad attendere affinché il lavoro dei [subagent in primo piano](/docs/it/sub-agents#run-subagents-in-foreground-or-background) avviati da Claude venga trasferito, e mostra `Still backgrounding after the current tool`. Premi di nuovo `←` per mettere la sessione in background senza attendere, il che riavvia quei subagent dall'inizio.

296* **Una richiesta di permesso o una domanda attende la tua risposta**: mentre una richiesta di permesso o una domanda posta da Claude è in attesa, Claude Code continua ad attendere e mostra `Still backgrounding after the current tool — a question is waiting for your answer.`298* **Una richiesta di permesso o una domanda attende la tua risposta**: mentre una richiesta di permesso o una domanda posta da Claude è in attesa, Claude Code continua ad attendere e mostra `Still backgrounding after the current tool — a question is waiting for your answer.` Se la tua risposta permette al turno di continuare, come **Yes** su una richiesta di permesso, Claude Code mette la sessione in background quando lo strumento corrente termina.

297* **Digiti nel campo del prompt**: Claude Code annulla il cambio, perché il testo non inviato rimane nella casella di input del terminale e non verrebbe spostato nella sessione in background. Mostra `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`299* **Digiti nel campo del prompt**: Claude Code annulla il cambio, perché il testo non inviato rimane nella casella di input del terminale e non verrebbe spostato nella sessione in background. Mostra `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`

300* **Fermi il turno**: Claude Code annulla il cambio e mostra `Backgrounding cancelled — the turn was stopped.` Ad esempio, il turno si ferma quando [interrompi Claude con `Esc`](/docs/it/interactive-mode#general-controls) o selezioni **No** [senza un commento](/docs/it/permissions#add-a-comment-when-you-answer-a-permission-prompt) su una richiesta di permesso della conversazione principale, oppure premi `Esc` su una domanda che Claude pone lì. Premi di nuovo `←` per mettere la sessione in background.

298* **Un messaggio in coda non può essere spostato**: i messaggi che hai [messo in coda mentre Claude stava lavorando](/docs/it/interactive-mode#queue-messages-while-claude-works) si spostano nella sessione in background insieme alla conversazione. Quando uno di essi non può farlo, la sessione rimane in primo piano e Claude Code mostra un avviso come `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.`301* **Un messaggio in coda non può essere spostato**: i messaggi che hai [messo in coda mentre Claude stava lavorando](/docs/it/interactive-mode#queue-messages-while-claude-works) si spostano nella sessione in background insieme alla conversazione. Quando uno di essi non può farlo, la sessione rimane in primo piano e Claude Code mostra un avviso come `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.`

299 302 

300Premere `←` crea la riga della sessione anche quando la conversazione non ha ancora messaggi, quindi `→` vi ritorna comunque.303Premere `←` crea la riga della sessione anche quando la conversazione non ha ancora messaggi, quindi `→` vi ritorna comunque.


513* `--fallback-model`516* `--fallback-model`

514* `--allow-dangerously-skip-permissions`517* `--allow-dangerously-skip-permissions`

515 518 

516Vengono trasportate anche le directory che hai aggiunto durante la sessione con [`/add-dir`](/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 l'accettazione interattiva una tantum descritta in [Modalità di permesso, modello e sforzo](#permission-mode-model-and-effort).519Vengono trasportate anche le directory che hai aggiunto durante la sessione con [`/add-dir`](/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](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) risulti registrata.

517 520 

518<span id="from-your-shell" />521<span id="from-your-shell" />

519 522 


767 770 

768I valori predefiniti attivi appaiono nel piè di pagina sotto l'input di invio.771I valori predefiniti attivi appaiono nel piè di pagina sotto l'input di invio.

769 772 

770Claude Code rifiuta `claude --bg --permission-mode bypassPermissions` finché non hai accettato il disclaimer di bypass eseguendo `claude --dangerously-skip-permissions` una volta in modo interattivo, poiché quella modalità consente a una sessione che non stai osservando di agire senza approvazione. Passare `--dangerously-skip-permissions` o `--permission-mode bypassPermissions` a `claude agents` mostra lo stesso disclaimer se non l'hai accettato in precedenza, e accettarlo applica `bypassPermissions` alle sessioni che avvii dalla vista. Anche passare `--allow-dangerously-skip-permissions` mostra lo stesso disclaimer, e accettarlo rende `bypassPermissions` disponibile nel ciclo `Shift+Tab` di quelle sessioni senza avviarle in quella modalità.773Una sessione in background avviata in modalità `bypassPermissions` richiede che la tua [accettazione del disclaimer di bypass](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) risulti registrata, poiché quella modalità consente a una sessione che non stai osservando di agire senza approvazione. Passare `--dangerously-skip-permissions` o `--permission-mode bypassPermissions` a `claude agents` mostra lo stesso disclaimer se non l'hai accettato in precedenza, e accettarlo applica `bypassPermissions` alle sessioni che avvii dalla vista. Anche passare `--allow-dangerously-skip-permissions` mostra lo stesso disclaimer, e accettarlo rende `bypassPermissions` disponibile nel ciclo `Shift+Tab` di quelle sessioni senza avviarle in quella modalità.

771 774 

772<h4 id="what-persists-across-restarts">775<h4 id="what-persists-across-restarts">

773 Cosa persiste attraverso i riavvii776 Cosa persiste attraverso i riavvii

774</h4>777</h4>

775 778 

776La modalità di permesso, il modello e lo sforzo che hai scelto per una sessione in background, insieme ai [flag di configurazione che trasporta](#what-carries-over-when-you-background), persistono tutti quando il supervisore in seguito [interrompe e riavvia](#the-supervisor-process) il suo processo. Una sessione che hai avviato con `claude --bg --dangerously-skip-permissions` o `claude --bg --permission-mode bypassPermissions` rimane in `bypassPermissions` dopo quel riavvio. Viene mantenuto anche un modello o uno sforzo che hai cambiato a metà sessione con `/model` o `/effort`.779La modalità di permesso, il modello e lo sforzo che hai scelto per una sessione in background, insieme ai [flag di configurazione che trasporta](#what-carries-over-when-you-background), persistono tutti quando il supervisore in seguito [interrompe e riavvia](#the-supervisor-process) il suo processo. Viene mantenuto anche un modello o uno sforzo che hai cambiato a metà sessione con `/model` o `/effort`.

777 780 

778Se la sessione ha preso il suo sforzo dalle tue impostazioni anziché da `--effort` o `/effort`, Claude Code rilegge le tue impostazioni ogni volta che avvia un processo per la sessione. Dopo che hai modificato lo sforzo salvato in `settings.json`, la modifica raggiunge le sessioni che invii in background con `←` o `/bg`, e i loro riavvii successivi. Lo sforzo salvato è la chiave [`effortLevel`](/docs/it/settings-reference#effortlevel) o una voce [`modelSettings`](/docs/it/settings-reference#modelsettings).781Se la sessione ha preso il suo sforzo dalle tue impostazioni anziché da `--effort` o `/effort`, Claude Code rilegge le tue impostazioni ogni volta che avvia un processo per la sessione. Dopo che hai modificato lo sforzo salvato in `settings.json`, la modifica raggiunge le sessioni che invii in background con `←` o `/bg`, e i loro riavvii successivi. Lo sforzo salvato è la chiave [`effortLevel`](/docs/it/settings-reference#effortlevel) o una voce [`modelSettings`](/docs/it/settings-reference#modelsettings).

779 782 


822| `claude attach <id\|name>` | Collegati a una sessione in questo terminale |825| `claude attach <id\|name>` | Collegati a una sessione in questo terminale |

823| `claude logs <id\|name>` | Stampa l'output recente della sessione |826| `claude logs <id\|name>` | Stampa l'output recente della sessione |

824| `claude stop <id>` | Ferma una sessione. Accetta anche `claude kill` |827| `claude stop <id>` | Ferma una sessione. Accetta anche `claude kill` |

825| `claude respawn <id>` | Riavvia una sessione, in esecuzione o fermata, ad esempio per utilizzare un binario Claude Code aggiornato. La sessione riavviata riprende la sua conversazione salvata; quando nessuna è su disco, esegue di nuovo il suo prompt originale come una nuova conversazione |828| `claude respawn <id>` | Riavvia una sessione, in esecuzione o fermata, ad esempio per utilizzare un binario Claude Code aggiornato. Una sessione che ha una conversazione salvata la riprende |

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

827| `claude rm <id>` | Rimuovi una sessione dall'elenco, insieme a un worktree creato da Claude per essa quando è sicuro eliminarlo; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). La trascrizione della conversazione rimane sulla tua macchina locale e rimane disponibile tramite `claude --resume` |830| `claude rm <id>` | Rimuovi una sessione dall'elenco, insieme a un worktree creato da Claude per essa quando è sicuro eliminarlo; vedi [Cosa elimina l'eliminazione di una sessione](#what-deleting-a-session-removes). La trascrizione della conversazione rimane sulla tua macchina locale e rimane disponibile tramite `claude --resume` |

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

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

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

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

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

833 836 

834`claude attach` e `claude logs` possono accettare parte del nome di una sessione al posto dell'ID, come in `claude logs "auth refactor"`. Passare un nome richiede Claude Code v2.1.290 o successivo.837`claude attach` e `claude logs` possono accettare parte del nome di una sessione al posto dell'ID, come in `claude logs "auth refactor"`. `claude attach` apre una sessione per nome solo mentre il suo processo è in esecuzione, quindi passa invece l'ID per riavviare una sessione fermata. Passare un nome richiede Claude Code v2.1.290 o successivo.

835 838 

836<h3 id="list-sessions-as-json">839<h3 id="list-sessions-as-json">

837 Elencare le sessioni come JSON840 Elencare le sessioni come JSON


889* **Terminato o in attesa del tuo prossimo messaggio, e scollegato per circa un'ora**: il supervisor ferma il processo per liberare risorse. Una sessione che ha terminato il suo turno chiedendoti una domanda conta come in attesa del tuo prossimo messaggio. La conversazione rimane su disco, e la prossima volta che ti colleghi o rispondi, la sessione riprende da dove l'ha lasciata. Fissa una sessione con `Ctrl+T` per mantenere il suo processo in esecuzione.892* **Terminato o in attesa del tuo prossimo messaggio, e scollegato per circa un'ora**: il supervisor ferma il processo per liberare risorse. Una sessione che ha terminato il suo turno chiedendoti una domanda conta come in attesa del tuo prossimo messaggio. La conversazione rimane su disco, e la prossima volta che ti colleghi o rispondi, la sessione riprende da dove l'ha lasciata. Fissa una sessione con `Ctrl+T` per mantenere il suo processo in esecuzione.

890* **Uscito inaspettatamente mentre il supervisor è in esecuzione**: il supervisor riavvia il processo. Terminare una sessione che hai messo in background tu stesso con `←` o `/background`, ad esempio con `kill`, la contrassegna come fermata invece di riavviarla. Per le sessioni che sono terminate con un arresto, vedi [Le sessioni vengono visualizzate come non riuscite o fermate dopo l'arresto](#sessions-show-as-failed-after-shutdown).893* **Uscito inaspettatamente mentre il supervisor è in esecuzione**: il supervisor riavvia il processo. Terminare una sessione che hai messo in background tu stesso con `←` o `/background`, ad esempio con `kill`, la contrassegna come fermata invece di riavviarla. Per le sessioni che sono terminate con un arresto, vedi [Le sessioni vengono visualizzate come non riuscite o fermate dopo l'arresto](#sessions-show-as-failed-after-shutdown).

891* **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.894* **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.

895* **Il supervisor stesso si ferma**, ad esempio perché il suo processo è stato terminato dall'esterno di Claude Code: su macOS e Linux, il processo di ogni sessione attende circa un minuto che un nuovo supervisor si ricolleghi ad esso, e si ferma se nessuno lo fa. Esegui `claude agents` nella tua shell entro quel minuto per avviare un nuovo supervisor e mantenere le tue sessioni in esecuzione. Se il minuto passa prima, le sessioni si fermano, ma le loro conversazioni salvate rimangono su disco: collegati o rispondi a una sessione e questa si riavvia dalla sua conversazione salvata, come descritto in [Le sessioni vengono visualizzate come non riuscite o fermate dopo l'arresto](#sessions-show-as-failed-after-shutdown).

892 896 

893Quando 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`](/docs/it/env-vars#variables) su `1`.897Quando 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`](/docs/it/env-vars#variables) su `1`.

894 898 


911 915 

912Per ispezionare questo stato senza leggere direttamente i file, esegui `claude daemon status`. Riporta se il supervisor è raggiungibile, il suo ID processo e versione, la directory socket, e quante sessioni in background sono attive.916Per ispezionare questo stato senza leggere direttamente i file, esegui `claude daemon status`. Riporta se il supervisor è raggiungibile, il suo ID processo e versione, la directory socket, e quante sessioni in background sono attive.

913 917 

914Il comando avverte anche quando il supervisor in esecuzione è su una versione diversa da quella di `claude` che hai invocato, il che accade dopo un aggiornamento in cui il supervisor non si è ancora riavviato. L'avviso mostra entrambe le versioni e ti dice di eseguire `claude daemon stop --any` per raccogliere la nuova versione. Quando Claude Code è installato come servizio del sistema operativo, il comando suggerito è `claude daemon stop` senza il flag.918Il comando avverte anche quando il supervisor in esecuzione è su una versione diversa da quella di `claude` che hai invocato, il che accade dopo un aggiornamento in cui il supervisor non si è ancora riavviato. L'avviso mostra entrambe le versioni e ti dice di eseguire `claude daemon stop --any` per raccogliere la nuova versione.

915 919 

916Le sessioni sopravvivono intatte a quel mismatch di versione: una versione più vecchia di Claude Code che aggiorna il file `state.json` di una sessione preserva i campi che non riconosce e mantiene la sessione elencata. L'elenco delle sessioni in `roster.json` segue la stessa regola, quindi le sessioni avviate dalla versione più nuova rimangono raggiungibili e continuano ad accettare input dopo il riavvio del supervisor.920Le sessioni sopravvivono intatte a quel mismatch di versione: una versione più vecchia di Claude Code che aggiorna il file `state.json` di una sessione preserva i campi che non riconosce e mantiene la sessione elencata. L'elenco delle sessioni in `roster.json` segue la stessa regola, quindi le sessioni avviate dalla versione più nuova rimangono raggiungibili e continuano ad accettare input dopo il riavvio del supervisor.

917 921 


963 967 

964Lo spegnimento o il riavvio della tua macchina interrompe le sessioni in background in esecuzione. Una sessione che era in attesa del tuo input rimane sotto `Needs input` quando torni. Per qualsiasi altra sessione in esecuzione, ciò che agent view mostra dipende da quanto tempo fa ha fatto progressi per l'ultima volta:968Lo spegnimento o il riavvio della tua macchina interrompe le sessioni in background in esecuzione. Una sessione che era in attesa del tuo input rimane sotto `Needs input` quando torni. Per qualsiasi altra sessione in esecuzione, ciò che agent view mostra dipende da quanto tempo fa ha fatto progressi per l'ultima volta:

965 969 

966* Entro 48 ore, la sessione risulta non riuscita. Collegati o rispondi ad essa e si riavvia da dove l'ha lasciata.970* Entro 48 ore, la sessione risulta non riuscita. Collegati o rispondi ad essa e si riavvia dalla sua conversazione salvata. Per riprendere il lavoro interrotto, inviale una risposta chiedendole di continuare.

967* Passate 48 ore, come dopo che la macchina è stata spenta per giorni, la sessione risulta interrotta con `ended while the background service was off`. Premi `Enter` sulla riga e il footer mostra `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` Premi `Enter` sulla stessa riga di nuovo per riprendere la sua conversazione salvata. Una risposta, o `claude attach <id>`, la riprende senza quella richiesta del footer.971* Passate 48 ore, come dopo che la macchina è stata spenta per giorni, la sessione risulta interrotta con `ended while the background service was off`. Premi `Enter` sulla riga e il footer mostra `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` Premi `Enter` sulla stessa riga di nuovo per riprendere la sua conversazione salvata. Una risposta, o `claude attach <id>`, la riprende senza quella richiesta del footer.

968 972 

969Quando la [pulizia delle trascrizioni](/docs/it/settings-reference#cleanupperioddays) ha rimosso la conversazione salvata di una sessione interrotta, Claude Code rifiuta di aprire la riga: il messaggio dice che non c'è nulla da riprendere. `claude rm <id>` elimina la riga, tranne nei [casi mantenuti](#what-deleting-a-session-removes) descritti sopra, e `claude respawn <id>` esegue di nuovo il suo prompt originale. Vedi [La conversazione salvata di questa sessione non è più su disco](/docs/it/errors#this-sessions-saved-conversation-is-no-longer-on-disk).973Quando la [pulizia delle trascrizioni](/docs/it/settings-reference#cleanupperioddays) ha rimosso la conversazione salvata di una sessione interrotta, Claude Code rifiuta di aprire la riga: il messaggio dice che non c'è nulla da riprendere. `claude rm <id>` elimina la riga, tranne nei [casi mantenuti](#what-deleting-a-session-removes) descritti sopra, e `claude respawn <id>` esegue di nuovo il suo prompt originale. Vedi [La conversazione salvata di questa sessione non è più su disco](/docs/it/errors#this-sessions-saved-conversation-is-no-longer-on-disk).


1022claude daemon stop --any --keep-workers1026claude daemon stop --any --keep-workers

1023```1027```

1024 1028 

1025Il nuovo supervisor si ricollega alle sessioni in esecuzione. Senza `--keep-workers`, il comando termina anche le sessioni in background. Il flag `--any` conferma che desideri fermare un supervisor che è stato avviato su richiesta piuttosto che come servizio installato, che è l'impostazione predefinita.1029Quindi esegui `claude agents` nella tua shell per avviare il nuovo supervisor. Se lo fai entro [circa un minuto](#the-supervisor-process) dall'arresto, si ricollega alle sessioni ancora in esecuzione e il loro lavoro continua senza interruzioni. Se impieghi più tempo, su macOS e Linux le sessioni si sono già fermate da sole, e collegarti o rispondere a una di esse la riavvia dalla sua conversazione salvata. Senza `--keep-workers`, il comando termina anche le sessioni in background. Il flag `--any` fa sì che il comando fermi un supervisor che Claude Code ha avviato su richiesta.

1026 1030 

1027Un supervisor che si avvia ma non riesce ad accettare connessioni esce e rilascia il suo blocco da solo, quindi il prossimo `claude agents` ne avvia uno nuovo senza questo arresto manuale. I passaggi precedenti si applicano quando un supervisor in esecuzione subisce un blocco.1031Un supervisor che si avvia ma non riesce ad accettare connessioni esce e rilascia il suo blocco da solo, quindi il prossimo `claude agents` ne avvia uno nuovo senza questo arresto manuale. I passaggi precedenti si applicano quando un supervisor in esecuzione subisce un blocco.

1028 1032 


1040claude daemon stop --any --keep-workers1044claude daemon stop --any --keep-workers

1041```1045```

1042 1046 

1043Il prossimo `claude agents` o `claude --bg` avvia un nuovo supervisor che legge le tue credenziali memorizzate. Se ti autentichi con una variabile d'ambiente come `ANTHROPIC_API_KEY` piuttosto che con `/login`, esegui quel comando successivo da una shell dove la variabile è impostata.1047Entro [circa un minuto](#the-supervisor-process), esegui `claude agents` o `claude --bg` nella tua shell per avviare un nuovo supervisor che legge le tue credenziali memorizzate. Se ti autentichi con una variabile d'ambiente come `ANTHROPIC_API_KEY` piuttosto che con `/login`, esegui quel comando successivo da una shell dove la variabile è impostata.

1044 1048 

1045Vedi il [riferimento degli errori](/docs/it/errors#could-not-resolve-authentication-method) per l'elenco completo delle cause e delle correzioni.1049Vedi il [riferimento degli errori](/docs/it/errors#could-not-resolve-authentication-method) per l'elenco completo delle cause e delle correzioni.

1046 1050 

analytics.md +1 −1

Details

67* **"GitHub app required"**: installa l'app GitHub per visualizzare le metriche di contributo67* **"GitHub app required"**: installa l'app GitHub per visualizzare le metriche di contributo

68* **"Data processing in progress"**: torna tra qualche giorno e conferma che l'app GitHub è installata se i dati non appaiono68* **"Data processing in progress"**: torna tra qualche giorno e conferma che l'app GitHub è installata se i dati non appaiono

69 69 

70Le metriche di contributo supportano GitHub Cloud e GitHub Enterprise Server.70Le metriche di contributo coprono i repository ospitati su github.com. Per i repository su [GitHub Enterprise Server](/docs/it/github-enterprise-server), il dashboard di analittica mostra solo le metriche di utilizzo.

71 71 

72<h3 id="review-summary-metrics">72<h3 id="review-summary-metrics">

73 Review summary metrics73 Review summary metrics

Details

90 90 

91<Steps>91<Steps>

92 <Step title="Creare o utilizzare un account Console">92 <Step title="Creare o utilizzare un account Console">

93 Utilizzate il vostro account Claude Console esistente o createne uno nuovo.93 Utilizza il tuo account Claude Console esistente o creane uno nuovo.

94 </Step>94 </Step>

95 95 

96 <Step title="Aggiungere utenti">96 <Step title="Aggiungere utenti">

97 Potete aggiungere utenti tramite uno dei due metodi:97 Puoi aggiungere utenti tramite uno dei due metodi:

98 98 

99 * Invitate utenti in massa dalla Console: Settings -> Members -> Invite99 * Invita utenti in massa dalla pagina Members della Console all'indirizzo [platform.claude.com/settings/members](https://platform.claude.com/settings/members): fai clic su **Invite**

100 * [Configurate SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)100 * [Configura SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

101 </Step>101 </Step>

102 102 

103 <Step title="Assegnare ruoli">103 <Step title="Assegnare ruoli">

104 Quando invitate utenti, assegnate uno dei seguenti:104 Quando inviti utenti, assegna uno dei seguenti:

105 105 

106 * **Ruolo Claude Code**: gli utenti possono solo creare chiavi API Claude Code106 * **Ruolo Claude Code**: gli utenti possono solo creare chiavi API Claude Code

107 * **Ruolo Developer**: gli utenti possono creare qualsiasi tipo di chiave API107 * **Ruolo Developer**: gli utenti possono creare qualsiasi tipo di chiave API

Details

1> ## Documentation Index

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

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

4 

5# Addebiti delle richieste del classificatore in modalità auto

6 

7> Risolvi l'avviso di Claude Code che dice che questa sessione non è idonea per le richieste del classificatore senza addebito della modalità auto: cosa significa, perché appare e cosa fare.

8 

9In [auto mode](/docs/it/permission-modes#eliminate-prompts-with-auto-mode), un classificatore controlla azioni come comandi shell e richieste di rete prima che vengano eseguite. Ovunque [i controlli lato server siano attivi](/docs/it/permission-modes#server-side-classifier-review), il server esegue questi controlli come parte delle richieste del modello della sessione stessa, senza addebito. Questo avviso significa che i controlli del server non stanno raggiungendo la sessione, quindi Claude Code sta effettuando le proprie richieste del classificatore, e sul vostro account queste richieste contano verso l'utilizzo dei token:

10 

11```text theme={null}

12We're changing auto mode to no longer charge for classifier requests in Claude Code. However, this session isn't eligible.

13```

14 

15Al prompt, Claude Code blocca la prima azione che dovrebbe controllare in questo modo finché non rispondete. Nulla è rotto: la modalità auto continua a funzionare, e le sue richieste del classificatore vengono addebitate come prima. La causa più comune è un gateway LLM o un proxy tra Claude Code e l'API, e quando Claude Code riesce a identificarne uno, l'avviso lo nomina. Premete **Invio** per continuare, oppure consultate [Rendere la sessione idonea](#make-the-session-eligible) per evitare che appaia nelle nuove sessioni.

16 

17<h2 id="respond-to-the-notice">

18 Rispondere alla notifica

19</h2>

20 

21La notifica blocca l'azione fino a quando non rispondete:

22 

23* **Invio** continua: l'azione bloccata e il resto della sessione utilizzano le richieste di classificazione proprie di Claude Code, fatturate come utilizzo di token come prima, e la notifica non appare di nuovo in quella sessione. Quando la notifica ha nominato un gateway, riconoscerla impedisce che riappaia su questa macchina per 24 ore. Quando non l'ha fatto, la notifica ritorna la prossima volta che una sessione torna indietro.

24* **Esc** o **Ctrl+C** annulla: l'azione bloccata non viene eseguita e il turno corrente si ferma, con la sessione ancora in modalità auto. Nulla viene ricordato, quindi la notifica appare di nuovo prima dell'azione controllata successiva.

25 

26Per smettere di utilizzare la modalità auto, passate ai modalità di autorizzazione con `Shift+Tab` dopo aver risposto.

27 

28Dove la notifica non può attendere una risposta, Claude Code segnala lo stesso testo e la sessione continua in modalità auto, a meno che un riconoscimento gateway su questa macchina negli ultimi 24 ore non l'abbia chiuso. In [modalità non interattiva](/docs/it/headless) con `-p` stampa il testo su stderr e nell'output `stream-json` emette un messaggio di avvertimento `system`, che le applicazioni Agent SDK possono leggere dal flusso di messaggi.

29 

30<h2 id="make-the-session-eligible">

31 Rendere la sessione idonea

32</h2>

33 

34Se un gateway è la causa, chiedi all'amministratore della tua azienda o al tuo provider di gateway di far passare le richieste e le risposte senza modifiche. Ciò significa inoltrare le intestazioni delle richieste e i campi del corpo così come sono, inclusi quelli che il gateway non riconosce come il campo di richiesta `safeguards`, e restituire risposte ed eventi di streaming senza eliminare chiavi come il campo `safeguard_results` o riscrivere gli ID di tool-use, come descrive la [guida di compatibilità del gateway](/docs/it/llm-gateway-protocol#feature-pass-through). Un gateway che fa passare il traffico in questo modo continua a funzionare con questa funzionalità e con quelle future. Le nuove sessioni utilizzano di nuovo i controlli del server.

35 

36Se sai già che il tuo gateway non può fornire i controlli del server, comunica a Claude Code di non chiederli lì impostando `CLAUDE_CODE_AUTO_MODE_SERVER` a `0` prima di avviare la sessione, nella tua shell o nella [chiave di impostazioni `env`](/docs/it/settings-reference#env):

37 

38```bash theme={null}

39export CLAUDE_CODE_AUTO_MODE_SERVER=0

40```

41 

42Le richieste del classificatore sono quindi sempre proprie di Claude Code, fatturate allo stesso modo, e la notifica non appare. Su una connessione diretta all'API Anthropic, la variabile richiede Claude Code v2.1.281 o successivo. Impostare `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` mentre `CLAUDE_CODE_AUTO_MODE_SERVER` non è impostato disattiva anche i controlli del server, tranne come descrive [Disabilitare le funzionalità pre-release](/docs/it/llm-gateway-protocol#disable-pre-release-capabilities).

43 

44`CLAUDE_CODE_AUTO_MODE_SERVER` è un'impostazione temporanea e potrebbe essere rimossa in una versione successiva.

45 

46<h2 id="why-the-notice-appears">

47 Perché appare la notifica

48</h2>

49 

50[La revisione del classificatore lato server](/docs/it/permission-modes#server-side-classifier-review) elenca quali sessioni richiedono al server i controlli del classificatore. I piani Pro, Max e Team non mostrano mai la notifica. Quando appare, le cause più comuni sono:

51 

52* **Un gateway LLM o proxy è nel percorso**: uno che elimina o riscrive le intestazioni delle richieste, scarta i campi della richiesta che non riconosce o modifica le risposte. Il server quindi non riceve mai la richiesta di controlli, oppure Claude Code non riceve i risultati. Quando la configurazione o le risposte identificano il gateway, la notifica lo nomina.

53* **I controlli lato server non hanno ancora raggiunto la tua piattaforma, regione o credenziale**: se una piattaforma o una regione li esegue dipende dal rollout di quella piattaforma. Se vedi la notifica senza gateway o proxy nel percorso e continua ad apparire, questa è la causa probabile. Per confermare, contatta il supporto o l'amministratore della tua azienda, oppure segnalalo con `/feedback`.

54 

55Per controllare una sessione che è in modalità auto, esegui `/status` al prompt di Claude Code: la sua riga **Auto mode server** legge `Enabled` mentre i controlli del server decidono le azioni della sessione e `Disabled` una volta che la sessione è ricaduta.

56 

57Quando un gateway taglia le risposte o riscrive i risultati in una forma che Claude Code non può leggere, ricevi negazioni senza verdetto al posto di questa notifica; vedi [La revisione del classificatore lato server](/docs/it/permission-modes#server-side-classifier-review).

58 

59<h2 id="related-resources">

60 Risorse correlate

61</h2>

62 

63* [Modalità Auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode): cos'è la modalità auto e cosa blocca per impostazione predefinita

64* [Revisione del classificatore lato server](/docs/it/permission-modes#server-side-classifier-review): quali sessioni chiedono al server di controllare le azioni e la versione di Claude Code richiesta per ciascuna

65* [Guida di compatibilità del gateway](/docs/it/llm-gateway-protocol#feature-pass-through): cosa si interrompe quando un gateway elimina intestazioni o campi del corpo

66* [Il server non ha restituito alcun verdetto di sicurezza](/docs/it/errors#the-server-returned-no-safety-verdict): il rifiuto che vedi quando il server non fornisce un verdetto per un'azione

67* [Gestisci i costi in modo efficace](/docs/it/costs): traccia l'utilizzo dei token e riduci i costi di Claude Code

Details

381 381 

382Due altri posti sullo schermo che segnalano i rifiuti omettono il comando o l'URL: l'avviso vicino alla casella di input, come `bash denied by auto mode · [Data Exfiltration] · /permissions`, fornisce lo strumento e il motivo, e la scheda **Recently denied** elenca un comando shell dalla descrizione che Claude ha scritto per esso. Per acquisire l'input esatto di questi rifiuti a livello di programmazione, aggiungi un [hook `PermissionDenied`](/docs/it/hooks#permissiondenied), che lo riceve come `tool_input`.382Due altri posti sullo schermo che segnalano i rifiuti omettono il comando o l'URL: l'avviso vicino alla casella di input, come `bash denied by auto mode · [Data Exfiltration] · /permissions`, fornisce lo strumento e il motivo, e la scheda **Recently denied** elenca un comando shell dalla descrizione che Claude ha scritto per esso. Per acquisire l'input esatto di questi rifiuti a livello di programmazione, aggiungi un [hook `PermissionDenied`](/docs/it/hooks#permissiondenied), che lo riceve come `tool_input`.

383 383 

384Il testo sotto la chiamata ti dice se c'è qualcosa da correggere. Il testo che segnala un problema con il classificatore stesso, come un modello che `is temporarily unavailable` o un errore del classificatore, significa che Claude Code ha bloccato la chiamata senza un verdetto finale dal classificatore; vedi [Auto mode cannot determine the safety of an action](/docs/it/errors#auto-mode-cannot-determine-the-safety-of-an-action) per cosa fare. Altrimenti, una riga che legge `Denied by auto mode classifier` con un motivo come `[Production Deploy]` o `Blocked by classifier` significa che il classificatore ha giudicato la chiamata non sicura, quindi scegli la correzione da ciò che la chiamata stava cercando di raggiungere o fare:384Il testo sotto la chiamata ti dice se c'è qualcosa da correggere. Una riga attenuata `Not run · auto mode's check had no usable answer`, o un testo che segnala un problema con il classificatore stesso, come `Auto mode could not evaluate this action`, significa che Claude Code ha bloccato la chiamata senza un verdetto dal classificatore. Per una riga `Not run`, premi `Ctrl+O` per leggere il messaggio completo, quindi vedi [Auto mode cannot determine the safety of an action](/docs/it/errors#auto-mode-cannot-determine-the-safety-of-an-action) o [The server returned no safety verdict](/docs/it/errors#the-server-returned-no-safety-verdict) per sapere cosa fare.

385 

386Altrimenti, una riga che legge `Denied by auto mode classifier` con un motivo come `[Production Deploy]` o `Blocked by classifier` significa che il classificatore ha giudicato la chiamata non sicura, quindi scegli la correzione da ciò che la chiamata stava cercando di raggiungere o fare:

385 387 

386* Una destinazione che Claude ha bisogno durante l'intero compito, come un registro di pacchetti, un dominio interno o un host di repository: aggiungilo a `autoMode.environment`.388* Una destinazione che Claude ha bisogno durante l'intero compito, come un registro di pacchetti, un dominio interno o un host di repository: aggiungilo a `autoMode.environment`.

387* Un comando che desideri eseguire senza revisione da ora in poi: aggiungi una regola `allow`.389* Un comando che desideri eseguire senza revisione da ora in poi: aggiungi una regola `allow`.

Details

114 I messaggi inviati a metà turno non vengono sottoposti a checkpoint114 I messaggi inviati a metà turno non vengono sottoposti a checkpoint

115</h3>115</h3>

116 116 

117Quando un messaggio che [metti in coda mentre Claude lavora](/docs/it/interactive-mode#queue-messages-while-claude-works) raggiunge Claude durante il turno in esecuzione, si unisce a quel turno invece di iniziarne uno nuovo. Il messaggio appare nella conversazione, ma Claude Code non crea un checkpoint per esso. Un messaggio in coda che Claude Code invia come parte di un nuovo turno riceve un checkpoint come al solito, incluso quando diversi messaggi in coda [condividono quel turno](/docs/it/interactive-mode#when-claude-code-sends-what-you-queued).117Nel menu di rewind, un messaggio che hai [digitato mentre Claude stava ancora lavorando](/docs/it/interactive-mode#queue-messages-while-claude-works) può essere contrassegnato con **No code restore**. Claude ha letto quel messaggio prima della fine del suo turno. [I checkpoint vengono creati per i prompt che avviano un turno](#how-checkpoints-work), quindi questo messaggio non ne ha uno proprio. Le modifiche che Claude ha apportato dopo averlo letto vengono attribuite al prompt che ha avviato il turno.

118 118 

119Per annullare le modifiche che Claude ha apportato dopo un messaggio di questo tipo, riavvolgi al prompt che ha avviato il turno. Questo riavvolge l'intero turno, incluso il lavoro che Claude ha svolto prima dell'arrivo del tuo messaggio.119Non devi fare nulla riguardo al messaggio stesso. Per annullare le modifiche ai file di quella parte della sessione, seleziona il prompt che ha avviato il turno e scegli **Restore code** o **Restore code and conversation**. In questo modo vengono annullate le modifiche ai file apportate da Claude durante l'intero turno, comprese quelle precedenti all'arrivo del tuo messaggio. Selezionando il messaggio contrassegnato viene comunque offerta l'opzione **Restore conversation**, che riavvolge la conversazione fino a quel messaggio e lascia i tuoi file così come sono.

120 120 

121<h3 id="symlinked-and-hard-linked-paths-not-restored">121<h3 id="symlinked-and-hard-linked-paths-not-restored">

122 I percorsi symlink e hard-link non vengono ripristinati122 I percorsi symlink e hard-link non vengono ripristinati

chrome.md +3 −4

Details

129 Richieste di permesso nelle sessioni VS Code129 Richieste di permesso nelle sessioni VS Code

130</h3>130</h3>

131 131 

132In una sessione VS Code, il fatto che Claude Code ti chieda conferma prima di un'azione del browser dipende da come la sessione si è connessa al tuo browser:132In una sessione VS Code, quando Claude Code ti chiede conferma prima di un'azione del browser, la richiesta appare come un riquadro nel pannello della chat. Quando l'azione riguarda un sito che non hai consentito, il riquadro offre anche di consentire quel sito.

133 133 

134* **Hai digitato `@browser`**: l'estensione approva ogni azione del browser per cui Claude Code altrimenti ti chiederebbe conferma.134In una sessione che si è connessa al tuo browser all'avvio perché l'impostazione [Enabled by default](#enable-chrome-by-default) è attiva, Claude Code ti chiede conferma prima delle azioni del browser su un sito che non hai consentito, nelle modalità Manual, Edit automatically, Auto e Bypass permissions. Nelle modalità Auto e Bypass permissions, questo vale finché non digiti `@browser` in quella sessione.

135* **L'impostazione [Enabled by default](#enable-chrome-by-default) l'ha connessa all'avvio**: Claude Code ti chiede conferma prima delle azioni del browser su un sito che non hai consentito, nelle modalità Manual, Edit automatically, Auto e Bypass permissions, finché non digiti `@browser` in quella sessione.

136 135 

137<h3 id="browser-tools-in-plan-mode">136<h3 id="browser-tools-in-plan-mode">

138 Strumenti del browser in plan mode137 Strumenti del browser in plan mode

139</h3>138</h3>

140 139 

141In [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode), un prompt di autorizzazione appare prima che Claude registri una GIF, apra una nuova scheda o esegua una scorciatoia, tranne in una sessione VS Code in cui hai digitato [`@browser`](#permission-prompts-in-vs-code-sessions). In una sessione CLI interattiva, se [la modalità bypass permissions è disponibile](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) e [il recupero del feature flag](/docs/it/env-vars#features-that-need-feature-flag-fetching) è disattivato, queste chiamate vengono eseguite senza un prompt.140In [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode), una richiesta di permesso appare prima che Claude registri una GIF, apra una nuova scheda o esegua una scorciatoia. In una sessione CLI interattiva, se [la modalità bypass permissions è disponibile](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) e [il recupero del feature flag](/docs/it/env-vars#features-that-need-feature-flag-fetching) è disattivato, queste chiamate vengono eseguite senza un prompt.

142 141 

143Una chiamata `tabs_context_mcp` richiede anche un prompt quando imposta `createIfEmpty`, e così fa una chiamata `browser_batch` che include una qualsiasi di queste azioni.142Una chiamata `tabs_context_mcp` richiede anche un prompt quando imposta `createIfEmpty`, e così fa una chiamata `browser_batch` che include una qualsiasi di queste azioni.

144 143 

Details

263 Connettere gli sviluppatori263 Connettere gli sviluppatori

264</h2>264</h2>

265 265 

266Gli sviluppatori si connettono dai propri laptop con un unico accesso tramite browser, usando il proprio account aziendale. Non hanno bisogno di un account claude.ai, di una chiave API o di un abbonamento, perché le richieste al modello passano attraverso il gateway usando la credenziale upstream dell'organizzazione. La connessione è guidata dalle [impostazioni gestite lato client](/docs/it/claude-apps-gateway-config#client-side-managed-settings) che distribuisci tramite MDM, quindi non c'è alcuna configurazione manuale da parte dello sviluppatore; questa sezione descrive ciò che configura l'amministratore.266Gli sviluppatori si connettono dai propri laptop con un unico accesso tramite browser, usando il proprio account aziendale. Non hanno bisogno di un account claude.ai, di una chiave API o di un abbonamento, perché le richieste al modello passano attraverso il gateway usando la credenziale upstream dell'organizzazione. La connessione è guidata dalle [impostazioni gestite lato client](/docs/it/claude-apps-gateway-config#client-side-managed-settings) che distribuisci tramite MDM, e questa sezione descrive ciò che configura l'amministratore.

267 267 

268La CLI calcola l'impronta del certificato TLS foglia del gateway alla prima connessione e la fissa (pinning) per hostname. Verifica di nuovo questa impronta fissata durante l'accesso, nei rinnovi silenziosi della sessione e nel recupero delle impostazioni gestite, mentre le richieste di inferenza usano la validazione TLS standard senza il pinning. Le richieste instradate attraverso un proxy HTTPS saltano la verifica del pinning, quindi aggiungi l'host del gateway a `NO_PROXY` per mantenerle dirette.268La CLI calcola l'impronta del certificato TLS foglia del gateway alla prima connessione e la fissa (pinning) per hostname. Verifica di nuovo questa impronta fissata durante l'accesso, nei rinnovi silenziosi della sessione e nel recupero delle impostazioni gestite, mentre le richieste di inferenza usano la validazione TLS standard senza il pinning. Le richieste instradate attraverso un proxy HTTPS saltano la verifica del pinning, quindi aggiungi l'host del gateway a `NO_PROXY` per mantenerle dirette.

269 269 


287 Impostare l'URL del gateway287 Impostare l'URL del gateway

288</h3>288</h3>

289 289 

290Tre chiavi vanno nel [file delle impostazioni gestite](/docs/it/managed-settings#delivery-mechanisms) specifico per ogni sistema operativo che distribuisci tramite MDM o direttamente su disco. `forceLoginMethod` e `forceLoginGatewayUrl` aprono `/login` direttamente sulla schermata **Cloud gateway** con l'URL già compilato, e `parentSettingsBehavior: "merge"` permette a Claude Desktop di fornire l'allowlist di uscita del gateway alle sessioni di Claude Code che avvia, come spiegato in [Fornire la policy alle sessioni di Claude Desktop](#deliver-policy-to-claude-desktop-sessions):290Tre chiavi vanno nel [file delle impostazioni gestite](/docs/it/managed-settings#delivery-mechanisms) specifico per ogni sistema operativo che distribuisci tramite MDM o direttamente su disco. Per una macchina senza impostazioni gestite, consulta invece [Impostare l'URL del gateway nelle impostazioni utente](#set-the-gateway-url-in-user-settings). `forceLoginMethod` e `forceLoginGatewayUrl` aprono `/login` direttamente sulla schermata **Cloud gateway** con l'URL già compilato, e `parentSettingsBehavior: "merge"` permette a Claude Desktop di fornire l'allowlist di uscita del gateway alle sessioni di Claude Code che avvia, come spiegato in [Fornire la policy alle sessioni di Claude Desktop](#deliver-policy-to-claude-desktop-sessions):

291 291 

292```json theme={null}292```json theme={null}

293{293{


299 299 

300Lo sviluppatore preme Invio per connettersi. Il [prompt dell'impronta TLS alla prima connessione](#connect-developers) appare comunque. Una volta che il file è presente su una macchina, uno sviluppatore che non ha completato l'accesso al gateway vede uno dei messaggi descritti in [Administrator policy requires a Cloud gateway sign-in](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Gli sviluppatori che selezionano un provider cloud tramite una variabile d'ambiente come `CLAUDE_CODE_USE_BEDROCK` non hanno bisogno dell'accesso al gateway.300Lo sviluppatore preme Invio per connettersi. Il [prompt dell'impronta TLS alla prima connessione](#connect-developers) appare comunque. Una volta che il file è presente su una macchina, uno sviluppatore che non ha completato l'accesso al gateway vede uno dei messaggi descritti in [Administrator policy requires a Cloud gateway sign-in](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Gli sviluppatori che selezionano un provider cloud tramite una variabile d'ambiente come `CLAUDE_CODE_USE_BEDROCK` non hanno bisogno dell'accesso al gateway.

301 301 

302Uno sviluppatore non può configurarlo manualmente. Il selettore di accesso non ha un'opzione gateway, e `forceLoginGatewayUrl` viene ignorato nei file di impostazioni dello sviluppatore. `forceLoginMethod` da solo, senza un URL, lascia lo sviluppatore su un messaggio "Contact your IT administrator". Le chiavi di accesso vanno nel file che distribuisci alle macchine, non nel blocco `managed.policies[].cli` del gateway, che raggiunge solo i client già connessi.302Il selettore di accesso non ha un'opzione gateway, e nelle impostazioni gestite `forceLoginMethod` da solo, senza un URL, lascia lo sviluppatore su un messaggio "Contact your IT administrator". Le chiavi di accesso vanno nel file che distribuisci alle macchine, non nel blocco `managed.policies[].cli` del gateway, che raggiunge solo i client già connessi.

303 

304<h4 id="set-the-gateway-url-in-user-settings">

305 Impostare l'URL del gateway nelle impostazioni utente

306</h4>

307 

308Sulle macchine senza impostazioni gestite, chiedi a ogni sviluppatore di aggiungere `forceLoginMethod` e `forceLoginGatewayUrl` al proprio file di impostazioni utente, `~/.claude/settings.json`. Ciò richiede Claude Code v2.1.295 o successivo sulla macchina dello sviluppatore. Questo esempio indica un gateway su `claude-gateway.internal.example.com`:

309 

310```json theme={null}

311{

312 "forceLoginMethod": "gateway",

313 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

314}

315```

316 

317Quando lo sviluppatore esegue `/login` nel prompt di Claude Code, la schermata **Cloud gateway** si apre su quell'indirizzo e lo sviluppatore preme Invio per connettersi. Il [prompt dell'impronta TLS alla prima connessione](#connect-developers) appare comunque. Alle chiavi impostate in questo modo si applicano questi limiti:

318 

319* **Solo impostazioni utente**: Claude Code legge le due chiavi da `~/.claude/settings.json`, non dal `.claude/settings.json` o dal `.claude/settings.local.json` di un progetto.

320* **Le impostazioni gestite le disattivano**: una volta che le impostazioni di un amministratore raggiungono la macchina tramite un file di impostazioni gestite, un plist macOS o una policy HKLM di Windows, oppure un [policy helper](/docs/it/settings-reference#policyhelper), Claude Code ignora un gateway indicato nelle impostazioni utente.

303 321 

304<h3 id="allow-a-gateway-on-public-address-space-you-own">322<h3 id="allow-a-gateway-on-public-address-space-you-own">

305 Consentire un gateway su uno spazio di indirizzi pubblico di tua proprietà323 Consentire un gateway su uno spazio di indirizzi pubblico di tua proprietà

Details

981 * **Chiavi miste**: un file che contiene sia `code` sia `cli`, o la sua grafia precedente `settings`, blocca il gateway all'avvio. Metti ogni blocco sotto un'unica chiave, in un'unica modifica.981 * **Chiavi miste**: un file che contiene sia `code` sia `cli`, o la sua grafia precedente `settings`, blocca il gateway all'avvio. Metti ogni blocco sotto un'unica chiave, in un'unica modifica.

982</Warning>982</Warning>

983 983 

984Le impostazioni di Claude Code di una policy, come una regola che nega la lettura dei file `.env`, vanno in un blocco sotto la chiave `cli` o `code`. Entrambe le chiavi accettano lo stesso contenuto. La chiave determina dove vengono applicate le impostazioni:984Le impostazioni di Claude Code di una policy, come una regola che nega la lettura dei file `.env`, vanno in un blocco sotto la chiave `cli` o `code`. `code` è la chiave consigliata e `cli` è la chiave legacy. Entrambe le chiavi accettano lo stesso contenuto. La chiave decide dove vengono applicate le impostazioni:

985 985 

986* **`cli`**: il terminale, le estensioni VS Code e JetBrains e l'Agent SDK. Con `cli`, la scheda Code di Claude Desktop riceve le [impostazioni derivate](#claude-desktop-overlay), quindi una regola con ambito come `Read(./.env)` non blocca un utente lì.986* **`cli`**: il terminale, le estensioni VS Code e JetBrains e l'Agent SDK. Con `cli`, la scheda Code di Claude Desktop riceve le [impostazioni derivate](#claude-desktop-overlay), quindi una regola con ambito come `Read(./.env)` non blocca un utente lì.

987* **`code`**: gli stessi ambiti, e può essere coperta anche la scheda Code di Claude Desktop.987* **`code`**: gli stessi ambiti, e può essere coperta anche la scheda Code di Claude Desktop.

988 988 

989La scelta riguarda se queste impostazioni debbano coprire anche la scheda Code. In caso contrario, non modificare nulla. Un file che usa `cli` funziona come prima, e un gateway che trova `cli` in una policy con una chiave [`desktop`](#claude-desktop-overlay) emette un avviso all'avvio e si avvia comunque. Per coprire la scheda Code, passa a `code`, la chiave consigliata.989Un file che usa `cli` funziona come prima, e un gateway che trova `cli` in una policy con una chiave [`desktop`](#claude-desktop-overlay) avvisa all'avvio e si avvia comunque. Passa a `code` in modo che le impostazioni possano coprire anche la scheda Code.

990 990 

991Prima di passare, leggi [Applicare le impostazioni `code` nella scheda Code](#apply-code-settings-in-the-code-tab). La policy ha bisogno di una chiave `desktop` e le macchine degli utenti devono essere configurate prima che le impostazioni si applichino lì, e la ricerca web si disattiva in Claude Desktop.991Prima di passare, leggi [Applicare le impostazioni `code` nella scheda Code](#apply-code-settings-in-the-code-tab). La policy ha bisogno di una chiave `desktop` e le macchine degli utenti devono essere configurate prima che le impostazioni si applichino lì, e la ricerca web si disattiva in Claude Desktop.

992 992 


1713 1713 

1714Per Claude Desktop, imposta la chiave `bootstrapUrl` nella [configurazione gestita](https://claude.com/docs/third-party/claude-desktop/configuration) di Claude Desktop su `<listen.public_url>/user/bootstrap`. Il flusso di accesso e la policy per gruppo corrispondono quindi a quelli della CLI una volta che una policy si attiva lato server con una chiave `desktop`; senza l'opt-in, `/user/bootstrap` restituisce 404. Consulta [Claude Desktop overlay](#claude-desktop-overlay) per la metà lato server.1714Per Claude Desktop, imposta la chiave `bootstrapUrl` nella [configurazione gestita](https://claude.com/docs/third-party/claude-desktop/configuration) di Claude Desktop su `<listen.public_url>/user/bootstrap`. Il flusso di accesso e la policy per gruppo corrispondono quindi a quelli della CLI una volta che una policy si attiva lato server con una chiave `desktop`; senza l'opt-in, `/user/bootstrap` restituisce 404. Consulta [Claude Desktop overlay](#claude-desktop-overlay) per la metà lato server.

1715 1715 

1716Claude Code rispetta [`forceLoginGatewayUrl`](/docs/it/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/it/settings-reference#gatewayinternalnetworks) e il valore `"gateway"` di [`forceLoginMethod`](/docs/it/settings-reference#forceloginmethod) solo da una fonte gestita sulla macchina: `managed-settings.json`, il plist macOS o il registro HKLM di Windows, oppure un policy helper. Impostarli nel `~/.claude/settings.json` personale di uno sviluppatore o nel payload del gateway non configura l'accesso tramite gateway.1716Claude Code rispetta [`forceLoginGatewayUrl`](/docs/it/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/it/settings-reference#gatewayinternalnetworks) e il valore `"gateway"` di [`forceLoginMethod`](/docs/it/settings-reference#forceloginmethod) da una fonte gestita sulla macchina: `managed-settings.json`, il plist macOS o il registro HKLM di Windows, oppure un policy helper. Impostarli nel payload del gateway non configura l'accesso tramite gateway. Per il `~/.claude/settings.json` personale di uno sviluppatore, consulta [Impostare l'URL del gateway nelle impostazioni utente](/docs/it/claude-apps-gateway#set-the-gateway-url-in-user-settings).

1717 1717 

1718Lascia `forceLoginMethod` e `forceLoginOrgUUID` fuori dal payload. Claude Code legge comunque entrambe le chiavi dal payload per il controllo delle credenziali all'avvio, quindi uno sviluppatore che mantiene sulla macchina una credenziale emessa da Anthropic incorre nell'uscita all'avvio descritta in [La policy dell'amministratore richiede un accesso tramite Cloud gateway](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in) anche dopo aver effettuato l'accesso.1718Lascia `forceLoginMethod` e `forceLoginOrgUUID` fuori dal payload. Claude Code legge comunque entrambe le chiavi dal payload per il controllo delle credenziali all'avvio, quindi uno sviluppatore che mantiene sulla macchina una credenziale emessa da Anthropic incorre nell'uscita all'avvio descritta in [La policy dell'amministratore richiede un accesso tramite Cloud gateway](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in) anche dopo aver effettuato l'accesso.

1719 1719 

Details

135 Invia l'URL del gateway alle macchine degli sviluppatori135 Invia l'URL del gateway alle macchine degli sviluppatori

136</h3>136</h3>

137 137 

138Una volta che il gateway è in servizio, invia `forceLoginMethod`, `forceLoginGatewayUrl` e `parentSettingsBehavior: "merge"` a ogni macchina dello sviluppatore tramite impostazioni gestite, tramite MDM o scrivendo direttamente il `managed-settings.json` per OS. Senza questo, `/login` mostra il selettore di account standard senza opzione gateway.138Una volta che il gateway è in servizio, invia `forceLoginMethod`, `forceLoginGatewayUrl` e `parentSettingsBehavior: "merge"` a ogni macchina dello sviluppatore tramite impostazioni gestite, tramite MDM o scrivendo direttamente il `managed-settings.json` per OS.

139 139 

140Una volta che distribuisci le chiavi, Claude Code smette di utilizzare una chiave API rimasta o un accesso a claude.ai sulla macchina, quindi pianifica il push insieme alle tue istruzioni di accesso. [La policy dell'amministratore richiede un accesso al gateway Cloud](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in) descrive i messaggi che gli sviluppatori vedono.140Una volta che distribuisci le chiavi, Claude Code smette di utilizzare una chiave API rimasta o un accesso a claude.ai sulla macchina, quindi pianifica il push insieme alle tue istruzioni di accesso. [La policy dell'amministratore richiede un accesso al gateway Cloud](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in) descrive i messaggi che gli sviluppatori vedono.

141 141 

Details

277 277 

278I thread vengono eseguiti in [auto mode](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) quando il modello del thread lo supporta, quindi la maggior parte delle chiamate di strumento vengono eseguite senza chiederti. Quando un thread ha bisogno della tua approvazione, il prompt è dentro quel thread e il thread aspetta finché non rispondi lì. Dire a Claude nella conversazione del progetto di procedere non lo raggiunge.278I thread vengono eseguiti in [auto mode](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) quando il modello del thread lo supporta, quindi la maggior parte delle chiamate di strumento vengono eseguite senza chiederti. Quando un thread ha bisogno della tua approvazione, il prompt è dentro quel thread e il thread aspetta finché non rispondi lì. Dire a Claude nella conversazione del progetto di procedere non lo raggiunge.

279 279 

280Ogni approvazione copre quel prompt, o il resto di quel thread se scegli l'opzione più ampia. Per consentire a ogni thread di eseguire determinati comandi senza chiedere, o per bloccarne alcuni, aggiungi [regole di autorizzazione](/docs/it/permissions) al `.claude/settings.json` del repository. I cloud thread le applicano solo in un progetto con un repository; vedi [Cosa i thread raccolgono dai tuoi repository](#what-threads-pick-up-from-your-repositories). In un progetto con diversi repository, nessuna regola di autorizzazione del repository raggiunge un cloud thread, quindi fai affidamento su auto mode e sulle approvazioni che dai dentro ogni thread.280Ogni approvazione copre quella richiesta, o il resto di quel thread se scegli l'opzione più ampia.

281 

282Per consentire a ogni thread di eseguire determinati comandi senza chiedere, o per bloccarne alcuni, aggiungi [regole di permesso](/docs/it/permissions) al `.claude/settings.json` del repository. Verifica che i cloud thread del tuo progetto le applichino:

283 

284* **Un repository**: i cloud thread applicano le regole. Vedi [Cosa i thread raccolgono dai tuoi repository](#what-threads-pick-up-from-your-repositories).

285* **Diversi repository, ambiente ospitato da Anthropic**: nessuna regola di permesso di alcun repository raggiunge un cloud thread, quindi fai affidamento sulla modalità auto e sulle approvazioni che dai dentro ogni thread.

286* **Diversi repository, ambiente self-hosted**: vedi [quali impostazioni del repository si applicano](/docs/it/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

281 287 

282<h3 id="run-a-thread-on-your-own-computer">288<h3 id="run-a-thread-on-your-own-computer">

283 Esegui un thread sul tuo computer289 Esegui un thread sul tuo computer


381 Cosa i thread prendono dai tuoi repository387 Cosa i thread prendono dai tuoi repository

382</h3>388</h3>

383 389 

384Ogni thread cloud clona ogni repository nel progetto e carica `CLAUDE.md` e skill da tutti loro. Le regole di permesso, gli hook e `env` provengono solo dal `.claude/settings.json` nella directory in cui il thread inizia: all'interno del repository quando il progetto ne ha uno, e sopra i cloni quando ne ha diversi, dove il file di nessun repository viene letto per loro.390Ogni thread cloud clona ogni repository nel progetto e carica `CLAUDE.md` e skill da tutti loro. Le regole di permesso, gli hook e `env` provengono solo dal `.claude/settings.json` nella directory in cui il thread inizia.

385 391 

386| In ogni repository | Un repository | Diversi repository |392| In ogni repository | Un repository | Diversi repository |

387| :- | :- | :- |393| :- | :- | :- |

388| `CLAUDE.md` | Caricato quando il thread inizia | Caricato da ogni repository quando il thread inizia |394| `CLAUDE.md` | Caricato quando il thread inizia | Caricato da ogni repository quando il thread inizia |

389| Skill, agenti e comandi in `.claude/` | Caricati | Caricati da ogni repository |395| Skill, agenti e comandi in `.claude/` | Caricati | Caricati da ogni repository |

390| Plugin abilitati in `.claude/settings.json` | Non caricati. Aggiungi invece il plugin in **Project settings > Plugins** | Non caricati. Aggiungi invece il plugin in **Project settings > Plugins** |396| Plugin abilitati in `.claude/settings.json` | Non caricati. Aggiungi invece il plugin in **Project settings > Plugins** | Non caricati. Aggiungi invece il plugin in **Project settings > Plugins** |

391| Regole di permesso, hook e `env` definiti in `.claude/settings.json` | Si applicano al thread, tranne le chiavi `env` che [nessuna sessione cloud onora](/docs/it/cloud-environments#what-carries-over-from-your-setup) | Non si applicano |397| Regole di permesso, hook e `env` definiti in `.claude/settings.json` | Si applicano al thread, tranne le chiavi `env` che [nessuna sessione cloud onora](/docs/it/cloud-environments#what-carries-over-from-your-setup) | Non si applicano in un ambiente ospitato da Anthropic. Per un ambiente self-hosted, vedi [quali impostazioni del repository si applicano](/docs/it/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

392 398 

393In un progetto con diversi repository, ogni clone è collegato al thread come una [directory aggiuntiva](/docs/it/memory#load-from-additional-directories) con il caricamento di `CLAUDE.md` attivato, motivo per cui il `CLAUDE.md` e le skill di ogni repository si caricano all'avvio anche se il thread inizia sopra di loro. In un tale progetto, inserisci le regole permanenti nelle istruzioni del progetto e fornisci ai thread le variabili d'ambiente attraverso l'[ambiente cloud](#choose-an-environment-for-threads).399In un progetto con diversi repository, inserisci le regole permanenti nelle istruzioni del progetto e fornisci ai thread le variabili d'ambiente attraverso l'[ambiente cloud](#choose-an-environment-for-threads).

394 400 

395<h3 id="choose-an-environment-for-threads">401<h3 id="choose-an-environment-for-threads">

396 Scegli un ambiente per i thread402 Scegli un ambiente per i thread


406 412 

407I thread cloud non hanno le skill, i server MCP, i plugin e gli strumenti installati solo sulla tua macchina. Un thread che Claude esegue sulla tua macchina attraverso [Remote Control](/docs/it/remote-control) utilizza ciò che è installato lì. Per rendere ciascuno di questi disponibile ai thread cloud:413I thread cloud non hanno le skill, i server MCP, i plugin e gli strumenti installati solo sulla tua macchina. Un thread che Claude esegue sulla tua macchina attraverso [Remote Control](/docs/it/remote-control) utilizza ciò che è installato lì. Per rendere ciascuno di questi disponibile ai thread cloud:

408 414 

409* Skill, subagent e comandi: eseguine il commit in un repository che hai aggiunto al progetto, ad esempio una skill in `.claude/skills/<skill-name>/SKILL.md`. Ogni thread cloud clona ogni repository nel progetto e carica `.claude/skills/`, `.claude/agents/` e `.claude/commands/` da ciascuno di loro, quindi una skill sottoposta a commit in un repository è disponibile in ogni thread cloud. I thread cloud caricano anche le skill che abiliti per il tuo account claude.ai.415* Skill, subagent e comandi: eseguine il commit in un repository che hai aggiunto al progetto, ad esempio una skill in `.claude/skills/<skill-name>/SKILL.md`. Ogni thread cloud clona ogni repository nel progetto e carica `.claude/skills/`, `.claude/agents/` e `.claude/commands/` da ciascuno di loro, quindi una skill sottoposta a commit in un repository è disponibile in ogni thread cloud. I thread cloud caricano anche le [skill che abiliti per il tuo account claude.ai](/docs/it/skills#skills-in-cowork-and-cloud-sessions).

410* Plugin: aggiungili in **Project settings > Plugins**; si caricano in ogni nuovo thread cloud. I plugin che un repository dichiara nel suo `.claude/settings.json` [non si caricano nei thread cloud](/docs/it/cloud-environments#what-carries-over-from-your-setup).416* Plugin: aggiungili in **Project settings > Plugins**; si caricano in ogni nuovo thread cloud. I plugin che un repository dichiara nel suo `.claude/settings.json` [non si caricano nei thread cloud](/docs/it/cloud-environments#what-carries-over-from-your-setup).

411* Server MCP: i thread cloud ottengono i loro strumenti MCP dai connettori sul tuo account claude.ai, che sono server MCP che colleghi una volta in [claude.ai/customize/connectors](https://claude.ai/customize/connectors) o attraverso il link **Manage connectors** in **Project settings > Environment**. Ogni thread cloud può utilizzarli tutti senza alcuna configurazione per progetto. La conversazione del progetto stessa non ha connettori, quindi invia il lavoro che ne richiede uno come compito per un thread cloud. In un progetto con un repository, i thread cloud caricano anche i server MCP dal [`.mcp.json`](/docs/it/cloud-environments#what-carries-over-from-your-setup) di quel repository. [How connectors reach Claude Code](/docs/it/mcp#how-connectors-reach-claude-code) elenca le regole per le sessioni cloud e le impostazioni che disattivano i connettori.417* Server MCP: i thread cloud ottengono i loro strumenti MCP dai connettori sul tuo account claude.ai, che sono server MCP che colleghi una volta in [claude.ai/customize/connectors](https://claude.ai/customize/connectors) o attraverso il link **Manage connectors** in **Project settings > Environment**. Ogni thread cloud può utilizzarli tutti senza alcuna configurazione per progetto. La conversazione del progetto stessa non ha connettori, quindi invia il lavoro che ne richiede uno come compito per un thread cloud. In un progetto con un repository, i thread cloud caricano anche i server MCP dal [`.mcp.json`](/docs/it/cloud-environments#what-carries-over-from-your-setup) di quel repository. [How connectors reach Claude Code](/docs/it/mcp#how-connectors-reach-claude-code) elenca le regole per le sessioni cloud e le impostazioni che disattivano i connettori.

412* Strumenti da riga di comando e pacchetti: installali nello [script di setup](/docs/it/cloud-environments#setup-scripts) dell'ambiente.418* Strumenti da riga di comando e pacchetti: installali nello [script di setup](/docs/it/cloud-environments#setup-scripts) dell'ambiente.

Details

28| `claude auth logout` | Esci dal tuo account Anthropic | `claude auth logout` |28| `claude auth logout` | Esci dal tuo account Anthropic | `claude auth logout` |

29| `claude auth status` | Mostra lo stato di autenticazione come JSON. Usa `--text` per output leggibile dall'uomo. Esce con codice 0 se connesso, 1 se no. Il JSON include un campo `configDirectory` che nomina la [directory di configurazione](/docs/it/claude-directory) che la CLI utilizza. Il campo richiede Claude Code v2.1.268 o successivo. Il campo `authMethod` del JSON è uno tra `none`, `claude.ai`, `oauth_token`, `api_key`, `api_key_helper` o `third_party` | `claude auth status` |29| `claude auth status` | Mostra lo stato di autenticazione come JSON. Usa `--text` per output leggibile dall'uomo. Esce con codice 0 se connesso, 1 se no. Il JSON include un campo `configDirectory` che nomina la [directory di configurazione](/docs/it/claude-directory) che la CLI utilizza. Il campo richiede Claude Code v2.1.268 o successivo. Il campo `authMethod` del JSON è uno tra `none`, `claude.ai`, `oauth_token`, `api_key`, `api_key_helper` o `third_party` | `claude auth status` |

30| `claude agents` | Apri la [visualizzazione agente](/docs/it/agent-view) per monitorare e inviare sessioni parallele in background. Usa `--cwd <path>` per mostrare solo le sessioni avviate in quella directory, oppure `--json` per stampare le sessioni attive come un array JSON per gli script (`--json --all` include anche le sessioni in background completate). Passa `--permission-mode`, `--model`, `--effort` o `--agent` per impostare i [valori predefiniti per le sessioni inviate](/docs/it/agent-view#permission-mode-model-and-effort). Accetta `--settings`, `--add-dir`, `--plugin-dir` e `--mcp-config` come il comando `claude` di livello superiore. L'apertura della visualizzazione agente richiede un terminale interattivo | `claude agents --json` |30| `claude agents` | Apri la [visualizzazione agente](/docs/it/agent-view) per monitorare e inviare sessioni parallele in background. Usa `--cwd <path>` per mostrare solo le sessioni avviate in quella directory, oppure `--json` per stampare le sessioni attive come un array JSON per gli script (`--json --all` include anche le sessioni in background completate). Passa `--permission-mode`, `--model`, `--effort` o `--agent` per impostare i [valori predefiniti per le sessioni inviate](/docs/it/agent-view#permission-mode-model-and-effort). Accetta `--settings`, `--add-dir`, `--plugin-dir` e `--mcp-config` come il comando `claude` di livello superiore. L'apertura della visualizzazione agente richiede un terminale interattivo | `claude agents --json` |

31| `claude attach <id\|name>` | Collegati a una [sessione in background](/docs/it/agent-view#manage-sessions-from-the-shell) in questo terminale. Passare parte del nome di una sessione al posto dell'ID richiede Claude Code v2.1.290 o successivo | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | Collegati a una [sessione in background](/docs/it/agent-view#manage-sessions-from-the-shell) in questo terminale. Passare parte del nome di una sessione in esecuzione al posto dell'ID richiede Claude Code v2.1.290 o successivo | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Stampa le regole del classificatore della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) integrate come JSON. Usa `claude auto-mode config` per visualizzare la tua configurazione effettiva con le impostazioni applicate. `--label <prefix>` stampa solo le regole la cui etichetta inizia con quel prefisso, con corrispondenza case-insensitive. Richiede Claude Code v2.1.208 o successivo | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Stampa le regole del classificatore della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) integrate come JSON. Usa `claude auto-mode config` per visualizzare la tua configurazione effettiva con le impostazioni applicate. `--label <prefix>` stampa solo le regole la cui etichetta inizia con quel prefisso, con corrispondenza case-insensitive. Richiede Claude Code v2.1.208 o successivo | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Ripristina la configurazione predefinita della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) rimuovendo la sezione `autoMode` dal file di impostazioni dell'utente. Richiede conferma prima di scrivere; passa `-y`/`--yes` per saltare il prompt. Le regole dalle [impostazioni gestite](/docs/it/server-managed-settings) o dal flag `--settings` si applicano comunque. Richiede Claude Code v2.1.212 o successivo. Vedi [Ispeziona i valori predefiniti e la tua configurazione effettiva](/docs/it/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Ripristina la configurazione predefinita della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) rimuovendo la sezione `autoMode` dal file di impostazioni dell'utente. Richiede conferma prima di scrivere; passa `-y`/`--yes` per saltare il prompt. Le regole dalle [impostazioni gestite](/docs/it/server-managed-settings) o dal flag `--settings` si applicano comunque. Richiede Claude Code v2.1.212 o successivo. Vedi [Ispeziona i valori predefiniti e la tua configurazione effettiva](/docs/it/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | Segui il file di log del [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background, `~/.claude/daemon.log`, stampando le nuove righe man mano che arrivano finché non premi `Ctrl+C` | `claude daemon logs` |34| `claude daemon logs` | Segui il file di log del [supervisore](/docs/it/agent-view#the-supervisor-process) della sessione in background, `~/.claude/daemon.log`, stampando le nuove righe man mano che arrivano finché non premi `Ctrl+C` | `claude daemon logs` |


68| `--agent` | Specifica un agente per la sessione corrente (sostituisce l'impostazione `agent`) | `claude --agent my-custom-agent` |68| `--agent` | Specifica un agente per la sessione corrente (sostituisce l'impostazione `agent`) | `claude --agent my-custom-agent` |

69| `--agents` | Definisci subagenti personalizzati dinamicamente tramite JSON. Accetta i [campi elencati per subagenti definiti da CLI](/docs/it/sub-agents#choose-the-subagent-scope). Con `--print`, il valore può invece essere il percorso a un file JSON che contiene l'oggetto; la forma di file richiede Claude Code v2.1.281 o successivo. Claude Code convalida il valore all'avvio e esce con un valore non valido; vedi [`Invalid --agents configuration`](/docs/it/errors#invalid-agents-configuration) per il messaggio e per i flag e la variabile di ambiente che saltano la convalida. La convalida richiede Claude Code v2.1.242 o successivo | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |69| `--agents` | Definisci subagenti personalizzati dinamicamente tramite JSON. Accetta i [campi elencati per subagenti definiti da CLI](/docs/it/sub-agents#choose-the-subagent-scope). Con `--print`, il valore può invece essere il percorso a un file JSON che contiene l'oggetto; la forma di file richiede Claude Code v2.1.281 o successivo. Claude Code convalida il valore all'avvio e esce con un valore non valido; vedi [`Invalid --agents configuration`](/docs/it/errors#invalid-agents-configuration) per il messaggio e per i flag e la variabile di ambiente che saltano la convalida. La convalida richiede Claude Code v2.1.242 o successivo | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

70| `--allow-dangerously-skip-permissions` | Aggiungi `bypassPermissions` al ciclo della modalità `Shift+Tab` senza iniziare in essa. Ti consente di iniziare in una modalità diversa come `plan` e passare a `bypassPermissions` in seguito. Vedi [modalità di permesso](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |70| `--allow-dangerously-skip-permissions` | Aggiungi `bypassPermissions` al ciclo della modalità `Shift+Tab` senza iniziare in essa. Ti consente di iniziare in una modalità diversa come `plan` e passare a `bypassPermissions` in seguito. Vedi [modalità di permesso](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

71| `--allowedTools`, `--allowed-tools` | Strumenti che si eseguono senza richiedere il permesso. Vedi [sintassi della regola di permesso](/docs/it/settings-reference#permission-rule-syntax) per la corrispondenza dei pattern. Per limitare quali strumenti sono disponibili, usa `--tools` invece. Se nomini uno degli [strumenti di tracciamento delle attività](/docs/it/tools-reference#task-tool-availability) qui, Claude Code opta anche la sessione in | `"Bash(git log *)" "Bash(git diff *)" "Read"` |71| `--allowedTools`, `--allowed-tools` | Strumenti che si eseguono senza richiedere il permesso, ad eccezione delle letture da [percorsi di rete](/docs/it/permissions#network-paths). Vedi [sintassi della regola di permesso](/docs/it/settings-reference#permission-rule-syntax) per la corrispondenza dei pattern. Per limitare quali strumenti sono disponibili, usa `--tools` invece. Se nomini uno degli [strumenti di tracciamento delle attività](/docs/it/tools-reference#task-tool-availability) qui, Claude Code opta anche la sessione in | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

72| `--append-subagent-system-prompt` | Aggiungi testo personalizzato alla fine del prompt di sistema di ogni [subagente](/docs/it/sub-agents), inclusi i subagenti annidati, a parte un [subagente biforcato](/docs/it/sub-agents#fork-the-current-conversation), che riutilizza il prompt della conversazione. Si applica solo in modalità non interattiva con `-p`. Richiede Claude Code v2.1.205 o successivo | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |72| `--append-subagent-system-prompt` | Aggiungi testo personalizzato alla fine del prompt di sistema di ogni [subagente](/docs/it/sub-agents), inclusi i subagenti annidati, a parte un [subagente biforcato](/docs/it/sub-agents#fork-the-current-conversation), che riutilizza il prompt della conversazione. Si applica solo in modalità non interattiva con `-p`. Richiede Claude Code v2.1.205 o successivo | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |

73| `--append-subagent-system-prompt-file` | Carica il testo da un file e aggiungilo ai prompt di sistema dei [subagenti](/docs/it/sub-agents). Un'alternativa a `--append-subagent-system-prompt` per il testo troppo lungo da passare sulla riga di comando. I due flag non possono essere combinati. Si applica solo in modalità non interattiva con `-p`. Richiede Claude Code v2.1.261 o successivo | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |73| `--append-subagent-system-prompt-file` | Carica il testo da un file e aggiungilo ai prompt di sistema dei [subagenti](/docs/it/sub-agents). Un'alternativa a `--append-subagent-system-prompt` per il testo troppo lungo da passare sulla riga di comando. I due flag non possono essere combinati. Si applica solo in modalità non interattiva con `-p`. Richiede Claude Code v2.1.261 o successivo | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |

74| `--append-system-prompt` | Aggiungi testo personalizzato alla fine del prompt di sistema predefinito | `claude --append-system-prompt "Always use TypeScript"` |74| `--append-system-prompt` | Aggiungi testo personalizzato alla fine del prompt di sistema predefinito | `claude --append-system-prompt "Always use TypeScript"` |


81| `--channels` | (Anteprima di ricerca) Server MCP le cui notifiche di [canale](/docs/it/channels) Claude dovrebbe ascoltare in questa sessione. Elenco separato da spazi di voci `plugin:<name>@<marketplace>`. Richiede l'autenticazione Anthropic tramite claude.ai o una chiave API Console | `claude --channels plugin:my-notifier@my-marketplace` |81| `--channels` | (Anteprima di ricerca) Server MCP le cui notifiche di [canale](/docs/it/channels) Claude dovrebbe ascoltare in questa sessione. Elenco separato da spazi di voci `plugin:<name>@<marketplace>`. Richiede l'autenticazione Anthropic tramite claude.ai o una chiave API Console | `claude --channels plugin:my-notifier@my-marketplace` |

82| `--chrome` | Abilita l'[integrazione del browser Chrome](/docs/it/chrome) per l'automazione web e i test | `claude --chrome` |82| `--chrome` | Abilita l'[integrazione del browser Chrome](/docs/it/chrome) per l'automazione web e i test | `claude --chrome` |

83| `--cloud` | Con una descrizione di attività, crea una nuova [sessione cloud](/docs/it/claude-code-on-the-web). Con un ID di sessione (`session_...` o `cse_...`) o un URL claude.ai/code, accoda un messaggio in quella sessione esistente invece, con `-p`. Vedi [invia un messaggio di follow-up](/docs/it/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |83| `--cloud` | Con una descrizione di attività, crea una nuova [sessione cloud](/docs/it/claude-code-on-the-web). Con un ID di sessione (`session_...` o `cse_...`) o un URL claude.ai/code, accoda un messaggio in quella sessione esistente invece, con `-p`. Vedi [invia un messaggio di follow-up](/docs/it/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |

84| `--continue`, `-c` | Carica la conversazione più recente nella directory corrente, inclusa una [sessione in background che è terminata](/docs/it/sessions#resume-a-session); l'apertura di sessioni in background terminate richiede Claude Code v2.1.257 o successivo. Salta le sessioni create con `claude -p` o l'Agent SDK, e le sessioni il cui primo prompt era `/loop`. `claude -p --continue` include sessioni `-p`, SDK e `/loop`. Include le sessioni che hanno aggiunto questa directory con `/add-dir` | `claude --continue` |84| `--continue`, `-c` | Carica la conversazione più recente nella directory corrente, inclusa una [sessione in background che è terminata](/docs/it/sessions#where-the-session-picker-looks); l'apertura di sessioni in background terminate richiede Claude Code v2.1.257 o successivo. Salta le sessioni create con `claude -p` o l'Agent SDK, e le sessioni il cui primo prompt era `/loop`. `claude -p --continue` include sessioni `-p`, SDK e `/loop`. Include le sessioni che hanno aggiunto questa directory con `/add-dir` | `claude --continue` |

85| `--dangerously-load-development-channels` | Abilita i [canali](/docs/it/channels-reference#test-during-the-research-preview) che non sono nell'allowlist approvata, per lo sviluppo locale. Accetta voci `plugin:<name>@<marketplace>` e `server:<name>`. Chiede una conferma, quindi ha effetto nelle sessioni interattive. Con `-p`, Claude Code ignora il flag | `claude --dangerously-load-development-channels server:webhook` |85| `--dangerously-load-development-channels` | Abilita i [canali](/docs/it/channels-reference#test-during-the-research-preview) che non sono nell'allowlist approvata, per lo sviluppo locale. Accetta voci `plugin:<name>@<marketplace>` e `server:<name>`. Chiede una conferma, quindi ha effetto nelle sessioni interattive. Con `-p`, Claude Code ignora il flag | `claude --dangerously-load-development-channels server:webhook` |

86| `--dangerously-skip-permissions` | Salta i prompt di permesso. Equivalente a `--permission-mode bypassPermissions`. Vedi [modalità di permesso](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) per quello che questo fa e non salta. Per le sessioni avviate con `--bg`, la modalità [persiste quando il supervisore riavvia la sessione](/docs/it/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |86| `--dangerously-skip-permissions` | Salta i prompt di permesso. Equivalente a `--permission-mode bypassPermissions`. Vedi [modalità di permesso](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) per quello che questo fa e non salta. Per le sessioni avviate con `--bg`, la modalità [persiste quando il supervisore riavvia la sessione](/docs/it/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

87| `--debug` | Abilita la modalità debug con filtro di categoria opzionale, come `--debug='mcp,startup'` o `--debug='!1p'`. Il filtro si lega solo nella forma `=`; un filtro separato da spazi abilita la modalità debug senza filtrare | `claude --debug='mcp,startup'` |87| `--debug` | Abilita la modalità debug con filtro di categoria opzionale, come `--debug='mcp,startup'` o `--debug='!1p'`. Il filtro si lega solo nella forma `=`; un filtro separato da spazi abilita la modalità debug senza filtrare | `claude --debug='mcp,startup'` |


108| `--maintenance` | Esegui gli [hook di Setup](/docs/it/hooks#setup) con il matcher `maintenance` prima della sessione (solo modalità print) | `claude -p --maintenance "query"` |108| `--maintenance` | Esegui gli [hook di Setup](/docs/it/hooks#setup) con il matcher `maintenance` prima della sessione (solo modalità print) | `claude -p --maintenance "query"` |

109| `--max-budget-usd` | Ferma l'esecuzione quando la spesa stimata per le chiamate API raggiunge questo importo (solo modalità print). Claude Code confronta il limite con la sua [stima dei costi lato client](/docs/it/agent-sdk/cost-tracking#estimates-not-billing), che può differire dalla tua fattura. La spesa dei [subagent](/docs/it/sub-agents) conta verso il limite. La spesa può superare il limite, quindi [lascia un margine](/docs/it/agent-sdk/agent-loop#budget-headroom). Quando torni a una conversazione con `--continue` o `--resume`, i totali [ripristinati da esecuzioni precedenti](/docs/it/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) non contano verso di esso. Una volta che la spesa raggiunge il limite, l'avvio di un altro subagent fallisce con `Budget limit reached`, e Claude Code ferma i subagent in background ancora in esecuzione; i comportamenti di applicazione del limite richiedono Claude Code v2.1.217 o successivo | `claude -p --max-budget-usd 5.00 "query"` |109| `--max-budget-usd` | Ferma l'esecuzione quando la spesa stimata per le chiamate API raggiunge questo importo (solo modalità print). Claude Code confronta il limite con la sua [stima dei costi lato client](/docs/it/agent-sdk/cost-tracking#estimates-not-billing), che può differire dalla tua fattura. La spesa dei [subagent](/docs/it/sub-agents) conta verso il limite. La spesa può superare il limite, quindi [lascia un margine](/docs/it/agent-sdk/agent-loop#budget-headroom). Quando torni a una conversazione con `--continue` o `--resume`, i totali [ripristinati da esecuzioni precedenti](/docs/it/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) non contano verso di esso. Una volta che la spesa raggiunge il limite, l'avvio di un altro subagent fallisce con `Budget limit reached`, e Claude Code ferma i subagent in background ancora in esecuzione; i comportamenti di applicazione del limite richiedono Claude Code v2.1.217 o successivo | `claude -p --max-budget-usd 5.00 "query"` |

110| `--max-turns` | Limita il numero di turni agentici (solo modalità print). Esce con un errore quando il limite viene raggiunto. Nessun limite per impostazione predefinita. Con `--input-format stream-json`, un messaggio ancora in coda quando il limite termina un turno rimane in coda e inizia un nuovo turno con il suo proprio limite | `claude -p --max-turns 3 "query"` |110| `--max-turns` | Limita il numero di turni agentici (solo modalità print). Esce con un errore quando il limite viene raggiunto. Nessun limite per impostazione predefinita. Con `--input-format stream-json`, un messaggio ancora in coda quando il limite termina un turno rimane in coda e inizia un nuovo turno con il suo proprio limite | `claude -p --max-turns 3 "query"` |

111| `--mcp-config` | Carica i server MCP da file JSON o stringhe (separati da spazi). Quando passi questo flag con `-p`, Claude Code attende che i server ancora in sospeso si connettano prima di eseguire il primo turno, fino al timeout di avvio [`MCP_TIMEOUT`](/docs/it/env-vars), 30 secondi per impostazione predefinita; un server con un [elenco di strumenti memorizzato nella cache](/docs/it/mcp#managing-your-servers) salta l'attesa e si connette al primo utilizzo. L'attesa richiede Claude Code v2.1.221 o successivo | `claude --mcp-config ./mcp.json` |111| `--mcp-config` | Carica i server MCP da file JSON o stringhe (separati da spazi). Quando passi questo flag con `-p`, Claude Code attende che i server ancora in sospeso si connettano prima di eseguire il primo turno, fino al timeout di avvio [`MCP_TIMEOUT`](/docs/it/env-vars), 30 secondi per impostazione predefinita; un server con un [elenco di strumenti memorizzato nella cache](/docs/it/mcp#managing-your-servers) salta l'attesa e si connette al primo utilizzo. In un [ambiente auto-ospitato](/docs/it/self-hosted-environments-configuration#connection-timing), si applica invece un'attesa più breve. L'attesa richiede Claude Code v2.1.221 o successivo | `claude --mcp-config ./mcp.json` |

112| `--model` | Imposta il modello per la sessione corrente con un [alias di modello](/docs/it/model-config#model-aliases) come `sonnet`, `opus`, `haiku`, o `fable`, o il nome completo di un modello. Sostituisce l'impostazione [`model`](/docs/it/settings-reference#model) e [`ANTHROPIC_MODEL`](/docs/it/model-config#environment-variables) | `claude --model claude-sonnet-5` |112| `--model` | Imposta il modello per la sessione corrente con un [alias di modello](/docs/it/model-config#model-aliases) come `sonnet`, `opus`, `haiku`, o `fable`, o il nome completo di un modello. Sostituisce l'impostazione [`model`](/docs/it/settings-reference#model) e [`ANTHROPIC_MODEL`](/docs/it/model-config#environment-variables) | `claude --model claude-sonnet-5` |

113| `--name`, `-n` | Imposta un nome visualizzato per la sessione, mostrato in `/resume` e nel titolo del terminale. Puoi riprendere una sessione denominata con `claude --resume <name>`. In una sessione interattiva, se un'altra sessione live su questa macchina utilizza già il nome, Claude Code applica [una variante di esso](/docs/it/sessions#name-your-sessions) invece. <br /><br />[`/rename`](/docs/it/commands) cambia il nome a metà sessione e lo mostra anche sulla barra del prompt | `claude -n "my-feature-work"` |113| `--name`, `-n` | Imposta un nome visualizzato per la sessione, mostrato in `/resume` e nel titolo del terminale. Puoi riprendere una sessione denominata con `claude --resume <name>`. <br /><br />[`/rename`](/docs/it/commands) cambia il nome a metà sessione e lo mostra anche sulla barra del prompt | `claude -n "my-feature-work"` |

114| `--no-chrome` | Disabilita l'[integrazione del browser Chrome](/docs/it/chrome) per questa sessione | `claude --no-chrome` |114| `--no-chrome` | Disabilita l'[integrazione del browser Chrome](/docs/it/chrome) per questa sessione | `claude --no-chrome` |

115| `--no-session-persistence` | Disabilita la persistenza della sessione in modo che le sessioni non vengono salvate su disco e non possono essere riprese. Solo modalità print. La variabile di ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/it/env-vars) fa lo stesso in qualsiasi modalità | `claude -p --no-session-persistence "query"` |115| `--no-session-persistence` | Disabilita la persistenza della sessione in modo che le sessioni non vengono salvate su disco e non possono essere riprese. Solo modalità print. La variabile di ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/it/env-vars) fa lo stesso in qualsiasi modalità | `claude -p --no-session-persistence "query"` |

116| `--output-format` | Specifica il formato di output per la modalità print (opzioni: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |116| `--output-format` | Specifica il formato di output per la modalità print (opzioni: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

Details

314| Plugin e marketplace dichiarati in `.claude/settings.json` del tuo repository | No | Una sessione cloud non installa i plugin che un repository attiva in [`enabledPlugins`](/docs/it/settings-reference#enabledplugins), inclusi quelli dei marketplace che elenca in [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) |314| Plugin e marketplace dichiarati in `.claude/settings.json` del tuo repository | No | Una sessione cloud non installa i plugin che un repository attiva in [`enabledPlugins`](/docs/it/settings-reference#enabledplugins), inclusi quelli dei marketplace che elenca in [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) |

315| Le [impostazioni gestite dal server](/docs/it/server-managed-settings) della tua organizzazione | Sì, tranne nelle sessioni di [Claude Tag](https://claude.com/docs/claude-tag/overview) | Recuperate dai server di Anthropic all'avvio della sessione. Consulta [Copertura delle superfici](/docs/it/model-config#surface-coverage) per sapere come viene applicato `availableModels` nelle sessioni cloud. Le impostazioni distribuite sul tuo dispositivo tramite MDM o file di impostazioni gestite non si applicano, perché la sessione viene eseguita su una VM gestita da Anthropic; in un [ambiente self-hosted](/docs/it/self-hosted-environments), le sessioni leggono anche il file di impostazioni gestite nell'immagine runner, secondo [come Claude Code combina le fonti gestite](/docs/it/managed-settings#how-claude-code-combines-managed-sources) |315| Le [impostazioni gestite dal server](/docs/it/server-managed-settings) della tua organizzazione | Sì, tranne nelle sessioni di [Claude Tag](https://claude.com/docs/claude-tag/overview) | Recuperate dai server di Anthropic all'avvio della sessione. Consulta [Copertura delle superfici](/docs/it/model-config#surface-coverage) per sapere come viene applicato `availableModels` nelle sessioni cloud. Le impostazioni distribuite sul tuo dispositivo tramite MDM o file di impostazioni gestite non si applicano, perché la sessione viene eseguita su una VM gestita da Anthropic; in un [ambiente self-hosted](/docs/it/self-hosted-environments), le sessioni leggono anche il file di impostazioni gestite nell'immagine runner, secondo [come Claude Code combina le fonti gestite](/docs/it/managed-settings#how-claude-code-combines-managed-sources) |

316| Il tuo `~/.claude/CLAUDE.md` utente | No | Si trova sulla tua macchina, non nel repository. Consulta [Aggiungere preferenze personali senza fare il commit nel repository](#add-personal-preferences-without-committing-to-the-repo) |316| Il tuo `~/.claude/CLAUDE.md` utente | No | Si trova sulla tua macchina, non nel repository. Consulta [Aggiungere preferenze personali senza fare il commit nel repository](#add-personal-preferences-without-committing-to-the-repo) |

317| Le tue directory utente `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | No | Si trovano sulla tua macchina, non nel repository. Fai invece il commit dei loro contenuti nella directory `.claude/` del repository. Le sessioni cloud caricano automaticamente le skill che abiliti su claude.ai |317| Le tue directory utente `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | No | Si trovano sulla tua macchina, non nel repository. Fai invece il commit dei loro contenuti nella directory `.claude/` del repository. Le sessioni cloud caricano automaticamente le [skill che abiliti su claude.ai](/docs/it/skills#skills-in-cowork-and-cloud-sessions) |

318| Plugin abilitati solo nelle tue impostazioni utente | No | `enabledPlugins` con ambito utente si trova in `~/.claude/settings.json` sulla tua macchina |318| Plugin abilitati solo nelle tue impostazioni utente | No | `enabledPlugins` con ambito utente si trova in `~/.claude/settings.json` sulla tua macchina |

319| Server MCP che hai aggiunto con `claude mcp add` nell'ambito locale predefinito o nell'ambito utente | No | Questi scrivono in `~/.claude.json` sulla tua macchina, non nel repository. Aggiungi il server con `claude mcp add --scope project`, che scrive il file [`.mcp.json`](/docs/it/mcp#project-scope) del repository, e fai il commit di quel file. Una sessione con un solo repository lo carica |319| Server MCP che hai aggiunto con `claude mcp add` nell'ambito locale predefinito o nell'ambito utente | No | Questi scrivono in `~/.claude.json` sulla tua macchina, non nel repository. Aggiungi il server con `claude mcp add --scope project`, che scrive il file [`.mcp.json`](/docs/it/mcp#project-scope) del repository, e fai il commit di quel file. Una sessione con un solo repository lo carica |

320| Variabili di trasporto nel blocco `env` di `.claude/settings.json` del tuo repository, come `NODE_EXTRA_CA_CERTS` e le [variabili del certificato client mTLS](/docs/it/network-config#mtls-authentication) | No | L'ambiente di hosting gestisce la connessione API della sessione, quindi Claude Code ignora queste chiavi e annota ogni chiave ignorata nel log di debug della sessione |320| Variabili di trasporto nel blocco `env` di `.claude/settings.json` del tuo repository, come `NODE_EXTRA_CA_CERTS` e le [variabili del certificato client mTLS](/docs/it/network-config#mtls-authentication) | No | L'ambiente di hosting gestisce la connessione API della sessione, quindi Claude Code ignora queste chiavi e annota ogni chiave ignorata nel log di debug della sessione |

code-review.md +4 −4

Details

269| Sezione | Cosa mostra |269| Sezione | Cosa mostra |

270| :- | :- |270| :- | :- |

271| PRs reviewed | Conteggio giornaliero dei pull request revisionati nell'intervallo di tempo selezionato |271| PRs reviewed | Conteggio giornaliero dei pull request revisionati nell'intervallo di tempo selezionato |

272| Cost weekly | Spesa settimanale su Code Review |272| Code Review cost | Spesa su Code Review finora nel mese corrente |

273| Feedback | Conteggio dei commenti di revisione che sono stati risolti automaticamente perché uno sviluppatore ha affrontato il problema |273| Feedback | Conteggio dei commenti di revisione che sono stati risolti automaticamente perché uno sviluppatore ha affrontato il problema |

274| Repository breakdown | Conteggi per repository dei PR revisionati e dei commenti risolti |274| Repository breakdown | Conteggi per repository delle PR revisionate, dei commenti risolti e delle esecuzioni di revisione, con costo stimato e una vista per singola PR |

275 275 

276Le cifre di costo del dashboard sono stime per il monitoraggio dell'attività. Per la spesa accurata della fattura, fai riferimento alla tua fattura Anthropic.276La scheda Code Review cost mostra un importo solo quando è selezionato il mese corrente. Le cifre di costo nelle analisi possono differire dalla tua fattura. I costi in Repository breakdown sono stimati a prezzo di listino, prima di eventuali sconti o crediti, e coprono solo le revisioni che Claude ha pubblicato su una pull request. Per la spesa accurata della fattura, fai riferimento alla tua fattura Anthropic.

277 277 

278<h2 id="pricing">278<h2 id="pricing">

279 Prezzi279 Prezzi


291 291 

292I costi appaiono sulla tua fattura Anthropic indipendentemente dal fatto che la tua organizzazione utilizzi Amazon Bedrock o Google Cloud's Agent Platform per altre funzionalità di Claude Code. Per impostare un limite di spesa mensile per Code Review, vai a [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) e configura il limite per il servizio Claude Code Review.292I costi appaiono sulla tua fattura Anthropic indipendentemente dal fatto che la tua organizzazione utilizzi Amazon Bedrock o Google Cloud's Agent Platform per altre funzionalità di Claude Code. Per impostare un limite di spesa mensile per Code Review, vai a [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) e configura il limite per il servizio Claude Code Review.

293 293 

294Monitora la spesa tramite il grafico dei costi settimanali in [analytics](#view-usage) o la colonna del costo medio per repository nelle impostazioni di amministrazione.294Per monitorare la spesa, usa la [dashboard di analytics](#view-usage).

295 295 

296<h2 id="troubleshooting">296<h2 id="troubleshooting">

297 Risoluzione dei problemi297 Risoluzione dei problemi

commands.md +2 −2

Details

77| `/compact [instructions]` | Libera contesto riassumendo la conversazione fino a questo punto. Facoltativamente, passa istruzioni su cosa privilegiare nel riepilogo. Consulta [come la compattazione gestisce regole, skill e file di memoria](/docs/it/context-window#what-survives-compaction) |77| `/compact [instructions]` | Libera contesto riassumendo la conversazione fino a questo punto. Facoltativamente, passa istruzioni su cosa privilegiare nel riepilogo. Consulta [come la compattazione gestisce regole, skill e file di memoria](/docs/it/context-window#what-survives-compaction) |

78| `/config [key=value ...]` | Apre l'interfaccia delle [Impostazioni](/docs/it/settings) per regolare tema, modello, [stile di output](/docs/it/output-styles) e altre preferenze. Passa una o più coppie `key=value` per impostare direttamente un'impostazione senza aprire l'interfaccia, ad esempio `/config thinking=false`, `/config theme=dark` o `/config model=sonnet`. La forma `key=value` funziona anche in modalità non interattiva (`-p`) e dall'app mobile Claude tramite [Remote Control](/docs/it/remote-control). La forma `key=value` non può attivare un'impostazione che richiede la tua conferma nel pannello, come [`autoContinueAtUsageLimit`](/docs/it/interactive-mode#turn-automatic-continue-off), anche se può disattivarla. Esegui `/config --help` per elencare le chiavi accettate. Alias: `/settings` |78| `/config [key=value ...]` | Apre l'interfaccia delle [Impostazioni](/docs/it/settings) per regolare tema, modello, [stile di output](/docs/it/output-styles) e altre preferenze. Passa una o più coppie `key=value` per impostare direttamente un'impostazione senza aprire l'interfaccia, ad esempio `/config thinking=false`, `/config theme=dark` o `/config model=sonnet`. La forma `key=value` funziona anche in modalità non interattiva (`-p`) e dall'app mobile Claude tramite [Remote Control](/docs/it/remote-control). La forma `key=value` non può attivare un'impostazione che richiede la tua conferma nel pannello, come [`autoContinueAtUsageLimit`](/docs/it/interactive-mode#turn-automatic-continue-off), anche se può disattivarla. Esegui `/config --help` per elencare le chiavi accettate. Alias: `/settings` |

79| `/context [all]` | Visualizza l'utilizzo corrente del contesto come griglia colorata. Mostra suggerimenti di ottimizzazione per strumenti che occupano molto contesto, memoria sovraccarica e avvisi di capacità. Quando la conversazione supera la finestra di contesto, l'output include un [avviso](/docs/it/errors#context-exceeds-the-token-limit) che mostra di quanto hai superato il limite e quale comando libera spazio. In [modalità a schermo intero](/docs/it/fullscreen), `/context` comprime il dettaglio per elemento per mantenere visibile la griglia. Passa `all` per espanderlo |79| `/context [all]` | Visualizza l'utilizzo corrente del contesto come griglia colorata. Mostra suggerimenti di ottimizzazione per strumenti che occupano molto contesto, memoria sovraccarica e avvisi di capacità. Quando la conversazione supera la finestra di contesto, l'output include un [avviso](/docs/it/errors#context-exceeds-the-token-limit) che mostra di quanto hai superato il limite e quale comando libera spazio. In [modalità a schermo intero](/docs/it/fullscreen), `/context` comprime il dettaglio per elemento per mantenere visibile la griglia. Passa `all` per espanderlo |

80| `/copy [N]` | Copia l'ultima risposta dell'assistente negli appunti. Passa un numero `N` per copiare l'N-esima risposta più recente: `/copy 2` copia la penultima. Quando sono presenti blocchi di codice, mostra un selettore interattivo per selezionare singoli blocchi o la risposta completa. Premi `w` nel selettore per scrivere la selezione in un file invece che negli appunti, utile tramite SSH |80| `/copy [N]` | Copia l'ultima risposta dell'assistente negli appunti. Passa un numero `N` per copiare l'N-esima risposta più recente: `/copy 2` copia la penultima. Quando sono presenti blocchi di codice o citazioni, mostra un selettore interattivo per selezionare singoli blocchi o la risposta completa. Premi `w` nel selettore per scrivere la selezione in un file invece che negli appunti, utile tramite SSH |

81| `/cost` | Alias di `/usage` |81| `/cost` | Alias di `/usage` |

82| `/dataviz [request]` | **[Skill](/docs/it/skills#bundled-skills).** Linee guida di design per grafici, diagrammi e dashboard. Claude sceglie la forma del grafico in base ai dati, assegna i colori in base al ruolo, convalida la tavolozza per l'accessibilità ai daltonici e il contrasto con uno script incluso, e applica regole su marcatori, interazione e accessibilità. Usa una tavolozza segnaposto neutra rispetto al brand che sostituisci con la tua |82| `/dataviz [request]` | **[Skill](/docs/it/skills#bundled-skills).** Linee guida di design per grafici, diagrammi e dashboard. Claude sceglie la forma del grafico in base ai dati, assegna i colori in base al ruolo, convalida la tavolozza per l'accessibilità ai daltonici e il contrasto con uno script incluso, e applica regole su marcatori, interazione e accessibilità. Usa una tavolozza segnaposto neutra rispetto al brand che sostituisci con la tua |

83| `/debug [description]` | **[Skill](/docs/it/skills#bundled-skills).** Abilita il logging di debug per la sessione corrente e risolve i problemi leggendo il log di debug della sessione. Il logging di debug è disattivato per impostazione predefinita a meno che tu non abbia avviato con `claude --debug`, quindi eseguire `/debug` a metà sessione avvia l'acquisizione dei log da quel momento in poi. Facoltativamente, descrivi il problema per focalizzare l'analisi |83| `/debug [description]` | **[Skill](/docs/it/skills#bundled-skills).** Abilita il logging di debug per la sessione corrente e risolve i problemi leggendo il log di debug della sessione. Il logging di debug è disattivato per impostazione predefinita a meno che tu non abbia avviato con `claude --debug`, quindi eseguire `/debug` a metà sessione avvia l'acquisizione dei log da quel momento in poi. Facoltativamente, descrivi il problema per focalizzare l'analisi |


132| `/reload-skills` | Ripete la scansione delle directory di [skill](/docs/it/skills) e comandi, così le skill aggiunte o modificate su disco durante la sessione diventano disponibili senza riavviare. Riporta quante skill sono disponibili e quante sono state aggiunte o rimosse |132| `/reload-skills` | Ripete la scansione delle directory di [skill](/docs/it/skills) e comandi, così le skill aggiunte o modificate su disco durante la sessione diventano disponibili senza riavviare. Riporta quante skill sono disponibili e quante sono state aggiunte o rimosse |

133| `/remote-control` | Rende questa sessione disponibile per [Remote Control](/docs/it/remote-control) da claude.ai. Se lo esegui senza aver effettuato l'accesso, stampa che Remote Control richiede un abbonamento claude.ai e ti spiega come accedere; prima della v2.1.206 riportava `Unknown command: /remote-control`. Alias: `/rc` |133| `/remote-control` | Rende questa sessione disponibile per [Remote Control](/docs/it/remote-control) da claude.ai. Se lo esegui senza aver effettuato l'accesso, stampa che Remote Control richiede un abbonamento claude.ai e ti spiega come accedere; prima della v2.1.206 riportava `Unknown command: /remote-control`. Alias: `/rc` |

134| `/remote-env` | Sceglie l'[ambiente cloud](/docs/it/cloud-environments#select-an-environment-from-the-cli) predefinito per le sessioni cloud che avvii dalla CLI |134| `/remote-env` | Sceglie l'[ambiente cloud](/docs/it/cloud-environments#select-an-environment-from-the-cli) predefinito per le sessioni cloud che avvii dalla CLI |

135| `/rename [name]` | Rinomina la sessione corrente e mostra il nome sulla barra del prompt. Senza un nome, ne genera automaticamente uno dalla cronologia della conversazione. Disponibile anche in modalità non interattiva (`-p`); richiede Claude Code v2.1.205 o successiva. Da ogni superficie in cui è possibile rinominare, inclusi claude.ai e l'app desktop, Claude Code sostituisce con spazi i caratteri di controllo e invisibili nel nuovo nome e limita il nome a 200 caratteri. Se il nome è vuoto una volta rimossi i caratteri invisibili, Claude Code lo rifiuta e mostra `That name is empty once invisible characters are removed. Usage: /rename <name>`. La sostituzione dei caratteri e il limite di lunghezza richiedono Claude Code v2.1.221 o successiva. Se un'altra sessione attiva su questo computer usa già un nome che passi, Claude Code applica invece [una sua variante](/docs/it/sessions#name-your-sessions) |135| `/rename [name]` | Rinomina la sessione corrente e mostra il nome sulla barra del prompt. Senza un nome, ne genera automaticamente uno dalla cronologia della conversazione. Disponibile anche in modalità non interattiva (`-p`); richiede Claude Code v2.1.205 o successiva. Da ogni superficie in cui è possibile rinominare, inclusi claude.ai e l'app desktop, Claude Code sostituisce con spazi i caratteri di controllo e invisibili nel nuovo nome e limita il nome a 200 caratteri. Se il nome è vuoto una volta rimossi i caratteri invisibili, Claude Code lo rifiuta e mostra `That name is empty once invisible characters are removed. Usage: /rename <name>`. La sostituzione dei caratteri e il limite di lunghezza richiedono Claude Code v2.1.221 o successiva |

136| `/resume [session]` | Riprende una conversazione per ID o nome, oppure apre il selettore delle sessioni. Le [sessioni in background](/docs/it/agent-view) compaiono nel selettore contrassegnate con `bg`. Riprendendone una ancora in esecuzione, dal selettore o per ID o nome, [si apre quella sessione](/docs/it/sessions#resume-a-running-background-session): la conversazione corrente passa in background e questo terminale si collega a quella in esecuzione. Premi `←` su un prompt vuoto per tornare alla vista agenti, che elenca anche la conversazione che hai lasciato. Prima della v2.1.285, Claude Code rifiutava e ti diceva di aprire la sessione con `claude attach` o di arrestarla prima. Alias: `/continue` |136| `/resume [session]` | Riprende una conversazione per ID o nome, oppure apre il selettore delle sessioni. Le [sessioni in background](/docs/it/agent-view) compaiono nel selettore contrassegnate con `bg`. Riprendendone una ancora in esecuzione, dal selettore o per ID o nome, [si apre quella sessione](/docs/it/sessions#resume-a-running-background-session): la conversazione corrente passa in background e questo terminale si collega a quella in esecuzione. Premi `←` su un prompt vuoto per tornare alla vista agenti, che elenca anche la conversazione che hai lasciato. Prima della v2.1.285, Claude Code rifiutava e ti diceva di aprire la sessione con `claude attach` o di arrestarla prima. Alias: `/continue` |

137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | Alias di [`/code-review`](/docs/it/code-review#review-a-diff-locally): esamina il diff corrente, oppure un numero di PR, un branch o un percorso che passi, come `/review 1234`, e accetta gli stessi livelli di sforzo e flag. Se non indichi un livello, la revisione riutilizza l'ultimo livello da `low` a `max` che hai digitato; consulta [Esaminare un diff localmente](/docs/it/code-review#review-a-diff-locally) per le regole esatte. Per una revisione cloud approfondita, usa [`/code-review ultra`](/docs/it/ultrareview). Prima della v2.1.223, `/review` era un comando separato che eseguiva una revisione in un solo passaggio e di sola lettura di una pull request GitHub indicata per numero, elencando le PR aperte tra cui scegliere quando eseguito senza argomento; dalla v2.1.186 alla v2.1.201, eseguiva lo stesso motore multi-agente di `/code-review medium` |137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | Alias di [`/code-review`](/docs/it/code-review#review-a-diff-locally): esamina il diff corrente, oppure un numero di PR, un branch o un percorso che passi, come `/review 1234`, e accetta gli stessi livelli di sforzo e flag. Se non indichi un livello, la revisione riutilizza l'ultimo livello da `low` a `max` che hai digitato; consulta [Esaminare un diff localmente](/docs/it/code-review#review-a-diff-locally) per le regole esatte. Per una revisione cloud approfondita, usa [`/code-review ultra`](/docs/it/ultrareview). Prima della v2.1.223, `/review` era un comando separato che eseguiva una revisione in un solo passaggio e di sola lettura di una pull request GitHub indicata per numero, elencando le PR aperte tra cui scegliere quando eseguito senza argomento; dalla v2.1.186 alla v2.1.201, eseguiva lo stesso motore multi-agente di `/code-review medium` |

138| `/rewind` | Riporta la conversazione e/o il codice a un punto precedente, oppure crea un riepilogo a partire da un messaggio selezionato. Consulta [checkpointing](/docs/it/checkpointing). Alias: `/checkpoint`, `/undo` |138| `/rewind` | Riporta la conversazione e/o il codice a un punto precedente, oppure crea un riepilogo a partire da un messaggio selezionato. Consulta [checkpointing](/docs/it/checkpointing). Alias: `/checkpoint`, `/undo` |

Details

8 8 

9Alcune organizzazioni richiedono che ogni processo su una workstation si avvii attraverso un launcher obbligatorio. Il launcher applica la sandbox, i controlli di rete o l'iniezione di credenziali da cui dipende la postura di sicurezza dell'azienda, e un binario che si avvia senza di esso è una violazione della policy.9Alcune organizzazioni richiedono che ogni processo su una workstation si avvii attraverso un launcher obbligatorio. Il launcher applica la sandbox, i controlli di rete o l'iniezione di credenziali da cui dipende la postura di sicurezza dell'azienda, e un binario che si avvia senza di esso è una violazione della policy.

10 10 

11`CLAUDE_CODE_PROCESS_WRAPPER` avvia ogni processo che Claude Code lancia dal suo binario attraverso il vostro launcher: il servizio in background, ogni sessione che ospita in [agent view](/docs/it/agent-view), e i riavvii di Claude Code dopo un aggiornamento. Impostatelo al percorso assoluto del vostro launcher, e Claude Code eseguirà il launcher con il comando di Claude Code come suoi argomenti.11`CLAUDE_CODE_PROCESS_WRAPPER` avvia ogni processo che Claude Code lancia dal suo binario attraverso il tuo launcher: il [servizio in background](/docs/it/agent-view#the-supervisor-process), ogni sessione che ospita in [agent view](/docs/it/agent-view), e i riavvii di Claude Code dopo un aggiornamento. Impostalo al percorso assoluto del tuo launcher, e Claude Code eseguirà il launcher con il comando di Claude Code come suoi argomenti.

12 12 

13Un launcher che avvolge il comando `claude` nel vostro `PATH` non può raggiungere il servizio in background o le sessioni che ospita, perché si avviano dal percorso diretto del binario senza consultare `claude`.13Un launcher che avvolge il comando `claude` nel vostro `PATH` non può raggiungere il servizio in background o le sessioni che ospita, perché si avviano dal percorso diretto del binario senza consultare `claude`.

14 14 


39 39 

40I seguenti processi non si avviano attraverso il launcher:40I seguenti processi non si avviano attraverso il launcher:

41 41 

42* Un [servizio in background installato](/docs/it/agent-view#the-supervisor-process) la cui unità è stata scritta prima che il launcher fosse configurato: `launchd` o `systemd` avvia quel processo dal suo file di unità. `/status` e `claude daemon status` avvertono quando il servizio in esecuzione e il launcher configurato non corrispondono, e le sessioni che il servizio genera si avviano comunque attraverso il launcher una volta che il servizio si riavvia con la variabile nelle sue impostazioni.

43* Una sessione che avviate voi stessi in un terminale, che viene eseguita come l'avete invocata. Per coprire queste sessioni, mettete uno script denominato `claude` in una directory precedente su `PATH` che esegue il vostro launcher con il binario reale; non sostituite il symlink gestito. Il servizio in background e le sue sessioni si avviano senza una ricerca `PATH`, quindi i due launcher non si impilano lì.42* Una sessione che avviate voi stessi in un terminale, che viene eseguita come l'avete invocata. Per coprire queste sessioni, mettete uno script denominato `claude` in una directory precedente su `PATH` che esegue il vostro launcher con il binario reale; non sostituite il symlink gestito. Il servizio in background e le sue sessioni si avviano senza una ricerca `PATH`, quindi i due launcher non si impilano lì.

44* Il primo processo di un deep link `claude-cli://`, che il gestore del protocollo del sistema operativo avvia direttamente. Tutto ciò che quella sessione avvia in background in seguito viene eseguito attraverso il launcher. Per chiudere completamente questo percorso, [impedite la registrazione del gestore](/docs/it/deep-links#registration-and-supported-platforms) con l'impostazione `disableDeepLinkRegistration`.43* Il primo processo di un deep link `claude-cli://`, che il gestore del protocollo del sistema operativo avvia direttamente. Tutto ciò che quella sessione avvia in background in seguito viene eseguito attraverso il launcher. Per chiudere completamente questo percorso, [impedite la registrazione del gestore](/docs/it/deep-links#registration-and-supported-platforms) con l'impostazione `disableDeepLinkRegistration`.

45* Il riavvio che `--worktree` combinato con `--tmux` esegue: il multiplexer del terminale avvia quel pane, non il binario di Claude Code.44* Il riavvio che `--worktree` combinato con `--tmux` esegue: il multiplexer del terminale avvia quel pane, non il binario di Claude Code.


100 99 

101 Poiché `processWrapper` è un'impostazione denominata, un'organizzazione che la fornisce attraverso [managed settings remoti](/docs/it/managed-settings#delivery-mechanisms) la vede elencata nella [finestra di dialogo di approvazione della sicurezza](/docs/it/server-managed-settings#security-approval-dialogs) insieme alle altre impostazioni che eseguono eseguibili forniti dall'amministratore.100 Poiché `processWrapper` è un'impostazione denominata, un'organizzazione che la fornisce attraverso [managed settings remoti](/docs/it/managed-settings#delivery-mechanisms) la vede elencata nella [finestra di dialogo di approvazione della sicurezza](/docs/it/server-managed-settings#security-approval-dialogs) insieme alle altre impostazioni che eseguono eseguibili forniti dall'amministratore.

102 101 

103 Le impostazioni di progetto e locali non possono configurare il launcher. Un file sottoposto a commit in un repository non deve essere in grado di mettere un binario davanti a ogni processo di Claude Code sulla macchina, quindi Claude Code ignora `CLAUDE_CODE_PROCESS_WRAPPER` in `.claude/settings.json` o `.claude/settings.local.json` con un avviso nel [debug log](/docs/it/troubleshooting), e non legge mai la chiave `processWrapper` da quei file.102 Le impostazioni di progetto e locali non possono configurare il launcher. Un file sottoposto a commit in un repository non deve essere in grado di mettere un binario davanti a ogni processo di Claude Code sulla macchina, quindi Claude Code ignora `CLAUDE_CODE_PROCESS_WRAPPER` in `.claude/settings.json` o `.claude/settings.local.json` con un avviso nel [log di debug](/docs/it/troubleshooting), e non legge mai la chiave `processWrapper` da quei file.

104 </Step>103 </Step>

105 104 

106 <Step title="Riavviare il servizio in background e le vostre sessioni">105 <Step title="Riavviare il servizio in background e le tue sessioni">

107 Un servizio in background in esecuzione e qualsiasi sessione `claude` aperta leggono la variabile una volta all'avvio, quindi continuano ad avviare processi senza wrapper finché non vengono riavviati. Eseguite `claude daemon stop --any` per fermare il servizio su richiesta; il comando successivo che ne ha bisogno, come `claude agents`, avvia uno avvolto. Un [servizio installato](/docs/it/agent-view#the-supervisor-process) accetta `claude daemon stop` senza `--any`. Quindi riavviate le vostre sessioni `claude` aperte.106 Un servizio in background in esecuzione e qualsiasi sessione `claude` aperta leggono la variabile una volta all'avvio, quindi continuano ad avviare processi senza wrapper finché non vengono riavviati. Esegui `claude daemon stop --any` per fermare il servizio su richiesta. Il comando successivo che ne ha bisogno, come `claude agents`, ne avvia uno avvolto. Quindi riavvia le tue sessioni `claude` aperte.

108 107 

109 Su macchine che non potete riavviare manualmente, la prima sessione avviata dopo il push delle impostazioni ritira automaticamente un servizio su richiesta senza wrapper rimasto. Una macchina dove non si avvia nessuna nuova sessione mantiene il suo servizio senza wrapper finché non lo fa, e un servizio installato ha sempre bisogno del riavvio in questo passaggio.108 Sulle macchine che non puoi riavviare personalmente, la prima sessione avviata dopo la distribuzione delle impostazioni ritira automaticamente un servizio su richiesta senza wrapper rimasto attivo. Una macchina su cui non si avvia nessuna nuova sessione mantiene il suo servizio in background senza wrapper finché non se ne avvia una.

110 </Step>109 </Step>

111 110 

112 <Step title="Verificare">111 <Step title="Verificare">

113 Eseguite `/status` in una sessione: la voce Self-exec mostra il comando di avvio risolto e avverte quando il servizio in background in esecuzione non corrisponde. `claude daemon status` stampa le stesse informazioni dalla shell, incluso dopo che avete annullato l'impostazione della variabile, quando `/status` non mostra più la voce.112 Esegui `/status` in una sessione: la voce Self-exec mostra il comando di avvio risolto e avverte quando il servizio in background in esecuzione non corrisponde. `claude daemon status` stampa le stesse informazioni dalla shell, anche dopo che hai rimosso la variabile, quando `/status` non mostra più la voce.

114 </Step>113 </Step>

115</Steps>114</Steps>

116 115 

Details

142 142 

143Una sessione risponde al nome che hai impostato con il comando [`/rename`](/docs/it/commands) o il flag [`--name`](/docs/it/cli-reference#cli-flags). Quando non ne imposti uno, Claude Code nomina la sessione stesso. Per una sessione interattiva, questo è il nome mostrato negli [elenchi di sessioni in esecuzione](/docs/it/sessions#name-your-sessions).143Una sessione risponde al nome che hai impostato con il comando [`/rename`](/docs/it/commands) o il flag [`--name`](/docs/it/cli-reference#cli-flags). Quando non ne imposti uno, Claude Code nomina la sessione stesso. Per una sessione interattiva, questo è il nome mostrato negli [elenchi di sessioni in esecuzione](/docs/it/sessions#name-your-sessions).

144 144 

145Quando rinomini una sessione, o avvii o riprendi una interattiva, con un nome che un'altra sessione live su questa macchina già usa, Claude Code lascia il nome con la sessione che lo ha già e [rinomina il tuo a una variante](/docs/it/sessions#name-your-sessions). Le sessioni possono comunque condividere un nome, ad esempio quando una di loro esegue una versione precedente di Claude Code o il nome condiviso è uno che Claude Code ha generato. A meno che questa sessione non sia connessa a Remote Control, Claude Code mostra la directory di lavoro di ogni sessione locale nell'output `/list-agents`, così puoi distinguere sessioni con lo stesso nome quando vengono eseguite in directory diverse. Claude indirizza il messaggio in uno di due modi, a seconda di quante sessioni live rispondono al nome:145A meno che questa sessione non sia connessa a Remote Control, Claude Code mostra la directory di lavoro di ogni sessione locale nell'output `/list-agents`, così puoi distinguere sessioni con lo stesso nome quando vengono eseguite in directory diverse. Claude indirizza il messaggio in uno di due modi, a seconda di quante sessioni live rispondono al nome:

146 146 

147* **Una sessione risponde al nome**: Claude Code consegna il messaggio solo sul nome.147* **Una sessione risponde al nome**: Claude Code consegna il messaggio solo sul nome.

148* **Diverse sessioni condividono il nome, o Claude Code non ha potuto controllare ovunque vengono eseguite le tue sessioni**: Claude aggiunge un breve identificatore a ogni riga del suo elenco e usa l'identificatore nell'indirizzo.148* **Diverse sessioni condividono il nome, o Claude Code non ha potuto controllare ovunque vengono eseguite le tue sessioni**: Claude aggiunge un breve identificatore a ogni riga del suo elenco e usa l'identificatore nell'indirizzo.

desktop.md +30 −4

Details

400 400 

401Per visualizzare due sessioni contemporaneamente, tieni premuto **Cmd** su macOS o **Ctrl** su Windows e fai clic su una sessione nella barra laterale. La sessione si apre in un secondo riquadro accanto a quello che hai già aperto. Mentre la divisione è attiva, facendo clic su un'altra sessione della barra laterale si sostituisce il riquadro che ha il focus. Premi **Cmd+\\** su macOS o **Ctrl+\\** su Windows per chiudere il riquadro con focus e tornare a una singola sessione.401Per visualizzare due sessioni contemporaneamente, tieni premuto **Cmd** su macOS o **Ctrl** su Windows e fai clic su una sessione nella barra laterale. La sessione si apre in un secondo riquadro accanto a quello che hai già aperto. Mentre la divisione è attiva, facendo clic su un'altra sessione della barra laterale si sostituisce il riquadro che ha il focus. Premi **Cmd+\\** su macOS o **Ctrl+\\** su Windows per chiudere il riquadro con focus e tornare a una singola sessione.

402 402 

403I worktree sono archiviati in `<project-root>/.claude/worktrees/` per impostazione predefinita. Puoi cambiare questo in una directory personalizzata in Impostazioni → Claude Code sotto "Worktree location". Puoi anche impostare un prefisso di branch che viene anteposto a ogni nome di branch worktree, il che è utile per mantenere organizzati i branch creati da Claude. Per rimuovere un worktree quando hai finito, passa il mouse sulla sessione nella barra laterale e fai clic sull'icona di archivio. Per avere sessioni che si archiviano automaticamente quando viene eseguito il merge della loro pull request o quando questa viene chiusa, attiva **Auto-archive after PR merge or close** in Impostazioni → Claude Code. Auto-archive si applica solo alle sessioni locali che hanno finito di funzionare.403I worktree sono archiviati in `<project-root>/.claude/worktrees/` per impostazione predefinita. Puoi cambiare questo percorso in una directory personalizzata:

404 404 

405Per includere file gitignored come `.env` nei nuovi worktree, crea un [file `.worktreeinclude`](/docs/it/worktrees#copy-gitignored-files-into-worktrees) nella radice del tuo progetto.405* **Sessioni locali**: imposta **Worktree location** in **Settings > Claude Code**

406* **Sessioni SSH**: imposta **Worktree folder** sulla [connessione SSH](#choose-where-ssh-session-worktrees-go)

407 

408Puoi anche impostare un **Branch prefix** in **Settings > Claude Code**. Desktop lo antepone a ogni nome di branch worktree, il che è utile per mantenere organizzati i branch creati da Claude.

409 

410Per rimuovere un worktree quando hai finito, passa il mouse sulla sessione nella barra laterale e fai clic sull'icona di archivio. Per avere sessioni che si archiviano automaticamente quando viene eseguito il merge della loro pull request o quando questa viene chiusa, attiva **Auto-archive after PR merge or close** in **Settings > Claude Code**. Auto-archive si applica solo alle sessioni locali che hanno finito di funzionare.

411 

412Per includere file gitignored come `.env` nei nuovi worktree, crea un [file `.worktreeinclude`](/docs/it/worktrees#copy-gitignored-files-into-worktrees) nella radice del tuo progetto. Vedi [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout) per sapere da dove una sessione worktree legge le impostazioni di progetto, gli hook e le skill.

406 413 

407<Note>414<Note>

408 L'isolamento della sessione richiede [Git](https://git-scm.com/downloads). La maggior parte dei Mac include Git per impostazione predefinita. Esegui `git --version` in Terminal per verificare; se stampa un numero di versione, Git è installato. Se riscontri errori Git, chiedi a Claude nella scheda [Cowork](https://claude.com/product/cowork) di aiutarti a risolvere i problemi della tua configurazione.415 L'isolamento della sessione richiede [Git](https://git-scm.com/downloads). La maggior parte dei Mac include Git per impostazione predefinita. Esegui `git --version` in Terminal per verificare; se stampa un numero di versione, Git è installato. Se riscontri errori Git, chiedi a Claude nella scheda [Cowork](https://claude.com/product/cowork) di aiutarti a risolvere i problemi della tua configurazione.


811* **SSH host**: `user@hostname` o un host definito in `~/.ssh/config`818* **SSH host**: `user@hostname` o un host definito in `~/.ssh/config`

812* **SSH port**: 22 per impostazione predefinita se lasciato vuoto, oppure usa la porta della tua configurazione SSH819* **SSH port**: 22 per impostazione predefinita se lasciato vuoto, oppure usa la porta della tua configurazione SSH

813* **SSH key (optional)**: percorso della tua chiave privata, come `~/.ssh/id_ed25519`. Lascia vuoto per usare la tua configurazione SSH o l'agente SSH.820* **SSH key (optional)**: percorso della tua chiave privata, come `~/.ssh/id_ed25519`. Lascia vuoto per usare la tua configurazione SSH o l'agente SSH.

821* **Worktree folder**: una cartella sulla macchina remota, come `~/worktrees`, in cui le nuove sessioni creano i propri worktree. Lascia vuoto per usare il [valore predefinito della macchina remota](#choose-where-ssh-session-worktrees-go).

814 822 

815Una volta aggiunta, la connessione appare sotto **SSH** nel menu a discesa dell'ambiente. Selezionala per avviare una sessione su quella macchina. Claude viene eseguito sulla macchina remota con accesso ai suoi file e strumenti.823Una volta aggiunta, la connessione appare sotto **SSH** nel menu a discesa dell'ambiente. Selezionala per avviare una sessione su quella macchina. Claude viene eseguito sulla macchina remota con accesso ai suoi file e strumenti.

816 824 

817La macchina remota deve eseguire Linux o macOS. L'app desktop installa Claude Code sulla macchina remota automaticamente la prima volta che ti connetti. Una volta connesso, le sessioni SSH supportano modalità di autorizzazione, connettori, plugin e MCP server.825La macchina remota deve eseguire Linux o macOS. L'app desktop installa Claude Code sulla macchina remota automaticamente la prima volta che ti connetti. Una volta connesso, le sessioni SSH supportano modalità di autorizzazione, connettori, plugin e MCP server.

818 826 

827<h4 id="choose-where-ssh-session-worktrees-go">

828 Scegliere dove vengono creati i worktree delle sessioni SSH

829</h4>

830 

831A meno che la tua organizzazione non limiti le cartelle che le sessioni possono usare, le nuove sessioni SSH creano i propri [worktree](#work-in-parallel-with-sessions) nella prima di queste posizioni che risulta impostata:

832 

8331. **Worktree folder** nella connessione SSH

8342. [`worktree.location`](/docs/it/settings-reference#worktree-location) in `~/.claude/settings.json` sulla macchina remota

8353. `<project-root>/.claude/worktrees/`, il valore predefinito

836 

837Ogni progetto ottiene una propria sottocartella nella cartella che imposti, quindi con `~/worktrees` il percorso di un worktree è `~/worktrees/<project>-<id>/<worktree-name>`. Se la cartella che imposti si trova all'interno del progetto, Desktop la ignora per quel progetto e usa il valore predefinito.

838 

839Per impostare **Worktree folder** su una connessione che hai aggiunto in precedenza o su una gestita dalla tua organizzazione, passa il mouse su di essa nel menu a discesa dell'ambiente e fai clic sull'icona dell'ingranaggio.

840 

841Il campo richiede Claude Desktop v1.44121.0 o versioni successive. Se la tua organizzazione limita le cartelle che le sessioni possono usare, Desktop nasconde il campo e mantiene i worktree all'interno del progetto.

842 

819<h4 id="open-an-ssh-session-from-a-link">843<h4 id="open-an-ssh-session-from-a-link">

820 Aprire una sessione SSH da un link844 Aprire una sessione SSH da un link

821</h4>845</h4>


869 Pre-configure SSH connections for your team893 Pre-configure SSH connections for your team

870</h4>894</h4>

871 895 

872Gli amministratori possono distribuire connessioni SSH ai membri del team impostando `sshConfigs` nelle [impostazioni gestite](/docs/it/managed-settings). Le connessioni definite in questo modo appaiono nel menu a discesa dell'ambiente di ogni utente automaticamente e vengono mostrate come gestite, quindi gli utenti possono selezionarle ma non possono modificarle o eliminarle nell'app.896Gli amministratori possono distribuire connessioni SSH ai membri del team impostando `sshConfigs` nelle [impostazioni gestite](/docs/it/managed-settings). Le connessioni definite in questo modo appaiono nel menu a discesa dell'ambiente di ogni utente automaticamente e vengono mostrate come gestite. Gli utenti possono selezionarle e [impostare il proprio campo **Worktree folder**](#choose-where-ssh-session-worktrees-go) per esse, ma non possono modificare nient'altro né eliminarle nell'app.

873 897 

874L'esempio seguente pre-configura una singola connessione:898L'esempio seguente pre-configura una singola connessione:

875 899 


935 Il modulo OpenTelemetry per Cowork sotto **Monitoring** nelle [impostazioni di Data and privacy](https://claude.ai/admin-settings/data-privacy-controls) della console di amministrazione si applica solo alle sessioni Cowork. In una sessione Cowork su questa macchina, l'app desktop passa quel collector a Claude Code come variabili d'ambiente `OTEL_*`, quindi il modulo ha effetto anche se Claude Code in quella sessione [non recupera mai le impostazioni della console di amministrazione](#managed-settings).959 Il modulo OpenTelemetry per Cowork sotto **Monitoring** nelle [impostazioni di Data and privacy](https://claude.ai/admin-settings/data-privacy-controls) della console di amministrazione si applica solo alle sessioni Cowork. In una sessione Cowork su questa macchina, l'app desktop passa quel collector a Claude Code come variabili d'ambiente `OTEL_*`, quindi il modulo ha effetto anche se Claude Code in quella sessione [non recupera mai le impostazioni della console di amministrazione](#managed-settings).

936 960 

937 Per esportare la telemetria dalle sessioni della scheda Code, imposta `CLAUDE_CODE_ENABLE_TELEMETRY` e le variabili `OTEL_*` nel blocco `env` delle tue impostazioni gestite di Claude Code, come mostrato in [configurazione dell'amministratore per il monitoraggio](/docs/it/monitoring-usage#administrator-configuration). Le sessioni locali, cloud e SSH leggono ciascuna [impostazioni gestite da fonti diverse](#managed-settings). Per gli host che una sessione cloud può raggiungere, vedi [accesso alla rete](/docs/it/cloud-environments#network-access). Per il `service.name` che le sessioni della scheda Code segnalano, vedi [informazioni sul servizio](/docs/it/monitoring-usage#service-information).961 Per esportare la telemetria dalle sessioni della scheda Code, imposta `CLAUDE_CODE_ENABLE_TELEMETRY` e le variabili `OTEL_*` nel blocco `env` delle tue impostazioni gestite di Claude Code, come mostrato in [configurazione dell'amministratore per il monitoraggio](/docs/it/monitoring-usage#administrator-configuration). Le sessioni locali, cloud e SSH leggono ciascuna [impostazioni gestite da fonti diverse](#managed-settings). Per gli host che una sessione cloud può raggiungere, vedi [accesso alla rete](/docs/it/cloud-environments#network-access). Per il `service.name` che le sessioni della scheda Code segnalano, vedi [informazioni sul servizio](/docs/it/monitoring-usage#service-information).

962 

963 Per scoprire su quale macchina remota è stata eseguita una sessione SSH, vedi [Attribuire la telemetria alle sessioni SSH di Desktop](/docs/it/monitoring-usage#attribute-telemetry-to-desktop-ssh-sessions).

938</Note>964</Note>

939 965 

940<h3 id="managed-settings">966<h3 id="managed-settings">


951| `browserExternalPageTools` | imposta su `"disabled"` per impedire a Claude di utilizzare strumenti per leggere o agire su pagine esterne nel [riquadro Browser](#browse-external-sites). Gli utenti possono comunque navigare verso siti esterni da soli, e le anteprime del server di sviluppo locale non sono interessate. |977| `browserExternalPageTools` | imposta su `"disabled"` per impedire a Claude di utilizzare strumenti per leggere o agire su pagine esterne nel [riquadro Browser](#browse-external-sites). Gli utenti possono comunque navigare verso siti esterni da soli, e le anteprime del server di sviluppo locale non sono interessate. |

952| `disableMobileSimulatorTools` | imposta su `true` per bloccare gli strumenti di Claude per il controllo e l'acquisizione dei dispositivi nel [riquadro iOS Simulator](/docs/it/desktop-ios-simulator#turn-off-simulator-access). Il riquadro rimane utilizzabile per i tocchi dell'utente; solo l'accesso di Claude viene rimosso. Il valore deve essere il booleano JSON `true`; la stringa `"true"` viene ignorata. |978| `disableMobileSimulatorTools` | imposta su `true` per bloccare gli strumenti di Claude per il controllo e l'acquisizione dei dispositivi nel [riquadro iOS Simulator](/docs/it/desktop-ios-simulator#turn-off-simulator-access). Il riquadro rimane utilizzabile per i tocchi dell'utente; solo l'accesso di Claude viene rimosso. Il valore deve essere il booleano JSON `true`; la stringa `"true"` viene ignorata. |

953| `disableBrowserExternalNavigation` | imposta su `true` per disattivare completamente la navigazione esterna nel [riquadro Browser](#browse-external-sites). Né gli utenti né Claude possono navigare verso siti esterni, e le anteprime del server localhost dev non sono interessate. Il valore deve essere il booleano JSON `true`; la stringa `"true"` viene ignorata. |979| `disableBrowserExternalNavigation` | imposta su `true` per disattivare completamente la navigazione esterna nel [riquadro Browser](#browse-external-sites). Né gli utenti né Claude possono navigare verso siti esterni, e le anteprime del server localhost dev non sono interessate. Il valore deve essere il booleano JSON `true`; la stringa `"true"` viene ignorata. |

954| `sshConfigs` | pre-configura le [connessioni SSH](#pre-configure-ssh-connections-for-your-team) che appaiono nel menu a discesa dell'ambiente. Gli utenti non possono modificare o eliminare le connessioni gestite. |980| `sshConfigs` | pre-configura le [connessioni SSH](#pre-configure-ssh-connections-for-your-team) che appaiono nel menu a discesa dell'ambiente. Gli utenti non possono eliminare le connessioni gestite né modificare nulla tranne la propria **Worktree folder**. |

955| `sshHostAllowlist` | limita le [sessioni SSH](#restrict-which-ssh-hosts-users-can-connect-to) agli host il cui nome host risolto corrisponde a uno di questi modelli. Letto solo dalle impostazioni gestite. |981| `sshHostAllowlist` | limita le [sessioni SSH](#restrict-which-ssh-hosts-users-can-connect-to) agli host il cui nome host risolto corrisponde a uno di questi modelli. Letto solo dalle impostazioni gestite. |

956| `disableDesktopLocalSessions` | imposta su `true` per disattivare le [sessioni Code che vengono eseguite sul dispositivo](#local-sessions-on-managed-devices), lasciando disponibili le sessioni SSH verso altri host e le sessioni cloud. Il valore deve essere il booleano JSON `true`. Letto solo dalle impostazioni gestite. Richiede Claude Desktop v1.37937.0 o successivo. |982| `disableDesktopLocalSessions` | imposta su `true` per disattivare le [sessioni Code che vengono eseguite sul dispositivo](#local-sessions-on-managed-devices), lasciando disponibili le sessioni SSH verso altri host e le sessioni cloud. Il valore deve essere il booleano JSON `true`. Letto solo dalle impostazioni gestite. Richiede Claude Desktop v1.37937.0 o successivo. |

957| `disableSshSavedPasswords` | imposta su `true` per impedire a Desktop di offrire di ricordare le password SSH e di usare o mostrare quelle salvate in precedenza. Attivarla non le elimina. Letto solo dalle impostazioni gestite. Richiede Claude Desktop v1.49585.0 o successivo. |983| `disableSshSavedPasswords` | imposta su `true` per impedire a Desktop di offrire di ricordare le password SSH e di usare o mostrare quelle salvate in precedenza. Attivarla non le elimina. Letto solo dalle impostazioni gestite. Richiede Claude Desktop v1.49585.0 o successivo. |

env-vars.md +5 −5

Details

210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Imposta su `1` per omettere il prefisso `mcp__<server>__` nei nomi degli strumenti dei server MCP creati con l'SDK. Gli strumenti usano i loro nomi originali. Solo per l'uso con l'SDK |210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Imposta su `1` per omettere il prefisso `mcp__<server>__` nei nomi degli strumenti dei server MCP creati con l'SDK. Gli strumenti usano i loro nomi originali. Solo per l'uso con l'SDK |

211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout di stallo in millisecondi per i subagent. Copre anche gli [agenti dei workflow](/docs/it/workflows#when-an-agent-stalls-and-restarts) su Claude Code v2.1.286 o versioni successive. Predefinito `600000` (10 minuti); se aumenti `CLAUDE_STREAM_IDLE_TIMEOUT_MS` mentre il watchdog dello stream è attivo, il valore predefinito aumenta di conseguenza, come descritto in [Gestire le risposte API lente o bloccate](/docs/it/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout di stallo in millisecondi per i subagent. Copre anche gli [agenti dei workflow](/docs/it/workflows#when-an-agent-stalls-and-restarts) su Claude Code v2.1.286 o versioni successive. Predefinito `600000` (10 minuti); se aumenti `CLAUDE_STREAM_IDLE_TIMEOUT_MS` mentre il watchdog dello stream è attivo, il valore predefinito aumenta di conseguenza, come descritto in [Gestire le risposte API lente o bloccate](/docs/it/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |

212| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Imposta la percentuale (1-100) della finestra di compattazione automatica alla quale si attiva la compattazione automatica. Usa valori più bassi come `50` per compattare prima; la variabile non può alzare la soglia, quindi i valori superiori alla percentuale predefinita vengono ignorati. Si applica solo nelle sessioni che [compattano prima del limite di contesto del modello](/docs/it/model-config#context-window-and-auto-compaction). Si applica sia alle conversazioni principali sia ai subagent |212| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Imposta la percentuale (1-100) della finestra di compattazione automatica alla quale si attiva la compattazione automatica. Usa valori più bassi come `50` per compattare prima; la variabile non può alzare la soglia, quindi i valori superiori alla percentuale predefinita vengono ignorati. Si applica solo nelle sessioni che [compattano prima del limite di contesto del modello](/docs/it/model-config#context-window-and-auto-compaction). Si applica sia alle conversazioni principali sia ai subagent |

213| `CLAUDE_AUTO_BACKGROUND_TASKS` | Imposta su `1` per forzare l'attivazione dello spostamento automatico in background delle attività degli agenti di lunga durata. Quando è attivo, i subagent vengono spostati in background dopo circa due minuti di esecuzione. Attiva anche lo [spostamento automatico in background delle chiamate lunghe agli strumenti MCP](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls) in modalità non interattiva su Claude Code v2.1.212 o versioni successive |213| `CLAUDE_AUTO_BACKGROUND_TASKS` | Imposta su `1` per forzare l'attivazione dello spostamento automatico in background delle attività degli agenti di lunga durata. Quando è attivo, un [subagent](/docs/it/sub-agents#run-subagents-in-foreground-or-background) passa in background dopo circa due minuti di esecuzione. Se Claude ha accodato una chiamata a uno strumento, come una modifica a un file, dietro al subagent, il subagent termina in primo piano prima che quella chiamata inizi. Attiva anche lo [spostamento automatico in background delle chiamate lunghe agli strumenti MCP](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls) in modalità non interattiva su Claude Code v2.1.212 o successiva |

214| `CLAUDE_AX_PREPARK_MS` | In [modalità screen reader](/docs/it/accessibility), quanti millisecondi Claude Code attende prima di scrivere una riga nuova o modificata. Predefinito `0`, quindi Claude Code non attende. Prima della v2.1.287, il valore predefinito era `50`. Claude Code limita l'attesa a `5000`. Richiede Claude Code v2.1.233 o versioni successive |214| `CLAUDE_AX_PREPARK_MS` | In [modalità screen reader](/docs/it/accessibility), quanti millisecondi Claude Code attende prima di scrivere una riga nuova o modificata. Predefinito `0`, quindi Claude Code non attende. Prima della v2.1.287, il valore predefinito era `50`. Claude Code limita l'attesa a `5000`. Richiede Claude Code v2.1.233 o versioni successive |

215| `CLAUDE_AX_SCREEN_READER` | Imposta su `1` per visualizzare un output adatto agli screen reader: testo semplice senza bordi decorativi o animazioni. Imposta su `0` per forzare la disattivazione della modalità screen reader anche quando [`axScreenReader`](/docs/it/settings-reference#axscreenreader) è `true`. Il flag [`--ax-screen-reader`](/docs/it/cli-reference#cli-flags) ha la precedenza. Richiede Claude Code v2.1.181 o versioni successive |215| `CLAUDE_AX_SCREEN_READER` | Imposta su `1` per visualizzare un output adatto agli screen reader: testo semplice senza bordi decorativi o animazioni. Imposta su `0` per forzare la disattivazione della modalità screen reader anche quando [`axScreenReader`](/docs/it/settings-reference#axscreenreader) è `true`. Il flag [`--ax-screen-reader`](/docs/it/cli-reference#cli-flags) ha la precedenza. Richiede Claude Code v2.1.181 o versioni successive |

216| `CLAUDE_AX_STARTUP_QUIET_MS` | In [modalità screen reader](/docs/it/accessibility), per quanti millisecondi Claude Code trattiene il primo rendering dell'interfaccia dopo la riga di conferma dell'avvio, in modo che il tuo screen reader possa leggere la riga per intero prima che un nuovo output la interrompa. Predefinito `3000`. Imposta `0` per il rendering immediato. Claude Code limita l'attesa a `600000` (10 minuti). La tua prima pressione di un tasto termina l'attesa in anticipo. Richiede Claude Code v2.1.217 o versioni successive |216| `CLAUDE_AX_STARTUP_QUIET_MS` | In [modalità screen reader](/docs/it/accessibility), per quanti millisecondi Claude Code trattiene il primo rendering dell'interfaccia dopo la riga di conferma dell'avvio, in modo che il tuo screen reader possa leggere la riga per intero prima che un nuovo output la interrompa. Predefinito `3000`. Imposta `0` per il rendering immediato. Claude Code limita l'attesa a `600000` (10 minuti). La tua prima pressione di un tasto termina l'attesa in anticipo. Richiede Claude Code v2.1.217 o versioni successive |


285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | Imposta su `1` per disattivare il [cambio automatico di modello quando un classificatore di sicurezza segnala una richiesta](/docs/it/model-config#automatic-model-fallback), il comportamento controllato dall'impostazione [`switchModelsOnFlag`](/docs/it/settings-reference#switchmodelsonflag) |285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | Imposta su `1` per disattivare il [cambio automatico di modello quando un classificatore di sicurezza segnala una richiesta](/docs/it/model-config#automatic-model-fallback), il comportamento controllato dall'impostazione [`switchModelsOnFlag`](/docs/it/settings-reference#switchmodelsonflag) |

286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Imposta su `1` per impedire a Claude Code di inviare il campo di output strutturato `output_config.format` e il valore `anthropic-beta` associato, per un [gateway LLM](/docs/it/llm-gateway-protocol#feature-pass-through) il cui upstream li rifiuta. Lascia attive le altre funzionalità di pre-release che [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/it/llm-gateway-protocol#disable-pre-release-capabilities) disattiva. Richiede Claude Code v2.1.288 o versioni successive |286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Imposta su `1` per impedire a Claude Code di inviare il campo di output strutturato `output_config.format` e il valore `anthropic-beta` associato, per un [gateway LLM](/docs/it/llm-gateway-protocol#feature-pass-through) il cui upstream li rifiuta. Lascia attive le altre funzionalità di pre-release che [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/it/llm-gateway-protocol#disable-pre-release-capabilities) disattiva. Richiede Claude Code v2.1.288 o versioni successive |

287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Imposta su `1` per disattivare il controllo sui [percorsi critici](/docs/it/permission-modes#critical-paths) per un `rm` ricorsivo la cui destinazione è interamente l'output di una sostituzione di comando, come `rm -rf "$(pwd)"`. Gli altri controlli sui percorsi critici continuano a essere eseguiti. 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 |287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Imposta su `1` per disattivare il controllo sui [percorsi critici](/docs/it/permission-modes#critical-paths) per un `rm` ricorsivo la cui destinazione è interamente l'output di una sostituzione di comando, come `rm -rf "$(pwd)"`. Gli altri controlli sui percorsi critici continuano a essere eseguiti. 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 |

288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Imposta su `1` per disattivare gli aggiornamenti automatici del titolo del terminale basati sul contesto della conversazione. Questo salta anche la richiesta in background al modello piccolo/veloce che [genera un titolo per la sessione](/docs/it/sessions#name-your-sessions) |288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Imposta su `1` per disattivare gli aggiornamenti automatici del titolo del terminale basati sul contesto della conversazione. Salta anche la richiesta in background al modello piccolo/veloce che [genera un titolo per la sessione](/docs/it/sessions#name-your-sessions) e disattiva i [report di stato al tuo terminale](/docs/it/terminal-config#see-session-status-in-your-terminal) |

289| `CLAUDE_CODE_DISABLE_THINKING` | Imposta su `1` per omettere completamente il parametro `thinking` dalle richieste API. È un'opzione di compatibilità per proxy e gateway che rifiutano il parametro. Sui modelli che ragionano per impostazione predefinita, omettere il parametro significa che il modello potrebbe comunque ragionare. Per disattivare esplicitamente il [ragionamento esteso](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) sull'API Anthropic, usa invece `MAX_THINKING_TOKENS=0`. Nessuna delle due variabili disattiva il ragionamento su Opus 5.5, Sonnet 5.5, Haiku 5.5 o sui modelli Fable, per i quali il ragionamento non può essere disattivato. Sui [provider di terze parti](/docs/it/third-party-integrations), anche `MAX_THINKING_TOKENS=0` omette il parametro, quindi lì le due variabili si comportano allo stesso modo |289| `CLAUDE_CODE_DISABLE_THINKING` | Imposta su `1` per omettere completamente il parametro `thinking` dalle richieste API. È un'opzione di compatibilità per proxy e gateway che rifiutano il parametro. Sui modelli che ragionano per impostazione predefinita, omettere il parametro significa che il modello potrebbe comunque ragionare. Per disattivare esplicitamente il [ragionamento esteso](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) sull'API Anthropic, usa invece `MAX_THINKING_TOKENS=0`. Nessuna delle due variabili disattiva il ragionamento su Opus 5.5, Sonnet 5.5, Haiku 5.5 o sui modelli Fable, per i quali il ragionamento non può essere disattivato. Sui [provider di terze parti](/docs/it/third-party-integrations), anche `MAX_THINKING_TOKENS=0` omette il parametro, quindi lì le due variabili si comportano allo stesso modo |

290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Imposta su `1` per saltare la [compattazione automatica](/docs/it/costs#reduce-token-usage) proattiva quando Claude Code non riconosce l'ID del modello, come un alias di un [gateway LLM](/docs/it/llm-gateway). Senza questa variabile, Claude Code compatta in base alla finestra di contesto che presume per l'ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` può invece correggere la finestra presunta; consulta [Correggere la finestra per un gateway o un ID di modello personalizzato](/docs/it/model-config#correct-the-window-for-a-gateway-or-custom-model-id) per sapere quando si applica ciascuna variabile. Richiede Claude Code v2.1.223 o versioni successive |290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Imposta su `1` per saltare la [compattazione automatica](/docs/it/costs#reduce-token-usage) proattiva quando Claude Code non riconosce l'ID del modello, come un alias di un [gateway LLM](/docs/it/llm-gateway). Senza questa variabile, Claude Code compatta in base alla finestra di contesto che presume per l'ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` può invece correggere la finestra presunta; consulta [Correggere la finestra per un gateway o un ID di modello personalizzato](/docs/it/model-config#correct-the-window-for-a-gateway-or-custom-model-id) per sapere quando si applica ciascuna variabile. Richiede Claude Code v2.1.223 o versioni successive |

291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Imposta su `1` per disattivare lo scorrimento virtuale nel [rendering a schermo intero](/docs/it/fullscreen) e visualizzare ogni messaggio nella trascrizione. Usala se lo scorrimento in modalità a schermo intero mostra aree vuote dove dovrebbero comparire i messaggi |291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Imposta su `1` per disattivare lo scorrimento virtuale nel [rendering a schermo intero](/docs/it/fullscreen) e visualizzare ogni messaggio nella trascrizione. Usala se lo scorrimento in modalità a schermo intero mostra aree vuote dove dovrebbero comparire i messaggi |


309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo in millisecondi da attendere, dopo che il ciclo di query diventa inattivo, prima di uscire automaticamente. Utile per workflow automatizzati e script che usano la modalità SDK |309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo in millisecondi da attendere, dopo che il ciclo di query diventa inattivo, prima di uscire automaticamente. Utile per workflow automatizzati e script che usano la modalità SDK |

310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Imposta su `1` per abilitare i [team di agenti](/docs/it/agent-teams). I team di agenti sono sperimentali e disabilitati per impostazione predefinita |310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Imposta su `1` per abilitare i [team di agenti](/docs/it/agent-teams). I team di agenti sono sperimentali e disabilitati per impostazione predefinita |

311| `CLAUDE_CODE_EXTRA_BODY` | Oggetto JSON di cui fare il merge nel livello superiore del corpo di ogni richiesta API. Utile per passare parametri specifici del provider che Claude Code non espone direttamente. Un valore esportato nella tua shell si applica anche alle [sessioni in background](/docs/it/agent-view) che avvii con `claude agents` o `--bg`. Prima della v2.1.206, le sessioni in background ignoravano un valore esportato dalla shell e usavano la copia ereditata dal processo supervisore in background |311| `CLAUDE_CODE_EXTRA_BODY` | Oggetto JSON di cui fare il merge nel livello superiore del corpo di ogni richiesta API. Utile per passare parametri specifici del provider che Claude Code non espone direttamente. Un valore esportato nella tua shell si applica anche alle [sessioni in background](/docs/it/agent-view) che avvii con `claude agents` o `--bg`. Prima della v2.1.206, le sessioni in background ignoravano un valore esportato dalla shell e usavano la copia ereditata dal processo supervisore in background |

312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Sovrascrive il limite di token predefinito per le letture di file. Utile quando devi leggere file più grandi per intero |312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Sovrascrive il limite predefinito di token per le [letture di file](/docs/it/tools-reference#large-files), pari a 25.000 token. Utile quando devi leggere per intero file più grandi. Una lettura che Claude effettua con il parametro `allow_large` può superare questo limite quando la finestra di contesto ha spazio |

313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Imposta su `1` per forzare la persistenza delle trascrizioni, la cronologia dei prompt e la registrazione in `claude agents` anche quando questo `claude` è stato avviato dall'interno di un'altra sessione di Claude Code. Usala quando un valore ereditato di `CLAUDE_CODE_CHILD_SESSION`, ad esempio da una sessione `screen` o da un launcher in background avviato per la prima volta dallo strumento Bash di Claude Code, fa sì che una vera sessione di primo livello venga erroneamente classificata come annidata. A partire dalla v2.1.178, Claude Code rileva automaticamente il caso di tmux e ignora il marcatore ereditato, quindi tmux non ha più bisogno di questa variabile. Rispettata anche nella v2.1.169 e precedenti; non ha effetto nella v2.1.170 e nella v2.1.171, in cui il rilevamento delle sessioni annidate che sovrascrive era stato rimosso |313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Imposta su `1` per forzare la persistenza delle trascrizioni, la cronologia dei prompt e la registrazione in `claude agents` anche quando questo `claude` è stato avviato dall'interno di un'altra sessione di Claude Code. Usala quando un valore ereditato di `CLAUDE_CODE_CHILD_SESSION`, ad esempio da una sessione `screen` o da un launcher in background avviato per la prima volta dallo strumento Bash di Claude Code, fa sì che una vera sessione di primo livello venga erroneamente classificata come annidata. A partire dalla v2.1.178, Claude Code rileva automaticamente il caso di tmux e ignora il marcatore ereditato, quindi tmux non ha più bisogno di questa variabile. Rispettata anche nella v2.1.169 e precedenti; non ha effetto nella v2.1.170 e nella v2.1.171, in cui il rilevamento delle sessioni annidate che sovrascrive era stato rimosso |

314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Imposta su `1` per forzare il rendering barrato di `~~text~~` nelle risposte di Claude quando il tuo terminale lo supporta ma non viene rilevato automaticamente, ad esempio tramite SSH senza inoltrare `TERM_PROGRAM`. Senza questa variabile, i terminali non rilevati mostrano i marcatori `~~` letterali invece di visualizzare il testo barrato. Richiede Claude Code v2.1.186 o successiva |314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Imposta su `1` per forzare il rendering barrato di `~~text~~` nelle risposte di Claude quando il tuo terminale lo supporta ma non viene rilevato automaticamente, ad esempio tramite SSH senza inoltrare `TERM_PROGRAM`. Senza questa variabile, i terminali non rilevati mostrano i marcatori `~~` letterali invece di visualizzare il testo barrato. Richiede Claude Code v2.1.186 o successiva |

315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Imposta su `1` per forzare l'abilitazione dell'[output sincronizzato](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) in modalità privata DEC 2026 quando il tuo terminale lo supporta ma non viene rilevato automaticamente. Utile per emulatori come `eat` di Emacs che implementano BSU/ESU ma non rispondono alla verifica delle capacità. Non ha effetto in tmux. A differenza di `CLAUDE_CODE_NO_FLICKER`, che passa al [rendering a schermo intero](/docs/it/fullscreen), questa variabile non cambia il renderer |315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Imposta su `1` per forzare l'abilitazione dell'[output sincronizzato](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) in modalità privata DEC 2026 quando il tuo terminale lo supporta ma non viene rilevato automaticamente. Utile per emulatori come `eat` di Emacs che implementano BSU/ESU ma non rispondono alla verifica delle capacità. Non ha effetto in tmux. A differenza di `CLAUDE_CODE_NO_FLICKER`, che passa al [rendering a schermo intero](/docs/it/fullscreen), questa variabile non cambia il renderer |


340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Limite alle chiamate a [WebSearch](/docs/it/tools-reference#session-search-limit) (predefinito: 200). Quando Claude raggiunge il limite, le ulteriori chiamate a WebSearch restituiscono un avviso che gli indica di proseguire con le informazioni già raccolte. Accetta un numero intero positivo senza limite superiore. Qualsiasi altro valore viene ignorato e si applica il valore predefinito, quindi il limite può essere aumentato ma non disattivato. Richiede Claude Code v2.1.212 o successiva |340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Limite alle chiamate a [WebSearch](/docs/it/tools-reference#session-search-limit) (predefinito: 200). Quando Claude raggiunge il limite, le ulteriori chiamate a WebSearch restituiscono un avviso che gli indica di proseguire con le informazioni già raccolte. Accetta un numero intero positivo senza limite superiore. Qualsiasi altro valore viene ignorato e si applica il valore predefinito, quindi il limite può essere aumentato ma non disattivato. Richiede Claude Code v2.1.212 o successiva |

341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Imposta su `1` per avviare i server MCP stdio solo con un ambiente di base sicuro più l'`env` configurato per il server, invece di ereditare l'ambiente della tua shell |341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Imposta su `1` per avviare i server MCP stdio solo con un ambiente di base sicuro più l'`env` configurato per il server, invece di ereditare l'ambiente della tua shell |

342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Tempo trascorso in millisecondi prima che una chiamata a uno strumento MCP ancora in esecuzione [passi a un'attività in background](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls) (predefinito: 120000, ovvero 2 minuti). Imposta su `0` per disattivare il passaggio automatico in background. Richiede Claude Code v2.1.212 o successiva |342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Tempo trascorso in millisecondi prima che una chiamata a uno strumento MCP ancora in esecuzione [passi a un'attività in background](/docs/it/mcp#automatic-backgrounding-of-long-tool-calls) (predefinito: 120000, ovvero 2 minuti). Imposta su `0` per disattivare il passaggio automatico in background. Richiede Claude Code v2.1.212 o successiva |

343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Per quanto tempo, in millisecondi, il primo turno di una sessione [non interattiva](/docs/it/headless) attende i server MCP che si stanno ancora connettendo, al posto dell'[attesa predefinita del primo turno](/docs/it/agent-sdk/mcp#connection-timing). Quando è impostata, l'attesa riguarda ogni server in sospeso. Imposta su `0` per saltare l'attesa. Un server [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) mantiene la propria attesa `MCP_TIMEOUT` indipendentemente dal valore. Richiede Claude Code v2.1.274 o successiva |343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Per quanto tempo, in millisecondi, il primo turno di una sessione [non interattiva](/docs/it/headless) attende i server MCP che si stanno ancora connettendo, al posto dell'[attesa del primo turno](/docs/it/agent-sdk/mcp#connection-timing) predefinita. Quando è impostata, l'attesa riguarda tutti i server in sospeso; in un [ambiente self-hosted](/docs/it/self-hosted-environments-configuration#connection-timing), cambia solo la durata dell'attesa. Imposta a `0` per saltare l'attesa. Un server [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) mantiene la propria attesa `MCP_TIMEOUT` indipendentemente dal valore. Richiede Claude Code v2.1.274 o successiva |

344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Timeout di inattività in millisecondi per le chiamate agli strumenti MCP. Quando un server MCP stdio, HTTP, SSE, WebSocket o un [connettore claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai) non invia alcuna risposta né alcuna notifica di avanzamento per questo intervallo, la chiamata allo strumento si interrompe con un errore invece di attendere il `MCP_TOOL_TIMEOUT` complessivo. Sovrascrive i valori predefiniti per trasporto di 300000 (5 minuti) per i server di rete e 1800000 (30 minuti) per i server stdio. Imposta su `0` per disabilitare il controllo di inattività. I valori inferiori a 1000 vengono portati a un secondo, e il valore è limitato al `MCP_TOOL_TIMEOUT` effettivo. Un `timeout` per server in `.mcp.json` di almeno 1000 porta la finestra di inattività di quel server almeno al valore di `timeout`. Non si applica ai server IDE né ai server in-process dell'SDK. Richiede Claude Code v2.1.187 o successiva. Prima della v2.1.203, i server stdio erano esenti dal timeout di inattività |344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Timeout di inattività in millisecondi per le chiamate agli strumenti MCP. Quando un server MCP stdio, HTTP, SSE, WebSocket o un [connettore claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai) non invia alcuna risposta né alcuna notifica di avanzamento per questo intervallo, la chiamata allo strumento si interrompe con un errore invece di attendere il `MCP_TOOL_TIMEOUT` complessivo. Sovrascrive i valori predefiniti per trasporto di 300000 (5 minuti) per i server di rete e 1800000 (30 minuti) per i server stdio. Imposta su `0` per disabilitare il controllo di inattività. I valori inferiori a 1000 vengono portati a un secondo, e il valore è limitato al `MCP_TOOL_TIMEOUT` effettivo. Un `timeout` per server in `.mcp.json` di almeno 1000 porta la finestra di inattività di quel server almeno al valore di `timeout`. Non si applica ai server IDE né ai server in-process dell'SDK. Richiede Claude Code v2.1.187 o successiva. Prima della v2.1.203, i server stdio erano esenti dal timeout di inattività |

345| `CLAUDE_CODE_MESSAGING_SOCKET` | Impostata da Claude Code, non da te: nelle sessioni che associano un [socket della casella in arrivo](/docs/it/cross-session-messaging#the-sessions-inbox-socket), Claude Code esporta il percorso di quel socket verso hook e comandi Bash quando associa il socket. In una sessione che si avvia con la messaggistica attiva, Claude Code associa il socket prima che venga eseguito qualsiasi hook. Le altre sessioni sulla macchina recapitano i messaggi a questo percorso. Ogni sessione esporta il proprio socket anziché uno ereditato da un processo padre, e i messaggi che vi arrivano passano attraverso i [controlli in ingresso](/docs/it/cross-session-messaging#control-inbound-messages) della sessione. I blocchi `env` delle impostazioni non possono impostarla. Richiede Claude Code v2.1.224 o successiva |345| `CLAUDE_CODE_MESSAGING_SOCKET` | Impostata da Claude Code, non da te: nelle sessioni che associano un [socket della casella in arrivo](/docs/it/cross-session-messaging#the-sessions-inbox-socket), Claude Code esporta il percorso di quel socket verso hook e comandi Bash quando associa il socket. In una sessione che si avvia con la messaggistica attiva, Claude Code associa il socket prima che venga eseguito qualsiasi hook. Le altre sessioni sulla macchina recapitano i messaggi a questo percorso. Ogni sessione esporta il proprio socket anziché uno ereditato da un processo padre, e i messaggi che vi arrivano passano attraverso i [controlli in ingresso](/docs/it/cross-session-messaging#control-inbound-messages) della sessione. I blocchi `env` delle impostazioni non possono impostarla. Richiede Claude Code v2.1.224 o successiva |

346| `CLAUDE_CODE_MESSAGING_TOKEN` | Impostata da Claude Code, non da te: nelle sessioni che associano un [socket della casella in arrivo](/docs/it/cross-session-messaging#the-sessions-inbox-socket), Claude Code esporta questo token per sessione verso hook e comandi Bash insieme a `CLAUDE_CODE_MESSAGING_SOCKET`. Uno script che scrive sul socket può inviare `{"type":"auth","token":"<token>"}` come prima riga per dimostrare di appartenere alla sessione. Su Windows nativo, Claude Code richiede questa riga e chiude qualsiasi connessione che non si apra con una riga valida. Le [regole sui processi figli propri](/docs/it/cross-session-messaging#the-sessions-inbox-socket) indicano quando Claude Code consulta il token. Ogni sessione esporta il proprio token, mai uno ereditato da una sessione padre. I blocchi `env` delle impostazioni non possono impostarla. Richiede Claude Code v2.1.228 o successiva |346| `CLAUDE_CODE_MESSAGING_TOKEN` | Impostata da Claude Code, non da te: nelle sessioni che associano un [socket della casella in arrivo](/docs/it/cross-session-messaging#the-sessions-inbox-socket), Claude Code esporta questo token per sessione verso hook e comandi Bash insieme a `CLAUDE_CODE_MESSAGING_SOCKET`. Uno script che scrive sul socket può inviare `{"type":"auth","token":"<token>"}` come prima riga per dimostrare di appartenere alla sessione. Su Windows nativo, Claude Code richiede questa riga e chiude qualsiasi connessione che non si apra con una riga valida. Le [regole sui processi figli propri](/docs/it/cross-session-messaging#the-sessions-inbox-socket) indicano quando Claude Code consulta il token. Ogni sessione esporta il proprio token, mai uno ereditato da una sessione padre. I blocchi `env` delle impostazioni non possono impostarla. Richiede Claude Code v2.1.228 o successiva |


443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Imposta a `1` per forzare l'abilitazione del watchdog di inattività dello streaming a livello di byte, oppure a `0` per forzarne la disabilitazione. `0` disattiva anche la [scadenza del primo byte](/docs/it/network-config#streaming-idle-watchdogs) sulle connessioni in cui tale scadenza è attiva. Quando non è impostata, il watchdog è abilitato per impostazione predefinita per le connessioni dirette all'API Anthropic e a [Claude Platform on AWS](/docs/it/claude-platform-on-aws), e per le risposte in streaming sulle connessioni tramite [gateway](/docs/it/gateways) raggiunte attraverso `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`; prima della v2.1.222 non era attivo su quelle connessioni tramite gateway, quindi il watchdog a livello di eventi poteva segnalare uno stallo anche mentre arrivavano i ping keep-alive. Per i timeout e per come interagiscono i timer, consulta [Watchdog di inattività dello streaming](/docs/it/network-config#streaming-idle-watchdogs) |443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Imposta a `1` per forzare l'abilitazione del watchdog di inattività dello streaming a livello di byte, oppure a `0` per forzarne la disabilitazione. `0` disattiva anche la [scadenza del primo byte](/docs/it/network-config#streaming-idle-watchdogs) sulle connessioni in cui tale scadenza è attiva. Quando non è impostata, il watchdog è abilitato per impostazione predefinita per le connessioni dirette all'API Anthropic e a [Claude Platform on AWS](/docs/it/claude-platform-on-aws), e per le risposte in streaming sulle connessioni tramite [gateway](/docs/it/gateways) raggiunte attraverso `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL`; prima della v2.1.222 non era attivo su quelle connessioni tramite gateway, quindi il watchdog a livello di eventi poteva segnalare uno stallo anche mentre arrivavano i ping keep-alive. Per i timeout e per come interagiscono i timer, consulta [Watchdog di inattività dello streaming](/docs/it/network-config#streaming-idle-watchdogs) |

444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Imposta a `1` per abilitare il watchdog di inattività dello streaming a livello di byte sulle risposte `vnd.amazon.eventstream` di Amazon Bedrock, il che abilita anche la [scadenza del primo byte](/docs/it/network-config#streaming-idle-watchdogs) sulle richieste in streaming a Bedrock. Disattivato per impostazione predefinita. Configura il timeout con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Imposta a `1` per abilitare il watchdog di inattività dello streaming a livello di byte sulle risposte `vnd.amazon.eventstream` di Amazon Bedrock, il che abilita anche la [scadenza del primo byte](/docs/it/network-config#streaming-idle-watchdogs) sulle richieste in streaming a Bedrock. Disattivato per impostazione predefinita. Configura il timeout con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Imposta a `0` per forzare la disabilitazione del watchdog di inattività dello streaming a livello di eventi, oppure a `1` per forzarne l'abilitazione. Quando non è impostata, il watchdog è attivo per impostazione predefinita per tutti i provider. Prima della v2.1.196, il valore predefinito in assenza di impostazione era controllato dal server sull'API Anthropic diretta e disattivato sugli altri provider. Configura il timeout con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; per gli altri timer di stallo che funzionano insieme a questo, consulta [Watchdog di inattività dello streaming](/docs/it/network-config#streaming-idle-watchdogs) |445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Imposta a `0` per forzare la disabilitazione del watchdog di inattività dello streaming a livello di eventi, oppure a `1` per forzarne l'abilitazione. Quando non è impostata, il watchdog è attivo per impostazione predefinita per tutti i provider. Prima della v2.1.196, il valore predefinito in assenza di impostazione era controllato dal server sull'API Anthropic diretta e disattivato sugli altri provider. Configura il timeout con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; per gli altri timer di stallo che funzionano insieme a questo, consulta [Watchdog di inattività dello streaming](/docs/it/network-config#streaming-idle-watchdogs) |

446| `CLAUDE_ENV_FILE` | Percorso di uno script di shell il cui contenuto Claude Code esegue prima di ogni comando Bash nello stesso processo di shell, in modo che le esportazioni nel file siano visibili al comando. Usala per mantenere l'attivazione di virtualenv o conda tra un comando e l'altro. Viene anche popolata dinamicamente dagli hook [SessionStart](/docs/it/hooks#persist-environment-variables), [Setup](/docs/it/hooks#setup), [CwdChanged](/docs/it/hooks#cwdchanged) e [FileChanged](/docs/it/hooks#filechanged) |446| `CLAUDE_ENV_FILE` | Percorso di uno script di shell il cui contenuto Claude Code esegue prima di ogni comando Bash nello stesso processo di shell, in modo che gli export nel file siano visibili al comando. Usala per mantenere l'attivazione di virtualenv o conda tra i comandi. Anche i comandi PowerShell ricevono le sue variabili, nella v2.1.296 o successiva, alle condizioni descritte in [Variabili persistenti nei comandi PowerShell](/docs/it/hooks#persisted-variables-in-powershell-commands). Viene anche popolata dinamicamente dagli hook [SessionStart](/docs/it/hooks#persist-environment-variables), [Setup](/docs/it/hooks#setup), [CwdChanged](/docs/it/hooks#cwdchanged) e [FileChanged](/docs/it/hooks#filechanged) |

447| `CLAUDE_JOB_DIR` | Impostata da Claude Code in ogni [sessione in background](/docs/it/agent-view) sulla directory `~/.claude/jobs/<id>` di quella sessione. I comandi di shell eseguiti dalla sessione la ereditano. Scrivi i file temporanei in [`$CLAUDE_JOB_DIR/tmp`](/docs/it/agent-view#where-state-is-stored). Le chiamate `Write` ed `Edit` di Claude in quella posizione non chiedono il permesso, e la directory viene rimossa quando la sessione viene eliminata |447| `CLAUDE_JOB_DIR` | Impostata da Claude Code in ogni [sessione in background](/docs/it/agent-view) sulla directory `~/.claude/jobs/<id>` di quella sessione. I comandi di shell eseguiti dalla sessione la ereditano. Scrivi i file temporanei in [`$CLAUDE_JOB_DIR/tmp`](/docs/it/agent-view#where-state-is-stored). Le chiamate `Write` ed `Edit` di Claude in quella posizione non chiedono il permesso, e la directory viene rimossa quando la sessione viene eliminata |

448| `CLAUDE_PID` | Claude Code la imposta sul proprio ID di processo nei sottoprocessi che avvia: i comandi degli strumenti Bash e PowerShell e i comandi degli hook. Su Linux, l'integrazione con la shell dello strumento Bash la usa per rifiutare un pattern `pkill` che corrisponderebbe al processo stesso di Claude Code; consulta [il riferimento agli errori](/docs/it/errors#pkill-pattern-matches-the-claude-code-process). Leggila dai tuoi script per identificare o inviare segnali deliberatamente al processo padre di Claude Code. Richiede Claude Code v2.1.214 o successive |448| `CLAUDE_PID` | Claude Code la imposta sul proprio ID di processo nei sottoprocessi che avvia: i comandi degli strumenti Bash e PowerShell e i comandi degli hook. Su Linux, l'integrazione con la shell dello strumento Bash la usa per rifiutare un pattern `pkill` che corrisponderebbe al processo stesso di Claude Code; consulta [il riferimento agli errori](/docs/it/errors#pkill-pattern-matches-the-claude-code-process). Leggila dai tuoi script per identificare o inviare segnali deliberatamente al processo padre di Claude Code. Richiede Claude Code v2.1.214 o successive |

449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefisso per i nomi delle sessioni [Remote Control](/docs/it/remote-control) generati automaticamente quando non viene fornito un nome esplicito. Il valore predefinito è l'hostname della tua macchina, che produce nomi come `myhost-graceful-unicorn`. Il flag della CLI `--remote-control-session-name-prefix` imposta lo stesso valore per una singola invocazione |449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefisso per i nomi delle sessioni [Remote Control](/docs/it/remote-control) generati automaticamente quando non viene fornito un nome esplicito. Il valore predefinito è l'hostname della tua macchina, che produce nomi come `myhost-graceful-unicorn`. Il flag della CLI `--remote-control-session-name-prefix` imposta lo stesso valore per una singola invocazione |

errors.md +74 −11

Details

37| `Connection lost while your computer was asleep` | [Tentativi automatici](#automatic-retries) |37| `Connection lost while your computer was asleep` | [Tentativi automatici](#automatic-retries) |

38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |

39| `Auto mode could not evaluate this action and is blocking it for safety` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |39| `Auto mode could not evaluate this action and is blocking it for safety` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Not run · auto mode's check had no usable answer` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Auto mode classifier transcript exceeded context window` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |41| `Auto mode classifier transcript exceeded context window` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |

41| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |42| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |

42| `The server-side auto mode classifier gave no verdict` | [Errori del server](#the-server-returned-no-safety-verdict) |43| `The server-side auto mode classifier gave no verdict` | [Errori del server](#the-server-returned-no-safety-verdict) |


247| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [Errori della riga di comando](#windows-reported-an-error-ebadf) |248| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [Errori della riga di comando](#windows-reported-an-error-ebadf) |

248| `Cannot switch renderers in this session` | [Errori della riga di comando](#cannot-switch-renderers-in-this-session) |249| `Cannot switch renderers in this session` | [Errori della riga di comando](#cannot-switch-renderers-in-this-session) |

249| `Cannot switch renderers while work is running in the background` | [Errori della riga di comando](#cannot-switch-renderers-in-this-session) |250| `Cannot switch renderers while work is running in the background` | [Errori della riga di comando](#cannot-switch-renderers-in-this-session) |

251| `Claude Code couldn't restart` | [Errori della riga di comando](#claude-code-couldnt-restart) |

250| `Couldn't open Claude Desktop` | [Errori della riga di comando](#couldnt-open-claude-desktop) |252| `Couldn't open Claude Desktop` | [Errori della riga di comando](#couldnt-open-claude-desktop) |

251| `Failed to open Claude Desktop. Please try opening it manually.` | [Errori della riga di comando](#couldnt-open-claude-desktop) |253| `Failed to open Claude Desktop. Please try opening it manually.` | [Errori della riga di comando](#couldnt-open-claude-desktop) |

252| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Errori della riga di comando](#terminal-setup-left-your-zed-keymap-unchanged) |254| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Errori della riga di comando](#terminal-setup-left-your-zed-keymap-unchanged) |


262| `Marketplace "<name>" is already added from a different source` | [Errori dei plugin](#marketplace-is-already-added-from-a-different-source) |264| `Marketplace "<name>" is already added from a different source` | [Errori dei plugin](#marketplace-is-already-added-from-a-different-source) |

263| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Errori dei plugin](#marketplace-name-is-another-spelling-of-a-reserved-name) |265| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Errori dei plugin](#marketplace-name-is-another-spelling-of-a-reserved-name) |

264| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |266| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |

267| `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it` | [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting#claude-code-reserves-this-name) |

265| `Marketplace "<name>" is added but ignored` | [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting#marketplace-is-added-but-ignored) |268| `Marketplace "<name>" is added but ignored` | [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting#marketplace-is-added-but-ignored) |

266| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting#marketplace-is-added-but-ignored) |269| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting#marketplace-is-added-but-ignored) |

267| `references ${user_config.*} in a shell-form command` | [Errori dei plugin](#plugin-command-references-user-config) |270| `references ${user_config.*} in a shell-form command` | [Errori dei plugin](#plugin-command-references-user-config) |


308| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [Errori degli strumenti](#disk-quota-or-temp-filesystem-is-full) |311| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [Errori degli strumenti](#disk-quota-or-temp-filesystem-is-full) |

309| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [Errori degli strumenti](#disk-quota-or-temp-filesystem-is-full) |312| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [Errori degli strumenti](#disk-quota-or-temp-filesystem-is-full) |

310| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Errori degli strumenti](#disk-quota-or-temp-filesystem-is-full) |313| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Errori degli strumenti](#disk-quota-or-temp-filesystem-is-full) |

314| `File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary` | [Errori degli strumenti](#file-is-not-valid-utf-8) |

311| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Errori degli strumenti](#the-source-file-is-not-valid-utf-8-text) |315| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Errori degli strumenti](#the-source-file-is-not-valid-utf-8-text) |

312| `the source file has the replacement character U+FFFD` | [Errori degli strumenti](#the-source-file-is-not-valid-utf-8-text) |316| `the source file has the replacement character U+FFFD` | [Errori degli strumenti](#the-source-file-is-not-valid-utf-8-text) |

313| `Not published: that file is on a network share` | [Errori degli strumenti](#not-published-that-file-is-on-a-network-share) |317| `Not published: that file is on a network share` | [Errori degli strumenti](#not-published-that-file-is-on-a-network-share) |


334| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [Errori della sessione in background](#session-isnt-responding) |338| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [Errori della sessione in background](#session-isnt-responding) |

335| `Session <id> was stopped while the respawn was in flight` | [Errori della sessione in background](#session-was-stopped-while-the-respawn-was-in-flight) |339| `Session <id> was stopped while the respawn was in flight` | [Errori della sessione in background](#session-was-stopped-while-the-respawn-was-in-flight) |

336| `This session was running agent '<name>', which is no longer available` | [Errori della sessione in background](#session-agent-no-longer-available) |340| `This session was running agent '<name>', which is no longer available` | [Errori della sessione in background](#session-agent-no-longer-available) |

341| `This session restarted <time> after its next /loop wakeup was due, so that wakeup will not fire` | [Errori della sessione in background](#restarted-after-its-next-loop-wakeup-was-due) |

337| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [Errori della sessione in background](#claude_code_process_wrapper-launcher-errors) |342| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [Errori della sessione in background](#claude_code_process_wrapper-launcher-errors) |

338| `EUNKNOWN: unknown error, uv_spawn` | [Errori della sessione in background](#eunknown-when-starting-a-background-session) |343| `EUNKNOWN: unknown error, uv_spawn` | [Errori della sessione in background](#eunknown-when-starting-a-background-session) |

339| `EACCES: permission denied, posix_spawn` | [Errori della sessione in background](#eacces-when-starting-a-background-session) |344| `EACCES: permission denied, posix_spawn` | [Errori della sessione in background](#eacces-when-starting-a-background-session) |


439| :- | :- | :- |444| :- | :- | :- |

440| [`CLAUDE_CODE_MAX_RETRIES`](/docs/it/env-vars) | 10 | Numero di tentativi di riprovazione. Limitato a 15 a partire dalla v2.1.186; a partire dalla v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` aumenta il valore predefinito e rimuove il limite. Abbassalo per far emergere i guasti più velocemente negli script. |445| [`CLAUDE_CODE_MAX_RETRIES`](/docs/it/env-vars) | 10 | Numero di tentativi di riprovazione. Limitato a 15 a partire dalla v2.1.186; a partire dalla v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` aumenta il valore predefinito e rimuove il limite. Abbassalo per far emergere i guasti più velocemente negli script. |

441| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/it/env-vars) | unset | Imposta su `1` in sessioni non presenziate come i lavori CI per ritentare gli errori di capacità `429` e `529` indefinitamente invece di fallire dopo `CLAUDE_CODE_MAX_RETRIES` tentativi. Claude Code fallisce immediatamente quando una richiesta a velocità standard riceve un `429` che segnala un limite di spesa o crediti di utilizzo esauriti, anche uno da un [gateway spend cap](#spend-limit-reached) che si ripristina secondo una pianificazione. Prima della v2.1.239, il watchdog ritentava questi indefinitamente. Per le richieste in modalità veloce, vedi [Handle rate limits](/docs/it/fast-mode#handle-rate-limits). Sulla v2.1.199 o successivo aumenta anche il conteggio dei tentativi predefinito per altri errori transitori, come errori del server, timeout e connessioni interrotte, a 300, approssimativamente tre ore di backoff, e rimuove il limite di 15 su `CLAUDE_CODE_MAX_RETRIES` se imposti esplicitamente quella variabile. |446| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/it/env-vars) | unset | Imposta su `1` in sessioni non presenziate come i lavori CI per ritentare gli errori di capacità `429` e `529` indefinitamente invece di fallire dopo `CLAUDE_CODE_MAX_RETRIES` tentativi. Claude Code fallisce immediatamente quando una richiesta a velocità standard riceve un `429` che segnala un limite di spesa o crediti di utilizzo esauriti, anche uno da un [gateway spend cap](#spend-limit-reached) che si ripristina secondo una pianificazione. Prima della v2.1.239, il watchdog ritentava questi indefinitamente. Per le richieste in modalità veloce, vedi [Handle rate limits](/docs/it/fast-mode#handle-rate-limits). Sulla v2.1.199 o successivo aumenta anche il conteggio dei tentativi predefinito per altri errori transitori, come errori del server, timeout e connessioni interrotte, a 300, approssimativamente tre ore di backoff, e rimuove il limite di 15 su `CLAUDE_CODE_MAX_RETRIES` se imposti esplicitamente quella variabile. |

447| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/it/env-vars) | unset | Tempo massimo in millisecondi che ogni richiesta API trascorre in attesa durante gli errori `429` e `529` quando `CLAUDE_CODE_RETRY_WATCHDOG` è impostato. Se non è impostato, l'attesa non ha limite. Richiede Claude Code v2.1.295 o successivo. |

442| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/it/env-vars) | 500 | Ritardo iniziale in millisecondi del backoff tra i nuovi tentativi di una richiesta che l'API rifiuta con un errore di sovraccarico `529`. Aumentalo, fino a 32000, per distribuire i nuovi tentativi su un intervallo più lungo quando l'API è al limite della capacità. Non ha effetto quando `CLAUDE_CODE_RETRY_WATCHDOG` è impostato su `1`, o quando la richiesta rifiutata è stata inviata in [modalità veloce](/docs/it/fast-mode#handle-rate-limits). Richiede Claude Code v2.1.292 o successivo. |448| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/it/env-vars) | 500 | Ritardo iniziale in millisecondi del backoff tra i nuovi tentativi di una richiesta che l'API rifiuta con un errore di sovraccarico `529`. Aumentalo, fino a 32000, per distribuire i nuovi tentativi su un intervallo più lungo quando l'API è al limite della capacità. Non ha effetto quando `CLAUDE_CODE_RETRY_WATCHDOG` è impostato su `1`, o quando la richiesta rifiutata è stata inviata in [modalità veloce](/docs/it/fast-mode#handle-rate-limits). Richiede Claude Code v2.1.292 o successivo. |

443| [`API_TIMEOUT_MS`](/docs/it/env-vars) | 600000 | Timeout per richiesta in millisecondi. Aumentalo per reti lente o proxy. Limita anche quanto a lungo Claude Code attende le intestazioni di risposta, descritto in [No response from API](#no-response-from-api). |449| [`API_TIMEOUT_MS`](/docs/it/env-vars) | 600000 | Timeout per richiesta in millisecondi. Aumentalo per reti lente o proxy. Limita anche quanto a lungo Claude Code attende le intestazioni di risposta, descritto in [No response from API](#no-response-from-api). |

444| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/it/env-vars) | unset | Limite di nuovi invii di una [richiesta non in streaming](#streaming-response-ended-before-any-complete-data-was-received) che va in timeout. Al raggiungimento del limite, la richiesta fallisce. Una risposta di Claude che impiega più del timeout per essere generata va di nuovo in timeout a ogni nuovo invio, quindi imposta un numero basso come `0` per fallire prima. Ogni tentativo non in streaming va in timeout dopo 300 secondi in una sessione locale, oppure dopo `API_TIMEOUT_MS` quando imposti un valore positivo. Richiede Claude Code v2.1.285 o successivo. |450| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/it/env-vars) | unset | Limite di nuovi invii di una [richiesta non in streaming](#streaming-response-ended-before-any-complete-data-was-received) che va in timeout. Al raggiungimento del limite, la richiesta fallisce. Una risposta di Claude che impiega più del timeout per essere generata va di nuovo in timeout a ogni nuovo invio, quindi imposta un numero basso come `0` per fallire prima. Ogni tentativo non in streaming va in timeout dopo 300 secondi in una sessione locale, oppure dopo `API_TIMEOUT_MS` quando imposti un valore positivo. Richiede Claude Code v2.1.285 o successivo. |


596<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.602<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.

597```603```

598 604 

605In una sessione interattiva, sotto la chiamata allo strumento appare una riga attenuata `Not run · auto mode's check had no usable answer` al posto di questo messaggio. Premi `Ctrl+O` per leggere il messaggio nel [visualizzatore della trascrizione](/docs/it/interactive-mode#transcript-viewer). I rifiuti descritti in [The server returned no safety verdict](#the-server-returned-no-safety-verdict) mostrano la stessa riga. Prima della v2.1.296, il messaggio appariva sotto la chiamata come errore in rosso.

606 

599Quando Claude Code riesce a determinare la categoria dell'errore, la indica tra parentesi dopo `temporarily unavailable`, ad esempio `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Le categorie sono `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)` e `(connection failed)`. Se `(timed out)` o `(connection failed)` si ripete, controlla la tua connessione; consulta [Unable to connect to API](#unable-to-connect-to-api). Prima della v2.1.229, il messaggio non indicava mai una categoria e diceva `Wait briefly and then try this action again`.607Quando Claude Code riesce a determinare la categoria dell'errore, la indica tra parentesi dopo `temporarily unavailable`, ad esempio `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Le categorie sono `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)` e `(connection failed)`. Se `(timed out)` o `(connection failed)` si ripete, controlla la tua connessione; consulta [Unable to connect to API](#unable-to-connect-to-api). Prima della v2.1.229, il messaggio non indicava mai una categoria e diceva `Wait briefly and then try this action again`.

600 608 

601Quando nessuna categoria è adatta, il messaggio appare senza categoria tra parentesi; più errori diversi producono questa forma. Su [Amazon Bedrock](/docs/it/amazon-bedrock), incluso l'[endpoint Mantle](/docs/it/amazon-bedrock#use-the-mantle-endpoint), appare anche quando il tuo account AWS non può invocare il modello indicato nel messaggio, e quell'errore si ripete a ogni nuovo tentativo finché al tuo account non viene concesso l'accesso al modello.609Quando nessuna categoria è adatta, il messaggio appare senza categoria tra parentesi; più errori diversi producono questa forma. Su [Amazon Bedrock](/docs/it/amazon-bedrock), incluso l'[endpoint Mantle](/docs/it/amazon-bedrock#use-the-mantle-endpoint), appare anche quando il tuo account AWS non può invocare il modello indicato nel messaggio, e quell'errore si ripete a ogni nuovo tentativo finché al tuo account non viene concesso l'accesso al modello.


1900 1908 

1901Claude Code salta questo controllo quando un [file di impostazioni gestite, una policy MDM o un policy helper](/docs/it/managed-settings) imposta [`forceLoginMethod`](/docs/it/settings-reference#forceloginmethod) a `"gateway"`, o imposta [`forceLoginGatewayUrl`](/docs/it/settings-reference#forcelogingatewayurl) senza `forceLoginMethod`. Con entrambe le configurazioni, Claude Code apre il passaggio di accesso sulla schermata **Cloud gateway** piuttosto che su un metodo di accesso Anthropic. Claude Code salta anche il controllo quando una fonte di impostazioni gestite sulla macchina esiste ma non può essere letta, poiché quella fonte potrebbe contenere la configurazione del gateway. Prima della v2.1.247, Claude Code eseguiva il controllo anche sotto questa configurazione e usciva con questo errore quando gli endpoint di Anthropic non erano raggiungibili.1909Claude Code salta questo controllo quando un [file di impostazioni gestite, una policy MDM o un policy helper](/docs/it/managed-settings) imposta [`forceLoginMethod`](/docs/it/settings-reference#forceloginmethod) a `"gateway"`, o imposta [`forceLoginGatewayUrl`](/docs/it/settings-reference#forcelogingatewayurl) senza `forceLoginMethod`. Con entrambe le configurazioni, Claude Code apre il passaggio di accesso sulla schermata **Cloud gateway** piuttosto che su un metodo di accesso Anthropic. Claude Code salta anche il controllo quando una fonte di impostazioni gestite sulla macchina esiste ma non può essere letta, poiché quella fonte potrebbe contenere la configurazione del gateway. Prima della v2.1.247, Claude Code eseguiva il controllo anche sotto questa configurazione e usciva con questo errore quando gli endpoint di Anthropic non erano raggiungibili.

1902 1910 

1911Claude Code salta il controllo anche su una macchina senza impostazioni gestite quando il tuo `~/.claude/settings.json` [specifica un gateway](/docs/it/claude-apps-gateway#set-the-gateway-url-in-user-settings) con `forceLoginMethod` e `forceLoginGatewayUrl`. Prima della v2.1.295, Claude Code eseguiva il controllo in quel caso.

1912 

1903**Cosa fare:**1913**Cosa fare:**

1904 1914 

1905* Se il messaggio nomina una variabile proxy, controlla che il suo valore punti al proxy giusto e chiedi al tuo team di rete di consentire connessioni HTTPS attraverso di esso all'host nel messaggio. Vedi [Network configuration](/docs/it/network-config).1915* Se il messaggio nomina una variabile proxy, controlla che il suo valore punti al proxy giusto e chiedi al tuo team di rete di consentire connessioni HTTPS attraverso di esso all'host nel messaggio. Vedi [Network configuration](/docs/it/network-config).


3412 3422 

3413Claude Code mostra lo stesso errore per qualsiasi skill che [inietta contesto dinamico](/docs/it/skills#when-an-injected-command-fails), e un comando iniettato non riuscito interrompe l'invocazione di quella skill. Due stringhe analoghe vengono generate prima ancora che il comando venga eseguito:3423Claude Code mostra lo stesso errore per qualsiasi skill che [inietta contesto dinamico](/docs/it/skills#when-an-injected-command-fails), e un comando iniettato non riuscito interrompe l'invocazione di quella skill. Due stringhe analoghe vengono generate prima ancora che il comando venga eseguito:

3414 3424 

3415* `Shell command permission check failed for pattern "..."`: il controllo dei permessi del comando non lo ha consentito. [Controlli dei permessi sui comandi iniettati](/docs/it/skills#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`3425* `Shell command permission check failed for pattern "..."`: il controllo dei permessi del comando non lo ha consentito. [Controlli dei permessi sui comandi inseriti](/docs/it/skills#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`

3416* ``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](/docs/it/skills#how-injected-commands-run)3426* ``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 oppure modifica il frontmatter in `shell: powershell`. Consulta [How injected commands run](/docs/it/skills#how-injected-commands-run)

3417 3427 

3418**Cosa fare:**3428**Cosa fare:**

3419 3429 


3562 3572 

3563* **Non hai passato un branch di base**: Claude Code ha effettuato il confronto con il branch predefinito del repository e suggerisce di passare esplicitamente il tuo branch di base, come nell'esempio sopra3573* **Non hai passato un branch di base**: Claude Code ha effettuato il confronto con il branch predefinito del repository e suggerisce di passare esplicitamente il tuo branch di base, come nell'esempio sopra

3564* **Hai passato un branch di base che era già nel tuo clone**: il suggerimento riporta ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3574* **Hai passato un branch di base che era già nel tuo clone**: il suggerimento riporta ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3565* **Hai passato un branch di base che non era nel tuo clone**: Claude Code ne ha eseguito il fetch da origin prima del confronto. Il suggerimento riporta ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; quando Claude Code non riesce a stabilire se il tuo clone è shallow, suggerisce invece `git fetch --unshallow origin`. Prima della v2.1.221, il suggerimento proponeva `git fetch --unshallow origin` per ogni branch di base recuperato, e su un clone completo quel comando fallisce con `fatal: --unshallow on a complete repository does not make sense`.3575* **Hai passato un branch base che non era presente nel tuo clone**: Claude Code ne ha eseguito il fetch da origin prima del confronto. Il suggerimento riporta ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; quando Claude Code non riesce a stabilire se il tuo clone è shallow, suggerisce invece `git fetch --unshallow origin`. Prima della v2.1.221, il suggerimento proponeva `git fetch --unshallow origin` per ogni branch base recuperato tramite fetch, e su un clone completo quel comando non riesce con `fatal: --unshallow on a complete repository does not make sense`.

3566 3576 

3567**Cosa fare:**3577**Cosa fare:**

3568 3578 


3756No conversation found with session ID: <session-id>3766No conversation found with session ID: <session-id>

3757```3767```

3758 3768 

3759Claude Code esce con codice 1 dopo aver mostrato il messaggio. Claude Code [cerca l'ID prima nel progetto corrente, poi in ogni altro progetto su questa macchina](/docs/it/sessions#resume-a-session). Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi worktree git, quindi riprendi dalla directory in cui la sessione ha lavorato per ultima.3769Claude Code esce con codice 1 dopo aver mostrato il messaggio. Claude Code [cerca l'ID prima nel progetto corrente, poi in ogni altro progetto su questa macchina](/docs/it/sessions#where-the-session-picker-looks). Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi worktree git, quindi riprendi dalla directory in cui la sessione ha lavorato per ultima.

3760 3770 

3761Cause comuni:3771Cause comuni:

3762 3772 


3816 3826 

3817* In una sessione avviata senza quelle restrizioni, esegui `/tui fullscreen`, oppure `/tui default` per tornare indietro. Claude Code salva lì l'[impostazione `tui`](/docs/it/settings-reference#tui)3827* In una sessione avviata senza quelle restrizioni, esegui `/tui fullscreen`, oppure `/tui default` per tornare indietro. Claude Code salva lì l'[impostazione `tui`](/docs/it/settings-reference#tui)

3818 3828 

3829<h3 id="claude-code-couldnt-restart">

3830 Claude Code couldn't restart

3831</h3>

3832 

3833Claude Code si stava riavviando, ad esempio per passare al rendering a schermo intero o tornare da esso dopo che hai eseguito [`/tui`](/docs/it/fullscreen#enable-fullscreen-rendering). Ha chiuso la sessione ma non è riuscito ad avviare il nuovo processo, quindi ha stampato questo messaggio ed è terminato con stato 1:

3834 

3835```text theme={null}

3836Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.

3837```

3838 

3839Quando il riavvio non aveva alcuna conversazione da riaprire, ad esempio perché `/tui` era il tuo primo input in una nuova sessione, il messaggio è `Claude Code couldn't restart. Start Claude Code again.`

3840 

3841**Cosa fare:**

3842 

3843* Esegui di nuovo `claude` nella tua shell dalla stessa directory. Se il messaggio diceva che la conversazione è salvata, esegui [`/resume`](/docs/it/sessions#resume-a-session) nella nuova sessione e selezionala

3844* Se i riavvii continuano a non riuscire, avvia Claude Code dalla tua shell con [`claude --debug-file claude-debug.log`](/docs/it/cli-reference#cli-flags). Se un riavvio da quella sessione non riesce, `claude-debug.log` nella directory da cui sei partito registra una riga `Failed to relaunch:` con l'errore del sistema operativo. Includi quella riga quando [segnali il problema](#report-an-error)

3845 

3819<h3 id="couldnt-open-claude-desktop">3846<h3 id="couldnt-open-claude-desktop">

3820 Impossibile aprire Claude Desktop3847 Impossibile aprire Claude Desktop

3821</h3>3848</h3>


4593* Oppure riavvia Claude Code con [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars) impostata su una directory in un file system con spazio disponibile4620* Oppure riavvia Claude Code con [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars) impostata su una directory in un file system con spazio disponibile

4594* Poi chiedi a Claude di eseguire di nuovo il comando. L'output che aveva stampato è andato perso, non troncato4621* Poi chiedi a Claude di eseguire di nuovo il comando. L'output che aveva stampato è andato perso, non troncato

4595 4622 

4623<h3 id="file-is-not-valid-utf-8">

4624 File is not valid UTF-8

4625</h3>

4626 

4627Claude ha usato lo strumento Edit o NotebookEdit su un file i cui byte non si decodificano come UTF-8, e Claude Code ha rifiutato la modifica. Non è stato scritto nulla, quindi il file è rimasto com'era. Questi strumenti salvano l'intero file come UTF-8, il che avrebbe trasformato ogni byte che non riuscivano a decodificare nel carattere di sostituzione `U+FFFD`. Il messaggio compare nel risultato dello strumento:

4628 

4629```text wrap theme={null}

4630File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary. This tool saves the whole file as UTF-8, which would replace every byte it cannot decode with U+FFFD. Nothing was written. Make the change with a shell command that reads and writes the file in its own encoding, or ask the user whether to convert the file to UTF-8 first.

4631```

4632 

4633Anche un file che dovrebbe essere UTF-8 riceve questo messaggio quando contiene anche una sola sequenza di byte non valida, perché il controllo riguarda i byte del file nel loro insieme.

4634 

4635**Cosa fare:**

4636 

4637* Per mantenere il file nella sua codifica attuale, lascia che Claude apporti la modifica con un comando shell che legge e scrive il file in quella codifica, come gli indica il messaggio

4638* Per continuare a modificare il file con lo strumento Edit, convertilo in UTF-8, oppure correggi i byte non validi in un file che dovrebbe essere UTF-8, poi chiedi di nuovo a Claude di apportare la modifica

4639 

4640Prima della v2.1.296, Edit e NotebookEdit applicavano una modifica di questo tipo e salvavano ogni byte che non riuscivano a decodificare come `U+FFFD`. Su quelle versioni, aggiorna Claude Code.

4641 

4596<h3 id="the-source-file-is-not-valid-utf-8-text">4642<h3 id="the-source-file-is-not-valid-utf-8-text">

4597 The source file is not valid UTF-8 text4643 The source file is not valid UTF-8 text

4598</h3>4644</h3>


4752 Comando bloccato dai controlli di isolamento worktree4798 Comando bloccato dai controlli di isolamento worktree

4753</h3>4799</h3>

4754 4800 

4755Claude ha eseguito un comando Bash o Monitor in una [sessione isolata in un worktree](/docs/it/worktrees#how-claude-code-enforces-isolation), e Claude Code l'ha rifiutato per uno di due motivi:4801Claude ha eseguito un comando Bash, [PowerShell](/docs/it/tools-reference#powershell-tool) o [Monitor](/docs/it/tools-reference#monitor-tool) in una [sessione isolata in un worktree](/docs/it/worktrees#how-claude-code-enforces-isolation), e Claude Code l'ha rifiutato per uno di questi motivi:

4756 4802 

4757* Il comando punta git al checkout principale.4803* Il comando verrebbe eseguito nel checkout principale o in un altro worktree. Il messaggio dice che la sua directory di lavoro `resolved to the shared checkout` o `is in a different worktree`.

4758* Claude Code non può verificare dal testo del comando che qualsiasi git che il comando esegue rimanga all'interno del worktree. Un comando che non nomina mai git può comunque essere rifiutato per questo motivo, perché espandere un'indirezione di variabile come `${!name}` o eseguire una sostituzione di funzione Bash come `${ command; }` produce un valore in fase di esecuzione che può essere esso stesso un comando.4804* Un comando Bash o Monitor punta git al checkout principale.

4805* Claude Code non può verificare dal testo di un comando Bash o Monitor che qualsiasi git che il comando esegue rimanga all'interno del worktree. Un comando che non nomina mai git può comunque essere rifiutato per questo motivo, perché espandere un'indirezione di variabile come `${!name}` o eseguire una sostituzione di funzione Bash come `${ command; }` produce un valore in fase di esecuzione che può essere esso stesso un comando.

4759 4806 

4760La parte centrale del messaggio nomina cosa non poteva essere verificato:4807Il messaggio dice `is isolated in the worktree <path>, but this command`, seguito dal motivo, come un comando il cui testo Claude Code non è riuscito a verificare:

4761 4808 

4762```text wrap theme={null}4809```text wrap theme={null}

4763This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.4810This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.


4765 4812 

4766**Cosa fare:**4813**Cosa fare:**

4767 4814 

4768* Di solito nulla: Claude legge il messaggio e riscrive il comando nel modo che la sua frase finale chiede4815* **Git puntato al checkout principale, o testo del comando che non può essere verificato**: nulla. Claude legge il messaggio e riscrive il comando nel modo che la sua frase finale chiede. Se un comando che hai chiesto continua ad essere rifiutato a causa di un'espansione nel suo testo, scrivi il valore contrassegnato letteralmente ed esegui git come suo proprio comando semplice dall'interno del worktree

4769* Se un comando che hai chiesto continua ad essere rifiutato, scrivi il valore contrassegnato letteralmente: sostituisci l'indirezione o la sostituzione con il suo valore, ed esegui git come suo proprio comando semplice dall'interno del worktree

4770* Per agire sul checkout principale di proposito, esegui il comando tu stesso in un terminale al di fuori della sessione4816* Per agire sul checkout principale di proposito, esegui il comando tu stesso in un terminale al di fuori della sessione

4771 4817 

4772<h3 id="this-session-has-no-saved-transcript">4818<h3 id="this-session-has-no-saved-transcript">


4946* Oppure riprendi con `--agent <name>` nominando un agente che esiste, per eseguire invece la sessione come quell'agente4992* Oppure riprendi con `--agent <name>` nominando un agente che esiste, per eseguire invece la sessione come quell'agente

4947* Se l'agente ha ambito di progetto e non hai concesso la fiducia alla directory originale della sessione, esegui Claude Code lì una volta, accetta la finestra di dialogo di fiducia, quindi riprendi di nuovo4993* Se l'agente ha ambito di progetto e non hai concesso la fiducia alla directory originale della sessione, esegui Claude Code lì una volta, accetta la finestra di dialogo di fiducia, quindi riprendi di nuovo

4948 4994 

4995<h3 id="restarted-after-its-next-loop-wakeup-was-due">

4996 This session restarted after its next /loop wakeup was due

4997</h3>

4998 

4999Un [`/loop` autoregolato](/docs/it/scheduled-tasks#let-claude-choose-the-interval) in una [sessione in background](/docs/it/agent-view) si è interrotto. Il processo della sessione è terminato mentre il loop attendeva il suo prossimo risveglio, e quel risveglio è diventato dovuto prima che si avviasse il [processo successivo](/docs/it/agent-view#the-supervisor-process) della sessione. Il risveglio mancato non viene eseguito in ritardo. L'avviso indica di quanto il risveglio era in ritardo quando la sessione si è riavviata:

5000 

5001```text theme={null}

5002This session restarted 12m after its next /loop wakeup was due, so that wakeup will not fire. The loop stays stopped until Claude schedules it again: reply to continue it.

5003```

5004 

5005Prima della v2.1.295, in questa situazione il loop si interrompeva senza alcun avviso.

5006 

5007**Cosa fare:**

5008 

5009* Per continuare il loop, [rispondi alla sessione](/docs/it/agent-view#peek-and-reply) e dillo, ad esempio `keep the loop running`. Claude legge l'avviso insieme alla tua risposta e può pianificare il prossimo risveglio

5010* Se hai finito con il loop, non fare nulla. Si è già interrotto

5011 

4949<h3 id="claude_code_process_wrapper-launcher-errors">5012<h3 id="claude_code_process_wrapper-launcher-errors">

4950 Errori del launcher CLAUDE\_CODE\_PROCESS\_WRAPPER5013 Errori del launcher CLAUDE\_CODE\_PROCESS\_WRAPPER

4951</h3>5014</h3>


5343I percorsi che Claude Code rifiuta in questo modo includono:5406I percorsi che Claude Code rifiuta in questo modo includono:

5344 5407 

5345* Condivisioni UNC come `\\server\share`5408* Condivisioni UNC come `\\server\share`

5346* Percorsi di montaggio automatico come `/net/<host>`, a meno che non abbiate avviato Claude Code da una directory sotto il montaggio automatico di quell'host5409* Percorsi di montaggio automatico come `/net/<host>`, a meno che tu non abbia avviato Claude Code da una directory sotto il montaggio automatico di quell'host. Le letture sotto quel montaggio automatico passano comunque attraverso il [controllo dei percorsi di rete](/docs/it/permissions#network-paths).

5347* Percorsi locali che raggiungono una posizione di rete attraverso un collegamento simbolico o una giunzione5410* Percorsi locali che raggiungono una posizione di rete attraverso un collegamento simbolico o una giunzione

5348 5411 

5349Le lettere di unità mappate e i percorsi `\\wsl$` non contano come percorsi di rete.5412Le lettere di unità mappate e i percorsi `\\wsl$` non contano come percorsi di rete.

Details

27| Claude Security | ✅ Supportato | Disponibile in beta pubblica per i piani Enterprise su [claude.ai/security](https://claude.ai/security) |27| Claude Security | ✅ Supportato | Disponibile in beta pubblica per i piani Enterprise su [claude.ai/security](https://claude.ai/security) |

28| Sessioni Teleport | ✅ Supportato | Sposta le sessioni tra cloud e terminale con `--teleport` |28| Sessioni Teleport | ✅ Supportato | Sposta le sessioni tra cloud e terminale con `--teleport` |

29| Marketplace di plugin | ✅ Supportato | I requisiti delle credenziali differiscono per superficie. Vedere [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes) |29| Marketplace di plugin | ✅ Supportato | I requisiti delle credenziali differiscono per superficie. Vedere [Plugin marketplaces on GHES](#plugin-marketplaces-on-ghes) |

30| Metriche di contribuzione | ✅ Supportato | Consegnate tramite webhook al [dashboard di analisi](/docs/it/analytics) |30| Metriche di contribuzione | ❌ Non supportato | Richiede repository ospitati su github.com. Il [dashboard di analisi](/docs/it/analytics) mostra comunque le metriche di utilizzo per il lavoro nei repository GHES |

31| GitHub Actions | ✅ Supportato | Richiede configurazione manuale del workflow; `/install-github-app` è solo per github.com |31| GitHub Actions | ✅ Supportato | Richiede configurazione manuale del workflow; `/install-github-app` è solo per github.com |

32| Server GitHub MCP | ❌ Non supportato | Il server GitHub MCP non funziona con istanze GHES |32| Server GitHub MCP | ❌ Non supportato | Il server GitHub MCP non funziona con istanze GHES |

33 33 


56 Dalla pagina GitHub App sulla tua istanza GHES, installa l'app sui repository o sulle organizzazioni a cui desideri che Claude acceda. Puoi iniziare con un sottoinsieme e aggiungerne altri in seguito.56 Dalla pagina GitHub App sulla tua istanza GHES, installa l'app sui repository o sulle organizzazioni a cui desideri che Claude acceda. Puoi iniziare con un sottoinsieme e aggiungerne altri in seguito.

57 </Step>57 </Step>

58 58 

59 <Step title="Abilita le funzionalità">59 <Step title="Abilita Code Review">

60 Vai a [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) e abilita [Code Review](/docs/it/code-review#set-up-code-review) e le [metriche di contribuzione](/docs/it/analytics#enable-contribution-metrics) per i tuoi repository GHES utilizzando la stessa configurazione di github.com.60 Vai a [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) e abilita [Code Review](/docs/it/code-review#set-up-code-review) per i tuoi repository GHES utilizzando la stessa configurazione di github.com.

61 </Step>61 </Step>

62</Steps>62</Steps>

63 63 


65 Permessi GitHub App65 Permessi GitHub App

66</h3>66</h3>

67 67 

68Il manifesto configura l'app GitHub con i permessi e gli eventi webhook di seguito, che insieme coprono sessioni cloud, Code Review, Claude Security, marketplace di plugin e metriche di contribuzione:68Il manifesto configura l'app GitHub con i permessi e gli eventi webhook di seguito, che insieme coprono sessioni cloud, Code Review, Claude Security e marketplace di plugin:

69 69 

70| Permesso | Accesso | Utilizzato per |70| Permesso | Accesso | Utilizzato per |

71| :- | :- | :- |71| :- | :- | :- |


270* [Claude Code sul web](/docs/it/claude-code-on-the-web): esegui sessioni Claude Code sull'infrastruttura cloud270* [Claude Code sul web](/docs/it/claude-code-on-the-web): esegui sessioni Claude Code sull'infrastruttura cloud

271* [Code Review](/docs/it/code-review): revisioni automatiche dei PR271* [Code Review](/docs/it/code-review): revisioni automatiche dei PR

272* [Marketplace di plugin](/docs/it/plugins/host-marketplace): crea e distribuisci cataloghi di plugin272* [Marketplace di plugin](/docs/it/plugins/host-marketplace): crea e distribuisci cataloghi di plugin

273* [Analytics](/docs/it/analytics): traccia l'utilizzo e le metriche di contribuzione273* [Analytics](/docs/it/analytics): traccia l'utilizzo di Claude Code in tutta la tua organizzazione

274* [Impostazioni gestite](/docs/it/settings): configurazione della policy a livello di organizzazione274* [Impostazioni gestite](/docs/it/settings): configurazione della policy a livello di organizzazione

275* [Configurazione di rete](/docs/it/network-config): requisiti di firewall e whitelist IP275* [Configurazione di rete](/docs/it/network-config): requisiti di firewall e whitelist IP

headless.md +7 −5

Details

89* **Watch di [Monitor](/docs/it/tools-reference#monitor-tool)**: l'esecuzione attende finché il watch non scade o il limite di 10 minuti termina l'attesa, a seconda di quale evento si verifica prima. Mentre attende, Claude continua a rispondere a ciò che il watch segnala. Per impostazione predefinita, un watch scade cinque minuti dopo che Claude lo avvia.89* **Watch di [Monitor](/docs/it/tools-reference#monitor-tool)**: l'esecuzione attende finché il watch non scade o il limite di 10 minuti termina l'attesa, a seconda di quale evento si verifica prima. Mentre attende, Claude continua a rispondere a ciò che il watch segnala. Per impostazione predefinita, un watch scade cinque minuti dopo che Claude lo avvia.

90* **Risvegli in sospeso**: in un'esecuzione il cui prompt hai passato come testo anziché con `--input-format stream-json`, quando Claude ha pianificato un [risveglio `/loop` a ritmo autonomo](/docs/it/scheduled-tasks#let-claude-choose-the-interval), l'esecuzione attende che ogni risveglio scatti ed esegue la relativa iterazione finché il [loop non termina](/docs/it/scheduled-tasks#stop-a-loop), anche oltre il limite di 10 minuti.90* **Risvegli in sospeso**: in un'esecuzione il cui prompt hai passato come testo anziché con `--input-format stream-json`, quando Claude ha pianificato un [risveglio `/loop` a ritmo autonomo](/docs/it/scheduled-tasks#let-claude-choose-the-interval), l'esecuzione attende che ogni risveglio scatti ed esegue la relativa iterazione finché il [loop non termina](/docs/it/scheduled-tasks#stop-a-loop), anche oltre il limite di 10 minuti.

91 91 

92Quando stderr è un terminale e l'esecuzione ha atteso cinque secondi, Claude Code stampa su stderr una riga che inizia con `Waiting for background work to finish` e indica il lavoro in questione. Con l'[output `json` o `stream-json`](#get-structured-output), la riga viene stampata solo quando stdout non è un terminale, quindi il JSON letto dal tuo script non la contiene mai.

93 

92Se l'esecuzione raggiunge il limite di [`--max-budget-usd`](/docs/it/cli-reference#cli-flags), Claude Code interrompe il lavoro in background rimanente invece di attendere.94Se l'esecuzione raggiunge il limite di [`--max-budget-usd`](/docs/it/cli-reference#cli-flags), Claude Code interrompe il lavoro in background rimanente invece di attendere.

93 95 

94Quando il lavoro in background avvia un altro turno, l'esecuzione stampa il risultato di ogni turno con l'output `text` predefinito e il risultato dell'ultimo turno con l'output `json`. Prima della v2.1.295, l'esecuzione stampava solo il risultato dell'ultimo turno anche con l'output `text`.96Quando il lavoro in background avvia un altro turno, l'esecuzione stampa il risultato di ogni turno con l'output `text` predefinito e il risultato dell'ultimo turno con l'output `json`. Prima della v2.1.295, l'esecuzione stampava solo il risultato dell'ultimo turno anche con l'output `text`.


296 298 

297Quando una directory `--plugin-dir` o un archivio stesso non riesce a caricarsi, la sua voce `plugin_errors` include il percorso assoluto risolto come `path`. Usalo per capire quale dei vari valori `--plugin-dir` ha fallito. Il campo `path` richiede Claude Code v2.1.283 o successivo.299Quando una directory `--plugin-dir` o un archivio stesso non riesce a caricarsi, la sua voce `plugin_errors` include il percorso assoluto risolto come `path`. Usalo per capire quale dei vari valori `--plugin-dir` ha fallito. Il campo `path` richiede Claude Code v2.1.283 o successivo.

298 300 

299Utilizza i campi del server MCP allo stesso modo. Quando passi [`--mcp-config`](/docs/it/cli-reference#cli-flags) con `-p`, Claude Code attende i server ancora in sospeso prima di eseguire il primo turno, fino al timeout di avvio [`MCP_TIMEOUT`](/docs/it/env-vars), 30 secondi per impostazione predefinita. Un server remoto con un [elenco di strumenti memorizzato nella cache](/docs/it/agent-sdk/mcp#connection-timing) salta l'attesa, mostra `pending` in `system/init` e si connette alla sua prima chiamata a uno strumento. L'attesa richiede Claude Code v2.1.221 o successivo.301Utilizza i campi del server MCP allo stesso modo. Quando passi [`--mcp-config`](/docs/it/cli-reference#cli-flags) con `-p`, Claude Code attende i server ancora in sospeso prima di eseguire il primo turno, fino al timeout di avvio [`MCP_TIMEOUT`](/docs/it/env-vars), 30 secondi per impostazione predefinita. Un server remoto con un [elenco di strumenti memorizzato nella cache](/docs/it/agent-sdk/mcp#connection-timing) salta l'attesa, mostra `pending` in `system/init` e si connette alla sua prima chiamata a uno strumento. In un [ambiente self-hosted](/docs/it/self-hosted-environments-configuration#connection-timing), si applica invece un'attesa più breve. L'attesa richiede Claude Code v2.1.221 o successivo.

300 302 

301Claude Code convalida ogni voce `--mcp-config` all'avvio e salta le voci che non superano la convalida, ad esempio una voce `url` senza `type`. L'esecuzione continua ed esce correttamente, quindi controlla questi campi per rilevare un server che non è mai stato caricato:303Claude Code convalida ogni voce `--mcp-config` all'avvio e salta le voci che non superano la convalida, ad esempio una voce `url` senza `type`. L'esecuzione continua ed esce correttamente, quindi controlla questi campi per rilevare un server che non è mai stato caricato:

302 304 


327 Approvare automaticamente gli strumenti329 Approvare automaticamente gli strumenti

328</h3>330</h3>

329 331 

330Utilizza `--allowedTools` per consentire a Claude di utilizzare determinati strumenti senza chiedere. Elencare `Read` e `Edit` consente a Claude di leggere e modificare file senza chiedere il permesso. Elencare `Bash` fa lo stesso per i comandi shell, tranne in un'esecuzione che inizia in [modalità auto](/docs/it/permission-modes#how-auto-mode-evaluates-actions), dove Claude Code scarta una voce `Bash` semplice in quanto regola allow troppo ampia e la modalità auto valuta invece ogni comando. Questo esempio esegue una suite di test e corregge gli errori con questi tre strumenti elencati:332Utilizza `--allowedTools` per consentire a Claude di utilizzare determinati strumenti senza chiedere. Elencare `Read` e `Edit` consente a Claude di leggere e modificare file senza chiedere il permesso, tranne per le letture da [percorsi di rete](/docs/it/permissions#network-paths). Elencare `Bash` fa lo stesso per i comandi shell, tranne in un'esecuzione che inizia in [modalità auto](/docs/it/permission-modes#how-auto-mode-evaluates-actions), dove Claude Code scarta una voce `Bash` semplice in quanto regola allow troppo ampia e la modalità auto valuta invece ogni comando. Questo esempio esegue una suite di test e corregge gli errori con questi tre strumenti elencati:

331 333 

332```bash theme={null}334```bash theme={null}

333claude -p "Run the test suite and fix any failures" \335claude -p "Run the test suite and fix any failures" \


337Per impostare una linea di base per l'intera sessione invece di elencare i singoli strumenti, passa una [modalità di permesso](/docs/it/permission-modes). Un'esecuzione in cui nulla imposta una modalità di permesso adotta la [modalità di permesso iniziale integrata](/docs/it/permission-modes#which-mode-a-session-starts-in), che può essere `auto`, quindi passa quella che desideri:339Per impostare una linea di base per l'intera sessione invece di elencare i singoli strumenti, passa una [modalità di permesso](/docs/it/permission-modes). Un'esecuzione in cui nulla imposta una modalità di permesso adotta la [modalità di permesso iniziale integrata](/docs/it/permission-modes#which-mode-a-session-starts-in), che può essere `auto`, quindi passa quella che desideri:

338 340 

339* **`auto`**: passa `--permission-mode auto` per avere un classificatore che esamini la maggior parte delle azioni invece di te341* **`auto`**: passa `--permission-mode auto` per avere un classificatore che esamini la maggior parte delle azioni invece di te

340* **`dontAsk`**: Claude Code nega ogni chiamata che altrimenti richiederebbe conferma, il che è utile per esecuzioni CI bloccate. Le azioni che non necessitano di approvazione in modalità Manual vengono comunque eseguite, come le letture di file nelle tue directory di lavoro e il [set di comandi di sola lettura](/docs/it/permissions#read-only-commands), così come le azioni coperte dalle tue voci `--allowedTools` o dalle regole `permissions.allow`. `AskUserQuestion`, gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) vengono negati anche quando una regola allow corrisponde342* **`dontAsk`**: Claude Code nega ogni chiamata che altrimenti richiederebbe conferma, il che è utile per esecuzioni CI bloccate. Le azioni che non necessitano di approvazione in modalità Manual vengono comunque eseguite, come le letture di file nelle tue directory di lavoro e il [set di comandi di sola lettura](/docs/it/permissions#read-only-commands), così come le azioni coperte dalle tue voci `--allowedTools` o dalle regole `permissions.allow`. `AskUserQuestion`, gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) e le [letture da percorsi di rete](/docs/it/permissions#network-paths) vengono negati anche quando una regola allow corrisponde

341* **`acceptEdits`**: Claude scrive file senza chiedere, e Claude Code approva automaticamente i comandi del filesystem comuni come `mkdir`, `touch`, `mv` e `cp`. Le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) si applicano comunque. A parte il set di comandi di sola lettura, altri comandi shell e richieste di rete hanno ancora bisogno di una voce `--allowedTools` o di una regola `permissions.allow`. Consulta [cosa `acceptEdits` approva automaticamente](/docs/it/permission-modes#auto-approve-file-edits-with-acceptedits-mode) per l'elenco completo343* **`acceptEdits`**: Claude scrive file senza chiedere, e Claude Code approva automaticamente i comandi del filesystem comuni come `mkdir`, `touch`, `mv` e `cp`. Le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) si applicano comunque. A parte il set di comandi di sola lettura, altri comandi shell e richieste di rete hanno ancora bisogno di una voce `--allowedTools` o di una regola `permissions.allow`. Consulta [cosa `acceptEdits` approva automaticamente](/docs/it/permission-modes#auto-approve-file-edits-with-acceptedits-mode) per l'elenco completo

342 344 

343Questo esempio applica le correzioni di lint con `acceptEdits` come linea di base:345Questo esempio applica le correzioni di lint con `acceptEdits` come linea di base:


411 Continuare le conversazioni413 Continuare le conversazioni

412</h3>414</h3>

413 415 

414Utilizza `--continue` per continuare la conversazione più recente, oppure `--resume` con un ID sessione per continuare una conversazione specifica. Su Claude Code v2.1.257 o successivo, quando passi `--continue`, Claude Code apre una [sessione in background](/docs/it/sessions#resume-a-session) che è terminata, ma non una che è ancora in esecuzione. Questo esempio esegue una revisione, quindi invia prompt di follow-up:416Utilizza `--continue` per continuare la conversazione più recente, oppure `--resume` con un ID sessione per continuare una conversazione specifica. Su Claude Code v2.1.257 o successivo, quando passi `--continue`, Claude Code apre una [sessione in background](/docs/it/sessions#where-the-session-picker-looks) che è terminata, ma non una che è ancora in esecuzione. Questo esempio esegue una revisione, quindi invia prompt di follow-up:

415 417 

416```bash theme={null}418```bash theme={null}

417# First request419# First request


429claude -p "Continue that review" --resume "$session_id"431claude -p "Continue that review" --resume "$session_id"

430```432```

431 433 

432Puoi eseguire i due comandi da directory diverse: Claude Code [trova la sessione dal suo ID](/docs/it/sessions#resume-a-session) in qualsiasi progetto su questa macchina. Prima della v2.1.223, Claude Code cercava l'ID solo nella directory del progetto corrente e nei suoi worktree git, quindi dovevi eseguire entrambi i comandi dalla stessa directory.434Puoi eseguire i due comandi da directory diverse: Claude Code [trova la sessione dal suo ID](/docs/it/sessions#where-the-session-picker-looks) in qualsiasi progetto su questa macchina.

433 435 

434Al posto dell'ID sessione, puoi passare a `--resume` il percorso assoluto al file di [trascrizione](/docs/it/sessions#where-transcripts-are-stored) `.jsonl` di una sessione, e Claude Code continua la conversazione memorizzata in quel file.436Al posto dell'ID sessione, puoi passare a `--resume` il percorso assoluto al file di [trascrizione](/docs/it/sessions#where-transcripts-are-stored) `.jsonl` di una sessione, e Claude Code continua la conversazione memorizzata in quel file.

435 437 

hooks.md +39 −12

Details

425 425 

426Tutti gli hook corrispondenti vengono eseguiti in parallelo. Se definisci lo stesso handler in più di un file di impostazioni, viene eseguito una volta. Una copia dello stesso handler di un plugin o skill rimane separata.426Tutti gli hook corrispondenti vengono eseguiti in parallelo. Se definisci lo stesso handler in più di un file di impostazioni, viene eseguito una volta. Una copia dello stesso handler di un plugin o skill rimane separata.

427 427 

428Gli handler vengono eseguiti nella directory corrente con l'ambiente di Claude Code. Se la directory corrente non esiste più, ad esempio un worktree o una directory temporanea che un'altra shell ha eliminato a metà sessione, Claude Code esegue gli hook di comando dal primo di questi che esiste ancora: la directory in cui è iniziata la sessione, la radice del progetto, la tua home directory, o la directory temporanea del sistema. Claude Code registra un avviso che nomina la directory di fallback nel [debug log](#debug-hooks).428Gli handler vengono eseguiti nella directory corrente con l'ambiente di Claude Code. Se la directory corrente non esiste più, ad esempio un worktree o una directory temporanea che un'altra shell ha eliminato a metà sessione, Claude Code esegue gli hook di comando dal primo di questi che esiste ancora: la directory in cui è iniziata la sessione, la radice del progetto, la tua directory home, o la directory temporanea del sistema. Claude Code registra un avviso che nomina la directory di fallback nel [debug log](#debug-hooks). Per una sessione worktree che avvii dall'app desktop, vedi [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout).

429 429 

430La variabile di ambiente `$CLAUDE_CODE_REMOTE` è `"true"` negli ambienti web remoti e non è impostata nella CLI locale. Claude Code v2.1.199 e successivo imposta [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/it/env-vars) all'ID della sessione [Remote Control](/docs/it/remote-control) mentre la sessione locale ha una connessione Remote Control attiva.430La variabile di ambiente `$CLAUDE_CODE_REMOTE` è `"true"` negli ambienti web remoti e non è impostata nella CLI locale. Claude Code v2.1.199 e successivo imposta [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/it/env-vars) all'ID della sessione [Remote Control](/docs/it/remote-control) mentre la sessione locale ha una connessione Remote Control attiva.

431 431 


645 645 

646 * **`${CLAUDE_PROJECT_DIR}` rimane fermo**: punta ancora alla radice del progetto dove è iniziata la sessione, quindi un comando come `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` esegue ancora lo script nel checkout principale.646 * **`${CLAUDE_PROJECT_DIR}` rimane fermo**: punta ancora alla radice del progetto dove è iniziata la sessione, quindi un comando come `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` esegue ancora lo script nel checkout principale.

647 * **`cwd` segue Claude**: il campo `cwd` nell'[input JSON](#common-input-fields) dell'hook è la radice del worktree dopo che Claude entra in un worktree, e la nuova directory dopo che Claude esegue `cd`. Leggilo quando un hook ha bisogno di sapere quale directory Claude sta utilizzando.647 * **`cwd` segue Claude**: il campo `cwd` nell'[input JSON](#common-input-fields) dell'hook è la radice del worktree dopo che Claude entra in un worktree, e la nuova directory dopo che Claude esegue `cd`. Leggilo quando un hook ha bisogno di sapere quale directory Claude sta utilizzando.

648 

649 Per una sessione worktree che avvii dall'app desktop, vedi [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout) per sapere dove punta `${CLAUDE_PROJECT_DIR}`.

648</Note>650</Note>

649 651 

650Preferisci [exec form](#exec-form-and-shell-form) per qualsiasi hook che faccia riferimento a un placeholder di percorso. In shell form, racchiudi ogni placeholder tra virgolette doppie.652Preferisci [exec form](#exec-form-and-shell-form) per qualsiasi hook che faccia riferimento a un placeholder di percorso. In shell form, racchiudi ogni placeholder tra virgolette doppie.


782| `effort` | Oggetto con un campo `level` che contiene il [livello di sforzo](/docs/it/model-config#adjust-effort-level) in vigore quando l'hook viene eseguito: `"low"`, `"medium"`, `"high"`, `"xhigh"` o `"max"`. Se imposti un livello che il modello attivo non supporta, `level` segnala il livello che Claude Code ha effettivamente eseguito; [Adjust effort level](/docs/it/model-config#adjust-effort-level) spiega come lo sceglie. L'oggetto corrisponde al campo `effort` della [riga di stato](/docs/it/statusline#available-data). Presente per gli eventi che si attivano all'interno di un contesto di utilizzo degli strumenti, come `PreToolUse`, `PostToolUse`, `Stop` e `SubagentStop`, quando il modello corrente supporta il parametro effort. Il livello è disponibile anche ai comandi hook e allo strumento Bash come variabile d'ambiente `$CLAUDE_EFFORT`. |784| `effort` | Oggetto con un campo `level` che contiene il [livello di sforzo](/docs/it/model-config#adjust-effort-level) in vigore quando l'hook viene eseguito: `"low"`, `"medium"`, `"high"`, `"xhigh"` o `"max"`. Se imposti un livello che il modello attivo non supporta, `level` segnala il livello che Claude Code ha effettivamente eseguito; [Adjust effort level](/docs/it/model-config#adjust-effort-level) spiega come lo sceglie. L'oggetto corrisponde al campo `effort` della [riga di stato](/docs/it/statusline#available-data). Presente per gli eventi che si attivano all'interno di un contesto di utilizzo degli strumenti, come `PreToolUse`, `PostToolUse`, `Stop` e `SubagentStop`, quando il modello corrente supporta il parametro effort. Il livello è disponibile anche ai comandi hook e allo strumento Bash come variabile d'ambiente `$CLAUDE_EFFORT`. |

783| `hook_event_name` | Nome dell'evento che si è attivato |785| `hook_event_name` | Nome dell'evento che si è attivato |

784 786 

785Quando si esegue con `--agent` o all'interno di un subagent, vengono inclusi due campi aggiuntivi:787`agent_id` e `agent_type` indicano al tuo script in quale agente si è attivato un hook, ad esempio un subagent, un [compagno di squadra in-process](/docs/it/agent-teams#choose-a-display-mode) o l'agente che hai scelto con `--agent`:

786 788 

787| Campo | Descrizione |789| Campo | Descrizione |

788| :- | :- |790| :- | :- |

789| `agent_id` | Identificatore univoco per il subagent. Presente solo quando l'hook si attiva all'interno di una chiamata di subagent. Usalo per distinguere le chiamate dell'hook del subagent dalle chiamate del thread principale. |791| `agent_id` | Identificatore univoco del subagent o del compagno di squadra in-process in cui si attiva l'hook. |

790| `agent_type` | Nome dell'agente (ad esempio, `"Explore"` o `"security-reviewer"`). Presente quando la sessione usa `--agent` o l'hook si attiva all'interno di un subagent. Per i subagent, il tipo del subagent ha la precedenza sul valore `--agent` della sessione. Consulta [SubagentStart](#subagentstart) per i valori che i subagent personalizzati e dei plugin segnalano e per come scrivere un matcher rispetto a un nome con ambito plugin. |792| `agent_type` | Nome dell'agente (ad esempio, `"Explore"` o `"security-reviewer"`). Presente quando la sessione usa `--agent` o l'hook si attiva all'interno di un subagent. Per i subagent, il tipo del subagent ha la precedenza sul valore `--agent` della sessione. Consulta [SubagentStart](#subagentstart) per i valori che i subagent personalizzati e dei plugin segnalano e per come scrivere un matcher rispetto a un nome con ambito plugin. |

791 793 

792Solo gli hook [`SessionStart`](#sessionstart) possono ricevere un campo `model`, e Claude Code non lo include sempre. Gli hook [`PreModelSwitch`](#premodelswitch) e [`PostModelSwitch`](#postmodelswitch) ricevono invece `from_model` e `to_model`, quindi usa un hook PostModelSwitch per seguire il modello mentre cambia durante una sessione.794Solo gli hook [`SessionStart`](#sessionstart) possono ricevere un campo `model`, e Claude Code non lo include sempre. Gli hook [`PreModelSwitch`](#premodelswitch) e [`PostModelSwitch`](#postmodelswitch) ricevono invece `from_model` e `to_model`, quindi usa un hook PostModelSwitch per seguire il modello mentre cambia durante una sessione.


855 857 

856Per la maggior parte degli eventi, Claude Code scrive stdout nel log di debug e non lo mostra nella trascrizione. Le eccezioni sono `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart` e `PostModelSwitch`, dove Claude Code aggiunge lo stdout in testo semplice come contesto che Claude può vedere e su cui può agire.858Per la maggior parte degli eventi, Claude Code scrive stdout nel log di debug e non lo mostra nella trascrizione. Le eccezioni sono `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart` e `PostModelSwitch`, dove Claude Code aggiunge lo stdout in testo semplice come contesto che Claude può vedere e su cui può agire.

857 859 

858Se Claude Code legge il tuo stdout come [JSON output](#json-output) o come testo semplice dipende da come inizia e finisce, ignorando gli spazi bianchi circostanti:860Per un hook che non è [async](#how-async-hooks-execute), Claude Code analizza il tuo stdout come [JSON output](#json-output) quando l'intero output è un unico oggetto JSON circondato solo da spazi bianchi, e altrimenti lo tratta come testo semplice o come errore di analisi:

859 861 

860* **Inizia con `{` e finisce con `}`**: Claude Code lo analizza come JSON. Quando l'output è composto da due o più righe che si analizzano ciascuna come JSON da sole, e nessuna riga è un oggetto [JSON output](#json-output) che imposta un campo, Claude Code tratta l'intero output come testo semplice. Quando una di quelle righe imposta un campo, l'intero output è un errore di analisi.862* **Un unico oggetto JSON, su una riga o su più righe**: analizzato come JSON output.

861* **Inizia con `{` ma non finisce con `}`**: Claude Code lo tratta come testo semplice.863* **Output che non inizia con `{`, oppure che inizia con `{` e non finisce con `}`**: testo semplice. In base a questa regola, un array JSON e una stringa JSON tra virgolette sono testo semplice.

862* **Inizia con qualsiasi altra cosa**: Claude Code lo tratta come testo semplice, anche quando è un array JSON o una stringa JSON tra virgolette.864* **Due o più righe che si analizzano ciascuna come JSON da sole, la prima che inizia con `{` e l'ultima che finisce con `}`**: testo semplice quando nessuna riga è un oggetto JSON output che imposta un campo, ed errore di analisi quando una lo è.

865* **Qualsiasi altra cosa che inizia con `{` e finisce con `}` ma non è JSON valido**: errore di analisi.

863 866 

864Quando Claude Code tenta di analizzare il tuo stdout come JSON e non ci riesce, oppure l'oggetto analizzato non supera la [convalida dello schema](#json-output), l'esecuzione è un [errore non bloccante](#exit-code-output). L'avviso `<hook name> hook error` riporta il messaggio di analisi o di convalida. Sugli eventi che aggiungono lo stdout in testo semplice come contesto, Claude Code non aggiunge lo stdout che non è riuscito ad analizzare.867Quando Claude Code tenta di analizzare il tuo stdout come JSON e non ci riesce, oppure l'oggetto analizzato non supera la [convalida dello schema](#json-output), l'esecuzione è un [errore non bloccante](#exit-code-output). L'avviso `<hook name> hook error` riporta il messaggio di analisi o di convalida. Sugli eventi che aggiungono lo stdout in testo semplice come contesto, Claude Code non aggiunge lo stdout che non è riuscito ad analizzare.

865 868 


1050 Scegli un approccio per hook: usa solo i codici di uscita per la segnalazione, oppure esci con 0 e stampa JSON per il controllo strutturato. Se li mescoli, exit 2 mantiene il suo [effetto di blocco](#exit-code-2-behavior-per-event), e Claude Code legge comunque i campi JSON, con l'unica eccezione relativa all'elicitazione indicata in [Exit code 2](#exit-code-2).1053 Scegli un approccio per hook: usa solo i codici di uscita per la segnalazione, oppure esci con 0 e stampa JSON per il controllo strutturato. Se li mescoli, exit 2 mantiene il suo [effetto di blocco](#exit-code-2-behavior-per-event), e Claude Code legge comunque i campi JSON, con l'unica eccezione relativa all'elicitazione indicata in [Exit code 2](#exit-code-2).

1051</Note>1054</Note>

1052 1055 

1053Lo stdout del tuo hook deve contenere solo l'oggetto JSON. Se il profilo della tua shell stampa testo all'avvio, può interferire con l'analisi del JSON. Consulta [Hook JSON has no effect](/docs/it/hooks-guide#hook-json-has-no-effect) nella guida alla risoluzione dei problemi.1056Non stampare su stdout nient'altro che l'oggetto JSON. Per un hook che non è [async](#how-async-hooks-execute), qualsiasi altro testo presente, come una riga che il profilo della tua shell stampa all'avvio, impedisce a Claude Code di leggere l'oggetto come JSON, e [Hook JSON has no effect](/docs/it/hooks-guide#hook-json-has-no-effect) mostra come trovare e silenziare quel testo.

1054 1057 

1055Le stringhe `additionalContext`, `systemMessage` e `initialUserMessage` di un hook, e il suo stdout semplice, sono limitate a 10.000 caratteri:1058Le stringhe `additionalContext`, `systemMessage` e `initialUserMessage` di un hook, e il suo stdout semplice, sono limitate a 10.000 caratteri:

1056 1059 


1142 1145 

1143Quando più hook restituiscono `additionalContext` per lo stesso evento, Claude riceve tutti i valori.1146Quando più hook restituiscono `additionalContext` per lo stesso evento, Claude riceve tutti i valori.

1144 1147 

1148Se la tua stringa contiene un tag `<system-reminder>` o `</system-reminder>`, Claude riceve la stringa con il `<` di quel tag sostituito da `&lt;`.

1149 

1145Se un valore supera i 10.000 caratteri, Claude Code scrive invece il testo in un file nella directory della sessione e passa a Claude il percorso del file con un'anteprima fino ai primi 2.000 caratteri. Claude può leggere il file, ma Claude Code non glielo chiede.1150Se un valore supera i 10.000 caratteri, Claude Code scrive invece il testo in un file nella directory della sessione e passa a Claude il percorso del file con un'anteprima fino ai primi 2.000 caratteri. Claude può leggere il file, ma Claude Code non glielo chiede.

1146 1151 

1147Usa `additionalContext` per informazioni che Claude dovrebbe conoscere sullo stato corrente del tuo ambiente o sull'operazione appena eseguita:1152Usa `additionalContext` per informazioni che Claude dovrebbe conoscere sullo stato corrente del tuo ambiente o sull'operazione appena eseguita:


1364 Rendere persistenti le variabili d'ambiente1369 Rendere persistenti le variabili d'ambiente

1365</h4>1370</h4>

1366 1371 

1367Gli hook SessionStart hanno accesso alla variabile d'ambiente `CLAUDE_ENV_FILE`, che fornisce un percorso di file in cui puoi rendere persistenti le variabili d'ambiente per i successivi comandi Bash.1372Gli hook SessionStart hanno accesso alla variabile d'ambiente `CLAUDE_ENV_FILE`, che fornisce un percorso di file in cui puoi rendere persistenti le variabili d'ambiente per i comandi shell che Claude esegue più avanti nella sessione.

1368 1373 

1369Per impostare singole variabili d'ambiente, scrivi istruzioni `export` in `CLAUDE_ENV_FILE`. Usa l'accodamento (`>>`) per preservare le variabili impostate da altri hook:1374Per impostare singole variabili d'ambiente, scrivi istruzioni `export` in `CLAUDE_ENV_FILE`. Usa l'accodamento (`>>`) per preservare le variabili impostate da altri hook:

1370 1375 


1399exit 01404exit 0

1400```1405```

1401 1406 

1407Ogni comando Bash esegue il contenuto del file come codice shell prima del comando stesso, quindi una riga al suo interno può usare qualsiasi cosa Bash valuti, come il riferimento a `$PATH` in `export PATH="$PATH:./node_modules/.bin"`.

1408 

1409<a id="persisted-variables-in-powershell-commands" />

1410 

1411<h5 id="persisted-variables-in-powershell-commands">

1412 Variabili persistenti nei comandi PowerShell

1413</h5>

1414 

1415Anche i comandi [PowerShell](/docs/it/tools-reference#powershell-tool) ricevono le variabili da `CLAUDE_ENV_FILE`, in Claude Code v2.1.296 o successiva, ma PowerShell non esegue mai il file. Claude Code legge invece le assegnazioni dal file e le copia nell'ambiente del comando PowerShell. Lo fa solo quando ogni riga è di uno dei tipi seguenti, considerando ciò che ogni hook di questa sessione ha scritto e qualsiasi script a cui hai [impostato `CLAUDE_ENV_FILE`](/docs/it/env-vars) prima dell'avvio:

1416 

1417* Una riga vuota o un commento `#`

1418* Un'unica assegnazione all'inizio della riga, scritta `export NAME=value`, `declare -x NAME=value` o `NAME=value`, con un valore che Bash userebbe esattamente come scritto, composto da una qualsiasi combinazione di queste parti: testo senza virgolette che usa solo lettere, cifre e i caratteri `_ @ % + = : , . / -`, testo tra virgolette singole e testo tra virgolette doppie in cui ogni `$`, backtick o `"` al suo interno è preceduto da una barra rovesciata di escape

1419 

1420Se una qualsiasi riga è di un altro tipo, come `export PATH="$PATH:./node_modules/.bin"` con il suo `$PATH` senza escape, un comando `source` o le stringhe `$'...'` stampate da `direnv export bash`, i comandi PowerShell non ricevono nessuna delle variabili e `claude --debug` registra `Session environment is not all plain assignments`. I comandi Bash le ricevono comunque tutte. Su Windows, inoltre, i comandi PowerShell non ricevono una variabile il cui valore contiene `/` o `\`, perché Git Bash e Windows scrivono i percorsi in modo diverso. Un comando PowerShell in [sandbox](/docs/it/sandboxing) non riceve nessuna delle variabili.

1421 

1402<Note>1422<Note>

1403 `CLAUDE_ENV_FILE` è disponibile per gli hook SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) e [FileChanged](#filechanged). Gli altri tipi di hook non hanno accesso a questa variabile.1423 `CLAUDE_ENV_FILE` è disponibile per gli hook SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) e [FileChanged](#filechanged). Gli altri eventi hook non hanno accesso a questa variabile, e nemmeno un hook eseguito in PowerShell, sia tramite [`"shell": "powershell"`](#command-hook-fields) sia per impostazione predefinita su Windows senza Git Bash.

1404</Note>1424</Note>

1405 1425 

1406<h3 id="setup">1426<h3 id="setup">


2030 2050 

2031| Campo | Descrizione |2051| Campo | Descrizione |

2032| :- | :- |2052| :- | :- |

2033| `permissionDecision` | `"allow"` salta la richiesta di permesso, tranne per le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) e per `AskUserQuestion` e `ExitPlanMode`, che necessitano di [`updatedInput` abbinato](#allow-with-updatedinput). `"deny"` impedisce la chiamata allo strumento. `"ask"` chiede all'utente di confermare. `"defer"` esce in modo ordinato così che lo strumento possa essere ripreso in seguito. Le [regole di negazione e di richiesta](/docs/it/permissions#manage-permissions) vengono comunque valutate indipendentemente da ciò che restituisce l'hook |2053| `permissionDecision` | `"allow"` salta la richiesta di permesso, tranne per le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves), per le [letture da percorsi di rete](/docs/it/permissions#network-paths), e per `AskUserQuestion` ed `ExitPlanMode`, che richiedono [`updatedInput` abbinato](#allow-with-updatedinput). `"deny"` impedisce la chiamata allo strumento. `"ask"` chiede all'utente di confermare. `"defer"` esce in modo ordinato così che lo strumento possa essere ripreso in seguito. Le [regole di negazione e di richiesta](/docs/it/permissions#manage-permissions) vengono comunque valutate indipendentemente da ciò che l'hook restituisce |

2034| `permissionDecisionReason` | Per `"ask"`, mostrato all'utente nella richiesta di permesso. Quando Claude Code [nega la chiamata](/docs/it/headless#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) |2054| `permissionDecisionReason` | Per `"ask"`, mostrato all'utente nella richiesta di permesso. Quando Claude Code [nega la chiamata](/docs/it/headless#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) |

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

2036| `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) |2056| `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) |


2136Se lo strumento differito non è più disponibile quando riprendi, il processo esce con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` prima che l'hook venga attivato. Questo accade quando un server MCP che forniva lo strumento non è connesso per la sessione ripresa. Il payload `deferred_tool_use` è comunque incluso, così puoi identificare quale strumento è venuto a mancare.2156Se lo strumento differito non è più disponibile quando riprendi, il processo esce con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` prima che l'hook venga attivato. Questo accade quando un server MCP che forniva lo strumento non è connesso per la sessione ripresa. Il payload `deferred_tool_use` è comunque incluso, così puoi identificare quale strumento è venuto a mancare.

2137 2157 

2138<Note>2158<Note>

2139 Per riprendere una sessione differita in plan mode, passa [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) insieme a `--resume` in modo che Claude Code possa presentare il piano per l'approvazione. Se passi alcuni altri flag di avvio, l'esecuzione ripresa non torna al plan mode; consulta [Riprendere in plan mode con `-p`](/docs/it/sessions#resume-in-plan-mode-with-p). Richiede Claude Code v2.1.246 o successiva.2159 Per riprendere una sessione differita in plan mode, passa [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) insieme a `--resume`, in modo che Claude Code possa presentare il piano per l'approvazione. Per le altre condizioni, consulta [Riprendere in plan mode con `-p`](/docs/it/sessions#resume-in-plan-mode-with-p). Richiede Claude Code v2.1.246 o successiva.

2140 2160 

2141 Quando riprendi con `-p`, Claude Code non ripristina nessun'altra modalità di permesso memorizzata. Avvia l'esecuzione nella modalità di permesso in cui partirebbe una nuova esecuzione `claude -p`, quindi passa di nuovo `--permission-mode` o `--dangerously-skip-permissions` se la sessione differita ne usava uno. Quando riprendi con `claude --resume <session-id>` senza `-p`, Claude Code ripristina la modalità di permesso memorizzata, con le eccezioni elencate in [modalità di permesso alla ripresa](/docs/it/sessions#permission-mode-on-resume).2161 Quando riprendi con `-p`, Claude Code non ripristina nessun'altra modalità di permesso memorizzata. Avvia l'esecuzione nella modalità di permesso in cui partirebbe una nuova esecuzione `claude -p`, quindi passa di nuovo `--permission-mode` o `--dangerously-skip-permissions` se la sessione differita ne usava uno. Quando riprendi con `claude --resume <session-id>` senza `-p`, Claude Code ripristina la modalità di permesso memorizzata, con le eccezioni elencate in [modalità di permesso alla ripresa](/docs/it/sessions#permission-mode-on-resume).

2142</Note>2162</Note>


4304 4324 

4305Dopo che il processo in background esce, Claude Code consegna i campi `additionalContext` e `systemMessage` dalla risposta JSON dell'hook a Claude al turno di conversazione successivo. A differenza di `systemMessage` di un hook sincrono, nessuno dei due campi viene mostrato a voi.4325Dopo che il processo in background esce, Claude Code consegna i campi `additionalContext` e `systemMessage` dalla risposta JSON dell'hook a Claude al turno di conversazione successivo. A differenza di `systemMessage` di un hook sincrono, nessuno dei due campi viene mostrato a voi.

4306 4326 

4327Stampa la risposta JSON da sola su stdout oppure su una riga a sé stante:

4328 

4329* **Da sola su stdout**: quando la risposta è l'unico testo su stdout, può estendersi su più righe, come l'output formattato di `jq`. L'estensione su più righe richiede Claude Code v2.1.295 o versioni successive.

4330* **Su una riga a sé stante**: un hook asincrono può stampare altro testo su stdout quando la risposta sta da sola su una riga, ad esempio con `jq -c`.

4331 

4307Claude Code convalida quella risposta JSON rispetto allo stesso [schema di output](#json-output) degli hook sincroni e scarta qualsiasi campo il cui valore ha il tipo errato, come un `systemMessage` che non è una stringa, invece di consegnarlo. Eseguire con `--debug` per vedere un avviso che nomina ogni campo scartato. Prima della v2.1.202, l'output JSON malformato da un hook asincrono poteva causare l'arresto della sessione e l'arresto si ripeteva ogni volta che la sessione veniva ripresa.4332Claude Code convalida quella risposta JSON rispetto allo stesso [schema di output](#json-output) degli hook sincroni e scarta qualsiasi campo il cui valore ha il tipo errato, come un `systemMessage` che non è una stringa, invece di consegnarlo. Eseguire con `--debug` per vedere un avviso che nomina ogni campo scartato. Prima della v2.1.202, l'output JSON malformato da un hook asincrono poteva causare l'arresto della sessione e l'arresto si ripeteva ogni volta che la sessione veniva ripresa.

4308 4333 

4309Le notifiche di completamento degli hook asincroni sono soppresse per impostazione predefinita. Per vederle, abilitare la modalità verbose con `Ctrl+O` o avviare Claude Code con `--verbose`.4334Le notifiche di completamento degli hook asincroni sono soppresse per impostazione predefinita. Per vederle, abilitare la modalità verbose con `Ctrl+O` o avviare Claude Code con `--verbose`.


44572026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"44822026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"

4458```4483```

4459 4484 

4485Per trovare un hook lento, cerca nel log le righe `Hooks:` che terminano con una durata. In Claude Code v2.1.296 o versioni successive, ogni hook di comando su un evento di strumento, `UserPromptSubmit`, `SessionStart`, `Stop` e diversi altri eventi ne lascia una quando termina, indipendentemente da ciò che ha stampato. La riga riporta il nome dell'evento, unito con i due punti al nome dello strumento o a un altro valore su cui l'hook ha trovato corrispondenza, quindi il comando dell'hook tra parentesi quadre, il plugin da cui proviene se presente, come si è conclusa l'esecuzione e quanto tempo ha impiegato, come in `Hooks: PostToolUse:Write [.claude/hooks/log-write.sh] finished with status 0 (31ms)`. Un'esecuzione può anche concludersi con `timed out after <N>ms`, `cancelled`, `moved to the background` o `failed to start`. Su alcuni eventi, come `Notification`, `SessionEnd` e `PreCompact`, un hook di comando lascia invece una riga `completed with status` senza durata.

4486 

4460Per dettagli di corrispondenza dei hook più granulari, impostare `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` per visualizzare righe di log aggiuntive come i conteggi dei matcher del hook e la corrispondenza delle query.4487Per dettagli di corrispondenza dei hook più granulari, impostare `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` per visualizzare righe di log aggiuntive come i conteggi dei matcher del hook e la corrispondenza delle query.

4461 4488 

4462Per la risoluzione dei problemi comuni come i hook che non si attivano, i Stop hook che continuano a bloccare, o gli errori di configurazione, consultare [Limitations and troubleshooting](/docs/it/hooks-guide#limitations-and-troubleshooting) nella guida. Per una procedura diagnostica più ampia che copre `/context`, `/doctor` e la precedenza delle impostazioni, consultare [Debug your config](/docs/it/debug-your-config).4489Per la risoluzione dei problemi comuni come i hook che non si attivano, i Stop hook che continuano a bloccare, o gli errori di configurazione, consultare [Limitations and troubleshooting](/docs/it/hooks-guide#limitations-and-troubleshooting) nella guida. Per una procedura diagnostica più ampia che copre `/context`, `/doctor` e la precedenza delle impostazioni, consultare [Debug your config](/docs/it/debug-your-config).

hooks-guide.md +15 −7

Details

664 664 

665Su `PreToolUse`, Claude Code gestisce ogni valore `permissionDecision` come segue:665Su `PreToolUse`, Claude Code gestisce ogni valore `permissionDecision` come segue:

666 666 

667* `"allow"`: salta il prompt di autorizzazione interattivo. Le regole di negazione e richiesta, incluse le liste di negazione gestite dall'azienda, si applicano ancora, così come i prompt per gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) e per gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni dove quella impostazione raggiunge Claude Code667* `"allow"`: salta la richiesta di permesso interattiva. Le regole di negazione e di richiesta, incluse le liste di negazione gestite dall'azienda, si applicano comunque, così come le richieste per le letture da [percorsi di rete](/docs/it/permissions#network-paths), per gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) e per gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code

668* `"deny"`: annulla la chiamata dello strumento e invia il motivo a Claude668* `"deny"`: annulla la chiamata dello strumento e invia il motivo a Claude

669* `"ask"`: mostra il prompt di autorizzazione all'utente come al solito669* `"ask"`: mostra il prompt di autorizzazione all'utente come al solito

670 670 


1015 1015 

1016Gli hook `PreToolUse` si attivano prima di qualsiasi controllo della modalità di permesso, in ogni [modalità di permesso](/docs/it/permission-modes), incluso `dontAsk`. Un hook che restituisce `permissionDecision: "deny"` blocca lo strumento anche in modalità `bypassPermissions` o con `--dangerously-skip-permissions`. Questo ti consente di applicare criteri che gli utenti non possono aggirare cambiando la propria modalità di permesso.1016Gli hook `PreToolUse` si attivano prima di qualsiasi controllo della modalità di permesso, in ogni [modalità di permesso](/docs/it/permission-modes), incluso `dontAsk`. Un hook che restituisce `permissionDecision: "deny"` blocca lo strumento anche in modalità `bypassPermissions` o con `--dangerously-skip-permissions`. Questo ti consente di applicare criteri che gli utenti non possono aggirare cambiando la propria modalità di permesso.

1017 1017 

1018Il contrario non vale: un hook che restituisce `"allow"` non aggira le regole di negazione delle impostazioni, e non può sopprimere la richiesta di permesso per gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) o per gli strumenti dei connettori che [la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui tale impostazione raggiunge Claude Code. Gli hook nei file di impostazioni e nel file `hooks/hooks.json` di un plugin possono rendere più rigide le restrizioni, ma non allentarle oltre quanto consentito dalle regole di permesso.1018Il contrario non vale: un hook che restituisce `"allow"` non aggira le regole di negazione delle impostazioni, e non può sopprimere la richiesta di permesso per le letture da [percorsi di rete](/docs/it/permissions#network-paths), per gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) o per gli strumenti dei connettori che [la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui tale impostazione raggiunge Claude Code. Gli hook nei file di impostazioni e nel file `hooks/hooks.json` di un plugin possono rendere più rigide le restrizioni, ma non allentarle oltre quanto consentito dalle regole di permesso.

1019 1019 

1020Un [mod](/docs/it/plugins/mods/overview) che installi e che gestisce `tool.check` può approvare una chiamata bloccata dal tuo hook `PreToolUse`, a meno che l'hook non si trovi nelle impostazioni gestite. [Estendere i permessi con gli hook](/docs/it/permissions#extend-permissions-with-hooks) elenca quali regole prevalgono su un mod.1020Un [mod](/docs/it/plugins/mods/overview) che installi e che gestisce `tool.check` può approvare una chiamata bloccata dal tuo hook `PreToolUse`, a meno che l'hook non si trovi nelle impostazioni gestite. [Estendere i permessi con gli hook](/docs/it/permissions#extend-permissions-with-hooks) elenca quali regole prevalgono su un mod.

1021 1021 


1083 1083 

1084Il tuo hook stampa un JSON valido, ma la decisione non ha effetto e nella trascrizione non compare alcun errore. Verifica quale causa si applica:1084Il tuo hook stampa un JSON valido, ma la decisione non ha effetto e nella trascrizione non compare alcun errore. Verifica quale causa si applica:

1085 1085 

1086* **Output aggiuntivo prima del JSON**: qualcos'altro scrive prima su stdout, di solito un `echo` incondizionato nel profilo della tua shell, quindi l'output non inizia più con `{` e Claude Code non lo interpreta come JSON. La causa e la soluzione sono descritte dopo questo elenco.1086* **Output aggiuntivo prima del JSON**: qualcos'altro scrive prima su stdout, di solito un `echo` incondizionato nel profilo della tua shell, quindi l'output non inizia più con `{`. Consulta [Output del profilo della shell prima del JSON](#shell-profile-output-before-the-json).

1087* **Un campo al livello sbagliato**: confronta la posizione di ciascun campo con il formato dell'[output JSON](/docs/it/hooks#json-output). Ad esempio, `permissionDecision` va all'interno di `hookSpecificOutput`, non al livello superiore.1087* **Un campo al livello sbagliato**: confronta la posizione di ciascun campo con il formato dell'[output JSON](/docs/it/hooks#json-output). Ad esempio, `permissionDecision` va all'interno di `hookSpecificOutput`, non al livello superiore. Consulta [Campi al livello sbagliato](#fields-at-the-wrong-level).

1088 1088 

1089Quando Claude Code esegue un hook command in forma shell, cioè senza `args`, avvia `sh -c` su macOS e Linux, Git Bash su Windows, oppure PowerShell quando Git Bash non è installato per impostazione predefinita. Questa shell non è interattiva, ma Git Bash e alcune configurazioni, come `BASH_ENV` che punta a `~/.bashrc`, caricano comunque il tuo profilo. Se quel profilo contiene istruzioni `echo` incondizionate, il loro output viene anteposto al JSON del tuo hook:1089<h4 id="shell-profile-output-before-the-json">

1090 Output del profilo della shell prima del JSON

1091</h4>

1092 

1093Gli hook vengono eseguiti in shell non interattive, ma Git Bash e alcune configurazioni, come `BASH_ENV` che punta a `~/.bashrc`, caricano comunque il tuo profilo, e tutto ciò che il profilo stampa arriva su stdout prima del JSON del tuo hook:

1090 1094 

1091```text theme={null}1095```text theme={null}

1092Shell ready on arm641096Shell ready on arm64

1093{"decision": "block", "reason": "Not allowed"}1097{"decision": "block", "reason": "Not allowed"}

1094```1098```

1095 1099 

1096L'output combinato non inizia più con `{`, quindi Claude Code tratta tutto lo stdout come testo semplice e ignora il JSON. Con uscita 0 non viene segnalato nulla nella trascrizione; il tentativo di parsing viene registrato solo nel [log di debug](/docs/it/hooks#debug-hooks). Per risolvere, racchiudi le istruzioni echo nel profilo della tua shell in modo che vengano eseguite solo nelle shell interattive:1100A meno che l'hook non sia [asincrono](/docs/it/hooks#how-async-hooks-execute), Claude Code tratta l'output che non inizia con `{` come testo semplice, quindi il tuo JSON viene ignorato. Poiché l'hook è terminato con uscita 0, nemmeno la trascrizione mostra alcun errore. Per verificare questa causa, avvia Claude Code con `claude --debug`, attiva l'hook e cerca `Hook output does not start with {` nel [log di debug](/docs/it/hooks#debug-hooks). Per risolvere, racchiudi le istruzioni `echo` nel tuo profilo in modo che vengano eseguite solo nelle shell interattive:

1097 1101 

1098```bash theme={null}1102```bash theme={null}

1099# In ~/.zshrc or ~/.bashrc1103# In ~/.zshrc or ~/.bashrc


1104 1108 

1105La variabile `$-` contiene i flag della shell, e `i` significa interattiva. Gli hook vengono eseguiti in shell non interattive, quindi l'echo viene saltato.1109La variabile `$-` contiene i flag della shell, e `i` significa interattiva. Gli hook vengono eseguiti in shell non interattive, quindi l'echo viene saltato.

1106 1110 

1111<h4 id="fields-at-the-wrong-level">

1112 Campi al livello sbagliato

1113</h4>

1114 

1107Quando il tuo hook restituisce `permissionDecision` o `additionalContext` al livello superiore invece che all'interno di `hookSpecificOutput`, il JSON viene comunque interpretato, e Claude Code ignora i campi fuori posto senza segnalare errori. Per vedere quali campi ha ignorato, avvia Claude Code con `claude --debug` e cerca `Hook JSON output had unrecognized keys` nel [log di debug](/docs/it/hooks#debug-hooks).1115Quando il tuo hook restituisce `permissionDecision` o `additionalContext` al livello superiore invece che all'interno di `hookSpecificOutput`, il JSON viene comunque interpretato, e Claude Code ignora i campi fuori posto senza segnalare errori. Per vedere quali campi ha ignorato, avvia Claude Code con `claude --debug` e cerca `Hook JSON output had unrecognized keys` nel [log di debug](/docs/it/hooks#debug-hooks).

1108 1116 

1109<h3 id="check-what-a-hook-did">1117<h3 id="check-what-a-hook-did">


1119 1127 

1120Per consultare l'esito per uno specifico codice di uscita e stdout, incluse le eccezioni per singolo evento, consulta [Output del codice di uscita](/docs/it/hooks#exit-code-output) nel riferimento.1128Per consultare l'esito per uno specifico codice di uscita e stdout, incluse le eccezioni per singolo evento, consulta [Output del codice di uscita](/docs/it/hooks#exit-code-output) nel riferimento.

1121 1129 

1122Per i dettagli completi dell'esecuzione, inclusi i codici di uscita, lo stdout e lo stderr degli hook, leggi il log di debug. Avvia Claude Code con `claude --debug-file /tmp/claude.log` per scrivere in un percorso noto, quindi esegui `tail -f /tmp/claude.log` in un altro terminale. Se hai avviato senza quel flag, esegui `/debug` durante la sessione per abilitare il logging e trovare il percorso del log.1130Per i dettagli completi dell'esecuzione, inclusi i codici di uscita, lo stdout e lo stderr degli hook, leggi il [log di debug](/docs/it/hooks#debug-hooks). Avvia Claude Code con `claude --debug-file /tmp/claude.log` per scrivere in un percorso noto, quindi esegui `tail -f /tmp/claude.log` in un altro terminale. Se hai avviato senza quel flag, esegui `/debug` durante la sessione per abilitare il logging e trovare il percorso del log.

1123 1131 

1124<h2 id="learn-more">1132<h2 id="learn-more">

1125 Ulteriori informazioni1133 Ulteriori informazioni

Details

22 22 

23| Scorciatoia | Descrizione | Contesto |23| Scorciatoia | Descrizione | Contesto |

24| :- | :- | :- |24| :- | :- | :- |

25| `Ctrl+C` | Interrompi, o cancella l'input | Interrompe un'operazione in esecuzione. Se nulla è in esecuzione, il primo pressione cancella l'input del prompt e una seconda pressione esce da Claude Code |25| `Ctrl+C` | Interrompi, o cancella l'input | Interrompe un'operazione in esecuzione. Se nulla è in esecuzione, la prima pressione cancella l'input del prompt e una seconda pressione esce da Claude Code. Premi `Su` mentre il prompt è ancora vuoto per recuperare la bozza cancellata; questa funzione richiede Claude Code v2.1.288 o versione successiva |

26| `Ctrl+X Ctrl+K` | Arresta tutti i [subagent in background](/docs/it/sub-agents#run-subagents-in-foreground-or-background) in questa sessione e disattiva le [risposte automatiche degli artefatti](/docs/it/artifacts#let-claude-reply-to-comments-on-its-own) per il resto della sessione. Premi due volte entro 3 secondi per confermare. Puoi premerla anche mentre è aperta la richiesta di permesso di un subagent in background | Controllo subagent |26| `Ctrl+X Ctrl+K` | Arresta tutti i [subagent in background](/docs/it/sub-agents#run-subagents-in-foreground-or-background) in questa sessione e disattiva le [risposte automatiche degli artefatti](/docs/it/artifacts#let-claude-reply-to-comments-on-its-own) per il resto della sessione. Premi due volte entro 3 secondi per confermare. Puoi premerla anche mentre è aperta la richiesta di permesso di un subagent in background | Controllo subagent |

27| `Ctrl+D` | Esci dalla sessione Claude Code | Il primo pressione mostra un suggerimento di conferma e un secondo pressione entro 800ms esce. Quando il prompt contiene testo, `Ctrl+D` elimina il carattere dopo il cursore invece |27| `Ctrl+D` | Esci dalla sessione Claude Code | Il primo pressione mostra un suggerimento di conferma e un secondo pressione entro 800ms esce. Quando il prompt contiene testo, `Ctrl+D` elimina il carattere dopo il cursore invece |

28| `Ctrl+G` o `Ctrl+X Ctrl+E` | Apri nell'editor di testo predefinito | Modifica il tuo prompt o la risposta personalizzata nell'editor di testo predefinito. `Ctrl+X Ctrl+E` è il binding nativo di readline. Attiva **Mostra l'ultima risposta nell'editor esterno** in `/config` per anteporre la risposta precedente di Claude come contesto commentato con `#` sopra il tuo prompt; Claude Code rimuove il blocco di commento quando salvi |28| `Ctrl+G` o `Ctrl+X Ctrl+E` | Apri nell'editor di testo predefinito | Modifica il tuo prompt o la risposta personalizzata nell'editor di testo predefinito. `Ctrl+X Ctrl+E` è il binding nativo di readline. Attiva **Mostra l'ultima risposta nell'editor esterno** in `/config` per anteporre la risposta precedente di Claude come contesto commentato con `#` sopra il tuo prompt; Claude Code rimuove il blocco di commento quando salvi |


442 442 

443Claude Code riprende i comandi shell in coda solo quando la casella di input è vuota e non hai nient'altro in coda, e in tal caso passa la casella di input alla modalità shell. Altrimenti li lascia in coda, elencati con il loro prefisso `!`, e li esegue dopo la fine del turno.443Claude Code riprende i comandi shell in coda solo quando la casella di input è vuota e non hai nient'altro in coda, e in tal caso passa la casella di input alla modalità shell. Altrimenti li lascia in coda, elencati con il loro prefisso `!`, e li esegue dopo la fine del turno.

444 444 

445Se riprendi il testo in coda mentre `←` [attende di portare la sessione in background](/docs/it/agent-view#switch-sessions-without-leaving-the-terminal), il testo rimane nella casella di input e Claude Code annulla il passaggio. Se lo riprendi nel momento in cui la sessione si sposta, il testo scompare insieme alla schermata in primo piano: non è stato inviato. Ogni messaggio che hai ripreso viene salvato come voce a sé nella [cronologia dei comandi](#command-history). Per recuperarne uno, riapri la sessione e premi `Up` su un prompt vuoto senza nulla in coda.

446 

445<h2 id="prompt-suggestions">447<h2 id="prompt-suggestions">

446 Suggerimenti di prompt448 Suggerimenti di prompt

447</h2>449</h2>

Details

299 299 

300[Claude Code in Slack](/docs/it/slack) e le [sessioni cloud](/docs/it/claude-code-on-the-web) non fanno parte di una distribuzione del gateway. Le variabili del gateway impostate nella configurazione dell'ambiente di una sessione cloud non vengono applicate. Se il tuo traffico deve rimanere sul gateway, non abilitare queste superfici per quegli utenti.300[Claude Code in Slack](/docs/it/slack) e le [sessioni cloud](/docs/it/claude-code-on-the-web) non fanno parte di una distribuzione del gateway. Le variabili del gateway impostate nella configurazione dell'ambiente di una sessione cloud non vengono applicate. Se il tuo traffico deve rimanere sul gateway, non abilitare queste superfici per quegli utenti.

301 301 

302[Remote Control](/docs/it/remote-control) e [dettatura vocale](/docs/it/voice-dictation) si basano entrambi su un'identità claude.ai: Remote Control per accoppiare una sessione live con il tuo account, e dettatura vocale per raggiungere l'endpoint di trascrizione claude.ai. Non sono disponibili mentre `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o un `apiKeyHelper` è attivo. Remote Control è anche disabilitato mentre `ANTHROPIC_BASE_URL` punta a un host non-Anthropic, quindi accedere con claude.ai non è sufficiente da solo. Prima della v2.1.196, un URL di base non-Anthropic non bloccava Remote Control.302[Remote Control](/docs/it/remote-control) e [dettatura vocale](/docs/it/voice-dictation) si basano entrambi su un'identità claude.ai: Remote Control per accoppiare una sessione live con il tuo account, e dettatura vocale per raggiungere l'endpoint di trascrizione claude.ai. Non sono disponibili mentre `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o un `apiKeyHelper` è attivo. Remote Control è anche disabilitato mentre `ANTHROPIC_BASE_URL` punta a un host non-Anthropic, quindi accedere con claude.ai non è sufficiente da solo.

303 303 

304Per ripristinare una delle due funzioni, accedi con claude.ai e annulla l'impostazione delle variabili del gateway che quella funzione controlla. La sezione Remote Control di `claude doctor` nomina ciò che sta attualmente bloccando Remote Control.304Per ripristinare una delle due funzioni, accedi con claude.ai e annulla l'impostazione delle variabili del gateway che quella funzione controlla. La sezione Remote Control di `claude doctor` nomina ciò che sta attualmente bloccando Remote Control.

305 305 

mcp.md +4 −4

Details

283 Approvazioni dei server di progetto e attendibilità del workspace283 Approvazioni dei server di progetto e attendibilità del workspace

284</h4>284</h4>

285 285 

286A partire dalla v2.1.196, `claude mcp list` e `claude mcp get` leggono le approvazioni `.mcp.json` solo dai file di impostazioni che non sono sottoposti a commit nel repository, finché non consideri attendibile il workspace eseguendo `claude` al suo interno e accettando la finestra di dialogo di attendibilità del workspace. Un repository clonato non può approvare i propri server: [`enableAllProjectMcpServers`](/docs/it/settings-reference#enableallprojectmcpservers) o [`enabledMcpjsonServers`](/docs/it/settings-reference#enabledmcpjsonservers) sottoposti a commit nel `.claude/settings.json` del progetto vengono ignorati in una cartella non attendibile, e il server rimane in `⏸ Pending approval` invece di essere connesso e verificato.286`claude mcp list` e `claude mcp get` leggono le approvazioni `.mcp.json` solo dai file di impostazioni che non sono sottoposti a commit nel repository, finché non consideri attendibile il workspace eseguendo `claude` al suo interno e accettando la finestra di dialogo di attendibilità del workspace. Un repository clonato non può approvare i propri server: [`enableAllProjectMcpServers`](/docs/it/settings-reference#enableallprojectmcpservers) o [`enabledMcpjsonServers`](/docs/it/settings-reference#enabledmcpjsonservers) sottoposti a commit nel `.claude/settings.json` del progetto vengono ignorati in una cartella non attendibile, e il server rimane in `⏸ Pending approval` invece di essere connesso e verificato.

287 287 

288Le approvazioni da queste fonti si applicano comunque in una cartella non attendibile:288Le approvazioni da queste fonti si applicano comunque in una cartella non attendibile:

289 289 


859 859 

860L'avviso annuncia ogni server una volta e lo esclude dal conteggio ai successivi avvii fino a quando quel server non si è connesso e ha bisogno di accesso di nuovo. `/mcp` elenca comunque ogni server che ha bisogno di accesso.860L'avviso annuncia ogni server una volta e lo esclude dal conteggio ai successivi avvii fino a quando quel server non si è connesso e ha bisogno di accesso di nuovo. `/mcp` elenca comunque ogni server che ha bisogno di accesso.

861 861 

862In modalità non interattiva non c'è un pannello `/mcp`, quindi Claude Code non può eseguire il flusso OAuth per te. A partire da v2.1.196, quando un server configurato richiede l'autenticazione durante un'esecuzione `claude -p` o Agent SDK con [ricerca degli strumenti](#scale-with-mcp-tool-search) abilitata, che è l'impostazione predefinita, Claude Code comunica a Claude che gli strumenti del server non sono disponibili fino a quando non lo autorizzi. Claude può quindi nominare il server che richiede l'accesso invece di rispondere come se il server non fosse configurato. Completa l'accesso da una sessione interattiva con `/mcp` o `claude mcp login <name>`.862In modalità non interattiva non c'è un pannello `/mcp`, quindi Claude Code non può eseguire il flusso OAuth per te. Quando un server configurato richiede l'autenticazione durante un'esecuzione `claude -p` o Agent SDK con [ricerca degli strumenti](#scale-with-mcp-tool-search) abilitata, che è l'impostazione predefinita, Claude Code comunica a Claude che gli strumenti del server non sono disponibili fino a quando non lo autorizzi. Claude può quindi nominare il server che richiede l'accesso. Completa l'accesso da una sessione interattiva con `/mcp` o `claude mcp login <name>`.

863 863 

864Se hai configurato `headers.Authorization` per il server e il server rifiuta quell'header, Claude Code segnala la connessione come non riuscita invece di ricorrere a OAuth. Verifica che il token sia valido per l'endpoint MCP, oppure rimuovi l'header per utilizzare il flusso OAuth.864Se hai configurato `headers.Authorization` per il server e il server rifiuta quell'header, Claude Code segnala la connessione come non riuscita invece di ricorrere a OAuth. Verifica che il token sia valido per l'endpoint MCP, oppure rimuovi l'header per utilizzare il flusso OAuth.

865 865 


1048 1048 

1049`oauth.scopes` ha la precedenza sia su `authServerMetadataUrl` che sugli ambiti che il server scopre su `/.well-known`. Lascialo non impostato per consentire al server MCP di determinare l'insieme di ambiti richiesti.1049`oauth.scopes` ha la precedenza sia su `authServerMetadataUrl` che sugli ambiti che il server scopre su `/.well-known`. Lascialo non impostato per consentire al server MCP di determinare l'insieme di ambiti richiesti.

1050 1050 

1051A partire da v2.1.196, quando `oauth.scopes` non è impostato, Claude Code richiede l'ambito fornito dall'header `WWW-Authenticate` del server o dai suoi metadati della risorsa protetta, e non invia alcun parametro `scope` quando nessuno dei due lo fornisce. Non richiede più il catalogo completo di `scopes_supported` dai metadati del server di autorizzazione scoperto automaticamente. La richiesta di quel catalogo ha fatto sì che i provider di identità che pubblicizzano ambiti solo amministratore o modello rifiutassero la richiesta di autorizzazione con un errore `invalid_scope`. I metadati recuperati da un `authServerMetadataUrl` configurato forniscono comunque il loro `scopes_supported` come ambiti richiesti.1051Quando `oauth.scopes` non è impostato, Claude Code non richiede il catalogo completo di `scopes_supported` dai metadati del server di autorizzazione scoperti automaticamente. I metadati recuperati da un `authServerMetadataUrl` configurato forniscono comunque il loro `scopes_supported` come scope richiesti.

1052 1052 

1053Se il server di autorizzazione pubblicizza `offline_access` in `scopes_supported`, Claude Code lo aggiunge agli ambiti fissati in modo che il token di accesso possa essere aggiornato senza un nuovo accesso al browser.1053Se il server di autorizzazione pubblicizza `offline_access` in `scopes_supported`, Claude Code lo aggiunge agli ambiti fissati in modo che il token di accesso possa essere aggiornato senza un nuovo accesso al browser.

1054 1054 


1141 1141 

1142A parte le variabili `GIT_CONFIG_KEY_<n>` di Git, Claude Code rimuove ogni variabile dal tuo ambiente il cui nome sembra una credenziale, come un nome con `TOKEN`, `SECRET`, `PASSWORD`, `KEY`, o `AUTH` in esso in entrambi i casi di lettera, quindi sia `ANTHROPIC_API_KEY` che `MY_REGISTRY_TOKEN` vengono rimossi. Claude Code rimuove anche un elenco fisso di variabili di credenziale i cui nomi non seguono quel modello, come `ANTHROPIC_CUSTOM_HEADERS`.1142A parte le variabili `GIT_CONFIG_KEY_<n>` di Git, Claude Code rimuove ogni variabile dal tuo ambiente il cui nome sembra una credenziale, come un nome con `TOKEN`, `SECRET`, `PASSWORD`, `KEY`, o `AUTH` in esso in entrambi i casi di lettera, quindi sia `ANTHROPIC_API_KEY` che `MY_REGISTRY_TOKEN` vengono rimossi. Claude Code rimuove anche un elenco fisso di variabili di credenziale i cui nomi non seguono quel modello, come `ANTHROPIC_CUSTOM_HEADERS`.

1143 1143 

1144Quando questo si applica al tuo helper, fai in modo che lo script legga la sua credenziale da un file o da un archivio di credenziali. Se l'`url` del server [espande una di queste variabili](#environment-variable-expansion-in-mcp-json), il valore `CLAUDE_CODE_MCP_SERVER_URL` che l'helper riceve ha quella parte sostituita con `REDACTED` anche.1144Quando questo si applica al tuo helper, fai in modo che lo script legga la sua credenziale da un file o da un archivio di credenziali. Se l'`url` del server [contiene il valore effettivo di una di queste variabili](#environment-variable-expansion-in-mcp-json), come `MY_REGISTRY_TOKEN`, anche nel valore `CLAUDE_CODE_MCP_SERVER_URL` che l'helper riceve quella parte viene sostituita con `REDACTED`.

1145 1145 

1146<h4 id="trust-a-folder-before-its-headershelper-runs">1146<h4 id="trust-a-folder-before-its-headershelper-runs">

1147 Affida una cartella prima che il suo headersHelper venga eseguito1147 Affida una cartella prima che il suo headersHelper venga eseguito

Details

213└── claude_code.tool213└── claude_code.tool

214 ├── claude_code.tool.blocked_on_user214 ├── claude_code.tool.blocked_on_user

215 ├── claude_code.tool.execution215 ├── claude_code.tool.execution

216 └── (strumento Agent) span claude_code.llm_request / claude_code.tool del subagente216 └── (strumento Agent) span claude_code.llm_request / claude_code.tool del subagent

217```217```

218 218 

219In sessioni Agent SDK e `claude -p`, `claude_code.interaction` stesso diventa un figlio dello span del chiamante quando `TRACEPARENT` è impostato nell'ambiente.219In sessioni Agent SDK e `claude -p`, `claude_code.interaction` stesso diventa un figlio dello span del chiamante quando `TRACEPARENT` è impostato nell'ambiente.


470 Racchiudere i valori tra virgolette non sfugge agli spazi. Ad esempio, `org.name="My Company"` risulta nel valore letterale `"My Company"` con le virgolette incluse, non `My Company`.470 Racchiudere i valori tra virgolette non sfugge agli spazi. Ad esempio, `org.name="My Company"` risulta nel valore letterale `"My Company"` con le virgolette incluse, non `My Company`.

471</Warning>471</Warning>

472 472 

473<h3 id="attribute-telemetry-to-desktop-ssh-sessions">

474 Attribuire la telemetria alle sessioni SSH di Desktop

475</h3>

476 

477Per vedere su quale macchina remota è stata eseguita una [sessione SSH di Desktop](/docs/it/desktop#ssh-sessions), assegna un nome a ciascuna macchina in un attributo personalizzato. Le metriche e gli eventi non indicano la macchina su cui è stata eseguita una sessione.

478 

479Su ciascuna macchina remota, aggiungi [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) al blocco `env` che attiva la telemetria, nel [file delle impostazioni gestite letto dalla sessione](/docs/it/desktop#managed-settings). Scrivi il nome per esteso nel file di ciascuna macchina. Claude Code non espande il valore, quindi `host.name=$(hostname)` arriva esattamente con quei caratteri.

480 

481L'esempio seguente assegna alla macchina il nome `build-7`:

482 

483```json theme={null}

484{

485 "env": {

486 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

487 "OTEL_METRICS_EXPORTER": "otlp",

488 "OTEL_LOGS_EXPORTER": "otlp",

489 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

490 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

491 "OTEL_RESOURCE_ATTRIBUTES": "host.name=build-7"

492 }

493}

494```

495 

496Quando nient'altro imposta la variabile, `host.name` arriva nel blocco di risorse, nelle sessioni SSH di Desktop e nella CLI su quella macchina. Per sapere dove altro compaiono gli attributi personalizzati, vedi [Supporto per organizzazioni multi-team](#multi-team-organization-support).

497 

498Se il nome non arriva, verifica una di queste cause:

499 

500* **L'hai impostata sul computer che esegue Desktop**: Desktop non passa alla sessione SSH un valore impostato lì

501* **L'hai esportata in un file di login**: solo le shell di login leggono un file come `/etc/profile`. Un valore che esporti lì con `export` raggiunge Claude Code quando lo avvii da una shell di login. Non raggiunge una sessione SSH di Desktop, perché Desktop non avvia Claude Code tramite una shell di login.

502* **Un valore contiene uno spazio**: in tal caso Claude Code non copia nessuna delle chiavi su eventi o punti dati e non segnala alcun errore. [Rimuovi lo spazio dal valore](#multi-team-organization-support).

503* **Qualcos'altro imposta già la variabile**: in una sessione avviata dall'app desktop, una variabile già impostata nell'ambiente di avvio [ha la precedenza sui file di impostazioni](/docs/it/settings-reference#how-env-values-interact-with-your-shell). Il [log di debug](/docs/it/debug-your-config) indica ogni variabile ignorata. Quando una distribuzione di Desktop di terze parti [specifica un endpoint OTLP](#how-managed-settings-lock-the-otlp-destination) nell'ambiente che fornisce, quell'ambiente contiene il `OTEL_RESOURCE_ATTRIBUTES` proprio di Desktop.

504 

473<h3 id="example-configurations">505<h3 id="example-configurations">

474 Configurazioni di esempio506 Configurazioni di esempio

475</h3>507</h3>


1746 1778 

1747Tutte le metriche e gli eventi vengono esportati con i seguenti attributi di risorsa:1779Tutte le metriche e gli eventi vengono esportati con i seguenti attributi di risorsa:

1748 1780 

1749* `service.name`: `claude-code` per le sessioni di terminale, `claude-code-desktop` per le sessioni avviate dalla scheda Code nell'[app Claude Desktop](/docs/it/desktop)1781* `service.name`: `claude-code` per le sessioni di terminale, `claude-code-desktop` per le sessioni locali avviate dalla scheda Code nell'[app Claude Desktop](/docs/it/desktop)

1750* `service.version`: Versione corrente di Claude Code, o la versione dell'app Desktop per le sessioni della scheda Code1782* `service.version`: Versione corrente di Claude Code, o la versione dell'app Desktop per le sessioni locali della scheda Code

1751* `os.type`: Tipo di sistema operativo (ad esempio, `linux`, `darwin`, `windows`)1783* `os.type`: Tipo di sistema operativo (ad esempio, `linux`, `darwin`, `windows`)

1752* `os.version`: Stringa della versione del sistema operativo1784* `os.version`: Stringa della versione del sistema operativo

1753* `host.arch`: Architettura dell'host (ad esempio, `amd64`, `arm64`)1785* `host.arch`: Architettura dell'host (ad esempio, `amd64`, `arm64`)

1754* `wsl.version`: Numero di versione WSL (presente solo quando si esegue su Windows Subsystem for Linux)1786* `wsl.version`: Numero di versione WSL (presente solo quando si esegue su Windows Subsystem for Linux)

1755* Meter Name: `com.anthropic.claude_code`1787* Meter Name: `com.anthropic.claude_code`

1756 1788 

1757Se le pipeline del collettore o i dashboard filtrano su `service.name = claude-code`, aggiungere `claude-code-desktop` al filtro per acquisire anche la telemetria dalle sessioni della scheda Code.1789Se le pipeline del tuo collettore o i tuoi dashboard filtrano su `service.name = claude-code`, aggiungi `claude-code-desktop` al filtro per acquisire anche la telemetria dalle sessioni locali della scheda Code.

1758 1790 

1759<h2 id="roi-measurement-resources">1791<h2 id="roi-measurement-resources">

1760 Risorse di misurazione del ROI1792 Risorse di misurazione del ROI

Details

183 Impostare le variabili di rete nelle impostazioni, non nella shell183 Impostare le variabili di rete nelle impostazioni, non nella shell

184</h3>184</h3>

185 185 

186Il supervisore è un processo unico condiviso da ogni terminale. Eredita l'ambiente della shell che lo avvia per prima, e un supervisore installato dal sistema operativo non riceve alcun ambiente di shell. Se esportate un proxy, un percorso CA o una variabile mTLS solo nella vostra shell, raggiunge gli agenti in background quando quella shell ha avviato a freddo il supervisore, e silenziosamente non lo fa quando una shell diversa lo ha fatto.186Il supervisore è un processo unico condiviso da ogni terminale. Eredita l'ambiente della shell che lo avvia per prima. Se esporti un proxy, un percorso CA o una variabile mTLS solo nella tua shell, raggiunge gli agenti in background quando quella shell ha avviato a freddo il supervisore, e silenziosamente non lo fa quando lo ha fatto una shell diversa.

187 187 

188Inserite le stesse variabili nel blocco `env` di `~/.claude/settings.json` o nelle [impostazioni gestite](/docs/it/settings). Ogni variabile su questa pagina può essere impostata lì, e le impostazioni sono l'unica configurazione che raggiunge ogni sessione in background su ogni macchina.188Inserite le stesse variabili nel blocco `env` di `~/.claude/settings.json` o nelle [impostazioni gestite](/docs/it/settings). Ogni variabile su questa pagina può essere impostata lì, e le impostazioni sono l'unica configurazione che raggiunge ogni sessione in background su ogni macchina.

189 189 


196Impostate l'impostazione [`processWrapper`](/docs/it/settings-reference#processwrapper) per anteporre il supervisore, i suoi worker e gli altri processi in background elencati in [Cosa copre il launcher](/docs/it/corporate-launcher#what-the-launcher-covers) con il vostro launcher. La variabile di ambiente equivalente [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/it/env-vars) ha la precedenza quando entrambe sono impostate, ed è soggetta alla stessa regola: consegnatela attraverso le impostazioni gestite o `~/.claude/settings.json`, non un'esportazione di shell. [Eseguire Claude Code dietro un launcher aziendale](/docs/it/corporate-launcher) copre il contratto che il launcher deve soddisfare, cosa raggiunge e cosa non raggiunge, e come implementarlo.196Impostate l'impostazione [`processWrapper`](/docs/it/settings-reference#processwrapper) per anteporre il supervisore, i suoi worker e gli altri processi in background elencati in [Cosa copre il launcher](/docs/it/corporate-launcher#what-the-launcher-covers) con il vostro launcher. La variabile di ambiente equivalente [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/it/env-vars) ha la precedenza quando entrambe sono impostate, ed è soggetta alla stessa regola: consegnatela attraverso le impostazioni gestite o `~/.claude/settings.json`, non un'esportazione di shell. [Eseguire Claude Code dietro un launcher aziendale](/docs/it/corporate-launcher) copre il contratto che il launcher deve soddisfare, cosa raggiunge e cosa non raggiunge, e come implementarlo.

197 197 

198<Note>198<Note>

199 Un supervisore già in esecuzione mantiene la configurazione di avvio con cui è stato avviato. Dopo aver distribuito l'impostazione del launcher, eseguite [`claude daemon stop --any`](/docs/it/agent-view#the-supervisor-process) in modo che il prossimo `claude agents` o `--bg` avvii un supervisore che la rispetti. Un servizio installato richiede `claude daemon stop` senza `--any`.199 Un supervisore già in esecuzione mantiene la configurazione di avvio con cui è stato avviato. Dopo aver distribuito l'impostazione del launcher, esegui [`claude daemon stop --any`](/docs/it/agent-view#the-supervisor-process) in modo che il prossimo `claude agents` o `--bg` avvii un supervisore che la rispetti.

200</Note>200</Note>

201 201 

202<h2 id="streaming-idle-watchdogs">202<h2 id="streaming-idle-watchdogs">

Details

22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Letture, modifiche di file e comandi comuni del filesystem (`mkdir`, `touch`, `mv`, `cp`, ecc.) | Iterare sul codice che state revisionando |22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Letture, modifiche di file e comandi comuni del filesystem (`mkdir`, `touch`, `mv`, `cp`, ecc.) | Iterare sul codice che state revisionando |

23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Letture, più comandi approvati dal classificatore quando [la modalità auto](#eliminate-prompts-with-auto-mode) è disponibile | Esplorare una codebase prima di modificarla |23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Letture, più comandi approvati dal classificatore quando [la modalità auto](#eliminate-prompts-with-auto-mode) è disponibile | Esplorare una codebase prima di modificarla |

24| [`auto`](#eliminate-prompts-with-auto-mode) | Tutto, con controlli di sicurezza in background | Attività lunghe, ridurre l'affaticamento da prompt |24| [`auto`](#eliminate-prompts-with-auto-mode) | Tutto, con controlli di sicurezza in background | Attività lunghe, ridurre l'affaticamento da prompt |

25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Letture e strumenti pre-approvati; qualsiasi cosa che comporterebbe una richiesta viene negata | CI bloccato e script |25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Letture di file all'interno delle tue directory di lavoro e strumenti pre-approvati; qualsiasi cosa che comporterebbe una richiesta viene negata | CI bloccato e script |

26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tutto | Solo container e VM isolati |26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tutto | Solo container e VM isolati |

27 27 

28La modalità che esamina ogni azione è denominata **Manual** nella CLI, in `claude --help`, nelle estensioni VS Code e JetBrains, e nell'app desktop. Il suo valore di configurazione è `default`, che è quello utilizzato dagli hook e dalle integrazioni SDK. La CLI accetta `manual` come alias ovunque digiti il valore, ad esempio `claude --permission-mode manual` o `"defaultMode": "manual"`.28La modalità che esamina ogni azione è denominata **Manual** nella CLI, in `claude --help`, nelle estensioni VS Code e JetBrains, e nell'app desktop. Il suo valore di configurazione è `default`, che è quello utilizzato dagli hook e dalle integrazioni SDK. La CLI accetta `manual` come alias ovunque digiti il valore, ad esempio `claude --permission-mode manual` o `"defaultMode": "manual"`.


466 La prima lettura al di fuori delle directory di lavoro466 La prima lettura al di fuori delle directory di lavoro

467</h3>467</h3>

468 468 

469Mentre [`permissions.blockReadsOutsideWorkingDirectories`](/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) è disattivata, le letture di file vengono eseguite senza una richiesta di permesso in modalità auto, incluse le letture al di fuori delle [directory di lavoro](/docs/it/permissions#working-directories). La prima volta che Claude utilizza lo strumento Read, Grep o Glob su un percorso al di fuori di esse, Claude Code chiede se consentire quella lettura.469Mentre [`permissions.blockReadsOutsideWorkingDirectories`](/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) è disattivata, le letture di file diverse dalle [letture da percorsi di rete](/docs/it/permissions#network-paths) vengono eseguite senza una richiesta di permesso in modalità auto, incluse le letture al di fuori delle [directory di lavoro](/docs/it/permissions#working-directories). La prima volta che Claude utilizza lo strumento Read, Grep o Glob su un percorso al di fuori di esse, Claude Code chiede se consentire quella lettura.

470 470 

471La richiesta non appare nelle esecuzioni `-p` non interattive o nelle sessioni in background; lì le letture vengono eseguite come prima.471La richiesta non appare nelle esecuzioni `-p` non interattive o nelle sessioni in background; lì le letture vengono eseguite come prima.

472 472 


530 Ogni azione passa attraverso un ordine decisionale fisso. Prevale il primo passaggio corrispondente:530 Ogni azione passa attraverso un ordine decisionale fisso. Prevale il primo passaggio corrispondente:

531 531 

532 1. Le azioni che corrispondono alle tue [regole allow, ask o deny](/docs/it/permissions#manage-permissions) vengono risolte immediatamente, con queste eccezioni:532 1. Le azioni che corrispondono alle tue [regole allow, ask o deny](/docs/it/permissions#manage-permissions) vengono risolte immediatamente, con queste eccezioni:

533 * Le scritture su [percorsi protetti](#protected-paths) vengono inviate al classificatore anche quando corrisponde una regola allow533 * Le scritture su [percorsi protetti](#protected-paths) vengono inviate al classificatore anche quando corrisponde una regola allow. Quando il percorso protetto è il file a cui punta un file di impostazioni con collegamento simbolico, la scrittura può invece chiederti conferma, come descrive l'elenco dei [percorsi protetti](#protected-paths)

534 * Nessuna regola allow approva le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](#critical-paths)534 * Nessuna regola allow approva le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](#critical-paths)

535 * Gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) ti chiedono conferma direttamente anche quando corrisponde una regola allow, e lo stesso vale per gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code535 * Gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) ti chiedono conferma direttamente anche quando corrisponde una regola allow, e lo stesso vale per gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code

536 * Anche un comando della shell che include [domini consentiti per comando](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) viene inviato al classificatore anche quando corrisponde una regola allow, perché una regola approva il comando, non i suoi host536 * Anche un comando della shell che include [domini consentiti per comando](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) viene inviato al classificatore anche quando corrisponde una regola allow, perché una regola approva il comando, non i suoi host

537 * Le regole ask che corrispondono al contenuto di un comando, come `Bash(git push *)`, ripiegano su una richiesta di permesso537 * Le regole ask che corrispondono al contenuto di un comando, come `Bash(git push *)`, ripiegano su una richiesta di permesso

538 * Una scrittura che il [controllo dei collegamenti simbolici](/docs/it/permissions#symlinks) risolve in un percorso protetto ti chiede conferma quando il percorso richiesto da Claude non è di per sé protetto538 * Una scrittura che il [controllo dei collegamenti simbolici](/docs/it/permissions#symlinks) risolve in un percorso protetto ti chiede conferma quando il percorso richiesto da Claude non è di per sé protetto

539 * Una lettura da un [percorso di rete](/docs/it/permissions#network-paths) ti chiede conferma anche quando corrisponde una regola allow

539 2. Le azioni di sola lettura e le modifiche ai file nella tua directory di lavoro vengono approvate automaticamente, tranne le scritture su [percorsi protetti](#protected-paths) e [la prima lettura al di fuori delle directory di lavoro](#first-read-outside-the-working-directories), che ti chiede conferma540 2. Le azioni di sola lettura e le modifiche ai file nella tua directory di lavoro vengono approvate automaticamente, tranne le scritture su [percorsi protetti](#protected-paths) e [la prima lettura al di fuori delle directory di lavoro](#first-read-outside-the-working-directories), che ti chiede conferma

540 * In una sessione con [revisione del classificatore lato server](#server-side-classifier-review), i comandi della shell di sola lettura e quelli [in sandbox](/docs/it/sandboxing#sandbox-modes) attendono quella revisione e vengono bloccati se li segnala541 * In una sessione con [revisione del classificatore lato server](#server-side-classifier-review), i comandi della shell di sola lettura e quelli [in sandbox](/docs/it/sandboxing#sandbox-modes) attendono quella revisione e vengono bloccati se li segnala

541 * Una scrittura all'interno della tua directory di lavoro che il [controllo dei collegamenti simbolici](/docs/it/permissions#symlinks) risolve in una posizione esterna a essa ti chiede conferma542 * Una scrittura all'interno della tua directory di lavoro che il [controllo dei collegamenti simbolici](/docs/it/permissions#symlinks) risolve in una posizione esterna a essa ti chiede conferma

542 * Quando Claude legge un [artefatto creato da qualcun altro](/docs/it/artifacts#read-an-artifact-shared-with-you), si applicano i casi di approvazione elencati in quella sezione543 * Quando Claude legge un [artefatto creato da qualcun altro](/docs/it/artifacts#read-an-artifact-shared-with-you), si applicano i casi di approvazione elencati in quella sezione

544 * Una lettura da un [percorso di rete](/docs/it/permissions#network-paths) ti chiede conferma

543 3. Tutto il resto va al classificatore, ad eccezione delle [rimozioni di percorsi critici](#critical-paths) con la loro gestione predefinita. Nemmeno gli strumenti dei connettori e gli strumenti MCP con `requiresUserInteraction` che ti chiedono conferma direttamente nel passaggio 1 raggiungono mai il classificatore, quindi né un'approvazione richiesta dall'organizzazione né un passaggio di consenso vengono approvati automaticamente545 3. Tutto il resto va al classificatore, ad eccezione delle [rimozioni di percorsi critici](#critical-paths) con la loro gestione predefinita. Nemmeno gli strumenti dei connettori e gli strumenti MCP con `requiresUserInteraction` che ti chiedono conferma direttamente nel passaggio 1 raggiungono mai il classificatore, quindi né un'approvazione richiesta dall'organizzazione né un passaggio di consenso vengono approvati automaticamente

544 4. Se il classificatore blocca, Claude riceve il motivo. Nella maggior parte delle sessioni il motivo indica la regola a cui il classificatore ha fatto corrispondere l'azione, come `[Data Exfiltration]`, anziché fornire una spiegazione scritta; consulta [Rivedi le negazioni](/docs/it/auto-mode-config#review-denials)546 4. Se il classificatore blocca, Claude riceve il motivo. Nella maggior parte delle sessioni il motivo indica la regola a cui il classificatore ha fatto corrispondere l'azione, come `[Data Exfiltration]`, anziché fornire una spiegazione scritta; consulta [Rivedi le negazioni](/docs/it/auto-mode-config#review-denials)

545 547 


593 595 

594Claude Code nega le chiamate che corrispondono alle tue regole [`ask`](/docs/it/permissions#manage-permissions) esplicite piuttosto che richiedere una conferma. Nega anche lo strumento integrato `AskUserQuestion` anche se corrisponde alle tue regole allow, e fa lo stesso con gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code. Nega allo stesso modo gli strumenti MCP contrassegnati con [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool), perché la loro scheda di approvazione necessita di una risposta che questa modalità non raccoglie mai.596Claude Code nega le chiamate che corrispondono alle tue regole [`ask`](/docs/it/permissions#manage-permissions) esplicite piuttosto che richiedere una conferma. Nega anche lo strumento integrato `AskUserQuestion` anche se corrisponde alle tue regole allow, e fa lo stesso con gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code. Nega allo stesso modo gli strumenti MCP contrassegnati con [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool), perché la loro scheda di approvazione necessita di una risposta che questa modalità non raccoglie mai.

595 597 

596Le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](#critical-paths), come `rm -rf /` e `rm -rf ~`, vengono negate anche quando una regola allow le corrisponde o un hook `PreToolUse` le approva.598Le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](#critical-paths), come `rm -rf /` e `rm -rf ~`, vengono negate anche quando una regola allow le corrisponde o un hook `PreToolUse` le consente. Una lettura da un [percorso di rete](/docs/it/permissions#network-paths) viene negata allo stesso modo.

597 599 

598Le sessioni cloud su [Claude Code sul web](/docs/it/claude-code-on-the-web) ignorano `defaultMode: "dontAsk"`; vedi [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) per i dettagli.600Le sessioni cloud su [Claude Code sul web](/docs/it/claude-code-on-the-web) ignorano `defaultMode: "dontAsk"`; vedi [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) per i dettagli.

599 601 


639* **Se accetti**: Claude Code imposta `skipDangerousModePermissionPrompt` su `true` in `~/.claude/settings.json`, in modo che le sessioni successive saltino la finestra di dialogo. Per visualizzare di nuovo la finestra di dialogo, rimuovi la chiave da quel file o impostala su `false`. Il [riferimento `skipDangerousModePermissionPrompt`](/docs/it/settings-reference#skipdangerousmodepermissionprompt) elenca gli altri file di impostazioni dove tu o la tua organizzazione potete impostarla.641* **Se accetti**: Claude Code imposta `skipDangerousModePermissionPrompt` su `true` in `~/.claude/settings.json`, in modo che le sessioni successive saltino la finestra di dialogo. Per visualizzare di nuovo la finestra di dialogo, rimuovi la chiave da quel file o impostala su `false`. Il [riferimento `skipDangerousModePermissionPrompt`](/docs/it/settings-reference#skipdangerousmodepermissionprompt) elenca gli altri file di impostazioni dove tu o la tua organizzazione potete impostarla.

640* **Se rifiuti**: Claude Code esce.642* **Se rifiuti**: Claude Code esce.

641 643 

642In [modalità non interattiva](/docs/it/headless) nessuna finestra di dialogo viene mostrata, e una [sessione in background](/docs/it/agent-view) avviata con `--bg` viene rifiutata finché non hai accettato la finestra di dialogo in una sessione interattiva.644In [modalità non interattiva](/docs/it/headless) nessuna finestra di dialogo viene mostrata. Una [sessione in background](/docs/it/agent-view) rispetta la tua accettazione quando è registrata nelle impostazioni utente o nelle impostazioni gestite:

645 

646* Se non è registrata alcuna accettazione, `claude --bg --permission-mode bypassPermissions` viene rifiutato finché non accetti la finestra di dialogo in una sessione interattiva.

647* Con `skipDangerousModePermissionPrompt` impostato solo in `.claude/settings.local.json`, la sessione in background si avvia ignorando la richiesta di bypass e fissa l'avviso `Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": true`. Perché il bypass venga rispettato, aggiungi quella chiave a `~/.claude/settings.json`, poi avvia una nuova sessione in background.

643 648 

644Su Linux e macOS, Claude Code rifiuta di avviarsi in questa modalità quando viene eseguito come root o sotto `sudo`:649Su Linux e macOS, Claude Code rifiuta di avviarsi in questa modalità quando viene eseguito come root o sotto `sudo`:

645 650 


708* `.devcontainer.json`713* `.devcontainer.json`

709* `.ripgreprc`, `pyrightconfig.json`714* `.ripgreprc`, `pyrightconfig.json`

710* `.mcp.json`, `.claude.json`715* `.mcp.json`, `.claude.json`

716* Il file a cui punta il tuo [file di impostazioni](/docs/it/settings#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

711 717 

712<h2 id="critical-paths">718<h2 id="critical-paths">

713 Percorsi critici719 Percorsi critici


727 733 

728* La radice del filesystem734* La radice del filesystem

729* Directory di primo livello, il che significa qualsiasi figlio diretto della radice, come `/usr`, `/etc`, o `/data`735* Directory di primo livello, il che significa qualsiasi figlio diretto della radice, come `/usr`, `/etc`, o `/data`

730* La tua directory home736* La tua directory home. Su Windows conta anche il suo nome breve 8.3, come `C:\Users\LONGNA~1`

731* Radici di unità Windows e le loro directory di primo livello, come `C:\` e `C:\Windows`737* Radici di unità Windows e le loro directory di primo livello, come `C:\` e `C:\Windows`. Grafie come `\\?\C:\` e `\\localhost\C$` contano come `C:\`

732* La tua directory di lavoro e i suoi genitori738* La tua directory di lavoro e i suoi genitori

733* Le tue directory di lavoro aggiuntive e i loro genitori, ma solo quando la rimozione è un glob sotto uno di essi, come `rm -rf <dir>/*`. `rm -rf <dir>` sulla directory stessa non attiva questo controllo739* Le tue directory di lavoro aggiuntive e i loro genitori, ma solo quando la rimozione è un glob sotto uno di essi, come `rm -rf <dir>/*`. `rm -rf <dir>` sulla directory stessa non attiva questo controllo

734 740 

741I controlli sul nome breve 8.3 della directory home e sulle grafie `\\?\C:\` e `\\localhost\C$` richiedono Claude Code v2.1.292 o successivo.

742 

735<h3 id="other-targets-that-count-as-critical-paths">743<h3 id="other-targets-that-count-as-critical-paths">

736 Altri target che contano come percorsi critici744 Altri target che contano come percorsi critici

737</h3>745</h3>


747| Un target che è solo l'output di una sostituzione di comando, quando `rm` è ricorsivo | `rm -rf "$(pwd)"` | Claude Code non può controllare il target prima che il comando venga eseguito |755| Un target che è solo l'output di una sostituzione di comando, quando `rm` è ricorsivo | `rm -rf "$(pwd)"` | Claude Code non può controllare il target prima che il comando venga eseguito |

748| Una sostituzione di comando finale dopo un percorso critico | `rm -rf ~/$(cmd)` | Claude Code controlla il percorso che rimarrebbe se la sostituzione si espandesse vuota, qui la tua directory home |756| Una sostituzione di comando finale dopo un percorso critico | `rm -rf ~/$(cmd)` | Claude Code controlla il percorso che rimarrebbe se la sostituzione si espandesse vuota, qui la tua directory home |

749| Un target che è solo backslash | `rm -rf "\\"` | Git Bash su Windows legge un singolo backslash come la radice dell'unità corrente, quindi il controllo si applica su ogni piattaforma |757| Un target che è solo backslash | `rm -rf "\\"` | Git Bash su Windows legge un singolo backslash come la radice dell'unità corrente, quindi il controllo si applica su ogni piattaforma |

758| Un percorso Windows che identifica un volume tramite GUID invece che con una lettera di unità | `rm -rf '\\?\Volume{GUID}\work\build'` | Il percorso non indica su quale unità si trova, quindi potrebbe essere un percorso critico. Richiede Claude Code v2.1.292 o successivo |

750| Alcuni target che terminano con `/*` o `/*/` | `rm -rf logs/*/*`, `rm -rf logs/*/`, `cd logs && rm -rf a/*` | Claude Code non può sapere, prima che il comando venga eseguito, quali directory raggiungono |759| Alcuni target che terminano con `/*` o `/*/` | `rm -rf logs/*/*`, `rm -rf logs/*/`, `cd logs && rm -rf a/*` | Claude Code non può sapere, prima che il comando venga eseguito, quali directory raggiungono |

751 760 

752Per disattivare il controllo su un target che è solo output di sostituzione di comando, imposta [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/it/env-vars#variables) nell'ambiente che avvia Claude Code.761Per disattivare il controllo su un target che è solo output di sostituzione di comando, imposta [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/it/env-vars#variables) nell'ambiente che avvia Claude Code.

permissions.md +39 −8

Details

36 36 

37Prima della v2.1.211, Claude Code salvava sempre la regola nella directory di avvio, quindi un'approvazione concessa in un worktree o sottodirectory non si applicava al resto del repository. Le regole che le versioni precedenti hanno salvato in una sottodirectory o worktree si applicano ancora alle sessioni avviate lì.37Prima della v2.1.211, Claude Code salvava sempre la regola nella directory di avvio, quindi un'approvazione concessa in un worktree o sottodirectory non si applicava al resto del repository. Le regole che le versioni precedenti hanno salvato in una sottodirectory o worktree si applicano ancora alle sessioni avviate lì.

38 38 

39A volte un prompt di autorizzazione offre solo un'approvazione una tantum, senza opzione "non chiedere più" e senza opzione per consentire l'azione per il resto della sessione. Claude Code offre quelle opzioni solo quando il prompt può mostrarti tutto ciò che consentirebbero, quindi una regola che salvi da un prompt copre solo ciò che la sua opzione denominata. Quando un prompt offre solo l'approvazione una tantum, approva l'azione una volta, o aggiungi la regola tu stesso in [`/permissions`](#manage-permissions).39A volte una richiesta di permesso offre solo un'approvazione una tantum, senza opzione "non chiedere più" e senza opzione per consentire l'azione per il resto della sessione. Claude Code offre quelle opzioni solo quando la richiesta può mostrarti tutto ciò che consentirebbero, quindi una regola che salvi da una richiesta copre solo ciò che la sua opzione indicava. Quando una richiesta offre solo l'approvazione una tantum, approva l'azione una volta, o aggiungi la regola tu stesso in [`/permissions`](#manage-permissions). Per interrompere le richieste per un comando che inizia con un exec wrapper come `watch`, o per un comando `find` con un'azione come `-delete`, consulta [Exec wrapper e azioni `find`](#exec-wrappers-and-find-actions).

40 40 

41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">

42 Aggiungi un commento quando rispondi a un prompt di autorizzazione42 Aggiungi un commento quando rispondi a un prompt di autorizzazione


91| `acceptEdits` | Accetta automaticamente le modifiche ai file e i comandi comuni del filesystem come `mkdir`, `touch`, `mv` e `cp` per i percorsi nella directory di lavoro o `additionalDirectories` |91| `acceptEdits` | Accetta automaticamente le modifiche ai file e i comandi comuni del filesystem come `mkdir`, `touch`, `mv` e `cp` per i percorsi nella directory di lavoro o `additionalDirectories` |

92| `plan` | Claude legge i file ed esegue comandi shell di sola lettura per esplorare ma non modifica i tuoi file sorgente; con [auto mode](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) disponibile, i comandi approvati dal classificatore vengono eseguiti anche. Etichettato Plan nella CLI e nell'estensione VS Code |92| `plan` | Claude legge i file ed esegue comandi shell di sola lettura per esplorare ma non modifica i tuoi file sorgente; con [auto mode](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) disponibile, i comandi approvati dal classificatore vengono eseguiti anche. Etichettato Plan nella CLI e nell'estensione VS Code |

93| `auto` | Viene eseguito senza prompt di routine; prima che azioni come comandi shell e richieste di rete vengano eseguite, un [classificatore](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) in background verifica che si allineino con la tua richiesta |93| `auto` | Viene eseguito senza prompt di routine; prima che azioni come comandi shell e richieste di rete vengano eseguite, un [classificatore](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) in background verifica che si allineino con la tua richiesta |

94| `dontAsk` | Nega automaticamente ogni chiamata che altrimenti richiederebbe un prompt; le letture di file nelle tue directory di lavoro e altre azioni che non richiedono approvazione vengono comunque eseguite, così come gli strumenti pre-approvati tramite `/permissions` o regole `permissions.allow`. `AskUserQuestion`, strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool), e strumenti connector [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui tale impostazione raggiunge Claude Code vengono negati anche se li hai consentiti |94| `dontAsk` | Nega automaticamente ogni chiamata che altrimenti richiederebbe una conferma; le letture di file nelle tue directory di lavoro e altre azioni che non richiedono approvazione vengono comunque eseguite, così come gli strumenti pre-approvati tramite `/permissions` o regole `permissions.allow`. `AskUserQuestion`, gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool), [le letture da percorsi di rete](#network-paths) e gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui tale impostazione raggiunge Claude Code vengono negati anche se li hai consentiti |

95| `bypassPermissions` | Salta i prompt di autorizzazione, ad eccezione delle [azioni che nessuna modalità auto-approva](/docs/it/permission-modes#actions-no-mode-auto-approves) |95| `bypassPermissions` | Salta i prompt di autorizzazione, ad eccezione delle [azioni che nessuna modalità auto-approva](/docs/it/permission-modes#actions-no-mode-auto-approves) |

96 96 

97<Warning>97<Warning>


240 Bash240 Bash

241</h3>241</h3>

242 242 

243Le regole Bash corrispondono all'intero testo del comando, con `*` che rappresenta qualsiasi testo. [Modelli con caratteri jolly](#wildcard-patterns) mostra a quali comandi corrisponde ogni forma di regola e dove mettere il `*`. Il resto di questa sezione spiega come Claude Code gestisce la corrispondenza per i comandi composti e i wrapper, a cosa non corrisponde una regola, i comandi di sola lettura e i reindirizzamenti.243Le regole Bash corrispondono all'intero testo del comando, con `*` che rappresenta qualsiasi testo. [Modelli con caratteri jolly](#wildcard-patterns) mostra a quali comandi corrisponde ogni forma di regola e dove mettere il `*`. Il resto di questa sezione spiega come Claude Code gestisce la corrispondenza per i comandi composti e i wrapper, quali wrapper e azioni di `find` una regola di prefisso non può approvare, a cosa non corrisponde una regola, i comandi di sola lettura e i reindirizzamenti.

244 244 

245<h4 id="compound-commands">245<h4 id="compound-commands">

246 Comandi composti246 Comandi composti


268 268 

269Questo elenco di wrapper è integrato e non è configurabile. I runner di ambienti di sviluppo come `direnv exec`, `devbox run`, `mise exec`, `npx` e `docker exec` non sono nell'elenco. Poiché questi strumenti eseguono i propri argomenti come comando, una regola come `Bash(devbox run *)` corrisponde a qualsiasi cosa venga dopo `run`, incluso `devbox run rm -rf .`. Per approvare il lavoro all'interno di un runner di ambiente, scrivi una regola specifica che includa sia il runner sia il comando interno, come `Bash(devbox run npm test)`. Aggiungi una regola per ogni comando interno che vuoi consentire.269Questo elenco di wrapper è integrato e non è configurabile. I runner di ambienti di sviluppo come `direnv exec`, `devbox run`, `mise exec`, `npx` e `docker exec` non sono nell'elenco. Poiché questi strumenti eseguono i propri argomenti come comando, una regola come `Bash(devbox run *)` corrisponde a qualsiasi cosa venga dopo `run`, incluso `devbox run rm -rf .`. Per approvare il lavoro all'interno di un runner di ambiente, scrivi una regola specifica che includa sia il runner sia il comando interno, come `Bash(devbox run npm test)`. Aggiungi una regola per ogni comando interno che vuoi consentire.

270 270 

271I wrapper exec come `watch`, `setsid`, `ionice` e `flock` non possono essere approvati automaticamente da una regola di prefisso come `Bash(watch *)`, quindi in modalità Manual chiedono sempre conferma. Lo stesso vale per `find` con `-exec` o `-delete`: una regola `Bash(find *)` non copre queste forme. Per approvare un'invocazione specifica, scrivi una regola a corrispondenza esatta per l'intera stringa del comando.271<h4 id="exec-wrappers-and-find-actions">

272 Wrapper exec e azioni di `find`

273</h4>

274 

275Una regola di prefisso come `Bash(watch *)` o `Bash(find *)` non può approvare automaticamente i seguenti comandi, quindi in modalità Manual chiedono conferma:

276 

277* **Wrapper exec**: come `watch`, `setsid`, `ionice` e `flock`

278* **`find`**: con un'azione che esegue comandi, elimina file o scrive file, come `-exec`, `-delete` o `-fprint`, oppure con `-files0-from`, che legge da un file i percorsi in cui cercare

279 

280Per approvare un'invocazione specifica che non contiene `*`, scrivi una regola a corrispondenza esatta per l'intera stringa del comando, come `Bash(find build -type f -delete)`.

281 

282Quando il comando contiene un `*`, come in `find . -name '*.tmp' -delete`, Claude Code interpreta la regola come un [modello con caratteri jolly](#wildcard-patterns), non come una corrispondenza esatta, quindi il comando chiede comunque conferma. Approvalo ogni volta che chiede conferma, oppure usa un [hook PreToolUse](/docs/it/hooks#pretooluse-decision-control) che restituisca `"allow"` per quel comando.

272 283 

273<h4 id="bash-rule-limits">284<h4 id="bash-rule-limits">

274 A cosa non corrisponde una regola Bash285 A cosa non corrisponde una regola Bash


301* **Glob senza virgolette per comandi con flag in grado di scrivere**: i comandi con flag in grado di scrivere o eseguire, come `find`, `sort`, `sed` e `git`, chiedono conferma quando è presente un glob senza virgolette, perché il glob potrebbe espandersi in un flag come `-delete`.312* **Glob senza virgolette per comandi con flag in grado di scrivere**: i comandi con flag in grado di scrivere o eseguire, come `find`, `sort`, `sed` e `git`, chiedono conferma quando è presente un glob senza virgolette, perché il glob potrebbe espandersi in un flag come `-delete`.

302* **`docker` puntato a un altro daemon**: le forme di sola lettura di `docker` chiedono conferma quando il comando contiene un flag che seleziona un daemon diverso, come `-H`, `--context` o `--url` e `--connection` di Podman.313* **`docker` puntato a un altro daemon**: le forme di sola lettura di `docker` chiedono conferma quando il comando contiene un flag che seleziona un daemon diverso, come `-H`, `--context` o `--url` e `--connection` di Podman.

303* **`file` con flag che aprono percorsi**: `file` chiede conferma quando riceve `-m`/`--magic-file` o `-f`/`--files-from`, perché questi flag fanno sì che `file` apra i percorsi indicati nel valore del flag.314* **`file` con flag che aprono percorsi**: `file` chiede conferma quando riceve `-m`/`--magic-file` o `-f`/`--files-from`, perché questi flag fanno sì che `file` apra i percorsi indicati nel valore del flag.

315* **`ps` che potrebbe stampare variabili d'ambiente**: `ps` chiede conferma quando uno dei suoi argomenti potrebbe agire come opzione `e`, come in `ps auxe` o `ps aux -e`, perché quell'opzione stampa le variabili d'ambiente dei processi. `ps aux` e `ps -ef` vengono eseguiti senza richiesta di conferma. Il controllo sulle forme con trattino come `ps aux -e` richiede Claude Code v2.1.290 o successiva.

304* **Percorsi di rete su Windows**: un comando i cui argomenti includono un percorso di rete (UNC), come `\\server\share\file`, chiede conferma perché l'accesso a un percorso di rete può inviare le tue credenziali Windows all'host indicato. Lo stesso controllo si applica ai comandi dello [strumento PowerShell](/docs/it/tools-reference#powershell-tool).316* **Percorsi di rete su Windows**: un comando i cui argomenti includono un percorso di rete (UNC), come `\\server\share\file`, chiede conferma perché l'accesso a un percorso di rete può inviare le tue credenziali Windows all'host indicato. Lo stesso controllo si applica ai comandi dello [strumento PowerShell](/docs/it/tools-reference#powershell-tool).

305* **Scritture su variabili speciali della shell**: un comando che imposta, rimuove o itera su determinate variabili speciali della shell, come `PATH` o `IFS`, chiede conferma anche quando il resto del comando è di sola lettura.317* **Scritture su variabili speciali della shell**: un comando che imposta, rimuove o itera su determinate variabili speciali della shell, come `PATH` o `IFS`, chiede conferma anche quando il resto del comando è di sola lettura.

306* **Comandi che l'analisi non riesce a interpretare**: quando Claude Code non riesce ad analizzare completamente un comando, chiede l'approvazione invece di trattarlo come di sola lettura. I comandi più lunghi di 10.000 caratteri chiedono sempre conferma perché superano il limite che l'analisi è in grado di interpretare.318* **Comandi che l'analisi non riesce a interpretare**: quando Claude Code non riesce ad analizzare completamente un comando, chiede l'approvazione invece di trattarlo come di sola lettura. I comandi più lunghi di 10.000 caratteri chiedono sempre conferma perché superano il limite che l'analisi è in grado di interpretare.


508 520 

509Quando uno strumento apre poi il file approvato, [conferma che il percorso si risolve ancora nella posizione approvata dal controllo dei permessi](/docs/it/errors#refusing-after-a-symlink-changed).521Quando uno strumento apre poi il file approvato, [conferma che il percorso si risolve ancora nella posizione approvata dal controllo dei permessi](/docs/it/errors#refusing-after-a-symlink-changed).

510 522 

523<h4 id="network-paths">

524 Percorsi di rete

525</h4>

526 

527Quando gli strumenti di lettura dei file di Claude, come Read, Grep e Glob, leggono da un percorso di rete, la lettura ha un proprio controllo dei permessi. Un percorso di rete è un percorso che può raggiungere un altro computer: su Windows, un percorso UNC come `\\server\share\file`, e su macOS e Linux, un percorso di automount `/net` come `/net/fileserver/notes.txt`. La ricerca di un percorso di questo tipo può contattare l'host indicato e, su Windows, quel contatto può inviare all'host le tue credenziali. I comandi shell hanno un proprio controllo: in modalità Manual, un comando Bash o PowerShell di sola lettura i cui argomenti includono un percorso UNC [chiede comunque conferma su Windows](#read-only-commands).

528 

529In Claude Code v2.1.292 e successive, ciascuno dei seguenti lascia invariata la richiesta di conferma:

530 

531* **Regole allow**: una regola non pre-approva la lettura, inclusa una regola per l'intero strumento, come `Read`

532* **Hook PreToolUse**: un [hook](#extend-permissions-with-hooks) che restituisce `"allow"` non salta la richiesta di conferma

533* **Modalità auto**: la richiesta di conferma arriva a te e il [classificatore](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) non decide sulla lettura

534 

535In modalità `dontAsk`, Claude Code nega la lettura invece di chiedere conferma. In modalità `bypassPermissions`, e nelle sessioni interattive del terminale in plan mode con [bypass dei permessi](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) disponibile, la lettura viene eseguita senza questa richiesta di conferma.

536 

537Per leggere i file su una condivisione di rete senza questa richiesta di conferma, assegna prima alla condivisione un percorso locale:

538 

539* **Windows**: mappa la condivisione a una lettera di unità e passa l'unità con `--add-dir` quando avvii Claude Code, come descritto in [Directory di lavoro](#working-directories)

540* **macOS e Linux**: monta la condivisione in un percorso locale, come una directory sotto `/mnt` o `/Volumes`, e leggi i file da lì, come descritto in [Working directory is a network path](/docs/it/errors#working-directory-is-a-network-path)

541 

511<h3 id="webfetch">542<h3 id="webfetch">

512 WebFetch543 WebFetch

513</h3>544</h3>

514 545 

515Le regole WebFetch usano un prefisso `domain:` e corrispondono al nome host dell'URL richiesto. La corrispondenza non distingue tra maiuscole e minuscole, supporta i caratteri jolly `*` e rimuove un `.` finale sia dalla regola sia dal nome host, così `example.com.` e `example.com` vengono trattati allo stesso modo.546Le regole WebFetch usano un prefisso `domain:` e corrispondono al nome host dell'URL richiesto. La corrispondenza non distingue tra maiuscole e minuscole, supporta i caratteri jolly `*` e rimuove un `.` finale sia dalla regola sia dal nome host, così `example.com.` e `example.com` vengono trattati allo stesso modo.

516 547 

517* `WebFetch(domain:example.com)` corrisponde alle richieste verso `example.com`548* `WebFetch(domain:example.com)` corrisponde solo alle richieste verso `example.com`. Per coprire anche sottodomini come `api.example.com`, aggiungi una regola `WebFetch(domain:*.example.com)`

518* `WebFetch(domain:*.example.com)` corrisponde a qualsiasi sottodominio a qualsiasi profondità, come `api.example.com` o `a.b.example.com`, ma non a `example.com` stesso549* `WebFetch(domain:*.example.com)` corrisponde a qualsiasi sottodominio a qualsiasi profondità, come `api.example.com` o `a.b.example.com`, ma non a `example.com` stesso

519* `WebFetch(domain:*)` corrisponde a ogni dominio. Non equivale a una regola `WebFetch` senza argomenti; consulta [Consentire o negare ogni fetch](#allow-or-deny-every-fetch)550* `WebFetch(domain:*)` corrisponde a ogni dominio. Non equivale a una regola `WebFetch` senza argomenti; consulta [Consentire o negare ogni fetch](#allow-or-deny-every-fetch)

520 551 


622 653 

623Vedi [Decidere se fidarsi di un mod](/docs/it/plugins/mods/overview#decide-whether-to-trust-a-mod), o [Gestire i mod per la vostra organizzazione](/docs/it/plugins/mods/admin#know-what-happens-by-default) se distribuite impostazioni gestite.654Vedi [Decidere se fidarsi di un mod](/docs/it/plugins/mods/overview#decide-whether-to-trust-a-mod), o [Gestire i mod per la vostra organizzazione](/docs/it/plugins/mods/admin#know-what-happens-by-default) se distribuite impostazioni gestite.

624 655 

625Gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) richiedono comunque un prompt quando un hook restituisce `"allow"`, così come gli strumenti connector [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui questa impostazione raggiunge Claude Code.656Per uno [strumento che richiede l'interazione dell'utente](/docs/it/permission-modes#actions-no-mode-auto-approves), come `AskUserQuestion` o uno strumento MCP contrassegnato `requiresUserInteraction`, l'approvazione `tool.check` di un mod non salta la richiesta di permesso. Richiede Claude Code v2.1.292 o versioni successive. Anche gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) chiedono comunque conferma quando un hook restituisce `"allow"`, così come le letture da [percorsi di rete](#network-paths) e gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui questa impostazione raggiunge Claude Code.

626 657 

627Un hook di blocco ha anche la precedenza sulle regole allow. Un hook che esce con codice 2 interrompe la chiamata dello strumento prima che le regole di autorizzazione vengano valutate, quindi il blocco si applica anche quando una regola allow consentirebbe altrimenti la chiamata. Per eseguire tutti i comandi Bash senza prompt tranne alcuni che desiderate bloccare, aggiungete `"Bash"` al vostro elenco allow e registrate un hook PreToolUse che rifiuta quei comandi specifici. Vedi [Bloccare le modifiche ai file protetti](/docs/it/hooks-guide#block-edits-to-protected-files) per uno script di hook che potete adattare.658Un hook di blocco ha anche la precedenza sulle regole allow. Un hook che esce con codice 2 interrompe la chiamata dello strumento prima che le regole di autorizzazione vengano valutate, quindi il blocco si applica anche quando una regola allow consentirebbe altrimenti la chiamata. Per eseguire tutti i comandi Bash senza prompt tranne alcuni che desiderate bloccare, aggiungete `"Bash"` al vostro elenco allow e registrate un hook PreToolUse che rifiuta quei comandi specifici. Vedi [Bloccare le modifiche ai file protetti](/docs/it/hooks-guide#block-edits-to-protected-files) per uno script di hook che potete adattare.

628 659 


636* **Durante la sessione**: utilizzate il comando `/add-dir`667* **Durante la sessione**: utilizzate il comando `/add-dir`

637* **Configurazione persistente**: aggiungete a `additionalDirectories` nei [file di impostazioni](/docs/it/settings#where-settings-live)668* **Configurazione persistente**: aggiungete a `additionalDirectories` nei [file di impostazioni](/docs/it/settings#where-settings-live)

638 669 

639I file nelle directory aggiuntive seguono le stesse regole di autorizzazione della directory di lavoro originale: diventano leggibili senza prompt e le autorizzazioni di modifica dei file seguono la modalità di autorizzazione corrente.670I file nelle directory aggiuntive seguono le stesse regole di permesso della directory di lavoro originale: diventano leggibili senza richieste di permesso, a parte il controllo dei [percorsi di rete](#network-paths), e i permessi di modifica dei file seguono la modalità di permesso corrente.

640 671 

641Non potete aggiungere la maggior parte dei [percorsi di rete](/docs/it/errors#working-directory-is-a-network-path), come la condivisione UNC `\\server\share`, come directory di lavoro, perché cercarli può contattare l'host che nominano. Su Windows, mappate la condivisione a una lettera di unità e passate l'unità con `--add-dir` all'avvio.672Non potete aggiungere la maggior parte dei [percorsi di rete](/docs/it/errors#working-directory-is-a-network-path), come la condivisione UNC `\\server\share`, come directory di lavoro, perché cercarli può contattare l'host che nominano. Su Windows, mappate la condivisione a una lettera di unità e passate l'unità con `--add-dir` all'avvio.

642 673 


648 Spostare la sessione in un'altra directory679 Spostare la sessione in un'altra directory

649</h3>680</h3>

650 681 

651Per spostare la sessione in una directory di lavoro primaria diversa, piuttosto che [aggiungere una directory](#working-directories) insieme a quella attuale, eseguite `/cd <path>`. Claude Code mantiene la conversazione, carica il `CLAUDE.md` della nuova directory e vi chiede di [fidarvi dell'area di lavoro](#project-allow-rules-and-workspace-trust) se non avete mai lavorato lì prima. Successivamente, Claude Code [trova la sessione spostata](/docs/it/sessions#resume-a-session) quando eseguite `--resume` dalla nuova directory.682Per spostare la sessione in una directory di lavoro primaria diversa, piuttosto che [aggiungere una directory](#working-directories) insieme a quella attuale, esegui `/cd <path>`. Claude Code mantiene la conversazione, carica il `CLAUDE.md` della nuova directory e ti chiede di [considerare attendibile il workspace](#project-allow-rules-and-workspace-trust) se non ci hai mai lavorato prima. Successivamente, Claude Code [trova la sessione spostata](/docs/it/sessions#where-the-session-picker-looks) quando esegui `--resume` dalla nuova directory.

652 683 

653Non appena vi spostate, Claude Code applica la configurazione del progetto della nuova directory:684Non appena vi spostate, Claude Code applica la configurazione del progetto della nuova directory:

654 685 

Details

790 790 

791Gli hook in `hooks/hooks.json` e nella chiave manifest `hooks` caricano entrambi. Per ogni evento e il suo payload, vedere [Hook events](/docs/it/hooks#hook-events).791Gli hook in `hooks/hooks.json` e nella chiave manifest `hooks` caricano entrambi. Per ogni evento e il suo payload, vedere [Hook events](/docs/it/hooks#hook-events).

792 792 

793Quando un altro plugin abilitato ha lo stesso nome, uno dei due registra i suoi hook di `hooks/hooks.json` e quelli dell'altro vengono esclusi. Consulta [Hook quando due plugin abilitati condividono un nome](/docs/it/plugins/loading#hooks-when-two-enabled-plugins-share-a-name) per sapere quale, e per la nota in `/plugin` che te lo segnala.

794 

793Per scrivere hook come funzioni JavaScript che vengono eseguite all'interno di Claude Code e possono disegnare nella sua interfaccia, elenca un file modulo sotto una chiave `modules` nello stesso `hooks/hooks.json`. Un plugin con uno è un mod. Vedere [Crea un mod](/docs/it/plugins/mods/create).795Per scrivere hook come funzioni JavaScript che vengono eseguite all'interno di Claude Code e possono disegnare nella sua interfaccia, elenca un file modulo sotto una chiave `modules` nello stesso `hooks/hooks.json`. Un plugin con uno è un mod. Vedere [Crea un mod](/docs/it/plugins/mods/create).

794 796 

795<h4 id="when-plugin-hooks-fire">797<h4 id="when-plugin-hooks-fire">

Details

209* **Plugin con il proprio repository**: l'installazione fallisce con un messaggio contenente `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.209* **Plugin con il proprio repository**: l'installazione fallisce con un messaggio contenente `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.

210* **Plugin referenziato da un percorso relativo**: l'installazione utilizza invece la copia attuale del marketplace, e il vincolo viene controllato quando il plugin si carica. Se quella copia è al di fuori dell'intervallo, il plugin dipendente rimane disabilitato e `claude plugin list` mostra `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.210* **Plugin referenziato da un percorso relativo**: l'installazione utilizza invece la copia attuale del marketplace, e il vincolo viene controllato quando il plugin si carica. Se quella copia è al di fuori dell'intervallo, il plugin dipendente rimane disabilitato e `claude plugin list` mostra `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.

211 211 

212Per un plugin che il marketplace referenzia tramite un percorso relativo, un marketplace che avete aggiunto come percorso di cartella locale risolve anche i vincoli rispetto ai tag git di quella cartella, quando la cartella è un repository git. Questo richiede Claude Code v2.1.196 o successivo. Una cartella locale che non è un repository git non ha tag, quindi Claude Code installa la dipendenza dal contenuto attuale della cartella.212Per un plugin che il marketplace referenzia tramite un percorso relativo, un marketplace che hai aggiunto come percorso di cartella locale risolve anche i vincoli rispetto ai tag git di quella cartella, quando la cartella è un repository git. Una cartella locale che non è un repository git non ha tag, quindi Claude Code installa la dipendenza dal contenuto attuale della cartella.

213 213 

214<h3 id="confirm-the-resolved-version">214<h3 id="confirm-the-resolved-version">

215 Confermare la versione risolta215 Confermare la versione risolta

Details

144Queste entry sources non hanno bisogno di un account git:144Queste entry sources non hanno bisogno di un account git:

145 145 

146* **`archive`**: uno zip scaricato su HTTPS. Gli utenti non hanno bisogno né di `git` né di un account, solo accesso di rete all'URL. Richiede Claude Code v2.1.224 o successivo. Fissa ogni archive con `sha256` in modo che Claude Code rifiuti un download modificato. Per inviare credenziali con il download, vedi [Authenticate archive downloads](#authenticate-archive-downloads).146* **`archive`**: uno zip scaricato su HTTPS. Gli utenti non hanno bisogno né di `git` né di un account, solo accesso di rete all'URL. Richiede Claude Code v2.1.224 o successivo. Fissa ogni archive con `sha256` in modo che Claude Code rifiuti un download modificato. Per inviare credenziali con il download, vedi [Authenticate archive downloads](#authenticate-archive-downloads).

147* **Un repository git pubblico**: Claude Code clona una source `url` o `git-subdir` pubblica su HTTPS senza credenziali quando la voce fornisce un URL `https://`. Per una source `github`, o una source `git-subdir` scritta come `owner/repo`, gli utenti senza una chiave SSH GitHub impostano `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.147* **Un repository git pubblico**: Claude Code clona una source `url` o `git-subdir` pubblica su HTTPS senza credenziali quando la voce fornisce un URL `https://`. Per una source `github`, o una source `git-subdir` scritta come `owner/repo`, indica agli utenti senza una chiave SSH GitHub di impostare `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.

148 

149Mantieni `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` nelle tue istruzioni anche se `claude plugin install` riesce senza di essa dalla shell su una macchina senza chiave SSH. Per una source `github`, quel comando può ripiegare su HTTPS da solo, stampando `SSH not configured, cloning via HTTPS`. Le installazioni da `/plugin` all'interno di una sessione e gli aggiornamenti dei plugin non ripiegano, quindi senza la variabile falliscono per gli utenti che non hanno una chiave SSH GitHub.

148 150 

149Per un team su una rete, un marketplace `directory` su un filesystem condiviso funziona anche senza account git. Gli utenti hanno bisogno solo dell'accesso in lettura al percorso.151Per un team su una rete, un marketplace `directory` su un filesystem condiviso funziona anche senza account git. Gli utenti hanno bisogno solo dell'accesso in lettura al percorso.

150 152 

Details

80 80 

81Una sessione cloud non aggiunge i marketplace che un repository elenca sotto [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces), perché ciò richiede la finestra di dialogo di fiducia dell'area di lavoro, che una sessione cloud non mostra mai.81Una sessione cloud non aggiunge i marketplace che un repository elenca sotto [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces), perché ciò richiede la finestra di dialogo di fiducia dell'area di lavoro, che una sessione cloud non mostra mai.

82 82 

83Un plugin della directory di competenze con ambito di progetto si carica solo da `.claude/skills/` della [directory di lavoro primaria](/docs/it/permissions#working-directories) della sessione, e solo dopo che accetti la [finestra di dialogo di fiducia dell'area di lavoro](/docs/it/permissions#what-runs-before-you-trust-a-folder) per quella cartella. Non [cerca le directory padre fino alla radice del repository](/docs/it/skills#discovery-from-parent-and-nested-directories) come fanno le competenze e i comandi semplici. Se avvii da una sottodirectory, un plugin alla radice del repository non si carica. Avvia dalla radice del repository invece, o [sposta la sessione lì con `/cd`](/docs/it/permissions#move-the-session-to-another-directory) su v2.1.246 o successivo.83Se un plugin nella `.claude/skills/` del tuo repository non si carica, controlla dove hai avviato la sessione e se hai dato fiducia alla cartella:

84 

85* **In una sottodirectory**: un plugin alla radice del repository non si carica. Claude Code legge la `.claude/skills/` della [directory di lavoro primaria](/docs/it/permissions#working-directories) della sessione e, a differenza delle skill e dei comandi semplici, non [cerca nelle directory padre](/docs/it/skills#discovery-from-parent-and-nested-directories) i plugin. Avvia invece dalla radice del repository, o [sposta la sessione lì con `/cd`](/docs/it/permissions#move-the-session-to-another-directory) su v2.1.246 o successivo

86* **Dall'app desktop, in un worktree**: il plugin si carica dalla `.claude/skills/` del checkout principale anziché da quella del worktree. Vedi [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout)

87* **In una cartella a cui non hai dato fiducia**: il plugin si carica solo dopo che accetti la [finestra di dialogo di fiducia del workspace](/docs/it/permissions#what-runs-before-you-trust-a-folder) per quella cartella

84 88 

85Un plugin con ambito di progetto è archiviato nel repository e raggiunge ogni collaboratore che lo clona. Poiché quel contenuto proviene dal repository piuttosto che da te, si carica solo dopo lo stesso controllo di fiducia che si applica alle regole di autorizzazione del progetto in `.claude/settings.json`. Fidarsi di una cartella padre o eseguire con `-p` non è sufficiente. I componenti che eseguono codice sono ulteriormente limitati:89Un plugin con ambito di progetto è archiviato nel repository e raggiunge ogni collaboratore che lo clona. Poiché quel contenuto proviene dal repository piuttosto che da te, si carica solo dopo lo stesso controllo di fiducia che si applica alle regole di autorizzazione del progetto in `.claude/settings.json`. Fidarsi di una cartella padre o eseguire con `-p` non è sufficiente. I componenti che eseguono codice sono ulteriormente limitati:

86 90 


421 425 

422Poiché l'ordine confronta i nomi di manifest, un plugin `--plugin-dir` denominato `hello-plugin` sostituisce `hello@example-marketplace` quando il manifest di quel plugin dice anche `"name": "hello-plugin"`.426Poiché l'ordine confronta i nomi di manifest, un plugin `--plugin-dir` denominato `hello-plugin` sostituisce `hello@example-marketplace` quando il manifest di quel plugin dice anche `"name": "hello-plugin"`.

423 427 

428<h3 id="hooks-when-two-enabled-plugins-share-a-name">

429 Hook quando due plugin abilitati condividono un nome

430</h3>

431 

432Quando installi e abiliti due plugin con lo stesso nome di manifest da marketplace diversi, entrambi appaiono come abilitati in `/plugin`, ma gli hook di uno dei due vengono esclusi. Un solo plugin per nome registra gli hook nel proprio `hooks/hooks.json`, e un solo plugin per nome carica un [modulo degli hook](/docs/it/plugins/mods/overview). Quando le impostazioni gestite della tua organizzazione attivano una delle copie, quella copia detiene il nome. Altrimenti lo detiene la copia che Claude Code carica per prima.

433 

434Per vedere quale copia detiene il nome, esegui `/plugin` nella tua sessione e apri la scheda **Errors**. Lì una nota per la copia i cui hook sono stati esclusi indica la copia che detiene il nome, e i dettagli della copia esclusa mostrano la stessa nota. Per gli hook di `hooks/hooks.json` la nota inizia con `Its hooks.json hooks do not run`, e per un modulo degli hook inizia con `Its hooks module does not load`. La nota richiede Claude Code v2.1.296 o versioni successive.

435 

436Per eseguire invece gli hook della copia esclusa, disabilita o disinstalla la copia che detiene il nome, quindi esegui `/reload-plugins` nella tua sessione. Il ricaricamento registra gli hook della copia rimanente e rimuove la nota. Quando la copia che detiene il nome è una che le tue impostazioni gestite attivano, non puoi disabilitarla, e gli hook dell'altra copia restano disattivati finché entrambe sono installate.

437 

424<h3 id="keep-a-session-only-plugin-from-loading">438<h3 id="keep-a-session-only-plugin-from-loading">

425 Impedisci a un plugin solo per sessione di caricarsi439 Impedisci a un plugin solo per sessione di caricarsi

426</h3>440</h3>

Details

51* <span id="reserved-name-spellings" />**Un'altra ortografia di un nome riservato**: un nome che differisce da un nome riservato solo per un punto finale, o per un simbolo diverso da un trattino al posto di un trattino, quindi `claude.code.plugins` conta come `claude-code-plugins`. L'aggiunta del marketplace non riesce con [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/it/errors#marketplace-name-is-another-spelling-of-a-reserved-name), e un marketplace già registrato sotto uno smette di caricarsi. Questo controllo richiede Claude Code v2.1.280 o successivo.51* <span id="reserved-name-spellings" />**Un'altra ortografia di un nome riservato**: un nome che differisce da un nome riservato solo per un punto finale, o per un simbolo diverso da un trattino al posto di un trattino, quindi `claude.code.plugins` conta come `claude-code-plugins`. L'aggiunta del marketplace non riesce con [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/it/errors#marketplace-name-is-another-spelling-of-a-reserved-name), e un marketplace già registrato sotto uno smette di caricarsi. Questo controllo richiede Claude Code v2.1.280 o successivo.

52* **Nomi che Claude Code utilizza per i plugin che non provengono da un marketplace**: `inline` per i plugin caricati con [`--plugin-dir`](/docs/it/cli-reference), `builtin` per i plugin integrati, `skills-dir` per i plugin caricati automaticamente da [`.claude/skills/`](/docs/it/skills) e `synced` per i plugin sincronizzati dal proprio account claude.ai. Anche `claude-plugin-test` è riservato. `skills-dir` appare anche come `{"source": "skills-dir"}` in `strictKnownMarketplaces` e `blockedMarketplaces`, descritto in [Source values valid only in policy lists](#source-values-valid-only-in-policy-lists).52* **Nomi che Claude Code utilizza per i plugin che non provengono da un marketplace**: `inline` per i plugin caricati con [`--plugin-dir`](/docs/it/cli-reference), `builtin` per i plugin integrati, `skills-dir` per i plugin caricati automaticamente da [`.claude/skills/`](/docs/it/skills) e `synced` per i plugin sincronizzati dal proprio account claude.ai. Anche `claude-plugin-test` è riservato. `skills-dir` appare anche come `{"source": "skills-dir"}` in `strictKnownMarketplaces` e `blockedMarketplaces`, descritto in [Source values valid only in policy lists](#source-values-valid-only-in-policy-lists).

53* **`npm`, `pip`, `uv`, `cargo`, `github` e `gh`**: riservati in qualsiasi maiuscola. Questo controllo richiede Claude Code v2.1.275 o successivo.53* **`npm`, `pip`, `uv`, `cargo`, `github` e `gh`**: riservati in qualsiasi maiuscola. Questo controllo richiede Claude Code v2.1.275 o successivo.

54* **Nomi di membri presenti in ogni oggetto JavaScript**: `constructor`, `hasOwnProperty`, `isPrototypeOf`, `propertyIsEnumerable`, `toLocaleString`, `toString` e `valueOf`. `claude plugin marketplace add` rifiuta un marketplace che ne utilizza uno con [`Claude Code reserves this name and cannot register a marketplace under it`](/docs/it/plugins/troubleshooting#claude-code-reserves-this-name). Questo controllo richiede Claude Code v2.1.296 o successivo.

54* **Nomi che iniziano con `claudeai-`**: riservati per i marketplace ospitati su claude.ai. `claude plugin marketplace add` rifiuta qualsiasi altro marketplace che ne utilizzi uno con `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.55* **Nomi che iniziano con `claudeai-`**: riservati per i marketplace ospitati su claude.ai. `claude plugin marketplace add` rifiuta qualsiasi altro marketplace che ne utilizzi uno con `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.

55* **La cartella di download di un marketplace GitHub registrato, `<owner>-<repo>`**: Claude Code scarica un marketplace aggiunto da una sorgente `github` come `acme/x-tools` tramite una cartella denominata `acme-x-tools`, qualunque sia il `name` di quel marketplace. Finché quel marketplace è registrato con un nome diverso da `acme-x-tools`, `claude plugin marketplace add` rifiuta un marketplace diverso chiamato `acme-x-tools` dopo averlo scaricato e segnala `Can't use the marketplace name "acme-x-tools"`. Questo controllo richiede Claude Code v2.1.290 o successivo.56* **La cartella di download di un marketplace GitHub registrato, `<owner>-<repo>`**: Claude Code scarica un marketplace aggiunto da una sorgente `github` come `acme/x-tools` tramite una cartella denominata `acme-x-tools`, qualunque sia il `name` di quel marketplace. Finché quel marketplace è registrato con un nome diverso da `acme-x-tools`, `claude plugin marketplace add` rifiuta un marketplace diverso chiamato `acme-x-tools` dopo averlo scaricato e segnala `Can't use the marketplace name "acme-x-tools"`. Questo controllo richiede Claude Code v2.1.290 o successivo.

56 57 

Details

68* **La protezione tutela ciò che gestisci.** Il mod di un utente non può modificare ciò che i tuoi hook gestiti ricevono o decidono, il prompt di sistema, il tuo `CLAUDE.md` gestito e le altre istruzioni gestite, ciò che qualsiasi mod legge come impostazioni, né gli strumenti e le descrizioni dei tuoi server MCP gestiti.68* **La protezione tutela ciò che gestisci.** Il mod di un utente non può modificare ciò che i tuoi hook gestiti ricevono o decidono, il prompt di sistema, il tuo `CLAUDE.md` gestito e le altre istruzioni gestite, ciò che qualsiasi mod legge come impostazioni, né gli strumenti e le descrizioni dei tuoi server MCP gestiti.

69* **Tutto il resto è consentito.** La protezione non aggiunge altre restrizioni. Il mod di un utente può comunque leggere e scrivere file, avviare processi, effettuare richieste di rete, riscrivere chiamate agli strumenti e prompt, negare una chiamata a uno strumento, approvarne una che altrimenti richiederebbe conferma e disegnare nell'interfaccia, il tutto con i permessi di quell'utente.69* **Tutto il resto è consentito.** La protezione non aggiunge altre restrizioni. Il mod di un utente può comunque leggere e scrivere file, avviare processi, effettuare richieste di rete, riscrivere chiamate agli strumenti e prompt, negare una chiamata a uno strumento, approvarne una che altrimenti richiederebbe conferma e disegnare nell'interfaccia, il tutto con i permessi di quell'utente.

70* **Le regole deny e i tuoi hook gestiti hanno la precedenza.** Dove la protezione viene caricata, il mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, qualunque sia il file di impostazioni che contiene la regola. Anche un blocco da un hook `PreToolUse` nelle impostazioni gestite è definitivo. Entrambi si applicano alle chiamate agli strumenti di Claude. Nessuno dei due si applica alle [chiamate `$.fs` e `$.process`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) del mod stesso: con `Read(.env)` negato, un mod può comunque leggere quel file con `$.fs.read` o avviare un programma che lo fa. Per limitare quelle chiamate, impedisci il caricamento del mod oppure gestisci la chiamata in un [mod di criteri](#enforce-a-policy-with-a-mod-of-your-own).70* **Le regole deny e i tuoi hook gestiti hanno la precedenza.** Dove la protezione viene caricata, il mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, qualunque sia il file di impostazioni che contiene la regola. Anche un blocco da un hook `PreToolUse` nelle impostazioni gestite è definitivo. Entrambi si applicano alle chiamate agli strumenti di Claude. Nessuno dei due si applica alle [chiamate `$.fs` e `$.process`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) del mod stesso: con `Read(.env)` negato, un mod può comunque leggere quel file con `$.fs.read` o avviare un programma che lo fa. Per limitare quelle chiamate, impedisci il caricamento del mod oppure gestisci la chiamata in un [mod di criteri](#enforce-a-policy-with-a-mod-of-your-own).

71* **Gli altri controlli dei permessi possono essere aggirati.** Il mod di un utente che approva le chiamate agli strumenti può approvare una chiamata per cui una regola `ask` chiederebbe conferma, oppure che un hook `PreToolUse` esterno alle impostazioni gestite ha bloccato. In modalità auto, una chiamata approvata dal mod viene eseguita senza un controllo del classificatore.71* **Gli altri controlli dei permessi possono essere aggirati.** Il mod di un utente che approva le chiamate agli strumenti può approvare una chiamata per cui una regola `ask` chiederebbe conferma, oppure che un hook `PreToolUse` esterno alle impostazioni gestite ha bloccato. In modalità auto, una chiamata approvata dal mod viene eseguita senza un controllo del classificatore. Per le richieste di conferma che l'approvazione `tool.check` di un mod non salta, consulta [Estendere i permessi con gli hook](/docs/it/permissions#extend-permissions-with-hooks).

72 72 

73Il codice sorgente della protezione è pubblico nella [directory `mods/sec-default` del repository di Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).73Il codice sorgente della protezione è pubblico nella [directory `mods/sec-default` del repository di Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).

74 74 


81* **Gli hook delle impostazioni continuano a funzionare.** Gli hook di tipo command, HTTP, prompt e agent nei file di impostazioni e in `hooks/hooks.json` dei plugin vengono eseguiti come prima, insieme ai mod. Nulla di essi è deprecato.81* **Gli hook delle impostazioni continuano a funzionare.** Gli hook di tipo command, HTTP, prompt e agent nei file di impostazioni e in `hooks/hooks.json` dei plugin vengono eseguiti come prima, insieme ai mod. Nulla di essi è deprecato.

82* **Le regole deny hanno la precedenza dove la protezione viene caricata.** Il mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, a meno che tu non imposti [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).82* **Le regole deny hanno la precedenza dove la protezione viene caricata.** Il mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, a meno che tu non imposti [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).

83* **Gli hook gestiti vengono eseguiti per primi.** Un hook `PreToolUse` nelle impostazioni gestite viene eseguito prima che qualsiasi mod veda la chiamata allo strumento, e il suo blocco è definitivo. Se poi un mod riscrive la chiamata, i tuoi hook gestiti vengono eseguiti di nuovo sulla chiamata riscritta, quindi un blocco si applica comunque. Gli hook `PreToolUse` provenienti da altri file di impostazioni e dai plugin vengono eseguiti dopo l'ultimo mod, quindi un mod che restituisce un proprio risultato invece di eseguire lo strumento ne impedisce l'esecuzione. Consulta [L'ordine in cui vengono eseguiti i mod](/docs/it/plugins/mods/events#the-order-mods-run-in).83* **Gli hook gestiti vengono eseguiti per primi.** Un hook `PreToolUse` nelle impostazioni gestite viene eseguito prima che qualsiasi mod veda la chiamata allo strumento, e il suo blocco è definitivo. Se poi un mod riscrive la chiamata, i tuoi hook gestiti vengono eseguiti di nuovo sulla chiamata riscritta, quindi un blocco si applica comunque. Gli hook `PreToolUse` provenienti da altri file di impostazioni e dai plugin vengono eseguiti dopo l'ultimo mod, quindi un mod che restituisce un proprio risultato invece di eseguire lo strumento ne impedisce l'esecuzione. Consulta [L'ordine in cui vengono eseguiti i mod](/docs/it/plugins/mods/events#the-order-mods-run-in).

84* **La policy di rete copre `$.http.fetch`.** Se la tua organizzazione disattiva il recupero web, oppure il traffico di rete non essenziale è disattivato per la sessione, Claude Code rifiuta una richiesta di rete che un mod effettua con `$.http.fetch`. La policy non copre un programma che il mod avvia con `$.process.run`. Quel programma raggiunge la rete con l'accesso dell'utente stesso.84* **La policy di rete copre `$.http.fetch`.**

85 

86 * **La policy della tua organizzazione non consente WebFetch**: Claude Code rifiuta anche ogni richiesta `$.http.fetch` di qualsiasi mod. Consulta [Disponibilità di WebFetch](/docs/it/tools-reference#webfetch-availability).

87 * **Imposti [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/it/env-vars)**: un mod installato da te o dai tuoi utenti può comunque effettuare queste richieste. La variabile blocca solo i [mod integrati in Claude Code](/docs/it/plugins/mods/overview#mods-built-into-claude-code), più qualsiasi richiesta `$.http.fetch` che include le credenziali Anthropic della sessione. Prima della v2.1.288, la variabile bloccava ogni richiesta `$.http.fetch` di qualsiasi mod.

88 

89 Nessuna delle due copre un programma che il mod avvia con `$.process.run`, che raggiunge la rete con l'accesso dell'utente stesso.

85* **I controlli dei plugin coprono i mod.** Un mod è un plugin, quindi le [impostazioni che limitano ciò che gli utenti possono installare](/docs/it/plugins/org#restrict-what-users-can-install), come `strictKnownMarketplaces`, decidono se può essere installato o meno.90* **I controlli dei plugin coprono i mod.** Un mod è un plugin, quindi le [impostazioni che limitano ciò che gli utenti possono installare](/docs/it/plugins/org#restrict-what-users-can-install), come `strictKnownMarketplaces`, decidono se può essere installato o meno.

86* **I mod non possono modificare la richiesta di permesso.** Un mod può cambiare lo stile di gran parte dell'interfaccia di Claude Code, ma non della richiesta di permesso, quindi non può modificare ciò che una richiesta mostra. Un mod può comunque approvare o negare una chiamata a uno strumento prima che compaia la richiesta, come descritto in [Sapere cosa succede per impostazione predefinita](#know-what-happens-by-default).91* **I mod non possono modificare la richiesta di permesso.** Un mod può cambiare lo stile di gran parte dell'interfaccia di Claude Code, ma non della richiesta di permesso, quindi non può modificare ciò che una richiesta mostra. Un mod può comunque approvare o negare una chiamata a uno strumento prima che compaia la richiesta, come descritto in [Sapere cosa succede per impostazione predefinita](#know-what-happens-by-default).

87* **Le richieste di attendibilità vengono prima.** In una sessione interattiva in una directory che l'utente non ha ancora considerato attendibile, nessun mod viene caricato finché l'utente non risponde alla richiesta di attendibilità.92* **Le richieste di attendibilità vengono prima.** In una sessione interattiva in una directory che l'utente non ha ancora considerato attendibile, nessun mod viene caricato finché l'utente non risponde alla richiesta di attendibilità.

Details

303| `$.session` | `messages()` restituisce la trascrizione come elenco di `{ role, text, toolUses }`. Inoltre la directory di lavoro, il modello e altro. [`usage()`](/docs/it/plugins/mods/reference#mods-api-methods) restituisce l'uso della finestra di contesto e i limiti del piano. |303| `$.session` | `messages()` restituisce la trascrizione come elenco di `{ role, text, toolUses }`. Inoltre la directory di lavoro, il modello e altro. [`usage()`](/docs/it/plugins/mods/reference#mods-api-methods) restituisce l'uso della finestra di contesto e i limiti del piano. |

304| `$.mcp` | `call` di uno strumento su un server MCP connesso |304| `$.mcp` | `call` di uno strumento su un server MCP connesso |

305 305 

306File e processi hanno alcune regole proprie:306File, processi e richieste hanno alcune regole proprie:

307 307 

308* **Percorsi**: un percorso relativo viene risolto rispetto alla directory di lavoro della sessione308* **Percorsi**: un percorso relativo viene risolto rispetto alla directory di lavoro della sessione, o del subagent di cui l'hook sta gestendo l'evento

309* **`$.fs.list`**: restituisce le voci di una singola directory come `{ name, kind, size, isLink }` e non è ricorsivo309* **`$.fs.list`**: restituisce le voci di una singola directory come `{ name, kind, size, isLink }` e non è ricorsivo

310* **`$.process.run`**: accetta un elenco di argomenti e non usa alcuna shell. Si risolve in `{ exitCode, stdout, stderr }` qualunque sia il codice di uscita. Viene rifiutato se il programma non riesce ad avviarsi o è ancora in esecuzione allo scadere del timeout, che per impostazione predefinita è di 30 secondi, quindi racchiudilo in `try` e `catch`.310* **`$.process.run`**: accetta un elenco di argomenti e non usa alcuna shell. Si risolve in `{ exitCode, stdout, stderr }` qualunque sia il codice di uscita. Viene rifiutato se il programma non riesce ad avviarsi o è ancora in esecuzione allo scadere del timeout, che per impostazione predefinita è di 30 secondi, quindi racchiudilo in `try` e `catch`.

311* **`$.http.fetch`**: segue fino a cinque reindirizzamenti. In caso di reindirizzamento verso un'origine diversa, mantiene solo gli header di richiesta `accept`, `accept-language`, `content-type` e `user-agent` che hai impostato e scarta gli altri, quindi una richiesta che dipende da un altro header, come `Authorization`, può fallire dopo quel reindirizzamento. I [limiti](/docs/it/plugins/mods/reference#limits) indicano il suo timeout e le dimensioni del body.

311 312 

312Ognuna di queste chiamate è a sua volta un evento, denominato in base al suo namespace e al suo metodo senza il `$.`, come `fs.read` per `$.fs.read`. Un mod [precedente nella catena](/docs/it/plugins/mods/events#the-order-mods-run-in) può osservare, riscrivere o rifiutare la tua chiamata, ed è così che un'organizzazione limita ciò a cui i mod possono accedere.313Ognuna di queste chiamate è a sua volta un evento, denominato in base al suo namespace e al suo metodo senza il `$.`, come `fs.read` per `$.fs.read`. Un mod [precedente nella catena](/docs/it/plugins/mods/events#the-order-mods-run-in) può osservare, riscrivere o rifiutare la tua chiamata, ed è così che un'organizzazione limita ciò a cui i mod possono accedere.

313 314 

Details

148| `agent.offer` | Un tipo di subagent viene offerto a Claude | `{ isOffered: false }` per non renderlo disponibile |148| `agent.offer` | Un tipo di subagent viene offerto a Claude | `{ isOffered: false }` per non renderlo disponibile |

149| `agent.spawn` | Un subagent o un membro di un [team di agenti](/docs/it/agent-teams) sta per avviarsi. Per un membro del team, `e.isTeammate` è `true`. | `next({ ...e, model })` per sceglierne il modello, oppure `{ deny: reason }` |149| `agent.spawn` | Un subagent o un membro di un [team di agenti](/docs/it/agent-teams) sta per avviarsi. Per un membro del team, `e.isTeammate` è `true`. | `next({ ...e, model })` per sceglierne il modello, oppure `{ deny: reason }` |

150 150 

151Quando Claude riprende un subagent con lo strumento [`SendMessage`](/docs/it/sub-agents#resume-subagents), il tuo hook `agent.spawn` non viene eseguito di nuovo. Per rifiutare le chiamate a `SendMessage` che riprendono un subagent, individua quello strumento in un hook [`tool.call`](/docs/it/plugins/mods/events#guard-or-change-a-tool-call).

152 

151<h3 id="interface">153<h3 id="interface">

152 Interfaccia154 Interfaccia

153</h3>155</h3>


175| [`plugin.register`](/docs/it/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un modulo degli hook sta per essere caricato. `e.uses` elenca i suoi eventi, le chiamate all'API dei mod, le variabili d'ambiente e lo stato, così come li stampa `claude plugin validate`. Ogni chiamata è scritta senza il prefisso `$.`, ad esempio `fs.read`. | `{ refuse: reason }` |177| [`plugin.register`](/docs/it/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un modulo degli hook sta per essere caricato. `e.uses` elenca i suoi eventi, le chiamate all'API dei mod, le variabili d'ambiente e lo stato, così come li stampa `claude plugin validate`. Ogni chiamata è scritta senza il prefisso `$.`, ad esempio `fs.read`. | `{ refuse: reason }` |

176| `engine.create` | L'API dei mod viene costruita per questo mod | Un'API dei mod modificata, per aggiungere un namespace. Un mod al di fuori del [livello](#the-hook-function) `user` può anche escluderne uno. |178| `engine.create` | L'API dei mod viene costruita per questo mod | Un'API dei mod modificata, per aggiungere un namespace. Un mod al di fuori del [livello](#the-hook-function) `user` può anche escluderne uno. |

177 179 

180Quando l'hook di un altro mod chiama un metodo su un namespace che hai aggiunto in `engine.create`, le chiamate `$` del tuo metodo vengono eseguite nel contesto di quell'hook finché ogni hook su quell'evento non ha restituito un risultato. Ad esempio, un percorso relativo viene risolto rispetto alla directory di lavoro di quell'hook, e `$.prompt.submit` viene rifiutata mentre il turno è in attesa di quell'hook. Le chiamate che il tuo metodo effettua dopo quel momento vengono eseguite nel contesto proprio del tuo mod.

181 

178<h3 id="telemetry">182<h3 id="telemetry">

179 Telemetria183 Telemetria

180</h3>184</h3>


317| Timeout di `$.process.run` | 30 secondi per impostazione predefinita, 10 minuti al massimo |321| Timeout di `$.process.run` | 30 secondi per impostazione predefinita, 10 minuti al massimo |

318| `maxTokens` di `$.model.complete` | 1024 per impostazione predefinita, fino a 64.000 o al limite di output del modello |322| `maxTokens` di `$.model.complete` | 1024 per impostazione predefinita, fino a 64.000 o al limite di output del modello |

319| `$.fs.read` e `$.fs.write` | 4 MiB per un singolo file |323| `$.fs.read` e `$.fs.write` | 4 MiB per un singolo file |

324| Il corpo di una richiesta `$.http.fetch` | 4 MiB, contati in caratteri. Una chiamata con un corpo più grande viene rifiutata. |

325| Il corpo di una risposta `$.http.fetch` | 4 MiB. `text` contiene i primi 4 MiB e il resto non viene letto. Quando l'header `Content-Length` dichiara una dimensione maggiore, la chiamata viene invece rifiutata, con un motivo che termina con `is over the 4194304-byte limit`, tranne quando l'ultima richiesta dopo eventuali reindirizzamenti usa il metodo `HEAD`. L'esenzione per `HEAD` richiede Claude Code v2.1.296 o versioni successive. |

326| Una singola chiamata `$.http.fetch`, reindirizzamenti e corpo inclusi | 30 secondi |

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

320| 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](/docs/it/plugins/mods/events#handle-a-hook-that-fails). |328| 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](/docs/it/plugins/mods/events#handle-a-hook-that-fails). |

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

322| 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](/docs/it/plugins/mods/interface#build-a-tree-from-elements). |330| 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](/docs/it/plugins/mods/interface#build-a-tree-from-elements). |

Details

78| `disableAllHooks in managed settings` | La tua organizzazione ha disattivato gli hook dei plugin installati |78| `disableAllHooks in managed settings` | La tua organizzazione ha disattivato gli hook dei plugin installati |

79| `only managed plugins and built-in plugins run` | È impostato `allowManagedHooksOnly`, oppure `disableAllHooks` è impostato in un file di impostazioni diverso dalle impostazioni gestite |79| `only managed plugins and built-in plugins run` | È impostato `allowManagedHooksOnly`, oppure `disableAllHooks` è impostato in un file di impostazioni diverso dalle impostazioni gestite |

80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Hai avviato Claude Code con `--bare` |80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Hai avviato Claude Code con `--bare` |

81| `another plugin of that name loads first` | Due plugin hanno lo stesso nome. Viene usato quello gestito, oppure quello caricato per primo. |81| `another plugin of that name loads first` | Un altro plugin attivato ha lo stesso nome del tuo mod e [detiene il nome](/docs/it/plugins/loading#hooks-when-two-enabled-plugins-share-a-name), quindi il modulo degli hook del tuo mod non viene caricato |

82 82 

83<h3 id="messages-from-the-built-in-guard">83<h3 id="messages-from-the-built-in-guard">

84 Messaggi della protezione integrata84 Messaggi della protezione integrata


191 191 

192Prima della v2.1.292, la chiamata veniva eseguita una seconda volta, quindi il prompt veniva inviato, il comando eseguito o il subagent avviato due volte.192Prima della v2.1.292, la chiamata veniva eseguita una seconda volta, quindi il prompt veniva inviato, il comando eseguito o il subagent avviato due volte.

193 193 

194<h3 id="$-agent-register-refused-the-hooks-module-that-made-the-call-is-no-longer-loaded">

195 `$.agent.register refused: the hooks module that made the call is no longer loaded`

196</h3>

197 

198La riga inizia con il nome del tuo mod, come in `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`, e l'agente non viene registrato. Il tuo mod è stato ricaricato o scaricato prima della chiamata. Un ricaricamento carica una nuova copia del modulo degli hook, e questa chiamata proveniva da codice ancora in esecuzione nella vecchia copia, come un hook che non aveva ancora restituito un risultato.

199 

200Se quell'hook non intercetta il rifiuto, fallisce e Claude Code [lo salta](#hook-skipped). Per registrare l'agente dalla copia che rimane caricata, esegui la chiamata nel tuo hook [`session.start`](/docs/it/plugins/mods/reference#session), che viene eseguito di nuovo in ogni nuova copia dopo un ricaricamento.

201 

194<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">202<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">

195 `mods that run in the hooks worker are off for this session`203 `mods that run in the hooks worker are off for this session`

196</h3>204</h3>

Details

256 256 

257Prima della v2.1.295, Claude Code segnalava come riuscita l'aggiunta di questo esempio.257Prima della v2.1.295, Claude Code segnalava come riuscita l'aggiunta di questo esempio.

258 258 

259<h3 id="claude-code-reserves-this-name">

260 `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it`

261</h3>

262 

263Hai aggiunto un marketplace e il [`name`](/docs/it/plugins/marketplace-reference#top-level-fields) nel suo `marketplace.json` è uno dei nomi di membro che ogni oggetto JavaScript possiede, come `constructor`, `toString` o `valueOf`. Claude Code riserva questi nomi, quindi rifiuta l'aggiunta e non registra nulla. [Nomi riservati](/docs/it/plugins/marketplace-reference#reserved-names) li elenca.

264 

265In questo esempio, il marketplace si chiama `constructor`:

266 

267```text theme={null}

268Cannot add marketplace "constructor": Claude Code reserves this name and cannot register a marketplace under it. The name is set by "name" in the marketplace's marketplace.json; ask its maintainer to change it.

269```

270 

271Se un file di impostazioni dichiara il marketplace in [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces), il tentativo di Claude Code di aggiungerlo all'avvio fallisce allo stesso modo, e il messaggio appare nella scheda **Errors** in `/plugin`.

272 

273Dai al marketplace un altro nome, quindi aggiungilo di nuovo:

274 

275* **Il marketplace è tuo**: modifica `name` in `marketplace.json`

276* **Lo ospita qualcun altro**: chiedi al proprietario di cambiare il nome

277 

278Prima della v2.1.296, l'aggiunta di un marketplace del genere falliva con un errore interno al posto di questo messaggio.

279 

259<h3 id="ssh-authentication-failed-or-https-authentication-failed">280<h3 id="ssh-authentication-failed-or-https-authentication-failed">

260 `SSH authentication failed` or `HTTPS authentication failed`281 `SSH authentication failed` or `HTTPS authentication failed`

261</h3>282</h3>


907 Hook loads but never fires928 Hook loads but never fires

908</h4>929</h4>

909 930 

910Se un hook si carica senza errore ma non si attiva mai, controllare la sua definizione e quindi osservarlo in esecuzione:931Se un hook si carica senza errori ma non si attiva mai, per prima cosa esegui `/plugin` nella tua sessione e apri i dettagli del plugin. Una nota che inizia con `Its hooks.json hooks do not run` significa che al suo posto ha registrato i propri hook un altro plugin abilitato con lo stesso nome, e [Hook quando due plugin abilitati hanno lo stesso nome](/docs/it/plugins/loading#hooks-when-two-enabled-plugins-share-a-name) spiega di quale copia si tratta e come passare all'altra. Altrimenti, controlla la definizione dell'hook e poi osservane l'esecuzione:

911 932 

912<Steps>933<Steps>

913 <Step title="Check the event name">934 <Step title="Check the event name">

routines.md +3 −3

Details

86 </Step>86 </Step>

87 87 

88 <Step title="Seleziona i repository">88 <Step title="Seleziona i repository">

89 Aggiungi uno o più repository GitHub per cui Claude possa lavorare. Ogni repository viene clonato all'inizio di un'esecuzione, a partire dal ramo predefinito. Claude crea rami con prefisso `claude/` per le sue modifiche.89 Aggiungi uno o più repository GitHub in cui Claude possa lavorare. Ogni repository viene clonato all'inizio di un'esecuzione. Claude crea branch con prefisso `claude/` per le sue modifiche.

90 </Step>90 </Step>

91 91 

92 <Step title="Seleziona un ambiente">92 <Step title="Seleziona un ambiente">


359 Repository e autorizzazioni dei rami359 Repository e autorizzazioni dei rami

360</h3>360</h3>

361 361 

362Le routine necessitano dell'accesso a GitHub per clonare i repository. Quando si crea una routine dalla CLI con `/schedule`, Claude verifica se l'account ha accesso a GitHub per il repository da cui è stata eseguita e, se non lo ha, aggiunge una nota di configurazione che indica come concedere l'accesso. Vedere [Opzioni di autenticazione GitHub](/docs/it/claude-code-on-the-web#github-authentication-options) per i due modi per concedere l'accesso.362Le routine necessitano dell'accesso a GitHub per clonare i repository. Quando crei una routine dalla CLI con `/schedule`, Claude verifica se il tuo account ha accesso a GitHub per il repository da cui l'hai eseguita e, se non lo ha, aggiunge una nota di configurazione che indica come concedere l'accesso. Consulta [Opzioni di autenticazione GitHub](/docs/it/claude-code-on-the-web#github-authentication-options) per i due modi per concedere l'accesso. Nei piani Team ed Enterprise, un [Owner](/docs/it/server-managed-settings#access-control) della tua organizzazione Claude deve attivare ciascun metodo prima che tu possa usarlo; consulta [Connettere GitHub](/docs/it/web-quickstart#connect-github).

363 363 

364Se la connessione GitHub è mancante o scaduta quando un'esecuzione è dovuta, la routine salta le esecuzioni finché non si riconnette, fino a 72 ore. Riconnettere GitHub entro quella finestra e la routine riprende automaticamente. Dopo 72 ore senza una connessione, la routine si disattiva e la si riattiva dopo aver riconnesso GitHub.364Se la connessione GitHub è mancante o scaduta quando un'esecuzione è dovuta, la routine salta le esecuzioni finché non si riconnette, fino a 72 ore. Riconnettere GitHub entro quella finestra e la routine riprende automaticamente. Dopo 72 ore senza una connessione, la routine si disattiva e la si riattiva dopo aver riconnesso GitHub.

365 365 

366Ogni repository aggiunto viene clonato ad ogni esecuzione. Claude inizia dal ramo predefinito del repository a meno che il prompt non specifichi diversamente.366Ogni repository che aggiungi viene clonato a ogni esecuzione. Claude parte dal branch predefinito del repository a meno che il tuo prompt non specifichi diversamente. Se un [evento pull request di GitHub](#add-a-github-trigger) attiva l'esecuzione e il repository della pull request è il primo repository della routine, quel repository parte invece dal commit di testa della pull request.

367 367 

368Claude esegue il push del suo lavoro su un branch con prefisso `claude/` a meno che il tuo prompt non gli indichi di eseguire il push su un altro branch. Per controllare su quali branch un'esecuzione può eseguire il push, usa le regole di protezione dei branch o i ruleset su GitHub. Per le esecuzioni sull'infrastruttura gestita da Anthropic, e per le esecuzioni self-hosted che eseguono il push tramite il [proxy git di Anthropic](/docs/it/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub le applica all'accesso GitHub che hai connesso, quindi una regola che quell'accesso può aggirare non blocca il push di un'esecuzione. Un'esecuzione self-hosted che esegue il push con le credenziali git fornite dal tuo deploy viene invece verificata rispetto a quelle. Consulta [Configurare git](/docs/it/self-hosted-environments-deploy#configure-git).368Claude esegue il push del suo lavoro su un branch con prefisso `claude/` a meno che il tuo prompt non gli indichi di eseguire il push su un altro branch. Per controllare su quali branch un'esecuzione può eseguire il push, usa le regole di protezione dei branch o i ruleset su GitHub. Per le esecuzioni sull'infrastruttura gestita da Anthropic, e per le esecuzioni self-hosted che eseguono il push tramite il [proxy git di Anthropic](/docs/it/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub le applica all'accesso GitHub che hai connesso, quindi una regola che quell'accesso può aggirare non blocca il push di un'esecuzione. Un'esecuzione self-hosted che esegue il push con le credenziali git fornite dal tuo deploy viene invece verificata rispetto a quelle. Consulta [Configurare git](/docs/it/self-hosted-environments-deploy#configure-git).

369 369 

sandboxing.md +1 −0

Details

203* I comandi `rm` o `rmdir` che hanno come destinazione un [percorso critico](/docs/it/permission-modes#critical-paths) seguono comunque il normale flusso dei permessi203* I comandi `rm` o `rmdir` che hanno come destinazione un [percorso critico](/docs/it/permission-modes#critical-paths) seguono comunque il normale flusso dei permessi

204* Le [regole ask](/docs/it/permissions) limitate a un contenuto, come `Bash(git push *)`, forzano comunque una richiesta di conferma anche per i comandi in sandbox204* Le [regole ask](/docs/it/permissions) limitate a un contenuto, come `Bash(git push *)`, forzano comunque una richiesta di conferma anche per i comandi in sandbox

205* Una regola ask `Bash` semplice, o la forma equivalente `Bash(*)`, viene ignorata per i comandi eseguiti in sandbox; si applica comunque ai comandi che ricadono nel normale flusso dei permessi. Nel [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode), la regola non viene ignorata: chiede conferma anche per i comandi in sandbox, compresi quelli di sola lettura205* Una regola ask `Bash` semplice, o la forma equivalente `Bash(*)`, viene ignorata per i comandi eseguiti in sandbox; si applica comunque ai comandi che ricadono nel normale flusso dei permessi. Nel [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode), la regola non viene ignorata: chiede conferma anche per i comandi in sandbox, compresi quelli di sola lettura

206* I comandi dello [strumento Monitor](/docs/it/tools-reference#monitor-tool) non vengono approvati automaticamente, anche se vengono comunque eseguiti nella sandbox. Per evitare la richiesta di conferma, aggiungi una [regola allow](/docs/it/permissions#bash) che corrisponda al comando, come `Bash(npm run *)`

206 207 

207<Info>208<Info>

208 La modalità auto-allow funziona indipendentemente dall'impostazione della modalità di permesso, con tre eccezioni: il [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode), un comando in modalità auto che include [domini consentiti per comando](#per-command-allowed-domains-in-auto-mode) e la [revisione lato server da parte del classificatore](/docs/it/permission-modes#how-the-classifier-evaluates-actions) dei comandi in sandbox in modalità auto. Anche se non sei in modalità "accept edits", i comandi Bash in sandbox vengono eseguiti automaticamente quando auto-allow è abilitato. Ciò significa che i comandi Bash che modificano file entro i confini della sandbox vengono eseguiti senza chiedere, anche in modalità Manual, in cui gli strumenti di modifica dei file chiederebbero conferma.209 La modalità auto-allow funziona indipendentemente dall'impostazione della modalità di permesso, con tre eccezioni: il [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode), un comando in modalità auto che include [domini consentiti per comando](#per-command-allowed-domains-in-auto-mode) e la [revisione lato server da parte del classificatore](/docs/it/permission-modes#how-the-classifier-evaluates-actions) dei comandi in sandbox in modalità auto. Anche se non sei in modalità "accept edits", i comandi Bash in sandbox vengono eseguiti automaticamente quando auto-allow è abilitato. Ciò significa che i comandi Bash che modificano file entro i confini della sandbox vengono eseguiti senza chiedere, anche in modalità Manual, in cui gli strumenti di modifica dei file chiederebbero conferma.

Details

132Il runner e le sue sessioni effettuano diversi tipi di connessione in uscita, e non è richiesta alcuna connettività in entrata da Anthropic:132Il runner e le sue sessioni effettuano diversi tipi di connessione in uscita, e non è richiesta alcuna connettività in entrata da Anthropic:

133 133 

134* **Piano di controllo**: il runner esegue il polling di `api.anthropic.com` per il lavoro e pubblica gli eventi di progresso della configurazione e di errore, tutto HTTPS in uscita. Il polling funge anche da heartbeat del runner.134* **Piano di controllo**: il runner esegue il polling di `api.anthropic.com` per il lavoro e pubblica gli eventi di progresso della configurazione e di errore, tutto HTTPS in uscita. Il polling funge anche da heartbeat del runner.

135* **SCM connector**: l'orchestrator facoltativo [SCM connector](/docs/it/self-hosted-environments-reference#scm-connector-flags) tunnel è l'unica connessione WebSocket.135* **Git**: il runner clona dal tuo host git e vi esegue il push su HTTPS o SSH, autenticato con credenziali fornite dal tuo deploy. Vedi [Configura git](/docs/it/self-hosted-environments-deploy#configure-git) per le opzioni, incluse le credenziali coniate per sessione. Con il [proxy git Anthropic](/docs/it/self-hosted-environments-deploy#use-the-anthropic-git-proxy), il traffico git per i repository su github.com passa invece attraverso `api.anthropic.com`.

136* **Git**: il runner clona da e spinge verso il tuo host git su HTTPS o SSH, autenticato con credenziali che la tua distribuzione fornisce; [Configura git](/docs/it/self-hosted-environments-deploy#configure-git) copre le opzioni, incluse credenziali coniate per sessione e il [proxy git Anthropic](/docs/it/self-hosted-environments-deploy#use-the-anthropic-git-proxy), che instrada git attraverso `api.anthropic.com` invece.136* **Session child**: il processo Claude Code figlio mantiene il flusso di eventi della sessione verso `api.anthropic.com`, ed effettua le proprie chiamate in uscita per l'inferenza del modello e per i comandi git eseguiti durante la sessione. In una sessione che utilizza [git gestito da Anthropic](/docs/it/self-hosted-environments-deploy#use-the-anthropic-git-proxy), il figlio invia il suo traffico `git` e `gh` per github.com tramite una connessione WebSocket che apre verso `api.anthropic.com`.

137* **Session child**: il processo Claude Code figlio della sessione mantiene il flusso di eventi della sessione a `api.anthropic.com`, e effettua le proprie chiamate in uscita per l'inferenza del modello e per i comandi git eseguiti durante la sessione. Vedi [Requisiti di rete](/docs/it/self-hosted-environments-deploy#network-requirements) per l'elenco completo dell'uscita. Il [diagramma sopra](#how-self-hosted-environments-work) mostra questi percorsi, a parte l'SCM connector facoltativo.137* **SCM connector**: l'[SCM connector](/docs/it/self-hosted-environments-reference#scm-connector-flags) facoltativo dell'orchestrator non è disponibile, quindi il suo tunnel non si apre. Il tunnel è una connessione WebSocket verso `api.anthropic.com`.

138 

139Vedi [Requisiti di rete](/docs/it/self-hosted-environments-deploy#network-requirements) per l'elenco completo dell'uscita. Il [diagramma sopra](#how-self-hosted-environments-work) mostra questi percorsi, a parte l'SCM connector facoltativo e la connessione git gestita da Anthropic.

138 140 

139Per impostazione predefinita, l'inferenza del modello utilizza l'API Anthropic. Il piano di controllo consegna l'endpoint API a ogni sessione, e la sessione si autentica con un token OAuth emesso da Anthropic e limitato alla sessione. Per inviare invece le richieste del modello al tuo account cloud, vedi [Invia le richieste del modello a Bedrock o Agent Platform](/docs/it/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform).141Per impostazione predefinita, l'inferenza del modello utilizza l'API Anthropic. Il piano di controllo consegna l'endpoint API a ogni sessione, e la sessione si autentica con un token OAuth emesso da Anthropic e limitato alla sessione. Per inviare invece le richieste del modello al tuo account cloud, vedi [Invia le richieste del modello a Bedrock o Agent Platform](/docs/it/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform).

140 142 

Details

31| Variabile | Descrizione |31| Variabile | Descrizione |

32| :- | :- |32| :- | :- |

33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Il JWT della sessione, con prefisso `sk-ant-cc-`. Il suo claim `act` identifica il creatore della sessione, con l'email del creatore quando la superficie di creazione l'ha registrata. Il valore è il token al momento dello spawn; gli aggiornamenti arrivano sullo stdin del figlio, quindi un wrapper vede solo il valore iniziale. Consulta [Verify session identity](/docs/it/self-hosted-environments-identity). |33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Il JWT della sessione, con prefisso `sk-ant-cc-`. Il suo claim `act` identifica il creatore della sessione, con l'email del creatore quando la superficie di creazione l'ha registrata. Il valore è il token al momento dello spawn; gli aggiornamenti arrivano sullo stdin del figlio, quindi un wrapper vede solo il valore iniziale. Consulta [Verify session identity](/docs/it/self-hosted-environments-identity). |

34| `CCR_SESSION_ACCOUNT_EMAIL` | L'email del creatore della sessione, pre-estratta dal runner dal claim `act.email` del token senza verifica della firma. Adatta per l'etichettatura, come i trailer dei commit. Quando l'email controlla il rilascio delle credenziali, verifica il token e leggi il claim da esso; consulta [Provision credentials scoped to the session creator](#provision-credentials-scoped-to-the-session-creator). Non impostata quando il token non contiene un'email del creatore. Trattala come informazione personale identificabile. |34| `CCR_SESSION_ACCOUNT_EMAIL` | L'email del creatore della sessione, pre-estratta dal runner dal claim `act.email` del token senza verifica della firma. Adatta per l'etichettatura, come i trailer dei commit. Quando l'email controlla il rilascio delle credenziali, verifica il token e leggi il claim da esso. Consulta [Provision credentials scoped to the session creator](#provision-credentials-scoped-to-the-session-creator). Non impostata quando il token non contiene un'email del creatore, ad esempio nelle sessioni create dall'identità di servizio della tua organizzazione. Trattala come informazione personale identificabile. |

35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` o `scheduled_trigger`. Anthropic registra il valore una volta alla creazione della sessione, quindi il wrapper e ogni hook del ciclo di vita vedono lo stesso valore. Usala solo per l'analisi dell'adozione e l'etichettatura, non come segnale di autorizzazione. Non impostata quando la sessione non ha una superficie registrata o riconosciuta, quindi fai riferimento ad essa come `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` sotto `set -u`. Richiede Claude Code v2.1.229 o successivo. |35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` o `scheduled_trigger`. Anthropic registra il valore una volta alla creazione della sessione, quindi il wrapper e ogni hook del ciclo di vita vedono lo stesso valore. Usala solo per l'analisi dell'adozione e l'etichettatura, non come segnale di autorizzazione. Non impostata quando la sessione non ha una superficie registrata o riconosciuta. Richiede Claude Code v2.1.229 o successivo. |

36| `CLAUDE_RUNNER_CLAUDE_BIN` | Percorso assoluto al binario Claude Code del runner stesso. Termina il wrapper con `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` per passare il controllo al binario bloccato senza hardcodificare un percorso di installazione. |36| `CLAUDE_RUNNER_CLAUDE_BIN` | Percorso assoluto al binario Claude Code del runner stesso. Termina il wrapper con `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` per passare il controllo al binario bloccato senza hardcodificare un percorso di installazione. |

37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID sessione nel formato taggato `cse_...`. Questa è la stessa sessione che gli [hook del ciclo di vita](#lifecycle-hooks) vedono come `CLAUDE_RUNNER_SESSION_ID` nel formato `session_...`; le variabili UUID corrispondono in entrambi, e sostituire il prefisso `cse_` con `session_` produce l'ID mostrato nell'URL della sessione. |37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID sessione nel formato taggato `cse_...`. Questa è la stessa sessione che gli [hook del ciclo di vita](#lifecycle-hooks) vedono come `CLAUDE_RUNNER_SESSION_ID` nel formato `session_...`; le variabili UUID corrispondono in entrambi, e sostituire il prefisso `cse_` con `session_` produce l'ID mostrato nell'URL della sessione. |

38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | Lo stesso ID sessione nel formato UUID canonico, per i sistemi che si basano su UUID. |38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | Lo stesso ID sessione nel formato UUID canonico, per i sistemi che si basano su UUID. |

39| `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` | Per una sessione [Claude Tag](https://claude.com/docs/claude-tag/overview) che appartiene a un thread Slack, il link a quel thread. Non impostata per le altre sessioni, e può non essere impostata anche per una sessione di thread. |

40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Per una sessione Claude Tag che appartiene a un thread Slack, il timestamp Slack di quel thread, come `1700000000.000100`. Può non essere impostata, e può essere impostata quando `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` non lo è, quindi controlla ciascuna variabile separatamente. |

39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Percorso assoluto a un file per sessione che contiene il JWT della sessione corrente, mantenuto aggiornato negli aggiornamenti dei token. I sottoprocessi della shell lo leggono per il loro header `Authorization` quando scaricano gli allegati che l'utente ha aggiunto alla sessione. `exec` preserva la variabile automaticamente; un wrapper che ricostruisce l'ambiente del figlio deve riportare la variabile, altrimenti i download degli allegati smettono di funzionare silenziosamente. |41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Percorso assoluto a un file per sessione che contiene il JWT della sessione corrente, mantenuto aggiornato negli aggiornamenti dei token. I sottoprocessi della shell lo leggono per il loro header `Authorization` quando scaricano gli allegati che l'utente ha aggiunto alla sessione. `exec` preserva la variabile automaticamente; un wrapper che ricostruisce l'ambiente del figlio deve riportare la variabile, altrimenti i download degli allegati smettono di funzionare silenziosamente. |

40| `CLAUDE_CONFIG_DIR` | Directory di configurazione Claude per sessione, scritta all'inizio della sessione dallo snapshot della configurazione dell'host del runner che il runner acquisisce all'avvio; consulta [Permissions and tool approval](#permissions-and-tool-approval). Le scritture qui sono isolate a questa sessione. La directory rimane sotto `<base-dir>/_sessions/` dopo la fine della sessione a meno che tu non avvii il runner con [`--remove-session-state`](/docs/it/self-hosted-environments-reference#runner-cli-flags); consulta [Reuse a pre-warmed checkout](/docs/it/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |42| `CLAUDE_CONFIG_DIR` | Directory di configurazione Claude per sessione, scritta all'inizio della sessione dallo snapshot della configurazione dell'host del runner che il runner acquisisce all'avvio; consulta [Permissions and tool approval](#permissions-and-tool-approval). Le scritture qui sono isolate a questa sessione. La directory rimane sotto `<base-dir>/_sessions/` dopo la fine della sessione a meno che tu non avvii il runner con [`--remove-session-state`](/docs/it/self-hosted-environments-reference#runner-cli-flags); consulta [Reuse a pre-warmed checkout](/docs/it/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |

41| `ANTHROPIC_BASE_URL` | L'URL di base dell'API che il figlio utilizzerà, fornito dal piano di controllo per sessione e normalmente `https://api.anthropic.com`. Non sovrascriverlo: la credenziale di inferenza della sessione è un token OAuth emesso da Anthropic che altri provider non accettano. |43| `ANTHROPIC_BASE_URL` | L'URL di base dell'API che il figlio utilizzerà, fornito dal piano di controllo per sessione e normalmente `https://api.anthropic.com`. Non sovrascriverlo: la credenziale di inferenza della sessione è un token OAuth emesso da Anthropic che altri provider non accettano. |


43 45 

44Il wrapper eredita anche il resto dell'ambiente gestito del figlio, incluse tutte le variabili d'ambiente fornite dal server. `exec` le propaga tutte automaticamente; se il tuo wrapper avvia il figlio in un altro modo, inoltra l'ambiente completo.46Il wrapper eredita anche il resto dell'ambiente gestito del figlio, incluse tutte le variabili d'ambiente fornite dal server. `exec` le propaga tutte automaticamente; se il tuo wrapper avvia il figlio in un altro modo, inoltra l'ambiente completo.

45 47 

48`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` e `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` raggiungono il tuo wrapper o l'[hook `command`](#command). Raggiungono anche ciò che la sessione esegue, come i comandi della shell, gli hook di git e gli hook di Claude Code. Gli hook `checkout`, `post-session` e `spawn-runner` non le ricevono.

49 

50<h3 id="give-a-default-to-variables-that-can-be-unset">

51 Assegnare un valore predefinito alle variabili che possono non essere impostate

52</h3>

53 

54`CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` e `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` possono ciascuna non essere impostate. Se il tuo script usa `set -u`, Bash si arresta con `unbound variable` quando espande una di esse non impostata, quindi espandile con un valore predefinito, come `${CCR_SESSION_ACCOUNT_EMAIL:-}`.

55 

56Ovunque una shell espanda il link del thread Slack, adotta queste precauzioni:

57 

58* **Mettilo tra virgolette**: il link può contenere caratteri che la shell interpreta, come `?` e `&`, quindi metti la variabile tra virgolette, come in `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`.

59* **Tieni il suo valore fuori dalle stringhe di `eval` e `sh -c`**: non sostituire il suo valore in una stringa eseguita da `eval` o `sh -c`, nemmeno tra virgolette. Fai invece in modo che quella stringa faccia riferimento alla variabile.

60 

46<h3 id="keep-stdin-and-file-descriptor-3-attached">61<h3 id="keep-stdin-and-file-descriptor-3-attached">

47 Mantenere stdin e il descrittore di file 3 collegati62 Mantenere stdin e il descrittore di file 3 collegati

48</h3>63</h3>

49 64 

50Lo stdin del figlio è il canale di controllo del runner. Le rotazioni dei token e i segnali di fine sessione arrivano su di esso. Il runner apre anche una pipe sul descrittore di file 3 e legge da essa i segnali di attività del figlio per gestire i timeout di inattività e di avvio. Un semplice `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` preserva entrambi automaticamente.65Lo stdin del figlio è il canale di controllo del runner. Le rotazioni dei token e i segnali di fine sessione arrivano su di esso. Il runner apre anche una pipe sul descrittore di file 3 e legge da essa i segnali di attività del figlio per gestire i timeout di inattività e di avvio. Un semplice `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` preserva entrambi automaticamente.

51 66 

52Se il tuo wrapper mette in background il figlio con un semplice `&`, interrompe lo stdin del figlio: la sessione sembra sana fino a quando non scade la durata di circa 30 minuti del token OAuth iniziale, dopodiché ogni chiamata API fallisce con `401 authentication_error`. Se il tuo wrapper deve mettere in background il figlio, ad esempio per mantenere attivo un trap di teardown, salva stdin sul descrittore di file 4 o superiore e ricollegalo esplicitamente:67Se il tuo wrapper mette in background il figlio con un semplice `&`, interrompe lo stdin del figlio. La sessione sembra sana fino a quando non scade la durata di circa 30 minuti del token OAuth iniziale, dopodiché ogni chiamata API che usa il token fallisce con `401 authentication_error`. Se il tuo wrapper deve mettere in background il figlio, ad esempio per mantenere attivo un trap di teardown, salva stdin sul descrittore di file 4 o superiore e ricollegalo esplicitamente:

53 68 

54```bash theme={null}69```bash theme={null}

55exec 4<&070exec 4<&0


59wait "$CHILD"74wait "$CHILD"

60```75```

61 76 

62Non chiudere né riutilizzare il descrittore di file 3 nel wrapper. Reindirizzare lo stdout e lo stderr del figlio va bene.77Puoi reindirizzare lo stdout del figlio. Mantieni il descrittore di file 3 e lo stderr collegati al runner:

78 

79* **Descrittore di file 3**: trasporta i segnali di attività del figlio al runner. Non chiuderlo né riutilizzarlo nel wrapper.

80* **stderr**: quando il wrapper o il figlio esce con codice diverso da zero, il runner pubblica le ultime righe dello stderr nella sessione e le stampa nel proprio log. L'utente della sessione vede quelle righe, quindi non stampare segreti sullo stderr e rimuovi `set -x` prima di distribuire il wrapper. Se reindirizzi lo stderr, le sessioni vengono comunque eseguite, ma il runner segnala un errore con il solo codice di uscita.

63 81 

64<h3 id="pass-the-system-prompt-flags-through">82<h3 id="pass-the-system-prompt-flags-through">

65 Passare i flag del prompt di sistema83 Passare i flag del prompt di sistema


108 checkout126 checkout

109</h3>127</h3>

110 128 

111Viene eseguito una volta per repository, al posto del clone e del fetch integrati del runner. Usa l'hook per clonare da un mirror read-through, popolare un albero di lavoro da un archivio o applicare l'autenticazione git per sessione. Il runner imposta queste variabili, e può impostare altre variabili `CLAUDE_RUNNER_` che la tabella non elenca:129Viene eseguito una volta per repository, al posto del clone e del fetch integrati del runner. Usa l'hook per clonare da un mirror read-through che raggiungi tramite HTTPS o SSH, popolare un albero di lavoro da un archivio o applicare l'autenticazione git per sessione. Il runner imposta queste variabili, e può impostare altre variabili `CLAUDE_RUNNER_` che la tabella non elenca:

112 130 

113| Variabile | Descrizione |131| Variabile | Descrizione |

114| :- | :- |132| :- | :- |

115| `CLAUDE_RUNNER_REPO_URL` | URL del repository da clonare, dopo che `--git-host-rewrite` e `--git-ssh-rewrite` sono stati applicati |133| `CLAUDE_RUNNER_REPO_URL` | URL del repository da clonare, dopo che `--git-host-rewrite` e `--git-ssh-rewrite` sono stati applicati |

116| `CLAUDE_RUNNER_REPO_REF` | Revisione da controllare: ramo, tag o commit SHA come la sessione lo ha richiesto. Vuoto significa il ramo predefinito del repository. |134| `CLAUDE_RUNNER_REPO_REF` | Revisione di cui eseguire il checkout, come richiesta dalla sessione: un branch, un tag, un commit SHA o un nome di riferimento completo come `refs/pull/<number>/head`. Vuoto indica il branch predefinito del repository. |

117| `CLAUDE_RUNNER_CHECKOUT_PATH` | Percorso assoluto dove l'albero di lavoro deve essere lasciato |135| `CLAUDE_RUNNER_CHECKOUT_PATH` | Percorso assoluto dove l'albero di lavoro deve essere lasciato |

118| `CLAUDE_RUNNER_SESSION_ID` | ID sessione nel modulo taggato `session_...`, per la registrazione e la correlazione |136| `CLAUDE_RUNNER_SESSION_ID` | ID sessione nel modulo taggato `session_...`, per la registrazione e la correlazione |

119| `CLAUDE_RUNNER_SESSION_UUID` | Lo stesso ID sessione nel modulo UUID canonico |137| `CLAUDE_RUNNER_SESSION_UUID` | Lo stesso ID sessione nel modulo UUID canonico |

120| `CLAUDE_RUNNER_API_BASE_URL` | URL di base dell'API Anthropic per le chiamate limitate alla sessione |138| `CLAUDE_RUNNER_API_BASE_URL` | URL di base dell'API Anthropic per le chiamate limitate alla sessione |

121| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app` o `ios`. Non impostato quando la sessione non ha una superficie registrata o riconosciuta. |139| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app` o `ios`. Non impostata quando la sessione non ha una superficie registrata o riconosciuta, quindi fai riferimento a essa come `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` con `set -u`. Richiede Claude Code v2.1.229 o successivo. |

122| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Il token di accesso della sessione, per le chiamate API limitate alla sessione |140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Il token di accesso della sessione, per le chiamate API limitate alla sessione |

123| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Impostazioni git che il runner fissa per il git eseguito dal tuo hook. [Configurazione git all'interno degli hook del ciclo di vita](#git-configuration-inside-lifecycle-hooks) le descrive. Richiede Claude Code v2.1.280 o successivo. |141| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Impostazioni git che il runner fissa per il git eseguito dal tuo hook. [Configurazione git all'interno degli hook del ciclo di vita](#git-configuration-inside-lifecycle-hooks) le descrive. Richiede Claude Code v2.1.280 o successivo. |

124 142 

125Lo script deve lasciare un albero di lavoro in `CLAUDE_RUNNER_CHECKOUT_PATH` controllato alla revisione richiesta. HEAD staccato va bene; il runner crea il ramo di lavoro della sessione in cima. Il runner verifica che il percorso contenga un `.git` in seguito; se l'hook materializza una fonte non-git come Perforce o un tarball scompattato, impostare `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` nell'ambiente del runner per saltare quel controllo. I flussi basati su Git come la creazione del ramo di lavoro e il push dei risultati richiedono un checkout git, quindi esportare i risultati da alberi non-git con un hook [`post-session`](#post-session).143Lo script deve lasciare in `CLAUDE_RUNNER_CHECKOUT_PATH` un albero di lavoro con il checkout della revisione richiesta. Un HEAD staccato va bene, perché il runner crea sopra di esso il branch di lavoro della sessione.

126 144 

127Il runner non passa una credenziale git all'hook. Invece, coniare una credenziale di clone per sessione dall'identità della sessione: verificare `CLAUDE_CODE_SESSION_ACCESS_TOKEN` con una libreria JWT standard rispetto all'endpoint JWKS sotto `CLAUDE_RUNNER_API_BASE_URL`, come descritto in [Verify the token from your service](/docs/it/self-hosted-environments-identity#verify-the-token-from-your-service), quindi fare in modo che il servizio di credenziale emetta una credenziale di clone di breve durata per l'identità nel claim `act` del token. `CLAUDE_RUNNER_CLAUDE_BIN` non è impostato nell'ambiente dell'hook di checkout, quindi il subcomando `decode-token` non è disponibile qui. Ricadere in qualsiasi autenticazione git che l'host ha già, come un agente SSH, un helper di credenziale o `.netrc`, è anche un'opzione.145Dopo che il tuo hook termina, il runner verifica che `CLAUDE_RUNNER_CHECKOUT_PATH` contenga un `.git`. Se il tuo hook materializza una sorgente non git come Perforce o un tarball scompattato, imposta `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` nell'ambiente del runner per saltare quel controllo. I flussi basati su git come la creazione del branch di lavoro e il push dei risultati richiedono un checkout git, quindi esporta i risultati da alberi non git con un [hook `post-session`](#post-session).

128 146 

129Quando l'hook esce con codice diverso da zero, o esce 0 senza lasciare un checkout utilizzabile dietro, ciò che il runner fa dipende dal repository:147<h4 id="get-git-credentials-in-the-hook">

148 Ottenere le credenziali git nell'hook

149</h4>

130 150 

131* **Un repository a cui la sessione spinge i risultati**: il runner fallisce la sessione e su un'uscita diversa da zero mostra la coda dello stderr dello script all'utente.151Il runner non passa una credenziale git all'hook. Nemmeno il sottocomando `decode-token` è disponibile qui, perché `CLAUDE_RUNNER_CLAUDE_BIN` non è impostato nell'ambiente dell'hook di checkout. Genera invece una credenziale di clone per sessione a partire dall'identità della sessione, oppure ricorri all'autenticazione git dell'host stesso:

132* **Un repository che la sessione legge solo**, come un repository aggiunto a una sessione in esecuzione: il runner registra una riga `[runner:warn]` con il dettaglio del fallimento, pubblica un passo `Skipped` alla sessione, rimuove ciò che l'hook ha lasciato al percorso di checkout e continua con i repository rimanenti. Quando il runner non può rimuovere il percorso immediatamente, ritenta la rimozione alla fine della sessione. Se saltare lascia la sessione senza alcun repository, il runner fallisce comunque la sessione.

133 152 

134Prima della v2.1.228, il runner falliva la sessione su un fallimento dell'hook per qualsiasi repository, quindi un repository di sola lettura che l'hook non poteva servire falliva di nuovo la sessione su ogni nuovo runner su cui la sessione riprendeva.153* **Credenziale di clone per sessione**: verifica `CLAUDE_CODE_SESSION_ACCESS_TOKEN` con una libreria JWT standard rispetto all'endpoint JWKS sotto `CLAUDE_RUNNER_API_BASE_URL`, come descritto in [Verify the token from your service](/docs/it/self-hosted-environments-identity#verify-the-token-from-your-service). Poi fai in modo che il tuo servizio di credenziali emetta una credenziale di clone di breve durata per l'identità nel claim `act` del token. Associa quella credenziale a `act.sub` e non richiedere `act.email`.

154* **Autenticazione git dell'host**: usa qualsiasi autenticazione git di cui l'host dispone già, come un agente SSH, un credential helper o `.netrc`.

135 155 

136Il runner rimuove il percorso di checkout dopo la fine della sessione.156<h4 id="when-the-hook-fails">

157 Quando l'hook fallisce

158</h4>

159 

160L'hook fallisce quando esce con un codice diverso da zero, o esce con 0 senza lasciare un checkout utilizzabile:

161 

162* **Un repository a cui la sessione spinge i risultati**: il runner fallisce la sessione e su un'uscita diversa da zero mostra la coda dello stderr dello script all'utente.

163* **Un repository che la sessione legge soltanto**, come un repository aggiunto a una sessione in esecuzione: il runner registra una riga `[runner:warn]` con il dettaglio del fallimento, pubblica un passaggio `Skipped` nella sessione, rimuove ciò che l'hook ha lasciato nel percorso di checkout e continua con i repository rimanenti. Se saltarlo lascia la sessione senza alcun repository, il runner fa comunque fallire la sessione.

164 

165Quando l'hook ha successo, il runner rimuove il percorso di checkout dopo la fine della sessione.

137 166 

138<h3 id="post-session">167<h3 id="post-session">

139 post-session168 post-session


151| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Percorsi assoluti separati da due punti degli alberi di lavoro della sessione. Vuoto per sessioni senza repository. |180| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Percorsi assoluti separati da due punti degli alberi di lavoro della sessione. Vuoto per sessioni senza repository. |

152| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Percorso al log di debug della sessione, ancora su disco mentre l'hook viene eseguito |181| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Percorso al log di debug della sessione, ancora su disco mentre l'hook viene eseguito |

153| `CLAUDE_RUNNER_API_BASE_URL` | URL di base dell'API Anthropic per le chiamate limitate alla sessione |182| `CLAUDE_RUNNER_API_BASE_URL` | URL di base dell'API Anthropic per le chiamate limitate alla sessione |

154| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app` o `ios`. Non impostato quando la sessione non ha una superficie registrata o riconosciuta. Richiede Claude Code v2.1.229 o successivo. |183| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app` o `ios`. Non impostata quando la sessione non ha una superficie registrata o riconosciuta, quindi fai riferimento a essa come `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` con `set -u`. Richiede Claude Code v2.1.229 o successivo. |

155| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Il token di accesso della sessione, per le chiamate API limitate alla sessione |184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Il token di accesso della sessione, per le chiamate API limitate alla sessione |

156| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Impostazioni git che il runner fissa per il git eseguito dal tuo hook. [Configurazione git all'interno degli hook del ciclo di vita](#git-configuration-inside-lifecycle-hooks) le descrive. Richiede Claude Code v2.1.280 o successivo. |185| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Impostazioni git che il runner fissa per il git eseguito dal tuo hook. [Configurazione git all'interno degli hook del ciclo di vita](#git-configuration-inside-lifecycle-hooks) le descrive. Richiede Claude Code v2.1.280 o successivo. |

157 186 

158`CLAUDE_RUNNER_EXIT_REASON` assume uno di quattro valori:187`CLAUDE_RUNNER_EXIT_REASON` assume uno di quattro valori:

159 188 

160* `completed`: la sessione è terminata in modo pulito. Il processo Claude Code è uscito normalmente, oppure la sessione è stata archiviata o eliminata mentre era ancora in esecuzione.189* `completed`: la sessione è terminata in modo pulito. Il processo Claude Code è uscito normalmente, oppure è uscito da solo dopo che la sessione è stata archiviata o eliminata.

161* `failed`: il processo Claude Code è andato in crash, oppure la configurazione è fallita dopo l'avvio.190* `failed`: il processo Claude Code è andato in crash, oppure la configurazione è fallita dopo l'avvio.

162* `interrupted`: il runner ha interrotto la sessione. Ha rilasciato la sessione per liberare lo slot, la sessione è scaduta all'avvio, il server ha spostato la sessione da questo runner, il runner era in drenaggio, oppure la sessione ha superato il limite [`--kill-session-after-min`](/docs/it/self-hosted-environments-reference#runner-cli-flags).191* `interrupted`: il runner ha interrotto la sessione, in uno di questi casi:

192 * Il runner ha rilasciato la sessione per liberare lo slot.

193 * La sessione è andata in timeout all'avvio.

194 * Il server ha spostato la sessione da questo runner.

195 * Il polling del runner ha rilevato un'archiviazione o un'eliminazione prima che il processo uscisse.

196 * Il runner era in fase di drain.

197 * La sessione ha superato il limite [`--kill-session-after-min`](/docs/it/self-hosted-environments-reference#runner-cli-flags).

163* `abandoned`: riservato per una sessione che un altro runner ha rivendicato. L'hook attualmente non si attiva in quel caso.198* `abandoned`: riservato per una sessione che un altro runner ha rivendicato. L'hook attualmente non si attiva in quel caso.

164 199 

165I [contatori del ciclo di vita della sessione](/docs/it/self-hosted-environments-reference#session-lifecycle-counter-semantics) contano un rilascio, un timeout di avvio e uno spostamento del server come `completed` piuttosto che `interrupted`, perché il runner ha restituito lo slot in modo pulito. Aspettati quella differenza se confronti le ricevute dell'hook con i contatori.200Se confronti le ricevute dell'hook con i [contatori del ciclo di vita della sessione](/docs/it/self-hosted-environments-reference#session-lifecycle-counter-semantics), aspettati che alcune ricevute `interrupted` vengano contate lì come `completed`. I contatori contano come `completed` un rilascio, un timeout all'avvio, uno spostamento da parte del server e un'archiviazione o eliminazione rilevata per prima dal polling del runner, perché il runner ha restituito lo slot in modo pulito.

166 201 

167Lo stato di uscita dell'hook non influisce mai sul risultato della sessione; un fallimento viene registrato e ignorato. Il runner attende fino a `--post-session-hook-timeout-sec`, 60 secondi per impostazione predefinita, ad ogni fine sessione incluso l'arresto del runner. Questo esempio salva il lavoro non committato in un ramo di salvataggio:202Lo stato di uscita dell'hook non influisce mai sul risultato della sessione; un fallimento viene registrato e ignorato. Il runner attende fino a `--post-session-hook-timeout-sec`, 60 secondi per impostazione predefinita, ad ogni fine sessione incluso l'arresto del runner. Questo esempio salva il lavoro non committato in un ramo di salvataggio:

168 203 

169```bash theme={null}204```bash theme={null}

170#!/usr/bin/env bash205#!/usr/bin/env bash

171set -u206set -u

207export GIT_ALLOW_PROTOCOL=${GIT_ALLOW_PROTOCOL:-https:http:ssh}

172IFS=':'208IFS=':'

173# -c overrides beat repo-local settings, blocking session-written fsmonitor,209# -c overrides beat repo-local settings, blocking session-written fsmonitor,

174# hook-path, and gpg-program config from executing code with the hook's210# hook-path, and gpg-program config from executing code with the hook's

175# privileges. -c commit.gpgsign=false also leaves these rescue commits211# privileges. -c commit.gpgsign=false also leaves these rescue commits

176# unsigned under --configure-git.212# unsigned under --configure-git.

177# Repo-local credential.helper and pushurl still apply, and on a runner213# Repo-local credential.helper and pushurl still apply, and on a runner

178# before v2.1.280 so does core.sshCommand; if the hook holds credentials214# before v2.1.280 so does core.sshCommand; see the note below the script

179# the session didn't, see the note below the script.215# before you give this push a credential.

180g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \216g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

181 -c commit.gpgsign=false "$@"; }217 -c commit.gpgsign=false "$@"; }

182for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do218for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do


188done224done

189```225```

190 226 

191L'hook esegue il push con le credenziali git disponibili nel proprio ambiente sull'host del runner. Con l'[approccio senza credenziali nell'immagine](/docs/it/self-hosted-environments-deploy#configure-git), anche quando il clone integrato passa attraverso il proxy git di Anthropic, non ce ne sono, quindi genera una credenziale di push di breve durata all'interno dell'hook prima del push: scambia il token della sessione che l'hook riceve in `CLAUDE_CODE_SESSION_ACCESS_TOKEN` con il tuo servizio di token, verificandolo come descritto in [Verificare l'identità della sessione](/docs/it/self-hosted-environments-identity). Quando l'hook dispone di una credenziale che la sessione non aveva, sostituisci `origin` con un URL fornito dall'operatore e passa `-c credential.helper=` insieme al tuo helper. [Configurazione git all'interno degli hook del ciclo di vita](#git-configuration-inside-lifecycle-hooks) descrive su cosa può ancora influire la configurazione scritta dalla sessione.227La riga `GIT_ALLOW_PROTOCOL` nello script limita git ai remote HTTPS, HTTP e SSH. Se l'ambiente del runner imposta già un proprio elenco `GIT_ALLOW_PROTOCOL` non vuoto, lo script mantiene quell'elenco.

228 

229L'hook esegue il push con le credenziali git disponibili nel proprio ambiente sull'host del runner. Con l'[approccio senza credenziali nell'immagine](/docs/it/self-hosted-environments-deploy#configure-git), anche quando il clone integrato passa attraverso il proxy git di Anthropic, non ce ne sono, quindi genera una credenziale di push di breve durata all'interno dell'hook prima del push: scambia il token della sessione che l'hook riceve in `CLAUDE_CODE_SESSION_ACCESS_TOKEN` con il tuo servizio di token, verificandolo come descritto in [Verificare l'identità della sessione](/docs/it/self-hosted-environments-identity).

230 

231Tratta qualsiasi credenziale che il tuo hook fornisce a git come una credenziale che una sessione può ottenere, e generala in modo che non possa fare nulla di più di questo push. Il git nel tuo hook legge file di configurazione che una sessione può scrivere, e un credential helper o un filter driver indicato in uno di essi viene eseguito con i privilegi del tuo hook. Le impostazioni in quei file possono anche cambiare la destinazione di un push, qualunque remote tu indichi. Per le impostazioni git che il runner fissa nel tuo hook e quelle che lascia a quei file, consulta [Configurazione git all'interno degli hook del ciclo di vita](#git-configuration-inside-lifecycle-hooks).

192 232 

193<h4 id="hook-timing-when-the-runner-releases-a-session">233<h4 id="hook-timing-when-the-runner-releases-a-session">

194 Hook timing quando il runner rilascia una sessione234 Hook timing quando il runner rilascia una sessione


264| `CLAUDE_RUNNER_ORDER_ID` | Chiave di idempotenza opaca, unica per richiesta di spawn e sicura per i nomi delle risorse Kubernetes. Utilizzarla come chiave di dedup del provisioner. |304| `CLAUDE_RUNNER_ORDER_ID` | Chiave di idempotenza opaca, unica per richiesta di spawn e sicura per i nomi delle risorse Kubernetes. Utilizzarla come chiave di dedup del provisioner. |

265| `CLAUDE_RUNNER_SESSION_ID` | La sessione per cui è questa richiesta. Si ripete su ogni richiesta per la sessione, quindi utilizzarla per la registrazione e l'instradamento, non come chiave di dedup. Vuoto per le richieste di pre-warming, che avviano un runner standby prima di qualsiasi sessione specifica quando [`--min-idle`](/docs/it/self-hosted-environments-reference#orchestrator-cli-flags) è impostato, quindi non assumere che la variabile sia impostata. |305| `CLAUDE_RUNNER_SESSION_ID` | La sessione per cui è questa richiesta. Si ripete su ogni richiesta per la sessione, quindi utilizzarla per la registrazione e l'instradamento, non come chiave di dedup. Vuoto per le richieste di pre-warming, che avviano un runner standby prima di qualsiasi sessione specifica quando [`--min-idle`](/docs/it/self-hosted-environments-reference#orchestrator-cli-flags) è impostato, quindi non assumere che la variabile sia impostata. |

266| `CLAUDE_RUNNER_SESSION_UUID` | Lo stesso ID sessione nel modulo UUID canonico. Vuoto per le richieste di pre-warming. |306| `CLAUDE_RUNNER_SESSION_UUID` | Lo stesso ID sessione nel modulo UUID canonico. Vuoto per le richieste di pre-warming. |

267| `CLAUDE_RUNNER_ATTEMPT` | Quante richieste di spawn questa sessione ha avuto. `0` per le richieste di pre-warming. |307| `CLAUDE_RUNNER_ATTEMPT` | Un contatore per sessione da usare per i log. Non è un conteggio dei nuovi tentativi né delle richieste. `0` per le richieste di pre-warming, anche se pure una richiesta per una sessione può riportare `0`. |

268| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Ora del server dalla risposta del poll header HTTP `Date`. Quando l'hook verifica l'`exp` del JWT dell'ordine di lavoro, confrontare rispetto a questo valore invece dell'orologio locale per tollerare lo skew. Vuoto quando il gateway ha omesso l'header. |308| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Ora del server dalla risposta del poll header HTTP `Date`. Quando l'hook verifica l'`exp` del JWT dell'ordine di lavoro, confrontare rispetto a questo valore invece dell'orologio locale per tollerare lo skew. Vuoto quando il gateway ha omesso l'header. |

269| `CLAUDE_RUNNER_POOL_ID` | L'ID dell'ambiente a cui il nuovo runner dovrebbe unirsi, nel modulo `ccpool_...` |309| `CLAUDE_RUNNER_POOL_ID` | L'ID dell'ambiente a cui il nuovo runner dovrebbe unirsi, nel modulo `ccpool_...` |

270| `CLAUDE_RUNNER_ACCOUNT_ID` | ID taggato dell'account che ha accodato la sessione, per l'instradamento per account, la quota o il chargeback. Vuoto quando non disponibile, e sempre vuoto per le sessioni del canale Claude Tag, che nessun account accoda. |310| `CLAUDE_RUNNER_ACCOUNT_ID` | ID taggato dell'account che ha accodato la sessione, per l'instradamento per account, la quota o il chargeback. Vuoto quando non disponibile, e sempre vuoto per le sessioni del canale Claude Tag, che nessun account accoda. |

271| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email dell'account che ha accodato la sessione. Vuoto quando non disponibile. Trattare l'email come informazioni personali identificabili e non registrarla. |311| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email dell'account che ha accodato la sessione. Vuoto quando non disponibile. Trattare l'email come informazioni personali identificabili e non registrarla. |

272| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL della prima fonte git della sessione, per l'instradamento a un runner con quel repository pre-riscaldato. Vuoto quando la sessione non ha fonti git. |312| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL della prima fonte git della sessione, per l'instradamento a un runner con quel repository pre-riscaldato. Vuoto quando la sessione non ha fonti git. |

273| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Revisione della prima fonte git della sessione: ramo, SHA o tag. Vuoto quando non specificato. |313| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Revisione della prima fonte git della sessione: branch, SHA, tag o nome completo del riferimento. Vuoto quando non specificato. |

274| `CLAUDE_RUNNER_REPO_SOURCES` | Array JSON di `{url, revision}` per tutte le fonti git della sessione, per gli hook che instradano su un repository secondario. Vuoto quando non ci sono fonti. |314| `CLAUDE_RUNNER_REPO_SOURCES` | Array JSON di `{url, revision}` per tutte le fonti git della sessione, per gli hook che instradano su un repository secondario. Vuoto quando non ci sono fonti. |

275| `CLAUDE_RUNNER_CORRELATION_ID` | L'ID di correlazione fornito alla creazione della sessione, ripetuto in modo che l'hook possa mappare questo ordine di lavoro alla richiesta che ha creato la sessione. Vuoto quando la sessione non ne ha uno. |315| `CLAUDE_RUNNER_CORRELATION_ID` | L'ID di correlazione fornito alla creazione della sessione, ripetuto in modo che l'hook possa mappare questo ordine di lavoro alla richiesta che ha creato la sessione. Vuoto quando la sessione non ne ha uno. |

276| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app`, `ios` o `scheduled_trigger`, per l'analisi dell'adozione. Non impostato quando la sessione non ha una superficie registrata o riconosciuta, e per le richieste di pre-warming; controllarlo con `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, che rimane sicuro sotto `set -u`. |316| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La superficie client che ha creato la sessione, come `web_claude_ai`, `desktop_app`, `ios` o `scheduled_trigger`, per l'analisi dell'adozione. Non impostato quando la sessione non ha una superficie registrata o riconosciuta, e per le richieste di pre-warming; controllarlo con `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, che rimane sicuro sotto `set -u`. |


282* **Utilizzare `--capacity 1` sui runner generati**: un ordine di lavoro legato alla sessione registra esattamente un runner legato a quella sessione, quindi una capacità più alta aggiunge slot che non ricevono mai lavoro, e il runner registra un avviso all'avvio.322* **Utilizzare `--capacity 1` sui runner generati**: un ordine di lavoro legato alla sessione registra esattamente un runner legato a quella sessione, quindi una capacità più alta aggiunge slot che non ricevono mai lavoro, e il runner registra un avviso all'avvio.

283* **Gli ordini di lavoro di pre-warming si registrano non legati**: il runner standby non è legato a una sessione e rivendica il lavoro in coda come un runner di flotta fissa.323* **Gli ordini di lavoro di pre-warming si registrano non legati**: il runner standby non è legato a una sessione e rivendica il lavoro in coda come un runner di flotta fissa.

284 324 

285Il contratto ha quattro regole agnostiche del provisioner:325Il contratto ha quattro regole, qualunque sia la piattaforma su cui il tuo hook esegue il provisioning:

286 326 

2871. **Essere idempotenti su `CLAUDE_RUNNER_ORDER_ID`.** La rielaborazione della stessa richiesta deve generare al massimo un runner. Derivare un nome di risorsa deterministico dall'ID e lasciare che la propria piattaforma rifiuti il duplicato. Non chiave su `CLAUDE_RUNNER_SESSION_ID` invece. Ogni richiesta per una sessione porta lo stesso ID sessione con un nuovo ID ordine, quindi un carico di lavoro denominato o deduplicato dall'ID sessione viene creato una volta e mai più per quella sessione.3271. **Essere idempotenti su `CLAUDE_RUNNER_ORDER_ID`.** La rielaborazione della stessa richiesta deve generare al massimo un runner. Derivare un nome di risorsa deterministico dall'ID e lasciare che la propria piattaforma rifiuti il duplicato. Non chiave su `CLAUDE_RUNNER_SESSION_ID` invece. Ogni richiesta per una sessione porta lo stesso ID sessione con un nuovo ID ordine, quindi un carico di lavoro denominato o deduplicato dall'ID sessione viene creato una volta e mai più per quella sessione.

2882. **Non ritentare il carico di lavoro.** Un ID ordine significa al massimo un carico di lavoro creato. Se il runner non si registra mai, Anthropic richiede con un ID ordine fresco dopo `--expected-spawn-seconds`.3282. **Non ritentare il carico di lavoro.** Un ID ordine significa al massimo un carico di lavoro creato. Se il runner non si registra mai, Anthropic richiede con un ID ordine fresco dopo `--expected-spawn-seconds`.

2893. **Utilizzare il contratto del codice di uscita.** Uscita 0 significa inviato. Uscita 1 significa fallimento ritentabile; la sessione si ritira e viene riottenuta. Uscita 2 o superiore significa non ritentabile; la sessione è bloccata dallo spawn di nuovo fino a quando un [Owner](/docs/it/cloud-environments#organization-shared-environments) non seleziona **Retry** su di essa nella scheda **Activity** dell'ambiente. Su uscita diversa da zero, la coda dello stderr dell'hook appare lì come motivo del fallimento, quindi scrivere l'errore azionabile su stderr e mai segreti. Per una richiesta di pre-warming non c'è sessione da fallire: l'orchestratore registra un'uscita diversa da zero localmente solo, e il server richiede di nuovo lo spawn dopo il lease.3293. **Usa il contratto del codice di uscita.** Esci con lo stato corrispondente all'esito:

2904. **Impostare `--expected-spawn-seconds` ad almeno il tempo di avvio p99.** Questo è il lease lato server. Tutte le repliche dell'orchestratore devono utilizzare lo stesso valore.330 

331 * **Uscita 0**: inviato.

332 * **Uscita 1**: errore che si può riprovare. La sessione attende e viene riproposta.

333 * **Uscita 2 o superiore**: errore che non si può riprovare. Alla sessione viene impedito un nuovo spawn finché un utente non le invia un nuovo messaggio o un [Owner](/docs/it/cloud-environments#organization-shared-environments) non seleziona **Retry** su di essa nella scheda **Activity** dell'ambiente.

334 

335 In caso di uscita diversa da zero, la parte finale dello stderr dell'hook appare nella scheda **Activity** come motivo dell'errore, quindi scrivi su stderr l'errore su cui si può intervenire e non scriverci mai segreti. In un hook shell, [mantieni riprovabili gli errori transitori](#keep-transient-failures-retryable-in-a-shell-hook).

336 

337 Una richiesta di pre-warming non ha una sessione da far fallire: l'orchestratore registra un'uscita diversa da zero solo localmente, e il server richiede di nuovo lo spawn dopo la scadenza del lease di `--expected-spawn-seconds`.

3384. **Imposta `--expected-spawn-seconds` ad almeno il tuo tempo p99 dalla richiesta di spawn alla registrazione del runner.** Misura a partire da quando l'orchestratore riceve la richiesta di spawn e includi sia l'eventuale attesa di capacità sulla tua piattaforma sia il tempo di avvio. Questo valore è il lease lato server, e l'ordine di lavoro scade insieme a esso, quindi un runner il cui carico di lavoro impiega più tempo non può registrarsi. Tutte le repliche dell'orchestratore devono utilizzare lo stesso valore.

291 339 

292Tutto ciò che l'hook scrive su stdout o stderr appare nel log dell'orchestratore con le credenziali automaticamente redatte. Se le sessioni rimangono in coda, controllare il corpo `/healthz` dell'orchestratore per i conteggi della coda, quindi aprire la scheda **Activity** dell'ambiente sulla [pagina di amministrazione **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): espandere una sessione fallita lì per il suo errore di spawn e selezionare **Retry** per richiederlo di nuovo.340Tutto ciò che l'hook scrive su stdout o stderr appare nel log dell'orchestratore con le credenziali automaticamente redatte. Se le sessioni rimangono in coda, controllare il corpo `/healthz` dell'orchestratore per i conteggi della coda, quindi aprire la scheda **Activity** dell'ambiente sulla [pagina di amministrazione **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): espandere una sessione fallita lì per il suo errore di spawn e selezionare **Retry** per richiederlo di nuovo.

293 341 

294Una sessione che rimane in coda senza errore di spawn nella scheda **Activity** può significare che l'hook è chiave sull'ID sessione. Per confermare, controllare se la propria piattaforma ha un carico di lavoro per la prima richiesta di spawn di quella sessione e nessuno per le richieste. Se così, chiave il carico di lavoro su `CLAUDE_RUNNER_ORDER_ID` invece.342Una sessione che rimane in coda senza errore di spawn nella scheda **Activity** può significare che l'hook è chiave sull'ID sessione. Per confermare, controllare se la propria piattaforma ha un carico di lavoro per la prima richiesta di spawn di quella sessione e nessuno per le richieste. Se così, chiave il carico di lavoro su `CLAUDE_RUNNER_ORDER_ID` invece.

295 343 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 Mantieni riprovabili gli errori transitori in un hook shell

346</h4>

347 

348In un hook shell che usa `set -e`, un errore che un nuovo tentativo avrebbe potuto risolvere può bloccare la sessione. L'hook si ferma al comando che fallisce ed esce con lo stato di quel comando, e l'orchestratore applica il contratto del codice di uscita a quello stato. Molti errori restituiscono uno stato pari a 2 o superiore, come `127` quando un comando non è installato e `22` da `curl --fail` in caso di errore HTTP, quindi bloccano la sessione al primo errore.

349 

350Una sessione che l'hook ha già bloccato rimane bloccata finché un utente non le invia un nuovo messaggio o un [Owner](/docs/it/cloud-environments#organization-shared-environments) non seleziona **Retry** su di essa nella scheda **Activity** dell'ambiente.

351 

352Per trasformare invece un errore di questo tipo in uscita 1, inserisci queste righe subito sotto la riga `#!` dell'hook, prima di qualsiasi cosa possa fallire:

353 

354```bash theme={null}

355set -e

356PERMANENT=; permanent() { printf '%s\n' "$*" >&2; PERMANENT=1; exit 2; }

357trap 'rc=$?; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

358```

359 

360Queste righe cambiano il comportamento del resto dell'hook, quindi dopo averle aggiunte controlla l'hook per ciascuno di questi schemi:

361 

362* **`exit 2` o superiore isolato**: con il trap impostato, diventa uscita 1. Per un errore che nessun nuovo tentativo può risolvere, chiama invece `permanent` con il motivo, ad esempio `permanent "namespace claude-runners does not exist"`. Chiamalo nella shell principale, non all'interno di `$( )`, `( )` o di una pipe.

363* **`exec`**: non iniziare l'ultimo comando dell'hook con `exec`, perché `exec` sostituisce la shell e il trap non viene eseguito.

364* **Secondo trap `EXIT`**: un secondo `trap ... EXIT` sostituisce il primo, quindi unisci i due in un unico trap. Metti i tuoi comandi di pulizia subito dopo `rc=$?;` e termina ciascuno con `|| true;`. La pulizia viene quindi eseguita sia in caso di errore sia in caso di successo, e un comando di pulizia che fallisce non imposta lo stato di uscita dell'hook. Questo trap unificato mostra la struttura, con `your-cleanup-command` al posto del tuo comando:

365 

366 ```bash theme={null}

367 trap 'rc=$?; your-cleanup-command || true; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

368 ```

369* **Comandi a cui è consentito fallire**: se prima l'hook non usava `set -e`, ora si ferma al primo comando che restituisce un valore diverso da zero, come una ricerca che non trova nulla o un invio duplicato che la tua piattaforma rifiuta. Se l'hook agisce in base al risultato, rendi quel comando la condizione di un `if`. Se ne ignora il risultato, fai seguire il comando da `|| true`.

370 

371Per verificare che il trap funzioni, aggiungi subito sotto la riga `trap` una riga che chiama un comando inesistente, come `no-such-command`. Esegui il file dell'hook dalla tua shell e verifica che `echo $?` stampi `1`, quindi rimuovi la riga.

372 

296<h2 id="send-model-requests-to-bedrock-or-agent-platform">373<h2 id="send-model-requests-to-bedrock-or-agent-platform">

297 Inviare le richieste al modello a Bedrock o ad Agent Platform374 Inviare le richieste al modello a Bedrock o ad Agent Platform

298</h2>375</h2>


381Una sessione che invia le richieste al modello ad Amazon Bedrock o ad Agent Platform di Google Cloud differisce da una sessione sull'API di Anthropic nei seguenti modi:458Una sessione che invia le richieste al modello ad Amazon Bedrock o ad Agent Platform di Google Cloud differisce da una sessione sull'API di Anthropic nei seguenti modi:

382 459 

383* **Policy da claude.ai**: le [impostazioni gestite dal server](/docs/it/server-managed-settings) non raggiungono queste sessioni. Nemmeno le policy dell'organizzazione che un Owner imposta nelle impostazioni di amministrazione di Claude Code le raggiungono, quindi Claude Code non le applica all'interno della sessione. Inserisci le regole su cui fai affidamento nel [file delle impostazioni gestite](/docs/it/managed-settings#delivery-mechanisms) dell'immagine del runner.460* **Policy da claude.ai**: le [impostazioni gestite dal server](/docs/it/server-managed-settings) non raggiungono queste sessioni. Nemmeno le policy dell'organizzazione che un Owner imposta nelle impostazioni di amministrazione di Claude Code le raggiungono, quindi Claude Code non le applica all'interno della sessione. Inserisci le regole su cui fai affidamento nel [file delle impostazioni gestite](/docs/it/managed-settings#delivery-mechanisms) dell'immagine del runner.

461* **Skill dell'account**: queste sessioni non scaricano le skill abilitate per l'account claude.ai di una persona. Consulta [Come viene assemblata la configurazione di ogni sessione](#how-each-session’s-config-is-assembled).

384* **File**: i file che le persone allegano a una sessione in claude.ai o nell'app mobile o desktop non la raggiungono, e Claude non può inviare file indietro con lo [strumento `SendUserFile`](/docs/it/tools-reference). Inserisci invece i file di input nel repository o sul runner.462* **File**: i file che le persone allegano a una sessione in claude.ai o nell'app mobile o desktop non la raggiungono, e Claude non può inviare file indietro con lo [strumento `SendUserFile`](/docs/it/tools-reference). Inserisci invece i file di input nel repository o sul runner.

385* **Selezione del modello**: il control plane di Anthropic invia il modello di ogni sessione e, quando una sessione viene avviata senza un modello, Claude Code usa quello predefinito per il provider. Il runner rimuove `ANTHROPIC_MODEL` e `ANTHROPIC_DEFAULT_MODEL` dall'ambiente che passa alle sessioni. Gli esempi nelle pagine dei provider impostano `ANTHROPIC_MODEL`, ma nell'ambiente del runner nessuna delle due variabili ha effetto. Le variabili per famiglia descritte in Fissare le versioni dei modelli per [Amazon Bedrock](/docs/it/amazon-bedrock#4-pin-model-versions) e per [Agent Platform](/docs/it/google-vertex-ai#5-pin-model-versions) raggiungono invece le sessioni. Determinano a cosa si risolve un alias come `opus`, non a cosa si risolve un ID completo del modello.463* **Selezione del modello**: il control plane di Anthropic invia il modello di ogni sessione e, quando una sessione viene avviata senza un modello, Claude Code usa quello predefinito per il provider. Non puoi scegliere il modello con `ANTHROPIC_MODEL` o `ANTHROPIC_DEFAULT_MODEL` nell'ambiente del runner, ma puoi fissare a cosa si risolve un alias:

464 * **`ANTHROPIC_MODEL` e `ANTHROPIC_DEFAULT_MODEL`**: il runner le rimuove dall'ambiente che passa alle sessioni, anche se gli esempi nelle pagine dei provider impostano `ANTHROPIC_MODEL`.

465 * **Variabili per famiglia per fissare i modelli**: le variabili descritte in Fissare le versioni dei modelli per [Amazon Bedrock](/docs/it/amazon-bedrock#4-pin-model-versions) e per [Agent Platform](/docs/it/google-vertex-ai#5-pin-model-versions) raggiungono invece le sessioni. Determinano a cosa si risolve un alias come `opus`, non a cosa si risolve un ID completo del modello.

386* **Modelli non serviti dal tuo account**: una sessione può fallire su un messaggio con un errore che indica il modello. Abilita i modelli che i tuoi sviluppatori possono scegliere, il modello in background descritto in Fissare le versioni dei modelli e il modello del classificatore usato dalla [modalità auto](/docs/it/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry). Su Amazon Bedrock, consenti ciascuno di essi nella tua policy.466* **Modelli non serviti dal tuo account**: una sessione può fallire su un messaggio con un errore che indica il modello. Abilita i modelli che i tuoi sviluppatori possono scegliere, il modello in background descritto in Fissare le versioni dei modelli e il modello del classificatore usato dalla [modalità auto](/docs/it/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry). Su Amazon Bedrock, consenti ciascuno di essi nella tua policy.

387* **Ricerca web e modalità veloce**: la [ricerca web](/docs/it/tools-reference#websearch-tool-behavior) non è disponibile su Amazon Bedrock e la [modalità veloce](/docs/it/fast-mode) non è disponibile su nessuno dei due provider. Per altre funzionalità che variano in base al provider, consulta [Funzionalità della CLI che variano in base al provider](/docs/it/feature-availability#cli-capabilities-that-vary-by-provider).467* **Ricerca web e modalità veloce**: la [ricerca web](/docs/it/tools-reference#websearch-tool-behavior) non è disponibile su Amazon Bedrock e la [modalità veloce](/docs/it/fast-mode) non è disponibile su nessuno dei due provider. Per altre funzionalità che variano in base al provider, consulta [Funzionalità della CLI che variano in base al provider](/docs/it/feature-availability#cli-capabilities-that-vary-by-provider).

388 468 


411 491 

412Le sessioni ereditano l'ambiente del runner, quindi imposta lì [`ENABLE_TOOL_SEARCH`](/docs/it/mcp#scale-with-mcp-tool-search) per controllare la ricerca degli strumenti MCP per ogni sessione avviata da un runner; la pagina MCP descrive i valori.492Le sessioni ereditano l'ambiente del runner, quindi imposta lì [`ENABLE_TOOL_SEARCH`](/docs/it/mcp#scale-with-mcp-tool-search) per controllare la ricerca degli strumenti MCP per ogni sessione avviata da un runner; la pagina MCP descrive i valori.

413 493 

494<a id="connection-timing" />

495 

496<h3 id="wait-for-mcp-servers-before-the-first-turn">

497 Attendere i server MCP prima del primo turno

498</h3>

499 

500Una sessione self-hosted attende brevemente i server MCP che si stanno ancora connettendo, in due punti distinti. Un server che manca un'attesa ha i suoi strumenti assenti all'inizio del primo turno, e questi diventano disponibili in seguito senza alcun intervento da parte tua. Le due attese sono:

501 

502* **Avvio della sessione**: prima che l'elenco degli strumenti venga acquisito per la prima volta, la sessione attende per impostazione predefinita fino a 5 secondi un server HTTP o SSE la cui voce imposta [`alwaysLoad: true`](/docs/it/mcp#exempt-a-server-from-deferral), oppure tutti i server quando imposti [`MCP_CONNECTION_NONBLOCKING=0`](/docs/it/env-vars) nell'ambiente del runner. Altrimenti i server HTTP e SSE si connettono in background. Mentre la sessione attende qui, l'inizializzazione è più lenta. [`MCP_CONNECT_TIMEOUT_MS`](/docs/it/env-vars) modifica il valore predefinito di 5 secondi.

503* **Primo turno**: dopo l'arrivo del messaggio, il primo turno attende fino a 2 secondi i server stdio che si stanno ancora connettendo. Mentre la sessione attende qui, la prima risposta è più lenta. Per modificare la durata di questa attesa, imposta [`CLAUDE_CODE_MCP_STARTUP_WAIT_MS`](/docs/it/env-vars) nell'ambiente del runner. Non modifica quali server sono coperti dall'attesa. Richiede Claude Code v2.1.274 o successiva.

504 

505`claude mcp add` non ha un flag `alwaysLoad`. Per impostare la chiave, aggiungi invece il server con `claude mcp add-json`, che la accetta nel JSON del server e la scrive in `.claude.json`. Nel tuo Dockerfile:

506 

507```dockerfile theme={null}

508RUN claude mcp add-json core '{"type":"http","url":"https://mcp.example.com/mcp","alwaysLoad":true}' --scope user

509```

510 

511Se gli strumenti di un server non compaiono nemmeno nei turni successivi, verifica se il server ha effettivamente raggiunto la sessione, come descritto in [Server MCP](#mcp-servers).

512 

414<h3 id="turn-off-built-in-session-tools">513<h3 id="turn-off-built-in-session-tools">

415 Disattivare gli strumenti di sessione integrati514 Disattivare gli strumenti di sessione integrati

416</h3>515</h3>


572 671 

573Impostare `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` per seminare da un percorso diverso, o puntarlo a una directory vuota per disabilitare la semina.672Impostare `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` per seminare da un percorso diverso, o puntarlo a una directory vuota per disabilitare la semina.

574 673 

575Il `.claude/settings.json` committato nel repository si sovrappone come impostazioni di progetto. In una sessione con più repository, [ha effetto al massimo il file di un solo repository](#repository-settings-in-sessions-with-several-repositories). Le sessioni leggono anche [`managed-settings.json`](/docs/it/settings#where-settings-live) dal percorso di sistema standard nell'immagine del runner. Se le sue chiavi si applicano insieme alle [impostazioni gestite dal server](/docs/it/server-managed-settings) dipende da [come Claude Code combina le fonti gestite](/docs/it/managed-settings#how-claude-code-combines-managed-sources): per impostazione predefinita, quando la tua organizzazione fornisce chiavi gestite dal server, le sessioni ignorano il file dell'immagine del runner, ad eccezione delle [chiavi che Claude Code legge da ogni fonte di amministrazione](/docs/it/managed-settings#keys-read-from-every-admin-source), come il blocco `env`, i blocchi della sandbox, i percorsi dei binari della sandbox e `forceRemoteSettingsRefresh`. Consulta [precedenza delle impostazioni](/docs/it/settings#settings-precedence).674Le sessioni leggono anche questi file di impostazioni:

675 

676* **Impostazioni di progetto**: un `.claude/settings.json` committato nel repository si sovrappone alla baseline a livello utente. In una sessione con più repository, [ha effetto al massimo il file di un solo repository](#repository-settings-in-sessions-with-several-repositories).

677* **Impostazioni gestite**: le sessioni leggono [`managed-settings.json`](/docs/it/settings#where-settings-live) dal percorso di sistema standard nella tua immagine del runner. Per sapere se le sue chiavi si applicano insieme alle [impostazioni gestite dal server](/docs/it/server-managed-settings), consulta [come Claude Code combina le fonti gestite](/docs/it/managed-settings#how-claude-code-combines-managed-sources).

678 

679Per l'ordine in cui si applicano queste fonti, consulta [precedenza delle impostazioni](/docs/it/settings#settings-precedence).

576 680 

577Quando il piano di controllo di Anthropic fornisce una sessione con [hook Claude Code](/docs/it/hooks), il runner li installa insieme, non sopra, la propria configurazione. Richiede Claude Code v2.1.229 o successivo.681Quando il piano di controllo di Anthropic fornisce una sessione con [hook Claude Code](/docs/it/hooks), il runner li installa insieme, non sopra, la propria configurazione. Richiede Claude Code v2.1.229 o successivo.

578 682 


580* **Chi li crea**: il piano di controllo popola gli script da costanti fisse nella propria distribuzione, mai da input per sessione o di terze parti.684* **Chi li crea**: il piano di controllo popola gli script da costanti fisse nella propria distribuzione, mai da input per sessione o di terze parti.

581* **Cosa ancora li governa**: gli hook forniti attraverso `--settings` entrano nella configurazione ordinaria dell'hook unito, non nel livello gestito, quindi le impostazioni gestite si applicano ancora. `disableAllHooks` li disabilita, e non sono tra le categorie che [`allowManagedHooksOnly`](/docs/it/settings-reference#allowmanagedhooksonly) mantiene caricate.685* **Cosa ancora li governa**: gli hook forniti attraverso `--settings` entrano nella configurazione ordinaria dell'hook unito, non nel livello gestito, quindi le impostazioni gestite si applicano ancora. `disableAllHooks` li disabilita, e non sono tra le categorie che [`allowManagedHooksOnly`](/docs/it/settings-reference#allowmanagedhooksonly) mantiene caricate.

582 686 

687Quando una persona avvia una propria sessione, Claude Code scarica anche le [skill abilitate per il suo account claude.ai](/docs/it/skills#skills-in-cowork-and-cloud-sessions) nella directory di configurazione di quella sessione. L'esecuzione di una [routine](/docs/it/routines) non riceve le skill del suo proprietario, e una sessione che [invia le richieste al modello a Bedrock o Agent Platform](#send-model-requests-to-bedrock-or-agent-platform) non ne scarica alcuna. Per una skill di cui quelle sessioni hanno bisogno, fai il commit nella directory `.claude/skills/` del repository oppure aggiungila alla tua immagine del runner.

688 

583Al di fuori delle sessioni [Claude Tag](https://claude.com/docs/claude-tag/overview), una sessione in un ambiente self-hosted viene eseguita con la [memoria automatica](/docs/it/memory#auto-memory) disattivata per impostazione predefinita. Per le istruzioni che devono valere tra una sessione e l'altra, usa il `CLAUDE.md` nell'immagine del runner o nel repository.689Al di fuori delle sessioni [Claude Tag](https://claude.com/docs/claude-tag/overview), una sessione in un ambiente self-hosted viene eseguita con la [memoria automatica](/docs/it/memory#auto-memory) disattivata per impostazione predefinita. Per le istruzioni che devono valere tra una sessione e l'altra, usa il `CLAUDE.md` nell'immagine del runner o nel repository.

584 690 

585Lo snapshot di `~/.claude/` dell'host acquisito dal runner esclude la directory `projects/`. La posizione di archiviazione predefinita della memoria automatica si trova in quella directory. Se vi inserisci file di memoria, il runner non li copia nelle sessioni e questi non attivano la memoria automatica.691Lo snapshot di `~/.claude/` dell'host acquisito dal runner esclude la directory `projects/`. La posizione di archiviazione predefinita della memoria automatica si trova in quella directory. Se vi inserisci file di memoria, il runner non li copia nelle sessioni e questi non attivano la memoria automatica.

Details

20 20 

21* **Container effimeri per sessione**: esegui ogni processo runner in un container o VM fresco che viene distrutto quando il processo esce, con `--capacity 1` e il valore predefinito `--drain-grace-sec 0` in modo che ogni container serva esattamente una sessione. A una capacità più alta, o con un drain grace positivo, un container serve più sessioni dallo stesso [owner bloccato](/docs/it/self-hosted-environments#key-concepts); vedi [Ciclo di vita del runner](/docs/it/self-hosted-environments#runner-lifecycle). Non riutilizzare un filesystem tra i riavvii del runner, tranne nella configurazione deliberata [pre-warmed checkout](#reuse-a-pre-warmed-checkout), e mai tra owner.21* **Container effimeri per sessione**: esegui ogni processo runner in un container o VM fresco che viene distrutto quando il processo esce, con `--capacity 1` e il valore predefinito `--drain-grace-sec 0` in modo che ogni container serva esattamente una sessione. A una capacità più alta, o con un drain grace positivo, un container serve più sessioni dallo stesso [owner bloccato](/docs/it/self-hosted-environments#key-concepts); vedi [Ciclo di vita del runner](/docs/it/self-hosted-environments#runner-lifecycle). Non riutilizzare un filesystem tra i riavvii del runner, tranne nella configurazione deliberata [pre-warmed checkout](#reuse-a-pre-warmed-checkout), e mai tra owner.

22 * <span id="processes-a-stopped-session-leaves" />Quando il runner arresta una sessione, non invia alcun segnale a un processo ancora in esecuzione dopo che il suo comando shell è terminato, come un servizio che si è demonizzato. Distruggere il container o la VM termina quel processo.22 * <span id="processes-a-stopped-session-leaves" />Quando il runner arresta una sessione, non invia alcun segnale a un processo ancora in esecuzione dopo che il suo comando shell è terminato, come un servizio che si è demonizzato. Distruggere il container o la VM termina quel processo.

23* **Nessuna credenziale ampia nell'immagine**: non includere chiavi SSH di lunga durata, credenziali del provider cloud, o token di accesso personale che concedono più di quanto una sessione necessita. Crea credenziali utilizzate durante una sessione, come token push o API, per sessione dal tuo [script wrapper](/docs/it/self-hosted-environments-configuration#wrapper-scripts). Per il clone iniziale, che avviene prima che lo script wrapper venga eseguito, usa un [`checkout` lifecycle hook](/docs/it/self-hosted-environments-configuration#checkout) o [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy); vedi [Configura git](#configure-git).23* **Nessuna credenziale ampia nell'immagine**: non includere chiavi SSH di lunga durata, credenziali del provider cloud, o token di accesso personale che concedono più di quanto una sessione necessita. Crea credenziali utilizzate durante una sessione, come token push o API, per sessione dal tuo [script wrapper](/docs/it/self-hosted-environments-configuration#wrapper-scripts). Il clone iniziale avviene prima che lo script wrapper venga eseguito, quindi gestiscilo con un [`checkout` lifecycle hook](/docs/it/self-hosted-environments-configuration#checkout), oppure con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) quando tutti i repository di una sessione si trovano su github.com. Per entrambi, vedi [Configura git](#configure-git).

24* **Mantieni le credenziali GitHub dell'host lontane dalle sessioni**: Claude può usare qualsiasi credenziale GitHub che una sessione può leggere, con qualunque accesso quella credenziale conceda. Tieni le credenziali GitHub con ambito ampio dell'host runner fuori da qualsiasi cosa una sessione possa leggere. Una tale credenziale può essere un token di accesso personale, il token che `gh auth login` salva per il tuo account, o un `GH_TOKEN` nell'ambiente del runner.

25 * **Con [git gestito da Anthropic](#use-the-anthropic-git-proxy)**: con una tale credenziale, Claude raggiunge GitHub direttamente invece che tramite git gestito da Anthropic.

26 * **Senza git gestito da Anthropic**: una credenziale di clone può restare nell'immagine se ne limiti l'ambito in modo rigoroso come descritto in [Includi la configurazione git nella tua immagine](#ship-git-config-in-your-image).

24* **Mantieni il segreto dell'ambiente lontano dagli host che eseguono sessioni**: il segreto dell'ambiente può registrare runner e raccogliere qualsiasi sessione in coda sull'ambiente. Su una flotta fissa vive su ogni host runner, dove il codice di qualsiasi sessione può leggere il file segreto. Preferisci [runner on-demand](/docs/it/self-hosted-environments-configuration#on-demand-runners), dove il segreto rimane sull'host dell'orchestrator, che non esegue mai codice utente, e ogni runner riceve un ordine di lavoro monouso che registra esattamente un runner. Su una flotta fissa, tratta il file environment-secret come leggibile da ogni sessione e ruota il segreto dopo qualsiasi sospetto compromesso della sessione.27* **Mantieni il segreto dell'ambiente lontano dagli host che eseguono sessioni**: il segreto dell'ambiente può registrare runner e raccogliere qualsiasi sessione in coda sull'ambiente. Su una flotta fissa vive su ogni host runner, dove il codice di qualsiasi sessione può leggere il file segreto. Preferisci [runner on-demand](/docs/it/self-hosted-environments-configuration#on-demand-runners), dove il segreto rimane sull'host dell'orchestrator, che non esegue mai codice utente, e ogni runner riceve un ordine di lavoro monouso che registra esattamente un runner. Su una flotta fissa, tratta il file environment-secret come leggibile da ogni sessione e ruota il segreto dopo qualsiasi sospetto compromesso della sessione.

25* **Egress di rete default-deny**: limita il traffico in uscita del container runner e sessione al tuo confine di rete su ogni ambiente; [Default-deny egress](#default-deny-egress) copre cosa consentire e perché.28* **Egress di rete default-deny**: limita il traffico in uscita del container runner e sessione al tuo confine di rete su ogni ambiente; [Default-deny egress](#default-deny-egress) copre cosa consentire e perché.

26* **IAM host con privilegi minimi**: l'identità di calcolo allegata all'host runner, come un profilo di istanza o un account di servizio del nodo, dovrebbe concedere solo ciò di cui il runner stesso ha bisogno. Le sessioni dovrebbero ottenere le proprie credenziali attraverso il tuo script wrapper piuttosto che ereditare quelle dell'host.29* **IAM host con privilegi minimi**: l'identità di calcolo allegata all'host runner, come un profilo di istanza o un account di servizio del nodo, dovrebbe concedere solo ciò di cui il runner stesso ha bisogno. Le sessioni dovrebbero ottenere le proprie credenziali attraverso il tuo script wrapper piuttosto che ereditare quelle dell'host.


42 La guardia viene eseguita indipendentemente da [`--trust-workspace`](/docs/it/self-hosted-environments-reference#runner-cli-flags), e non copre gli hook del repository, `.mcp.json`, o le regole Bash; vedi [Permessi e approvazione degli strumenti](/docs/it/self-hosted-environments-configuration#permissions-and-tool-approval) per dove quelle concessioni appartengono.45 La guardia viene eseguita indipendentemente da [`--trust-workspace`](/docs/it/self-hosted-environments-reference#runner-cli-flags), e non copre gli hook del repository, `.mcp.json`, o le regole Bash; vedi [Permessi e approvazione degli strumenti](/docs/it/self-hosted-environments-configuration#permissions-and-tool-approval) per dove quelle concessioni appartengono.

43 46 

44<Note>47<Note>

45 L'allowlist IP della tua organizzazione non copre il traffico del runner self-hosted per impostazione predefinita. Non fare affidamento su di essa come controllo di rete per il traffico del runner o della sessione; applica invece default-deny egress al tuo confine di rete, e contatta il tuo team di account Anthropic se desideri l'applicazione dell'allowlist IP per la tua organizzazione.48 Se la tua organizzazione ha abilitato l'[allowlist IP](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting), aggiungi gli indirizzi di egress pubblici dei tuoi runner e dei container di sessione all'allowlist prima di avviarli. Se esegui [runner on-demand](/docs/it/self-hosted-environments-configuration#on-demand-runners), aggiungi anche l'indirizzo dell'host dell'orchestrator. Non fare affidamento sull'allowlist come controllo di rete per il traffico del runner o della sessione. Applica invece default-deny egress al tuo confine di rete.

46</Note>49</Note>

47 50 

48<h2 id="network-requirements">51<h2 id="network-requirements">


55 58 

56| Host | Porta | Utilizzato per |59| Host | Porta | Utilizzato per |

57| :- | :- | :- |60| :- | :- | :- |

58| `api.anthropic.com` | 443, HTTPS; WSS solo per il connettore SCM | Piano di controllo del runner e streaming della sessione, inferenza del modello, flag delle funzionalità, analitiche dei prodotti, recuperi della chiave [JWKS](/docs/it/self-hosted-environments-identity), firma dei commit, il proxy git quando `--use-anthropic-git-proxy` è impostato, e il tunnel [SCM connector](/docs/it/self-hosted-environments-reference#scm-connector-flags) dell'orchestrator quando `--scm-connector-host` è impostato |61| `api.anthropic.com` | 443, HTTPS; WSS per il [git gestito da Anthropic](#use-the-anthropic-git-proxy) | Piano di controllo del runner e streaming della sessione, inferenza del modello, flag delle funzionalità, analitiche dei prodotti, recuperi della chiave [JWKS](/docs/it/self-hosted-environments-identity), firma dei commit e git gestito da Anthropic quando `--use-anthropic-git-proxy` è impostato |

59| Il tuo host git, come `github.com` o il tuo host GitHub Enterprise | 443 o 22 | Clonazione e push dei repository. Non necessario se il runner usa `--use-anthropic-git-proxy`, che instrada il traffico git attraverso `api.anthropic.com`. |62| Il tuo host git, come `github.com` o il tuo host GitHub Enterprise | 443 o 22 | Clonazione e push dei repository su ogni host git usato dalle sessioni del runner. Su un runner che usa [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), vedi [quando il percorso `github.com` è ancora necessario](#github-com-egress-with-the-anthropic-git-proxy). |

63 

64<span id="github-com-egress-with-the-anthropic-git-proxy" />Un runner che usa [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) instrada il suo traffico git verso `github.com` attraverso `api.anthropic.com`, quindi non ha bisogno del percorso dell'host git per `github.com`. Ne ha comunque bisogno se imposti `--push-outcome-on-release` o esegui il push da un hook `post-session`.

60 65 

61Se questi host sono necessari dipende dalla tua configurazione:66Se questi host sono necessari dipende dalla tua configurazione:

62 67 


71| `browser-intake-us5-datadoghq.com` | 443 | Caricamenti di rapporti di errore di Anthropic, inviati solo quando la [segnalazione di errori](/docs/it/data-usage#telemetry-services) è abilitata per l'account della sessione. Soppressa da `DISABLE_ERROR_REPORTING=1` o `DISABLE_TELEMETRY=1`. |76| `browser-intake-us5-datadoghq.com` | 443 | Caricamenti di rapporti di errore di Anthropic, inviati solo quando la [segnalazione di errori](/docs/it/data-usage#telemetry-services) è abilitata per l'account della sessione. Soppressa da `DISABLE_ERROR_REPORTING=1` o `DISABLE_TELEMETRY=1`. |

72| Gli endpoint del tuo provider cloud per le richieste al modello, le ricerche dei modelli e il rinnovo delle credenziali, come `bedrock-runtime.us-east-1.amazonaws.com` o `aiplatform.googleapis.com` | 443 | Solo quando il runner [invia richieste al modello ad Amazon Bedrock o ad Agent Platform di Google Cloud](/docs/it/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) |77| Gli endpoint del tuo provider cloud per le richieste al modello, le ricerche dei modelli e il rinnovo delle credenziali, come `bedrock-runtime.us-east-1.amazonaws.com` o `aiplatform.googleapis.com` | 443 | Solo quando il runner [invia richieste al modello ad Amazon Bedrock o ad Agent Platform di Google Cloud](/docs/it/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) |

73 78 

74Il runner non raggiunge `statsig.anthropic.com`, `*.sentry.io`, `claude.ai`, o `platform.claude.com`. Questi host appaiono in alcuni elenchi di controllo di rete enterprise più vecchi, ma non è necessario aggiungerli alla lista di indirizzi consentiti per il traffico del runner o della sessione: i recuperi dei flag delle funzionalità vanno a `api.anthropic.com`, e il runner si autentica con il segreto dell'ambiente piuttosto che con OAuth interattivo. Due flussi lato host raggiungono `claude.ai`, quindi eseguili da un host il cui egress lo consente piuttosto che ampliare l'egress del container della sessione: il programma di installazione a una riga recupera `install.sh` da `claude.ai` al momento dell'installazione, e il `claude auth login` interattivo, che la [configurazione guidata](/docs/it/self-hosted-environments-quickstart#set-up-an-environment-and-runner), la modalità firmata di `doctor`, e il [dispatch da CI](/docs/it/self-hosted-environments-testing#authenticate-from-ci) usano, accede attraverso `claude.ai`, `claude.com`, e `platform.claude.com`. `mcp-proxy.anthropic.com` non è richiesto neanche: le sessioni self-hosted non lo usano, e la consegna dei tuoi connettori claude.ai dell'organizzazione alle sessioni, quando abilitata per la tua organizzazione, viene instradata attraverso `api.anthropic.com`. Vedi [Server MCP](/docs/it/self-hosted-environments-configuration#mcp-servers).79Non è necessario aggiungere questi host all'allowlist per il traffico del runner o della sessione:

80 

81* **`statsig.anthropic.com`, `*.sentry.io`, `claude.ai` e `platform.claude.com`**: questi host appaiono in alcuni elenchi di controllo di rete enterprise più vecchi, ma il runner non li raggiunge. I recuperi dei flag delle funzionalità vanno a `api.anthropic.com`, e il runner si autentica con il segreto dell'ambiente piuttosto che con OAuth interattivo.

82* **`mcp-proxy.anthropic.com`**: le sessioni self-hosted non lo usano. Quando la consegna dei connettori è abilitata per la tua organizzazione, i connettori claude.ai della tua organizzazione raggiungono le sessioni attraverso `api.anthropic.com`. Vedi [Server MCP](/docs/it/self-hosted-environments-configuration#mcp-servers).

83 

84Questi flussi lato host raggiungono invece `claude.ai`, quindi eseguili da un host il cui egress lo consente piuttosto che ampliare l'egress del container della sessione:

85 

86* **Il programma di installazione a una riga**: recupera `install.sh` da `claude.ai` al momento dell'installazione.

87* **`claude auth login` interattivo**: accede attraverso `claude.ai`, `claude.com` e `platform.claude.com`. La [configurazione guidata](/docs/it/self-hosted-environments-quickstart#run-the-guided-setup), la modalità con accesso di `doctor` e il [dispatch da CI](/docs/it/self-hosted-environments-testing#authenticate-from-ci) lo usano. Il browser con cui accedi carica anche i controlli del browser della pagina di accesso di claude.ai da `hcaptcha.com`, `*.hcaptcha.com` e `challenges.cloudflare.com`.

75 88 

76<h3 id="default-deny-egress">89<h3 id="default-deny-egress">

77 Default-deny egress90 Default-deny egress


127* **Lascia che il runner configuri git**: avvia il runner con `--configure-git` per fargli scrivere la stessa identità e configurazione di firma dei commit che usano le sessioni ospitate da Anthropic140* **Lascia che il runner configuri git**: avvia il runner con `--configure-git` per fargli scrivere la stessa identità e configurazione di firma dei commit che usano le sessioni ospitate da Anthropic

128* **Spedisci la configurazione git nella tua immagine**: imposta l'identità e le credenziali push tu stesso, ad esempio per eseguire il commit sotto la tua identità bot141* **Spedisci la configurazione git nella tua immagine**: imposta l'identità e le credenziali push tu stesso, ad esempio per eseguire il commit sotto la tua identità bot

129 142 

143Per i repository su github.com, puoi anche avviare il runner con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), o impostare `CLAUDE_RUNNER_USE_GIT_PROXY=1`, per chiedere ad Anthropic di servire git per le sessioni del runner.

144 

130Piani minimi di versione git sull'host runner: [`--configure-git`](#let-the-runner-configure-git) la firma dei commit SSH richiede Git 2.34 o più recente, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) richiede 2.32 o più recente, e la ripresa delle sessioni da rami spinti da [`--push-outcome-on-release`](/docs/it/self-hosted-environments-reference#runner-cli-flags) richiede 2.29 o più recente. Git 2.24 è sufficiente se ometti tutti e tre e gestisci l'identità git tu stesso.145Piani minimi di versione git sull'host runner: [`--configure-git`](#let-the-runner-configure-git) la firma dei commit SSH richiede Git 2.34 o più recente, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) richiede 2.32 o più recente, e la ripresa delle sessioni da rami spinti da [`--push-outcome-on-release`](/docs/it/self-hosted-environments-reference#runner-cli-flags) richiede 2.29 o più recente. Git 2.24 è sufficiente se ometti tutti e tre e gestisci l'identità git tu stesso.

131 146 

132<h3 id="let-the-runner-configure-git">147<h3 id="let-the-runner-configure-git">


138* `user.name = Claude` e `user.email = noreply@anthropic.com`, corrispondendo alle sessioni ospitate da Anthropic153* `user.name = Claude` e `user.email = noreply@anthropic.com`, corrispondendo alle sessioni ospitate da Anthropic

139* Firma dei commit e dei tag in formato SSH, instradata attraverso uno shim gestito dal runner che firma ogni commit tramite il servizio di firma di Anthropic usando le credenziali della sessione stessa. Le firme sono verificabili su GitHub rispetto alla chiave di firma SSH pubblicata di Anthropic.154* Firma dei commit e dei tag in formato SSH, instradata attraverso uno shim gestito dal runner che firma ogni commit tramite il servizio di firma di Anthropic usando le credenziali della sessione stessa. Le firme sono verificabili su GitHub rispetto alla chiave di firma SSH pubblicata di Anthropic.

140* `push.negotiate = true`, in modo che git chieda al tuo host git quali commit ha già prima di impacchettare un push. Richiede Claude Code v2.1.257 o successivo.155* `push.negotiate = true`, in modo che git chieda al tuo host git quali commit ha già prima di impacchettare un push. Richiede Claude Code v2.1.257 o successivo.

141* `core.hooksPath` che punta a una directory di hook gestita dal runner. I suoi hook `commit-msg` e `prepare-commit-msg` aggiungono un trailer `Co-authored-by:` per il creatore della sessione a ogni commit, costruito dall'email in [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/it/self-hosted-environments-configuration#wrapper-scripts) e omesso quando quella variabile non è impostata. Se la tua immagine imposta già `core.hooksPath`, il runner lascia la tua impostazione in posizione, salta l'installazione di questi hook, e stampa un avviso `[runner:git]`.156* `core.hooksPath` che punta a una directory di hook gestita dal runner. I suoi hook `commit-msg` e `prepare-commit-msg` aggiungono a ogni commit un trailer `Co-authored-by:` per il creatore della sessione. Il trailer è costruito dall'email in [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/it/self-hosted-environments-configuration#wrapper-scripts) e omesso quando quella variabile non è impostata. Se la tua immagine imposta già `core.hooksPath` e il runner non usa [git gestito da Anthropic](#use-the-anthropic-git-proxy), il runner mantiene la tua impostazione, salta l'installazione di questi hook e stampa un avviso `[runner:git]`.

142 157 

143La firma dei commit richiede git 2.34 o più recente; il runner controlla all'avvio e esce con un errore se il tuo git è più vecchio. Questo flag non configura le credenziali push, che fornisci comunque nell'immagine.158La firma dei commit richiede git 2.34 o più recente; il runner controlla all'avvio e esce con un errore se il tuo git è più vecchio. Questo flag non configura le credenziali push, che fornisci comunque nell'immagine.

144 159 

145Su un runner con v2.1.280 o successivo, anche i commit che fai da un lifecycle hook `checkout` o `post-session` vengono firmati come la sessione, senza il trailer `Co-authored-by:`. [Configurazione git all'interno dei lifecycle hook](/docs/it/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) descrive le impostazioni git che il runner fissa all'interno di quegli hook.160Su un runner con v2.1.280 o successivo, anche i commit che fai da un lifecycle hook `checkout` o `post-session` vengono firmati come la sessione, senza il trailer `Co-authored-by:`. [Configurazione git all'interno dei lifecycle hook](/docs/it/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) descrive le impostazioni git che il runner fissa all'interno di quegli hook.

146 161 

162Con o senza `--configure-git`, Claude Code istruisce Claude a terminare i suoi messaggi di commit con un trailer `Claude-Session: <url>` e le descrizioni delle sue pull request con l'URL della sessione. Per ometterli entrambi, imposta [`attribution.sessionUrl`](/docs/it/settings-reference#attribution-sessionurl) su `false` nel file [`~/.claude/settings.json`](/docs/it/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) dell'host runner, quindi riavvia il runner.

163 

147<h3 id="ship-git-config-in-your-image">164<h3 id="ship-git-config-in-your-image">

148 Spedisci la configurazione git nella tua immagine165 Spedisci la configurazione git nella tua immagine

149</h3>166</h3>


186 Usa il proxy git di Anthropic203 Usa il proxy git di Anthropic

187</h3>204</h3>

188 205 

189Avvia il runner con `--use-anthropic-git-proxy`, o imposta `CLAUDE_RUNNER_USE_GIT_PROXY=1`, per fargli clonare attraverso il proxy git di Anthropic, autenticato con il token a breve durata della sessione stessa. Per le sessioni utente ordinarie, il proxy usa il token OAuth di GitHub o GitHub Enterprise memorizzato per il creatore della sessione; per le sessioni bot e agente, usa il token di installazione dell'app GitHub della tua organizzazione. In entrambi i casi, l'immagine del runner non ha bisogno di credenziali git: nessuna chiave SSH, nessun credential helper, nessun `.netrc`. Questo è lo stesso percorso di autenticazione che usano gli ambienti ospitati da Anthropic.206Con il proxy git di Anthropic, chiamato anche git gestito da Anthropic, l'immagine del runner non ha bisogno di chiavi SSH, credential helper, `.netrc` o altre credenziali git per la sessione stessa. Invece, il runner chiede ad Anthropic di servire git per le sue sessioni. Per una sessione utente servita da Anthropic, il clone del runner e i fetch e i push della sessione stessa passano attraverso Anthropic, che usa il token OAuth di GitHub memorizzato per il creatore della sessione. [Come Anthropic serve git per una sessione](#how-anthropic-serves-git-for-a-session) tratta le sessioni bot e agente.

207 

208Il proxy git è disattivato a meno che tu non lo [attivi](#turn-the-anthropic-git-proxy-on). Un runner che raggiunge il tuo host git con le proprie credenziali non ne ha bisogno, e il suo git funziona con qualsiasi host git.

209 

210In cambio, il proxy git limita ciò che il runner supporta e cambia ciò di cui ha bisogno:

211 

212* **Solo github.com**: Anthropic serve una sessione solo quando tutti i suoi repository sono su github.com, e il proxy git non supporta ancora GitHub Enterprise Server. Su un runner con il proxy git, una sessione con un repository su un altro host git [non riesce ad avviarsi](#when-anthropic-doesnt-serve-a-session).

213* **Credenziali solo per i repository della sessione**: Anthropic fornisce le credenziali git per i repository che fanno parte della sessione, non per altri repository sullo stesso host git. Un submodule privato, una dipendenza che il tuo package manager recupera con git o un marketplace di plugin in un altro repository non ricevono alcuna credenziale da Anthropic. Chiedi alle persone che creano le sessioni di [aggiungere ogni repository](/docs/it/web-quickstart#start-a-task) di cui una sessione ha bisogno al momento della creazione.

214* **Solo push di branch**: un push che elimina un branch fallisce, così come un push verso qualsiasi altro tipo di ref, come un tag. Per sapere quali branch un push può aggiornare, vedi [Proxy GitHub](/docs/it/cloud-environments#github-proxy).

215* **Account GitHub collegati**: la persona che ha creato una sessione utente deve aver collegato GitHub su claude.ai, altrimenti la sessione [non si avvia](#creator-has-no-github-connection).

216* **`--capacity 1`**: il proxy git richiede una sessione per processo runner, quindi esegui più repliche per il parallelismo. [Attiva il proxy git di Anthropic](#turn-the-anthropic-git-proxy-on) elenca i requisiti.

217* **Configurazione git globale sostituita**: il runner [elimina e sostituisce la configurazione git globale](#git-proxy-replaces-global-git-config) dell'utente con cui viene eseguito. Eseguilo come utente dedicato o in un container.

218* **Credenziali dell'host per i push dell'host**: il push di [`--push-outcome-on-release`](/docs/it/self-hosted-environments-reference#runner-cli-flags) del runner e qualsiasi push effettuato dal tuo [hook `post-session`](/docs/it/self-hosted-environments-configuration#post-session) usano comunque le credenziali git dell'host runner e il suo [percorso di rete verso `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Per quelle credenziali, vedi [Spedisci la configurazione git nella tua immagine](#ship-git-config-in-your-image).

219* **Decisione per sessione**: Anthropic decide per ogni sessione sul runner se servire il suo git, e una sessione che non serve non riesce ad avviarsi. [Quando le sessioni non riescono ad avviarsi su un runner con il proxy git](#when-anthropic-doesnt-serve-a-session) ne illustra le cause.

220 

221<span id="git-proxy-replaces-global-git-config" />

222 

223<Warning>

224 Con `--use-anthropic-git-proxy` impostato, il runner elimina e sostituisce la configurazione git globale dell'utente con cui viene eseguito, senza conservarne un backup. Lo fa all'avvio e prima di ogni sessione. Un login o un credential helper che tenevi lì va perso. Le impostazioni scritte da [`--configure-git`](#let-the-runner-configure-git) vengono mantenute. Esegui il runner come utente dedicato o in un container, mai con il tuo utente.

225</Warning>

226 

227Mantieni le impostazioni git non segrete, come l'identità e `safe.directory`, nella configurazione git di sistema.

228 

229<h4 id="turn-the-anthropic-git-proxy-on">

230 Attiva il proxy git di Anthropic

231</h4>

232 

233Prima di avviare il runner con `--use-anthropic-git-proxy`, verifica che l'host runner soddisfi ciascuno di questi requisiti. Il runner rifiuta di avviarsi quando il requisito di capacità o quello di git non è soddisfatto:

190 234 

191Il proxy richiede `--capacity 1` perché l'URL del proxy è per sessione, e git 2.32 o più recente perché git più vecchio ignora il meccanismo di configurazione che il proxy usa per isolare le sessioni l'una dall'altra. Il runner rifiuta di avviarsi se uno dei due requisiti non è soddisfatto. Poiché il proxy recupera dal lato di Anthropic, il tuo host git deve essere raggiungibile dall'infrastruttura di Anthropic, lo stesso requisito che hanno le sessioni ospitate da Anthropic; per un host git che è solo instradabile all'interno della tua rete, usa un [`checkout` lifecycle hook](/docs/it/self-hosted-environments-configuration#checkout) invece. Ogni processo runner gestisce una sessione alla volta, quindi esegui più repliche per il parallelismo. Quando il proxy è abilitato, `--git-host-rewrite` e `--git-ssh-rewrite` non hanno effetto: l'URL del proxy punta a `api.anthropic.com`, non al tuo host git.235* **Claude Code v2.1.267 o successivo**: le versioni precedenti accettano il flag ma non segnalano la richiesta ad Anthropic di servire git né stampano la riga `Registering as opted in`, quindi Anthropic non serve le loro sessioni.

236* **`--capacity 1`, il valore predefinito**: ogni processo runner gestisce una sessione alla volta, quindi esegui più repliche per il parallelismo.

237* **Git 2.32 o più recente**: git più vecchio ignora la configurazione git per sessione che il runner imposta per il proxy git.

192 238 

193<Warning>239<Warning>

194 Le ricette [Kubernetes](#kubernetes) e [Docker Compose](#docker-compose) su questa pagina usano `--capacity 4`. Se aggiungi `--use-anthropic-git-proxy` o `CLAUDE_RUNNER_USE_GIT_PROXY=1` a una di esse senza cambiare la capacità a `1`, il runner esce all'avvio ogni volta che il tuo orchestrator lo riavvia. Imposta `--capacity 1` ed esegui più repliche per il parallelismo. [Quando il runner esce](#when-the-runner-exits) mostra la riga che il runner stampa.240 Le ricette [Kubernetes](#kubernetes) e [Docker Compose](#docker-compose) su questa pagina usano `--capacity 4`. Se aggiungi `--use-anthropic-git-proxy` o `CLAUDE_RUNNER_USE_GIT_PROXY=1` a una di esse senza cambiare la capacità a `1`, il runner esce all'avvio ogni volta che il tuo orchestrator lo riavvia. Imposta `--capacity 1` ed esegui più repliche per il parallelismo. [Quando il runner esce](#when-the-runner-exits) mostra la riga che il runner stampa.

195</Warning>241</Warning>

196 242 

197Il runner segnala anche l'opt-in ad Anthropic quando si registra, stampando `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)` all'avvio. La segnalazione dell'opt-in richiede Claude Code v2.1.267 o successivo, e le versioni precedenti accettano il flag senza segnalarlo o stampare quella riga. Ogni sessione su un runner con opt-in usa quindi o git gestito da Anthropic o l'URL del proxy per sessione. Quando una sessione usa l'URL del proxy per sessione, il runner registra una riga `[runner:warn]` dicendo così.243Per attivare il proxy git, aggiungi `--use-anthropic-git-proxy` al comando del runner, oppure imposta `CLAUDE_RUNNER_USE_GIT_PROXY=1` nell'ambiente del runner. Questo comando, eseguito in una shell sull'host runner, avvia il runner della [guida rapida](/docs/it/self-hosted-environments-quickstart#set-up-manually) con il proxy git attivo:

244 

245```bash theme={null}

246claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>' --use-anthropic-git-proxy

247```

248 

249All'avvio, il runner stampa `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)`. Anthropic decide quindi per ogni sessione su quel runner se servire il suo git. Per ogni sessione che serve, il runner registra una riga `[runner:session]` contenente `governed git ACTIVE`. Se invece una sessione non riesce ad avviarsi, vedi [Quando le sessioni non riescono ad avviarsi su un runner con il proxy git](#when-anthropic-doesnt-serve-a-session).

250 

251<h4 id="how-anthropic-serves-git-for-a-session">

252 Come Anthropic serve git per una sessione

253</h4>

254 

255Per una sessione servita da Anthropic, il clone del runner e i fetch e i push della sessione stessa passano attraverso Anthropic, autenticati con il token a breve durata della sessione stessa:

256 

257* **Sessioni utente**: Anthropic usa il token OAuth di GitHub memorizzato per il creatore della sessione.

258* **Sessioni bot e agente**: Anthropic usa il token di installazione della GitHub App della tua organizzazione.

259* **Riscritture degli URL**: `--git-host-rewrite` e `--git-ssh-rewrite` non hanno effetto su un repository servito dal proxy git.

260 

261<h4 id="when-anthropic-doesnt-serve-a-session">

262 Quando le sessioni non riescono ad avviarsi su un runner con il proxy git

263</h4>

264 

265Su un runner avviato con `--use-anthropic-git-proxy`, una sessione non riesce ad avviarsi quando Anthropic non serve il suo git. Cerca nel log del runner un errore git che nomina un indirizzo `api.anthropic.com` contenente `/git_proxy/`.

266 

267Per ogni sessione, un runner con Claude Code v2.1.267 o successivo registra anche una riga `[runner:session]` contenente `governed git ACTIVE` quando Anthropic serve il git della sessione, oppure una riga `[runner:warn]` contenente `the server withheld Anthropic-managed git for this session` quando non lo fa. Trova la riga che vedi tra questi casi:

268 

269* **Né `governed git ACTIVE` né la riga `withheld`**: un runner precedente a Claude Code v2.1.267 non registra nessuna delle due righe, e Anthropic non serve le sue sessioni. Aggiorna il runner a v2.1.267 o successivo seguendo [Fissa la versione](#pin-the-version).

270* **La riga `withheld`**: Anthropic non ha servito la sessione. Un runner che prima funzionava con il proxy git può fallire in questo modo senza alcuna modifica da parte tua.

271 * **Un repository non è su github.com**: una sessione con anche un solo repository su un altro host git, come GitHub Enterprise Server, non viene servita, compresi i suoi repository su github.com. [Disattiva il proxy git di Anthropic](#turn-the-anthropic-git-proxy-off) per i runner di quell'ambiente.

272 * **Tutti i repository sono su github.com**: segnala il problema al [tuo team di account Anthropic](#report-an-issue) con l'ID della sessione dalla riga `withheld`. Anthropic registra il motivo dal proprio lato.

273* **Una riga contenente `remote: access denied by the git proxy`**: una sessione servita da Anthropic può comunque essere rifiutata, ad esempio quando la policy dell'organizzazione nega l'accesso git per la sessione, o la sessione non è autorizzata per il repository. Il log del runner mostra allora una riga contenente `remote: access denied by the git proxy`, e il resto di quella riga ne indica il motivo.

274* <span id="creator-has-no-github-connection" />**`GitHub authentication required`**: compare quando il creatore della sessione non ha una connessione GitHub funzionante su claude.ai. Il clone della sessione fallisce e l'errore git riporta `GitHub authentication required. Please reconnect your GitHub account.` Chiedi a quella persona di collegare o ricollegare GitHub nelle sue impostazioni di claude.ai.

275 

276Dopo aver corretto la causa, avvia di nuovo le sessioni non riuscite.

277 

278<h4 id="turn-the-anthropic-git-proxy-off">

279 Disattiva il proxy git di Anthropic

280</h4>

281 

282Se le sessioni in un ambiente usano un repository su un host git diverso da github.com, come GitHub Enterprise Server, disattiva `--use-anthropic-git-proxy` per i runner di quell'ambiente.

283 

284<Steps>

285 <Step title="Rimuovi il flag">

286 Rimuovi `--use-anthropic-git-proxy` dal comando del runner. Se hai impostato `CLAUDE_RUNNER_USE_GIT_PROXY` nell'ambiente del runner, ad esempio in una pod spec o in un file Compose, rimuovila da lì. In una shell, annulla la sua impostazione:

287 

288 ```bash theme={null}

289 unset CLAUDE_RUNNER_USE_GIT_PROXY

290 ```

291 </Step>

292 

293 <Step title="Fornisci al runner le credenziali git">

294 Fornisci credenziali che funzionino senza un prompt per ogni host git usato dalle sessioni dei runner, github.com compreso. Qualsiasi credenziale presente nella configurazione git globale dell'utente del runner non c'è più, perché il runner ha eliminato quella configurazione mentre `--use-anthropic-git-proxy` era impostato. [Spedisci le credenziali nella tua immagine](#ship-git-config-in-your-image) o usa un [lifecycle hook `checkout`](/docs/it/self-hosted-environments-configuration#checkout).

295 </Step>

296 

297 <Step title="Apri il percorso di rete">

298 Consenti al runner di raggiungere ogni host git usato dalle sessioni dei runner sulla porta 443 o 22. Vedi la riga dell'host git in [Requisiti di rete](#network-requirements).

299 </Step>

300 

301 <Step title="Riavvia i runner">

302 Riavvia i runner in modo che si registrino senza il proxy git. Quindi avvia di nuovo ogni sessione non riuscita.

303 </Step>

304</Steps>

198 305 

199<h4 id="github-api-access-without-the-github-cli">306<h4 id="github-api-access-without-the-github-cli">

200 Accesso all'API di GitHub senza la GitHub CLI307 Accesso all'API di GitHub senza la GitHub CLI


266```dockerfile theme={null}373```dockerfile theme={null}

267FROM debian:bookworm-slim374FROM debian:bookworm-slim

268ARG CLAUDE_CODE_VERSION375ARG CLAUDE_CODE_VERSION

269RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client \376RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \

270 && rm -rf /var/lib/apt/lists/*377 && rm -rf /var/lib/apt/lists/*

271RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \378RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

272 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude379 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude


382kubectl create namespace claude-runners489kubectl create namespace claude-runners

383```490```

384 491 

385Crea il Secret di supporto da un file locale che contiene il valore che hai copiato nel passaggio [**Copy environment key**](/docs/it/self-hosted-environments-quickstart#set-up-an-environment-and-runner) dell'interfaccia utente di amministrazione, in modo che il segreto non appaia mai nella tua cronologia della shell. Esegui `(umask 077 && cat > ./environment-secret)`, incolla il segreto, premi Invio, quindi Ctrl-D. Quindi crea il Secret e cancella il file:492Crea il Secret di supporto da un file locale che contiene il valore che hai copiato nel passaggio [**Copy environment key**](/docs/it/self-hosted-environments-quickstart#set-up-manually) dell'interfaccia utente di amministrazione, in modo che il segreto non appaia mai nella tua cronologia della shell. Esegui `(umask 077 && cat > ./environment-secret)`, incolla il segreto, premi Invio, quindi Ctrl-D. Quindi crea il Secret e cancella il file:

386 493 

387```bash theme={null}494```bash theme={null}

388kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret495kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret


500 Riutilizza un checkout pre-riscaldato607 Riutilizza un checkout pre-riscaldato

501</h2>608</h2>

502 609 

503Per i repository grandi, il clone può dominare l'avvio della sessione. A `--capacity 1` senza un [`checkout` hook](/docs/it/self-hosted-environments-configuration#checkout), il runner mantiene un clone canonico per repository a `<base-dir>/<repo-owner>/<repo>` e lo riutilizza tra le sessioni: recupera il ref richiesto, stacca `HEAD`, e lo resetta duramente, il che è quasi istantaneo quando poco è cambiato. Per saltare il clone freddo, fornisci il clone in uno di due modi:610Per i repository grandi, il clone può dominare l'avvio della sessione. Per saltare il clone freddo, fornisci tu stesso un clone al percorso in cui il runner mantiene il proprio. Senza un [`checkout` hook](/docs/it/self-hosted-environments-configuration#checkout), il runner mantiene un clone canonico per repository a `<base-dir>/<repo-owner>/<repo>` e lo riutilizza tra le sessioni:

611 

612* **A `--capacity 1`**: il runner recupera il ref richiesto, stacca `HEAD` e lo resetta duramente, il che è quasi istantaneo quando poco è cambiato.

613* **A una `--capacity` superiore a uno**: il runner esegue il fetch in quel clone, quindi estrae da esso un worktree separato per ogni sessione. Un clone pre-riscaldato fa risparmiare il download ma non il checkout.

614 

615Fornisci il clone nell'immagine o su un volume persistente:

504 616 

505* **Clone nell'immagine**: costruisci il clone nella tua immagine runner a quel percorso. Ogni container fresco inizia quindi con il clone caldo senza riutilizzare un disco.617* **Clone nell'immagine**: costruisci il clone nella tua immagine runner a quel percorso. Ogni container fresco inizia quindi con il clone caldo senza riutilizzare un disco.

506* **Clone su un volume persistente**: su runner che pre-blocchi a un account di un utente con [`--lock-to-account`](/docs/it/self-hosted-environments-reference#runner-cli-flags), punta `--base-dir` a un volume persistente, in modo che il disco serva solo quell'account. Un runner pre-bloccato non raccoglie mai sessioni di canale Claude Tag, quindi questa opzione non si applica ai runner che le servono.618* **Clone su un volume persistente**: su runner che pre-blocchi a un account di un utente con [`--lock-to-account`](/docs/it/self-hosted-environments-reference#runner-cli-flags), punta `--base-dir` a un volume persistente, in modo che il disco serva solo quell'account. Un runner pre-bloccato non raccoglie mai sessioni di canale Claude Tag, quindi questa opzione non si applica ai runner che le servono.


508Cosa il percorso di riutilizzo fa e non garantisce:620Cosa il percorso di riutilizzo fa e non garantisce:

509 621 

510* **Qualsiasi forma di clone funziona**: un clone completo, shallow, o single-branch al percorso viene usato così com'è. Il runner non passa mai `--depth` quando recupera in un clone esistente, quindi un pre-warm completo mantiene la sua cronologia completa e uno shallow rimane shallow. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, o un numero; predefinito 50) controlla solo il clone freddo che il runner fa quando nessun clone esiste ancora.622* **Qualsiasi forma di clone funziona**: un clone completo, shallow, o single-branch al percorso viene usato così com'è. Il runner non passa mai `--depth` quando recupera in un clone esistente, quindi un pre-warm completo mantiene la sua cronologia completa e uno shallow rimane shallow. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, o un numero; predefinito 50) controlla solo il clone freddo che il runner fa quando nessun clone esiste ancora.

511* **Le modifiche tracciate si resettano, i file non tracciati persistono**: ogni sessione inizia da un reset duro che cancella le modifiche tracciate della sessione precedente, ma il runner non esegue mai `git clean`, quindi i file non tracciati dalle sessioni precedenti dell'owner bloccato rimangono nell'albero.623* **Le modifiche tracciate si resettano, i file non tracciati persistono**: a `--capacity 1`, ogni sessione inizia da un reset duro che cancella le modifiche tracciate della sessione precedente, ma il runner non esegue mai `git clean`, quindi i file non tracciati dalle sessioni precedenti dell'owner bloccato rimangono nell'albero.

512* **Directory per sessione persistono anche**: accanto al checkout, il runner crea voci per sessione sotto `<base-dir>/_sessions/` per ogni sessione che esegue. La directory di configurazione Claude della sessione contiene una copia locale della trascrizione della conversazione. Accanto ad essa si trovano i file caricati della sessione, quando la sessione ne ha. La directory della sessione si trova lì anche: contiene qualsiasi worktree per sessione e checkout di hook `checkout` mentre la sessione è in esecuzione, e mantiene qualsiasi altra cosa Claude abbia scritto in essa.624* **Directory per sessione persistono anche**: accanto al checkout, il runner crea voci per sessione sotto `<base-dir>/_sessions/` per ogni sessione che esegue. La directory di configurazione Claude della sessione contiene una copia locale della trascrizione della conversazione. Accanto ad essa si trovano i file caricati della sessione, quando la sessione ne ha. La directory della sessione si trova lì anche: contiene qualsiasi worktree per sessione e checkout di hook `checkout` mentre la sessione è in esecuzione, e mantiene qualsiasi altra cosa Claude abbia scritto in essa.

513 625 

514 Per impostazione predefinita il runner lascia questi in posizione quando la sessione termina, quindi su un disco che sopravvive al processo runner si accumulano. Ogni sessione viene eseguita come l'utente del runner stesso, quindi qualsiasi sessione successiva che il disco serve può leggerli. Se mantieni un `--base-dir` persistente, dimensiona il volume per quella crescita. Lo stesso si applica a qualsiasi configurazione che riavvia il runner sullo stesso filesystem, inclusa la [ricetta Docker Compose](#docker-compose).626 Per impostazione predefinita il runner lascia questi in posizione quando la sessione termina, quindi su un disco che sopravvive al processo runner si accumulano. Ogni sessione viene eseguita come l'utente del runner stesso, quindi qualsiasi sessione successiva che il disco serve può leggerli. Se mantieni un `--base-dir` persistente, dimensiona il volume per quella crescita. Lo stesso si applica a qualsiasi configurazione che riavvia il runner sullo stesso filesystem, inclusa la [ricetta Docker Compose](#docker-compose).


522 634 

523Il processo Claude Code figlio di ogni sessione esegue il binario del runner stesso, e il runner disattiva l'auto-aggiornamento all'interno delle sessioni che genera, quindi ogni sessione esegue la versione che hai installato sull'host o costruito nell'immagine. Un aggiornamento a livello di host ha effetto la prossima volta che il runner si avvia.635Il processo Claude Code figlio di ogni sessione esegue il binario del runner stesso, e il runner disattiva l'auto-aggiornamento all'interno delle sessioni che genera, quindi ogni sessione esegue la versione che hai installato sull'host o costruito nell'immagine. Un aggiornamento a livello di host ha effetto la prossima volta che il runner si avvia.

524 636 

525Un modello che le vostre sessioni utilizzano può richiedere una versione più recente di Claude Code rispetto a quella che eseguono. Il server rifiuta quindi le richieste per quel modello con [Claude Code non supporta questo modello](/docs/it/errors#claude-code-does-not-support-this-model). Prima di fissare una versione, controllate [le versioni di Claude Code che i modelli richiedono](/docs/it/model-config#available-models) per ogni modello che le vostre sessioni utilizzano.637Scegli quale versione eseguono le tue sessioni e quando cambia:

526 638 

639* **Prima di fissare una versione**: controlla [le versioni di Claude Code che i modelli richiedono](/docs/it/model-config#available-models) per ogni modello che le tue sessioni utilizzano. Se un modello richiede una versione più recente di quella eseguita dalle tue sessioni, il server rifiuta le richieste per quel modello con [Claude Code does not support this model](/docs/it/errors#claude-code-does-not-support-this-model).

527* **Per mantenere una flotta su una versione**: costruisci l'immagine con una versione fissata, o su un host nudo installa una versione specifica e [disabilita gli auto-aggiornamenti](/docs/it/setup#disable-auto-updates)640* **Per mantenere una flotta su una versione**: costruisci l'immagine con una versione fissata, o su un host nudo installa una versione specifica e [disabilita gli auto-aggiornamenti](/docs/it/setup#disable-auto-updates)

528* **Per aggiornare**: installa la versione più recente o ricostruisci l'immagine, quindi riavvia i runner641* **Per aggiornare una flotta fissa**: leggi le voci del [changelog](/docs/en/changelog) tra la tua versione e quella che stai installando, quindi installa la versione più recente o ricompila l'immagine e riavvia i runner

642* **Per aggiornare i runner on-demand**: leggi le voci del [changelog](/docs/en/changelog) tra la tua versione e quella che stai installando, quindi cambia l'immagine che il tuo [hook `spawn-runner`](/docs/it/self-hosted-environments-configuration#the-spawn-runner-hook) avvia. Ogni nuovo runner ottiene la nuova versione. Un runner già attivo, incluso un runner in standby avviato da [`--min-idle`](/docs/it/self-hosted-environments-reference#orchestrator-cli-flags), mantiene la sua versione finché non termina. Non riavviarlo, perché il suo ordine di lavoro è monouso.

529* **Plugin**: i marketplace dei plugin non si auto-aggiornano neanche; imposta `FORCE_AUTOUPDATE_PLUGINS=1` nell'ambiente del runner per lasciare che i plugin si auto-aggiornino mentre il binario rimane fissato643* **Plugin**: i marketplace dei plugin non si auto-aggiornano neanche; imposta `FORCE_AUTOUPDATE_PLUGINS=1` nell'ambiente del runner per lasciare che i plugin si auto-aggiornino mentre il binario rimane fissato

530 644 

531<h2 id="scale-the-fleet">645<h2 id="scale-the-fleet">


580</h3>694</h3>

581 695 

582* **Le sessioni riprese perdono il lavoro non spinto**: un nuovo runner clona di nuovo il repository dal suo branch iniziale, quindi il lavoro che la sessione non aveva spinto è perso.696* **Le sessioni riprese perdono il lavoro non spinto**: un nuovo runner clona di nuovo il repository dal suo branch iniziale, quindi il lavoro che la sessione non aveva spinto è perso.

583 * **Per conservare il lavoro di cui è stato fatto il commit**: imposta [`--push-outcome-on-release`](/docs/it/self-hosted-environments-reference#runner-cli-flags). Il runner esegue quindi un push best-effort dei branch di risultato della sessione prima del rilascio, e la sessione ripresa parte da quei commit. Le modifiche senza commit vengono comunque perse.697 * **Per conservare il lavoro di cui è stato fatto il commit**: imposta [`--push-outcome-on-release`](/docs/it/self-hosted-environments-reference#runner-cli-flags) su ogni runner nell'ambiente, perché un runner senza il flag riprende la sessione dal suo branch iniziale. Un runner con il flag esegue un push best-effort dei branch di risultato della sessione prima del rilascio, e la sessione ripresa parte da quei commit. Il push usa le credenziali git proprie dell'host del runner, anche su un runner che usa [git gestito da Anthropic](#use-the-anthropic-git-proxy). Le modifiche senza commit vengono comunque perse.

698 * **Con un hook `checkout`**: i repository estratti tramite un [hook del ciclo di vita `checkout`](/docs/it/self-hosted-environments-configuration#checkout) non vengono sottoposti a push. Crea invece uno snapshot di questi repository dall'[hook `post-session`](/docs/it/self-hosted-environments-configuration#post-session).

584 * **Prima di abilitare il flag**: limita chi può eseguire il push sui ref `claude/*` sul remote di origine. Alla ripresa, il runner recupera il branch precedentemente spinto senza verificare chi ne ha eseguito il push.699 * **Prima di abilitare il flag**: limita chi può eseguire il push sui ref `claude/*` sul remote di origine. Alla ripresa, il runner recupera il branch precedentemente spinto senza verificare chi ne ha eseguito il push.

585* **Un repository aggiunto a metà sessione può non riuscire a essere clonato**: Claude lo clona con `git clone` tramite HTTPS. Su un runner senza [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), il clone fallisce con un errore di autenticazione git se nulla sull'host può leggere il repository. Quando possibile, seleziona ogni repository di cui la sessione ha bisogno quando la crei.700* **Un repository aggiunto a metà sessione può non riuscire a essere clonato**: Claude lo clona con `git clone` tramite HTTPS. Su un runner senza [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), il clone fallisce con un errore di autenticazione git se nulla sull'host può leggere il repository. Quando possibile, seleziona ogni repository di cui la sessione ha bisogno quando la crei.

586* **Alcuni connettori non appaiono nelle sessioni self-hosted**: un connettore che non hai ancora connesso nelle Impostazioni di claude.ai non è elencato in una sessione self-hosted, e la sessione non ti chiederà di connettarlo. Connettilo prima nelle Impostazioni, quindi avvia una sessione fresca. L'aggiunta di un connettore a una sessione già in esecuzione non rende i suoi strumenti disponibili a Claude; avvia una sessione fresca per raccogliere un connettore appena aggiunto.701* **Alcuni connettori non appaiono nelle sessioni self-hosted**: un connettore che non hai ancora connesso nelle Impostazioni di claude.ai non è elencato in una sessione self-hosted, e la sessione non ti chiederà di connettarlo. Connettilo prima nelle Impostazioni, quindi avvia una sessione fresca. L'aggiunta di un connettore a una sessione già in esecuzione non rende i suoi strumenti disponibili a Claude; avvia una sessione fresca per raccogliere un connettore appena aggiunto.


606* **Il runner non appare nell'ambiente**: confermare che l'host possa raggiungere `api.anthropic.com` su HTTPS, che il segreto dell'ambiente sia attuale e che l'orologio dell'host sia entro cinque minuti dall'ora reale; uno scostamento maggiore causa il fallimento dell'autenticazione. Il runner registra `[runner:fatal]` con il motivo del rifiuto in caso di errore di autenticazione.721* **Il runner non appare nell'ambiente**: confermare che l'host possa raggiungere `api.anthropic.com` su HTTPS, che il segreto dell'ambiente sia attuale e che l'orologio dell'host sia entro cinque minuti dall'ora reale; uno scostamento maggiore causa il fallimento dell'autenticazione. Il runner registra `[runner:fatal]` con il motivo del rifiuto in caso di errore di autenticazione.

607* **Il runner esce all'avvio con `cannot create or write to base directory`**: il runner non può creare o scrivere in `--base-dir`, che per impostazione predefinita è `/workspace`. Correggere la proprietà della directory o puntare `--base-dir` a un percorso scrivibile, come descritto in [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Se il runner registra invece `[runner:fatal]` dicendo che il controllo della directory di base è scaduto, la directory si trova su un mount NFS o CSI bloccato. Controllare l'integrità del mount piuttosto che i permessi. Il runner stampa entrambi questi errori di avvio su stderr prima di aprire `--log-file`, quindi cercarli nel terminale o nei log del container della piattaforma piuttosto che nel file di log. Prima della v2.1.225, il runner non controllava la directory di base all'avvio e questa configurazione errata causava il fallimento delle sessioni dopo il pickup.722* **Il runner esce all'avvio con `cannot create or write to base directory`**: il runner non può creare o scrivere in `--base-dir`, che per impostazione predefinita è `/workspace`. Correggere la proprietà della directory o puntare `--base-dir` a un percorso scrivibile, come descritto in [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Se il runner registra invece `[runner:fatal]` dicendo che il controllo della directory di base è scaduto, la directory si trova su un mount NFS o CSI bloccato. Controllare l'integrità del mount piuttosto che i permessi. Il runner stampa entrambi questi errori di avvio su stderr prima di aprire `--log-file`, quindi cercarli nel terminale o nei log del container della piattaforma piuttosto che nel file di log. Prima della v2.1.225, il runner non controllava la directory di base all'avvio e questa configurazione errata causava il fallimento delle sessioni dopo il pickup.

608* **Le sessioni rimangono in coda**: ogni runner online può essere bloccato a un proprietario diverso. Controllare la [metrica](/docs/it/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_locked_account` di ogni runner o il campo `locked_account` della sua riga di log `[runner:health]` per vedere chi la detiene. Entrambi mostrano l'email del proprietario solo dopo che il runner ha ricevuto un token di sessione con un claim `act.email`, che le sessioni di un agente Claude Tag non hanno mai. Senza il claim, il runner non emette alcuna serie `locked_account` e registra `locked_account=yes`, il che indica che il runner è bloccato ma non a quale proprietario. Aggiungere repliche o attendere che un runner esistente si svuoti e si riavvii. Se l'ambiente utilizza runner on-demand, controllare l'orchestrator; vedere [On-demand runners](/docs/it/self-hosted-environments-configuration#on-demand-runners).723* **Le sessioni rimangono in coda**: ogni runner online può essere bloccato a un proprietario diverso. Controllare la [metrica](/docs/it/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_locked_account` di ogni runner o il campo `locked_account` della sua riga di log `[runner:health]` per vedere chi la detiene. Entrambi mostrano l'email del proprietario solo dopo che il runner ha ricevuto un token di sessione con un claim `act.email`, che le sessioni di un agente Claude Tag non hanno mai. Senza il claim, il runner non emette alcuna serie `locked_account` e registra `locked_account=yes`, il che indica che il runner è bloccato ma non a quale proprietario. Aggiungere repliche o attendere che un runner esistente si svuoti e si riavvii. Se l'ambiente utilizza runner on-demand, controllare l'orchestrator; vedere [On-demand runners](/docs/it/self-hosted-environments-configuration#on-demand-runners).

609* **Le sessioni falliscono immediatamente dopo il pickup**: aprire la sessione in claude.ai/code per vedere l'errore. Le cause più comuni sono le [credenziali git](#configure-git) mancanti nell'immagine del runner e gli strumenti di compilazione non installati. Una directory di base non scrivibile arresta il runner all'avvio invece di far fallire le sessioni. Vedere la voce **Il runner esce all'avvio con `cannot create or write to base directory`** in questo elenco.724* **Le sessioni falliscono subito dopo la presa in carico**: apri la sessione in claude.ai/code per vedere l'errore. Le cause più comuni sono la mancanza di [credenziali git](#configure-git) nell'immagine del runner e strumenti di build non installati. Su un runner avviato con `--use-anthropic-git-proxy`, consulta [Quando le sessioni non si avviano su un runner con il git proxy](#when-anthropic-doesnt-serve-a-session). Una directory di base non scrivibile arresta il runner all'avvio invece di far fallire le sessioni. Consulta la voce **Il runner esce all'avvio con `cannot create or write to base directory`** in questo elenco.

725* **Le sessioni non si avviano su un runner che ha impostato `--use-anthropic-git-proxy`**: cerca nel log del runner `access denied by the git proxy`, oppure un errore git che nomina un indirizzo `api.anthropic.com` contenente `/git_proxy/`. Per capire se Anthropic ha servito la sessione e correggere la causa, consulta [Quando le sessioni non si avviano su un runner con il git proxy](#when-anthropic-doesnt-serve-a-session).

610* **Le sessioni non riescono a raggiungere la rete attraverso un proxy di uscita autenticante**: quando l'origine impostata con [`--proxy-authorization-command` o `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) fallisce, scade dopo 30 secondi o produce un valore vuoto, il runner risponde a quella connessione con `502 Bad Gateway` e registra il motivo. Il runner redige lo stderr del comando in quel log e non registra mai il valore dell'intestazione. Con `--proxy-authorization-command`, eseguire il comando stesso sull'host per confermare che stampa l'intero valore dell'intestazione su stdout. Se il runner esce invece all'avvio con `could not start the proxy-authorization listener`, non ha potuto aprire il suo listener di loopback.726* **Le sessioni non riescono a raggiungere la rete attraverso un proxy di uscita autenticante**: quando l'origine impostata con [`--proxy-authorization-command` o `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) fallisce, scade dopo 30 secondi o produce un valore vuoto, il runner risponde a quella connessione con `502 Bad Gateway` e registra il motivo. Il runner redige lo stderr del comando in quel log e non registra mai il valore dell'intestazione. Con `--proxy-authorization-command`, eseguire il comando stesso sull'host per confermare che stampa l'intero valore dell'intestazione su stdout. Se il runner esce invece all'avvio con `could not start the proxy-authorization listener`, non ha potuto aprire il suo listener di loopback.

611* **Il runner registra righe `Poll failed` contenenti `rejecting the malformed poll response`**: il runner ha ricevuto una risposta di work-poll il cui corpo non è il JSON previsto dalla coda, il più delle volte perché qualcosa tra il runner e `api.anthropic.com`, come un proxy intercettante o un portale captive, ha risposto con la sua stessa pagina. Il runner rifiuta la risposta, la conta sotto il tipo `transport` della [metrica](/docs/it/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_poll_errors_total`, e riprova secondo la pianificazione di poll fallito descritta in [Session lifecycle](/docs/it/self-hosted-environments#session-lifecycle). Il runner continua a servire le sue sessioni live. Configurare il proxy per passare le risposte da `api.anthropic.com` inalterate. Prima della v2.1.246, il runner leggeva tale risposta come una coda di lavoro vuota, il che potrebbe terminare le sue sessioni live o farla uscire.727* **Il runner registra righe `Poll failed` contenenti `rejecting the malformed poll response`**: il runner ha ricevuto una risposta di work-poll il cui corpo non è il JSON previsto dalla coda, il più delle volte perché qualcosa tra il runner e `api.anthropic.com`, come un proxy intercettante o un portale captive, ha risposto con la sua stessa pagina. Il runner rifiuta la risposta, la conta sotto il tipo `transport` della [metrica](/docs/it/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_poll_errors_total`, e riprova secondo la pianificazione di poll fallito descritta in [Session lifecycle](/docs/it/self-hosted-environments#session-lifecycle). Il runner continua a servire le sue sessioni live. Configurare il proxy per passare le risposte da `api.anthropic.com` inalterate. Prima della v2.1.246, il runner leggeva tale risposta come una coda di lavoro vuota, il che potrebbe terminare le sue sessioni live o farla uscire.

612* **Il ramo di una sessione non esiste più sul remoto**: per un'origine git che la sessione legge solo, il runner salta quella origine e continua con le rimanenti. Per l'origine a cui la sessione spinge i risultati, un ramo eliminato, tipicamente perché è stato unito e auto-eliminato, fa fallire la sessione con un errore che nomina il repository e il ramo e chiede di ripristinare il ramo e riprovare. Il runner fa fallire la sessione con lo stesso errore quando saltare lascerebbe senza alcun repository. Prima della v2.1.228, tale sessione iniziava in una directory vuota.728* **Il ramo di una sessione non esiste più sul remoto**: per un'origine git che la sessione legge solo, il runner salta quella origine e continua con le rimanenti. Per l'origine a cui la sessione spinge i risultati, un ramo eliminato, tipicamente perché è stato unito e auto-eliminato, fa fallire la sessione con un errore che nomina il repository e il ramo e chiede di ripristinare il ramo e riprovare. Il runner fa fallire la sessione con lo stesso errore quando saltare lascerebbe senza alcun repository. Prima della v2.1.228, tale sessione iniziava in una directory vuota.


616 732 

617 Il controllo di accesso viene eseguito di nuovo ogni volta che la sessione inizia su un runner, quindi una volta che l'identità git del runner ha accesso in lettura, il prossimo avvio clona il repository. Prima della v2.1.274, ognuno di questi rifiuti faceva fallire l'avvio della sessione.733 Il controllo di accesso viene eseguito di nuovo ogni volta che la sessione inizia su un runner, quindi una volta che l'identità git del runner ha accesso in lettura, il prossimo avvio clona il repository. Prima della v2.1.274, ognuno di questi rifiuti faceva fallire l'avvio della sessione.

618* **Le sessioni impiegano minuti per avviarsi**: il clone iniziale di solito domina. Osservare la [metrica](/docs/it/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` per confermare e ridurre il clone con un [pre-warmed checkout](#reuse-a-pre-warmed-checkout) o un `CLAUDE_RUNNER_FETCH_DEPTH` più piccolo.734* **Le sessioni impiegano minuti per avviarsi**: il clone iniziale di solito domina. Osservare la [metrica](/docs/it/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` per confermare e ridurre il clone con un [pre-warmed checkout](#reuse-a-pre-warmed-checkout) o un `CLAUDE_RUNNER_FETCH_DEPTH` più piccolo.

619* **I turni falliscono con un 401**: ogni sessione autentica le chiamate del modello con il token di breve durata [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/it/self-hosted-environments-configuration#wrapper-scripts) che il runner recupera da Anthropic e ruota sullo stdin della sessione. Quando un turno termina con un 401 o 403 dall'API del modello, il runner recupera un token fresco e lo passa alla sessione. Il turno fallito non viene riprovato.735* **I turni falliscono con un 401**: quando un turno termina con un 401 o un 403 dall'API di Anthropic, il runner recupera da Anthropic un nuovo [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/it/self-hosted-environments-configuration#wrapper-scripts) e lo passa alla sessione. Il turno fallito non viene ritentato. Questo token ha una durata breve e il runner lo ruota tramite lo stdin della sessione.

620 736 

621 Quando un recupero fallisce, il runner registra una riga `inference_token refresh failed` che dice quando riproverà, e continua a riprovare finché la sessione è in esecuzione.737 Quando un recupero fallisce, il runner registra una riga `inference_token refresh failed` che dice quando riproverà, e continua a riprovare finché la sessione è in esecuzione.

622 738 


637 753 

638* **Un'uscita normale**: il runner ha terminato le sue sessioni e si è scaricato, ha raggiunto il suo tempo di ritiro, o gli è stato detto di fermarsi. Riavviarlo in modo che l'ambiente abbia di nuovo capacità. [Runner lifecycle](/docs/it/self-hosted-environments#runner-lifecycle) descrive queste uscite.754* **Un'uscita normale**: il runner ha terminato le sue sessioni e si è scaricato, ha raggiunto il suo tempo di ritiro, o gli è stato detto di fermarsi. Riavviarlo in modo che l'ambiente abbia di nuovo capacità. [Runner lifecycle](/docs/it/self-hosted-environments#runner-lifecycle) descrive queste uscite.

639* **Un avvio fallito**: il runner non può avviarsi con la configurazione o l'host che gli è stato assegnato, quindi esce secondi dopo l'avvio, e esce nello stesso modo ogni volta che lo riavvii. Riavviarlo più velocemente non aiuta. Qualcuno deve leggere il suo output e correggere la causa.755* **Un avvio fallito**: il runner non può avviarsi con la configurazione o l'host che gli è stato assegnato, quindi esce secondi dopo l'avvio, e esce nello stesso modo ogni volta che lo riavvii. Riavviarlo più velocemente non aiuta. Qualcuno deve leggere il suo output e correggere la causa.

756* **Contatto perso**: un runner che non riesce a raggiungere Anthropic per un tempo superiore al suo [lease](/docs/it/self-hosted-environments#session-lifecycle), ad esempio mentre il suo host è in sospensione, può essere rimosso dall'ambiente. Quando un runner rimosso si riconnette, esce. Il suo log può mostrare una riga `[runner:fatal]` che contiene `runner record gone server-side` oppure, dopo un'interruzione più lunga, [`poll auth failed`](/docs/it/self-hosted-environments-quickstart#set-up-an-environment-and-runner). Il runner non si registra di nuovo da solo, quindi riavvialo.

640 757 

641Configurare il supervisore per riavviare il runner ogni volta che esce, per attendere più a lungo tra i riavvii quando il runner continua a uscire subito dopo l'avvio, e per avvisare qualcuno quando ciò continua a accadere.758Configurare il supervisore per riavviare il runner ogni volta che esce, per attendere più a lungo tra i riavvii quando il runner continua a uscire subito dopo l'avvio, e per avvisare qualcuno quando ciò continua a accadere.

642 759 

Details

195 195 

196I wrapper ricevono il percorso assoluto al binario del runner stesso in `CLAUDE_RUNNER_CLAUDE_BIN`; utilizza quel percorso piuttosto che un `claude` risolto da PATH in modo che la decodifica venga eseguita sullo stesso binario che il runner stesso utilizza.196I wrapper ricevono il percorso assoluto al binario del runner stesso in `CLAUDE_RUNNER_CLAUDE_BIN`; utilizza quel percorso piuttosto che un `claude` risolto da PATH in modo che la decodifica venga eseguita sullo stesso binario che il runner stesso utilizza.

197 197 

198Utilizza `jq -re` piuttosto che `jq -r` in modo che un claim mancante causi un'uscita diversa da zero. Con solo `-r`, un claim mancante stampa la stringa letterale `null` ed esce con zero, il che passa silenziosamente un valore errato a valle. Passa `--no-verify` a `decode-token` solo per l'ispezione offline dove l'endpoint JWKS è irraggiungibile.198Utilizza `jq -re` piuttosto che `jq -r` in modo che un claim mancante causi un'uscita diversa da zero. Con solo `-r`, un claim mancante stampa la stringa letterale `null` ed esce con zero, il che passa silenziosamente un valore errato a valle.

199 

200Se `decode-token` non riesce a recuperare le chiavi dall'endpoint JWKS o non riesce a verificare il token, stampa il motivo su stderr, non stampa alcun claim ed esce con codice 1. Passa `--no-verify` a `decode-token` solo per l'ispezione offline dove l'endpoint JWKS è irraggiungibile.

199 201 

200<h2 id="claims-reference">202<h2 id="claims-reference">

201 Riferimento dei claim203 Riferimento dei claim

Details

34L'host del runner ha bisogno di:34L'host del runner ha bisogno di:

35 35 

36* Un host o container Linux o macOS con HTTPS in uscita verso `api.anthropic.com`, verso `claude.ai` e gli host di download a cui reindirizza per il passaggio di installazione sottostante, e verso il tuo host git per il clone; la [tabella dei requisiti di rete](/docs/it/self-hosted-environments-deploy#network-requirements) ha l'elenco completo. Windows non è supportato come host runner; esegui il runner in un container Linux invece. Le workstation degli sviluppatori non sono interessate, poiché le sessioni iniziano da claude.ai in un browser.36* Un host o container Linux o macOS con HTTPS in uscita verso `api.anthropic.com`, verso `claude.ai` e gli host di download a cui reindirizza per il passaggio di installazione sottostante, e verso il tuo host git per il clone; la [tabella dei requisiti di rete](/docs/it/self-hosted-environments-deploy#network-requirements) ha l'elenco completo. Windows non è supportato come host runner; esegui il runner in un container Linux invece. Le workstation degli sviluppatori non sono interessate, poiché le sessioni iniziano da claude.ai in un browser.

37* Un repository per la sessione di test: uno pubblico, oppure uno che questo host può già clonare tramite il suo URL HTTPS senza che vengano richieste credenziali.

37* Un orologio sincronizzato all'ora reale, ad esempio con NTP. L'autenticazione fallisce quando l'orologio è più di cinque minuti indietro; vedi [Troubleshooting](/docs/it/self-hosted-environments-deploy#troubleshooting).38* Un orologio sincronizzato all'ora reale, ad esempio con NTP. L'autenticazione fallisce quando l'orologio è più di cinque minuti indietro; vedi [Troubleshooting](/docs/it/self-hosted-environments-deploy#troubleshooting).

38 39 

39<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


57 Configura un ambiente e un runner58 Configura un ambiente e un runner

58</h2>59</h2>

59 60 

60Claude Code include una configurazione guidata: una sessione Claude Code interattiva che ti guida attraverso la creazione dell'ambiente nell'interfaccia di amministrazione, avvia un runner locale con il file secret che salvi, conferma che il runner si registra, e scrive un foglio di aiuto in `./runner-setup/CHEAT-SHEET.md`. Eseguilo su una macchina dove hai effettuato l'accesso con `claude auth login` usando un account che detiene un ruolo Owner; non è disponibile con chiavi API o provider di modelli di terze parti. Su host dove una sessione interattiva non è possibile, usa i passaggi manuali sottostanti invece. Conferma che il [controllo della versione](#software-on-the-runner-host) è passato per primo: sulle versioni precedenti a 2.1.224, questo comando avvia una sessione Claude ordinaria con le parole come prompt invece della configurazione guidata. Per avviare la configurazione guidata, esegui il subcommand setup e segui i prompt:61Usa la [configurazione guidata](#run-the-guided-setup) oppure i [passaggi manuali](#set-up-manually). La configurazione guidata è un singolo comando che avvia una sessione Claude Code interattiva e ti guida attraverso il resto. Usa invece i passaggi manuali su un host dove una sessione interattiva non è possibile. Usali anche quando qualcuno che detiene il ruolo Owner ha creato l'ambiente e ti ha consegnato il suo secret, poiché la configurazione guidata richiede un accesso come Owner.

62 

63<h3 id="run-the-guided-setup">

64 Esegui la configurazione guidata

65</h3>

66 

67La configurazione guidata ti guida attraverso la creazione dell'ambiente nell'interfaccia di amministrazione, avvia un runner locale con il file secret che salvi, conferma che il runner si registra e scrive un foglio di aiuto in `./runner-setup/CHEAT-SHEET.md`. Prima di eseguirla, verifica l'accesso e la versione:

68 

69* **Accesso**: eseguila su una macchina dove hai effettuato l'accesso con `claude auth login` usando un account che detiene un ruolo Owner. Con solo una chiave API o un provider di modelli di terze parti, la sessione si avvia ma i suoi controlli sull'organizzazione falliscono.

70* **Versione**: conferma che il [controllo della versione](#software-on-the-runner-host) è passato. Sulle versioni precedenti a 2.1.224, il comando setup avvia una sessione Claude con le parole come prompt invece della configurazione guidata.

71 

72Per avviare la configurazione guidata, esegui il subcommand setup nella tua shell e segui le istruzioni:

61 73 

62```bash theme={null}74```bash theme={null}

63claude self-hosted-runner setup75claude self-hosted-runner setup

64```76```

65 77 

66Per configurare manualmente invece:78La configurazione non avvia da sola una sessione di test: ti dice di avviarne una su claude.ai/code. L'ultimo passaggio della configurazione arresta il runner che ha avviato. Se esci dalla configurazione prima di quel passaggio, il runner continua a essere in esecuzione. Per proseguire dopo l'ultimo passaggio, avvia di nuovo il runner nella tua shell con il comando presente in `./runner-setup/CHEAT-SHEET.md`, quindi [indirizza una sessione all'ambiente](#route-a-session).

79 

80<h3 id="set-up-manually">

81 Configura manualmente

82</h3>

83 

84Crea l'ambiente su claude.ai, avvia il runner da un terminale sull'host, quindi torna su claude.ai per confermare che il runner appare e indirizzare una sessione verso di esso. Se qualcuno che detiene il ruolo Owner ha già creato l'ambiente e ti ha consegnato il suo secret, inizia dal passaggio 2.

67 85 

68<Steps>86<Steps>

69 <Step title="Crea un ambiente">87 <Step title="Crea un ambiente">


73 </Step>91 </Step>

74 92 

75 <Step title="Avvia un runner">93 <Step title="Avvia un runner">

76 Crea la directory del secret. Questo passaggio e il successivo richiedono root per il percorso `/etc/claude`; qualsiasi percorso che il processo runner può leggere funziona, quindi regola entrambi i comandi e il valore `--environment-secret-file` insieme se ne usi uno diverso.94 Crea la directory del secret. Questo comando e il successivo usano `/etc/claude`, che richiede root, e il file secret che creano è leggibile solo dall'utente che li esegue. Se il runner verrà eseguito come un altro utente, esce con `error: Failed to read environment secret file <path> (EACCES: permission denied, open '<path>')`. In tal caso, esegui entrambi i comandi come utente del runner con una directory in cui quell'utente può scrivere al posto di `/etc/claude`, e passa lo stesso percorso a `--environment-secret-file`. Qualsiasi percorso che il processo runner può leggere funziona.

77 95 

78 ```bash theme={null}96 ```bash theme={null}

79 mkdir -p /etc/claude97 mkdir -p /etc/claude


89 107 

90 Se il runner non può creare o scrivere nel percorso, esce all'avvio con un errore che nomina la directory invece di registrarsi. Vedi [Troubleshooting](/docs/it/self-hosted-environments-deploy#troubleshooting).108 Se il runner non può creare o scrivere nel percorso, esce all'avvio con un errore che nomina la directory invece di registrarsi. Vedi [Troubleshooting](/docs/it/self-hosted-environments-deploy#troubleshooting).

91 109 

92 Quindi avvia il runner con `--environment-secret-file` e `--base-dir`. Il runner si registra con il tuo ambiente e inizia il polling per il lavoro. Se il runner esce, riavvialo manualmente. Le distribuzioni di produzione eseguono il runner sotto un orchestrator che riavvia i runner usciti, normalmente con un filesystem fresco per ogni riavvio; [Riutilizza un checkout pre-riscaldato](/docs/it/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) copre la configurazione del disco persistente supportata.110 Quindi avvia il runner con `--environment-secret-file` e `--base-dir`:

93 111 

94 ```bash theme={null}112 ```bash theme={null}

95 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

96 ```114 ```

115 

116 Il runner registra `Registered: runner_id=<runner-id>` una volta che si è registrato con il tuo ambiente, quindi inizia il polling per il lavoro. Se il runner esce in seguito, riavvialo manualmente. Vedi [Se il runner esce](#if-the-runner-exits) per sapere quando succede.

97 </Step>117 </Step>

98 118 

99 <Step title="Verifica che il runner appaia">119 <Step title="Verifica che il runner appaia">

100 Ritorna alla [pagina **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Lo stato del tuo ambiente cambia da **No runners deployed** a **Healthy** entro pochi secondi dall'avvio del runner; apri l'ambiente e seleziona **Activity** per vedere il runner stesso.120 Ritorna alla [pagina **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Lo stato del tuo ambiente cambia da **No runners deployed** a **Healthy** entro pochi secondi dall'avvio del runner; apri l'ambiente e seleziona **Activity** per vedere il runner stesso. Se non hai accesso alla pagina di amministrazione, la riga `Registered: runner_id=<runner-id>` nel log del runner del passaggio precedente ti fornisce lo stesso segnale.

101 </Step>121 </Step>

102 122 

103 <Step title="Indirizza una sessione all'ambiente">123 <Step title="Indirizza una sessione all'ambiente">

104 Avvia una sessione su claude.ai/code e seleziona il tuo ambiente dal selettore di ambiente, dove gli ambienti self-hosted appaiono insieme a quelli ospitati da Anthropic. Il runner clona con qualsiasi credenziale git che l'host ha già, quindi scegli un repository che questo host può già clonare, o uno pubblico; le opzioni di credenziale per i repository privati in produzione sono su [Configura git](/docs/it/self-hosted-environments-deploy#configure-git). Il prossimo runner disponibile raccoglie la sessione in coda e registra `Picked up session <session-id>` insieme al suo conteggio attivo e alla capacità, in modo che tu possa confermare dall'output del runner stesso quale host ha preso la sessione. Guarda la sessione lavorare e leggi le risposte di Claude su [claude.ai/code](https://claude.ai/code). Se la sessione rimane in coda invece, vedi [Troubleshooting](/docs/it/self-hosted-environments-deploy#troubleshooting).124 <span id="route-a-session" />Avvia una sessione su claude.ai/code e seleziona il tuo ambiente dal selettore di ambiente, dove gli ambienti self-hosted appaiono insieme a quelli ospitati da Anthropic. Come repository, scegli quello indicato nei [prerequisiti](#host-and-network): un repository pubblico, o uno che questo host può già clonare. Il runner clona con qualsiasi credenziale git che l'host ha già.

125 

126 Il prossimo runner disponibile raccoglie la sessione in coda e registra `Picked up session <session-id>` insieme al suo conteggio attivo e alla capacità, in modo che tu possa confermare dall'output del runner stesso quale host ha preso la sessione. Guarda la sessione lavorare e leggi le risposte di Claude su [claude.ai/code](https://claude.ai/code).

127 

128 Se la sessione non inizia a lavorare, individua il caso che corrisponde a ciò che vedi:

129 

130 * **La sessione rimane in coda**: vedi [Risoluzione dei problemi](/docs/it/self-hosted-environments-deploy#troubleshooting).

131 * **La sessione non si avvia a causa di un errore git**: l'errore appare nella sessione e nel log del runner. Se include il messaggio di git `could not read Username for` seguito dall'URL del tuo host git, il runner non aveva credenziali HTTPS per quell'host. Vedi [Configura git](/docs/it/self-hosted-environments-deploy#configure-git), che copre anche le opzioni di credenziale per i repository privati in produzione.

105 </Step>132 </Step>

106</Steps>133</Steps>

107 134 

108Il runner esce per progettazione una volta che le sue sessioni attive finiscono; vedi [Runner lifecycle](/docs/it/self-hosted-environments#runner-lifecycle). Per la produzione, distribuiscilo sotto un orchestrator che lo riavvia all'uscita e attende più a lungo tra i riavvii quando il runner continua a uscire subito dopo l'avvio. Vedi [Distribuisci in produzione](/docs/it/self-hosted-environments-deploy) e [Quando il runner esce](/docs/it/self-hosted-environments-deploy#when-the-runner-exits).135<h3 id="if-the-runner-exits">

136 Se il runner esce

137</h3>

138 

139Se il runner esce durante questa guida rapida, avvialo di nuovo con lo stesso comando. Il runner può uscire da solo:

140 

141* **Sessioni terminate**: il log mostra `[runner:exit] account workload drained — exiting`. Il runner esce per progettazione una volta che le sue sessioni attive finiscono. Vedi [Ciclo di vita del runner](/docs/it/self-hosted-environments#runner-lifecycle).

142* **Contatto perso**: il log mostra una riga `[runner:fatal]` con `runner record gone server-side` o con `poll auth failed`. Se il runner perde il contatto con Anthropic per un po' di tempo, ad esempio perché l'host va in sospensione, può uscire la prossima volta che raggiunge Anthropic.

143 

144Un turno terminato non chiude la tua sessione di test. Dopo il primo turno la sessione è ancora collegata e il runner è ancora attivo, quindi puoi [inviare alla sessione un messaggio di follow-up](#send-a-follow-up-message-to-a-running-session) senza prima riavviare il runner.

145 

146Per la produzione, distribuisci il runner sotto un orchestrator che lo riavvia all'uscita e attende più a lungo tra i riavvii quando il runner continua a uscire subito dopo l'avvio. Vedi [Distribuisci in produzione](/docs/it/self-hosted-environments-deploy) e [Quando il runner esce](/docs/it/self-hosted-environments-deploy#when-the-runner-exits).

109 147 

110<h2 id="send-a-follow-up-message-to-a-running-session">148<h2 id="send-a-follow-up-message-to-a-running-session">

111 Inviare un messaggio di follow-up a una sessione in esecuzione149 Inviare un messaggio di follow-up a una sessione in esecuzione

Details

52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Rilascia uno slot di sessione dopo N minuti di inattività una volta che un turno finisce o la sessione attende l'azione dell'utente. Una sessione che è ancora a metà turno, inclusa una che contiene un compito in background che non finisce mai o un'approvazione richiesta dall'interno di una chiamata di strumento in esecuzione, non conta come inattiva; abbina con `--kill-session-after-min` come backstop duro. Dopo che il compito in background di una sessione finisce, il runner considera la sessione occupata fino a quando il turno di follow-up che legge il risultato inizia, per al massimo la finestra [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Fino a quando il runner riceve un segnale di arresto o raggiunge il suo tempo di ritiro, un rilascio che lascia il runner senza sessioni attive avvia lo stesso percorso di uscita di un drenaggio normale, governato da `--drain-grace-sec`. Dopo un primo segnale che hai differito con [`--defer-shutdown-max-min`](/docs/it/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), il runner esce non appena un rilascio lo lascia senza sessioni. `0` disabilita. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Rilascia uno slot di sessione dopo N minuti di inattività una volta che un turno finisce o la sessione attende l'azione dell'utente. Una sessione che è ancora a metà turno, inclusa una che contiene un compito in background che non finisce mai o un'approvazione richiesta dall'interno di una chiamata di strumento in esecuzione, non conta come inattiva; abbina con `--kill-session-after-min` come backstop duro. Dopo che il compito in background di una sessione finisce, il runner considera la sessione occupata fino a quando il turno di follow-up che legge il risultato inizia, per al massimo la finestra [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Fino a quando il runner riceve un segnale di arresto o raggiunge il suo tempo di ritiro, un rilascio che lascia il runner senza sessioni attive avvia lo stesso percorso di uscita di un drenaggio normale, governato da `--drain-grace-sec`. Dopo un primo segnale che hai differito con [`--defer-shutdown-max-min`](/docs/it/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), il runner esce non appena un rilascio lo lascia senza sessioni. `0` disabilita. |

53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Rimuovi le directory per sessione di una sessione sotto `<base-dir>/_sessions/` quando la sessione termina su questo runner, indipendentemente dall'esito. [Reuse a pre-warmed checkout](/docs/it/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) descrive cosa contengono e chi può leggerli quando rimangono. La rimozione è best-effort: le directory per sessione rimangono in posizione quando il runner viene ucciso o raggiunge la scadenza di drenaggio prima che la pulizia venga eseguita. Con il flag attivo, il log di debug di una sessione fallita o interrotta non viene mantenuto su disco. Richiede Claude Code v2.1.268 o successivo. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Rimuovi le directory per sessione di una sessione sotto `<base-dir>/_sessions/` quando la sessione termina su questo runner, indipendentemente dall'esito. [Reuse a pre-warmed checkout](/docs/it/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) descrive cosa contengono e chi può leggerli quando rimangono. La rimozione è best-effort: le directory per sessione rimangono in posizione quando il runner viene ucciso o raggiunge la scadenza di drenaggio prima che la pulizia venga eseguita. Con il flag attivo, il log di debug di una sessione fallita o interrotta non viene mantenuto su disco. Richiede Claude Code v2.1.268 o successivo. |

54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Ritira il runner a un timestamp Unix assoluto in secondi, per l'infrastruttura che uccide il runner a un'ora nota; [Runner lifecycle](/docs/it/self-hosted-environments#runner-lifecycle) descrive la sequenza di rilascio e come dimensionare il margine. I valori prima del 2001 o dopo l'anno 5138 vengono rifiutati dal flag e ignorati dalla variabile d'ambiente. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Ritira il runner a un timestamp Unix assoluto in secondi, per l'infrastruttura che uccide il runner a un'ora nota; [Runner lifecycle](/docs/it/self-hosted-environments#runner-lifecycle) descrive la sequenza di rilascio e come dimensionare il margine. I valori prima del 2001 o dopo l'anno 5138 vengono rifiutati dal flag e ignorati dalla variabile d'ambiente. |

55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Quali degli elenchi di regole del classificatore della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) che il control plane invia con una sessione possono raggiungere quella sessione: `all`, `no-allow` o `none`. Vedi [Elenchi di regole della modalità auto](#auto-mode-rule-lists) per cosa applica ciascun valore. Un valore non valido arresta il runner all'avvio. Richiede Claude Code v2.1.295 o successivo. |

55| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Quanto tempo aspettare affinché il processo Claude esca correttamente dopo la fine di una sessione, prima di forzare l'uccisione. Aumenta il valore se gli hook `SessionEnd` del figlio hanno bisogno di più tempo. |56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Quanto tempo aspettare affinché il processo Claude esca correttamente dopo la fine di una sessione, prima di forzare l'uccisione. Aumenta il valore se gli hook `SessionEnd` del figlio hanno bisogno di più tempo. |

56| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Rilascia uno slot di sessione se il figlio non ha segnalato che si è inizializzato entro N minuti dalla generazione. Cancellato dal segnale di init del figlio sul [canale di attività](/docs/it/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), non dall'output ordinario, dopo di che `--release-idle-session-min` prende il sopravvento. `0` disabilita. |57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Rilascia uno slot di sessione se il figlio non ha segnalato che si è inizializzato entro N minuti dalla generazione. La clonazione avviene prima della generazione, quindi il tempo di clonazione non viene conteggiato. Cancellato dal segnale di init del figlio sul [canale di attività](/docs/it/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), non dall'output ordinario, dopo di che `--release-idle-session-min` prende il sopravvento. `0` disabilita. |

57| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Semina la fiducia persistente per i percorsi del repository di ogni sessione in modo che `permissions.allow` e `additionalDirectories` impegnati nel repo siano onorati. Imposta `false` per eliminare le concessioni di autorizzazione impegnate nel repo e configurare le regole di autorizzazione nella `settings.json` della configurazione dell'host; le impostazioni `sandbox.*` impegnate nel repository si applicano comunque in entrambi i casi, motivo per cui la [guardia repo-settings](/docs/it/self-hosted-environments-deploy#harden-your-deployment) le scansiona indipendentemente da questo flag. |58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Semina la fiducia persistente per i percorsi del repository di ogni sessione in modo che `permissions.allow` e `additionalDirectories` impegnati nel repo siano onorati. Imposta `false` per eliminare le concessioni di autorizzazione impegnate nel repo e configurare le regole di autorizzazione nella `settings.json` della configurazione dell'host; le impostazioni `sandbox.*` impegnate nel repository si applicano comunque in entrambi i casi, motivo per cui la [guardia repo-settings](/docs/it/self-hosted-environments-deploy#harden-your-deployment) le scansiona indipendentemente da questo flag. |

58| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clona tramite il [proxy git di Anthropic](/docs/it/self-hosted-environments-deploy#use-the-anthropic-git-proxy) invece dell'autenticazione git gestita dal cliente. Richiede `--capacity 1` e git 2.32 o più recente; il runner rifiuta di avviarsi altrimenti. Sostituisce i flag di riscrittura. |59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clona i repository su github.com tramite il [proxy git di Anthropic](/docs/it/self-hosted-environments-deploy#use-the-anthropic-git-proxy) invece dell'autenticazione git gestita dal cliente. Richiede `--capacity 1` e git 2.32 o più recente; il runner rifiuta di avviarsi altrimenti. Sostituisce i flag di riscrittura. |

59 60 

60La maggior parte dei flag di durata ha un massimo, scelto per mantenere ogni timeout entro il limite del timer a 32 bit del runtime di circa 24,85 giorni. I flag `--*-min` hanno un limite di 10080 minuti, 7 giorni; `--drain-grace-sec` a 604800 secondi, anche 7 giorni; e `--drain-wait-sec` a 86400 secondi, 24 ore. `--session-stop-grace-sec` e `--post-session-hook-timeout-sec` non hanno limiti. Superare un limite si comporta diversamente per superficie:61La maggior parte dei flag di durata ha un massimo, scelto per mantenere ogni timeout entro il limite del timer a 32 bit del runtime di circa 24,85 giorni. I flag `--*-min` hanno un limite di 10080 minuti, 7 giorni; `--drain-grace-sec` a 604800 secondi, anche 7 giorni; e `--drain-wait-sec` a 86400 secondi, 24 ore. `--session-stop-grace-sec` e `--post-session-hook-timeout-sec` non hanno limiti. Superare un limite si comporta diversamente per superficie:

61 62 

62* **Flag**: l'avvio fallisce con un errore.63* **Flag**: l'avvio fallisce con un errore.

63* **Variabile d'ambiente**: il runner fissa il valore al limite del timer piuttosto che rifiutarlo.64* **Variabile d'ambiente**: il runner fissa il valore al limite del timer piuttosto che rifiutarlo.

64 65 

66<h3 id="auto-mode-rule-lists">

67 Elenchi di regole della modalità auto

68</h3>

69 

70`--server-auto-mode-lists` ti permette di decidere quali regole del classificatore della [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) provenienti dall'esterno del runner raggiungono le sessioni sui tuoi runner. Il control plane di Anthropic può inviare elenchi di regole con una sessione e chiedere al runner di applicarli. Alcune voci possono essere regole scritte da un amministratore della tua organizzazione. Gli elenchi sono `environment`, `soft_deny` e `allow`:

71 

72* **`environment`**: una voce può far sì che il classificatore consenta di più così come di meno.

73* **`soft_deny`**: una voce blocca un'azione a meno che l'utente non l'abbia richiesta esplicitamente o non si applichi un'eccezione `allow`.

74* **`allow`**: le eccezioni alle voci `soft_deny`.

75 

76Il valore del flag sceglie quali elenchi applica il runner:

77 

78* **`no-allow`**: il valore predefinito. Applica `environment` e `soft_deny` e trattiene `allow`. Una voce `environment` può comunque far sì che il classificatore consenta di più, quindi il valore predefinito non esclude ogni allentamento.

79* **`all`**: applica tutti e tre gli elenchi.

80* **`none`**: non ne applica nessuno. Scegli `none` per escludere ogni allentamento proveniente da questi elenchi. Elimina anche le restrizioni di `soft_deny`.

81 

82Nessuna impostazione del runner fa sì che il control plane chieda al runner di applicare gli elenchi. Quando non lo chiede, le sessioni non ricevono alcun elenco, qualunque cosa tu imposti. Per vedere cosa è successo, avvia il runner con `--log-level debug`. Per ogni sessione il runner registra quindi una riga contenente `the server asked this runner to apply`, oppure una contenente `the server did not ask this runner to apply the auto mode lists it sends`.

83 

65<h2 id="orchestrator-cli-flags">84<h2 id="orchestrator-cli-flags">

66 Flag CLI dell'orchestrator85 Flag CLI dell'orchestrator

67</h2>86</h2>


72| :- | :- | :- |91| :- | :- | :- |

73| `--hook-concurrency <n>` | `4` | Numero massimo di hook `spawn-runner` in esecuzione in parallelo. Limita anche quante richieste di spawn vengono rivendicate per polling. |92| `--hook-concurrency <n>` | `4` | Numero massimo di hook `spawn-runner` in esecuzione in parallelo. Limita anche quante richieste di spawn vengono rivendicate per polling. |

74| `--hook-timeout <sec>` | `60` | Termina l'albero dei processi dell'hook dopo questo numero di secondi. Il timeout più la sua grazia di 5 secondi deve rimanere al di sotto di `--expected-spawn-seconds`; l'orchestrator lo applica all'avvio. |93| `--hook-timeout <sec>` | `60` | Termina l'albero dei processi dell'hook dopo questo numero di secondi. Il timeout più la sua grazia di 5 secondi deve rimanere al di sotto di `--expected-spawn-seconds`; l'orchestrator lo applica all'avvio. |

75| `--expected-spawn-seconds <sec>` | `120` | Tempo di avvio p99 previsto per i runner generati, nell'intervallo applicato dal server da 10 a 3600. Inviato ad ogni polling come il lease lato server; se nessun runner si registra prima che trascorra, la sessione viene ri-offerta con un ID ordine nuovo. Tutte le repliche devono condividere questo valore. |94| `--expected-spawn-seconds <sec>` | `120` | Tempo p99 previsto tra il momento in cui l'orchestrator riceve una richiesta di spawn e quello in cui il runner si registra, inclusa qualsiasi attesa di capacità sulla tua piattaforma. Il server applica un intervallo da 10 a 3600. Inviato ad ogni polling come lease lato server: se nessun runner si registra prima che trascorra, la sessione viene ri-offerta con un ID ordine nuovo. Tutte le repliche devono condividere questo valore. |

76| `--min-idle <n>` | `0` | Mantieni almeno N slot di sessione inattivi liberi generando proattivamente runner di standby. `0` disabilita il pre-riscaldamento. Abbina con il `--exit-if-unused-min` del runner in modo che i runner di standby in eccesso si riprendano. |95| `--min-idle <n>` | `0` | Mantieni almeno N slot di sessione inattivi liberi generando proattivamente runner di standby. `0` disabilita il pre-riscaldamento. Abbina con il `--exit-if-unused-min` del runner in modo che i runner di standby in eccesso si riprendano. |

77| `--debug-dir <path>` | unset | Scrivi il work order e lo stderr dell'hook di ogni richiesta di spawn su disco. Solo debug; non impostare mai in produzione. |96| `--debug-dir <path>` | unset | Scrivi il work order e lo stderr dell'hook di ogni richiesta di spawn su disco. Solo debug; non impostare mai in produzione. |

78 97 


108| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Limite massimo su quanto tempo il runner conta una sessione come occupata per il drenaggio `--drain-wait-sec` dopo che un turno finisce, mentre il processo della sessione segnala la fine del turno ad Anthropic. `0` o un valore inutilizzabile ricade al valore predefinito, quindi la tenuta non può essere disattivata. Richiede Claude Code v2.1.275 o successivo. |127| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Limite massimo su quanto tempo il runner conta una sessione come occupata per il drenaggio `--drain-wait-sec` dopo che un turno finisce, mentre il processo della sessione segnala la fine del turno ad Anthropic. `0` o un valore inutilizzabile ricade al valore predefinito, quindi la tenuta non può essere disattivata. Richiede Claude Code v2.1.275 o successivo. |

109| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Quanto tempo il runner attende che il sistema operativo consegni `SIGKILL` a un figlio bloccato in I/O non interrompibile prima di uscire lui stesso. Limitato inferiormente a `--post-session-hook-timeout-sec` più 15 secondi, e 30 in più quando `--push-outcome-on-release` è impostato, quindi il minimo effettivo è 75 secondi ai valori predefiniti. |128| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Quanto tempo il runner attende che il sistema operativo consegni `SIGKILL` a un figlio bloccato in I/O non interrompibile prima di uscire lui stesso. Limitato inferiormente a `--post-session-hook-timeout-sec` più 15 secondi, e 30 in più quando `--push-outcome-on-release` è impostato, quindi il minimo effettivo è 75 secondi ai valori predefiniti. |

110| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profondità di fetch git per cloni freschi. Imposta un numero intero positivo, o `full` o `0` per un fetch completo. I repository già presenti nello spazio di lavoro mantengono la loro profondità esistente. |129| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profondità di fetch git per cloni freschi. Imposta un numero intero positivo, o `full` o `0` per un fetch completo. I repository già presenti nello spazio di lavoro mantengono la loro profondità esistente. |

130| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | Quanto tempo in millisecondi, per tentativo, un fetch git può attendere i primi dati mentre i numeri di avanzamento del server git continuano a crescere, come quando il server prepara il pack per un repository di grandi dimensioni. `0` o `off` disattiva l'attesa: un fetch di questo tipo viene quindi interrotto dopo due minuti senza dati. Qualsiasi altro numero intero viene limitato a un valore compreso tra `120000` e `1800000`, da 2 a 30 minuti. Richiede Claude Code v2.1.295 o successivo. |

111| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | unset | Quando `1`, salta il controllo della presenza `.git` dopo l'esecuzione di un hook `checkout`. Imposta questo quando il tuo hook materializza una fonte non-git. |131| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | unset | Quando `1`, salta il controllo della presenza `.git` dopo l'esecuzione di un hook `checkout`. Imposta questo quando il tuo hook materializza una fonte non-git. |

112| `FORCE_AUTOUPDATE_PLUGINS` | unset | Quando `1`, consenti ai marketplace dei plugin di auto-aggiornare anche se il binario è bloccato |132| `FORCE_AUTOUPDATE_PLUGINS` | unset | Quando `1`, consenti ai marketplace dei plugin di auto-aggiornare anche se il binario è bloccato |

113| `CLAUDE_CODE_DISABLE_ARTIFACT` | unset | Quando `1`, disabilita lo strumento Artifact nelle sessioni indipendentemente dall'impostazione di amministrazione dell'organizzazione, e elimina il requisito di uscita `*.frame.claudeusercontent.com` |133| `CLAUDE_CODE_DISABLE_ARTIFACT` | unset | Quando `1`, disabilita lo strumento Artifact nelle sessioni indipendentemente dall'impostazione di amministrazione dell'organizzazione, e elimina il requisito di uscita `*.frame.claudeusercontent.com` |


178| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Errori cumulativi di PollSpawnHints per tipo: `transport`, `timeout`, `5xx`, `429` o `4xx`. Tutte e cinque le serie sono presenti dall'avvio del processo; avviso su `rate(...[5m]) > 0`. |198| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Errori cumulativi di PollSpawnHints per tipo: `transport`, `timeout`, `5xx`, `429` o `4xx`. Tutte e cinque le serie sono presenti dall'avvio del processo; avviso su `rate(...[5m]) > 0`. |

179| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Richieste di spawn rivendicabili in questo momento |199| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Richieste di spawn rivendicabili in questo momento |

180| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Richieste di spawn in backoff di retry dopo un errore di hook riprova |200| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Richieste di spawn in backoff di retry dopo un errore di hook riprova |

181| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Richieste di spawn bloccate fino a quando un Owner non le riprova dalla scheda **Activity** dell'ambiente; avviso se superiore a zero |201| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Sessioni a cui è impedito lo spawn. Ognuna resta bloccata finché un utente non le invia un nuovo messaggio o un Owner non la riprova dalla scheda **Activity** dell'ambiente. Il conteggio può restare sopra zero anche dopo che hai risolto la causa. Avviso se superiore a zero. |

182| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Sessioni totali in attesa di un runner per questo ambiente. Aggregato a livello di ambiente, identico su ogni istanza dell'orchestrator: usa `MAX` piuttosto che `SUM` tra le istanze. |202| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Sessioni totali in attesa di un runner per questo ambiente. Aggregato a livello di ambiente, identico su ogni istanza dell'orchestrator: usa `MAX` piuttosto che `SUM` tra le istanze. |

183| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Sessioni attualmente assegnate a un runner vivo in questo ambiente. Aggregato a livello di ambiente, identico su ogni istanza dell'orchestrator: usa `MAX` piuttosto che `SUM` tra le istanze. |203| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Sessioni attualmente assegnate a un runner vivo in questo ambiente. Aggregato a livello di ambiente, identico su ogni istanza dell'orchestrator: usa `MAX` piuttosto che `SUM` tra le istanze. |

184| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Risultati cumulativi dell'hook `spawn-runner`: `ok`, `retryable`, `non_retryable`. Conta le invocazioni dell'hook dell'orchestrator, non i figli della sessione che i runner generano: non comparabili a `sessions_started_total`, poiché la capacità superiore a uno, i pool caldi e i runner generati di nuovo per la stessa sessione divergono i due. |204| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Risultati cumulativi dell'hook `spawn-runner`: `ok`, `retryable`, `non_retryable`. Conta le invocazioni dell'hook dell'orchestrator, non i figli della sessione che i runner generano: non comparabili a `sessions_started_total`, poiché la capacità superiore a uno, i pool caldi e i runner generati di nuovo per la stessa sessione divergono i due. |


285 for: 1m305 for: 1m

286 labels: {severity: critical}306 labels: {severity: critical}

287 annotations:307 annotations:

288 summary: "{{ $value }} sessions circuit-broken — spawn-runner hook is repeatedly non-retryable; fix infra then retry from the Activity tab"308 summary: "Sessions blocked from spawning: {{ $value }}. Read each one's error in the Activity tab, fix the cause, then select Retry"

289 - alert: ClaudeOrchestratorPollErrors309 - alert: ClaudeOrchestratorPollErrors

290 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0310 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0

291 for: 2m311 for: 2m


320 340 

321Prima della v2.1.260, il runner terminava ogni sessione che raggiungeva il suo limite `--kill-session-after-min` e la contava in `sessions_interrupted_total`.341Prima della v2.1.260, il runner terminava ogni sessione che raggiungeva il suo limite `--kill-session-after-min` e la contava in `sessions_interrupted_total`.

322 342 

323Il `CLAUDE_RUNNER_EXIT_REASON` dell'hook [`post-session`](/docs/it/self-hosted-environments-configuration#post-session) classifica gli handoff puliti diversamente. L'hook segnala un rilascio, un timeout di avvio e un deassign del server come `interrupted`, perché il runner ha fermato il figlio. Questi contatori registrano gli stessi eventi come `completed`, perché lo slot è stato restituito correttamente.343Il `CLAUDE_RUNNER_EXIT_REASON` dell'hook [`post-session`](/docs/it/self-hosted-environments-configuration#post-session) classifica gli handoff puliti diversamente. L'hook li segnala come `interrupted`, perché il runner ha fermato il figlio: un rilascio, un timeout di avvio, un deassign del server e un'archiviazione o eliminazione che il polling ha notato per primo. Questi contatori registrano gli stessi eventi come `completed`, perché lo slot è stato restituito correttamente.

324 344 

325Se riconcili le ricevute dell'hook direttamente contro `sessions_completed_total`, sottostimi i completamenti. Usa l'hook per le garanzie per sessione e i contatori per i tassi aggregati.345Se riconcili le ricevute dell'hook direttamente contro `sessions_completed_total`, sottostimi i completamenti. Usa l'hook per le garanzie per sessione e i contatori per i tassi aggregati.

326 346 

Details

87 87 

88I flag di dispatch `--environment` e `--ref` richiedono Claude Code v2.1.224 o successivo sulla macchina che esegue lo script, lo stesso limite minimo del runner stesso. Con l'hook in posizione e un runner avviato su questo host, lo script di test:88I flag di dispatch `--environment` e `--ref` richiedono Claude Code v2.1.224 o successivo sulla macchina che esegue lo script, lo stesso limite minimo del runner stesso. Con l'hook in posizione e un runner avviato su questo host, lo script di test:

89 89 

901. Crea una sessione sull'ambiente di test con `claude -p "<prompt>" --environment <environment-id> --output-format json`, eseguito da un checkout git in modo che la CLI possa rilevare automaticamente il repository dal remote `origin`. L'opzionale `--ref <branch>` basa il checkout della sessione su un ref denominato invece di HEAD locale. Il comando crea la sessione, stampa una riga di JSON contenente `session_id` e esce senza attendere la risposta di Claude.901. Crea una sessione sull'ambiente di test con `claude -p "<prompt>" --environment <environment-id> --output-format json`. Esegui il comando da un checkout git in modo che la CLI possa rilevare automaticamente il repository dal remote `origin`. L'opzionale `--ref <branch>` basa il checkout della sessione su un ref denominato invece di HEAD locale. Il comando esce senza attendere la risposta di Claude. Ciò che stampa indica al tuo script l'esito:

91 * **Sessione creata**: una riga di JSON come `{"ok":true,"session_id":"session_...","title":"...","url":"...","pool_id":"..."}`

92 * **Creazione della sessione non riuscita**: la riga `{"ok":false,"error":"..."}`, e il comando esce con stato 1

93 * **Alcuni errori precedenti**, come le sessioni cloud non disponibili per la tua organizzazione o un prompt mancante: l'errore su stderr senza alcuna riga JSON, e il comando esce con stato 1

912. Attende che la risposta appaia in `$E2E_REPLY_DIR/<session_id>.txt`, scritta dall'hook Stop sul runner una volta completato il turno.942. Attende che la risposta appaia in `$E2E_REPLY_DIR/<session_id>.txt`, scritta dall'hook Stop sul runner una volta completato il turno.

923. Invia un follow-up con `claude -p "<message>" --cloud <session_id> --output-format json` (vedere [Inviare un messaggio di follow-up a una sessione in esecuzione](/docs/it/claude-code-on-the-web#send-follow-ups-from-the-cli)), che pubblica un evento utente nella sessione esistente e esce.953. Invia un follow-up con `claude -p "<message>" --cloud <session_id> --output-format json` (vedere [Inviare un messaggio di follow-up a una sessione in esecuzione](/docs/it/claude-code-on-the-web#send-follow-ups-from-the-cli)), che pubblica un evento utente nella sessione esistente e esce.

934. Attende la risposta del follow-up nello stesso modo del passo 2.964. Attende la risposta del follow-up nello stesso modo del passo 2.


104 Script di esempio107 Script di esempio

105</h2>108</h2>

106 109 

107Lo script seguente esegue il ciclo completo contro `$CLAUDE_TEST_ENVIRONMENT_ID`, l'ID `ccpool_...` del tuo ambiente di test, mostrato nella finestra di dialogo dei dettagli dell'ambiente nella pagina di amministrazione o restituito dalla [chiamata create-environment](#create-a-dedicated-test-environment), e asserisce su una frase sentinella in ogni risposta. Eseguilo da un checkout git del repository su cui desideri che la sessione lavori, dopo aver avviato un runner su questo host con l'hook di cattura installato e `E2E_REPLY_DIR` esportato. Per prima cosa, accedi con un account claude.ai sulla macchina che esegue lo script, come descritto in [Autenticarsi dalla CI](#authenticate-from-ci). Senza tale accesso, il primo invio non riesce con un errore come `Unable to get organization UUID for cloud session creation`.110Lo script di esempio viene eseguito sulla stessa macchina del test runner. Prima di eseguirlo, prepara quella macchina:

111 

112* **Checkout del repository**: esegui lo script da un checkout git del repository su cui desideri che la sessione lavori.

113* **Runner**: avvia un runner su questo host con l'hook di cattura installato e `E2E_REPLY_DIR` esportato.

114* **Accesso**: accedi con un account claude.ai sulla macchina che esegue lo script, come descritto in [Autenticarsi dalla CI](#authenticate-from-ci).

115* **ID dell'ambiente**: imposta `CLAUDE_TEST_ENVIRONMENT_ID` sull'ID `ccpool_...` del tuo ambiente di test, mostrato nella finestra di dialogo dei dettagli dell'ambiente nella pagina di amministrazione o restituito dalla [chiamata create-environment](#create-a-dedicated-test-environment).

116 

117Lo script seguente esegue il ciclo completo contro `$CLAUDE_TEST_ENVIRONMENT_ID` e asserisce su una frase sentinella in ogni risposta.

108 118 

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

110#!/usr/bin/env bash120#!/usr/bin/env bash


152TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"162TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"

153EXPECT1="ok: custom tools are reachable"163EXPECT1="ok: custom tools are reachable"

154create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \164create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \

155 --ref "$TEST_REPO_REF" --output-format json)165 --ref "$TEST_REPO_REF" --output-format json < /dev/null)

156echo "create: $create_json"166echo "create: $create_json"

157SESSION_ID=$(jq -er '.session_id' <<<"$create_json")167SESSION_ID=$(jq -er '.session_id' <<<"$create_json")

158 168 


163# 3. Post a follow-up via the CLI.173# 3. Post a follow-up via the CLI.

164TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"174TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"

165EXPECT2="ok: follow-up delivered"175EXPECT2="ok: follow-up delivered"

166followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json)176followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json < /dev/null)

167echo "followup: $followup_json"177echo "followup: $followup_json"

168jq -e '.ok == true' <<<"$followup_json" >/dev/null178jq -e '.ok == true' <<<"$followup_json" >/dev/null

169 179 

sessions.md +52 −50

Details

6 6 

7> Assegnare nomi, riprendere, creare rami e passare tra conversazioni di Claude Code. Copre `--continue`, `--resume`, `--from-pr`, il selezionatore `/resume`, la denominazione delle sessioni, l'esportazione dei trascritti e dove vengono archiviati i trascritti.7> Assegnare nomi, riprendere, creare rami e passare tra conversazioni di Claude Code. Copre `--continue`, `--resume`, `--from-pr`, il selezionatore `/resume`, la denominazione delle sessioni, l'esportazione dei trascritti e dove vengono archiviati i trascritti.

8 8 

9Una sessione è una conversazione salvata legata a una directory di progetto. Claude Code la archivia localmente mentre lavori, così puoi riprendere da dove hai lasciato, creare un ramo per provare un approccio diverso, o passare tra attività.9Una [sessione](/docs/it/glossary#session) è una conversazione salvata legata a una directory di progetto. Claude Code la archivia localmente mentre lavori, così puoi riprendere da dove hai lasciato, creare un branch per provare un approccio diverso, o passare tra attività.

10 10 

11L'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions), [claude.ai/code](/docs/it/claude-code-on-the-web) e l'[estensione VS Code](/docs/it/vs-code#resume-past-conversations) mantengono ciascuno la propria cronologia delle sessioni, e l'app desktop può anche [riprendere una sessione CLI](/docs/it/desktop#coming-from-the-cli). Questa pagina copre la CLI.11L'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions), [claude.ai/code](/docs/it/claude-code-on-the-web) e l'[estensione VS Code](/docs/it/vs-code#resume-past-conversations) mantengono ciascuno la propria cronologia delle sessioni, e l'app desktop può anche [riprendere una sessione CLI](/docs/it/desktop#coming-from-the-cli). Questa pagina copre la CLI.

12 12 


18 18 

19| Comando | Cosa fa |19| Comando | Cosa fa |

20| :- | :- |20| :- | :- |

21| `claude --continue` | Riprende la conversazione più recente nella directory corrente |21| `claude --continue` | Riapre la sessione più recente nella directory corrente |

22| `claude --resume` | Apre il [selezionatore di sessioni](#use-the-session-picker) |22| `claude --resume` | Apre il [selezionatore di sessioni](#use-the-session-picker) |

23| `claude --resume <name>` | Riprende direttamente la sessione denominata |23| `claude --resume <name>` | Riprende direttamente la sessione denominata |

24| `claude --resume <transcript-path>` | Riprende la conversazione archiviata nel [file di trascrizione](#where-transcripts-are-stored) `.jsonl` a quel percorso assoluto |24| `claude --resume <transcript-path>` | Riprende la sessione archiviata nel [file di trascrizione](#where-transcripts-are-stored) `.jsonl` a quel percorso assoluto |

25| `claude --from-pr <number>` | Apre il selezionatore di sessioni filtrato alle sessioni collegate a quella pull request |25| `claude --from-pr <number>` | Apre il selezionatore di sessioni filtrato alle sessioni collegate a quella pull request |

26| `/resume` | Passa a una conversazione diversa da una sessione attiva |26| `/resume` | Passa a una sessione diversa dall'interno di una sessione attiva |

27 

28Claude Code lascia fuori dal selezionatore di sessioni e da `claude --continue` le sessioni create con [`claude -p`](/docs/it/headless) o l'[Agent SDK](/docs/it/agent-sdk/overview). Puoi comunque riprenderne una passando il suo ID di sessione a `claude --resume <session-id>`. Con `claude --continue`, Claude Code salta anche le [sessioni il cui primo prompt era `/loop`](#where-the-session-picker-looks). Quando esegui [`claude -p --continue`](/docs/it/headless#continue-conversations), Claude Code include le sessioni `-p`, SDK e `/loop`.

29 

30Puoi eseguire `claude --resume <session-id>` da qualsiasi directory, quindi puoi riprendere una sessione che è stata avviata altrove o spostata con [`/cd`](/docs/it/commands). Claude Code cerca l'ID in questo ordine:

31 

321. La directory del progetto corrente e i suoi git worktree

332. Ogni altro progetto su questa macchina

34 

35La ricerca tra progetti risolve l'ID solo quando esattamente un altro progetto contiene una trascrizione con messaggi per esso, quindi un duplicato copiato manualmente fa sì che Claude Code segnali che non è stato trovato piuttosto che riprendere una copia arbitraria. Se nessuna sessione archiviata corrisponde all'ID, Claude Code segnala `No conversation found with session ID: <session-id>`.

36 

37Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi git worktree, quindi dovevi riprendere dalla directory in cui la sessione aveva lavorato per ultimo.

38 

39`claude --continue` apre una [sessione in background](/docs/it/agent-view) che è terminata, ma non una ancora in esecuzione; l'apertura di sessioni in background terminate richiede Claude Code v2.1.257 o successiva. Se la tua conversazione più recente è una che hai [spostato in background](/docs/it/agent-view#send-the-session-to-the-background) ed è ancora in esecuzione lì, Claude Code esce con `Your most recent conversation is running in the background` e l'ID di quella sessione. Collegati alla sessione da [`claude agents`](/docs/it/agent-view#attach-to-a-session), oppure esegui `claude --resume` per sceglierne un'altra.

40 27 

41<h3 id="resume-a-running-background-session">28<h3 id="resume-a-running-background-session">

42 Riprendere una sessione in background in esecuzione29 Riprendere una sessione in background in esecuzione


64 51 

65Quando Claude Code carica una conversazione dalla sua trascrizione, la sessione ripresa ripristina la conversazione insieme allo stato salvato in essa:52Quando Claude Code carica una conversazione dalla sua trascrizione, la sessione ripresa ripristina la conversazione insieme allo stato salvato in essa:

66 53 

67* Cronologia della conversazione: la cronologia completa, incluse le chiamate agli strumenti e i risultati. Uno strumento che era ancora in esecuzione quando il processo precedente è terminato, ad esempio in un arresto anomalo, non finisce o non viene eseguito di nuovo quando riprendi. Claude vede la chiamata contrassegnata come interrotta prima che il suo risultato fosse registrato e gli viene detto di verificare se ha avuto effetto prima di eseguirla di nuovo, a meno che [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars#variables) non sia impostato. Prima della v2.1.281, Claude Code eliminava la chiamata interrotta dalla conversazione o la mostrava a Claude come una che hai interrotto.54* Cronologia della conversazione: la cronologia completa, incluse le chiamate agli strumenti e i risultati. Uno strumento che era ancora in esecuzione quando il processo precedente è terminato, ad esempio in un arresto anomalo, non finisce o non viene eseguito di nuovo quando riprendi. Claude vede la chiamata contrassegnata come interrotta prima che il suo risultato fosse registrato e gli viene detto di verificare se ha avuto effetto prima di eseguirla di nuovo, a meno che [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars#variables) non sia impostato.

68* Modello: la sessione continua sul modello che stava utilizzando, tranne nei casi descritti in [Impostare il modello](/docs/it/model-config#setting-your-model).55* Modello: la sessione continua sul modello che stava utilizzando, tranne nei casi descritti in [Impostare il modello](/docs/it/model-config#setting-your-model).

69* Agente: una sessione avviata con [`--agent`](/docs/it/sub-agents#invoke-subagents-explicitly) o l'impostazione `agent` continua come quell'agente, mantenendo le sue restrizioni degli strumenti e il modello. Passa `--agent` quando riprendi per sceglierne uno diverso; per il prompt di sistema in entrambi i casi, vedi [Flag del prompt di sistema nelle conversazioni riprese](/docs/it/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code cerca l'agente in due posti: la directory originale della sessione, a condizione che tu abbia [dato fiducia a quel workspace](/docs/it/permissions#project-allow-rules-and-workspace-trust), e poi la directory da cui riprendi, quindi un agente con ambito di progetto si carica ancora quando riprendi da un'altra directory. Se Claude Code non trova l'agente in nessuno dei due posti, la sessione riprende con gli strumenti predefiniti e mostra un [avviso che nomina l'agente](/docs/it/errors#session-agent-no-longer-available).56* Agente: una sessione avviata con [`--agent`](/docs/it/sub-agents#invoke-subagents-explicitly) o l'impostazione `agent` continua come quell'agente, mantenendo le sue restrizioni degli strumenti e il modello. Passa `--agent` quando riprendi per sceglierne uno diverso; per il prompt di sistema in entrambi i casi, vedi [Flag del prompt di sistema nelle conversazioni riprese](/docs/it/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code cerca l'agente in due posti: la directory originale della sessione, a condizione che tu abbia [dato fiducia a quel workspace](/docs/it/permissions#project-allow-rules-and-workspace-trust), e poi la directory da cui riprendi, quindi un agente con ambito di progetto si carica ancora quando riprendi da un'altra directory. Se Claude Code non trova l'agente in nessuno dei due posti, la sessione riprende con gli strumenti predefiniti e mostra un [avviso che nomina l'agente](/docs/it/errors#session-agent-no-longer-available).

70* Modalità di permesso: se riprendi da un terminale con `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`, Claude Code ripristina la modalità di permesso in cui era la sessione, tranne nei casi in [modalità di permesso alla ripresa](#permission-mode-on-resume), che copre anche il selezionatore di sessioni, `/resume` e la ripresa con `claude -p`. Passa `--permission-mode` o `--dangerously-skip-permissions` per sovrascrivere la modalità ripristinata.57* Modalità di permesso: se riprendi da un terminale con `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`, Claude Code ripristina la modalità di permesso in cui era la sessione, tranne nei casi in [modalità di permesso alla ripresa](#permission-mode-on-resume), che copre anche il selezionatore di sessioni, `/resume` e la ripresa con `claude -p`. Passa `--permission-mode` o `--dangerously-skip-permissions` per sovrascrivere la modalità ripristinata.


83* Terminale: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`. Claude Code ripristina la modalità di permesso in cui era la sessione, tranne nei casi nella tabella. Passa `--permission-mode` o `--dangerously-skip-permissions` per sovrascrivere la modalità ripristinata.70* Terminale: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`. Claude Code ripristina la modalità di permesso in cui era la sessione, tranne nei casi nella tabella. Passa `--permission-mode` o `--dangerously-skip-permissions` per sovrascrivere la modalità ripristinata.

84* Non interattivo: `claude -p --resume` o `claude -p --continue`. Claude Code avvia l'esecuzione nella modalità di permesso in cui si avvierebbe una nuova esecuzione `claude -p`, tranne che una sessione che è terminata in plan mode riprende in plan mode secondo le [condizioni di seguito](#resume-in-plan-mode-with-p).71* Non interattivo: `claude -p --resume` o `claude -p --continue`. Claude Code avvia l'esecuzione nella modalità di permesso in cui si avvierebbe una nuova esecuzione `claude -p`, tranne che una sessione che è terminata in plan mode riprende in plan mode secondo le [condizioni di seguito](#resume-in-plan-mode-with-p).

85* VS Code: il pannello di conversazione dell'estensione. La tabella copre solo una conversazione che è terminata in plan mode; per il resto, vedi [riprendere conversazioni passate](/docs/it/vs-code#resume-past-conversations).72* VS Code: il pannello di conversazione dell'estensione. La tabella copre solo una conversazione che è terminata in plan mode; per il resto, vedi [riprendere conversazioni passate](/docs/it/vs-code#resume-past-conversations).

86* Selezionatore di sessioni al lancio: una sessione che selezioni dal [selezionatore di sessioni](#use-the-session-picker), che tu l'abbia aperto con `claude --resume` da solo, `claude --from-pr` o un nome che corrisponde a più di una sessione. Claude Code avvia la sessione nella modalità di permesso in cui avvierebbe una nuova sessione dalla stessa riga di comando, tranne che una sessione che è terminata in plan mode riprende in plan mode a meno che tu non passi `--permission-mode`, `--dangerously-skip-permissions` o `--fork-session`. Nessun'altra modalità di permesso archiviata viene ripristinata.73* Selezionatore di sessioni al lancio: una sessione che selezioni dal [selezionatore di sessioni](#use-the-session-picker), che tu l'abbia aperto con `claude --resume` da solo, `claude --from-pr` o un nome che corrisponde a più di una sessione. Claude Code avvia la sessione nella modalità di permesso in cui avvierebbe una nuova sessione dalla stessa riga di comando, tranne che una sessione che è terminata in plan mode riprende in plan mode. Se passi `--permission-mode`, `--dangerously-skip-permissions` o `--fork-session`, Claude Code non ripristina il plan mode. Nessun'altra modalità di permesso archiviata viene ripristinata.

87* `/resume` dentro una sessione, con o senza argomento: la conversazione a cui passi continua nella modalità di permesso in cui è la tua sessione corrente, tranne che una conversazione che è terminata in plan mode riprende in plan mode, anche se hai avviato Claude Code con `--permission-mode` o `--dangerously-skip-permissions`. Se quella conversazione era già stata aperta in precedenza in questa esecuzione di Claude Code, come la conversazione in cui hai iniziato o una che hai lasciato con `/clear` o `/resume`, continua invece nella tua modalità di permesso corrente.74* `/resume` dentro una sessione, con o senza argomento: la conversazione a cui passi continua nella modalità di permesso in cui è la tua sessione corrente, tranne che una conversazione che è terminata in plan mode riprende in plan mode, anche se hai avviato Claude Code con `--permission-mode` o `--dangerously-skip-permissions`. Se quella conversazione era già stata aperta in precedenza in questa esecuzione di Claude Code, come la conversazione in cui hai iniziato o una che hai lasciato con `/clear` o `/resume`, continua invece nella tua modalità di permesso corrente.

88 75 

76Se una [regola di negazione](/docs/it/permissions#manage-permissions) rimuove lo strumento [`ExitPlanMode`](/docs/it/tools-reference), Claude non può presentare un piano per l'approvazione, quindi Claude Code non ripristina il plan mode. La sessione si avvia nella modalità di permesso in cui si avvierebbe una nuova sessione dalla stessa riga di comando. Con `/resume`, la conversazione continua nella tua modalità di permesso corrente.

77 

89Il ripristino del plan mode sui percorsi non interattivo e VS Code richiede Claude Code v2.1.246 o successiva. Ogni riga nomina la modalità di permesso in cui la sessione è terminata, attraverso quale dei percorsi terminale, non interattivo e VS Code la riprendi, e la modalità di permesso in cui Claude Code avvia la sessione ripresa.78Il ripristino del plan mode sui percorsi non interattivo e VS Code richiede Claude Code v2.1.246 o successiva. Ogni riga nomina la modalità di permesso in cui la sessione è terminata, attraverso quale dei percorsi terminale, non interattivo e VS Code la riprendi, e la modalità di permesso in cui Claude Code avvia la sessione ripresa.

90 79 

91| La sessione è terminata in | Come la riprendi | Modalità di permesso dopo la ripresa |80| La sessione è terminata in | Come la riprendi | Modalità di permesso dopo la ripresa |

92| :- | :- | :- |81| :- | :- | :- |

93| `bypassPermissions` | Terminale | La modalità di permesso in cui si avvierebbe una nuova sessione. Per [bypassare i permessi](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) di nuovo, abilitala al lancio con uno dei suoi flag di lancio o `permissions.defaultMode: "bypassPermissions"` in [impostazioni utente, `--settings` o impostazioni gestite](/docs/it/settings-reference#permissions-defaultmode) |82| `bypassPermissions` | Terminale | La modalità di permesso in cui si avvierebbe una nuova sessione. Per [bypassare i permessi](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) di nuovo, abilitala al lancio con uno dei suoi flag di lancio o `permissions.defaultMode: "bypassPermissions"` in [impostazioni utente, `--settings` o impostazioni gestite](/docs/it/settings-reference#permissions-defaultmode) |

94| `plan` | Terminale | Plan mode. Con `--fork-session`, la modalità di permesso in cui si avvierebbe una nuova sessione |83| `plan` | Terminale | Plan mode. Con `--fork-session`, la modalità di permesso in cui si avvierebbe una nuova sessione |

84| `plan` | Terminale, quando una regola di negazione rimuove `ExitPlanMode` | La modalità di permesso in cui si avvierebbe una nuova sessione |

95| `auto` | Terminale | `auto`, solo quando il tuo account soddisfa ancora i [requisiti della modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) |85| `auto` | Terminale | `auto`, solo quando il tuo account soddisfa ancora i [requisiti della modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) |

96| Manuale | Terminale | Manuale quando una nuova sessione si avvierebbe in modalità auto dal [default integrato](/docs/it/permission-modes#which-mode-a-session-starts-in). Quando un `defaultMode` da un file di impostazioni [ha effetto](/docs/it/permission-modes#which-mode-a-session-starts-in), Claude Code avvia invece la sessione ripresa in quella modalità |86| Manuale | Terminale | Manuale quando una nuova sessione si avvierebbe in modalità auto dal [default integrato](/docs/it/permission-modes#which-mode-a-session-starts-in). Quando un `defaultMode` da un file di impostazioni [ha effetto](/docs/it/permission-modes#which-mode-a-session-starts-in), Claude Code avvia invece la sessione ripresa in quella modalità |

97| `plan` | Non interattivo, secondo le [condizioni di seguito](#resume-in-plan-mode-with-p) | Plan mode |87| `plan` | Non interattivo, secondo le [condizioni di seguito](#resume-in-plan-mode-with-p) | Plan mode |


110* Non passi `--permission-mode` o `--dangerously-skip-permissions`100* Non passi `--permission-mode` o `--dangerously-skip-permissions`

111* Non passi `--fork-session`101* Non passi `--fork-session`

112* L'esecuzione non è avviata attraverso [canali](/docs/it/channels)102* L'esecuzione non è avviata attraverso [canali](/docs/it/channels)

103* Nessuna [regola di negazione](/docs/it/permissions#manage-permissions) rimuove lo strumento `ExitPlanMode`

113 104 

114<h3 id="resume-from-a-summary">105<h3 id="resume-from-a-summary">

115 Riprendere da un riepilogo106 Riprendere da un riepilogo


117 108 

118Su un piano Pro o Max, quando riprendi una sessione che è stata inattiva per più di circa un'ora ed è superiore a 100.000 token, Claude Code ripristina la conversazione e quindi apre una finestra di dialogo prima che tu invii il tuo primo messaggio. La [cache del prompt](/docs/it/prompt-caching#cache-lifetime) della sessione è scaduta entro allora, quindi la richiesta successiva elabora la cronologia completa una volta indipendentemente da quale opzione della finestra di dialogo scegli.109Su un piano Pro o Max, quando riprendi una sessione che è stata inattiva per più di circa un'ora ed è superiore a 100.000 token, Claude Code ripristina la conversazione e quindi apre una finestra di dialogo prima che tu invii il tuo primo messaggio. La [cache del prompt](/docs/it/prompt-caching#cache-lifetime) della sessione è scaduta entro allora, quindi la richiesta successiva elabora la cronologia completa una volta indipendentemente da quale opzione della finestra di dialogo scegli.

119 110 

120La finestra di dialogo offre tre modi per continuare la sessione. Differiscono in quanto della conversazione ciascuno trasporta in avanti nelle richieste successive, il che è un compromesso tra mantenere ogni dettaglio e inviare meno token per richiesta:111La finestra di dialogo offre tre modi per continuare la sessione:

121 112 

122* **Riprendi da riepilogo**: esegue [`/compact`](/docs/it/context-window#what-survives-compaction) immediatamente. Claude Code invia una richiesta di riepilogazione sulla cronologia completa, quindi sostituisce la cronologia con il riepilogo, i tuoi scambi più recenti e fino a cinque file letti di recente. Le richieste successive trasportano il riepilogo invece della cronologia completa.113* **Riprendi da riepilogo**: esegue [`/compact`](/docs/it/context-window#what-survives-compaction) immediatamente. Le richieste successive trasportano il riepilogo invece della cronologia completa.

123* **Riprendi la sessione completa così com'è**: carica la conversazione invariata. Dopo che invii il tuo primo messaggio, Claude Code rielabora e memorizza nuovamente nella cache la cronologia completa, quindi la rilegge dalla cache nelle richieste successive mentre la cache rimane calda.114* **Riprendi la sessione completa così com'è**: carica la conversazione invariata.

124* **Non chiedermi più**: riprende la sessione completa e smette di mostrare la finestra di dialogo su tutte le future riprese.115* **Non chiedermi più**: riprende la sessione completa e smette di mostrare la finestra di dialogo su tutte le future riprese.

125 116 

126Riprendere così com'è mantiene ogni dettaglio della conversazione disponibile, a un costo per richiesta che scala con la dimensione della conversazione. Riprendere dal riepilogo costa meno su ogni richiesta successiva perché trasporta il riepilogo invece della cronologia completa, ma qualunque cosa il riepilogo ometta non è più nel contesto di Claude. Vedi [perché l'utilizzo aumenta in una sessione lunga](/docs/it/costs#why-usage-climbs-in-a-long-session) per sapere da dove viene quel costo per richiesta.117Riprendere così com'è mantiene ogni dettaglio della conversazione disponibile, a un costo per richiesta che scala con la dimensione della conversazione. Riprendere dal riepilogo costa meno su ogni richiesta successiva perché trasporta il riepilogo invece della cronologia completa, ma qualunque cosa il riepilogo ometta non è più nel contesto di Claude. Vedi [perché l'utilizzo aumenta in una sessione lunga](/docs/it/costs#why-usage-climbs-in-a-long-session) per sapere da dove viene quel costo per richiesta.


136 127 

137Usa `Ctrl+W` per ampliare a tutti i worktree del repository o `Ctrl+A` per ampliare a ogni progetto su questa macchina.128Usa `Ctrl+W` per ampliare a tutti i worktree del repository o `Ctrl+A` per ampliare a ogni progetto su questa macchina.

138 129 

139Le sessioni il cui primo prompt era un comando [`/loop`](/docs/it/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) non appaiono nel selezionatore, e anche `claude --continue` le salta. L'esecuzione di `/loop` più tardi in una conversazione non nasconde la sessione. Prima della v2.1.211, un'esecuzione `/loop` all'inizio di una conversazione nascondeva la sessione dal selezionatore in modo permanente.130<h4 id="/loop-p-agent-sdk-and-background-sessions">

131 `/loop`, `-p`, Agent SDK e sessioni in background

132</h4>

133 

134Le sessioni il cui primo prompt era un comando [`/loop`](/docs/it/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) non appaiono nel selezionatore, e anche `claude --continue` le salta. L'esecuzione di `/loop` più tardi in una conversazione non nasconde la sessione.

135 

136Claude Code lascia fuori dal selezionatore di sessioni e da `claude --continue` le sessioni create con [`claude -p`](/docs/it/headless) o l'[Agent SDK](/docs/it/agent-sdk/overview). Puoi comunque riprenderne una passando il suo ID di sessione a `claude --resume <session-id>`. Quando esegui [`claude -p --continue`](/docs/it/headless#continue-conversations), Claude Code include le sessioni `-p`, SDK e `/loop`.

140 137 

141Lo spostamento di una sessione con [`/cd`](/docs/it/commands) la trasferisce nell'archivio del progetto della nuova directory, quindi appare nel selezionatore di quella directory in seguito. A partire dalla v2.1.196, una sessione spostata rimane fuori dal selezionatore della directory precedente anche dopo un arresto anomalo o un'uscita forzata. Nelle versioni precedenti, poteva anche riapparire nell'elenco della directory precedente dopo un'uscita non pulita quando il percorso precedente conteneva caratteri speciali come trattini bassi.138`claude --continue` apre una [sessione in background](/docs/it/agent-view) che è terminata, ma non una ancora in esecuzione; l'apertura di sessioni in background terminate richiede Claude Code v2.1.257 o successiva. Se la tua conversazione più recente è una che hai [spostato in background](/docs/it/agent-view#send-the-session-to-the-background) ed è ancora in esecuzione lì, Claude Code esce con `Your most recent conversation is running in the background` e l'ID di quella sessione. Collegati alla sessione da [`claude agents`](/docs/it/agent-view#attach-to-a-session), oppure esegui `claude --resume` per sceglierne un'altra.

139 

140<h4 id="sessions-in-other-worktrees-and-projects">

141 Sessioni in altri worktree e progetti

142</h4>

142 143 

143Quando selezioni una sessione da un altro worktree dello stesso repository, Claude Code la riprende sul posto; quando il worktree della sessione non esiste più, Claude Code [la riprende nella tua directory corrente](/docs/it/worktrees#resume-a-worktree-session). Quando selezioni una sessione da un progetto non correlato, Claude Code copia invece un comando `cd` e resume negli appunti. Se la directory di quel progetto non esiste più, Claude Code riprende la sessione nella tua directory corrente piuttosto che copiare un comando `cd` che fallirebbe.144Quando selezioni una sessione da un altro worktree dello stesso repository, Claude Code la riprende sul posto; quando il worktree della sessione non esiste più, Claude Code [la riprende nella tua directory corrente](/docs/it/worktrees#resume-a-worktree-session). Quando selezioni una sessione da un progetto non correlato, Claude Code copia invece un comando `cd` e resume negli appunti. Se la directory di quel progetto non esiste più, Claude Code riprende la sessione nella tua directory corrente piuttosto che copiare un comando `cd` che fallirebbe.

144 145 

146Lo spostamento di una sessione con [`/cd`](/docs/it/commands) la trasferisce nell'archivio del progetto della nuova directory, quindi appare nel selezionatore di quella directory in seguito.

147 

148<h4 id="resume-by-session-id-or-name">

149 Riprendere per ID di sessione o nome

150</h4>

151 

152Puoi eseguire `claude --resume <session-id>` da qualsiasi directory, quindi puoi riprendere una sessione che è stata avviata altrove o spostata con [`/cd`](/docs/it/commands). Claude Code cerca l'ID in questo ordine:

153 

1541. La directory del progetto corrente e i suoi git worktree

1552. Ogni altro progetto su questa macchina

156 

157La ricerca tra progetti risolve l'ID solo quando esattamente un altro progetto contiene una trascrizione con messaggi per esso, quindi un duplicato copiato manualmente fa sì che Claude Code segnali che non è stato trovato piuttosto che riprendere una copia arbitraria. Se nessuna sessione archiviata corrisponde all'ID, Claude Code segnala `No conversation found with session ID: <session-id>`.

158 

145La ripresa per nome si risolve nel repository corrente e nei suoi worktree. Entrambe le forme cercano una corrispondenza esatta e la riprendono direttamente anche se si trova in un worktree diverso:159La ripresa per nome si risolve nel repository corrente e nei suoi worktree. Entrambe le forme cercano una corrispondenza esatta e la riprendono direttamente anche se si trova in un worktree diverso:

146 160 

147| Comando | Corrispondenza esatta | Nome ambiguo |161| Comando | Corrispondenza esatta | Nome ambiguo |


150| `/resume <name>` | Riprende direttamente | Segnala un errore; esegui `/resume` senza argomenti per aprire il selezionatore di sessioni |164| `/resume <name>` | Riprende direttamente | Segnala un errore; esegui `/resume` senza argomenti per aprire il selezionatore di sessioni |

151 165 

152<h2 id="name-your-sessions">166<h2 id="name-your-sessions">

153 Assegnare nomi alle sessioni167 Assegna un nome alle tue sessioni

154</h2>168</h2>

155 169 

156Dai alle sessioni nomi descrittivi in modo che siano trovabili nel selezionatore di sessioni e riprendibili per nome. Questo è particolarmente importante quando stai lavorando su più attività in parallelo.170Assegna alle sessioni nomi descrittivi in modo che siano facili da trovare nel selettore delle sessioni e riprendibili per nome. Questo è particolarmente importante quando lavori su più attività in parallelo.

157 171 

158| Quando | Come impostare il nome |172| Quando | Come impostare il nome |

159| :- | :- |173| :- | :- |

160| All'avvio | `claude -n auth-refactor` |174| All'avvio | `claude -n auth-refactor` |

161| Durante una sessione | `/rename auth-refactor`. Il nome appare anche sulla barra del prompt |175| Durante una sessione | `/rename auth-refactor`. Il nome appare anche nella barra del prompt |

162| Dal selezionatore di sessioni | Evidenzia una sessione e premi `Ctrl+R` |176| Dal selettore delle sessioni | Evidenzia una sessione e premi `Ctrl+R` |

163| Sull'accettazione del piano | Accettare un piano in [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode) assegna un nome alla sessione in base al piano a meno che non ne abbia già impostato uno |177| All'accettazione di un piano | Accettare un piano in [plan mode](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode) assegna alla sessione un titolo generato basato sul piano, a meno che tu non le abbia già dato un nome |

164| Da claude.ai o dall'app Claude | Rinomina una sessione [Remote Control](/docs/it/remote-control#connect-from-another-device); Claude Code applica lo stesso nome nella CLI. Richiede Claude Code v2.1.221 o versione successiva |178| Da claude.ai o dall'app Claude | Rinomina una [sessione di Remote Control](/docs/it/remote-control#connect-from-another-device); Claude Code applica lo stesso nome nella CLI. Richiede Claude Code v2.1.221 o versioni successive |

165| Dall'app desktop | Rinomina una sessione nell'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions) |179| Dall'app desktop | Rinomina una sessione nell'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions) |

166 180 

167Una volta che una sessione è denominata tramite una rotta CLI o da claude.ai, torna a essa con `claude --resume <name>` o `/resume <name>`; una sessione dell'app desktop si riprende nell'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions). Vedi [Riprendere una sessione](#resume-a-session) per come il comportamento della risoluzione dei nomi funziona nei worktrees.181Dopo aver assegnato un nome a una sessione tramite la CLI o da claude.ai, puoi tornarci con `claude --resume <name>` o `/resume <name>`; una sessione dell'app desktop si riprende nell'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions). Consulta [Riprendere una sessione](#resume-a-session) per scoprire come funziona la risoluzione dei nomi tra i worktree.

168 

169Quando avvii o riprendi una sessione interattiva con un nome che un'altra sessione live su questa macchina utilizza già, o rinomini una sessione con tale nome, Claude Code lascia il nome con la sessione che lo ha già, rinomina la tua in una variante con un suffisso di due parole, come `auth-refactor-graceful-unicorn`, e te lo comunica. Esegui `/rename` con un nuovo nome se preferisci sceglierne uno tu stesso. Prima della v2.1.232, entrambe le sessioni mantenevano il nome.

170 

171In tre casi Claude Code non rinomina il duplicato, quindi puoi comunque vedere due sessioni con lo stesso nome negli elenchi:

172 

173* Non controlla i titoli generati dall'IA o i nomi di visualizzazione predefiniti.

174* Non controlla il `--name` di una sessione [background](/docs/it/agent-view#from-your-shell) o `-p` all'avvio.

175* Non può rinominare una sessione su una versione precedente di Claude Code.

176 

177Le sessioni che non nomini ricevono comunque due etichette che Claude Code assegna. Solo il titolo generato funziona come handle di ripresa:

178 

179* Nome di visualizzazione predefinito: le sessioni interattive che non nomini mai ricevono comunque un nome di visualizzazione predefinito quando si avviano. Richiede Claude Code v2.1.196 o versione successiva. Il valore predefinito combina il nome della directory di lavoro con un suffisso di due caratteri, ad esempio `my-app-3f`, e identifica la sessione negli elenchi delle sessioni in esecuzione, come la [agent view](/docs/it/agent-view) e l'output di `claude agents --json`. Il valore predefinito non è un handle di ripresa. Se lo passi a `claude --resume` o `/resume`, Claude Code non trova la sessione. Denominare la sessione sostituisce il valore predefinito in quegli elenchi, così come accettare un piano.

180* Titolo generato: se non nomini una sessione, Claude Code genera un titolo di sessione per essa. Il titolo è un breve riassunto del tuo primo prompt, scritto da una richiesta in background al modello piccolo/veloce, normalmente un modello della classe Haiku. Un'esecuzione `claude -p` che avvii direttamente da una shell o script non ne riceve uno.

181 182 

182 Accettare un piano sostituisce il titolo del primo prompt con un titolo basato sul piano. Denominare la sessione lo sostituisce anche.183Le sessioni a cui non assegni un nome ricevono comunque due etichette assegnate da Claude Code. Solo il titolo generato funziona come identificativo per la ripresa:

183 184 

184 Vedi il titolo del primo prompt nel [selezionatore di sessioni](#use-the-session-picker) e nel campo [`session_name`](/docs/it/statusline) della statusline quando nessun nome è impostato. Il titolo del piano appare negli stessi due posti e anche negli elenchi delle sessioni in esecuzione, dove prende il posto del nome di visualizzazione predefinito.185* Nome visualizzato predefinito: le sessioni interattive a cui non assegni mai un nome ricevono comunque un nome visualizzato predefinito all'avvio. Richiede Claude Code v2.1.196 o versioni successive. Il nome predefinito combina il nome della directory di lavoro con un suffisso di due caratteri, ad esempio `my-app-3f`, e identifica la sessione negli elenchi delle sessioni in esecuzione, come la [vista agenti](/docs/it/agent-view) e l'output di `claude agents --json`. Il nome predefinito non è un identificativo per la ripresa. Se lo passi a `claude --resume` o `/resume`, Claude Code non trova la sessione.

186* Titolo generato: se non assegni un nome a una sessione, Claude Code genera un titolo per la sessione. Il titolo è un breve riepilogo del tuo primo prompt, scritto da una richiesta in background al modello piccolo/veloce, normalmente un modello di classe Haiku. Un'esecuzione di `claude -p` avviata direttamente da una shell o da uno script non ne riceve uno.

185 187 

186 Puoi passare uno dei due titoli a `claude --resume` o `/resume`, e Claude Code lo risolve nello stesso modo di un nome che hai impostato.188 Accettare un piano sostituisce il titolo generato con un titolo basato sul piano. Puoi passare entrambi i titoli a `claude --resume` o `/resume`, e Claude Code li risolve allo stesso modo di un nome che hai impostato tu.

187 189 

188<h2 id="use-the-session-picker">190<h2 id="use-the-session-picker">

189 Usare il selezionatore di sessioni191 Usare il selezionatore di sessioni


205| `Ctrl+B` | Filtra le sessioni dal ramo git corrente. Premi di nuovo per mostrare tutti i rami |207| `Ctrl+B` | Filtra le sessioni dal ramo git corrente. Premi di nuovo per mostrare tutti i rami |

206| `Esc` | Esci dal selezionatore di sessioni o dalla modalità di ricerca |208| `Esc` | Esci dal selezionatore di sessioni o dalla modalità di ricerca |

207 209 

208Ogni riga mostra il nome della sessione se impostato, altrimenti il titolo della sessione generato dall'IA, il riassunto della conversazione o il primo prompt, insieme al tempo dall'ultima attività, al ramo git e alla dimensione del file. Amplia a tutti i progetti con `Ctrl+A` per visualizzare anche il percorso del progetto di ogni sessione.210Ogni riga mostra il nome della sessione se impostato, altrimenti il titolo della sessione generato dall'IA, il riassunto della conversazione o il primo prompt, insieme al tempo dall'ultima attività, al branch git e alla dimensione del file.

209 211 

210Le sessioni create con `/branch` o `--fork-session` ottengono i propri ID di sessione e appaiono come righe separate. Quando il selezionatore trova più di una voce per la stessa sessione, le raggruppa sotto una singola riga. Premi `→` per espandere un gruppo.212Le sessioni create con `/branch` o `--fork-session` ottengono i propri ID di sessione e appaiono come righe separate. Quando il selezionatore trova più di una voce per la stessa sessione, le raggruppa sotto una singola riga. Premi `→` per espandere un gruppo.

211 213 


223/branch try-streaming-approach225/branch try-streaming-approach

224```226```

225 227 

226Se ometti il nome, Claude Code assegna un nome al nuovo ramo in base al primo prompt nella conversazione. A partire dalla v2.1.198 questo si applica anche dopo la [compattazione](/docs/it/how-claude-code-works#when-context-fills-up); le versioni precedenti ricadevano nel nome letterale `Branched conversation` invece di guardare oltre il riepilogo della compattazione al prompt originale iniziale.228Se ometti il nome, Claude Code assegna un nome al nuovo branch in base al primo prompt nella conversazione.

227 229 

228Dalla riga di comando, combina `--continue` o `--resume` con `--fork-session`:230Dalla riga di comando, combina `--continue` o `--resume` con `--fork-session`:

229 231 


250 252 

251Questi comandi controllano cosa c'è nella finestra di contesto senza lasciare la sessione:253Questi comandi controllano cosa c'è nella finestra di contesto senza lasciare la sessione:

252 254 

253* **`/clear`**: ricomincia da capo con un contesto vuoto. Claude Code salva la conversazione precedente; riprendila con `/resume`, oppure, nello stesso processo Claude Code, dalla [voce della sessione precedente del menu rewind](/docs/it/checkpointing#rewind-past-a-cleared-conversation). Senza argomenti, la nuova conversazione mantiene un nome che hai impostato con `--name` o `/rename`, ma non un titolo di sessione generato dall'IA. Per nominare invece la conversazione che stai lasciando, passa il nome, come in `/clear release-prep`; la nuova conversazione inizia quindi senza nome255* **`/clear`**: ricomincia da capo con un contesto vuoto. Claude Code salva la sessione precedente; riprendila con `/resume`, oppure, nello stesso processo Claude Code, dalla [voce della sessione precedente del menu rewind](/docs/it/checkpointing#rewind-past-a-cleared-conversation). Senza argomenti, la nuova sessione mantiene un nome che hai impostato con `--name` o `/rename`, ma non un titolo di sessione generato dall'IA. Per nominare invece la sessione che stai lasciando, passa il nome, come in `/clear release-prep`; la nuova sessione inizia quindi senza nome

254* **`/compact [instructions]`**: sostituisci la cronologia con un riassunto, facoltativamente focalizzato su ciò che specifichi256* **`/compact [instructions]`**: sostituisci la cronologia con un riassunto, facoltativamente focalizzato su ciò che specifichi

255* **`/context`**: mostra cosa sta attualmente consumando contesto257* **`/context`**: mostra cosa sta attualmente consumando contesto

256 258 

settings.md +2 −2

Details

495 495 

496Prima della v2.1.211, Claude Code manteneva il file nella directory di avvio. Legge ancora un file lasciato lì da una versione precedente insieme al file nella radice; dove entrambi impostano la stessa chiave, si applica il valore della radice, e si applicano le regole di permesso di entrambi i file. L'helper [`resolveSettings()`](/docs/it/agent-sdk/typescript#resolvesettings) dell'Agent SDK legge sempre il file dalla directory di avvio.496Prima della v2.1.211, Claude Code manteneva il file nella directory di avvio. Legge ancora un file lasciato lì da una versione precedente insieme al file nella radice; dove entrambi impostano la stessa chiave, si applica il valore della radice, e si applicano le regole di permesso di entrambi i file. L'helper [`resolveSettings()`](/docs/it/agent-sdk/typescript#resolvesettings) dell'Agent SDK legge sempre il file dalla directory di avvio.

497 497 

498Claude Code legge il `.claude/settings.json` condiviso dalla [directory di lavoro primaria](/docs/it/permissions#working-directories) della sessione, quindi per utilizzare un file sottoposto a commit nella radice del repository, avvia Claude Code lì. Dopo aver [spostato la sessione con `/cd`](/docs/it/permissions#move-the-session-to-another-directory), Claude Code legge invece entrambi i file di progetto dalla nuova directory, posizionando il file locale secondo le stesse regole. Leggerli dalla directory in cui ti sei spostato richiede Claude Code v2.1.246 o successivo.498Claude Code legge il `.claude/settings.json` condiviso dalla [directory di lavoro primaria](/docs/it/permissions#working-directories) della sessione, quindi per utilizzare un file sottoposto a commit nella radice del repository, avvia Claude Code lì. Dopo aver [spostato la sessione con `/cd`](/docs/it/permissions#move-the-session-to-another-directory), Claude Code legge invece entrambi i file di progetto dalla nuova directory, posizionando il file locale secondo le stesse regole. Leggerli dalla directory in cui ti sei spostato richiede Claude Code v2.1.246 o successivo. Per una sessione worktree che avvii dall'app desktop, consulta [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout).

499 499 

500<span id="managed-settings-delivery" />500<span id="managed-settings-delivery" />

501 501 


767 767 

768Due cose impediscono a una chiave in `.claude/settings.json` di applicarsi per tutti coloro che la clonano:768Due cose impediscono a una chiave in `.claude/settings.json` di applicarsi per tutti coloro che la clonano:

769 769 

770* **Claude Code ignora la chiave in un file di repository.** Cerca `User, local, or managed`, `User or managed`, `Managed`, o `Global config` nella colonna Scope dell'[indice delle impostazioni](/docs/it/settings-reference#settings-index). Quelle chiavi non si applicano mai dal file condiviso, a parte alcune che un file di repository può comunque disattivare. Ciascuna di quelle voci lo dice sulla sua riga Scope. Le chiavi `Global config` si applicano solo da `~/.claude.json`.770* **Claude Code ignora la chiave in un file di repository.** Cerca `User, local, or managed`, `User or managed`, `User`, `Managed`, o `Global config` nella colonna Scope dell'[indice delle impostazioni](/docs/it/settings-reference#settings-index). Quelle chiavi non si applicano mai dal file condiviso, a parte alcune che un file di repository può comunque disattivare. Ciascuna di quelle voci lo dice sulla sua riga Scope. Le chiavi `Global config` si applicano solo da `~/.claude.json`.

771 771 

772 All'interno della chiave `env`, nemmeno le variabili di esportazione della telemetria si applicano mai dal file condiviso, a parte alcuni valori di disattivazione; vedi [Variabili che Claude Code ignora in `env`](/docs/it/settings-reference#variables-claude-code-ignores-in-env).772 All'interno della chiave `env`, nemmeno le variabili di esportazione della telemetria si applicano mai dal file condiviso, a parte alcuni valori di disattivazione; vedi [Variabili che Claude Code ignora in `env`](/docs/it/settings-reference#variables-claude-code-ignores-in-env).

773* **La chiave attende la fiducia.** Le regole `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, e la maggior parte dei valori [`env`](/docs/it/settings-reference#env) si applicano solo dopo che ogni compagno di squadra [considera attendibile la cartella](/docs/it/permissions#project-allow-rules-and-workspace-trust). Fino ad allora vedono ancora le richieste di permesso e non ottengono plugin da un marketplace che il file dichiara. Le regole `deny` e `ask` si applicano subito.773* **La chiave attende la fiducia.** Le regole `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, e la maggior parte dei valori [`env`](/docs/it/settings-reference#env) si applicano solo dopo che ogni compagno di squadra [considera attendibile la cartella](/docs/it/permissions#project-allow-rules-and-workspace-trust). Fino ad allora vedono ancora le richieste di permesso e non ottengono plugin da un marketplace che il file dichiara. Le regole `deny` e `ask` si applicano subito.

Details

582<ReferenceFilter582<ReferenceFilter

583 noun="settings"583 noun="settings"

584 placeholder="Filter settings by key or purpose"584 placeholder="Filter settings by key or purpose"

585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "Managed", "Global config"] }}585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "User", "Managed", "Global config"] }}

586 columnHelp={{586 columnHelp={{

587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",

588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",


638| [`claudeMdExcludes`](#claudemdexcludes) | Salta file [CLAUDE.md](/docs/it/memory#exclude-specific-claude-md-files) specifici quando viene caricata la memoria | Memoria e contesto | Any file |638| [`claudeMdExcludes`](#claudemdexcludes) | Salta file [CLAUDE.md](/docs/it/memory#exclude-specific-claude-md-files) specifici quando viene caricata la memoria | Memoria e contesto | Any file |

639| [`cleanupPeriodDays`](#cleanupperioddays) | Scegli per quanti giorni Claude Code conserva le [trascrizioni](/docs/it/data-usage#data-retention) prima di eliminarle | Privacy e telemetria | Any file |639| [`cleanupPeriodDays`](#cleanupperioddays) | Scegli per quanti giorni Claude Code conserva le [trascrizioni](/docs/it/data-usage#data-retention) prima di eliminarle | Privacy e telemetria | Any file |

640| [`companyAnnouncements`](#companyannouncements) | Mostra gli annunci della tua organizzazione all'avvio | Interfaccia e terminale | Any file |640| [`companyAnnouncements`](#companyannouncements) | Mostra gli annunci della tua organizzazione all'avvio | Interfaccia e terminale | Any file |

641| [`copyFullResponse`](#copyfullresponse) | Fai in modo che [`/copy`](/docs/it/commands) copi la risposta completa senza mostrare il selettore dei blocchi di codice | Impostazioni di configurazione globale | Global config |641| [`copyFullResponse`](#copyfullresponse) | Fai in modo che [`/copy`](/docs/it/commands) copi la risposta completa senza mostrare il selettore | Impostazioni di configurazione globale | Global config |

642| [`copyOnSelect`](#copyonselect) | Disattiva la copia automatica del testo che selezioni con il mouse nel [rendering a schermo intero](/docs/it/fullscreen#use-the-mouse) e nella vista agenti | Impostazioni di configurazione globale | Global config |642| [`copyOnSelect`](#copyonselect) | Disattiva la copia automatica del testo che selezioni con il mouse nel [rendering a schermo intero](/docs/it/fullscreen#use-the-mouse) e nella vista agenti | Impostazioni di configurazione globale | Global config |

643| [`crossSessionInbound`](#crosssessioninbound) | Scegli se Claude Code consegna i [messaggi dalle tue altre sessioni](/docs/it/cross-session-messaging#control-inbound-messages), mostra un avviso senza consegnarli o li rifiuta | Agenti, sessioni e worktree | Any file |643| [`crossSessionInbound`](#crosssessioninbound) | Scegli se Claude Code consegna i [messaggi dalle tue altre sessioni](/docs/it/cross-session-messaging#control-inbound-messages), mostra un avviso senza consegnarli o li rifiuta | Agenti, sessioni e worktree | Any file |

644| [`defaultShell`](#defaultshell) | Scegli se Bash o PowerShell esegue i comandi shell che digiti con il [prefisso `!`](/docs/it/interactive-mode#shell-mode-with-prefix) | Interfaccia e terminale | Any file |644| [`defaultShell`](#defaultshell) | Scegli se Bash o PowerShell esegue i comandi shell che digiti con il [prefisso `!`](/docs/it/interactive-mode#shell-mode-with-prefix) | Interfaccia e terminale | Any file |


684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Disattiva o attiva gli snapshot dei file che [`/rewind`](/docs/it/checkpointing) ripristina | Memoria e contesto | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Disattiva o attiva gli snapshot dei file che [`/rewind`](/docs/it/checkpointing) ripristina | Memoria e contesto | Any file |

685| [`fileSuggestion`](#filesuggestion) | Fornisci l'[autocompletamento dei file `@`](/docs/it/interactive-mode#quick-commands) da un tuo comando | Interfaccia e terminale | Any file |685| [`fileSuggestion`](#filesuggestion) | Fornisci l'[autocompletamento dei file `@`](/docs/it/interactive-mode#quick-commands) da un tuo comando | Interfaccia e terminale | Any file |

686| [`footerLinksRegexes`](#footerlinksregexes) | Trasforma gli ID di issue o di revisione nell'output in [link cliccabili](/docs/it/statusline#clickable-links) sotto la casella di input | Interfaccia e terminale | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | Trasforma gli ID di issue o di revisione nell'output in [link cliccabili](/docs/it/statusline#clickable-links) sotto la casella di input | Interfaccia e terminale | User or managed |

687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Imposta l'[URL del gateway](/docs/it/claude-apps-gateway#set-the-gateway-url) a cui si connette la schermata di accesso | Autenticazione e provider | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Imposta l'[URL del gateway](/docs/it/claude-apps-gateway#set-the-gateway-url) a cui si connette la schermata di accesso | Autenticazione e provider | User or managed |

688| [`forceLoginMethod`](#forceloginmethod) | [Limita l'accesso](/docs/it/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console o un [gateway cloud](/docs/it/claude-apps-gateway) | Autenticazione e provider | Any file |688| [`forceLoginMethod`](#forceloginmethod) | [Limita l'accesso](/docs/it/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console o un [gateway cloud](/docs/it/claude-apps-gateway) | Autenticazione e provider | Any file |

689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Vincola gli accessi a claude.ai alla tua organizzazione](/docs/it/authentication#restrict-login-to-your-organization); solo una fonte gestita lo applica | Autenticazione e provider | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Vincola gli accessi a claude.ai alla tua organizzazione](/docs/it/authentication#restrict-login-to-your-organization); solo una fonte gestita lo applica | Autenticazione e provider | Any file |

690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Blocca l'avvio finché le [impostazioni gestite dal server](/docs/it/server-managed-settings) non vengono recuperate di nuovo | Impostazioni aziendali e gestite | Managed |690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Blocca l'avvio finché le [impostazioni gestite dal server](/docs/it/server-managed-settings) non vengono recuperate di nuovo | Impostazioni aziendali e gestite | Managed |


831| [`worktree`](#worktree) | Configura il modo in cui Claude Code crea i [worktree](/docs/it/worktrees) git | Agenti, sessioni e worktree | Any file |831| [`worktree`](#worktree) | Configura il modo in cui Claude Code crea i [worktree](/docs/it/worktrees) git | Agenti, sessioni e worktree | Any file |

832| [`worktree.baseRef`](#worktree-baseref) | Crea i nuovi [worktree](/docs/it/worktrees) a partire dal branch predefinito remoto o dal tuo HEAD locale | Agenti, sessioni e worktree | Any file |832| [`worktree.baseRef`](#worktree-baseref) | Crea i nuovi [worktree](/docs/it/worktrees) a partire dal branch predefinito remoto o dal tuo HEAD locale | Agenti, sessioni e worktree | Any file |

833| [`worktree.bgIsolation`](#worktree-bgisolation) | Consenti alle sessioni in background di modificare la copia di lavoro senza un [worktree](/docs/it/worktrees) | Agenti, sessioni e worktree | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | Consenti alle sessioni in background di modificare la copia di lavoro senza un [worktree](/docs/it/worktrees) | Agenti, sessioni e worktree | Any file |

834| [`worktree.location`](#worktree-location) | Scegli dove le [sessioni SSH di Desktop](/docs/it/desktop#ssh-sessions) creano i loro worktree su una macchina remota | Agenti, sessioni e worktree | User |

834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Esegui il checkout solo delle directory che ti servono in ogni [worktree](/docs/it/worktrees) | Agenti, sessioni e worktree | Any file |835| [`worktree.sparsePaths`](#worktree-sparsepaths) | Esegui il checkout solo delle directory che ti servono in ogni [worktree](/docs/it/worktrees) | Agenti, sessioni e worktree | Any file |

835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Crea collegamenti simbolici alle directory di grandi dimensioni in ogni [worktree](/docs/it/worktrees) invece di duplicarle | Agenti, sessioni e worktree | Any file |836| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Crea collegamenti simbolici alle directory di grandi dimensioni in ogni [worktree](/docs/it/worktrees) invece di duplicarle | Agenti, sessioni e worktree | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Fai leggere a WSL le [impostazioni gestite](/docs/it/managed-settings) dalla catena dei criteri di Windows | Impostazioni aziendali e gestite | Managed |837| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Fai leggere a WSL le [impostazioni gestite](/docs/it/managed-settings) dalla catena dei criteri di Windows | Impostazioni aziendali e gestite | Managed |


1763 * `"acceptEdits"`: Claude Code esegue senza chiedere anche modifiche ai file e comandi comuni del file system come `mkdir` e `mv`1764 * `"acceptEdits"`: Claude Code esegue senza chiedere anche modifiche ai file e comandi comuni del file system come `mkdir` e `mv`

1764 * `"plan"`: Claude Code legge e pianifica ma blocca le modifiche finché non approvi un piano1765 * `"plan"`: Claude Code legge e pianifica ma blocca le modifiche finché non approvi un piano

1765 * `"auto"`: Claude Code procede senza richieste di conferma di routine; prima che vengano eseguite azioni come comandi shell e richieste di rete, un classificatore in background verifica che siano in linea con la tua richiesta1766 * `"auto"`: Claude Code procede senza richieste di conferma di routine; prima che vengano eseguite azioni come comandi shell e richieste di rete, un classificatore in background verifica che siano in linea con la tua richiesta

1766 * `"dontAsk"`: Claude Code nega automaticamente ogni chiamata per cui altrimenti chiederebbe conferma; le letture, le altre azioni che non richiedono approvazione e gli strumenti pre-approvati vengono comunque eseguiti1767 * `"dontAsk"`: Claude Code nega automaticamente ogni chiamata per cui altrimenti chiederebbe conferma; le letture di file all'interno delle tue directory di lavoro, le altre azioni che non richiedono approvazione e gli strumenti pre-approvati vengono comunque eseguiti, eccetto le letture da [percorsi di rete](/docs/it/permissions#network-paths)

1767 * `"bypassPermissions"`: Claude Code esegue tutto senza chiedere1768 * `"bypassPermissions"`: Claude Code esegue tutto senza chiedere

1768 * `"manual"`: un alias per `"default"`1769 * `"manual"`: un alias per `"default"`

1769* **Predefinito**: non impostato1770* **Predefinito**: non impostato


2398 2399 

2399* Una voce in `files` o `envVars` che ha ancora un `path` o `name` valido e una `mode` di `mask` o `deny`, come una il cui pattern `extract` non ha un gruppo di cattura, viene degradata a `mode: "deny"` con un avviso, quindi la credenziale rimane bloccata, non mascherata, finché non correggi la voce. Una voce `files` degradata vincola [`filesystem.disabled`](/docs/it/sandboxing#disable-filesystem-isolation) come una voce `deny` esplicita, e l'avviso segnala che il suo blocco di lettura non è applicato se le impostazioni gestite disattivano l'isolamento del filesystem.2400* Una voce in `files` o `envVars` che ha ancora un `path` o `name` valido e una `mode` di `mask` o `deny`, come una il cui pattern `extract` non ha un gruppo di cattura, viene degradata a `mode: "deny"` con un avviso, quindi la credenziale rimane bloccata, non mascherata, finché non correggi la voce. Una voce `files` degradata vincola [`filesystem.disabled`](/docs/it/sandboxing#disable-filesystem-isolation) come una voce `deny` esplicita, e l'avviso segnala che il suo blocco di lettura non è applicato se le impostazioni gestite disattivano l'isolamento del filesystem.

2400* Una voce con una `mode` sconosciuta o un `path` o `name` non valido viene rimossa.2401* Una voce con una `mode` sconosciuta o un `path` o `name` non valido viene rimossa.

2401* Ogni caso genera un avviso; che una voce sia degradata o rimossa, le voci valide rimanenti sono ancora applicate, e un valore `credentials` interamente non valido viene scartato mentre il resto di `sandbox` si applica comunque.2402* Ogni caso genera un avviso; che una voce sia degradata o rimossa, le voci valide rimanenti sono ancora applicate.

2402 2403 

2403Si applica nella v2.1.191 e successive; prima della v2.1.221, ogni voce non valida veniva rimossa. Per le altre chiavi gestite con gestione per campo, vedi [Invalid entries in managed settings](/docs/it/managed-settings#invalid-entries-in-managed-settings).2404Si applica nella v2.1.191 e successive; prima della v2.1.221, ogni voce non valida veniva rimossa. Per le altre chiavi gestite con gestione per campo, vedi [Invalid entries in managed settings](/docs/it/managed-settings#invalid-entries-in-managed-settings).

2404 2405 


5681 5682 

5682Al di fuori di un repository git, un [hook `WorktreeCreate`](/docs/it/worktrees#non-git-version-control) che fallisce rimuove il blocco, così che la sessione possa modificare la directory di lavoro sul posto; questa rimozione richiede Claude Code v2.1.203 o successivo.5683Al di fuori di un repository git, un [hook `WorktreeCreate`](/docs/it/worktrees#non-git-version-control) che fallisce rimuove il blocco, così che la sessione possa modificare la directory di lavoro sul posto; questa rimozione richiede Claude Code v2.1.203 o successivo.

5683 5684 

5685<h3 id="worktree-location">

5686 `worktree.location`

5687</h3>

5688 

5689Scegli la cartella su una macchina remota in cui le [sessioni SSH di Desktop](/docs/it/desktop#choose-where-ssh-session-worktrees-go) creano i loro worktree, invece di `<project-root>/.claude/worktrees/`. Solo l'app desktop legge questa chiave: `--worktree`, lo strumento `EnterWorktree`, i subagent isolati e le sessioni in background la ignorano. Richiede Claude Desktop v1.44121.0 o successivo.

5690 

5691* **Scope**: [`User`](#scopes), in `~/.claude/settings.json` sulla macchina remota

5692* **Type**: string, un percorso assoluto o uno che inizia con `~/`

5693* **Default**: non impostato, quindi i worktree vengono creati all'interno del progetto

5694 

5695Questo esempio imposta la cartella su `~/worktrees`:

5696 

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

5698{

5699 "worktree": {

5700 "location": "~/worktrees"

5701 }

5702}

5703```

5704 

5705Una **Worktree folder** impostata sulla connessione SSH in Desktop ha la precedenza. Se la tua organizzazione limita le cartelle che le sessioni possono usare, Desktop mantiene i worktree all'interno del progetto.

5706 

5684<h2 id="remote-desktop-and-notifications">5707<h2 id="remote-desktop-and-notifications">

5685 Controllo remoto, desktop e notifiche5708 Controllo remoto, desktop e notifiche

5686</h2>5709</h2>


5813 `enableArtifact`5836 `enableArtifact`

5814</h3>5837</h3>

5815 5838 

5816Disattiva lo strumento [Artifact](/docs/it/artifacts), che pubblica l'output della sessione come pagina web privata su claude.ai. Quando disattivi la riga **Artifacts** in `/config`, Claude Code scrive questa chiave nelle tue impostazioni utente, quindi di solito non la modifichi manualmente. Richiede Claude Code v2.1.196 o successivo.5839Disattiva lo strumento [Artifact](/docs/it/artifacts), che pubblica l'output della sessione come pagina web privata su claude.ai. Quando disattivi la riga **Artifacts** in `/config`, Claude Code scrive questa chiave nelle tue impostazioni utente, quindi di solito non la modifichi manualmente.

5817 5840 

5818* **Scope**: [`Any file`](#scopes). Ogni file può disattivare lo strumento e nessuno può riattivarlo.5841* **Scope**: [`Any file`](#scopes). Ogni file può disattivare lo strumento e nessuno può riattivarlo.

5819* **Type**: Boolean5842* **Type**: Boolean


5920 `sshConfigs`5943 `sshConfigs`

5921</h3>5944</h3>

5922 5945 

5923Aggiungi connessioni SSH al menu a discesa dell'ambiente [Desktop](/docs/it/desktop#pre-configure-ssh-connections-for-your-team). Gli amministratori lo usano per distribuire connessioni condivise a un team. Le connessioni che definisci nelle impostazioni gestite vengono mostrate come gestite, quindi gli utenti possono selezionarle ma non possono modificarle o eliminarle nell'app.5946Aggiungi connessioni SSH al menu a discesa dell'ambiente [Desktop](/docs/it/desktop#pre-configure-ssh-connections-for-your-team). Gli amministratori lo usano per distribuire connessioni condivise a un team. Le connessioni che definisci nelle impostazioni gestite vengono mostrate come gestite. Gli utenti possono selezionarle e [impostare la propria **Worktree folder**](/docs/it/desktop#choose-where-ssh-session-worktrees-go) per esse, ma non possono modificare nient'altro né eliminarle nell'app.

5924 5947 

5925* **Scope**: [`User or managed`](#scopes). L'app desktop legge questa chiave. Per impostazione predefinita, legge le connessioni gestite da [una sola origine gestita](/docs/it/managed-settings#how-claude-code-combines-managed-sources).5948* **Scope**: [`User or managed`](#scopes). L'app desktop legge questa chiave. Per impostazione predefinita, legge le connessioni gestite da [una sola origine gestita](/docs/it/managed-settings#how-claude-code-combines-managed-sources).

5926* **Type**: array di oggetti, ognuno con `id`, `name` e `sshHost` obbligatori e `sshPort` e `sshIdentityFile` opzionali5949* **Type**: array di oggetti, ognuno con `id`, `name` e `sshHost` obbligatori e `sshPort` e `sshIdentityFile` opzionali


6085 6108 

6086Limita il tipo di account con cui le persone possono accedere. Imposta `"claudeai"` per consentire solo account claude.ai, `"console"` per consentire solo account Claude Console, o `"gateway"` per inviare le persone a un [cloud gateway](/docs/it/claude-apps-gateway) invece di un accesso di prima parte. Gli amministratori lo impostano nelle impostazioni gestite e lo associano a [`forceLoginOrgUUID`](#forceloginorguuid) per mantenere gli accessi claude.ai degli sviluppatori all'interno di un'organizzazione. Se lo imposti su `"claudeai"` o `"console"` in qualsiasi file di impostazioni, Claude Code smette anche di offrire l'[accesso Console senza chiave](/docs/it/authentication#sign-in-without-an-api-key) nelle sessioni a cui si applica quel file.6109Limita il tipo di account con cui le persone possono accedere. Imposta `"claudeai"` per consentire solo account claude.ai, `"console"` per consentire solo account Claude Console, o `"gateway"` per inviare le persone a un [cloud gateway](/docs/it/claude-apps-gateway) invece di un accesso di prima parte. Gli amministratori lo impostano nelle impostazioni gestite e lo associano a [`forceLoginOrgUUID`](#forceloginorguuid) per mantenere gli accessi claude.ai degli sviluppatori all'interno di un'organizzazione. Se lo imposti su `"claudeai"` o `"console"` in qualsiasi file di impostazioni, Claude Code smette anche di offrire l'[accesso Console senza chiave](/docs/it/authentication#sign-in-without-an-api-key) nelle sessioni a cui si applica quel file.

6087 6110 

6088* **Scope**: [`Any file`](#scopes). Claude Code onora `"gateway"` solo da una fonte gestita sulla macchina: `managed-settings.json`, il plist macOS o il registro HKLM di Windows, o un helper di policy. Tratta `"gateway"` come non impostato nelle impostazioni utente, progetto, locali, HKCU e gestite dal server, la stessa regola di [`forceLoginGatewayUrl`](#forcelogingatewayurl).6111* **Scope**: [`Any file`](#scopes). Claude Code onora `"gateway"` dalle stesse fonti di [`forceLoginGatewayUrl`](#forcelogingatewayurl) e lo tratta come non impostato ovunque altrove.

6089* **Type**: string, uno di:6112* **Type**: string, uno di:

6090 * `"claudeai"`: solo gli account claude.ai possono accedere6113 * `"claudeai"`: solo gli account claude.ai possono accedere

6091 * `"console"`: solo gli account Claude Console possono accedere6114 * `"console"`: solo gli account Claude Console possono accedere


6108 6131 

6109Imposta l'URL del gateway a cui si connette la schermata `/login` Cloud gateway, in modo che le persone raggiungano il tuo [cloud gateway](/docs/it/claude-apps-gateway) senza digitare il suo indirizzo. La schermata non ha un campo URL: con questa chiave impostata, mostra l'URL del tuo gateway e si connette quando la persona preme Invio; senza di essa, dice loro di contattare il loro amministratore IT.6132Imposta l'URL del gateway a cui si connette la schermata `/login` Cloud gateway, in modo che le persone raggiungano il tuo [cloud gateway](/docs/it/claude-apps-gateway) senza digitare il suo indirizzo. La schermata non ha un campo URL: con questa chiave impostata, mostra l'URL del tuo gateway e si connette quando la persona preme Invio; senza di essa, dice loro di contattare il loro amministratore IT.

6110 6133 

6111O questa chiave o `forceLoginMethod: "gateway"` rende la macchina solo gateway, ad eccezione delle sessioni che selezionano un provider cloud con `CLAUDE_CODE_USE_*`. `/login` si apre quindi sulla schermata Cloud gateway senza un selettore di metodo di accesso. Vedi [La policy dell'amministratore richiede un accesso Cloud gateway](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in) per cosa succede a un accesso di prima parte residuo o a una chiave API. Imposta entrambe le chiavi in modo che la schermata si connetta invece di mostrare un errore.6134Nelle impostazioni gestite, questa chiave o `forceLoginMethod: "gateway"` rende la macchina solo gateway, ad eccezione delle sessioni che selezionano un provider cloud con `CLAUDE_CODE_USE_*`. `/login` si apre quindi sulla schermata Cloud gateway senza un selettore di metodo di accesso. Vedi [La policy dell'amministratore richiede un accesso Cloud gateway](/docs/it/errors#administrator-policy-requires-a-cloud-gateway-sign-in) per cosa succede a un accesso di prima parte residuo o a una chiave API. Imposta entrambe le chiavi in modo che la schermata si connetta invece di mostrare un errore.

6112 6135 

6113* **Scope**: [`Managed`](#scopes). Letto solo da una fonte sulla macchina: `managed-settings.json`, il plist macOS o il registro HKLM di Windows, o un helper di policy. Claude Code lo ignora nelle impostazioni HKCU e gestite dal server.6136* **Scope**: [`User or managed`](#scopes). Letto da una fonte gestita sulla macchina: `managed-settings.json`, il plist macOS o il registro HKLM di Windows, o un helper di policy. Su una macchina che non ha nessuna di queste, Claude Code v2.1.295 o successivo lo legge anche dalle [impostazioni utente](/docs/it/claude-apps-gateway#set-the-gateway-url-in-user-settings). Claude Code lo ignora nelle impostazioni HKCU e gestite dal server.

6114* **Type**: string, un URL completo incluso lo schema6137* **Type**: string, un URL completo incluso lo schema

6115* **Default**: non impostato, quindi la schermata Cloud gateway mostra un errore che dice alle persone di contattare il loro amministratore IT6138* **Default**: non impostato, quindi la schermata Cloud gateway mostra un errore che dice alle persone di contattare il loro amministratore IT

6116 6139 


6140}6163}

6141```6164```

6142 6165 

6143Se una fonte gestita imposta un array vuoto, o un valore che Claude Code non può analizzare, Claude Code blocca ogni accesso con un messaggio di configurazione errata.6166Se una fonte gestita imposta un array vuoto, o un valore che non è una stringa o un array di stringhe, gli utenti che accedono con un account Anthropic non possono avviare Claude Code né completare un accesso. Vedono un messaggio che nomina `forceLoginOrgUUID` e dice loro di contattare il loro amministratore. Un [`policyHelper`](#policyhelper) che emette un valore del tipo sbagliato invece [fallisce la sua esecuzione](#helper-failures).

6144 6167 

6145Vedi [Limita l'accesso alla tua organizzazione](/docs/it/authentication#restrict-login-to-your-organization) per come Claude Code tratta gli accessi Claude Console, gli altri percorsi di accesso e le credenziali ambientali.6168Vedi [Limita l'accesso alla tua organizzazione](/docs/it/authentication#restrict-login-to-your-organization) per come Claude Code tratta gli accessi Claude Console, gli altri percorsi di accesso e le credenziali ambientali.

6146 6169 


6806 `copyFullResponse`6829 `copyFullResponse`

6807</h3>6830</h3>

6808 6831 

6809Fai in modo che [`/copy`](/docs/it/commands) copi la risposta completa ogni volta, senza il selettore che altrimenti mostra quando la risposta contiene blocchi di codice. Selezionare **Always copy full response** in quel selettore imposta questa chiave su `true`. Appare in `/config` come **Skip the /copy picker**.6832Fai in modo che [`/copy`](/docs/it/commands) copi la risposta completa ogni volta, senza mostrare il selettore. Selezionare **Always copy full response** in quel selettore imposta questa chiave su `true`. Appare in `/config` come **Skip the /copy picker**.

6810 6833 

6811* **Scope**: [`Global config`](#scopes)6834* **Scope**: [`Global config`](#scopes)

6812* **Type**: Boolean6835* **Type**: Boolean

6813 * `true`: `/copy` copia la risposta completa senza mostrare il selettore6836 * `true`: `/copy` copia la risposta completa senza mostrare il selettore

6814 * `false`: quando la risposta contiene blocchi di codice, `/copy` mostra un selettore dove scegli un blocco di codice o la risposta completa6837 * `false`: quando la risposta contiene blocchi di codice o citazioni, `/copy` mostra un selettore dove scegli un blocco o la risposta completa

6815* **Default**: `false`6838* **Default**: `false`

6816 6839 

6817```json ~/.claude.json theme={null}6840```json ~/.claude.json theme={null}

skills.md +6 −6

Details

192 192 

193Claude Code carica le skill di progetto da `.claude/skills/` nella directory in cui lo avvii e in ogni directory padre fino alla radice del repository, quindi avviandolo in `packages/frontend/` vengono comunque rilevate le skill definite nella radice. Quando [sposti la sessione con `/cd`](/docs/it/permissions#move-the-session-to-another-directory) nella v2.1.246 o successive, Claude Code aggiunge le skill di progetto della nuova directory.193Claude Code carica le skill di progetto da `.claude/skills/` nella directory in cui lo avvii e in ogni directory padre fino alla radice del repository, quindi avviandolo in `packages/frontend/` vengono comunque rilevate le skill definite nella radice. Quando [sposti la sessione con `/cd`](/docs/it/permissions#move-the-session-to-another-directory) nella v2.1.246 o successive, Claude Code aggiunge le skill di progetto della nuova directory.

194 194 

195In una sessione eseguita in un [worktree git](/docs/it/worktrees) collegato, Claude Code cerca nelle directory padre solo fino alla radice del worktree. In Claude Code v2.1.277 o successive, quando il checkout del worktree non ha una directory `.claude/skills` nella sua radice, Claude Code carica invece le skill di progetto del checkout principale. Consulta [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout).195In una sessione eseguita in un [worktree git](/docs/it/worktrees) collegato che hai creato con `--worktree` o `git worktree add`, Claude Code cerca nelle directory padre solo fino alla radice del worktree. In Claude Code v2.1.277 o successive, quando il checkout del worktree non ha una directory `.claude/skills` nella sua radice, Claude Code carica invece le skill di progetto del checkout principale. Consulta [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout).

196 196 

197Le skill in una directory `.claude/skills/` al di sotto di quella in cui hai avviato la sessione non vengono caricate all'avvio. Vengono caricate la prima volta che Claude legge o modifica un file in quella sottodirectory e restano disponibili per il resto della sessione. Fino ad allora non compaiono nel menu `/` e non puoi invocarle per nome. Per caricarle prima, esegui `/add-dir` con il percorso della sottodirectory, il che richiede Claude Code v2.1.257 o successive.197Le skill in una directory `.claude/skills/` al di sotto di quella in cui hai avviato la sessione non vengono caricate all'avvio. Vengono caricate la prima volta che Claude legge o modifica un file in quella sottodirectory e restano disponibili per il resto della sessione. Fino ad allora non compaiono nel menu `/` e non puoi invocarle per nome. Per caricarle prima, esegui `/add-dir` con il percorso della sottodirectory, il che richiede Claude Code v2.1.257 o successive. Per una sessione in un worktree che avvii dall'app desktop, consulta [Cosa condividono i worktree con il checkout principale](/docs/it/worktrees#what-worktrees-share-with-the-main-checkout).

198 198 

199Quando il nome della directory di una skill annidata corrisponde al nome di un'altra skill, entrambe restano disponibili. Con una skill `deploy` nella radice del repository e un'altra in `apps/web/.claude/skills/`:199Quando il nome della directory di una skill annidata corrisponde al nome di un'altra skill, entrambe restano disponibili. Con una skill `deploy` nella radice del repository e un'altra in `apps/web/.claude/skills/`:

200 200 


235 235 

236Se una skill esiste solo in `~/.claude/skills/` sulla tua macchina, Claude Code segnala che la skill non è stata trovata quando una [routine](/docs/it/routines) la invoca, perché ogni esecuzione di una routine inizia come una nuova sessione cloud. Per rendere disponibile una skill personale in queste sessioni:236Se una skill esiste solo in `~/.claude/skills/` sulla tua macchina, Claude Code segnala che la skill non è stata trovata quando una [routine](/docs/it/routines) la invoca, perché ogni esecuzione di una routine inizia come una nuova sessione cloud. Per rendere disponibile una skill personale in queste sessioni:

237 237 

238* Per le sessioni Cowork e cloud, abilita la skill per il tuo account claude.ai.238* Per le sessioni Cowork e cloud, abilita la skill per il tuo account claude.ai. [Alcune sessioni in un ambiente self-hosted](/docs/it/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) non caricano le skill del tuo account.

239* Per le sessioni cloud, puoi in alternativa fare il commit della skill in `.claude/skills/` del repository. I plugin dichiarati in `.claude/settings.json` del repository e i plugin abilitati solo nelle tue impostazioni utente [non vengono caricati nelle sessioni cloud](/docs/it/cloud-environments#what-carries-over-from-your-setup).239* Per le sessioni cloud, puoi in alternativa fare il commit della skill in `.claude/skills/` del repository. I plugin dichiarati in `.claude/settings.json` del repository e i plugin abilitati solo nelle tue impostazioni utente [non vengono caricati nelle sessioni cloud](/docs/it/cloud-environments#what-carries-over-from-your-setup).

240 240 

241Le [attività pianificate di Desktop](/docs/it/desktop-scheduled-tasks) vengono eseguite localmente sulla tua macchina, quindi caricano `~/.claude/skills/`.241Le [attività pianificate di Desktop](/docs/it/desktop-scheduled-tasks) vengono eseguite localmente sulla tua macchina, quindi caricano `~/.claude/skills/`.


434| `when_to_use` | No | Contesto aggiuntivo per quando Claude dovrebbe invocare la skill, come frasi trigger o richieste di esempio. Aggiunto a `description` nell'elenco delle skills e conta verso il limite di 1.536 caratteri. |434| `when_to_use` | No | Contesto aggiuntivo per quando Claude dovrebbe invocare la skill, come frasi trigger o richieste di esempio. Aggiunto a `description` nell'elenco delle skills e conta verso il limite di 1.536 caratteri. |

435| `argument-hint` | No | Suggerimento mostrato durante l'autocompletamento per indicare gli argomenti previsti. Esempio: `[issue-number]` o `[filename] [format]`. |435| `argument-hint` | No | Suggerimento mostrato durante l'autocompletamento per indicare gli argomenti previsti. Esempio: `[issue-number]` o `[filename] [format]`. |

436| `arguments` | No | Argomenti posizionali denominati per la [sostituzione `$name`](#available-string-substitutions) nel contenuto della skill. Accetta una stringa separata da spazi o un elenco YAML. I nomi si mappano alle posizioni degli argomenti in ordine. |436| `arguments` | No | Argomenti posizionali denominati per la [sostituzione `$name`](#available-string-substitutions) nel contenuto della skill. Accetta una stringa separata da spazi o un elenco YAML. I nomi si mappano alle posizioni degli argomenti in ordine. |

437| `disable-model-invocation` | No | Impostato su `true` per impedire a Claude di caricare automaticamente questa skill. Usa per flussi di lavoro che vuoi attivare manualmente con `/name`. Impedisce anche alla skill di essere [precaricata nei subagent](/docs/it/sub-agents#preload-skills-into-subagents). A partire dalla v2.1.196, impedisce anche alla skill di eseguirsi quando un [compito programmato](/docs/it/scheduled-tasks) si attiva con la skill come suo prompt. Predefinito: `false`. |437| `disable-model-invocation` | No | Impostato su `true` per impedire a Claude di caricare automaticamente questa skill. Usa per workflow che vuoi attivare manualmente con `/name`. Impedisce anche alla skill di essere [precaricata nei subagent](/docs/it/sub-agents#preload-skills-into-subagents) e di eseguirsi quando un'[attività pianificata](/docs/it/scheduled-tasks) si attiva con la skill come suo prompt. Predefinito: `false`. |

438| `user-invocable` | No | Impostato su `false` quando solo Claude dovrebbe invocare la skill: Claude Code la nasconde dal menu `/` e non la esegue quando digiti `/name`. Usa per conoscenze di background che gli utenti non dovrebbero invocare direttamente. Predefinito: `true`. |438| `user-invocable` | No | Impostato su `false` quando solo Claude dovrebbe invocare la skill: Claude Code la nasconde dal menu `/` e non la esegue quando digiti `/name`. Usa per conoscenze di background che gli utenti non dovrebbero invocare direttamente. Predefinito: `true`. |

439| `allowed-tools` | No | Strumenti che Claude può usare senza chiedere permesso durante il turno che invoca questa skill. La concessione si cancella quando invii il tuo prossimo messaggio. Accetta una stringa separata da spazi o virgole, o un elenco YAML. Vedi [Pre-approvare strumenti per una skill](#pre-approve-tools-for-a-skill). |439| `allowed-tools` | No | Strumenti che Claude può usare senza chiedere permesso durante il turno che invoca questa skill. La concessione si cancella quando invii il tuo prossimo messaggio. Accetta una stringa separata da spazi o virgole, o un elenco YAML. Vedi [Pre-approvare strumenti per una skill](#pre-approve-tools-for-a-skill). |

440| `disallowed-tools` | No | Strumenti rimossi dal pool disponibile di Claude mentre questa skill è attiva. Usa per skills autonome che non dovrebbero mai chiamare determinati strumenti, come `AskUserQuestion` per un loop di background. Accetta una stringa separata da spazi o virgole, o un elenco YAML. La restrizione si cancella quando invii il tuo prossimo messaggio. Come le regole di negazione, il campo non può rimuovere [`EndConversation`](/docs/it/tools-reference#endconversation-tool-behavior) mentre rimane qualsiasi altro strumento. |440| `disallowed-tools` | No | Strumenti rimossi dal pool disponibile di Claude mentre questa skill è attiva. Usa per skills autonome che non dovrebbero mai chiamare determinati strumenti, come `AskUserQuestion` per un loop di background. Accetta una stringa separata da spazi o virgole, o un elenco YAML. La restrizione si cancella quando invii il tuo prossimo messaggio. Come le regole di negazione, il campo non può rimuovere [`EndConversation`](/docs/it/tools-reference#endconversation-tool-behavior) mentre rimane qualsiasi altro strumento. |


528 528 

529Se questa skill è installata in `~/.claude/skills/render-chart/`, entrambi gli occorrenze di `${CLAUDE_SKILL_DIR}` si espandono a quella directory. La regola `allowed-tools` corrisponde quindi al comando esatto che il corpo della skill dice a Claude di eseguire, quindi lo script viene eseguito senza prompt.529Se questa skill è installata in `~/.claude/skills/render-chart/`, entrambi gli occorrenze di `${CLAUDE_SKILL_DIR}` si espandono a quella directory. La regola `allowed-tools` corrisponde quindi al comando esatto che il corpo della skill dice a Claude di eseguire, quindi lo script viene eseguito senza prompt.

530 530 

531La sostituzione `${CLAUDE_PROJECT_DIR}` richiede Claude Code v2.1.196 o successivo.

532 

533Gli argomenti indicizzati usano le virgolette in stile shell, quindi racchiudi i valori multi-parola tra virgolette per passarli come un singolo argomento. Ad esempio, `/my-skill "hello world" second` fa sì che `$0` si espanda a `hello world` e `$1` a `second`. Il placeholder `$ARGUMENTS` si espande sempre alla stringa di argomenti completa come digitata.531Gli argomenti indicizzati usano le virgolette in stile shell, quindi racchiudi i valori multi-parola tra virgolette per passarli come un singolo argomento. Ad esempio, `/my-skill "hello world" second` fa sì che `$0` si espanda a `hello world` e `$1` a `second`. Il placeholder `$ARGUMENTS` si espande sempre alla stringa di argomenti completa come digitata.

534 532 

535Un placeholder indicizzato senza argomento corrispondente, come `$2` quando è stato passato un solo argomento, rimane nel contenuto invariato. Un placeholder denominato dal frontmatter [`arguments`](#frontmatter-reference) senza argomento corrispondente si espande a una stringa vuota.533Un placeholder indicizzato senza argomento corrispondente, come `$2` quando è stato passato un solo argomento, rimane nel contenuto invariato. Un placeholder denominato dal frontmatter [`arguments`](#frontmatter-reference) senza argomento corrispondente si espande a una stringa vuota.


843* Quando invochi una skill forkata mentre un'invocazione precedente della stessa skill è ancora in esecuzione841* Quando invochi una skill forkata mentre un'invocazione precedente della stessa skill è ancora in esecuzione

844* Quando un [scheduled task](/docs/it/scheduled-tasks) si attiva con la skill come suo prompt842* Quando un [scheduled task](/docs/it/scheduled-tasks) si attiva con la skill come suo prompt

845 843 

844Quando un agente in un [workflow dinamico](/docs/it/workflows) invoca una skill forkata, quell'agente attende e riceve il risultato, anche quando la skill non imposta `background: false`. Prima della v2.1.295, Claude Code non attendeva in questo caso e, quando la skill veniva eseguita in background, il suo risultato arrivava nella tua conversazione principale invece di raggiungere quell'agente.

845 

846Un fork in background viene eseguito anche con il [set di strumenti più ristretto che si applica ai subagent in background](/docs/it/sub-agents#run-subagents-in-foreground-or-background): il subagent della skill è un tipo di agent regolare, quindi l'esenzione per i subagent che forkano la conversazione non lo copre. Se i passaggi della tua skill dipendono da uno strumento al di fuori di quel set, imposta `background: false` per mantenere il set di strumenti completo.846Un fork in background viene eseguito anche con il [set di strumenti più ristretto che si applica ai subagent in background](/docs/it/sub-agents#run-subagents-in-foreground-or-background): il subagent della skill è un tipo di agent regolare, quindi l'esenzione per i subagent che forkano la conversazione non lo copre. Se i passaggi della tua skill dipendono da uno strumento al di fuori di quel set, imposta `background: false` per mantenere il set di strumenti completo.

847 847 

848Una skill forkata che viene eseguita in background applica i suoi edit al di fuori dei [checkpoints](/docs/it/checkpointing) della tua sessione, quindi `/rewind` non li annulla; usa git per ripristinarli.848Una skill forkata che viene eseguita in background applica i suoi edit al di fuori dei [checkpoints](/docs/it/checkpointing) della tua sessione, quindi `/rewind` non li annulla; usa git per ripristinarli.

sub-agents.md +3 −5

Details

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

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

388 388 

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

390 390 

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

392 392 

393Prima di v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` veniva per primo in questo ordine e sostituiva sia il parametro per invocazione che il frontmatter, incluso `model: inherit`.393Prima di v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` veniva per primo in questo ordine e sostituiva sia il parametro per invocazione che il frontmatter, incluso `model: inherit`.

394 394 

395L'impostazione della variabile su `inherit` è la stessa che lasciarla non impostata. Prima di v2.1.196, quel valore forzava i subagent sul modello della conversazione principale e ignorava le altre fonti.

396 

397Claude Code controlla il parametro per invocazione, il frontmatter e i valori della variabile di ambiente rispetto alla lista di consentimento [`availableModels`](/docs/it/model-config#restrict-model-selection) della sua organizzazione. Per un valore bloccato, sostituisce un altro modello:395Claude Code controlla il parametro per invocazione, il frontmatter e i valori della variabile di ambiente rispetto alla lista di consentimento [`availableModels`](/docs/it/model-config#restrict-model-selection) della sua organizzazione. Per un valore bloccato, sostituisce un altro modello:

398 396 

399* Quando il valore bloccato è un alias di famiglia come `opus`, Claude Code esegue il subagent sulla versione più recente di quella famiglia che la lista di consentimento consente, seguendo le stesse [regole di sostituzione e ambito del provider](/docs/it/model-config#restrict-model-selection) di `/model`. Prima di v2.1.222, Claude Code eseguiva il subagent sul modello ereditato anche per un alias di famiglia bloccato.397* Quando il valore bloccato è un alias di famiglia come `opus`, Claude Code esegue il subagent sulla versione più recente di quella famiglia che la lista di consentimento consente, seguendo le stesse [regole di sostituzione e ambito del provider](/docs/it/model-config#restrict-model-selection) di `/model`. Prima di v2.1.222, Claude Code eseguiva il subagent sul modello ereditato anche per un alias di famiglia bloccato.


620| `default` | Modalità Manual: chiede il permesso |618| `default` | Modalità Manual: chiede il permesso |

621| `acceptEdits` | Auto-accetta modifiche ai file e comandi comuni del filesystem per i percorsi nella directory di lavoro o `additionalDirectories` |619| `acceptEdits` | Auto-accetta modifiche ai file e comandi comuni del filesystem per i percorsi nella directory di lavoro o `additionalDirectories` |

622| `auto` | [Auto mode](/docs/it/permission-modes#eliminate-prompts-with-auto-mode): un classificatore in background esamina i comandi e le scritture di directory protette |620| `auto` | [Auto mode](/docs/it/permission-modes#eliminate-prompts-with-auto-mode): un classificatore in background esamina i comandi e le scritture di directory protette |

623| `dontAsk` | Auto-nega prompt di autorizzazione. Gli strumenti esplicitamente consentiti continuano a funzionare; `AskUserQuestion`, strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool), e strumenti connettore [che la sua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni dove quella impostazione raggiunge Claude Code vengono negati anche se li ha consentiti |621| `dontAsk` | Nega automaticamente le richieste di permesso. Gli strumenti consentiti esplicitamente continuano a funzionare; `AskUserQuestion`, gli strumenti MCP contrassegnati con [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool), le [letture da percorsi di rete](/docs/it/permissions#network-paths) e gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), nelle sessioni in cui quell'impostazione raggiunge Claude Code, vengono negati anche se li hai consentiti |

624| `bypassPermissions` | [Salta i prompt di autorizzazione](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode). Un subagent viene eseguito in questa modalità solo quando la conversazione principale lo fa |622| `bypassPermissions` | [Salta i prompt di autorizzazione](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode). Un subagent viene eseguito in questa modalità solo quando la conversazione principale lo fa |

625| `plan` | Plan mode (esplorazione di sola lettura) |623| `plan` | Plan mode (esplorazione di sola lettura) |

626 624 


1150* **Prompt di sistema**: il prompt dell'agente stesso più i dettagli sull'ambiente che Claude Code aggiunge, non il prompt di sistema di Claude Code. I subagent personalizzati definiscono il proprio nel [corpo markdown](#write-subagent-files) o nel campo `prompt`. Gli agenti integrati hanno prompt predefiniti.1148* **Prompt di sistema**: il prompt dell'agente stesso più i dettagli sull'ambiente che Claude Code aggiunge, non il prompt di sistema di Claude Code. I subagent personalizzati definiscono il proprio nel [corpo markdown](#write-subagent-files) o nel campo `prompt`. Gli agenti integrati hanno prompt predefiniti.

1151* **Messaggio dell'attività**: il prompt di delega che Claude scrive quando passa il lavoro.1149* **Messaggio dell'attività**: il prompt di delega che Claude scrive quando passa il lavoro.

1152* **File CLAUDE.md**: ogni livello della [gerarchia CLAUDE.md](/docs/it/memory#how-claude-md-files-load) caricato dalla conversazione principale, inclusi `~/.claude/CLAUDE.md`, le regole del progetto, `CLAUDE.local.md`, i file di policy gestiti ed eventuali [file `AGENTS.md`](/docs/it/memory#agents-md) caricati come istruzioni del progetto. Gli agenti integrati Explore e Plan li saltano. Un subagent la cui definizione imposta [`omitClaudeMd`](#supported-frontmatter-fields) carica solo i file di policy gestiti, oppure nessuno quando la definizione proviene dalle [impostazioni gestite](#choose-the-subagent-scope).1150* **File CLAUDE.md**: ogni livello della [gerarchia CLAUDE.md](/docs/it/memory#how-claude-md-files-load) caricato dalla conversazione principale, inclusi `~/.claude/CLAUDE.md`, le regole del progetto, `CLAUDE.local.md`, i file di policy gestiti ed eventuali [file `AGENTS.md`](/docs/it/memory#agents-md) caricati come istruzioni del progetto. Gli agenti integrati Explore e Plan li saltano. Un subagent la cui definizione imposta [`omitClaudeMd`](#supported-frontmatter-fields) carica solo i file di policy gestiti, oppure nessuno quando la definizione proviene dalle [impostazioni gestite](#choose-the-subagent-scope).

1153* **Stato Git**: uno snapshot che Claude Code legge dal tuo repository all'avvio del subagent. Assente al di fuori di un repository Git o quando lo snapshot è disattivato; consulta [`includeGitInstructions`](/docs/it/settings-reference#includegitinstructions). Explore e Plan lo saltano in ogni caso.1151* **Stato Git**: uno snapshot che Claude Code legge dal tuo repository all'avvio del subagent. Per un subagent nel [proprio worktree](/docs/it/worktrees#isolate-subagents-with-worktrees) di quel repository, lo snapshot mostra il branch, lo stato e i commit recenti del worktree. Assente al di fuori di un repository Git o quando lo snapshot è disattivato; consulta [`includeGitInstructions`](/docs/it/settings-reference#includegitinstructions). Explore e Plan lo saltano in ogni caso.

1154* **Skill precaricate**: il contenuto completo di ogni skill indicata nel [campo `skills`](#preload-skills-into-subagents) dell'agente. Gli agenti integrati non precaricano skill.1152* **Skill precaricate**: il contenuto completo di ogni skill indicata nel [campo `skills`](#preload-skills-into-subagents) dell'agente. Gli agenti integrati non precaricano skill.

1155* **Elenco degli agenti fratelli**: un [promemoria di sistema](/docs/it/glossary#system-reminder) che elenca `main` e ogni altro agente con nome nella sessione, ciascuno un valore `to` valido per [`SendMessage`](#resume-subagents). Richiede Claude Code v2.1.206 o successivo. L'elenco compare solo quando gli strumenti del subagent includono `SendMessage` e almeno un altro agente ha un nome, sia che Claude gliel'abbia dato al momento dell'avvio, sia che venga eseguito come membro di un [team di agenti](/docs/it/agent-teams). È uno snapshot acquisito all'avvio del subagent, quindi gli agenti che ricevono un nome in seguito non compaiono.1153* **Elenco degli agenti fratelli**: un [promemoria di sistema](/docs/it/glossary#system-reminder) che elenca `main` e ogni altro agente con nome nella sessione, ciascuno un valore `to` valido per [`SendMessage`](#resume-subagents). Richiede Claude Code v2.1.206 o successivo. L'elenco compare solo quando gli strumenti del subagent includono `SendMessage` e almeno un altro agente ha un nome, sia che Claude gliel'abbia dato al momento dell'avvio, sia che venga eseguito come membro di un [team di agenti](/docs/it/agent-teams). È uno snapshot acquisito all'avvio del subagent, quindi gli agenti che ricevono un nome in seguito non compaiono.

1156 1154 

Details

122}122}

123```123```

124 124 

125<h2 id="see-session-status-in-your-terminal">

126 Visualizzare lo stato della sessione nel terminale

127</h2>

128 

129Se il tuo terminale implementa l'OSC 7501 Program Status Protocol, può mostrare se ogni sessione interattiva di Claude Code è al lavoro, in attesa di te o completata, il che è utile quando esegui attività lunghe o più sessioni contemporaneamente. Non c'è nulla da attivare in Claude Code. Per scoprire se il tuo terminale implementa il protocollo e dove mostra lo stato, consulta la sua documentazione.

130 

131Se lo implementa e non vedi alcuno stato per una sessione, verifica ciascuna di queste cause:

132 

133* **Versione di Claude Code**: la segnalazione dello stato richiede Claude Code v2.1.295 o successiva. Esegui `claude --version` nella tua shell per verificarlo.

134* **tmux**: all'interno di tmux, Claude Code verifica il supporto in tmux invece che nel tuo terminale, e [`allow-passthrough`](#configure-tmux) non ha alcun effetto su questo. Avvia la sessione al di fuori di tmux.

135* **Sessione in background**: una [sessione in background](/docs/it/agent-view) non segnala il proprio stato al tuo terminale, nemmeno mentre sei collegato a essa. La vista agenti mostra invece il suo stato.

136* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](/docs/it/env-vars#variables)**: se imposti questa variabile su `1`, Claude Code non verifica il supporto né segnala lo stato. Rimuovila.

137 

125<h2 id="configure-tmux">138<h2 id="configure-tmux">

126 Configurare tmux139 Configurare tmux

127</h2>140</h2>

tools-reference.md +32 −11

Details

279 279 

280Lo strumento Edit esegue la sostituzione esatta di stringhe. Accetta un `old_string` e un `new_string` e sostituisce il primo con il secondo. Non utilizza regex o fuzzy matching.280Lo strumento Edit esegue la sostituzione esatta di stringhe. Accetta un `old_string` e un `new_string` e sostituisce il primo con il secondo. Non utilizza regex o fuzzy matching.

281 281 

282Tre controlli devono superare affinché una modifica venga applicata. Prima di qualsiasi controllo, un percorso corrispondente a una [regola di negazione `Read`](/docs/it/permissions#tool-specific-permission-rules) viene rifiutato, inclusa la creazione di un nuovo file lì. Il rifiuto richiede Claude Code v2.1.208 o successivo.282Questi controlli devono essere superati affinché una modifica venga applicata. Prima di qualsiasi controllo, un percorso corrispondente a una [regola di negazione `Read`](/docs/it/permissions#tool-specific-permission-rules) viene rifiutato, inclusa la creazione di un nuovo file lì. Il rifiuto richiede Claude Code v2.1.208 o successivo.

283 283 

284* **Read-before-edit**: Claude legge il file nella conversazione corrente prima di modificarlo, e una lettura interrotta con un avviso [`PARTIAL view`](#read-tool-behavior) non conta. Claude Opus 4.6, Claude Haiku 4.5 e i modelli più vecchi richiedono sempre la lettura. I modelli più recenti possono modificare un file non letto quando la lettura non richiederebbe un prompt di autorizzazione e lo strumento Read è disponibile.284* **Read-before-edit**: Claude legge il file nella conversazione corrente prima di modificarlo, e una lettura interrotta con un [avviso `PARTIAL view`](#large-files) non conta. Claude Opus 4.6, Claude Haiku 4.5 e i modelli più vecchi richiedono sempre la lettura. I modelli più recenti possono modificare un file non letto quando la lettura non richiederebbe una richiesta di permesso e lo strumento Read è disponibile.

285* **Match**: `old_string` deve apparire nel file esattamente come scritto. Una singola differenza di spazio bianco o indentazione è sufficiente per non trovare una corrispondenza.285* **Match**: `old_string` deve apparire nel file esattamente come scritto. Una singola differenza di spazio bianco o indentazione è sufficiente per non trovare una corrispondenza.

286* **Uniqueness**: `old_string` deve apparire esattamente una volta. Quando appare più di una volta, Claude fornisce una stringa più lunga con contesto circostante sufficiente per identificare un'occorrenza, oppure imposta `replace_all: true` per sostituirle tutte.286* **Uniqueness**: `old_string` deve apparire esattamente una volta. Quando appare più di una volta, Claude fornisce una stringa più lunga con contesto circostante sufficiente per identificare un'occorrenza, oppure imposta `replace_all: true` per sostituirle tutte.

287 287 

288Un file che è cambiato su disco dopo che Claude l'ha letto per l'ultima volta può comunque essere modificato quando `old_string` corrisponde esattamente al contenuto attuale in modo univoco e Claude Code può leggere il file senza richiedere un prompt. La corrispondenza con il contenuto attuale del file mantiene questa sicurezza, e il risultato nota che il file contiene altre modifiche in modo che Claude lo rilegga prima di modifiche che dipendono dal contenuto circostante. In qualsiasi altro caso, come un `old_string` obsoleto o uno che corrisponde più di una volta senza `replace_all`, Claude legge di nuovo il file prima di modificarlo. La gestione rilassata di file non letti e modificati richiede Claude Code v2.1.208 o successivo; prima di ciò, Claude Code rifiutava qualsiasi modifica a un file che non aveva letto nella conversazione o che era cambiato su disco dopo la lettura.288Un file che è cambiato su disco dopo che Claude l'ha letto per l'ultima volta può comunque essere modificato quando `old_string` corrisponde esattamente al contenuto attuale in modo univoco e Claude Code può leggere il file senza richiedere un prompt. La corrispondenza con il contenuto attuale del file mantiene questa sicurezza, e il risultato nota che il file contiene altre modifiche in modo che Claude lo rilegga prima di modifiche che dipendono dal contenuto circostante. In qualsiasi altro caso, come un `old_string` obsoleto o uno che corrisponde più di una volta senza `replace_all`, Claude legge di nuovo il file prima di modificarlo. La gestione rilassata di file non letti e modificati richiede Claude Code v2.1.208 o successivo; prima di ciò, Claude Code rifiutava qualsiasi modifica a un file che non aveva letto nella conversazione o che era cambiato su disco dopo la lettura.

289 289 

290La visualizzazione di un file con Bash soddisfa il requisito read-before-edit quando il comando è `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep`, o `rg` su un singolo file senza pipe o reindirizzamenti. L'output tramite pipe e altri comandi Bash non contano verso il controllo read-before-edit.290Claude può anche modificare un file senza un Read separato dopo averlo visualizzato con un comando Bash come `cat` o `grep`. Questi comandi sono `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep` e `rg`, ciascuno eseguito su un singolo file senza pipe o reindirizzamenti. Una ricerca che non stampa corrispondenze non conta come lettura, né la conta qualsiasi comando al di fuori di questo elenco.

291 291 

292Quando Claude visualizza un file in questo modo, Claude Code carica anche gli eventuali [`CLAUDE.md` delle sottodirectory](/docs/it/memory#how-claude-md-files-load) e le [regole con ambito di percorso](/docs/it/memory#path-specific-rules) che si applicano a quel file. Consulta [Regole di permesso Read e Edit](/docs/it/permissions#read-and-edit) per sapere quali comandi Bash sono coperti dalle tue regole di negazione `Read` e `Edit`.292Quando Claude visualizza un file in questo modo, Claude Code carica anche gli eventuali [`CLAUDE.md` delle sottodirectory](/docs/it/memory#how-claude-md-files-load) e le [regole con ambito di percorso](/docs/it/memory#path-specific-rules) che si applicano a quel file. Consulta [Regole di permesso Read e Edit](/docs/it/permissions#read-and-edit) per sapere quali comandi Bash sono coperti dalle tue regole di negazione `Read` e `Edit`.

293 293 

294<h3 id="non-utf-8-files">

295 File non UTF-8

296</h3>

297 

298Claude non può usare [NotebookEdit](#notebookedit-tool-behavior) su un file che non è UTF-8 valido. Lo stesso vale per Edit, a meno che il file non inizi con un byte-order mark UTF-16 little-endian. Quando Claude ci prova, lo strumento rifiuta la modifica e lascia il file intatto. I file rifiutati includono testo non ASCII salvato in una codifica legacy come Windows-1252 o Shift-JIS, file binari e file UTF-8 con una sequenza di byte non valida.

299 

300Gli strumenti rifiutano perché salvano di nuovo l'intero file come UTF-8, il che sostituirebbe ogni byte che non riescono a decodificare con il carattere sostitutivo `U+FFFD`. Invece, l'[errore che Claude riceve](/docs/it/errors#file-is-not-valid-utf-8) gli indica di apportare la modifica con un comando shell che mantiene la codifica del file, oppure di chiederti se convertirlo prima in UTF-8.

301 

302Claude può comunque sostituire un file di questo tipo con Write, a meno che il nuovo contenuto non contenga `U+FFFD`, il carattere che Read mostra a Claude al posto dei byte che non riesce a decodificare. Questa protezione impedisce a Claude di riscrivere il testo illeggibile che ha letto. Quando Write sostituisce il file, salva il nuovo contenuto come UTF-8, quindi la codifica originale del file va persa.

303 

294<h2 id="endconversation-tool-behavior">304<h2 id="endconversation-tool-behavior">

295 Comportamento dello strumento EndConversation305 Comportamento dello strumento EndConversation

296</h2>306</h2>


455* `insert`: aggiungi una nuova cella dopo la target. Senza `cell_id`, la nuova cella va all'inizio del notebook. Richiede `cell_type` impostato a `code` o `markdown`.465* `insert`: aggiungi una nuova cella dopo la target. Senza `cell_id`, la nuova cella va all'inizio del notebook. Richiede `cell_type` impostato a `code` o `markdown`.

456* `delete`: rimuovi la cella target.466* `delete`: rimuovi la cella target.

457 467 

468NotebookEdit rifiuta un file notebook che non viene decodificato come UTF-8, secondo la [stessa regola di Edit](#non-utf-8-files), e non scrive nulla.

469 

458Le regole di autorizzazione utilizzano il formato di percorso `Edit(...)`. Una regola come `Edit(notebooks/**)` copre le chiamate NotebookEdit su file in quella directory.470Le regole di autorizzazione utilizzano il formato di percorso `Edit(...)`. Una regola come `Edit(notebooks/**)` copre le chiamate NotebookEdit su file in quella directory.

459 471 

460<h2 id="powershell-tool">472<h2 id="powershell-tool">


514* `"shell": "powershell"` su singoli [hook di comando](/docs/it/hooks#command-hook-fields): esegue quell'hook in PowerShell. Gli hook avviano PowerShell direttamente, quindi funziona indipendentemente da `CLAUDE_CODE_USE_POWERSHELL_TOOL`.526* `"shell": "powershell"` su singoli [hook di comando](/docs/it/hooks#command-hook-fields): esegue quell'hook in PowerShell. Gli hook avviano PowerShell direttamente, quindi funziona indipendentemente da `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

515* `shell: powershell` nel [frontmatter delle skill](/docs/it/skills#frontmatter-reference): esegue i blocchi `` !`command` `` in PowerShell. Richiede che lo strumento PowerShell sia abilitato.527* `shell: powershell` nel [frontmatter delle skill](/docs/it/skills#frontmatter-reference): esegue i blocchi `` !`command` `` in PowerShell. Richiede che lo strumento PowerShell sia abilitato.

516 528 

517Lo stesso comportamento di ripristino della directory di lavoro della sessione principale descritto nella sezione dello strumento Bash si applica ai comandi PowerShell, inclusa la variabile di ambiente `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.529I comandi PowerShell seguono lo [stesso comportamento di ripristino della directory di lavoro della sessione principale](#what-persists-between-commands) dei comandi Bash, inclusa la variabile d'ambiente `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

530 

531I comandi PowerShell ricevono anche le variabili che gli hook rendono persistenti tramite `CLAUDE_ENV_FILE`, alle condizioni descritte in [Variabili persistenti nei comandi PowerShell](/docs/it/hooks#persisted-variables-in-powershell-commands). Richiede Claude Code v2.1.296 o versioni successive.

518 532 

519Il codice di uscita 1 da `grep`, `rg`, `egrep`, `fgrep`, `findstr` e `git grep` significa nessuna corrispondenza. Il codice di uscita 1 da `git diff` significa che esistono differenze. Nessuno di questi risultati viene segnalato a Claude come un errore di comando. Per `robocopy`, i codici di uscita da 0 a 7 sono risultati informativi, come file copiati o file aggiuntivi rilevati. I codici di uscita 8 o superiori contano come errori.533Il codice di uscita 1 da `grep`, `rg`, `egrep`, `fgrep`, `findstr` e `git grep` significa nessuna corrispondenza. Il codice di uscita 1 da `git diff` significa che esistono differenze. Nessuno di questi risultati viene segnalato a Claude come un errore di comando. Per `robocopy`, i codici di uscita da 0 a 7 sono risultati informativi, come file copiati o file aggiuntivi rilevati. I codici di uscita 8 o superiori contano come errori.

520 534 


547 561 

548Lo strumento Read accetta un percorso di file e restituisce i contenuti con numeri di riga. Claude è istruito a passare sempre percorsi assoluti.562Lo strumento Read accetta un percorso di file e restituisce i contenuti con numeri di riga. Claude è istruito a passare sempre percorsi assoluti.

549 563 

550Per impostazione predefinita, Read restituisce il file dall'inizio. Quando una lettura dell'intero file supera il limite di token, Read restituisce la prima pagina con un avviso `PARTIAL view` che comunica a Claude quanto del file ha ricevuto e come leggere di più con `offset` e `limit`. Una lettura che passa un `offset` o `limit` esplicito e supera comunque il limite di token restituisce un errore.

551 

552Una lettura con un `limit` esplicito si interrompe non appena le righe selezionate superano ciò che il limite di token potrebbe mai contenere e restituisce un errore senza caricare il resto dell'intervallo. L'errore comunica a Claude di usare un `limit` più piccolo, o di cercare contenuti specifici con [Grep](#grep-tool-behavior) invece quando una singola riga è così grande. Prima della v2.1.208, Claude Code caricava l'intero intervallo in memoria prima di rifiutarlo, quindi la lettura di un file con una singola riga estremamente lunga poteva esaurire la memoria.

553 

554La lettura di un file vuoto restituisce un avviso che il file esiste ma i suoi contenuti sono vuoti, e un `offset` oltre l'ultima riga restituisce un avviso che fornisce il conteggio delle righe del file. Prima della v2.1.208, la lettura di un file vuoto restituiva invece l'avviso past-the-end.564La lettura di un file vuoto restituisce un avviso che il file esiste ma i suoi contenuti sono vuoti, e un `offset` oltre l'ultima riga restituisce un avviso che fornisce il conteggio delle righe del file. Prima della v2.1.208, la lettura di un file vuoto restituiva invece l'avviso past-the-end.

555 565 

556Read gestisce diversi tipi di file oltre al testo semplice:566Read gestisce diversi tipi di file oltre al testo semplice:

557 567 

558* **Immagini**: PNG, JPG e altri formati di immagine vengono restituiti come contenuto visivo che Claude può vedere, non come byte grezzi. Claude Code ridimensiona e ricomprime le immagini grandi per adattarsi ai limiti di dimensione dell'immagine del modello prima di inviarle, quindi Claude potrebbe vedere una versione ridotta di uno screenshot grande. Un'immagine che è ancora più grande di 500KB dopo quel ridimensionamento viene ricodificata come JPEG a qualità ridotta con le sue dimensioni in pixel invariate. Se Claude perde dettagli a livello di pixel fine in un'immagine grande, chiedigli di ritagliare prima la regione di interesse, ad esempio con ImageMagick tramite Bash.568* **Immagini**: PNG, JPG e altri formati di immagine vengono restituiti come contenuto visivo che Claude può vedere, non come byte grezzi. Claude Code ridimensiona e ricomprime le immagini grandi per adattarsi ai limiti di dimensione dell'immagine del modello prima di inviarle, quindi Claude potrebbe vedere una versione ridotta di uno screenshot grande. Un'immagine che è ancora più grande di 500KB dopo quel ridimensionamento viene ricodificata come JPEG a qualità ridotta con le sue dimensioni in pixel invariate. Se Claude perde dettagli a livello di pixel fine in un'immagine grande, chiedigli di ritagliare prima la regione di interesse, ad esempio con ImageMagick tramite Bash.

559* **PDF**: Claude legge i file `.pdf` brevi per intero. Per i PDF più lunghi di 10 pagine, legge in intervalli con un parametro `pages`, come `"1-5"`, fino a 20 pagine alla volta. Le letture di intervalli di pagine rendono le pagine con `pdftoppm` da poppler-utils, quindi installarlo con `brew install poppler` su macOS o `apt-get install poppler-utils` su Debian e Ubuntu. Su Windows e altre piattaforme, installare una build di poppler che metta `pdftoppm` nel vostro `PATH`. Senza di esso, una lettura di intervallo di pagine fallisce con `pdftoppm is not installed`.569* **PDF**: Claude legge i file `.pdf` brevi per intero. Per i PDF più lunghi di 10 pagine, legge in intervalli con un parametro `pages`, come `"1-5"`, fino a 20 pagine alla volta. Le letture di intervalli di pagine rendono le pagine con `pdftoppm` da poppler-utils, quindi installarlo con `brew install poppler` su macOS o `apt-get install poppler-utils` su Debian e Ubuntu. Su Windows e altre piattaforme, installare una build di poppler che metta `pdftoppm` nel vostro `PATH`. Senza di esso, una lettura di intervallo di pagine fallisce con `pdftoppm is not installed`.

560* **Notebook Jupyter**: i file `.ipynb` restituiscono tutte le celle con i loro output, inclusi codice, markdown e visualizzazioni. Claude Code rifiuta di leggere un file notebook più grande di 100 MB; l'errore comunica a Claude come leggere una porzione del notebook invece, come una sezione di celle, con un comando shell.570* **Notebook Jupyter**: i file `.ipynb` restituiscono tutte le celle con i loro output, inclusi codice, markdown e visualizzazioni. Un notebook le cui celle superano i 256 KB, o il [limite di token](#large-files), restituisce invece un errore. Claude Code rifiuta di leggere un file notebook più grande di 100 MB; l'errore comunica a Claude come leggere una porzione del notebook invece, come una sezione di celle, con un comando shell.

561 571 

562Read legge solo file, non directory. Claude elenca i contenuti della directory con un comando shell come `ls`.572Read legge solo file, non directory. Claude elenca i contenuti della directory con un comando shell come `ls`.

563 573 

574<h3 id="large-files">

575 File di grandi dimensioni

576</h3>

577 

578Claude può leggere un file di testo più grande di quanto restituisca una singola chiamata Read. Per impostazione predefinita, una chiamata restituisce al massimo 25.000 token, o il valore impostato in [`CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS`](/docs/it/env-vars), e rifiuta un file intero di oltre 256 KB, quindi Claude legge un file più grande a pagine con `offset` e `limit`. Su Claude Code v2.1.296 o versioni successive può invece leggere l'intero file, o un lungo intervallo di righe, in una sola chiamata impostando `allow_large: true` quando necessario, ad esempio perché hai chiesto l'intero file. Quella lettura viene dimensionata in base allo spazio rimasto nella [finestra di contesto](/docs/it/context-window) della sessione invece che ai limiti predefiniti. Immagini, PDF e notebook mantengono i loro limiti.

579 

580Cosa riceve Claude quando una lettura supera i limiti predefiniti:

581 

582* **File intero oltre il limite di token**: la prima pagina del file, con un avviso `PARTIAL view` che indica quanto del file ha ricevuto e come leggere di più con `offset` e `limit`

583* **File intero oltre 256 KB, o una lettura con `offset` o `limit` oltre il limite di token**: un errore che gli indica di leggere una porzione con `offset` e `limit`, o di cercare invece contenuti specifici con [Grep](#grep-tool-behavior)

584 

564<h2 id="sendfeedback-tool-behavior">585<h2 id="sendfeedback-tool-behavior">

565 Comportamento dello strumento SendFeedback586 Comportamento dello strumento SendFeedback

566</h2>587</h2>


734 Comportamento dello strumento Write755 Comportamento dello strumento Write

735</h2>756</h2>

736 757 

737Lo strumento Write crea un nuovo file o sovrascrive uno esistente con il contenuto completo fornito. Non aggiunge o unisce.758Lo strumento Write crea un nuovo file o sovrascrive uno esistente con il contenuto completo fornito. Non aggiunge contenuto né esegue il merge. Write sovrascrive anche un file esistente i cui byte non possono essere decodificati e salva il nuovo contenuto come UTF-8, come descritto in [file non UTF-8](#non-utf-8-files).

738 759 

739Se Claude deve leggere un file esistente nella conversazione corrente prima di sovrascriverlo dipende dal modello e dal file:760Se Claude deve leggere un file esistente nella conversazione corrente prima di sovrascriverlo dipende dal modello e dal file:

740 761 

741* Claude Opus 4.6, Claude Haiku 4.5 e i modelli più vecchi richiedono sempre la lettura, quindi una Write su un file esistente non letto fallisce con un errore.762* Claude Opus 4.6, Claude Haiku 4.5 e i modelli più vecchi richiedono sempre la lettura, quindi una Write su un file esistente non letto fallisce con un errore.

742* I modelli più recenti possono sovrascrivere un file che non hanno mai letto in questa sessione nelle stesse condizioni di [read-before-edit](#edit-tool-behavior): leggerlo non richiederebbe un prompt di autorizzazione e lo strumento Read è disponibile.763* I modelli più recenti possono sovrascrivere un file che non hanno mai letto in questa sessione nelle stesse condizioni di [read-before-edit](#edit-tool-behavior): leggerlo non richiederebbe un prompt di autorizzazione e lo strumento Read è disponibile.

743* I notebook Jupyter e i file che Claude ha letto solo parzialmente con un avviso [`PARTIAL view`](#read-tool-behavior) richiedono la lettura su ogni modello.764* I notebook Jupyter e i file che Claude ha letto solo parzialmente con un [avviso `PARTIAL view`](#large-files) richiedono la lettura su ogni modello.

744 765 

745Questo vincolo non si applica ai nuovi file. Prima della v2.1.228, ogni modello richiedeva la lettura prima di sovrascrivere un file esistente.766Questo vincolo non si applica ai nuovi file. Prima della v2.1.228, ogni modello richiedeva la lettura prima di sovrascrivere un file esistente.

746 767 

Details

1212Se vedi `API Error: 403 Request not allowed` dopo l'accesso:1212Se vedi `API Error: 403 Request not allowed` dopo l'accesso:

1213 1213 

1214* **Utenti Claude Pro/Max**: verifica che il tuo abbonamento sia attivo in [claude.ai/settings](https://claude.ai/settings)1214* **Utenti Claude Pro/Max**: verifica che il tuo abbonamento sia attivo in [claude.ai/settings](https://claude.ai/settings)

1215* **Utenti della Console Anthropic**: conferma che il tuo account ha il ruolo "Claude Code" o "Developer". Gli amministratori assegnano questo nella Console Anthropic sotto Impostazioni → Membri.1215* **Utenti della Console Anthropic**: conferma che il tuo account ha il ruolo "Claude Code" o "Developer". Gli amministratori lo assegnano nella pagina Members della Console all'indirizzo [platform.claude.com/settings/members](https://platform.claude.com/settings/members).

1216* **Dietro un proxy**: i proxy aziendali possono interferire con le richieste API. Vedi [configurazione di rete](/docs/it/network-config) per la configurazione del proxy.1216* **Dietro un proxy**: i proxy aziendali possono interferire con le richieste API. Vedi [configurazione di rete](/docs/it/network-config) per la configurazione del proxy.

1217 1217 

1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">

vs-code.md +3 −2

Details

237 237 

238Per ripristinare una sessione archiviata, espandi **Archived sessions** e fai clic su **Unarchive session**. Per ripristinare ogni sessione archiviata contemporaneamente, passa il mouse sull'intestazione **Archived sessions** nell'elenco delle sessioni nella Activity Bar e fai clic sulla sua icona di ripristino, che richiede Claude Code v2.1.277 o successivo. Prima della v2.1.257, l'azione era **Delete session**, che nascondeva una sessione senza modo di ripristinarla. Le sessioni che hai eliminato allora appaiono sotto **Archived sessions** dopo l'aggiornamento.238Per ripristinare una sessione archiviata, espandi **Archived sessions** e fai clic su **Unarchive session**. Per ripristinare ogni sessione archiviata contemporaneamente, passa il mouse sull'intestazione **Archived sessions** nell'elenco delle sessioni nella Activity Bar e fai clic sulla sua icona di ripristino, che richiede Claude Code v2.1.277 o successivo. Prima della v2.1.257, l'azione era **Delete session**, che nascondeva una sessione senza modo di ripristinarla. Le sessioni che hai eliminato allora appaiono sotto **Archived sessions** dopo l'aggiornamento.

239 239 

240Quando la conversazione che riprendi è terminata in modalità plan, Claude Code ripristina la modalità plan. Richiede Claude Code v2.1.246 o successivo. Claude Code non la ripristina in due casi:240Quando la conversazione che riprendi è terminata in modalità plan, Claude Code ripristina la modalità plan. Richiede Claude Code v2.1.246 o successivo. Claude Code non la ripristina in questi casi:

241 241 

242* L'estensione [sceglie la modalità di autorizzazione iniziale](/docs/it/permission-modes#switch-permission-modes) da `claudeCode.initialPermissionMode` o una scelta che si trasporta da una conversazione precedente242* L'estensione [sceglie la modalità di autorizzazione iniziale](/docs/it/permission-modes#switch-permission-modes) da `claudeCode.initialPermissionMode` o una scelta che si trasporta da una conversazione precedente

243* Hai `claudeCode.claudeProcessWrapper` configurato243* Hai `claudeCode.claudeProcessWrapper` configurato

244* Una [regola di negazione](/docs/it/permissions#manage-permissions) rimuove lo strumento [`ExitPlanMode`](/docs/it/tools-reference)

244 245 

245<h3 id="resume-cloud-sessions-from-claude-ai">246<h3 id="resume-cloud-sessions-from-claude-ai">

246 Riprendi sessioni cloud da Claude.ai247 Riprendi sessioni cloud da Claude.ai


479 480 

480Claude apre nuove schede per le attività del browser e condivide lo stato di accesso del tuo browser, quindi può accedere a qualsiasi sito a cui sei già connesso.481Claude apre nuove schede per le attività del browser e condivide lo stato di accesso del tuo browser, quindi può accedere a qualsiasi sito a cui sei già connesso.

481 482 

482Per fare in modo che ogni sessione si connetta al tuo browser al suo avvio, senza digitare `@browser`, consulta [Abilitare Chrome per impostazione predefinita](/docs/it/chrome#enable-chrome-by-default). Per i casi in cui Claude Code ti chiede conferma prima di un'azione del browser in una sessione connessa in questo modo, consulta [Richieste di permesso nelle sessioni di VS Code](/docs/it/chrome#permission-prompts-in-vs-code-sessions).483Per fare in modo che ogni sessione si connetta al tuo browser al suo avvio, senza digitare `@browser`, consulta [Abilitare Chrome per impostazione predefinita](/docs/it/chrome#enable-chrome-by-default). Per i casi in cui Claude Code ti chiede conferma prima di un'azione del browser, consulta [Richieste di permesso nelle sessioni di VS Code](/docs/it/chrome#permission-prompts-in-vs-code-sessions).

483 484 

484Per le istruzioni di configurazione, l'elenco completo delle funzionalità e la risoluzione dei problemi, consulta [Usa Claude Code con Chrome](/docs/it/chrome).485Per le istruzioni di configurazione, l'elenco completo delle funzionalità e la risoluzione dei problemi, consulta [Usa Claude Code con Chrome](/docs/it/chrome).

485 486 

workflows.md +1 −1

Details

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

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

513 513 

514Quando la lista di autorizzazione [`availableModels`](/docs/it/model-config#restrict-model-selection) della tua organizzazione blocca un modello che lo script richiede per un agente, quell'agente viene eseguito su un modello sostituito invece, seguendo le stesse [regole di sostituzione dei subagenti](/docs/it/sub-agents#choose-a-model). La vista di progresso dell'esecuzione in [`/workflows`](#watch-the-run) mostra un avviso che nomina sia i modelli richiesti che quelli sostituiti.514Quando l'[allowlist `availableModels`](/docs/it/model-config#restrict-model-selection) della tua organizzazione blocca un modello che lo script richiede per un agente, quell'agente viene eseguito su un modello sostituito invece, seguendo le stesse [regole di sostituzione dei subagent](/docs/it/sub-agents#choose-a-model).

515 515 

516<h3 id="set-a-size-guideline">516<h3 id="set-a-size-guideline">

517 Impostare una linea guida di dimensione517 Impostare una linea guida di dimensione

worktrees.md +3 −1

Details

268 268 

269 Lo stesso read-through copre `.claude/agents` e `.claude/commands`. Per le skill, il read-through richiede Claude Code v2.1.277 o successivo.269 Lo stesso read-through copre `.claude/agents` e `.claude/commands`. Per le skill, il read-through richiede Claude Code v2.1.277 o successivo.

270 270 

271Tutti questi si applicano indipendentemente dal fatto che creiate il worktree con `--worktree`, con `git worktree add`, o attraverso l'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions).271Tutti questi si applicano indipendentemente dal fatto che tu crei il worktree con `--worktree` o con `git worktree add`.

272 

273In una sessione di worktree che avvii dall'[app desktop](/docs/it/desktop#work-in-parallel-with-sessions), Claude Code legge la configurazione del progetto, come impostazioni, hook, skill, agenti, comandi e server [`.mcp.json`](/docs/it/mcp#project-scope), dalla radice del checkout principale anziché dal worktree. I comandi degli hook vengono eseguiti in quella radice e `${CLAUDE_PROJECT_DIR}` punta a essa. Per raggiungere i file su cui Claude sta lavorando, leggi il percorso del worktree dal [campo di input `cwd`](/docs/it/hooks#common-input-fields) dell'hook. I file `CLAUDE.md` e `.claude/rules/` vengono comunque caricati dal worktree.

272 274 

273<h2 id="manage-worktrees-manually">275<h2 id="manage-worktrees-manually">

274 Gestire i worktree manualmente276 Gestire i worktree manualmente