SpyBara
Go Premium

Documentation 2026-10-24 22:59 UTC to 2026-10-25 23:58 UTC

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

324 * La chiamata era single-shot, quindi non esiste alcun risultato precedente.324 * La chiamata era single-shot, quindi non esiste alcun risultato precedente.

325 * L'arresto anomalo è avvenuto al primo turno.325 * L'arresto anomalo è avvenuto al primo turno.

326 * Il turno prima dell'arresto anomalo era il `/clear` stesso, quindi il suo risultato copre solo il ripristino.326 * Il turno prima dell'arresto anomalo era il `/clear` stesso, quindi il suo risultato copre solo il ripristino.

3272. Sommare invece il `usage` sui messaggi dell'assistente, contando ogni risposta API una volta, come fa l'esempio [Track per-step usage](#track-per-step-usage). In modalità single-shot, sommare tutti; in modalità input streaming, sommare quelli arrivati dopo l'ultimo risultato. Questo ti dà i token di input e cache del ciclo principale. L'utilizzo dei subagent non è recuperabile in questo modo, e nemmeno i token di output o il costo in USD, perché [il `output_tokens` per passaggio è un segnaposto](#read-output-tokens-from-the-result-message).3272. Sommare invece il `usage` sui messaggi dell'assistente, contando ogni risposta API una volta, come fa l'esempio [Tracciare l'utilizzo per step](#track-per-step-usage). In modalità single-shot, sommare tutti; in modalità input streaming, sommare quelli arrivati dopo l'ultimo risultato. Questo ti dà i token di input e cache del ciclo principale. L'utilizzo dei subagent non è recuperabile in questo modo, e nemmeno i token di output o il costo in USD, perché [il `output_tokens` per passaggio è un segnaposto](#read-output-tokens-from-the-result-message).

328 328 

329### Tracciare i token della cache329### Tracciare i token della cache

330 330 

Details

372 372 

373### Configurare i tool consentiti373### Configurare i tool consentiti

374 374 

375L'opzione `tools` e gli elenchi consentiti/non consentiti influiscono su due livelli: la disponibilità, che controlla se un tool appare nel contesto di Claude, e il permesso, che controlla se una chiamata viene approvata una volta che Claude la tenta. `tools` e le voci `disallowedTools` con nome semplice modificano la disponibilità. `allowedTools` e le regole `disallowedTools` con ambito modificano il permesso. Se si nomina uno dei [tool di tracciamento delle attività](https://code.claude.com/docs/it/agent-sdk/todo-tracking.md#model-availability) in `allowedTools`, Claude Code opta anche la sessione.375L'opzione `tools` e gli elenchi consentiti/non consentiti influiscono su due livelli: la disponibilità, che controlla se un tool appare nel contesto di Claude, e il permesso, che controlla se una chiamata viene approvata una volta che Claude la tenta. `tools` e le voci `disallowedTools` con nome semplice modificano la disponibilità. `allowedTools` e le regole `disallowedTools` con ambito modificano il permesso. Se si nomina uno dei [tool di tracciamento delle attività](https://code.claude.com/docs/it/agent-sdk/todo-tracking.md#model-availability) in `allowedTools`, Claude Code abilita anche quei tool per la sessione.

376 376 

377| Opzione | Livello | Effetto |377| Opzione | Livello | Effetto |

378| :- | :- | :- |378| :- | :- | :- |

Details

771 771 

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

773 773 

774* `PreToolUse`: Claude Code blocca la chiamata allo strumento. Al suo posto, Claude riceve un risultato dello strumento che indica che l'hook non ha risposto prima del suo timeout, e il turno continua. Prima della v2.1.210, Claude Code segnalava il timeout a Claude come un rifiuto dell'utente, il che faceva fermare le sessioni incustodite in attesa di input.774* `PreToolUse`: Claude Code blocca la chiamata allo strumento. Se ogni altro hook non ha restituito nulla o solo una decisione `allow`, il risultato dello strumento indica a Claude che l'hook non ha risposto prima del suo timeout, e il turno continua. Se un altro dei tuoi hook ha già negato la chiamata, il suo rifiuto raggiunge comunque Claude: il risultato dello strumento include la motivazione di quell'hook, e il testo del timeout può seguirla.

775 

776 Prima della v2.1.210, Claude Code segnalava il timeout a Claude come un rifiuto dell'utente, il che faceva fermare le sessioni incustodite in attesa di input.

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

776* `UserPromptSubmit` e [`UserPromptExpansion`](https://code.claude.com/docs/it/hooks#userpromptexpansion): Claude Code blocca il prompt con un messaggio che nomina l'hook e il timeout, e la sessione continua. Prima della v2.1.208, Claude Code terminava la query con `error_during_execution` quando un callback su questi eventi scadeva.778* `UserPromptSubmit` e [`UserPromptExpansion`](https://code.claude.com/docs/it/hooks#userpromptexpansion): Claude Code blocca il prompt con un messaggio che nomina l'hook e il timeout, e la sessione continua. Prima della v2.1.208, Claude Code terminava la query con `error_during_execution` quando un callback su questi eventi scadeva.

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

Details

309| `options.dir` | `string` | `undefined` | Directory del progetto in cui trovare la sessione. Se omesso, cerca in tutti i progetti |309| `options.dir` | `string` | `undefined` | Directory del progetto in cui trovare la sessione. Se omesso, cerca in tutti i progetti |

310| `options.limit` | `number` | `undefined` | Numero massimo di messaggi da restituire |310| `options.limit` | `number` | `undefined` | Numero massimo di messaggi da restituire |

311| `options.offset` | `number` | `undefined` | Numero di messaggi da saltare dall'inizio |311| `options.offset` | `number` | `undefined` | Numero di messaggi da saltare dall'inizio |

312| `options.includeSystemMessages` | `boolean` | `false` | Quando `true`, restituisce anche i messaggi di sistema, come i confini di compattazione, insieme ai messaggi dell'utente e dell'assistente |

312 313 

313#### Tipo di ritorno: `SessionMessage`314#### Tipo di ritorno: `SessionMessage`

314 315 

315| Proprietà | Tipo | Descrizione |316| Proprietà | Tipo | Descrizione |

316| :- | :- | :- |317| :- | :- | :- |

317| `type` | `"user" \| "assistant"` | Ruolo del messaggio |318| `type` | `"user" \| "assistant" \| "system"` | Ruolo del messaggio. `"system"` compare solo quando `options.includeSystemMessages` è `true` |

318| `uuid` | `string` | Identificatore di messaggio univoco |319| `uuid` | `string` | Identificatore di messaggio univoco |

319| `session_id` | `string` | Sessione a cui appartiene questo messaggio |320| `session_id` | `string` | Sessione a cui appartiene questo messaggio |

320| `message` | `unknown` | Payload del messaggio grezzo dalla trascrizione |321| `message` | `unknown` | Payload del messaggio grezzo dalla trascrizione |


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

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

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

636 seedReadState(path: string, mtime: number): Promise<void>;

635 accountInfo(): Promise<AccountInfo>;637 accountInfo(): Promise<AccountInfo>;

636 reconnectMcpServer(serverName: string): Promise<void>;638 reconnectMcpServer(serverName: string): Promise<void>;

637 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;639 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

638 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;640 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

641 setMcpPermissionModeOverride(

642 serverName: string,

643 mode: 'default' | 'auto' | null

644 ): Promise<{ warning?: string }>;

639 readMcpResource(serverName: string, uri: string): Promise<SDKControlMcpReadResourceResponse>;645 readMcpResource(serverName: string, uri: string): Promise<SDKControlMcpReadResourceResponse>;

640 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;646 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

641 stopTask(taskId: string): Promise<void>;647 stopTask(taskId: string): Promise<void>;

648 backgroundTasks(toolUseId?: string): Promise<boolean>;

642 close(): void;649 close(): void;

643}650}

644```651```


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

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

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

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

668| `accountInfo()` | Restituisce le informazioni sull'account |676| `accountInfo()` | Restituisce le informazioni sull'account |

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

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

671| `setMcpServers(servers)` | Sostituisce i server MCP gestiti da questo metodo: i server aggiunti tramite esso e i [server SDK in-process](#createsdkmcpserver). Si risolve con un [`McpSetServersResult`](#mcpsetserversresult) che indica quali server sono stati aggiunti e rimossi, più eventuali errori; quella sezione indica quali altri server restano connessi |679| `setMcpServers(servers)` | Sostituisce i server MCP gestiti da questo metodo: i server aggiunti tramite esso e i [server SDK in-process](#createsdkmcpserver). Si risolve con un [`McpSetServersResult`](#mcpsetserversresult) che indica quali server sono stati aggiunti e rimossi, più eventuali errori; quella sezione indica quali altri server restano connessi |

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

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

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

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

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

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

676 686 

687#### `setMcpPermissionModeOverride()`

688 

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

690 

691Passa uno di questi tre valori come `mode`:

692 

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

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

695* `null`: cancella l'override.

696 

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

698 

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

700 

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

702 

703#### `seedReadState()`

704 

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

706 

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

708 

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

710 

711#### `backgroundTasks()`

712 

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

714 

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

716 

717In una sessione in cui le attività in background sono abilitate, la promise si risolve in un booleano:

718 

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

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

721 

722Se le attività in background sono disabilitate per la sessione, ad esempio con [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/it/env-vars), la promise viene invece rifiutata e nulla viene spostato in background.

723 

677#### `applyFlagSettings()`724#### `applyFlagSettings()`

678 725 

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


1472 | SDKPermissionDeniedMessage1519 | SDKPermissionDeniedMessage

1473 | SDKPromptSuggestionMessage1520 | SDKPromptSuggestionMessage

1474 | SDKAPIRetryMessage1521 | SDKAPIRetryMessage

1522 | SDKControlRequestProgressMessage

1523 | SDKModelRefusalFallbackMessage

1524 | SDKModelRefusalNoFallbackMessage

1475 | SDKMirrorErrorMessage1525 | SDKMirrorErrorMessage

1476 | SDKInformationalMessage1526 | SDKInformationalMessage

1477 | SDKConversationResetMessage;1527 | SDKConversationResetMessage;

1478```1528```

1479 1529 

1530Tre messaggi di questa unione riportano l'avanzamento delle richieste di controllo e i rifiuti del modello. Ognuno ha `type: "system"`, quindi distinguili in base al `subtype` indicato per ciascuno:

1531 

1532* `SDKControlRequestProgressMessage`, `subtype: "control_request_progress"`: riporta l'avanzamento di una richiesta di controllo di lunga durata inviata dal tuo client. `request_id` associa il messaggio a quella richiesta, e `status` è `"started"` o `"api_retry"`. Richiede Agent SDK v0.3.203 o successiva.

1533* `SDKModelRefusalFallbackMessage`, `subtype: "model_refusal_fallback"`: emesso quando il modello termina lo stream con un rifiuto e il turno viene ripetuto su un modello di fallback. Contiene `original_model` e `fallback_model`. Richiede Agent SDK v0.3.170 o successiva.

1534* `SDKModelRefusalNoFallbackMessage`, `subtype: "model_refusal_no_fallback"`: emesso quando il modello termina lo stream con un rifiuto e non viene eseguito alcun nuovo tentativo, ad esempio perché non è configurato alcun modello di fallback. Contiene `original_model`. Richiede Agent SDK v0.3.193 o successiva.

1535 

1480### `SDKAssistantMessage`1536### `SDKAssistantMessage`

1481 1537 

1482Messaggio di risposta dell'assistente.1538Messaggio di risposta dell'assistente.


1636 stop_reason: string | null;1692 stop_reason: string | null;

1637 ttft_ms?: number;1693 ttft_ms?: number;

1638 ttft_stream_ms?: number;1694 ttft_stream_ms?: number;

1695 time_to_request_ms?: number;

1639 user_message_uuid?: string;1696 user_message_uuid?: string;

1640 user_message_uuids?: string[];1697 user_message_uuids?: string[];

1641 resume_reason?: string;1698 resume_reason?: string;


1701* `api_error_status`: il codice di stato HTTP dell'errore API che ha terminato la conversazione. Assente o `null` quando il turno è terminato senza un errore API.1758* `api_error_status`: il codice di stato HTTP dell'errore API che ha terminato la conversazione. Assente o `null` quando il turno è terminato senza un errore API.

1702* `ttft_ms`: tempo al primo token in millisecondi, misurato quando arriva il primo messaggio completo dell'assistente. Presente solo sul ramo di successo.1759* `ttft_ms`: tempo al primo token in millisecondi, misurato quando arriva il primo messaggio completo dell'assistente. Presente solo sul ramo di successo.

1703* `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.1760* `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.

1761* `time_to_request_ms`: tempo in millisecondi dall'inizio del turno fino a quando Claude Code invia la richiesta API. Presente solo nel ramo di successo. Richiede Claude Code v2.1.162 o successiva.

1704* `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.1762* `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.

1705* `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).1763* `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).

1706* `resume_reason`: perché questo turno continua un turno che un riavvio ha interrotto. Presente in entrambi i rami. Vedi [`resume_reason`](#resume_reason).1764* `resume_reason`: perché questo turno continua un turno che un riavvio ha interrotto. Presente in entrambi i rami. Vedi [`resume_reason`](#resume_reason).


1772* Turni che non rispondono ad alcun tuo messaggio, o che rispondono a un messaggio che hai inviato senza `uuid`1830* Turni che non rispondono ad alcun tuo messaggio, o che rispondono a un messaggio che hai inviato senza `uuid`

1773* Risultati che non rispondono ad alcun messaggio che hai inviato, come il risultato azzerato dopo l'arresto anomalo di un processo worker1831* Risultati che non rispondono ad alcun messaggio che hai inviato, come il risultato azzerato dopo l'arresto anomalo di un processo worker

1774 1832 

1833Quando un hook [`UserPromptSubmit`](https://code.claude.com/docs/it/hooks#userpromptsubmit) blocca un messaggio che avvia un proprio turno, o lo arresta con `continue: false`, ricevi comunque un risultato per quel messaggio. È un risultato di successo con `is_error: false` e `num_turns: 0`, il suo `result` è il [messaggio di blocco](https://code.claude.com/docs/it/hooks.md#what-a-blocked-prompt-leaves-behind) o il [messaggio di arresto](https://code.claude.com/docs/it/hooks.md#json-output), e restituisce l'`uuid` del messaggio con le stesse regole di qualsiasi altro risultato. Il risultato non ha `terminal_reason`, e nulla al suo interno, a parte il testo di `result`, indica che un hook ha terminato il turno. Un messaggio che un hook blocca mentre è in corso un altro turno potrebbe non ricevere alcun risultato: consulta [`user_message_uuids`](#user_message_uuids).

1834 

1775#### `user_message_uuids`1835#### `user_message_uuids`

1776 1836 

1777Gli `uuid` di ogni messaggio che hai inviato a cui Claude Code ha risposto in questo turno. Quando invii più messaggi a breve distanza, Claude Code può unirli in un unico turno, e `user_message_uuid` indica allora solo l'ultimo di essi. Per abbinare la risposta a uno qualsiasi dei messaggi uniti, cerca l'`uuid` di quel messaggio in qualsiasi punto di questo elenco. Richiede Agent SDK v0.3.259 o successivo.1837Gli `uuid` di ogni messaggio che hai inviato a cui Claude Code ha risposto in questo turno. Quando invii più messaggi a breve distanza, Claude Code può unirli in un unico turno, e `user_message_uuid` indica allora solo l'ultimo di essi. Per abbinare la risposta a uno qualsiasi dei messaggi uniti, cerca l'`uuid` di quel messaggio in qualsiasi punto di questo elenco. Richiede Agent SDK v0.3.259 o successivo.

1778 1838 

1779Claude Code imposta l'elenco insieme a `user_message_uuid` su ogni frame di risposta che contiene quel campo e sul risultato. Per l'insieme completo dei frame del turno che restituiscono l'`uuid` del messaggio a cui si è risposto, e la versione richiesta da ciascuno, consulta [`user_message_uuid`](#user_message_uuid). L'elenco contiene sempre `user_message_uuid` e ha al massimo 64 voci.1839Claude Code imposta l'elenco insieme a `user_message_uuid` su ogni frame di risposta che contiene quel campo e sul risultato. Per l'insieme completo dei frame del turno che restituiscono l'`uuid` del messaggio a cui si è risposto, e la versione richiesta da ciascuno, consulta [`user_message_uuid`](#user_message_uuid). L'elenco contiene sempre `user_message_uuid` e ha al massimo 64 voci.

1780 1840 

1781Quando Claude Code raccoglie un messaggio normale che hai inviato mentre un turno era in esecuzione, aggiunge l'`uuid` di quel messaggio all'elenco del risultato.1841Quando Claude Code raccoglie un messaggio normale che hai inviato durante un turno in corso, aggiunge l'`uuid` di quel messaggio all'elenco del risultato. Quando un hook [`UserPromptSubmit`](https://code.claude.com/docs/it/hooks#userpromptsubmit) blocca il messaggio al momento della raccolta, Claude Code invece lo scarta: il messaggio non raggiunge mai Claude e non viene conservato per un turno successivo. Non ricevi alcun risultato per esso, e il suo `uuid` non compare nell'elenco di nessun risultato. Se un hook può bloccare i messaggi, imposta un timeout sull'attesa di un risultato che elenchi un messaggio inviato durante un turno in corso.

1842 

1843Questo vale quando l'output dell'hook è solo un blocco. Se l'output imposta `continue: false`, anche accanto a `decision: "block"`, o l'hook è un prompt hook che risponde [`ok: false`](https://code.claude.com/docs/it/hooks#response-schema) senza `continueOnBlock: true`, Claude Code arresta il messaggio invece di scartarlo. Il messaggio attende il proprio turno, ricevi un risultato per esso e il suo testo resta nella conversazione, quindi Claude lo vede al turno successivo.

1782 1844 

1783Quando una prima risposta o un risultato contiene `user_message_uuid` senza l'elenco, proviene da una versione precedente di Claude Code, quindi usa come ripiego il campo singolo.1845Quando una prima risposta o un risultato contiene `user_message_uuid` senza l'elenco, proviene da una versione precedente di Claude Code, quindi usa come ripiego il campo singolo.

1784 1846 

channels.md +1 −1

Details

271 271 

272Il messaggio arriva nella tua sessione Claude Code. Il terminale lo mostra come una riga di canale in entrata come `← fakechat · web: what's in my working directory?`, mentre il modello lo riceve come un evento `<channel source="plugin:fakechat:fakechat">`, utilizzando il nome del server con ambito del plugin. Claude lo legge, fa il lavoro e chiama lo strumento `reply` di fakechat. Se Claude Code chiede il permesso per la prima risposta, approvalo. La risposta appare nell'interfaccia di chat.272Il messaggio arriva nella tua sessione Claude Code. Il terminale lo mostra come una riga di canale in entrata come `← fakechat · web: what's in my working directory?`, mentre il modello lo riceve come un evento `<channel source="plugin:fakechat:fakechat">`, utilizzando il nome del server con ambito del plugin. Claude lo legge, fa il lavoro e chiama lo strumento `reply` di fakechat. Se Claude Code chiede il permesso per la prima risposta, approvalo. La risposta appare nell'interfaccia di chat.

273 273 

274Se Claude incontra un prompt di permesso mentre sei lontano dal terminale, la sessione si mette in pausa fino a quando non rispondi. I server di canale che dichiarano la [capacità di inoltro dei permessi](https://code.claude.com/docs/it/channels-reference.md#relay-permission-prompts) possono inoltrarti questi prompt in modo che tu possa approvare o negare da remoto. Per l'uso incustodito, [`--dangerously-skip-permissions`](https://code.claude.com/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) bypassa la maggior parte dei prompt, ma usalo solo in ambienti di cui ti fidi. Anche in questo caso, le [azioni no mode auto-approva](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) continuano ad applicarsi.274Se Claude incontra un prompt di permesso mentre sei lontano dal terminale, la sessione si mette in pausa fino a quando non rispondi. I server di canale che dichiarano la [capacità di inoltro dei permessi](https://code.claude.com/docs/it/channels-reference.md#relay-permission-prompts) possono inoltrarti questi prompt in modo che tu possa approvare o negare da remoto. Per l'uso incustodito, [`--dangerously-skip-permissions`](https://code.claude.com/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) bypassa la maggior parte dei prompt, ma usalo solo in ambienti di cui ti fidi. Anche in questo caso, le [azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) continuano ad applicarsi.

275 275 

276Quando esegui i canali in modalità non interattiva con `-p`, gli strumenti che necessitano di input da terminale, come domande a scelta multipla e approvazione della modalità plan, sono disabilitati in modo che la sessione non si blocchi mai in attesa di input.276Quando esegui i canali in modalità non interattiva con `-p`, gli strumenti che necessitano di input da terminale, come domande a scelta multipla e approvazione della modalità plan, sono disabilitati in modo che la sessione non si blocchi mai in attesa di input.

277 277 

Details

505capabilities: {505capabilities: {

506 experimental: {506 experimental: {

507 'claude/channel': {},507 'claude/channel': {},

508 'claude/channel/permission': {}, // opta per l'inoltro delle autorizzazioni508 'claude/channel/permission': {}, // opta per l'inoltro dei permessi

509 },509 },

510 tools: {},510 tools: {},

511},511},


582}582}

583```583```

584 584 

585Una risposta remota che non corrisponde esattamente al formato previsto fallisce in uno di due modi e in entrambi i casi la finestra di dialogo del terminale locale rimane aperta:585Se una risposta remota non ha effetto e la finestra di dialogo del terminale locale rimane aperta, verifica queste cause:

586 586 

587* **Formato diverso**: l'espressione regolare del tuo gestore in entrata non corrisponde, quindi testo come `approve it` o `yes` senza un ID passa come messaggio normale a Claude.587* **Il formato è sbagliato**: l'espressione regolare del tuo gestore in entrata non trova corrispondenza, quindi testo come `approve it` o `yes` senza un ID passa come messaggio normale a Claude.

588* **Formato corretto, ID sbagliato**: il tuo server emette un verdetto, ma Claude Code non trova nessuna richiesta aperta con quell'ID e lo elimina silenziosamente.588* **L'ID è sbagliato**: il tuo server emette un verdetto, ma Claude Code non trova nessuna richiesta aperta con quell'ID e lo elimina silenziosamente.

589* **L'ID è stato usato da un prompt precedente**: il tuo server emette un verdetto con l'ID della richiesta, ma un prompt precedente nella sessione aveva lo stesso ID. Quando un ID si ripete, Claude Code scarta qualsiasi verdetto del canale che lo contiene, in modo che una risposta destinata a un prompt non possa approvare l'altro. Un ID è composto da cinque lettere casuali, quindi una ripetizione è rara. Rispondi invece dal terminale.

589 590 

590### Esempio completo591### Esempio completo

591 592 


611 for (const emit of listeners) emit(chunk)612 for (const emit of listeners) emit(chunk)

612}613}

613 614 

614// Lista di approvazione del mittente. Per la procedura dettagliata locale confidiamo nel singolo valore dell'intestazione X-Sender615// Allowlist dei mittenti. Per la procedura dettagliata locale confidiamo nel singolo valore dell'intestazione X-Sender

615// "dev"; un vero bridge controllerebbe l'ID utente della piattaforma.616// "dev"; un vero bridge controllerebbe l'ID utente della piattaforma.

616const allowed = new Set(['dev'])617const allowed = new Set(['dev'])

617 618 


621 capabilities: {622 capabilities: {

622 experimental: {623 experimental: {

623 'claude/channel': {},624 'claude/channel': {},

624 'claude/channel/permission': {}, // opta per l'inoltro delle autorizzazioni625 'claude/channel/permission': {}, // opta per l'inoltro dei permessi

625 },626 },

626 tools: {},627 tools: {},

627 },628 },


656 throw new Error(`unknown tool: ${req.params.name}`)657 throw new Error(`unknown tool: ${req.params.name}`)

657})658})

658 659 

659// --- inoltro delle autorizzazioni: Claude Code (non Claude) chiama questo quando si apre una finestra di dialogo660// --- inoltro dei permessi: Claude Code (non Claude) chiama questo quando si apre una finestra di dialogo

660const PermissionRequestSchema = z.object({661const PermissionRequestSchema = z.object({

661 method: z.literal('notifications/claude/channel/permission_request'),662 method: z.literal('notifications/claude/channel/permission_request'),

662 params: z.object({663 params: z.object({

Details

90 90 

91### I messaggi inviati a metà turno non vengono sottoposti a checkpoint91### I messaggi inviati a metà turno non vengono sottoposti a checkpoint

92 92 

93Nel menu di rewind, un messaggio che hai [digitato mentre Claude stava ancora lavorando](https://code.claude.com/docs/it/interactive-mode.md#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.93Nel menu di rewind, un messaggio che hai [digitato mentre Claude stava ancora lavorando](https://code.claude.com/docs/it/interactive-mode.md#queue-messages-while-claude-works) può essere contrassegnato con **No code restore**. Il messaggio contrassegnato non ha un proprio [checkpoint](#how-checkpoints-work).

94 94 

95Non 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.95Per annullare le modifiche ai file che Claude ha apportato dopo quel messaggio, 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.

96 96 

97### I percorsi symlink e hard-link non vengono ripristinati97### I percorsi symlink e hard-link non vengono ripristinati

98 98 

Details

98 98 

99Gli avvisi e la percentuale provengono dagli header `anthropic-ratelimit-unified-*`, che il gateway aggiunge a ogni risposta `/v1/messages` riuscita per uno sviluppatore che ha un limite. Gli header descrivono sempre il limite dello sviluppatore stesso: il gateway elimina gli header di rate limit del provider upstream, che descrivono la tua quota condivisa, e non li inoltra mai.99Gli avvisi e la percentuale provengono dagli header `anthropic-ratelimit-unified-*`, che il gateway aggiunge a ogni risposta `/v1/messages` riuscita per uno sviluppatore che ha un limite. Gli header descrivono sempre il limite dello sviluppatore stesso: il gateway elimina gli header di rate limit del provider upstream, che descrivono la tua quota condivisa, e non li inoltra mai.

100 100 

101La spesa che vede uno sviluppatore è la [stima](#how-requests-are-priced) del gateway stesso, la stessa cifra con cui applica il limite, e non un importo della fattura del tuo provider. Claude Code legge gli importi in dollari con una richiesta separata al gateway. Se imposti `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` sulle macchine degli sviluppatori, come suggerisce [Compliance posture](https://code.claude.com/docs/it/claude-apps-gateway-deploy.md#compliance-posture), Claude Code salta quella richiesta. Con quella variabile impostata, o con un server gateway precedente a v2.1.284, la barra e la riga di stato mostrano solo la percentuale.101La spesa che vede uno sviluppatore è la [stima](#how-requests-are-priced) del gateway stesso, la stessa cifra con cui applica il limite. Non è un importo della fattura del tuo provider. Claude Code legge gli importi in dollari con una richiesta separata al gateway, che invia anche se imposti `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` sulle macchine degli sviluppatori. Prima della v2.1.295, Claude Code saltava quella richiesta quando la variabile era impostata, e `/usage` e la riga di stato mostravano la percentuale e la data di reset, senza importi in dollari.

102 102 

103## Riferimento Admin API103## Riferimento Admin API

104 104 

Details

18 18 

19* **Browser**: [claude.ai/code](https://claude.ai/code), chiamato anche Claude Code sul web19* **Browser**: [claude.ai/code](https://claude.ai/code), chiamato anche Claude Code sul web

20* **Mobile**: la scheda **Code** nell'[app Claude](https://code.claude.com/docs/it/mobile.md)20* **Mobile**: la scheda **Code** nell'[app Claude](https://code.claude.com/docs/it/mobile.md)

21* **App desktop**: seleziona **Cloud** invece di **Local** quando [avvii una sessione](https://code.claude.com/docs/it/desktop.md#run-long-running-tasks-in-the-cloud)21* **App desktop**: seleziona un ambiente sotto **Cloud** nel selettore dell'ambiente quando [avvii una sessione](https://code.claude.com/docs/it/desktop.md#run-long-running-tasks-in-the-cloud)

22* **Terminale**: [`claude --cloud`](#from-terminal-to-cloud)22* **Terminale**: [`claude --cloud`](#from-terminal-to-cloud)

23* **Attività pianificate cloud**: [esecuzioni pianificate e attivate](https://code.claude.com/docs/it/routines.md) vengono eseguite ciascuna come sessione cloud23* **Attività pianificate cloud**: [esecuzioni pianificate e attivate](https://code.claude.com/docs/it/routines.md) vengono eseguite ciascuna come sessione cloud

24 24 


247 247 

248### Rivedere le modifiche248### Rivedere le modifiche

249 249 

250Ogni sessione mostra un indicatore di diff con righe aggiunte e rimosse, come `+42 -18`. Selezionalo per aprire la visualizzazione diff, lasciare commenti in linea su righe specifiche e inviarli a Claude con il messaggio successivo.250Dopo che Claude ha eseguito il push delle modifiche su un branch, la scheda **Changes** nel pannello accanto alla chat mostra le righe aggiunte e rimosse, come `+42 -18`. Fai clic sui conteggi delle righe nella scheda **Changes** per aprire la visualizzazione diff.

251 251 

252Per impostazione predefinita, la visualizzazione diff confronta le modifiche della sessione con il suo branch di base. Per confrontarle con qualsiasi altro branch nel repository, seleziona **Compare against** e scegline uno.252* Puoi anche fare clic su **Changes** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.

253* Per mostrare il pannello quando è nascosto, fai clic sull'icona **Show session rail** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.

254 

255Nella visualizzazione diff puoi commentare le righe e confrontare con un altro branch:

256 

257* **Commentare**: lascia commenti in linea su righe specifiche, poi invia i commenti a Claude con il messaggio successivo

258* **Confrontare**: per impostazione predefinita, la visualizzazione diff confronta le modifiche della sessione con il suo branch di base. Per confrontarle con qualsiasi altro branch nel repository, seleziona **Compare against** e scegline uno

253 259 

254Claude Code calcola questi diff dal contenuto grezzo dei blob git, quindi i driver diff e i filtri `textconv` configurati nel repository non si applicano.260Claude Code calcola questi diff dal contenuto grezzo dei blob git, quindi i driver diff e i filtri `textconv` configurati nel repository non si applicano.

255 261 


313 319 

314### Archiviare sessioni320### Archiviare sessioni

315 321 

316È possibile archiviare le sessioni per mantenere organizzato l'elenco delle sessioni. Le sessioni archiviate sono nascoste dall'elenco di sessioni predefinito ma possono essere visualizzate filtrando per sessioni archiviate.322Archivia una sessione per rimuoverla dall'elenco delle sessioni nella barra laterale. Per archiviarne una, passa il mouse sopra di essa nella barra laterale, apri il relativo menu **⋯** e seleziona **Archive**.

317 323 

318Per archiviare una sessione, passare il mouse sulla sessione nella barra laterale e selezionare l'icona di archivio.324#### Trovare una sessione archiviata

325 

326Per vedere le tue sessioni archiviate, vai a [claude.ai/code/sessions](https://claude.ai/code/sessions) e apri la scheda **Archived**. Per riportarne una nell'elenco delle sessioni della barra laterale, passa il mouse sopra di essa in quella scheda, apri il relativo menu **⋮** e seleziona **Unarchive**.

319 327 

320### Eliminare sessioni328### Eliminare sessioni

321 329 

322L'eliminazione di una sessione rimuove in modo permanente la sessione e i suoi dati. Questa azione non può essere annullata. È possibile eliminare una sessione in due modi:330L'eliminazione di una sessione rimuove in modo permanente la sessione e i suoi dati. Questa azione non può essere annullata. Elimina una sessione dalla barra laterale, dal menu della sessione oppure dalla scheda **Archived** se l'hai già archiviata:

323 331 

324* **Dalla barra laterale**: filtrare per sessioni archiviate, quindi passare il mouse sulla sessione che si desidera eliminare e selezionare l'icona di eliminazione332* **Dalla barra laterale**: passa il mouse sopra la sessione, apri il relativo menu **⋯** e seleziona **Delete**

325* **Dal menu della sessione**: aprire una sessione, selezionare l'elenco a discesa accanto al titolo della sessione e selezionare **Delete**333* **Dal menu della sessione**: aprire una sessione, selezionare l'elenco a discesa accanto al titolo della sessione e selezionare **Delete**

334* **Dalla scheda Archived**: passa il mouse sopra la sessione nella [scheda **Archived**](#find-an-archived-session), apri il relativo menu **⋮** e seleziona **Delete**

326 335 

327Ti verrà chiesto di confermare prima che una sessione venga eliminata.336Ti verrà chiesto di confermare prima che una sessione venga eliminata.

328 337 


336 345 

337Ci sono alcuni modi per attivare auto-fix a seconda da dove proviene la PR e quale dispositivo stai utilizzando:346Ci sono alcuni modi per attivare auto-fix a seconda da dove proviene la PR e quale dispositivo stai utilizzando:

338 347 

339* **PR create in una sessione cloud**: apri la sessione su claude.ai/code, apri la barra di stato CI e seleziona **Auto-fix**348* **PR create in una sessione cloud**: apri la sessione su claude.ai/code e trova la pull request nella [scheda **Changes**](#review-changes). Apri il menu **⋮** accanto al titolo della pull request e attiva **Auto-fix**

340* **Dal tuo terminale**: esegui [`/autofix-pr`](https://code.claude.com/docs/it/commands) mentre sei sul ramo della PR. Claude Code rileva la PR aperta con `gh`, genera una sessione cloud e attiva auto-fix in un passaggio349* **Dal tuo terminale**: esegui [`/autofix-pr`](https://code.claude.com/docs/it/commands) mentre sei sul ramo della PR. Claude Code rileva la PR aperta con `gh`, genera una sessione cloud e attiva auto-fix in un passaggio

341* **Dall'app mobile**: dì a Claude di correggere automaticamente la PR, ad esempio "watch this PR and fix any CI failures or review comments"350* **Dall'app mobile**: dì a Claude di correggere automaticamente la PR, ad esempio "watch this PR and fix any CI failures or review comments"

342* **Qualsiasi PR esistente**: incolla l'URL della PR in una sessione e dì a Claude di correggerla automaticamente351* **Qualsiasi PR esistente**: incolla l'URL della PR in una sessione e dì a Claude di correggerla automaticamente

343 352 

344Auto-fix è un interruttore per PR. Per smettere di monitorare, apri la barra di stato CI nella sessione su claude.ai/code e deseleziona l'interruttore **Auto-fix**, oppure dì a Claude di smettere di monitorare la PR.353Per smettere di monitorare, disattiva **Auto-fix** nel menu **⋮** della pull request nella [scheda **Changes**](#review-changes) della sessione, oppure dì a Claude di smettere di monitorare la PR.

345 354 

346### Come Claude risponde all'attività PR355### Come Claude risponde all'attività PR

347 356 


381* Riprova dopo un minuto, poiché la capacità viene fornita su richiesta390* Riprova dopo un minuto, poiché la capacità viene fornita su richiesta

382* Conferma che la tua connessione GitHub possa raggiungere il repository seguendo [Nessun repository appare dopo la connessione di GitHub](https://code.claude.com/docs/it/web-quickstart.md#no-repositories-appear-after-connecting-github)391* Conferma che la tua connessione GitHub possa raggiungere il repository seguendo [Nessun repository appare dopo la connessione di GitHub](https://code.claude.com/docs/it/web-quickstart.md#no-repositories-appear-after-connecting-github)

383 392 

393### Your new session couldn't start

394 

395Il tuo prompt è tornato nella casella da cui lo hai inviato.

396 

397* **Connessione persa**: controlla la tua connessione internet ed eventuali VPN o proxy che usi, quindi invia di nuovo il tuo prompt

398* **Errore del server**: attendi un momento, quindi invia di nuovo il tuo prompt. Se l'avviso ricompare, controlla [status.claude.com](https://status.claude.com)

399 

400### Can't rewind to this message

401 

402**Rewind to here** non riesce con questo errore su qualsiasi messaggio tranne il più recente quando la tua sessione viene eseguita su un [runner self-hosted](https://code.claude.com/docs/it/self-hosted-environments) con Claude Code precedente alla v2.1.246. Chiedi a chi gestisce i runner della tua organizzazione di [aggiornarli](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#pin-the-version).

403 

384### Impossibile ottenere l'UUID dell'organizzazione404### Impossibile ottenere l'UUID dell'organizzazione

385 405 

386`claude --cloud` e `claude --teleport` richiedono l'accesso con un account claude.ai. Se ti autentichi con una chiave API, o i dettagli dell'account archiviati sono obsoleti, vedrai uno di questi:406`claude --cloud` e `claude --teleport` richiedono l'accesso con un account claude.ai. Se ti autentichi con una chiave API, o i dettagli dell'account archiviati sono obsoleti, vedrai uno di questi:

Details

111 111 

112Il project è ora elencato sotto **Projects** nella barra laterale, e la sua conversazione è aperta. [Il tuo primo batch](#your-first-batch) copre cosa configurare prima di inviargli il lavoro.112Il project è ora elencato sotto **Projects** nella barra laterale, e la sua conversazione è aperta. [Il tuo primo batch](#your-first-batch) copre cosa configurare prima di inviargli il lavoro.

113 113 

114### Avvia da una sessione cloud esistente114### Avvia da una sessione esistente

115 115 

116Se una sessione cloud che hai avviato tu stesso sta facendo lavoro che appartiene a un project, apri il suo menu nella barra laterale e scegli **Move to project**, quindi scegli dal sottomenu:116Se una sessione cloud che hai avviato tu stesso sta facendo lavoro che appartiene a un project, apri il suo menu nella barra laterale e scegli **Move to project**, quindi scegli dal sottomenu:

117 117 


120 120 

121Un banner **Set up project** può anche apparire sopra la casella di messaggio di una sessione cloud. Se lo usi al posto di **Continue as new project**, il risultato è lo stesso, tranne che il turno in esecuzione della sessione si ferma una volta che il project si apre.121Un banner **Set up project** può anche apparire sopra la casella di messaggio di una sessione cloud. Se lo usi al posto di **Continue as new project**, il risultato è lo stesso, tranne che il turno in esecuzione della sessione si ferma una volta che il project si apre.

122 122 

123Una sessione locale non ha queste opzioni. Per continuare il suo lavoro in un project, descrivi il lavoro nella conversazione del project, o esegui il push del suo ramo, aggiungi quel repository al project, e nomina il ramo nel compito.123Una sessione sulla tua macchina ottiene lo stesso menu nella barra laterale su claude.ai/code una volta che la connetti tramite [Remote Control](https://code.claude.com/docs/it/remote-control.md#start-a-remote-control-session). Da un project, Claude non può leggere la trascrizione di una sessione che si è connessa mentre [**Require trusted devices**](https://code.claude.com/docs/it/remote-control.md#trusted-devices) era attivo per il tuo account. Se quell'impostazione è disattivata:

124 

1251. Se la sessione non è ancora connessa, esegui `/remote-control` al suo interno. Se si è connessa mentre quell'impostazione era attiva, prima disconnettila e connettila di nuovo.

1262. In un browser, trova la riga della sessione nella barra laterale su [claude.ai/code](https://claude.ai/code), apri il suo menu e scegli dallo stesso sottomenu.

127 

128Se **Require trusted devices** è attivo, o non usi Remote Control, descrivi tu stesso il lavoro nella conversazione del project. Oppure esegui il push del branch della sessione, aggiungi il suo repository al project e comunica a Claude il nome del branch.

124 129 

125### Configura l'accesso a GitHub130### Configura l'accesso a GitHub

126 131 


425* **Sessioni cloud**: ogni thread è una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) a meno che non chiedi a Claude di eseguirla sulla tua macchina. In entrambi i casi, Claude la avvia e la traccia invece di te. Puoi anche portare in un project il lavoro di una sessione cloud che hai avviato da solo: scegli [**Move to project**](#start-from-an-existing-cloud-session) nel menu della barra laterale di quella sessione.430* **Sessioni cloud**: ogni thread è una [sessione cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) a meno che non chiedi a Claude di eseguirla sulla tua macchina. In entrambi i casi, Claude la avvia e la traccia invece di te. Puoi anche portare in un project il lavoro di una sessione cloud che hai avviato da solo: scegli [**Move to project**](#start-from-an-existing-cloud-session) nel menu della barra laterale di quella sessione.

426* **Attività pianificate**: quando chiedi lavoro pianificato in un project, Claude crea un'[attività pianificata cloud](https://code.claude.com/docs/it/routines.md) che viene eseguita come thread in quel project e appare nella sua scheda **Scheduled tasks**. Le attività pianificate che crei al di fuori di un project continuano a funzionare da sole.431* **Attività pianificate**: quando chiedi lavoro pianificato in un project, Claude crea un'[attività pianificata cloud](https://code.claude.com/docs/it/routines.md) che viene eseguita come thread in quel project e appare nella sua scheda **Scheduled tasks**. Le attività pianificate che crei al di fuori di un project continuano a funzionare da sole.

427* **Remote Control**: [Remote Control](https://code.claude.com/docs/it/remote-control.md) connette claude.ai a una sessione Claude Code in esecuzione sulla tua macchina. Quando chiedi a Claude in un project di eseguire un thread sul tuo computer, il project [usa Remote Control per farlo](#run-a-thread-on-your-own-computer).432* **Remote Control**: [Remote Control](https://code.claude.com/docs/it/remote-control.md) connette claude.ai a una sessione Claude Code in esecuzione sulla tua macchina. Quando chiedi a Claude in un project di eseguire un thread sul tuo computer, il project [usa Remote Control per farlo](#run-a-thread-on-your-own-computer).

428* **Sessioni locali e agent view**: una sessione che avvii da solo nel tuo terminale, IDE o nell'ambiente locale dell'app desktop non può essere aggiunta a un project. [Agent view](https://code.claude.com/docs/it/agent-view.md) è una schermata per tracciare diverse sessioni locali fianco a fianco, e tu avvii ancora ognuna e le dai il suo compito da solo.433* **Sessioni locali e agent view**: una sessione che avvii da solo nel tuo terminale, IDE o nell'ambiente locale dell'app desktop rimane al di fuori dei tuoi project, anche se puoi [portarne il lavoro in uno di essi](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/it/agent-view.md) è una schermata per tracciare diverse sessioni locali fianco a fianco, e tu avvii ancora ognuna e le dai il suo compito da solo.

429* **Worktree**: un [worktree](https://code.claude.com/docs/it/worktrees.md) dà a ogni sessione locale la sua copia di lavoro di un repository. I thread cloud non ne hanno bisogno: ognuno clona i suoi repository nella sua sandbox cloud e lavora sul suo branch.434* **Worktree**: un [worktree](https://code.claude.com/docs/it/worktrees.md) dà a ogni sessione locale la sua copia di lavoro di un repository. I thread cloud non ne hanno bisogno: ognuno clona i suoi repository nella sua sandbox cloud e lavora sul suo branch.

430* **Agent teams**: un [agent team](https://code.claude.com/docs/it/agent-teams.md) è una sessione che avvia sessioni di compagno per un singolo compito, sulla tua macchina o dentro una sessione cloud, e finisce con quel compito.435* **Agent teams**: un [agent team](https://code.claude.com/docs/it/agent-teams.md) è una sessione che avvia sessioni di compagno per un singolo compito, sulla tua macchina o dentro una sessione cloud, e finisce con quel compito.

431* **Subagents**: un [subagent](https://code.claude.com/docs/it/sub-agents.md) viene eseguito dentro una sessione, esegue un compito secondario nella sua finestra di contesto propria, e restituisce un riepilogo a quella sessione. I thread di un project sono sessioni intere che Claude avvia e che riferiscono di nuovo alla conversazione del project, e un thread può comunque usare subagent per i suoi propri compiti secondari.436* **Subagents**: un [subagent](https://code.claude.com/docs/it/sub-agents.md) viene eseguito dentro una sessione, esegue un compito secondario nella sua finestra di contesto propria, e restituisce un riepilogo a quella sessione. I thread di un project sono sessioni intere che Claude avvia e che riferiscono di nuovo alla conversazione del project, e un thread può comunque usare subagent per i suoi propri compiti secondari.


437 442 

438* I project sono disponibili su claude.ai/code, nell'app desktop e nell'app mobile di Claude, non nel CLI del terminale, nell'estensione VS Code o nel plugin JetBrains, e non attraverso Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.443* I project sono disponibili su claude.ai/code, nell'app desktop e nell'app mobile di Claude, non nel CLI del terminale, nell'estensione VS Code o nel plugin JetBrains, e non attraverso Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.

439* I thread del project sono [sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), o sessioni sulla vostra macchina attraverso [Remote Control](https://code.claude.com/docs/it/remote-control.md), con Anthropic come fornitore di modello in entrambi i casi. [Sicurezza](https://code.claude.com/docs/it/security.md) e [Utilizzo dei dati](https://code.claude.com/docs/it/data-usage.md) coprono come le sessioni cloud sono isolate e cosa viene conservato, e [Connessione e sicurezza](https://code.claude.com/docs/it/remote-control.md#connection-and-security) copre come un thread sulla vostra macchina si connette e cosa viene archiviato.444* I thread del project sono [sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md), o sessioni sulla vostra macchina attraverso [Remote Control](https://code.claude.com/docs/it/remote-control.md), con Anthropic come fornitore di modello in entrambi i casi. [Sicurezza](https://code.claude.com/docs/it/security.md) e [Utilizzo dei dati](https://code.claude.com/docs/it/data-usage.md) coprono come le sessioni cloud sono isolate e cosa viene conservato, e [Connessione e sicurezza](https://code.claude.com/docs/it/remote-control.md#connection-and-security) copre come un thread sulla vostra macchina si connette e cosa viene archiviato.

440* Non potete aggiungere una sessione che avete avviato voi stessi sulla vostra macchina a un project. Un project raggiunge la vostra macchina solo [eseguendo un thread lì attraverso Remote Control](#run-a-thread-on-your-own-computer), e quella sezione elenca di cosa ha bisogno.445* Non puoi aggiungere a un project una sessione che hai avviato tu stesso sulla tua macchina, anche se puoi [portarne il lavoro in un project](#start-from-an-existing-cloud-session). Un project raggiunge la tua macchina [eseguendo un thread lì attraverso Remote Control](#run-a-thread-on-your-own-computer), e quella sezione elenca di cosa ha bisogno.

441* La sandbox di un thread cloud si mette in pausa tra i turni e riprende quando il thread continua. Se la sandbox non può essere ripresa, il thread continua da un clone fresco, quindi i cambiamenti non committati possono essere persi. Su compiti lunghi, chiedete a Claude di committare e spingere il lavoro in corso.446* La sandbox di un thread cloud si mette in pausa tra i turni e riprende quando il thread continua. Se la sandbox non può essere ripresa, il thread continua da un clone fresco, quindi i cambiamenti non committati possono essere persi. Su compiti lunghi, chiedete a Claude di committare e spingere il lavoro in corso.

442* Un project appartiene a un utente. Non puoi condividere un project o i suoi thread con un altro utente, e le trascrizioni dei thread non hanno l'opzione di condivisione che hanno altre sessioni cloud. Non ci sono controlli a livello di organizzazione per i project durante la beta.447* Un project appartiene a un utente. Non puoi condividere un project o i suoi thread con un altro utente, e le trascrizioni dei thread non hanno l'opzione di condivisione che hanno altre sessioni cloud. Non ci sono controlli a livello di organizzazione per i project durante la beta.

443* Un thread appartiene all'unico project che l'ha avviato. Non potete spostare o copiare un thread in un altro project, o spostarlo fuori per stare da solo. [**Move to project**](#start-from-an-existing-cloud-session) va solo nell'altro modo: porta il lavoro di una sessione cloud in un project. Non potete unire due project in uno.448* Un thread appartiene all'unico project che l'ha avviato. Non potete spostare o copiare un thread in un altro project, o spostarlo fuori per stare da solo. [**Move to project**](#start-from-an-existing-cloud-session) va solo nell'altro modo: porta il lavoro di una sessione cloud in un project. Non potete unire due project in uno.

code-review.md +1 −1

Details

67 67 

68* **Risultati**: commenti inline sulle righe interessate, con un riepilogo nel corpo della revisione68* **Risultati**: commenti inline sulle righe interessate, con un riepilogo nel corpo della revisione

69* **Un check run**: denominato **Claude Code Review**, con i risultati elencati nei suoi [dettagli](https://code.claude.com/docs/it/code-review-pull-requests.md#check-run-output). Il check run non si conclude con un fallimento.69* **Un check run**: denominato **Claude Code Review**, con i risultati elencati nei suoi [dettagli](https://code.claude.com/docs/it/code-review-pull-requests.md#check-run-output). Il check run non si conclude con un fallimento.

70* **Quando non trova nulla**: il titolo del check run riporta **Code review found no issues**, e Claude pubblica la stessa breve nota sulla pull request70* **Una nota al posto dei risultati**: pubblicata quando il titolo del check run riporta **Code review found no issues**

71 71 

72Code Review sceglie i modelli Claude su cui vengono eseguite le revisioni, e le sue impostazioni di amministrazione non offrono una scelta del modello. Per rendere le revisioni più o meno approfondite, cambia il [livello di revisione](#review-levels).72Code Review sceglie i modelli Claude su cui vengono eseguite le revisioni, e le sue impostazioni di amministrazione non offrono una scelta del modello. Per rendere le revisioni più o meno approfondite, cambia il [livello di revisione](#review-levels).

73 73 

Details

152 152 

153### Cosa copre una revisione successiva153### Cosa copre una revisione successiva

154 154 

155Una revisione successiva che si avvia da sola, ad esempio dopo un push, si concentra su ciò che è cambiato dall'ultima revisione e pubblica meno nit e risultati preesistenti. Il suo riepilogo conta ciò che ha tralasciato, in una riga che termina con "found and not posted" o "outside the scope of this re-review and not posted."155Una revisione successiva che si avvia da sola, ad esempio dopo un push, si concentra su ciò che è cambiato dall'ultima revisione e pubblica meno [nit e risultati preesistenti](#severity-levels). Per verificare se di conseguenza ha tralasciato dei risultati, cerca nel corpo della revisione una frase che li conta:

156 

157* **Risultati su codice che non è cambiato dall'ultima revisione**: la frase termina con "outside the scope of this re-review and not posted"

158* **Nit e risultati preesistenti**: la frase termina con "found and not posted"

156 159 

157Per ottenere una revisione che non tralasci nulla di tutto ciò, scrivi [`@claude review`](#comment-commands). Copre di nuovo l'intera pull request.160Per ottenere una revisione che non tralasci nulla di tutto ciò, scrivi [`@claude review`](#comment-commands). Copre di nuovo l'intera pull request.

158 161 

Details

15| Titolo del check run | Cosa significa | Cosa fare |15| Titolo del check run | Cosa significa | Cosa fare |

16| :- | :- | :- |16| :- | :- | :- |

17| **Code review queued...** o **Code review in progress...** | La revisione non è terminata | Attendi che il titolo cambi |17| **Code review queued...** o **Code review in progress...** | La revisione non è terminata | Attendi che il titolo cambi |

18| **Code review found no issues** | La revisione è terminata e non ha trovato nulla da segnalare | Niente |18| **Code review found no issues** | La revisione è terminata e non ha pubblicato alcun risultato | Se questa non è la prima revisione della pull request, cerca nel corpo della revisione il conteggio dei [risultati che la revisione ha tralasciato](https://code.claude.com/docs/it/code-review-pull-requests.md#what-a-later-review-covers). Altrimenti, niente |

19| Un titolo che indica che sono stati trovati problemi | La revisione è terminata con dei risultati | Se non li vedi nel diff, consulta [Trova i problemi che non vengono mostrati come commenti inline](#find-issues-that-aren’t-showing-as-inline-comments) |19| Un titolo che indica che sono stati trovati problemi | La revisione è terminata con dei risultati | Se non li vedi nel diff, consulta [Trova i problemi che non vengono mostrati come commenti inline](#find-issues-that-aren’t-showing-as-inline-comments) |

20| **Code review skipped — no new changes** | Una revisione automatica non è stata eseguita sul tuo ultimo push | Per ottenere comunque una revisione, commenta `@claude review` |20| **Code review skipped — no new changes** | Una revisione automatica non è stata eseguita sul tuo ultimo push | Per ottenere comunque una revisione, commenta `@claude review` |

21| **Code review not repeated — earlier findings still open** | Una revisione automatica non è stata eseguita sul tuo ultimo push e i risultati Important della revisione precedente sono ancora aperti | Esegui il push di una correzione oppure, per ottenere comunque una revisione, commenta `@claude review`. Consulta [Quando un push mantiene il risultato precedente](https://code.claude.com/docs/it/code-review-pull-requests.md#when-a-push-keeps-the-earlier-result) |21| **Code review not repeated — earlier findings still open** | Una revisione automatica non è stata eseguita sul tuo ultimo push e i risultati Important della revisione precedente sono ancora aperti | Esegui il push di una correzione oppure, per ottenere comunque una revisione, commenta `@claude review`. Consulta [Quando un push mantiene il risultato precedente](https://code.claude.com/docs/it/code-review-pull-requests.md#when-a-push-keeps-the-earlier-result) |

desktop.md +48 −17

Details

223 223 

224#### Nascondi o mostra il pannello dei dettagli della sessione224#### Nascondi o mostra il pannello dei dettagli della sessione

225 225 

226Per nascondere o mostrare il pannello, fai clic su **Hide session rail** o **Show session rail** nella barra del titolo della sessione, oppure nel menu **⋮** della barra quando la finestra è stretta. Se ancora non vedi il pannello, [verifica quale layout della scheda Code hai](#check-which-layout-you-have).226Per nascondere o mostrare il pannello, fai clic su **Hide session rail** o **Show session rail** nella barra del titolo della sessione, oppure nel menu **⋮** della barra. Se ancora non vedi il pannello, [verifica quale layout della scheda Code hai](#check-which-layout-you-have).

227 227 

228### Esegui comandi nel terminale228### Esegui comandi nel terminale

229 229 


984 984 

985* **Sistema**: un processore x86\_64 o arm64. La macchina deve anche soddisfare i [requisiti di sistema](https://code.claude.com/docs/it/setup.md#system-requirements) di Claude Code. Su Linux, Claude Code richiede glibc 2.17 o versioni successive, oppure musl. Per vedere quale dei due ha la macchina, esegui `ldd --version` su di essa. Su una distribuzione basata su musl come Alpine Linux, installa anche i [pacchetti di cui Claude Code ha bisogno](https://code.claude.com/docs/it/setup.md#alpine-linux-and-musl-based-distributions).985* **Sistema**: un processore x86\_64 o arm64. La macchina deve anche soddisfare i [requisiti di sistema](https://code.claude.com/docs/it/setup.md#system-requirements) di Claude Code. Su Linux, Claude Code richiede glibc 2.17 o versioni successive, oppure musl. Per vedere quale dei due ha la macchina, esegui `ldd --version` su di essa. Su una distribuzione basata su musl come Alpine Linux, installa anche i [pacchetti di cui Claude Code ha bisogno](https://code.claude.com/docs/it/setup.md#alpine-linux-and-musl-based-distributions).

986* **SFTP**: il server SSH deve offrire il sottosistema SFTP, che viene attivato da una riga `Subsystem sftp` nel suo `sshd_config`. Per verificarlo, connettiti allo stesso host e alla stessa porta con `sftp` in un terminale sul tuo computer. Un server funzionante mostra il prompt `sftp>`.986* **SFTP**: il server SSH deve offrire il sottosistema SFTP, che viene attivato da una riga `Subsystem sftp` nel suo `sshd_config`. Per verificarlo, connettiti allo stesso host e alla stessa porta con `sftp` in un terminale sul tuo computer. Un server funzionante mostra il prompt `sftp>`.

987* **Sessioni per connessione**: Desktop su macOS e Linux apre diverse sessioni su una sola connessione SSH. Se il `sshd_config` del server imposta `MaxSessions 1`, aumenta il valore, ad esempio al valore predefinito di OpenSSH, cioè 10.987* **`MaxSessions 1` sul server**: per connetterti a un server il cui `sshd_config` imposta `MaxSessions 1`, esegui una di queste operazioni:

988 * **Il tuo computer esegue macOS o Linux**: aggiorna a Claude Desktop v3.1623.0 o versioni successive

989 * **Il tuo computer esegue Windows**: assicurati che Desktop [si connetta tramite il client OpenSSH](#use-your-ssh-configuration), perché il client SSH integrato di Desktop non riesce a connettersi a quel server

990 * **Puoi modificare il server**: aumenta `MaxSessions`, ad esempio al valore predefinito di OpenSSH, 10

991* **Accessi con `MaxSessions 1`**: usa un metodo di accesso che funzioni senza prompt, come una chiave conservata dal tuo agente SSH. Desktop effettua l'accesso almeno due volte ogni volta che si connette o si riconnette. Prevedi almeno un accesso in più per ogni scheda del [terminale](#run-commands-in-the-terminal) e per ogni sessione di Desktop in cui esegui comandi che iniziano con `!`. Non ne servono per i comandi eseguiti da Claude.

992* **Codici monouso con `MaxSessions 1`**: se ogni accesso ti chiede qualcosa, come nel caso dei codici monouso, i comandi `!` non riescono. Esegui invece quei comandi in una scheda del terminale, che mostra la richiesta nel proprio riquadro.

988* **Cartella di installazione**: Desktop installa un programma di supporto e Claude Code in `~/.claude/remote/` nella tua directory home. Li esegue da lì, quindi quella cartella non può trovarsi su un file system montato con `noexec`. Prevedi circa 1 GB di spazio su disco nella directory home di ogni utente che si connette. Per sapere cosa contiene quella cartella, consulta [File e processi sulla macchina remota](#files-and-processes-on-the-remote-machine).993* **Cartella di installazione**: Desktop installa un programma di supporto e Claude Code in `~/.claude/remote/` nella tua directory home. Li esegue da lì, quindi quella cartella non può trovarsi su un file system montato con `noexec`. Prevedi circa 1 GB di spazio su disco nella directory home di ogni utente che si connette. Per sapere cosa contiene quella cartella, consulta [File e processi sulla macchina remota](#files-and-processes-on-the-remote-machine).

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

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


993 998 

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

995 1000 

996Una sessione SSH non le ottiene da quei file, anche quando `claude` in un terminale su quella macchina le ottiene. La sessione può quindi bloccarsi, oppure mostrare **The connection from … to the API failed** o **Authentication failed**, e accedere di nuovo non aiuta.1001In una sessione SSH, Claude Code non riceve le variabili da quei file, anche quando `claude` in un terminale su quella macchina le riceve. La sessione può quindi bloccarsi, oppure mostrare **The connection from … to the API failed** o **Authentication failed**, e accedere di nuovo non aiuta.

997 1002 

998**1. Aggiungi le variabili**1003**1. Aggiungi le variabili**

999 1004 


1028 1033 

1029Riavvia la macchina remota, oppure chiudi Desktop e termina i processi del programma di supporto, come nei primi due passaggi per [rimuovere il programma di supporto](#files-and-processes-on-the-remote-machine). Fallo quando nessuna attività è in esecuzione, perché in entrambi i casi il lavoro di Claude viene interrotto.1034Riavvia la macchina remota, oppure chiudi Desktop e termina i processi del programma di supporto, come nei primi due passaggi per [rimuovere il programma di supporto](#files-and-processes-on-the-remote-machine). Fallo quando nessuna attività è in esecuzione, perché in entrambi i casi il lavoro di Claude viene interrotto.

1030 1035 

1031#### Usare la tua configurazione SSH su macOS e Linux1036#### Usare la tua configurazione SSH

1032 1037 

1033Su macOS e Linux, Desktop si connette eseguendo il client OpenSSH sul tuo computer, quindi usa il tuo `~/.ssh/config`. La connessione tramite il client OpenSSH richiede Claude Desktop v1.37937.0 o versioni successive. Inserisci un nome `Host` di quel file nel campo **SSH host** per usare le impostazioni della sua voce, come `HostName`, `User`, `IdentityFile`, `CertificateFile`, `ProxyJump` e `ProxyCommand`.1038Puoi usare la tua configurazione SSH su macOS, Linux e Windows quando Desktop si connette tramite il client OpenSSH sul tuo computer:

1039 

1040* **macOS e Linux**: Desktop si connette eseguendo il client OpenSSH sul tuo computer, quindi usa il tuo `~/.ssh/config`. La connessione tramite il client OpenSSH richiede Claude Desktop v1.37937.0 o versioni successive.

1041* **Windows**: quando Desktop si connette tramite il client OpenSSH, usa il tuo `%USERPROFILE%\.ssh\config`. Se usi un account Claude anziché un provider di terze parti, la connessione tramite il client OpenSSH richiede tutti questi requisiti:

1042 

1043 * Claude Desktop v2.2553.0 o versioni successive. Per trovare la tua versione, consulta [Verificare la versione](#check-your-version).

1044 * OpenSSH di Microsoft 9.4 o versioni successive

1045 * Desktop installato con i pulsanti di download nella parte superiore di questa pagina, perché Desktop dal Microsoft Store non si connette tramite il client OpenSSH

1046 

1047 Se non puoi soddisfare questi requisiti, o usi un provider di terze parti, consulta [Connettersi su Windows senza il client OpenSSH](#connect-on-windows-without-the-openssh-client).

1048 

1049Con il client OpenSSH, inserisci un nome `Host` dal tuo file di configurazione nel campo **SSH host**. Desktop usa quindi le impostazioni di quella voce `Host`, come `HostName`, `User`, `IdentityFile`, `CertificateFile`, `ProxyJump` e `ProxyCommand`.

1034 1050 

1035Prima di aggiungere la connessione, controlla il client e la voce in un terminale sul tuo computer:1051Prima di aggiungere la connessione, controlla il client e la voce in un terminale sul tuo computer:

1036 1052 

1037* **Versione del client**: esegui `ssh -V`. Il client deve essere OpenSSH 7.6 o versioni successive.1053* **Versione del client su macOS e Linux**: esegui `ssh -V`. Il client deve essere OpenSSH 7.6 o versioni successive.

1038* **Voce**: esegui `ssh` con il nome `Host`, come `ssh devbox`. Se non riesce, correggi prima la voce.1054* **Versione del client su Windows**: Desktop prova prima l'`ssh` presente nel tuo `PATH`, quindi esegui `ssh -V`. Il client supera la verifica se l'output mostra `OpenSSH_for_Windows_` e la versione 9.4 o successive. Se non la supera, controlla le due cartelle che Desktop prova successivamente: esegui `.\ssh.exe -V` in `C:\Windows\System32\OpenSSH`, poi in `C:\Program Files\OpenSSH`.

1055* **Nessun client supera la verifica su Windows**: aggiungi la funzionalità facoltativa **OpenSSH Client** in Windows e installa gli aggiornamenti di Windows in sospeso, oppure installa la [build più recente di Microsoft](https://learn.microsoft.com/en-us/troubleshoot/windows-server/system-management-components/upgrade-in-box-openssh-to-latest-openssh-release). Poi chiudi e riapri Desktop. Per vedere se Desktop ha trovato un client OpenSSH utilizzabile, cerca in [`ssh.log`](#get-desktops-logs-for-an-ssh-problem) `Windows OpenSSH client:` seguito da una versione, oppure `no usable Windows OpenSSH client`.

1056* **Voce**: su Windows, usa il client che ha superato la verifica della versione. Esegui `ssh` con il nome `Host`, ad esempio `ssh devbox`. Se non funziona, correggi prima la voce.

1039 1057 

1040Puoi lasciare vuoti i campi **SSH port** e **SSH key (optional)**. Se ne compili uno, Desktop lo usa insieme alla voce:1058Puoi lasciare vuoti i campi **SSH port** e **SSH key (optional)**. Se ne compili uno, Desktop lo usa insieme alla voce:

1041 1059 

1042* **SSH port**: un valore qui sovrascrive il `Port` della voce1060* **SSH port**: un valore qui sovrascrive il `Port` della voce

1043* **SSH key (optional)**: Desktop offre il file di chiave che scegli in aggiunta all'`IdentityFile` della voce e alle chiavi nel tuo agente SSH1061* **SSH key (optional)**: con il client OpenSSH, Desktop offre il file di chiave che scegli in aggiunta all'`IdentityFile` della voce e alle chiavi nel tuo agente SSH. Su Windows, scegli una chiave in formato OpenSSH, perché `ssh` non legge un file `.ppk` di PuTTY.

1062 

1063##### Connettersi su Windows senza il client OpenSSH

1064 

1065Su Windows, ti connetti tramite il client SSH integrato di Desktop se il tuo computer non soddisfa [i requisiti per il client OpenSSH](#use-your-ssh-configuration). Con un provider di terze parti, ti connetti tramite il client integrato per impostazione predefinita, e l'amministratore può modificare questo comportamento. Per l'impostazione, consulta [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).

1066 

1067Con il client integrato, puoi comunque inserire un nome `Host` dalla tua configurazione SSH nel campo **SSH host** se il tuo `PATH` contiene un comando `ssh`, con questi limiti:

1068 

1069* **Impostazioni dalla voce**: Desktop prende `HostName`, `User`, `Port` e `IdentityFile`. Prende anche `ProxyCommand` se nel tuo `PATH` è presente una shell `sh`.

1070* **SSH key (optional)**: lascia vuoto questo campo per mantenere l'`IdentityFile` della voce, perché un file di chiave che scegli qui sostituisce l'`IdentityFile`

1071* **`CertificateFile` e `ProxyJump`**: Desktop ignora `CertificateFile` e la connessione non riesce se la voce imposta `ProxyJump`. Per usare una delle due impostazioni, [connettiti tramite il client OpenSSH](#use-your-ssh-configuration).

1044 1072 

1045##### Raggiungere una macchina dietro un jump host1073##### Raggiungere una macchina dietro un jump host

1046 1074 


1095 1123 

1096##### Usare variabili della tua shell in un `ProxyCommand`1124##### Usare variabili della tua shell in un `ProxyCommand`

1097 1125 

1098Per usare una tua variabile d'ambiente in un comando `ProxyCommand` o `Match exec`, esportala in un file di avvio della shell, come `~/.zshrc`, quindi chiudi e riapri Desktop. All'avvio, Desktop legge ciò che la tua shell di login esporta e conserva quei valori finché non lo chiudi.1126Su macOS e Linux, per usare una tua variabile d'ambiente in un `ProxyCommand` o in un comando `Match exec`, esportala in un file di avvio della shell, ad esempio `~/.zshrc`. Poi chiudi e riapri Desktop. All'avvio, Desktop legge ciò che la tua shell di login esporta e mantiene quei valori finché non lo chiudi.

1099 1127 

1100Questo richiede Claude Desktop v2.37337.0 o versioni successive e un comando `env` che accetti `-0`, cosa che puoi verificare eseguendo `env -0` in un terminale sul tuo computer.1128Questo richiede Claude Desktop v2.37337.0 o versioni successive e un comando `env` che accetti `-0`, cosa che puoi verificare eseguendo `env -0` in un terminale sul tuo computer.

1101 1129 


1103>1131>

1104> Se la tua shell imposta credenziali AWS temporanee, [fornisci un profilo all'AWS CLI](#use-aws-credentials-in-a-proxycommand) invece di esportare variabili `AWS_*`.1132> Se la tua shell imposta credenziali AWS temporanee, [fornisci un profilo all'AWS CLI](#use-aws-credentials-in-a-proxycommand) invece di esportare variabili `AWS_*`.

1105 1133 

1106##### Usare credenziali AWS in un `ProxyCommand`1134##### Usare credenziali AWS in un `ProxyCommand` su macOS e Linux

1107 1135 

1108Se imposti credenziali AWS temporanee in un file di avvio della shell, un `ProxyCommand` che esegue l'AWS CLI può connettersi in un terminale e non riuscire in Desktop. Quando la tua shell esporta `AWS_SESSION_TOKEN`, `AWS_SECURITY_TOKEN` o `AWS_CREDENTIAL_EXPIRATION`, `ssh` e il tuo `ProxyCommand` in Desktop non ricevono le credenziali AWS della shell, `AWS_REGION` né `AWS_PROFILE`.1136Se imposti credenziali AWS temporanee in un file di avvio della shell, un `ProxyCommand` che esegue l'AWS CLI può connettersi in un terminale e non riuscire in Desktop. Quando la tua shell esporta `AWS_SESSION_TOKEN`, `AWS_SECURITY_TOKEN` o `AWS_CREDENTIAL_EXPIRATION`, `ssh` e il tuo `ProxyCommand` in Desktop non ricevono le credenziali AWS della shell, `AWS_REGION` né `AWS_PROFILE`.

1109 1137 


1242 1270 

1243##### Preparare un'attività lunga1271##### Preparare un'attività lunga

1244 1272 

1245* **Aggiorna prima**: aggiorna Desktop prima di avviare un'attività lunga. Su macOS e Windows, Desktop può riavviarsi da solo per installare un aggiornamento che ha scaricato. Quel riavvio attende mentre Claude sta lavorando a un'attività SSH. Su macOS con un account Claude, per impostazione predefinita il riavvio può comunque procedere una volta che l'aggiornamento ha atteso 72 ore.1273* **Aggiorna prima**: aggiorna Desktop prima di avviare un'attività lunga. Su macOS e Windows, Desktop può riavviarsi da solo per installare un aggiornamento che ha scaricato. Quel riavvio attende mentre Claude lavora su un'attività SSH. Per impostazione predefinita, dopo che l'aggiornamento ha atteso 72 ore, il riavvio può avvenire durante l'attività se Desktop può [ricollegarsi all'attività in seguito](#reopen-a-session-after-you-quit-desktop).

1246* **Non chiudere su Windows, o prima della v2.42304.0 con un provider di terze parti**: dopo una chiusura in quei casi perdi l'attività in esecuzione, quindi lascia Desktop aperto durante l'attività. In qualsiasi altro caso, consulta [cosa ritrovi](#reopen-a-session-after-you-quit-desktop) prima di chiuderlo.1274* **Verifica prima di chiudere**: non sempre recuperi l'attività in esecuzione dopo una chiusura o un riavvio, ad esempio dopo alcuni aggiornamenti di Desktop. Per i casi, consulta [Riaprire una sessione dopo aver chiuso Desktop](#reopen-a-session-after-you-quit-desktop).

1275* **Su una versione precedente, lascia Desktop aperto**: su Windows con Claude Desktop precedente alla v3.1623.0, non recuperi l'attività in esecuzione dopo la chiusura o il riavvio di Desktop. Lo stesso vale con un provider di terze parti su macOS o Linux prima della v2.42304.0. In entrambi i casi, lascia Desktop aperto durante l'attività. Per trovare la tua versione, consulta [Verificare la versione](#check-your-version).

1247* **Riduci le richieste**: scegli una modalità di permesso, regole o hook che [facciano sì che l'attività ti attenda meno spesso](#handle-requests-that-arrive-while-you-are-away)1276* **Riduci le richieste**: scegli una modalità di permesso, regole o hook che [facciano sì che l'attività ti attenda meno spesso](#handle-requests-that-arrive-while-you-are-away)

1248* **Controlla il jump host**: se il tuo jump host chiede un accesso, ad esempio una notifica push su un telefono, passa a un accesso che funzioni senza richieste. Altrimenti Desktop può inviare un'altra notifica push ogni volta che tenta di riconnettersi.1277* **Controlla il jump host**: se il tuo jump host chiede un accesso, ad esempio una notifica push su un telefono, passa a un accesso che funzioni senza richieste. Altrimenti Desktop può inviare un'altra notifica push ogni volta che tenta di riconnettersi.

1249* **Testa la macchina remota**: avvia un'attività breve, chiudi Desktop mentre l'attività è ancora in esecuzione e riapri la sessione ben dopo il momento in cui l'attività dovrebbe essere terminata. Se l'attività non è terminata e la sessione non mostra alcun errore di autenticazione, controlla sulla macchina remota [cosa può terminare un'attività](#limits-while-desktop-is-disconnected).1278* **Testa la macchina remota**: avvia un'attività breve, chiudi Desktop mentre l'attività è ancora in esecuzione e riapri la sessione ben dopo il momento in cui l'attività dovrebbe essere terminata. Se l'attività non è terminata e la sessione non mostra alcun errore di autenticazione, controlla sulla macchina remota [cosa può terminare un'attività](#limits-while-desktop-is-disconnected).


1320 1349 

1321Dopo aver chiuso Desktop, l'attività continua a essere eseguita sulla macchina remota, ma si ferma quando la sessione si riapre, a meno che Desktop non possa ricollegarsi al suo processo. Mentre Desktop è chiuso, l'attività viene eseguita finché non termina, ha bisogno di te o raggiunge uno dei [limiti](#limits-while-desktop-is-disconnected).1350Dopo aver chiuso Desktop, l'attività continua a essere eseguita sulla macchina remota, ma si ferma quando la sessione si riapre, a meno che Desktop non possa ricollegarsi al suo processo. Mentre Desktop è chiuso, l'attività viene eseguita finché non termina, ha bisogno di te o raggiunge uno dei [limiti](#limits-while-desktop-is-disconnected).

1322 1351 

1323* **Desktop su Windows**: non ritrovi l'attività in esecuzione, perché Desktop non si ricollega mai dopo una chiusura. Riavvia Desktop solo quando prevedi che l'attività sia terminata, perché la sessione può aprirsi all'avvio di Desktop.1352* **Desktop su Windows, attività avviata in una versione precedente alla v3.1623.0**: non recuperi l'attività, anche se nel frattempo Desktop è stato aggiornato. Riavvia Desktop solo quando prevedi che l'attività sia terminata, perché la sessione può aprirsi all'avvio di Desktop e l'attività si ferma quando la sessione si apre. Se non sai in quale versione hai avviato l'attività, attendi comunque finché non prevedi che sia terminata.

1324* **Provider di terze parti, attività da una versione precedente**: se hai avviato l'attività in una versione di Desktop precedente alla v2.42304.0, non la ritrovi nemmeno su macOS o Linux. Riavvia Desktop solo quando prevedi che l'attività sia terminata.1353* **Provider di terze parti su macOS o Linux, attività avviata in una versione precedente alla v2.42304.0**: non recuperi l'attività. Riavvia Desktop solo quando prevedi che l'attività sia terminata.

1325* **Qualsiasi altra attività, con Desktop su macOS o Linux**: avvia Desktop e apri la sessione, e l'attività prosegue se Desktop si ricollega. Non sempre può ricollegarsi, ad esempio dopo alcuni aggiornamenti di Desktop, quindi [aggiorna prima di un'attività lunga](#prepare-a-long-task).1354* **Qualsiasi altra attività**: avvia Desktop e apri la sessione, e l'attività prosegue se Desktop si ricollega. Non sempre riesce a ricollegarsi, ad esempio dopo alcuni aggiornamenti di Desktop, quindi [aggiorna prima di un'attività lunga](#prepare-a-long-task).

1326 1355 

1327Quando Desktop non può ricollegarsi, perdi anche qualsiasi approvazione o domanda che ti stava attendendo. Se l'attività non continua da sola, invia un messaggio e Claude continua dalla cronologia salvata della conversazione.1356Quando l'attività si ferma, la sessione può mostrare `Restarting Claude Code on <host>…` mentre Desktop avvia un nuovo processo. Perdi anche qualsiasi approvazione o domanda che ti stava attendendo. Se Claude non continua da solo, invia un messaggio, e Claude continua dalla cronologia salvata della conversazione.

1328 1357 

1329Per i deploy di terze parti, consulta [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).1358Per i deploy di terze parti, consulta [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).

1330 1359 


1411 1440 

1412Per scoprire chi si è connesso a una macchina remota, leggi il log del server SSH su quella macchina, dove un accesso da Desktop appare come uno da un terminale. Con Desktop su macOS o Linux, aspettati una voce ogni volta che Desktop si connette, non una per ogni sessione.1441Per scoprire chi si è connesso a una macchina remota, leggi il log del server SSH su quella macchina, dove un accesso da Desktop appare come uno da un terminale. Con Desktop su macOS o Linux, aspettati una voce ogni volta che Desktop si connette, non una per ogni sessione.

1413 1442 

1443Se il server imposta `MaxSessions 1`, aspettati almeno due voci ogni volta che Desktop si connette o si riconnette. Aspettati almeno un'altra voce per ogni scheda del terminale e per ogni sessione di Desktop in cui esegui comandi che iniziano con `!`.

1444 

1414Non troverai le connessioni SSH di Desktop nelle [metriche ed eventi](https://code.claude.com/docs/it/monitoring-usage.md#available-metrics-and-events) di Claude Code. Per scoprire da essi su quale macchina remota è stata eseguita una sessione SSH, consulta [Attribuire la telemetria alle sessioni SSH di Desktop](https://code.claude.com/docs/it/monitoring-usage.md#attribute-telemetry-to-desktop-ssh-sessions). Per il registro delle connessioni tenuto da Desktop stesso, consulta [Ottenere i log di Desktop per un problema SSH](#get-desktops-logs-for-an-ssh-problem).1445Non troverai le connessioni SSH di Desktop nelle [metriche ed eventi](https://code.claude.com/docs/it/monitoring-usage.md#available-metrics-and-events) di Claude Code. Per scoprire da essi su quale macchina remota è stata eseguita una sessione SSH, consulta [Attribuire la telemetria alle sessioni SSH di Desktop](https://code.claude.com/docs/it/monitoring-usage.md#attribute-telemetry-to-desktop-ssh-sessions). Per il registro delle connessioni tenuto da Desktop stesso, consulta [Ottenere i log di Desktop per un problema SSH](#get-desktops-logs-for-an-ssh-problem).

1415 1446 

1416#### Connessioni che si chiudono prima dell'accesso1447#### Connessioni che si chiudono prima dell'accesso


2112| - | - | - |2143| - | - | - |

2113| `<host>'s SSH server has SFTP turned off` | `[SFTP_UNAVAILABLE]` | Attiva SFTP nel file `sshd_config` del server, come descritto nei [requisiti della macchina remota](#remote-machine-requirements-for-ssh-sessions) |2144| `<host>'s SSH server has SFTP turned off` | `[SFTP_UNAVAILABLE]` | Attiva SFTP nel file `sshd_config` del server, come descritto nei [requisiti della macchina remota](#remote-machine-requirements-for-ssh-sessions) |

2114| `SFTP doesn't start on <host>` | `[SFTP_NOT_STARTED]` | Connettiti allo stesso host con `sftp` in un terminale sul tuo computer per vedere cosa lo blocca, quindi controlla le impostazioni e i file indicati nel messaggio di Desktop |2145| `SFTP doesn't start on <host>` | `[SFTP_NOT_STARTED]` | Connettiti allo stesso host con `sftp` in un terminale sul tuo computer per vedere cosa lo blocca, quindi controlla le impostazioni e i file indicati nel messaggio di Desktop |

2115| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | Aumenta `MaxSessions` nel file `sshd_config` del server, ad esempio al valore predefinito di OpenSSH, 10 |2146| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | Aggiorna a Claude Desktop v3.1623.0 o successiva, oppure aumenta `MaxSessions` nel file `sshd_config` del server, ad esempio al valore predefinito di OpenSSH, 10 |

2116| `<host> is out of disk space` | `[ENOSPC]` o `[EDQUOT]` | Libera spazio o quota sulla macchina remota, nella tua directory home o in `/tmp` |2147| `<host> is out of disk space` | `[ENOSPC]` o `[EDQUOT]` | Libera spazio o quota sulla macchina remota, nella tua directory home o in `/tmp` |

2117| `Free up disk space on this computer` | `[ENOSPC]` o `[EDQUOT]`, in un messaggio che inizia con `Couldn't prepare the deploy locally` | Libera spazio sul tuo computer |2148| `Free up disk space on this computer` | `[ENOSPC]` o `[EDQUOT]`, in un messaggio che inizia con `Couldn't prepare the deploy locally` | Libera spazio sul tuo computer |

2118| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | Attendi un minuto, quindi riprova. Se continua a non riuscire, esegui sulla macchina remota il comando indicato nel messaggio per vedere se Claude Code risponde lì. |2149| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | Attendi un minuto, quindi riprova. Se continua a non riuscire, esegui sulla macchina remota il comando indicato nel messaggio per vedere se Claude Code risponde lì. |

errors.md +2 −0

Details

327| `Cannot read this as an image: <path> is a pipe or a device` | [Errori degli strumenti](#file-is-too-large-to-read-as-an-image) |327| `Cannot read this as an image: <path> is a pipe or a device` | [Errori degli strumenti](#file-is-too-large-to-read-as-an-image) |

328| `subagent_type is required: the general-purpose agent is not available in this session` | [Errori degli strumenti](#subagent-type-is-required) |328| `subagent_type is required: the general-purpose agent is not available in this session` | [Errori degli strumenti](#subagent-type-is-required) |

329| `Error: this write left the memory index at MEMORY.md at ..., over its ... read limit` | [Errori degli strumenti](#memory-index-is-over-its-read-limit) |329| `Error: this write left the memory index at MEMORY.md at ..., over its ... read limit` | [Errori degli strumenti](#memory-index-is-over-its-read-limit) |

330| `Sandbox is required but failed to initialize: <reason>` | [Risoluzione dei problemi del sandboxing](https://code.claude.com/docs/it/sandboxing.md#commands-refused-with-sandbox-is-required) |

331| `Sandbox is required (sandbox.failIfUnavailable) and stopped being available in this session: <reason>` | [Risoluzione dei problemi del sandboxing](https://code.claude.com/docs/it/sandboxing.md#commands-refused-with-sandbox-is-required) |

330| `pkill: refusing to run` | [Errori degli strumenti](#pkill-pattern-matches-the-claude-code-process) |332| `pkill: refusing to run` | [Errori degli strumenti](#pkill-pattern-matches-the-claude-code-process) |

331| `Failed to write to <name>'s inbox — nothing was sent` | [Errori degli strumenti](#failed-to-write-to-a-teammate-inbox) |333| `Failed to write to <name>'s inbox — nothing was sent` | [Errori degli strumenti](#failed-to-write-to-a-teammate-inbox) |

332| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Errori degli strumenti](#failed-to-write-to-a-teammate-inbox) |334| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Errori degli strumenti](#failed-to-write-to-a-teammate-inbox) |

fast-mode.md +2 −2

Details

80 80 

81I prezzi della modalità veloce sono fissi su tutta la finestra di contesto di 1M token. Per il tasso Opus standard da confrontare, consulta il [riferimento sui prezzi di Claude](https://platform.claude.com/docs/it/about-claude/pricing).81I prezzi della modalità veloce sono fissi su tutta la finestra di contesto di 1M token. Per il tasso Opus standard da confrontare, consulta il [riferimento sui prezzi di Claude](https://platform.claude.com/docs/it/about-claude/pricing).

82 82 

83La prima volta che abiliti la modalità veloce in una conversazione, paghi il prezzo completo del token di input non memorizzato nella cache della modalità veloce per l'intero contesto della conversazione. Più avanti sei nella conversazione, più questo costa, quindi l'addebito è minimo quando abiliti la modalità veloce all'inizio. Il costo si applica una volta per conversazione, quindi disattivare e riattivare la modalità veloce in seguito non lo ripete. Per il meccanismo, consulta [come la modalità veloce interagisce con la cache del prompt](https://code.claude.com/docs/it/prompt-caching.md#turning-on-fast-mode).83La prima volta che abiliti la modalità veloce in una conversazione, paghi il prezzo completo del token di input non memorizzato nella cache della modalità veloce per l'intero contesto della conversazione. Più avanti sei nella conversazione, più questo costa, quindi l'addebito è minimo quando abiliti la modalità veloce all'inizio. La modalità veloce e la velocità standard mantengono [cache separate](https://code.claude.com/docs/it/prompt-caching.md#turning-on-fast-mode), quindi ogni passaggio successivo rilegge di nuovo una parte o l'intera conversazione senza cache.

84 84 

85### Vedi dove appare la spesa della modalità veloce85### Vedi dove appare la spesa della modalità veloce

86 86 


167 167 

168Dietro un gateway, verifica la presenza di queste configurazioni, in cui Claude Code non invia il controllo di disponibilità e non ha in cache alcun controllo precedente riuscito:168Dietro un gateway, verifica la presenza di queste configurazioni, in cui Claude Code non invia il controllo di disponibilità e non ha in cache alcun controllo precedente riuscito:

169 169 

170* Punti `ANTHROPIC_BASE_URL` al tuo gateway e imposti [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/it/llm-gateway-connect#set-the-base-url-and-credential) su una chiave emessa dal gateway che non è nel formato di una chiave API Anthropic. Claude Code non invia una chiave di questo tipo a `api.anthropic.com`.170* Punti `ANTHROPIC_BASE_URL` al tuo gateway e imposti [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/it/llm-gateway-connect#set-the-base-url-and-credential) su una chiave emessa dal gateway che non è nel formato di una chiave API Anthropic.

171* Imposti [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/it/env-vars), quindi Claude Code salta il controllo.171* Imposti [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/it/env-vars), quindi Claude Code salta il controllo.

172 172 

173Per ripristinare la modalità veloce in entrambe le configurazioni, imposta `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`.173Per ripristinare la modalità veloce in entrambe le configurazioni, imposta `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`.

Details

262 262 

263**Costo del contesto:** Basso fino a quando non vengono utilizzate. Le skills solo utente hanno costo zero fino a quando non vengono invocate.263**Costo del contesto:** Basso fino a quando non vengono utilizzate. Le skills solo utente hanno costo zero fino a quando non vengono invocate.

264 264 

265**Nei subagent:** Le skill funzionano diversamente nei subagent. Invece del caricamento su richiesta, le skill elencate nel campo `skills` del subagent vengono completamente precaricate nel suo contesto all'avvio. I subagent possono comunque scoprire e invocare skill di progetto, utente e plugin non elencate attraverso lo strumento Skill.265**Nei subagent:** Il contenuto completo delle skill elencate nel campo `skills` di un subagent [si carica nel suo contesto all'avvio](https://code.claude.com/docs/it/sub-agents.md#preload-skills-into-subagents), anziché su richiesta. I subagent possono comunque scoprire e invocare skill di progetto, utente e plugin non elencate attraverso lo strumento Skill.

266 266 

267> [!TIP]267> [!TIP]

268>268>

glossary.md +2 −2

Details

120 120 

121### Compaction121### Compaction

122 122 

123Riassunto automatico della tua conversazione quando la [context window](#context-window) si avvicina al suo limite. Gli output degli strumenti più vecchi vengono cancellati per primi, quindi la conversazione viene riassunta. CLAUDE.md a livello di radice del progetto e auto memory sopravvivono alla compaction e si ricaricano dal disco; le istruzioni date solo in conversazione potrebbero andare perse. Esegui `/compact` per attivare manualmente, opzionalmente con un focus come `/compact focus on the API changes`.123Riassunto automatico della tua conversazione quando la [finestra di contesto](#context-window) si avvicina al suo limite. CLAUDE.md a livello di radice del progetto e la memoria automatica sopravvivono alla compattazione, ma le istruzioni date solo in conversazione potrebbero non sopravvivere. Esegui `/compact` per attivarla manualmente, opzionalmente con un focus come `/compact focus on the API changes`.

124 124 

125Scopri di più: [What survives compaction](https://code.claude.com/docs/it/context-window.md#what-survives-compaction) · [When context fills up](https://code.claude.com/docs/it/how-claude-code-works.md#when-context-fills-up)125Scopri di più: [What survives compaction](https://code.claude.com/docs/it/context-window.md#what-survives-compaction) · [When context fills up](https://code.claude.com/docs/it/how-claude-code-works.md#when-context-fills-up) · [When Claude Code compacts a conversation you leave idle](https://code.claude.com/docs/it/settings-reference.md#idlecompaction)

126 126 

127### Connector127### Connector

128 128 

hooks.md +15 −5

Details

1426 1426 

1427Gli hook Setup non possono bloccare; l'esecuzione continua con qualsiasi codice di uscita. Con qualsiasi codice di uscita, Claude Code scarta i [campi di output JSON](#json-output) di un hook Setup, come `systemMessage`, `continue` e `hookSpecificOutput.additionalContext`. Con `-p`, lo stdout, lo stderr e il codice di uscita di un hook Setup compaiono nell'output dell'esecuzione solo come [eventi `hook_response`](https://code.claude.com/docs/it/headless#read-session-metadata) quando avvii con `--output-format stream-json --verbose`.1427Gli hook Setup non possono bloccare; l'esecuzione continua con qualsiasi codice di uscita. Con qualsiasi codice di uscita, Claude Code scarta i [campi di output JSON](#json-output) di un hook Setup, come `systemMessage`, `continue` e `hookSpecificOutput.additionalContext`. Con `-p`, lo stdout, lo stderr e il codice di uscita di un hook Setup compaiono nell'output dell'esecuzione solo come [eventi `hook_response`](https://code.claude.com/docs/it/headless#read-session-metadata) quando avvii con `--output-format stream-json --verbose`.

1428 1428 

1429Gli hook Setup hanno accesso a `CLAUDE_ENV_FILE`. Le variabili scritte in quel file persistono nei successivi comandi Bash della sessione, come negli [hook SessionStart](#persist-environment-variables). Su `Setup` vengono eseguiti solo gli hook `type: "command"`. Un hook `type: "mcp_tool"` su `Setup` viene sempre saltato, come descritto in [Campi degli hook di strumenti MCP](#mcp-tool-hook-fields).1429Gli hook Setup hanno accesso a `CLAUDE_ENV_FILE`. Se il tuo hook scrive variabili in quel file, queste persistono nei successivi comandi Bash della sessione, come negli [hook SessionStart](#persist-environment-variables). Su `Setup` vengono eseguiti solo gli hook `type: "command"`. Un hook `type: "mcp_tool"` su `Setup` viene sempre saltato, come descritto in [Campi degli hook di strumenti MCP](#mcp-tool-hook-fields).

1430 1430 

1431### InstructionsLoaded1431### InstructionsLoaded

1432 1432 


1483 1483 

1484Un [hook di callback dell'Agent SDK](https://code.claude.com/docs/it/agent-sdk/hooks.md) su `UserPromptSubmit` che raggiunge il timeout blocca il prompt con un messaggio che indica l'hook e il timeout, perché un callback in quel punto può fungere da controllo di policy che non deve fallire in modo permissivo. La sessione continua.1484Un [hook di callback dell'Agent SDK](https://code.claude.com/docs/it/agent-sdk/hooks.md) su `UserPromptSubmit` che raggiunge il timeout blocca il prompt con un messaggio che indica l'hook e il timeout, perché un callback in quel punto può fungere da controllo di policy che non deve fallire in modo permissivo. La sessione continua.

1485 1485 

1486#### `Esc` durante il controllo di un prompt

1487 

1488Se premi `Esc` o interrompi la sessione mentre gli hook stanno ancora controllando un prompt, il controllo si interrompe e il prompt non raggiunge Claude. Il testo che hai digitato nel terminale torna nell'input del prompt, e gli hook lo controllano di nuovo quando lo reinvii.

1489 

1490Un hook può bloccare il prompt nello stesso momento in cui interrompi. Il prompt rimane quindi bloccato: vedi il [messaggio di blocco](#what-a-blocked-prompt-leaves-behind) di quell'hook e il testo non torna nell'input.

1491 

1486#### Input di UserPromptSubmit1492#### Input di UserPromptSubmit

1487 1493 

1488Oltre ai [campi di input comuni](#common-input-fields), gli hook UserPromptSubmit ricevono il campo `prompt` contenente il testo inviato. Il contenuto incollato che è stato compresso in un segnaposto `[Pasted text #N]` arriva espanso al suo posto. Nelle sessioni in cui Claude Code [contrassegna il testo incollato per Claude](https://code.claude.com/docs/it/terminal-config.md#how-claude-treats-pasted-text), quel contenuto espanso si trova tra una riga `<pasted_content id="…">` e una riga `</pasted_content id="…">`, quindi tieni conto di quelle righe se il tuo hook analizza il prompt.1494Oltre ai [campi di input comuni](#common-input-fields), gli hook UserPromptSubmit ricevono il campo `prompt` contenente il testo inviato. Il contenuto incollato che è stato compresso in un segnaposto `[Pasted text #N]` arriva espanso al suo posto. Nelle sessioni in cui Claude Code [contrassegna il testo incollato per Claude](https://code.claude.com/docs/it/terminal-config.md#how-claude-treats-pasted-text), quel contenuto espanso si trova tra una riga `<pasted_content id="…">` e una riga `</pasted_content id="…">`, quindi tieni conto di quelle righe se il tuo hook analizza il prompt.


1741 1747 

1742Usa il [controllo delle decisioni di PreToolUse](#pretooluse-decision-control) per consentire, negare, chiedere conferma o differire la chiamata allo strumento.1748Usa il [controllo delle decisioni di PreToolUse](#pretooluse-decision-control) per consentire, negare, chiedere conferma o differire la chiamata allo strumento.

1743 1749 

1744Un [hook di callback dell'Agent SDK](https://code.claude.com/docs/it/agent-sdk/hooks.md) su `PreToolUse` che supera il timeout blocca la chiamata allo strumento e Claude riceve un risultato di errore che indica il timeout.1750Un [hook callback dell'Agent SDK](https://code.claude.com/docs/it/agent-sdk/hooks.md#hook-timeout) su `PreToolUse` che supera il timeout blocca la chiamata allo strumento.

1745 1751 

1746#### Input di PreToolUse1752#### Input di PreToolUse

1747 1753 


2970 2976 

2971Viene eseguito quando un comando della shell nella conversazione principale cambia la directory di lavoro, ad esempio quando Claude esegue un comando `cd`. Usalo per reagire ai cambi di directory: ricaricare le variabili d'ambiente, attivare toolchain specifiche del progetto o eseguire automaticamente script di configurazione. Si abbina a [FileChanged](#filechanged) per strumenti come [direnv](https://direnv.net/) che gestiscono l'ambiente per directory.2977Viene eseguito quando un comando della shell nella conversazione principale cambia la directory di lavoro, ad esempio quando Claude esegue un comando `cd`. Usalo per reagire ai cambi di directory: ricaricare le variabili d'ambiente, attivare toolchain specifiche del progetto o eseguire automaticamente script di configurazione. Si abbina a [FileChanged](#filechanged) per strumenti come [direnv](https://direnv.net/) che gestiscono l'ambiente per directory.

2972 2978 

2973Gli hook CwdChanged hanno accesso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Le variabili scritte in quel file persistono nei comandi Bash successivi fino al successivo evento CwdChanged, quando Claude Code le cancella.2979Gli hook CwdChanged hanno accesso a [`CLAUDE_ENV_FILE`](#persist-environment-variables). Se il tuo hook scrive variabili in quel file, queste persistono nei comandi Bash successivi fino al prossimo evento CwdChanged, quando Claude Code le cancella.

2974 2980 

2975CwdChanged non supporta i matcher e si attiva a ogni occorrenza.2981CwdChanged non supporta i matcher e si attiva a ogni occorrenza.

2976 2982 


3135* Claude Code isola una [sessione in background](https://code.claude.com/docs/it/agent-view.md#how-file-edits-are-isolated) nel proprio worktree3141* Claude Code isola una [sessione in background](https://code.claude.com/docs/it/agent-view.md#how-file-edits-are-isolated) nel proprio worktree

3136* [`claude remote-control`](https://code.claude.com/docs/it/remote-control#start-a-remote-control-session) in modalità `worktree` avvia una sessione nel proprio worktree3142* [`claude remote-control`](https://code.claude.com/docs/it/remote-control#start-a-remote-control-session) in modalità `worktree` avvia una sessione nel proprio worktree

3137 3143 

3138Quando Claude esegue `git worktree add` tramite lo strumento Bash invece di chiamare `EnterWorktree`, il tuo hook WorktreeCreate non viene eseguito. Per esaminare o bloccare quel comando, aggiungi un hook [`PreToolUse`](#pretooluse) con il matcher `Bash`.3144Un hook WorktreeCreate non viene eseguito per un worktree che Claude aggiunge tramite Bash, e l'hook di un plugin non viene eseguito per quello creato quando avvii con `--worktree` e [`--tmux`](https://code.claude.com/docs/it/cli-reference#cli-flags):

3145 

3146* **`git worktree add` tramite Bash**: per ispezionare o bloccare quel comando, aggiungi un hook [`PreToolUse`](#pretooluse) con il matcher `Bash`.

3147* **`--worktree` con `--tmux`**: Claude Code crea il worktree prima di caricare i plugin, quindi un hook WorktreeCreate di un plugin non viene eseguito. Per far eseguire il tuo hook con entrambi i flag, definiscilo invece in un [file di impostazioni](#configuration). Prima della v2.1.300, l'hook WorktreeCreate di un plugin non veniva eseguito nemmeno con il solo `--worktree`.

3139 3148 

3140Per impostazione predefinita Claude Code crea la copia di lavoro isolata con `git worktree`. Configurare un hook WorktreeCreate sostituisce quel comportamento predefinito di git, permettendoti di usare un diverso sistema di controllo versione come SVN, Perforce o Mercurial.3149Per impostazione predefinita Claude Code crea la copia di lavoro isolata con `git worktree`. Configurare un hook WorktreeCreate sostituisce quel comportamento predefinito di git, permettendoti di usare un diverso sistema di controllo versione come SVN, Perforce o Mercurial.

3141 3150 


4077 4086 

4078Quando un hook asincrono si attiva, Claude Code avvia il processo del hook e continua immediatamente senza aspettare il completamento. L'hook riceve lo stesso input JSON tramite stdin di un hook sincrono.4087Quando un hook asincrono si attiva, Claude Code avvia il processo del hook e continua immediatamente senza aspettare il completamento. L'hook riceve lo stesso input JSON tramite stdin di un hook sincrono.

4079 4088 

4080Dopo 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.4089Dopo 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, tranne che per l'[output ripetuto di `SessionStart`](#limitations). A differenza del `systemMessage` di un hook sincrono, nessuno dei due campi viene mostrato a te.

4081 4090 

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

4083 4092 


4145 4154 

4146* L'output del hook viene consegnato al turno di conversazione successivo. Se la sessione è inattiva, la risposta attende fino alla prossima interazione dell'utente. Eccezione: un hook `asyncRewake` che esce con il codice 2 riattiva Claude immediatamente anche quando la sessione è inattiva.4155* L'output del hook viene consegnato al turno di conversazione successivo. Se la sessione è inattiva, la risposta attende fino alla prossima interazione dell'utente. Eccezione: un hook `asyncRewake` che esce con il codice 2 riattiva Claude immediatamente anche quando la sessione è inattiva.

4147* Ogni esecuzione crea un processo in background separato.4156* Ogni esecuzione crea un processo in background separato.

4157* Un hook `SessionStart` asincrono viene eseguito ogni volta che l'evento si attiva. Claude Code salta l'output dell'hook quando il testo di `additionalContext` e `systemMessage` corrisponde a quello che Claude ha ricevuto l'ultima volta da quell'hook, a meno che nel frattempo un hook `SessionStart` sincrono non abbia aggiunto altro testo. Claude Code consegna il testo quando cambia, e di nuovo la volta successiva in cui l'hook viene eseguito dopo una compattazione o `/clear`. Prima della v2.1.295, Claude Code aggiungeva di nuovo lo stesso testo alla conversazione a ogni ripresa.

4148 4158 

4149## Considerazioni sulla sicurezza4159## Considerazioni sulla sicurezza

4150 4160 

hooks-guide.md +1 −1

Details

954* Gli hook `PostToolUse` non possono annullare le azioni, poiché lo strumento è già stato eseguito.954* Gli hook `PostToolUse` non possono annullare le azioni, poiché lo strumento è già stato eseguito.

955* Gli hook [`PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) si attivano quando Claude Code sta per chiederti un permesso, oppure quando altrimenti negherebbe automaticamente una chiamata che non può mostrare una richiesta di permesso. In [modalità non interattiva](https://code.claude.com/docs/it/headless.md) con il flag `-p`, vengono comunque eseguiti al di fuori della [modalità `dontAsk`](https://code.claude.com/docs/it/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), e una chiamata su cui nessun hook decide e a cui nient'altro può rispondere viene negata.955* Gli hook [`PermissionRequest`](https://code.claude.com/docs/it/hooks#permissionrequest) si attivano quando Claude Code sta per chiederti un permesso, oppure quando altrimenti negherebbe automaticamente una chiamata che non può mostrare una richiesta di permesso. In [modalità non interattiva](https://code.claude.com/docs/it/headless.md) con il flag `-p`, vengono comunque eseguiti al di fuori della [modalità `dontAsk`](https://code.claude.com/docs/it/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), e una chiamata su cui nessun hook decide e a cui nient'altro può rispondere viene negata.

956* Gli hook `Stop` si attivano ogni volta che Claude termina di rispondere, non solo al completamento di un'attività. Non si attivano in caso di interruzioni da parte dell'utente. Gli errori API attivano invece [StopFailure](https://code.claude.com/docs/it/hooks.md#stopfailure).956* Gli hook `Stop` si attivano ogni volta che Claude termina di rispondere, non solo al completamento di un'attività. Non si attivano in caso di interruzioni da parte dell'utente. Gli errori API attivano invece [StopFailure](https://code.claude.com/docs/it/hooks.md#stopfailure).

957* Quando più hook `PreToolUse` restituiscono [`updatedInput`](https://code.claude.com/docs/it/hooks#pretooluse) per riscrivere gli argomenti di uno strumento, ha effetto l'ultimo che termina. Poiché gli hook vengono eseguiti in parallelo, l'ordine non è deterministico. Evita di avere più di un hook che modifica l'input dello stesso strumento.957* Quando più hook `PreToolUse` restituiscono [`updatedInput`](https://code.claude.com/docs/it/hooks#pretooluse) per riscrivere l'input di uno strumento, Claude Code non esegue il merge delle riscritture né garantisce con quale riscrittura viene eseguito lo strumento. Evita di avere più di un hook che riscrive l'input dello stesso strumento.

958 958 

959### Hook e modalità di permesso959### Hook e modalità di permesso

960 960 

Details

131 131 

132#### Quando il contesto si riempie132#### Quando il contesto si riempie

133 133 

134Claude Code gestisce il contesto automaticamente mentre ti avvicini al limite. Cancella prima gli output degli strumenti più vecchi, quindi riassume la conversazione se necessario. Le tue richieste e i frammenti di codice chiave vengono preservati; le istruzioni dettagliate dall'inizio della conversazione possono andare perse. Metti le regole persistenti in CLAUDE.md piuttosto che fare affidamento sulla cronologia della conversazione.134Claude Code gestisce il contesto automaticamente mentre ti avvicini al limite. Compatta la conversazione in un riassunto. Il riassunto mantiene le tue richieste e i frammenti di codice chiave, ma le istruzioni dettagliate dall'inizio della conversazione possono andare perse. Metti le regole persistenti in CLAUDE.md piuttosto che fare affidamento sulla cronologia della conversazione.

135 135 

136Per controllare cosa viene preservato durante la compattazione, aggiungi una sezione "Compact Instructions" a CLAUDE.md o esegui `/compact` con un focus (come `/compact focus on the API changes`).136Per controllare cosa viene preservato durante la compattazione, aggiungi una sezione "Compact Instructions" a CLAUDE.md o esegui `/compact` con un focus (come `/compact focus on the API changes`).

137 137 

Details

659 659 

660Per riassociare i tasti che scorrono l'elenco dei file o cambiano il confronto, vedi [Azioni del pannello diff](https://code.claude.com/docs/it/keybindings.md#diff-panel-actions).660Per riassociare i tasti che scorrono l'elenco dei file o cambiano il confronto, vedi [Azioni del pannello diff](https://code.claude.com/docs/it/keybindings.md#diff-panel-actions).

661 661 

662Durante un merge, un rebase, un cherry-pick o un revert non completato, il pannello continua a mostrare le modifiche che ha letto per ultime da git, così non si riempie delle modifiche in arrivo dell'operazione. Si aggiorna al primo refresh dopo la fine dell'operazione, ad esempio quando Claude modifica di nuovo un file.

663 

662### Diff dialog664### Diff dialog

663 665 

664La finestra di dialogo diff si apre come un blocco con bordo sopra il prompt ed elenca i file modificati con i conteggi delle righe aggiunte e rimosse. Li confronta con `HEAD`, o con ciò che hai [scelto per ultimo nel pannello diff](#diff-panel) per questo repository.666La finestra di dialogo diff si apre come un blocco con bordo sopra il prompt ed elenca i file modificati con i conteggi delle righe aggiunte e rimosse. Li confronta con `HEAD`, o con ciò che hai [scelto per ultimo nel pannello diff](#diff-panel) per questo repository.

keybindings.md +4 −4

Details

678 678 

679## Interazione con la modalità Vim679## Interazione con la modalità Vim

680 680 

681Quando la modalità vim è abilitata tramite `/config` → Editor mode, le scorciatoie da tastiera e la modalità vim operano indipendentemente:681Quando abiliti la modalità vim con l'impostazione Editor mode in `/config`, le scorciatoie da tastiera e la modalità vim operano indipendentemente:

682 682 

683* **Modalità Vim** gestisce l'input a livello di input di testo (movimento del cursore, modalità, movimenti)683* **Modalità Vim** gestisce l'input a livello di input di testo: movimento del cursore, modalità e movimenti

684* **Scorciatoie da tastiera** gestiscono le azioni a livello di componente (attiva/disattiva attività, invia, ecc.)684* **Scorciatoie da tastiera** gestiscono le azioni a livello di componente, come attivare o disattivare le attività o inviare un messaggio

685* Il tasto Escape in modalità vim passa da INSERT a NORMAL; non attiva `chat:cancel`685* Il tasto Esc in modalità vim passa dalla modalità INSERT alla modalità NORMAL; non attiva `chat:cancel`

686* La maggior parte delle scorciatoie Ctrl+tasto passano attraverso la modalità vim al sistema di scorciatoie da tastiera686* La maggior parte delle scorciatoie Ctrl+tasto passano attraverso la modalità vim al sistema di scorciatoie da tastiera

687* I tasti Vim non sono rimappabili tramite il file delle scorciatoie da tastiera. Per mappare una sequenza in modalità INSERT a due tasti come `jj` su Escape, utilizzare l'impostazione [`vimInsertModeRemaps`](https://code.claude.com/docs/it/interactive-mode#remap-insert-mode-key-sequences)687* I tasti Vim non sono rimappabili tramite il file delle scorciatoie da tastiera. Per mappare una sequenza in modalità INSERT a due tasti come `jj` su Escape, utilizzare l'impostazione [`vimInsertModeRemaps`](https://code.claude.com/docs/it/interactive-mode#remap-insert-mode-key-sequences)

688* In modalità vim NORMAL, `?` mostra il menu della guida (comportamento vim)688* In modalità vim NORMAL, `?` mostra il menu della guida (comportamento vim)

Details

306 306 

307## Aggiungere skills per directory307## Aggiungere skills per directory

308 308 

309Qualsiasi sottodirectory può definire [skills](https://code.claude.com/docs/it/skills.md) limitate al proprio stack. Una skill si carica su richiesta quando Claude determina che è rilevante, quindi gli strumenti specifici dell'API non consumano contesto durante il lavoro frontend.309Qualsiasi sottodirectory può definire [skill](https://code.claude.com/docs/it/skills.md) limitate al proprio stack. Una skill si carica su richiesta quando Claude determina che è rilevante.

310 310 

311Le skills si trovano sotto `.claude/skills/` all'interno della directory. Eseguine il commit insieme al codice di quell'area in modo che chiunque cloni il repository le ottenga. In un monorepo questo può essere un set di skills per package. In un grande codebase a singolo albero è un set per sottosistema come `src/db/.claude/skills/`.311Le skills si trovano sotto `.claude/skills/` all'interno della directory. Eseguine il commit insieme al codice di quell'area in modo che chiunque cloni il repository le ottenga. In un monorepo questo può essere un set di skills per package. In un grande codebase a singolo albero è un set per sottosistema come `src/db/.claude/skills/`.

312 312 


347- Mock external services in `src/__tests__/mocks/`347- Mock external services in `src/__tests__/mocks/`

348```348```

349 349 

350Una diversa sottodirectory contiene diverse skills nello stesso modo: `packages/web/.claude/skills/component-patterns/` descrive le convenzioni dei componenti del frontend invece del testing. Quando Claude lavora su un file in `packages/api/`, carica la skill api-testing. Quando lavora in `packages/web/`, carica component-patterns invece. Le skills di nessuna directory si caricano durante i compiti dell'altra.350Una diversa sottodirectory contiene diverse skill nello stesso modo: `packages/web/.claude/skills/component-patterns/` descrive le convenzioni dei componenti del frontend invece del testing. Quando Claude lavora su un file in `packages/api/`, carica la skill api-testing. Quando lavora in `packages/web/`, carica component-patterns.

351 351 

352Puoi anche limitare una skill per pattern di file invece che per posizionamento. Il [campo frontmatter `paths`](https://code.claude.com/docs/it/skills#frontmatter-reference) accetta pattern glob, e Claude carica la skill automaticamente solo quando lavora con file corrispondenti. Usalo per una skill che si trova nella `.claude/skills/` della radice del repository ma si applica solo a certi file, come una skill di migrazione del database limitata a `**/migrations/**`.352Puoi anche limitare una skill per pattern di file invece che per posizionamento. Il [campo frontmatter `paths`](https://code.claude.com/docs/it/skills#frontmatter-reference) accetta pattern glob, e Claude carica la skill automaticamente solo quando lavora con file corrispondenti. Usalo per una skill che si trova nella `.claude/skills/` della radice del repository ma si applica solo a certi file, come una skill di migrazione del database limitata a `**/migrations/**`.

353 353 

Details

520| Errori `400` su ogni richiesta, nelle parole proprie del gateway che rifiutano un tipo di strumento non riconosciuto, come `Input tag 'advisor_20260301'`, su Claude Code v2.1.275 | In un rollout graduale su quella versione, le richieste portano una voce dello [strumento advisor](https://code.claude.com/docs/it/advisor.md) anche con l'advisor disattivato. L'API Anthropic l'accetta, ma un gateway o upstream che convalida i tipi di strumento rifiuta l'intera richiesta; uno che [inoltra i campi del corpo della richiesta invariati](https://code.claude.com/docs/it/llm-gateway-protocol.md#forward-as-open-lists) lo passa attraverso senza essere interessato. La voce è una dichiarazione che non porta contenuto di conversazione | Aggiorna a v2.1.276 o successivo, che non invia la voce dietro un gateway `ANTHROPIC_BASE_URL` a meno che tu non attivi l'advisor. Su v2.1.275, imposta [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/it/env-vars), che rimuove la voce dalle richieste |520| Errori `400` su ogni richiesta, nelle parole proprie del gateway che rifiutano un tipo di strumento non riconosciuto, come `Input tag 'advisor_20260301'`, su Claude Code v2.1.275 | In un rollout graduale su quella versione, le richieste portano una voce dello [strumento advisor](https://code.claude.com/docs/it/advisor.md) anche con l'advisor disattivato. L'API Anthropic l'accetta, ma un gateway o upstream che convalida i tipi di strumento rifiuta l'intera richiesta; uno che [inoltra i campi del corpo della richiesta invariati](https://code.claude.com/docs/it/llm-gateway-protocol.md#forward-as-open-lists) lo passa attraverso senza essere interessato. La voce è una dichiarazione che non porta contenuto di conversazione | Aggiorna a v2.1.276 o successivo, che non invia la voce dietro un gateway `ANTHROPIC_BASE_URL` a meno che tu non attivi l'advisor. Su v2.1.275, imposta [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/it/env-vars), che rimuove la voce dalle richieste |

521| Modelli mancanti dal selettore `/model` | I nomi dei modelli del gateway non sono nell'elenco integrato di Claude Code, oppure Claude Code sta mostrando un [`modelPicker`](https://code.claude.com/docs/it/settings-reference#modelpicker) che sostituisce le opzioni integrate | Abilita la [scoperta dei modelli del gateway](#add-gateway-models-to-the-model-picker) o aggiungi nomi con le variabili di [configurazione del modello](https://code.claude.com/docs/it/model-config.md). Se Claude Code mostra un `modelPicker` che sostituisce, aggiungi i modelli del gateway ad esso, oppure chiedi al tuo amministratore di aggiungerli quando le impostazioni gestite lo forniscono |521| Modelli mancanti dal selettore `/model` | I nomi dei modelli del gateway non sono nell'elenco integrato di Claude Code, oppure Claude Code sta mostrando un [`modelPicker`](https://code.claude.com/docs/it/settings-reference#modelpicker) che sostituisce le opzioni integrate | Abilita la [scoperta dei modelli del gateway](#add-gateway-models-to-the-model-picker) o aggiungi nomi con le variabili di [configurazione del modello](https://code.claude.com/docs/it/model-config.md). Se Claude Code mostra un `modelPicker` che sostituisce, aggiungi i modelli del gateway ad esso, oppure chiedi al tuo amministratore di aggiungerli quando le impostazioni gestite lo forniscono |

522| `/fast` segnala `Fast mode unavailable due to network connectivity issues` mentre le richieste di inferenza funzionano | Il controllo della disponibilità della [modalità veloce](https://code.claude.com/docs/it/fast-mode.md) va direttamente a `api.anthropic.com` e non segue `ANTHROPIC_BASE_URL`, quindi l'uscita diretta bloccata fa fallire il controllo | Aggiungi `api.anthropic.com` all'allowlist se l'uscita è bloccata, oppure imposta una variabile di skip. Vedi [usa la modalità veloce dietro proxy e gateway LLM](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |522| `/fast` segnala `Fast mode unavailable due to network connectivity issues` mentre le richieste di inferenza funzionano | Il controllo della disponibilità della [modalità veloce](https://code.claude.com/docs/it/fast-mode.md) va direttamente a `api.anthropic.com` e non segue `ANTHROPIC_BASE_URL`, quindi l'uscita diretta bloccata fa fallire il controllo | Aggiungi `api.anthropic.com` all'allowlist se l'uscita è bloccata, oppure imposta una variabile di skip. Vedi [usa la modalità veloce dietro proxy e gateway LLM](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

523| `/fast` segnala `Fast mode is currently unavailable` in una sessione che si autentica con una chiave emessa dal gateway in `ANTHROPIC_API_KEY` | Mentre `ANTHROPIC_BASE_URL` punta al tuo gateway, Claude Code non invia a `api.anthropic.com` una chiave che non è nel formato di una chiave API Anthropic. Il controllo della disponibilità della [modalità veloce](https://code.claude.com/docs/it/fast-mode.md) quindi non viene inviato e, senza un precedente controllo riuscito memorizzato nella cache, Claude Code tratta la modalità veloce come non disponibile | Imposta `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`; vedi [usa la modalità veloce dietro proxy e gateway LLM](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |523| `/fast` segnala `Fast mode is currently unavailable` in una sessione che si autentica con una chiave emessa dal gateway in `ANTHROPIC_API_KEY` | Mentre `ANTHROPIC_BASE_URL` punta al tuo gateway e la chiave non è nel formato di una chiave API Anthropic, Claude Code non invia il controllo della disponibilità della [modalità veloce](https://code.claude.com/docs/it/fast-mode.md). Senza un precedente controllo riuscito memorizzato nella cache, tratta la modalità veloce come non disponibile | Imposta `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`; vedi [usa la modalità veloce dietro proxy e gateway LLM](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

524| `/fast` segnala `Fast mode has been disabled by your organization` in una sessione autenticata con `ANTHROPIC_AUTH_TOKEN`, anche se l'organizzazione ha la modalità veloce abilitata | Il controllo della disponibilità richiede un accesso a claude.ai o una chiave API; con solo un token bearer, Claude Code tratta la modalità veloce come disabilitata senza inviare il controllo | Imposta `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; vedi [usa la modalità veloce dietro proxy e gateway LLM](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |524| `/fast` segnala `Fast mode has been disabled by your organization` in una sessione autenticata con `ANTHROPIC_AUTH_TOKEN`, anche se l'organizzazione ha la modalità veloce abilitata | Il controllo della disponibilità richiede un accesso a claude.ai o una chiave API; con solo un token bearer, Claude Code tratta la modalità veloce come disabilitata senza inviare il controllo | Imposta `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; vedi [usa la modalità veloce dietro proxy e gateway LLM](https://code.claude.com/docs/it/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

525| Claude Code ti chiede di accedere anche se il [test curl](#verify-the-connection) ha successo | La CLI non ha una credenziale propria: un URL di base raggiungibile non è uno, e in una sessione interattiva un blocco `env` nel `.claude/settings.json` o `.claude/settings.local.json` di un progetto si applica solo dopo la procedura guidata di primo avvio e il [prompt di fiducia](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) | Imposta `ANTHROPIC_AUTH_TOKEN` da qualche parte che Claude Code legge prima della configurazione di primo avvio: un'esportazione shell, il blocco `env` in `~/.claude/settings.json`, o impostazioni gestite |525| Claude Code ti chiede di accedere anche se il [test curl](#verify-the-connection) ha successo | La CLI non ha una credenziale propria: un URL di base raggiungibile non è uno, e in una sessione interattiva un blocco `env` nel `.claude/settings.json` o `.claude/settings.local.json` di un progetto si applica solo dopo la procedura guidata di primo avvio e il [prompt di fiducia](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) | Imposta `ANTHROPIC_AUTH_TOKEN` da qualche parte che Claude Code legge prima della configurazione di primo avvio: un'esportazione shell, il blocco `env` in `~/.claude/settings.json`, o impostazioni gestite |

526| `ANTHROPIC_API_KEY` è impostato ma ignorato, senza prompt | La chiave ha bisogno di un'approvazione una tantum nelle sessioni interattive, e una chiave precedentemente rifiutata viene ignorata senza chiedere di nuovo | Abilitala sotto `/config` con l'opzione `Use custom API key` |526| `ANTHROPIC_API_KEY` è impostato ma ignorato, senza prompt | La chiave ha bisogno di un'approvazione una tantum nelle sessioni interattive, e una chiave precedentemente rifiutata viene ignorata senza chiedere di nuovo | Abilitala sotto `/config` con l'opzione `Use custom API key` |

Details

148| :- | :- |148| :- | :- |

149| `x-claude-code-request-class` | Che tipo di richiesta è questa: `main` per un turno della conversazione principale, `subagent` per un turno di un [subagent](https://code.claude.com/docs/it/sub-agents.md), `workflow` per un agente in esecuzione all'interno di un flusso di lavoro, `compaction` per la richiesta di riepilogo che compatta una conversazione, o `auxiliary` per richieste laterali come titoli di sessione, classificatori e riepiloghi. Inviato su ogni richiesta |149| `x-claude-code-request-class` | Che tipo di richiesta è questa: `main` per un turno della conversazione principale, `subagent` per un turno di un [subagent](https://code.claude.com/docs/it/sub-agents.md), `workflow` per un agente in esecuzione all'interno di un flusso di lavoro, `compaction` per la richiesta di riepilogo che compatta una conversazione, o `auxiliary` per richieste laterali come titoli di sessione, classificatori e riepiloghi. Inviato su ogni richiesta |

150| `x-claude-code-agent-type` | Il tipo di subagent che ha emesso la richiesta: un nome di tipo di agente integrato come `Explore`, `Plan` o `general-purpose`, o `custom` per un agente definito dall'utente, `teammate` per un membro del [team di agenti](https://code.claude.com/docs/it/agent-teams.md) in esecuzione nel processo del leader, o `fork` per un [fork](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation). Presente solo sui turni propri di un subagent; la compattazione o le richieste laterali di un subagent mantengono l'ID dell'agente ma non portano alcun tipo. Un nome di agente scelto dall'utente non viene mai inviato |150| `x-claude-code-agent-type` | Il tipo di subagent che ha emesso la richiesta: un nome di tipo di agente integrato come `Explore`, `Plan` o `general-purpose`, o `custom` per un agente definito dall'utente, `teammate` per un membro del [team di agenti](https://code.claude.com/docs/it/agent-teams.md) in esecuzione nel processo del leader, o `fork` per un [fork](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation). Presente solo sui turni propri di un subagent; la compattazione o le richieste laterali di un subagent mantengono l'ID dell'agente ma non portano alcun tipo. Un nome di agente scelto dall'utente non viene mai inviato |

151| `x-claude-code-compaction` | Presente sulla richiesta che riepiloga la conversazione durante una [compattazione](https://code.claude.com/docs/it/prompt-caching.md#compacting-the-conversation). Il valore dice cosa l'ha attivata: `auto` quando la finestra di contesto si avvicinava alla capacità, `manual` per `/compact`, o `reactive` quando l'API ha rifiutato una richiesta come troppo lunga. Il valore è `auto` anche per la [compattazione per inattività](https://code.claude.com/docs/it/settings-reference.md#idlecompaction). Assente su ogni altra richiesta |151| `x-claude-code-compaction` | Presente sulla richiesta che riepiloga la conversazione durante una [compattazione](https://code.claude.com/docs/it/prompt-caching.md#compacting-the-conversation). Il valore dice cosa l'ha attivata: `auto` quando la finestra di contesto si avvicinava alla capacità, `manual` per `/compact`, o `reactive` quando l'API ha rifiutato una richiesta come troppo lunga. Il valore è `auto` anche per la [compattazione per inattività](https://code.claude.com/docs/it/settings-reference.md#idlecompaction) in una sessione interattiva del terminale. Assente su ogni altra richiesta, inclusa quella che scrive un riepilogo in background prima di una compattazione |

152| `x-claude-code-context-compacted` | Presente una volta, sulla prima richiesta di conversazione principale dopo una compattazione, con gli stessi valori di `x-claude-code-compaction`. Il prefisso della conversazione prima di questa richiesta non viene più utilizzato, quindi una cache basata su di esso può essere eliminata |152| `x-claude-code-context-compacted` | Presente una volta, sulla prima richiesta di conversazione principale dopo una compattazione, con gli stessi valori di `x-claude-code-compaction`. Il prefisso della conversazione prima di questa richiesta non viene più utilizzato, quindi una cache basata su di esso può essere eliminata |

153| `x-claude-code-prev-tool-durations` | Tempo di esecuzione misurato delle chiamate di strumento i cui risultati questa richiesta porta, come `<name>=<ms>;<name>=<ms>`, ad esempio `Bash=742;Read=9`. Inviato sulla richiesta successiva della stessa conversazione dopo un batch di chiamate di strumento, dalla sessione principale o da un subagent |153| `x-claude-code-prev-tool-durations` | Tempo di esecuzione misurato delle chiamate di strumento i cui risultati questa richiesta porta, come `<name>=<ms>;<name>=<ms>`, ad esempio `Bash=742;Read=9`. Inviato sulla richiesta successiva della stessa conversazione dopo un batch di chiamate di strumento, dalla sessione principale o da un subagent |

154| `x-claude-code-prompt-id` | UUID casuale che identifica il prompt dell'utente a cui una richiesta serve. Le richieste che servono un prompt condividono il valore, inclusi i turni dei subagent che il prompt ha avviato. Le richieste non attribuite a un prompt lo omettono. Usarlo per raggruppare le richieste di una sessione per prompt. Richiede Claude Code v2.1.283 o successivo |154| `x-claude-code-prompt-id` | UUID casuale che identifica il prompt dell'utente a cui una richiesta serve. Le richieste che servono un prompt condividono il valore, inclusi i turni dei subagent che il prompt ha avviato. Le richieste non attribuite a un prompt lo omettono. Usarlo per raggruppare le richieste di una sessione per prompt. Richiede Claude Code v2.1.283 o successivo |


238* Quando l'upstream rifiuta solo il marcatore `cache_control` su un messaggio di sistema a metà conversazione, Claude Code mantiene i messaggi di sistema e riprova una volta con il marcatore spostato. Il marcatore va sull'ultima voce in `messages` che non è un messaggio di sistema, in quel nuovo tentativo e nelle richieste successive finché Claude Code non esce238* Quando l'upstream rifiuta solo il marcatore `cache_control` su un messaggio di sistema a metà conversazione, Claude Code mantiene i messaggi di sistema e riprova una volta con il marcatore spostato. Il marcatore va sull'ultima voce in `messages` che non è un messaggio di sistema, in quel nuovo tentativo e nelle richieste successive finché Claude Code non esce

239* Quando l'upstream rifiuta una [thinking signature](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), incluso con un `400` il cui messaggio dice che il blocco è `bound to a different conversation`, Claude Code rimuove i blocchi di pensiero precedenti dalla richiesta, ritenta, e li mantiene fuori da ogni richiesta successiva. Le nuove risposte includono ancora il pensiero239* Quando l'upstream rifiuta una [thinking signature](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), incluso con un `400` il cui messaggio dice che il blocco è `bound to a different conversation`, Claude Code rimuove i blocchi di pensiero precedenti dalla richiesta, ritenta, e li mantiene fuori da ogni richiesta successiva. Le nuove risposte includono ancora il pensiero

240* Quando il gateway o il suo upstream rifiuta la voce dello [strumento advisor](https://code.claude.com/docs/it/advisor.md) in `tools` come tipo di strumento non riconosciuto, Claude Code ritenta la richiesta una volta senza quella voce e il suo valore `anthropic-beta`. Le richieste successive a quell'URL di base lasciano l'advisor fuori fino a quando Claude Code esce, e `/advisor` non è disponibile allo sviluppatore per quel tempo. Claude Code riconosce questo rifiuto da una risposta `400` o `422` il cui messaggio nomina il tipo di strumento dopo `Input tag`, come `Input tag 'advisor_20260301'`. Prima della v2.1.280, Claude Code non ritentava questo rifiuto240* Quando il gateway o il suo upstream rifiuta la voce dello [strumento advisor](https://code.claude.com/docs/it/advisor.md) in `tools` come tipo di strumento non riconosciuto, Claude Code ritenta la richiesta una volta senza quella voce e il suo valore `anthropic-beta`. Le richieste successive a quell'URL di base lasciano l'advisor fuori fino a quando Claude Code esce, e `/advisor` non è disponibile allo sviluppatore per quel tempo. Claude Code riconosce questo rifiuto da una risposta `400` o `422` il cui messaggio nomina il tipo di strumento dopo `Input tag`, come `Input tag 'advisor_20260301'`. Prima della v2.1.280, Claude Code non ritentava questo rifiuto

241* Quando l'upstream rifiuta `output_config.effort`, Claude Code riprova la richiesta senza lo sforzo e lo esclude dalle richieste successive a quel modello finché Claude Code non esce. Claude Code riconosce questo rifiuto da un `400` il cui messaggio nomina `output_config.effort` insieme a `Extra inputs are not permitted`, oppure dice che il modello non supporta il parametro di sforzo241* Quando l'upstream rifiuta `output_config.effort` o il suo valore `anthropic-beta`, Claude Code riprova e non aggiunge né l'uno né l'altro alle richieste per quel modello finché Claude Code non esce. Il tuo gateway non richiede modifiche se inoltra il `400` dell'upstream senza modificarlo e il messaggio:

242 * Nomina `output_config.effort` insieme a `Extra inputs are not permitted`

243 * Dice che il modello non supporta il parametro di sforzo

244 * Inizia con `Unexpected value(s)` ed elenca `effort-2025-11-24` per l'intestazione `anthropic-beta`. Richiede la v2.1.310 o successiva. Gli sviluppatori il cui [`ANTHROPIC_BETAS`](https://code.claude.com/docs/it/env-vars) elenca il valore continuano a inviarlo e a ricevere il `400`, quindi chiedi loro di rimuovere quella voce

242* Quando l'upstream rifiuta il campo `context_management` o il suo valore `anthropic-beta`, il gateway vede la richiesta ancora una volta senza di essi. Se il gateway li vede di nuovo in una richiesta successiva e l'upstream li rifiuta di nuovo, segue lo stesso nuovo tentativo. Claude Code riconosce questo rifiuto dal suo messaggio, ad esempio uno contenente `context_management: Extra inputs are not permitted`. Prima della v2.1.304, Claude Code non riprovava dopo questo rifiuto245* Quando l'upstream rifiuta il campo `context_management` o il suo valore `anthropic-beta`, il gateway vede la richiesta ancora una volta senza di essi. Se il gateway li vede di nuovo in una richiesta successiva e l'upstream li rifiuta di nuovo, segue lo stesso nuovo tentativo. Claude Code riconosce questo rifiuto dal suo messaggio, ad esempio uno contenente `context_management: Extra inputs are not permitted`. Prima della v2.1.304, Claude Code non riprovava dopo questo rifiuto

243* Quando l'upstream rifiuta un campo beta degli strumenti diverso da `defer_loading`, come `strict`, il `400` raggiunge lo sviluppatore. Prima di ciò, il gateway può vedere di nuovo la richiesta [senza i campi della ricerca degli strumenti](#retry-without-tool-search). Per smettere di inviare tali campi, chiedi agli sviluppatori di impostare [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)246* Quando l'upstream rifiuta un campo beta degli strumenti diverso da `defer_loading`, come `strict`, il `400` raggiunge lo sviluppatore. Prima di ciò, il gateway può vedere di nuovo la richiesta [senza i campi della ricerca degli strumenti](#retry-without-tool-search). Per smettere di inviare tali campi, chiedi agli sviluppatori di impostare [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)

244 247 

monitoring-usage.md +180 −180

Details

95 95 

96Quando l'app desktop o un runner di [ambiente self-hosted](https://code.claude.com/docs/it/self-hosted-environments) avvia Claude Code e nomina un endpoint OTLP nell'ambiente che fornisce, Claude Code fissa la destinazione allo stesso modo: le variabili di telemetria del launcher rimuovono le variabili impostate dagli sviluppatori esattamente come fanno le impostazioni gestite. Claude Code non rimuove le variabili che il launcher stesso ha impostato. Richiede Claude Code v2.1.251 o successivo.96Quando l'app desktop o un runner di [ambiente self-hosted](https://code.claude.com/docs/it/self-hosted-environments) avvia Claude Code e nomina un endpoint OTLP nell'ambiente che fornisce, Claude Code fissa la destinazione allo stesso modo: le variabili di telemetria del launcher rimuovono le variabili impostate dagli sviluppatori esattamente come fanno le impostazioni gestite. Claude Code non rimuove le variabili che il launcher stesso ha impostato. Richiede Claude Code v2.1.251 o successivo.

97 97 

98## Dettagli della configurazione98## Dettagli di configurazione

99 99 

100### Variabili di configurazione comuni100### Variabili di configurazione comuni

101 101 

102Queste variabili configurano gli esportatori, gli endpoint e il comportamento dell'esportazione per tutti i deployment.102Queste variabili configurano gli exporter, gli endpoint e il comportamento di esportazione per tutti i deploy.

103 103 

104Se imposti una variabile di endpoint o protocollo per segnale specifico, come `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code la utilizza al posto della variabile generica per quel segnale. Se imposti una variabile di intestazioni per segnale specifico, come `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code la unisce con la generica `OTEL_EXPORTER_OTLP_HEADERS` per quel segnale.104Se imposti una variabile di endpoint o di protocollo specifica per segnale, come `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code la usa al posto della variabile generica per quel segnale. Se imposti una variabile di header specifica per segnale, come `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code ne esegue il merge con la variabile generica `OTEL_EXPORTER_OTLP_HEADERS` per quel segnale.

105 105 

106Su macchine con impostazioni gestite, vedi [Come le impostazioni gestite bloccano la destinazione OTLP](#how-managed-settings-lock-the-otlp-destination) per sapere cosa Claude Code rimuove.106Sulle macchine con impostazioni gestite, consulta [Come le impostazioni gestite bloccano la destinazione OTLP](#how-managed-settings-lock-the-otlp-destination) per sapere cosa rimuove Claude Code.

107 107 

108| Variabile di ambiente | Descrizione | Valori di esempio |108| Variabile d'ambiente | Descrizione | Valori di esempio |

109| - | - | - |109| - | - | - |

110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Abilita la raccolta della telemetria (obbligatorio) | `1` |110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Abilita la raccolta della telemetria (obbligatoria) | `1` |

111| `OTEL_METRICS_EXPORTER` | Tipi di esportatore di metriche, separati da virgola. Usa `none` per disabilitare | `console`, `otlp`, `prometheus`, `none` |111| `OTEL_METRICS_EXPORTER` | Tipi di exporter delle metriche, separati da virgole. Usa `none` per disabilitare | `console`, `otlp`, `prometheus`, `none` |

112| `OTEL_LOGS_EXPORTER` | Tipi di esportatore di log/eventi, separati da virgola. Usa `none` per disabilitare | `console`, `otlp`, `none` |112| `OTEL_LOGS_EXPORTER` | Tipi di exporter di log/eventi, separati da virgole. Usa `none` per disabilitare | `console`, `otlp`, `none` |

113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protocollo per l'esportatore OTLP, si applica a tutti i segnali. Claude Code non ha un protocollo predefinito, quindi imposta questa variabile o la variabile di protocollo specifica per segnale per ogni esportatore `otlp` che abiliti | `grpc`, `http/json`, `http/protobuf` |113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protocollo per l'exporter OTLP, si applica a tutti i segnali. Claude Code non ha un protocollo predefinito, quindi imposta questa variabile o la variabile di protocollo specifica per segnale per ogni exporter `otlp` che abiliti | `grpc`, `http/json`, `http/protobuf` |

114| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint del collettore OTLP per tutti i segnali | `http://localhost:4317` |114| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint del collector OTLP per tutti i segnali | `http://localhost:4317` |

115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protocollo per le metriche, sostituisce l'impostazione generale | `grpc`, `http/json`, `http/protobuf` |115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protocollo per le metriche, sovrascrive l'impostazione generale | `grpc`, `http/json`, `http/protobuf` |

116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Endpoint delle metriche OTLP, sostituisce l'impostazione generale | `http://localhost:4318/v1/metrics` |116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Endpoint OTLP per le metriche, sovrascrive l'impostazione generale | `http://localhost:4318/v1/metrics` |

117| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protocollo per i log, sostituisce l'impostazione generale | `grpc`, `http/json`, `http/protobuf` |117| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protocollo per i log, sovrascrive l'impostazione generale | `grpc`, `http/json`, `http/protobuf` |

118| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Endpoint dei log OTLP, sostituisce l'impostazione generale | `http://localhost:4318/v1/logs` |118| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Endpoint OTLP per i log, sovrascrive l'impostazione generale | `http://localhost:4318/v1/logs` |

119| `OTEL_EXPORTER_OTLP_HEADERS` | Intestazioni di autenticazione per OTLP | `Authorization=Bearer token` |119| `OTEL_EXPORTER_OTLP_HEADERS` | Header di autenticazione per OTLP | `Authorization=Bearer token` |

120| `OTEL_EXPORTER_OTLP_METRICS_HEADERS` | Intestazioni di autenticazione per le metriche, unite alle intestazioni generali | `Authorization=Bearer token` |120| `OTEL_EXPORTER_OTLP_METRICS_HEADERS` | Header di autenticazione per le metriche, uniti tramite merge con gli header generali | `Authorization=Bearer token` |

121| `OTEL_EXPORTER_OTLP_LOGS_HEADERS` | Intestazioni di autenticazione per i log, unite alle intestazioni generali | `Authorization=Bearer token` |121| `OTEL_EXPORTER_OTLP_LOGS_HEADERS` | Header di autenticazione per i log, uniti tramite merge con gli header generali | `Authorization=Bearer token` |

122| `OTEL_METRIC_EXPORT_INTERVAL` | Intervallo di esportazione in millisecondi (predefinito: 60000) | `5000`, `60000` |122| `OTEL_METRIC_EXPORT_INTERVAL` | Intervallo di esportazione in millisecondi (predefinito: 60000) | `5000`, `60000` |

123| `OTEL_LOGS_EXPORT_INTERVAL` | Intervallo di esportazione dei log in millisecondi (predefinito: 5000) | `1000`, `10000` |123| `OTEL_LOGS_EXPORT_INTERVAL` | Intervallo di esportazione dei log in millisecondi (predefinito: 5000) | `1000`, `10000` |

124| `OTEL_LOG_USER_PROMPTS` | Abilita la registrazione del contenuto del prompt dell'utente (predefinito: disabilitato) | `1` per abilitare |124| `OTEL_LOG_USER_PROMPTS` | Abilita la registrazione del contenuto dei prompt dell'utente (predefinito: disabilitato) | `1` per abilitare |

125| `OTEL_LOG_ASSISTANT_RESPONSES` | Abilita la registrazione del testo della risposta dell'assistente su eventi `assistant_response` (predefinito: disabilitato). Se non impostato, ricade al valore di `OTEL_LOG_USER_PROMPTS` | `1` per abilitare, `0` per mantenere oscurato |125| `OTEL_LOG_ASSISTANT_RESPONSES` | Abilita la registrazione del testo delle risposte dell'assistente negli eventi `assistant_response` (predefinito: disabilitato). Se non è impostata, usa il valore di `OTEL_LOG_USER_PROMPTS` | `1` per abilitare, `0` per mantenerlo oscurato |

126| `OTEL_LOG_TOOL_DETAILS` | Abilita la registrazione dei parametri dello strumento e degli argomenti di input negli eventi dello strumento e negli attributi dello span di traccia: comandi Bash, nomi del server MCP e dello strumento, nomi delle skill, nomi dei workflow creati dall'utente e input dello strumento. Abilita anche i nomi dei comandi personalizzati, plugin e MCP su eventi `user_prompt` e i nomi reali dell'agente, della skill, del plugin e del server MCP e dello strumento sui [contatori di costo e token](#cost-counter) (predefinito: disabilitato). Per i server integrati di Claude Desktop, nelle sessioni di proprietà di Claude Desktop, `mcp_server_name`/`mcp_tool_name` vengono emessi su `tool_decision`/`tool_result` anche con il flag disattivato. L'eccezione richiede Claude Code v2.1.214 o successivo | `1` per abilitare |126| `OTEL_LOG_TOOL_DETAILS` | Abilita la registrazione dei parametri degli strumenti e degli argomenti di input negli eventi degli strumenti e negli attributi degli span delle tracce: comandi Bash, nomi dei server MCP e degli strumenti, nomi delle skill, nomi dei workflow creati dall'utente e input degli strumenti. Abilita anche i nomi dei comandi personalizzati, dei plugin e MCP negli eventi `user_prompt`, e i nomi reali di agenti, skill, plugin, server MCP e strumenti nei [contatori di costi e token](#cost-counter) (predefinito: disabilitato). Per i server integrati di Claude Desktop, nelle sessioni gestite da Claude Desktop, `mcp_server_name`/`mcp_tool_name` vengono emessi su `tool_decision`/`tool_result` anche con il flag disattivato. L'eccezione richiede Claude Code v2.1.214 o successiva | `1` per abilitare |

127| `OTEL_LOG_TOOL_CONTENT` | Abilita la registrazione del contenuto dello strumento nell'[evento dello span `tool.output`](#tool-output-span-event) (predefinito: disabilitato). Gli attributi dello span portano il contenuto dello strumento sotto [i loro stessi gate](#new-context-gates). Richiede [tracing](#traces-beta). Il contenuto viene troncato al limite di contenuto (60 KB per impostazione predefinita) | `1` per abilitare |127| `OTEL_LOG_TOOL_CONTENT` | Abilita la registrazione del contenuto degli strumenti nell'[evento di span `tool.output`](#tool-output-span-event) (predefinito: disabilitato). Gli attributi degli span riportano il contenuto degli strumenti sotto [i propri controlli](#new-context-gates). Richiede il [tracing](#traces-beta). Il contenuto viene troncato al limite del contenuto (60 KB per impostazione predefinita) | `1` per abilitare |

128| `OTEL_LOG_MANAGED_SETTINGS` | Aggiungi le impostazioni gestite oscurate e un digest SHA-256 delle impostazioni prima dell'oscuramento agli eventi [managed settings resolved](#managed-settings-resolved-event) (predefinito: disabilitato). Un valore nelle impostazioni di progetto o locali non lo attiva. Richiede Claude Code v2.1.274 o successivo | `1` per abilitare |128| `OTEL_LOG_MANAGED_SETTINGS` | Aggiunge le impostazioni gestite oscurate, e un digest SHA-256 delle impostazioni prima dell'oscuramento, agli eventi [managed settings resolved](#managed-settings-resolved-event) (predefinito: disabilitato). Un valore nelle impostazioni di progetto o locali non lo attiva. Richiede Claude Code v2.1.274 o successiva | `1` per abilitare |

129| `OTEL_LOG_RAW_API_BODIES` | Emetti il JSON completo della richiesta e della risposta dell'API Anthropic Messages come eventi di log `api_request_body` / `api_response_body` (predefinito: disabilitato). I corpi includono l'intera cronologia della conversazione. L'abilitazione di questa opzione implica il consenso a tutto ciò che `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` e `OTEL_LOG_TOOL_CONTENT` rivelerebbero | `1` per corpi inline troncati al limite di contenuto (60 KB per impostazione predefinita), o `file:<dir>` per corpi non troncati su disco con un puntatore `body_ref` nell'evento |129| `OTEL_LOG_RAW_API_BODIES` | Emette il JSON completo di richiesta e risposta della Messages API di Anthropic come eventi di log `api_request_body` / `api_response_body` (predefinito: disabilitato). I corpi includono l'intera cronologia della conversazione. Abilitarla implica il consenso a tutto ciò che rivelerebbero `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` e `OTEL_LOG_TOOL_CONTENT` | `1` per corpi inline troncati al limite del contenuto (60 KB per impostazione predefinita), oppure `file:<dir>` per corpi non troncati su disco con un puntatore `body_ref` nell'evento |

130| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Limite di contenuto: la lunghezza massima degli attributi che portano contenuto come risposte del modello, contenuto dello strumento, prompt di sistema e corpi API grezzi, marcatore di troncamento incluso, in unità di codice UTF-16 (predefinito: 61440, cioè 60 KB). Il valore predefinito è dimensionato per backend che limitano i valori degli attributi a 64 KB; aumentalo solo se il tuo backend accetta valori più grandi, o riducilo per tagliare il volume della telemetria. Quando un limite di attributo dell'SDK OpenTelemetry, `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` o una delle sue varianti logrecord e span, è impostato più basso, Claude Code tronca a quel valore più piccolo in modo che il marcatore `[TRUNCATED ...]` rimanga entro il limite dell'SDK | `262144` |130| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Limite del contenuto: la lunghezza massima degli attributi che contengono contenuto, come risposte del modello, contenuto degli strumenti, prompt di sistema e corpi API grezzi, marcatore di troncamento incluso, in unità di codice UTF-16 (predefinito: 61440, cioè 60 KB). Il valore predefinito è dimensionato per i backend che limitano i valori degli attributi a 64 KB; aumentalo solo se il tuo backend accetta valori più grandi, oppure riducilo per diminuire il volume della telemetria. Quando un limite degli attributi dell'SDK OpenTelemetry, `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` o una delle sue varianti per logrecord e span, è impostato su un valore inferiore, Claude Code tronca a quel valore più piccolo in modo che il marcatore `[TRUNCATED ...]` rimanga entro il limite dell'SDK | `262144` |

131| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferenza di temporalità delle metriche (predefinito: `delta`). Imposta su `cumulative` se il tuo backend si aspetta una temporalità cumulativa | `delta`, `cumulative` |131| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferenza di temporalità delle metriche (predefinito: `delta`). Imposta `cumulative` se il tuo backend si aspetta una temporalità cumulativa | `delta`, `cumulative` |

132| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervallo per l'aggiornamento delle intestazioni dinamiche (predefinito: 1740000ms / 29 minuti) | `900000` |132| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervallo per l'aggiornamento degli header dinamici (predefinito: 1740000ms / 29 minuti) | `900000` |

133 133 

134Per i protocolli `http/protobuf` e `http/json`, Claude Code invia ogni richiesta di esportazione con un'intestazione `Content-Length`.134Per i protocolli `http/protobuf` e `http/json`, Claude Code invia ogni richiesta di esportazione con un header `Content-Length`.

135 135 

136### Autenticazione mTLS136### Autenticazione mTLS

137 137 

138Il modo in cui configuri i certificati client per l'esportatore OTLP dipende dal protocollo OTLP in uso per quel segnale, impostato tramite `OTEL_EXPORTER_OTLP_PROTOCOL` o l'override specifico per segnale. La stessa configurazione si applica a metriche, log e tracce.138Il modo in cui configuri i certificati client per l'exporter OTLP dipende dal protocollo OTLP in uso per quel segnale, impostato tramite `OTEL_EXPORTER_OTLP_PROTOCOL` o l'override specifico per segnale. La stessa configurazione si applica a metriche, log e tracce.

139 139 

140| Protocollo | Variabili del certificato client | Fidati della CA del collettore con |140| Protocollo | Variabili del certificato client | Considera attendibile la CA del collector con |

141| :- | :- | :- |141| :- | :- | :- |

142| `http/protobuf`, `http/json` | `CLAUDE_CODE_CLIENT_CERT`, `CLAUDE_CODE_CLIENT_KEY` e facoltativamente `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE`. Vedi [Configurazione di rete](https://code.claude.com/docs/it/network-config.md#mtls-authentication) | `NODE_EXTRA_CA_CERTS` |142| `http/protobuf`, `http/json` | `CLAUDE_CODE_CLIENT_CERT`, `CLAUDE_CODE_CLIENT_KEY` e, facoltativamente, `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE`. Consulta [Configurazione di rete](https://code.claude.com/docs/it/network-config.md#mtls-authentication) | `NODE_EXTRA_CA_CERTS` |

143| `grpc` | `OTEL_EXPORTER_OTLP_CLIENT_KEY` e `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE`, o i varianti specifici per segnale come `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` per utilizzare un certificato diverso per segnale | `OTEL_EXPORTER_OTLP_CERTIFICATE` |143| `grpc` | `OTEL_EXPORTER_OTLP_CLIENT_KEY` e `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE`, oppure le varianti specifiche per segnale come `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` per usare un certificato diverso per ogni segnale | `OTEL_EXPORTER_OTLP_CERTIFICATE` |

144 144 

145Per `grpc`, l'SDK OpenTelemetry legge direttamente le variabili OTLP standard, quindi le configurazioni esistenti che impostano le variabili di metriche specifiche per segnale continuano a funzionare. Su macchine con impostazioni gestite, Claude Code [può rimuovere le credenziali e gli endpoint specifici per segnale impostati dallo sviluppatore](#how-managed-settings-lock-the-otlp-destination) all'avvio.145Per `grpc`, l'SDK OpenTelemetry legge direttamente le variabili OTLP standard, quindi le configurazioni esistenti che impostano le variabili delle metriche specifiche per segnale continuano a funzionare. Sulle macchine con impostazioni gestite, Claude Code [potrebbe rimuovere all'avvio le credenziali e gli endpoint specifici per segnale impostati dallo sviluppatore](#how-managed-settings-lock-the-otlp-destination).

146 146 

147### Controllo della cardinalità delle metriche147### Controllo della cardinalità delle metriche

148 148 

149Le seguenti variabili di ambiente controllano quali attributi sono inclusi nelle metriche per gestire la cardinalità:149Le seguenti variabili d'ambiente controllano quali attributi vengono inclusi nelle metriche per gestire la cardinalità:

150 150 

151| Variabile di ambiente | Descrizione | Valore predefinito | Esempio per disabilitare |151| Variabile d'ambiente | Descrizione | Valore predefinito | Esempio per disabilitare |

152| - | - | - | - |152| - | - | - | - |

153| `OTEL_METRICS_INCLUDE_SESSION_ID` | Includi gli attributi session.id e, nelle sessioni cloud, ccr.session.id nelle metriche | `true` | `false` |153| `OTEL_METRICS_INCLUDE_SESSION_ID` | Include gli attributi session.id e, nelle sessioni cloud, ccr.session.id nelle metriche | `true` | `false` |

154| `OTEL_METRICS_INCLUDE_VERSION` | Includi l'attributo app.version nelle metriche | `false` | `true` |154| `OTEL_METRICS_INCLUDE_VERSION` | Include l'attributo app.version nelle metriche | `false` | `true` |

155| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Includi gli attributi user.account\_uuid e user.account\_id nelle metriche | `true` | `false` |155| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Include gli attributi user.account\_uuid e user.account\_id nelle metriche | `true` | `false` |

156| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Includi l'attributo app.entrypoint nelle metriche | `false` | `true` |156| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Include l'attributo app.entrypoint nelle metriche | `false` | `true` |

157| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Includi le chiavi da `OTEL_RESOURCE_ATTRIBUTES` come attributi sui punti dati delle metriche | `true` | `false` |157| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Include le chiavi di `OTEL_RESOURCE_ATTRIBUTES` come attributi sui datapoint delle metriche | `true` | `false` |

158| `OTEL_METRICS_INCLUDE_REPOSITORY` | Includi gli [attributi di identità del repository](#repository-attributes) `vcs.*` su metriche ed eventi. Richiede Claude Code v2.1.269 o successivo | `false` | `true` |158| `OTEL_METRICS_INCLUDE_REPOSITORY` | Include gli [attributi di identità del repository](#repository-attributes) `vcs.*` su metriche ed eventi. Richiede Claude Code v2.1.269 o successiva | `false` | `true` |

159 159 

160Una cardinalità più bassa generalmente significa migliori prestazioni e costi di archiviazione inferiori, ma dati meno granulari per l'analisi.160Una cardinalità inferiore generalmente comporta prestazioni migliori e costi di archiviazione inferiori, ma dati meno granulari per l'analisi.

161 161 

162### Traces (beta)162### Tracce (beta)

163 163 

164Il tracing distribuito esporta span che collegano ogni prompt dell'utente alle richieste API e alle esecuzioni di strumenti che attiva, in modo da poter visualizzare una richiesta completa come una singola traccia nel tuo backend di tracing.164Il tracing distribuito esporta span che collegano ogni prompt dell'utente alle richieste API e alle esecuzioni degli strumenti che attiva, così puoi visualizzare una richiesta completa come una singola traccia nel tuo backend di tracing.

165 165 

166Il tracing è disabilitato per impostazione predefinita. Per abilitarlo, imposta sia `CLAUDE_CODE_ENABLE_TELEMETRY=1` che `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, quindi imposta `OTEL_TRACES_EXPORTER` per scegliere dove vengono inviati gli span. Le tracce riutilizzano la [configurazione OTLP comune](#common-configuration-variables) per endpoint, protocollo, intestazioni e [mTLS](#mtls-authentication). Su macchine con impostazioni gestite, Claude Code [può rimuovere le credenziali e gli endpoint specifici per segnale impostati dallo sviluppatore](#how-managed-settings-lock-the-otlp-destination) all'avvio.166Il tracing è disattivato per impostazione predefinita. Per abilitarlo, imposta sia `CLAUDE_CODE_ENABLE_TELEMETRY=1` sia `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, quindi imposta `OTEL_TRACES_EXPORTER` per scegliere dove vengono inviati gli span. Le tracce riutilizzano la [configurazione OTLP comune](#common-configuration-variables) per endpoint, protocollo, header e [mTLS](#mtls-authentication). Sulle macchine con impostazioni gestite, Claude Code [potrebbe rimuovere all'avvio le credenziali e gli endpoint specifici per segnale impostati dallo sviluppatore](#how-managed-settings-lock-the-otlp-destination).

167 167 

168| Variabile di ambiente | Descrizione | Valori di esempio |168| Variabile d'ambiente | Descrizione | Valori di esempio |

169| - | - | - |169| - | - | - |

170| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Abilita il tracing degli span (obbligatorio). `ENABLE_ENHANCED_TELEMETRY_BETA` è anche accettato | `1` |170| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Abilita il tracing degli span (obbligatoria). È accettata anche `ENABLE_ENHANCED_TELEMETRY_BETA` | `1` |

171| `OTEL_TRACES_EXPORTER` | Tipi di esportatore di tracce, separati da virgola. Usa `none` per disabilitare | `console`, `otlp`, `none` |171| `OTEL_TRACES_EXPORTER` | Tipi di exporter delle tracce, separati da virgole. Usa `none` per disabilitare | `console`, `otlp`, `none` |

172| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protocollo per le tracce, sostituisce `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |172| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protocollo per le tracce, sovrascrive `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |

173| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Endpoint delle tracce OTLP, sostituisce `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |173| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Endpoint OTLP per le tracce, sovrascrive `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |

174| `OTEL_EXPORTER_OTLP_TRACES_HEADERS` | Intestazioni di autenticazione per le tracce, unite a `OTEL_EXPORTER_OTLP_HEADERS` | `Authorization=Bearer token` |174| `OTEL_EXPORTER_OTLP_TRACES_HEADERS` | Header di autenticazione per le tracce, uniti tramite merge con `OTEL_EXPORTER_OTLP_HEADERS` | `Authorization=Bearer token` |

175| `OTEL_TRACES_EXPORT_INTERVAL` | Intervallo di esportazione batch degli span in millisecondi (predefinito: 5000) | `1000`, `10000` |175| `OTEL_TRACES_EXPORT_INTERVAL` | Intervallo di esportazione dei batch di span in millisecondi (predefinito: 5000) | `1000`, `10000` |

176 176 

177Gli span oscurano il testo del prompt dell'utente, i dettagli dell'input dello strumento e il contenuto dello strumento per impostazione predefinita. Imposta `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` e `OTEL_LOG_TOOL_CONTENT=1` per includerli.177Per impostazione predefinita, gli span oscurano il testo dei prompt dell'utente, i dettagli dell'input degli strumenti e il contenuto degli strumenti. Imposta `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` e `OTEL_LOG_TOOL_CONTENT=1` per includerli.

178 178 

179Quando il tracing è attivo, i sottoprocessi Bash e PowerShell ereditano automaticamente una variabile di ambiente `TRACEPARENT` contenente il contesto di traccia W3C dello span di esecuzione dello strumento attivo. Questo consente a qualsiasi sottoprocesso che legge `TRACEPARENT` di far diventare i propri span figli della stessa traccia, abilitando il tracing distribuito end-to-end attraverso script e comandi che Claude esegue.179Quando il tracing è attivo, i sottoprocessi Bash e PowerShell ereditano automaticamente una variabile d'ambiente `TRACEPARENT` contenente il contesto di traccia W3C dello span di esecuzione dello strumento attivo. Questo consente a qualsiasi sottoprocesso che legge `TRACEPARENT` di collegare i propri span come figli all'interno della stessa traccia, abilitando il tracing distribuito end-to-end attraverso gli script e i comandi eseguiti da Claude.

180 180 

181Quando il tracing è attivo e Claude Code è connesso direttamente all'API Anthropic, ogni richiesta del modello porta un'intestazione W3C `traceparent` impostata al contesto dello span `claude_code.llm_request` e l'intestazione `traceresponse` dell'API viene registrata come collegamento dello span. Insieme questi collegano gli span lato client di Claude Code alla traccia lato server attraverso qualsiasi intermediario conforme. Le richieste HTTP MCP in uscita portano `traceparent` allo stesso modo. L'intestazione non viene inviata ai provider di terze parti.181Quando il tracing è attivo e Claude Code è connesso direttamente all'API di Anthropic, ogni richiesta al modello include un header W3C `traceparent` impostato sul contesto dello span `claude_code.llm_request`, e l'header `traceresponse` dell'API viene registrato come link di span. Insieme, questi collegano gli span lato client di Claude Code alla traccia lato server attraverso qualsiasi intermediario conforme. Le richieste MCP HTTP in uscita includono `traceparent` allo stesso modo. L'header non viene inviato a provider di terze parti.

182 182 

183Per impostazione predefinita, l'intestazione `traceparent` sulle richieste del modello e HTTP MCP viene inviata solo quando `ANTHROPIC_BASE_URL` non è impostato o punta all'API Anthropic, poiché alcuni proxy rifiutano intestazioni non riconosciute. La variabile `TRACEPARENT` del sottoprocesso è controllata dallo stesso switch per coerenza. Se esegui Claude Code attraverso un proxy `ANTHROPIC_BASE_URL` personalizzato e desideri che il contesto di traccia sia propagato, imposta `CLAUDE_CODE_PROPAGATE_TRACEPARENT=1`.183Per impostazione predefinita, l'header `traceparent` sulle richieste al modello e sulle richieste MCP HTTP viene inviato solo quando `ANTHROPIC_BASE_URL` non è impostata o punta all'API di Anthropic, poiché alcuni proxy rifiutano header non riconosciuti. La variabile `TRACEPARENT` dei sottoprocessi è controllata dallo stesso interruttore per coerenza. Se esegui Claude Code attraverso un proxy `ANTHROPIC_BASE_URL` personalizzato e vuoi che il contesto di traccia venga propagato, imposta `CLAUDE_CODE_PROPAGATE_TRACEPARENT=1`.

184 184 

185In Agent SDK e sessioni non interattive avviate con `-p`, Claude Code legge anche `TRACEPARENT` e `TRACESTATE` dal proprio ambiente quando avvia ogni span di interazione. Questo consente a un processo di incorporamento di passare il suo contesto di traccia W3C attivo nel sottoprocesso in modo che gli span di Claude Code appaiano come figli della traccia distribuita del chiamante. Le sessioni interattive ignorano `TRACEPARENT` in entrata per evitare di ereditare accidentalmente valori ambientali da ambienti CI o container.185Nell'Agent SDK e nelle sessioni non interattive avviate con `-p`, Claude Code legge anche `TRACEPARENT` e `TRACESTATE` dal proprio ambiente all'avvio di ogni span di interazione. Questo consente a un processo che incorpora Claude Code di passare il proprio contesto di traccia W3C attivo al sottoprocesso, in modo che gli span di Claude Code appaiano come figli della traccia distribuita del chiamante. Le sessioni interattive ignorano `TRACEPARENT` in ingresso per evitare di ereditare accidentalmente valori ambientali da ambienti CI o container.

186 186 

187Il contesto di traccia in entrata si applica anche agli [eventi](#events). In sessioni Agent SDK e `-p` con `TRACEPARENT` impostato, ogni record di log degli eventi OTLP porta i valori `trace_id` e `span_id` che lo collegano alla traccia della tua applicazione, anche quando l'esportatore di tracce non è configurato, in modo che il tuo backend di logging possa correlare gli eventi con il resto della traccia.187Il contesto di traccia in ingresso si applica anche agli [eventi](#events). Nell'Agent SDK e nelle sessioni `-p` con `TRACEPARENT` impostata, ogni record di log degli eventi OTLP include valori `trace_id` e `span_id` che lo collegano alla traccia della tua applicazione, anche quando l'exporter delle tracce non è configurato, così il tuo backend di logging può correlare gli eventi con il resto della traccia.

188 188 

189Un record emesso mentre un'interazione è attiva porta gli ID dello span di interazione, anche quando Claude Code lo emette al di fuori del contesto asincrono dello span, come in un callback di richiesta di permesso o per un record memorizzato nel buffer durante l'avvio ed esportato in seguito. Un record emesso senza uno span di interazione attivo porta direttamente gli ID `TRACEPARENT` in entrata.189Un record emesso mentre un'interazione è attiva riporta gli ID dello span di interazione, anche quando Claude Code lo emette al di fuori del contesto asincrono dello span, ad esempio in una callback di una richiesta di permesso o per un record bufferizzato durante l'avvio ed esportato in seguito. Un record emesso senza uno span di interazione attivo riporta direttamente gli ID di `TRACEPARENT` in ingresso.

190 190 

191#### Gerarchia degli span191#### Gerarchia degli span

192 192 

193Ogni prompt dell'utente avvia uno span radice `claude_code.interaction`. Le chiamate API, le chiamate di strumenti e le esecuzioni di hook vengono registrate come suoi figli. Gli span degli strumenti hanno due span figli propri: uno per il tempo trascorso in attesa di una decisione di autorizzazione e uno per l'esecuzione stessa. Quando lo strumento Agent, o lo strumento Task legacy, genera un subagente, gli span API e degli strumenti del subagente si annidano sotto lo span `claude_code.tool` del genitore.193Ogni prompt dell'utente avvia uno span radice `claude_code.interaction`. Le chiamate API, le chiamate agli strumenti e le esecuzioni degli hook vengono registrate come suoi figli. Gli span degli strumenti hanno a loro volta due span figli: uno per il tempo trascorso in attesa di una decisione sul permesso e uno per l'esecuzione stessa. Quando lo strumento Agent, o lo strumento Task legacy, genera un subagent, gli span API e degli strumenti del subagent vengono annidati sotto lo span `claude_code.tool` del genitore.

194 194 

195```text theme={null}195```text theme={null}

196claude_code.interaction196claude_code.interaction

197├── claude_code.llm_request197├── claude_code.llm_request

198├── claude_code.hook (richiede tracing beta dettagliato)198├── claude_code.hook (requires detailed beta tracing)

199└── claude_code.tool199└── claude_code.tool

200 ├── claude_code.tool.blocked_on_user200 ├── claude_code.tool.blocked_on_user

201 ├── claude_code.tool.execution201 ├── claude_code.tool.execution

202 └── (strumento Agent) span claude_code.llm_request / claude_code.tool del subagent202 └── (Agent tool) subagent claude_code.llm_request / claude_code.tool spans

203```203```

204 204 

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

206 206 

207Quando un hook `PreToolUse` [rinvia una chiamata di strumento](https://code.claude.com/docs/it/hooks.md#defer-a-tool-call-for-later), Claude Code salva il contesto di traccia del turno che l'ha rinviata. Quando riprendi la sessione e lo strumento viene rieseguito, gli span dello strumento si uniscono alla traccia di quel turno precedente come figli dello span `claude_code.interaction` del turno.207Quando un hook `PreToolUse` [rinvia una chiamata a uno strumento](https://code.claude.com/docs/it/hooks.md#defer-a-tool-call-for-later), Claude Code salva il contesto di traccia del turno che l'ha rinviata. Quando riprendi la sessione e lo strumento viene rieseguito, gli span dello strumento si uniscono alla traccia di quel turno precedente come figli dello span `claude_code.interaction` del turno.

208 208 

209#### Attributi degli span209#### Attributi degli span

210 210 

211Ogni span porta gli [attributi standard](#standard-attributes) più un attributo `span.type` che corrisponde al suo nome. Le tabelle seguenti elencano gli attributi aggiuntivi impostati su ogni span. Gli span `llm_request`, `tool.execution` e `hook` impostano lo stato OpenTelemetry `ERROR` quando registrano un errore; gli altri span terminano sempre con lo stato `UNSET`.211Ogni span include gli [attributi standard](#standard-attributes) più un attributo `span.type` corrispondente al suo nome. Le tabelle seguenti elencano gli attributi aggiuntivi impostati su ciascuno span. Gli span `llm_request`, `tool.execution` e `hook` impostano lo stato OpenTelemetry `ERROR` quando registrano un errore; gli altri span terminano sempre con stato `UNSET`.

212 212 

213**`claude_code.interaction`**213**`claude_code.interaction`**

214 214 

215| Attributo | Descrizione | Controllato da |215| Attributo | Descrizione | Controllato da |

216| - | - | - |216| - | - | - |

217| `user_prompt` | Testo del prompt. Il valore è `<REDACTED>` a meno che il gate non sia impostato | `OTEL_LOG_USER_PROMPTS` |217| `user_prompt` | Testo del prompt. Il valore è `<REDACTED>` a meno che il controllo non sia impostato | `OTEL_LOG_USER_PROMPTS` |

218| `user_prompt_length` | Lunghezza del prompt in caratteri | |218| `user_prompt_length` | Lunghezza del prompt in caratteri | |

219| `interaction.sequence` | Contatore basato su 1 delle interazioni, contato per processo Claude Code piuttosto che per sessione, come descritto per [`event.sequence`](#event-correlation-attributes) | |219| `interaction.sequence` | Contatore delle interazioni a partire da 1, conteggiato per processo di Claude Code anziché per sessione, come descritto per [`event.sequence`](#event-correlation-attributes) | |

220| `parent.source` | Come lo span ha ottenuto il suo genitore di traccia: `env` quando è stato genitore sotto un `TRACEPARENT` in entrata, `none` quando ha avviato la sua traccia. Richiede Claude Code v2.1.268 o successivo | |220| `parent.source` | Come lo span ha ottenuto il suo genitore di traccia: `env` quando è stato collegato come figlio di un `TRACEPARENT` in ingresso, `none` quando ha avviato una propria traccia. Richiede Claude Code v2.1.268 o successiva | |

221| `interaction.duration_ms` | Durata wall-clock del turno | |221| `interaction.duration_ms` | Durata effettiva del turno | |

222 222 

223**`claude_code.llm_request`**223**`claude_code.llm_request`**

224 224 

225| Attributo | Descrizione | Controllato da |225| Attributo | Descrizione | Controllato da |

226| - | - | - |226| - | - | - |

227| `model` | Identificatore del modello | |227| `model` | Identificatore del modello | |

228| `gen_ai.system` | Sempre `anthropic`. Convenzione semantica OpenTelemetry GenAI | |228| `gen_ai.system` | Sempre `anthropic`. Convenzione semantica GenAI di OpenTelemetry | |

229| `gen_ai.request.model` | Stesso valore di `model`. Convenzione semantica OpenTelemetry GenAI | |229| `gen_ai.request.model` | Stesso valore di `model`. Convenzione semantica GenAI di OpenTelemetry | |

230| `query_source` | Sottosistema che ha emesso la richiesta, come `repl_main_thread` o un nome di subagente | `ENABLE_BETA_TRACING_DETAILED` |230| `query_source` | Sottosistema che ha emesso la richiesta, come `repl_main_thread` o il nome di un subagent | `ENABLE_BETA_TRACING_DETAILED` |

231| `query_source_safe` | Forma limitata di `query_source`, emessa indipendentemente dal fatto che il tracing beta dettagliato sia attivo, con valori come `repl_main_thread` o `agent.builtin.general-purpose`. `:` diventa `.` e gli agenti denominati dall'utente appaiono come `agent.custom`. Richiede Claude Code v2.1.268 o successivo | |231| `query_source_safe` | Forma limitata di `query_source`, emessa indipendentemente dal fatto che il tracing beta dettagliato sia attivo, con valori come `repl_main_thread` o `agent.builtin.general-purpose`. `:` diventa `.` e gli agenti con nomi scelti dall'utente appaiono come `agent.custom`. Richiede Claude Code v2.1.268 o successiva | |

232| `agent_id` | Identificatore del subagente o del compagno di squadra che ha emesso la richiesta. Assente nella sessione principale | |232| `agent_id` | Identificatore del subagent o del compagno di squadra che ha emesso la richiesta. Assente nella sessione principale | |

233| `parent_agent_id` | Identificatore dell'agente che ha generato questo. Assente per la sessione principale e per gli agenti generati direttamente da essa | |233| `parent_agent_id` | Identificatore dell'agente che ha generato questo agente. Assente per la sessione principale e per gli agenti generati direttamente da essa | |

234| `workflow.run_id` | Identificatore di esecuzione dell'esecuzione dello strumento [Workflow](https://code.claude.com/docs/it/workflows.md) che ha generato questo agente, con prefisso `wf_`. Assente per gli agenti non generati da un workflow | |234| `workflow.run_id` | Identificatore dell'esecuzione dello strumento [Workflow](https://code.claude.com/docs/it/workflows.md) che ha generato questo agente, con prefisso `wf_`. Assente per gli agenti non generati da un workflow | |

235| `workflow.name` | Nome del workflow che ha generato questo agente. I nomi creati dall'utente vengono sostituiti con `custom` a meno che il gate non sia impostato | `OTEL_LOG_TOOL_DETAILS` |235| `workflow.name` | Nome del workflow che ha generato questo agente. I nomi creati dall'utente vengono sostituiti con `custom` a meno che il controllo non sia impostato | `OTEL_LOG_TOOL_DETAILS` |

236| `speed` | `fast` o `normal` | |236| `speed` | `fast` o `normal` | |

237| `effort` | [Livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) applicato alla richiesta: `low`, `medium`, `high`, `xhigh` o `max`. Assente quando Claude Code non invia alcun livello di sforzo, ad esempio su un modello che non supporta lo sforzo. Richiede Claude Code v2.1.274 o successivo | |237| `effort` | [Livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) applicato alla richiesta: `low`, `medium`, `high`, `xhigh` o `max`. Assente quando Claude Code non invia alcun livello di sforzo, ad esempio su un modello che non supporta lo sforzo. Richiede Claude Code v2.1.274 o successiva | |

238| `llm_request.context` | `interaction`, `tool` o `standalone` a seconda dello span genitore | |238| `llm_request.context` | `interaction`, `tool` o `standalone` a seconda dello span genitore | |

239| `duration_ms` | Durata wall-clock inclusi i tentativi | |239| `duration_ms` | Durata effettiva inclusi i nuovi tentativi | |

240| `ttft_ms` | Tempo al primo token in millisecondi | |240| `ttft_ms` | Tempo al primo token in millisecondi | |

241| `first_content_ms` | Tempo dall'inizio della richiesta al primo blocco di contenuto del tentativo riuscito, in millisecondi. Assente sulle richieste che sono ricadute nel percorso non in streaming. Richiede Claude Code v2.1.268 o successivo | |241| `first_content_ms` | Tempo dall'inizio della richiesta al primo blocco di contenuto del tentativo riuscito, in millisecondi. Assente nelle richieste che sono ricadute sul percorso non in streaming. Richiede Claude Code v2.1.268 o successiva | |

242| `input_tokens` | Conteggio dei token di input dal blocco di utilizzo dell'API. Esclude i token letti dalla cache del prompt o scritti in essa, che sono riportati in `cache_read_tokens` e `cache_creation_tokens` | |242| `input_tokens` | Numero di token di input dal blocco di utilizzo dell'API. Esclude i token letti dalla cache del prompt o scritti in essa, che sono riportati in `cache_read_tokens` e `cache_creation_tokens` | |

243| `output_tokens` | Conteggio dei token di output | |243| `output_tokens` | Numero di token di output | |

244| `cache_read_tokens` | Token letti dalla cache del prompt | |244| `cache_read_tokens` | Token letti dalla cache del prompt | |

245| `cache_creation_tokens` | Token scritti nella cache del prompt | |245| `cache_creation_tokens` | Token scritti nella cache del prompt | |

246| `request_id` | ID della richiesta API. Stesso valore dell'[attributo di correlazione degli eventi](#event-correlation-attributes) `request_id` | |246| `request_id` | ID della richiesta API. Stesso valore dell'[attributo di correlazione degli eventi](#event-correlation-attributes) `request_id` | |

247| `gen_ai.response.id` | Stesso valore di `request_id`. Convenzione semantica OpenTelemetry GenAI | |247| `gen_ai.response.id` | Stesso valore di `request_id`. Convenzione semantica GenAI di OpenTelemetry | |

248| `client_request_id` | `x-client-request-id` generato dal client del tentativo finale | |248| `client_request_id` | `x-client-request-id` generato dal client per il tentativo finale | |

249| `attempt` | Tentativi totali effettuati per questa richiesta | |249| `attempt` | Numero totale di tentativi effettuati per questa richiesta | |

250| `success` | `true` o `false` | |250| `success` | `true` o `false` | |

251| `status_code` | Codice di stato HTTP quando la richiesta non è riuscita | |251| `status_code` | Codice di stato HTTP quando la richiesta non è riuscita | |

252| `error` | Messaggio di errore quando la richiesta non è riuscita | |252| `error` | Messaggio di errore quando la richiesta non è riuscita | |

253| `error_class` | Token di classe di errore breve quando la richiesta non è riuscita, come `api_timeout` o `server_overload`. Richiede Claude Code v2.1.268 o successivo | |253| `error_class` | Breve token della classe di errore quando la richiesta non è riuscita, come `api_timeout` o `server_overload`. Richiede Claude Code v2.1.268 o successiva | |

254| `response.has_tool_call` | `true` quando la risposta conteneva blocchi di tool-use | |254| `response.has_tool_call` | `true` quando la risposta conteneva blocchi di utilizzo degli strumenti | |

255| `stop_reason` | `stop_reason` della risposta API, come `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` o `refusal` | |255| `stop_reason` | `stop_reason` della risposta API, come `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` o `refusal` | |

256| `gen_ai.response.finish_reasons` | Stesso valore di `stop_reason`, avvolto in un array di stringhe. Convenzione semantica OpenTelemetry GenAI | |256| `gen_ai.response.finish_reasons` | Stesso valore di `stop_reason`, racchiuso in un array di stringhe. Convenzione semantica GenAI di OpenTelemetry | |

257 257 

258Ogni tentativo di ripetizione viene registrato anche come evento span `gen_ai.request.attempt` con attributi `attempt` e `client_request_id`.258Ogni nuovo tentativo viene registrato anche come evento di span `gen_ai.request.attempt` con gli attributi `attempt` e `client_request_id`.

259 259 

260**`claude_code.tool`**260**`claude_code.tool`**

261 261 

262| Attributo | Descrizione | Controllato da |262| Attributo | Descrizione | Controllato da |

263| - | - | - |263| - | - | - |

264| `tool_name` | Nome dello strumento | |264| `tool_name` | Nome dello strumento | |

265| `tool_name_safe` | Forma di `tool_name` che non porta nomi scelti dall'utente. I nomi degli strumenti integrati passano verbatim. I nomi degli strumenti MCP appaiono come `mcp_other`, tranne i nomi degli strumenti che corrispondono a poche forme fisse, come gli strumenti `playwright` denominati `browser_*`, che passano verbatim. Richiede Claude Code v2.1.268 o successivo | |265| `tool_name_safe` | Forma di `tool_name` che non contiene nomi scelti dall'utente. I nomi degli strumenti integrati vengono riportati così come sono. I nomi degli strumenti MCP appaiono come `mcp_other`, ad eccezione dei nomi degli strumenti che corrispondono ad alcune forme fisse, come gli strumenti `playwright` denominati `browser_*`, che vengono riportati così come sono. Richiede Claude Code v2.1.268 o successiva | |

266| `bash_command_class` | Per lo strumento Bash: categoria del primo programma del comando da un elenco fisso, come `vcs` o `package_manager`. `other` per un programma al di fuori dell'elenco, `unparsed` quando la riga non può essere analizzata. Richiede Claude Code v2.1.268 o successivo | |266| `bash_command_class` | Per lo strumento Bash: categoria del primo programma del comando da un elenco fisso, come `vcs` o `package_manager`. `other` per un programma al di fuori dell'elenco, `unparsed` quando la riga non può essere analizzata. Richiede Claude Code v2.1.268 o successiva | |

267| `bash_argv0` | Per lo strumento Bash: il primo programma del comando quando è nello stesso elenco fisso, come `git` o `npm`. `other` per qualsiasi programma al di fuori dell'elenco. Richiede Claude Code v2.1.268 o successivo | |267| `bash_argv0` | Per lo strumento Bash: il primo programma del comando quando si trova nello stesso elenco fisso, come `git` o `npm`. `other` per qualsiasi programma al di fuori dell'elenco. Richiede Claude Code v2.1.268 o successiva | |

268| `duration_ms` | Durata wall-clock inclusa l'attesa di autorizzazione e l'esecuzione | |268| `duration_ms` | Durata effettiva inclusi l'attesa del permesso e l'esecuzione | |

269| `result_tokens` | Dimensione approssimativa del token del risultato dello strumento | |269| `result_tokens` | Dimensione approssimativa in token del risultato dello strumento | |

270| `agent_id` | Identificatore del subagente o del compagno di squadra che ha eseguito lo strumento. Assente nella sessione principale | |270| `agent_id` | Identificatore del subagent o del compagno di squadra che ha eseguito lo strumento. Assente nella sessione principale | |

271| `parent_agent_id` | Identificatore dell'agente che ha generato questo. Assente per la sessione principale e per gli agenti generati direttamente da essa | |271| `parent_agent_id` | Identificatore dell'agente che ha generato questo agente. Assente per la sessione principale e per gli agenti generati direttamente da essa | |

272| `workflow.run_id` | Identificatore di esecuzione dell'esecuzione dello strumento Workflow che ha generato questo agente, con prefisso `wf_`. Assente per gli agenti non generati da un workflow | |272| `workflow.run_id` | Identificatore dell'esecuzione dello strumento Workflow che ha generato questo agente, con prefisso `wf_`. Assente per gli agenti non generati da un workflow | |

273| `workflow.name` | Nome del workflow che ha generato questo agente. I nomi creati dall'utente vengono sostituiti con `custom` a meno che il gate non sia impostato | `OTEL_LOG_TOOL_DETAILS` |273| `workflow.name` | Nome del workflow che ha generato questo agente. I nomi creati dall'utente vengono sostituiti con `custom` a meno che il controllo non sia impostato | `OTEL_LOG_TOOL_DETAILS` |

274| `tool_use_id` | L'id del blocco `tool_use` del modello per questa chiamata. Corrisponde a `tool_use_id` su [tool\_result](#tool-result-event) e [tool\_decision](#tool-decision-event) eventi e nei payload dei hook, in modo da poter unire lo span a quei record | |274| `tool_use_id` | L'id del blocco `tool_use` del modello per questa chiamata. Corrisponde al `tool_use_id` negli eventi [tool\_result](#tool-result-event) e [tool\_decision](#tool-decision-event) e nei payload degli hook, così puoi collegare lo span a quei record | |

275| `gen_ai.tool.call.id` | Stesso valore di `tool_use_id`. Convenzione semantica OpenTelemetry GenAI | |275| `gen_ai.tool.call.id` | Stesso valore di `tool_use_id`. Convenzione semantica GenAI di OpenTelemetry | |

276| `file_path` | Percorso del file di destinazione per gli strumenti Read, Edit e Write | `OTEL_LOG_TOOL_DETAILS` |276| `file_path` | Percorso del file di destinazione per gli strumenti Read, Edit e Write | `OTEL_LOG_TOOL_DETAILS` |

277| `full_command` | Stringa di comando per lo strumento Bash | `OTEL_LOG_TOOL_DETAILS` |277| `full_command` | Stringa del comando per lo strumento Bash | `OTEL_LOG_TOOL_DETAILS` |

278| `skill_name` | Nome della skill per lo strumento Skill | `OTEL_LOG_TOOL_DETAILS` |278| `skill_name` | Nome della skill per lo strumento Skill | `OTEL_LOG_TOOL_DETAILS` |

279| `subagent_type` | Tipo di subagente per lo strumento Agent o lo strumento Task legacy | `OTEL_LOG_TOOL_DETAILS` |279| `subagent_type` | Tipo di subagent per lo strumento Agent o per lo strumento Task legacy | `OTEL_LOG_TOOL_DETAILS` |

280 280 

281**Evento span `tool.output` su `claude_code.tool`**281**Evento di span `tool.output` su `claude_code.tool`**

282 282 

283Se imposti `OTEL_LOG_TOOL_CONTENT=1`, le chiamate Read e Bash possono registrare un evento span `tool.output` sullo span `claude_code.tool`. Le chiamate Edit e Write registrano uno solo quando imposti anche `OTEL_LOG_TOOL_DETAILS=1`. Quella variabile non è limitata a quei due strumenti, quindi controlla la sua [riga nella tabella di configurazione](#common-configuration-variables) per gli argomenti che aggiunge altrove.283Se imposti `OTEL_LOG_TOOL_CONTENT=1`, le chiamate Read e Bash possono registrare un evento di span `tool.output` sullo span `claude_code.tool`. Le chiamate Edit e Write ne registrano uno solo se imposti anche `OTEL_LOG_TOOL_DETAILS=1`. Questa variabile non è limitata a questi due strumenti, quindi controlla la sua [riga nella tabella di configurazione](#common-configuration-variables) per gli argomenti che aggiunge altrove.

284 284 

285Gli strumenti MCP, WebFetch e WebSearch registrano questo evento anche su Claude Code v2.1.283 o successivo.285Anche gli strumenti MCP, WebFetch e WebSearch registrano questo evento, su Claude Code v2.1.283 o successiva.

286 286 

287Claude Code scrive questo evento dal ritorno riuscito di una chiamata dello strumento, quindi una chiamata che genera un errore non registra nulla, qualunque sia lo strumento. Tra le chiamate che ritornano, non registra alcun evento `tool.output` per:287Claude Code scrive questo evento dal ritorno riuscito di una chiamata a uno strumento, quindi una chiamata che genera un errore non registra nulla, qualunque sia lo strumento. Tra le chiamate che restituiscono un risultato, non registra alcun evento `tool.output` per:

288 288 

289* Una chiamata a qualsiasi strumento diverso da Read, Edit, Write, Bash, WebFetch, WebSearch e strumenti MCP289* Una chiamata a qualsiasi strumento diverso da Read, Edit, Write, Bash, WebFetch, WebSearch e gli strumenti MCP

290* Una Read che ritorna qualcosa di diverso dal testo del file, come un'immagine, un PDF o una rilettura di un file il cui contenuto non è cambiato290* Una Read che restituisce qualcosa di diverso dal testo di un file, come un'immagine, un PDF o una nuova lettura di un file il cui contenuto non è cambiato

291* Una chiamata Edit o Write, a meno che non imposti anche `OTEL_LOG_TOOL_DETAILS=1`291* Una chiamata Edit o Write, a meno che tu non imposti anche `OTEL_LOG_TOOL_DETAILS=1`

292* Una chiamata WebFetch o WebSearch che Claude Code ha spostato in background durante l'esecuzione affinché un messaggio in attesa potesse raggiungere Claude. Non viene registrato nemmeno il risultato che arriva in seguito. Per sapere quando Claude Code sposta una chiamata, consulta [Quando Claude Code invia ciò che hai messo in coda](https://code.claude.com/docs/it/interactive-mode.md#when-claude-code-sends-what-you-queued) per il terminale e il [campo `priority`](https://code.claude.com/docs/it/agent-sdk/typescript#sdkusermessage) per le sessioni Agent SDK292* Una chiamata WebFetch o WebSearch che Claude Code ha spostato in background durante l'esecuzione affinché un messaggio in attesa potesse raggiungere Claude. Nemmeno il risultato che arriva in seguito viene registrato. Per sapere quando Claude Code sposta una chiamata, consulta [Quando Claude Code invia ciò che hai messo in coda](https://code.claude.com/docs/it/interactive-mode.md#when-claude-code-sends-what-you-queued) per il terminale e il [campo `priority`](https://code.claude.com/docs/it/agent-sdk/typescript#sdkusermessage) per le sessioni dell'Agent SDK

293 293 

294L'evento porta questi attributi, ognuno troncato al limite di contenuto (60 KB per impostazione predefinita). `Controllato da` nomina la variabile di cui un attributo ha bisogno in aggiunta a `OTEL_LOG_TOOL_CONTENT=1`, e per Edit e Write quella variabile controlla l'evento stesso piuttosto che l'attributo.294L'evento include questi attributi, ciascuno troncato al limite del contenuto (60 KB per impostazione predefinita). `Controllato da` indica la variabile di cui un attributo ha bisogno oltre a `OTEL_LOG_TOOL_CONTENT=1`, e per Edit e Write quella variabile controlla l'evento stesso anziché l'attributo.

295 295 

296| Attributo | Descrizione | Controllato da |296| Attributo | Descrizione | Controllato da |

297| - | - | - |297| - | - | - |

298| `content` | Testo che lo strumento Read ha restituito, o il testo che una chiamata Write è stata chiesta di scrivere | `OTEL_LOG_TOOL_DETAILS` per lo strumento Write |298| `content` | Testo restituito dallo strumento Read, oppure il testo che una chiamata Write doveva scrivere | `OTEL_LOG_TOOL_DETAILS` per lo strumento Write |

299| `output` | Per lo strumento Bash, l'output combinato del comando, con stderr intercalato in stdout. Per uno strumento MCP, WebFetch o WebSearch, il risultato che lo strumento ha restituito: blocchi di testo uniti da newline, con un'immagine o un documento sostituito da un segnaposto come `[image]` | |299| `output` | Per lo strumento Bash, l'output combinato del comando, con stderr intercalato in stdout. Per uno strumento MCP, WebFetch o WebSearch, il risultato restituito dallo strumento: blocchi di testo uniti da ritorni a capo, con un'immagine o un documento sostituiti da un segnaposto come `[image]` | |

300| `diff` | Patch strutturata che lo strumento Edit ha applicato | `OTEL_LOG_TOOL_DETAILS` |300| `diff` | Patch strutturata applicata dallo strumento Edit | `OTEL_LOG_TOOL_DETAILS` |

301| `file_path` | Percorso del file di destinazione per gli strumenti Read, Edit e Write, ripetendo l'attributo dello span dello stesso nome | `OTEL_LOG_TOOL_DETAILS` |301| `file_path` | Percorso del file di destinazione per gli strumenti Read, Edit e Write, che ripete l'attributo dello span con lo stesso nome | `OTEL_LOG_TOOL_DETAILS` |

302| `bash_command` | Stringa di comando per lo strumento Bash | `OTEL_LOG_TOOL_DETAILS` |302| `bash_command` | Stringa del comando per lo strumento Bash | `OTEL_LOG_TOOL_DETAILS` |

303 303 

304L'attributo `tool_name` dello span genitore ti dice da quale strumento proviene un evento. Un attributo tagliato al limite di contenuto è accompagnato da `<attribute>_truncated` e `<attribute>_original_length`.304L'attributo `tool_name` dello span genitore ti indica da quale strumento proviene un evento. Un attributo troncato al limite del contenuto è accompagnato da `<attribute>_truncated` e `<attribute>_original_length`.

305 305 

306**`claude_code.tool.blocked_on_user`**306**`claude_code.tool.blocked_on_user`**

307 307 

308| Attributo | Descrizione | Controllato da |308| Attributo | Descrizione | Controllato da |

309| - | - | - |309| - | - | - |

310| `duration_ms` | Tempo trascorso in attesa della decisione di autorizzazione | |310| `duration_ms` | Tempo trascorso in attesa della decisione sul permesso | |

311| `decision` | `accept`, `reject` o `cancelled`, dove `cancelled` significa che Claude Code ha smesso di attendere una decisione di permesso sulla chiamata allo strumento e non l'ha eseguita | |311| `decision` | `accept`, `reject` o `cancelled`, dove `cancelled` significa che Claude Code ha smesso di attendere una decisione sul permesso per la chiamata allo strumento e non l'ha eseguita | |

312| `source` | Per un `accept` o un `reject`, da dove proviene la decisione, come `config`, `hook` o `user_temporary`, con i significati indicati nell'[evento Tool decision](#tool-decision-event). Per un `cancelled`, cosa ha terminato l'attesa prima che venisse presa una decisione, come `user_abort` | |312| `source` | Per un `accept` o un `reject`, da dove proviene la decisione, come `config`, `hook` o `user_temporary`, con i significati indicati nell'[evento di decisione dello strumento](#tool-decision-event). Per un `cancelled`, cosa ha terminato l'attesa prima che venisse presa qualsiasi decisione, come `user_abort` | |

313 313 

314Una decisione `cancelled` con `source` `user_abort` significa che un messaggio che richiedeva la consegna immediata ha interrotto il turno mentre la richiesta di permesso o il controllo della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) era in sospeso. Ad esempio, durante un controllo della modalità auto, l'utente aveva un messaggio in coda e lo [ha inviato immediatamente](https://code.claude.com/docs/it/interactive-mode.md#when-claude-code-sends-what-you-queued).314Una decisione `cancelled` con `source` `user_abort` significa che un messaggio che richiedeva una consegna immediata ha interrotto il turno mentre la richiesta di permesso o il controllo della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) era in sospeso. Ad esempio, durante un controllo della modalità auto, l'utente aveva un messaggio in coda e [lo ha inviato immediatamente](https://code.claude.com/docs/it/interactive-mode.md#when-claude-code-sends-what-you-queued).

315 315 

316**`claude_code.tool.execution`**316**`claude_code.tool.execution`**

317 317 

318| Attributo | Descrizione | Controllato da |318| Attributo | Descrizione | Controllato da |

319| - | - | - |319| - | - | - |

320| `duration_ms` | Tempo trascorso nell'esecuzione del corpo dello strumento | |320| `duration_ms` | Tempo trascorso nell'esecuzione del corpo dello strumento | |

321| `tool_use_id` | Stesso valore dello span genitore `claude_code.tool` | |321| `tool_use_id` | Stesso valore presente sullo span genitore `claude_code.tool` | |

322| `gen_ai.tool.call.id` | Stesso valore di `tool_use_id`. Convenzione semantica OpenTelemetry GenAI | |322| `gen_ai.tool.call.id` | Stesso valore di `tool_use_id`. Convenzione semantica GenAI di OpenTelemetry | |

323| `success` | `true` o `false` | |323| `success` | `true` o `false` | |

324| `error` | Stringa di categoria di errore quando l'esecuzione non è riuscita, come `Error:ENOENT` o `ShellError`. Contiene il messaggio di errore completo quando il gate è impostato | `OTEL_LOG_TOOL_DETAILS` |324| `error` | Stringa della categoria di errore quando l'esecuzione non è riuscita, come `Error:ENOENT` o `ShellError`. Contiene invece il messaggio di errore completo quando il controllo è impostato | `OTEL_LOG_TOOL_DETAILS` |

325| `error_class` | La categoria di errore in forma di identificatore, con caratteri al di fuori di lettere, cifre e sottolineature sostituiti da `_`, come `Error_ENOENT` o `ShellError`. Porta la categoria anche quando `error` porta il messaggio completo. Richiede Claude Code v2.1.268 o successivo | |325| `error_class` | La categoria di errore in forma di identificatore, con i caratteri diversi da lettere, cifre e underscore sostituiti da `_`, come `Error_ENOENT` o `ShellError`. Riporta la categoria anche quando `error` riporta il messaggio completo. Richiede Claude Code v2.1.268 o successiva | |

326 326 

327**`claude_code.hook`**327**`claude_code.hook`**

328 328 

329Questo span appare solo quando il tracing beta dettagliato è attivo, il che richiede `ENABLE_BETA_TRACING_DETAILED=1` e `BETA_TRACING_ENDPOINT`, una coppia che [cambia anche dove vanno i tuoi log e le tue tracce](https://code.claude.com/docs/it/env-vars.md#variables). Imposta la coppia nella tua shell, nelle impostazioni utente o nelle impostazioni gestite; entrambe le variabili vengono ignorate nelle [impostazioni di progetto e locali](https://code.claude.com/docs/it/settings-reference.md#variables-claude-code-ignores-in-env). `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` da solo non lo produce.329Questo span appare solo quando il tracing beta dettagliato è attivo, il che richiede `ENABLE_BETA_TRACING_DETAILED=1` e `BETA_TRACING_ENDPOINT`, una coppia che [cambia anche la destinazione dei tuoi log e delle tue tracce](https://code.claude.com/docs/it/env-vars.md#variables). Imposta la coppia nella tua shell, nelle impostazioni utente o nelle impostazioni gestite; entrambe le variabili vengono ignorate nelle [impostazioni di progetto e locali](https://code.claude.com/docs/it/settings-reference.md#variables-claude-code-ignores-in-env). `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` da sola non lo produce.

330 330 

331Nelle sessioni CLI interattive, il tracing beta dettagliato richiede anche che la tua organizzazione sia nella lista di autorizzazione per la funzione. Le sessioni Agent SDK e non interattive `-p` non richiedono l'autorizzazione.331Nelle sessioni CLI interattive, il tracing beta dettagliato richiede anche che la tua organizzazione sia inserita nella lista di autorizzazione per la funzionalità. L'Agent SDK e le sessioni non interattive `-p` non richiedono l'inserimento nella lista di autorizzazione.

332 332 

333| Attributo | Descrizione | Controllato da |333| Attributo | Descrizione | Controllato da |

334| - | - | - |334| - | - | - |

335| `hook_event` | Tipo di evento hook, come `PreToolUse` | |335| `hook_event` | Tipo di evento dell'hook, come `PreToolUse` | |

336| `hook_name` | Nome completo dell'hook, come `PreToolUse:Write` | |336| `hook_name` | Nome completo dell'hook, come `PreToolUse:Write` | |

337| `num_hooks` | Numero di comandi hook corrispondenti eseguiti | |337| `num_hooks` | Numero di comandi hook corrispondenti eseguiti | |

338| `hook_definitions` | Configurazione dell'hook serializzata in JSON | `OTEL_LOG_TOOL_DETAILS` |338| `hook_definitions` | Configurazione degli hook serializzata in JSON | `OTEL_LOG_TOOL_DETAILS` |

339| `duration_ms` | Durata wall-clock di tutti gli hook corrispondenti | |339| `duration_ms` | Durata effettiva di tutti gli hook corrispondenti | |

340| `num_success` | Conteggio degli hook che hanno completato con successo | |340| `num_success` | Numero di hook completati con successo | |

341| `num_blocking` | Conteggio degli hook che hanno restituito una decisione di blocco | |341| `num_blocking` | Numero di hook che hanno restituito una decisione bloccante | |

342| `num_non_blocking_error` | Conteggio degli hook che non hanno avuto esito negativo senza bloccare | |342| `num_non_blocking_error` | Numero di hook che hanno restituito un errore senza bloccare | |

343| `num_cancelled` | Conteggio degli hook annullati prima del completamento | |343| `num_cancelled` | Numero di hook annullati prima del completamento | |

344 344 

345**Attributi di contenuto con il tracing beta dettagliato**345**Attributi di contenuto con il tracing beta dettagliato**

346 346 

347> [!NOTE]347> [!NOTE]

348>348>

349> Attributi aggiuntivi che portano contenuto come `new_context`, `system_reminders`, `system_prompt_preview`, `user_system_prompt`, `tool_input` e `response.model_output` vengono emessi solo quando il tracing beta dettagliato è attivo. Non fanno parte dello schema di span stabile.349> Ulteriori attributi che contengono contenuto, come `new_context`, `system_reminders`, `system_prompt_preview`, `user_system_prompt`, `tool_input` e `response.model_output`, vengono emessi solo quando il tracing beta dettagliato è attivo. Non fanno parte dello schema stabile degli span.

350 350 

351Questi attributi compaiono sugli span seguenti, e `Controllato da` nomina la variabile di cui un attributo ha bisogno in aggiunta al tracing beta dettagliato. I valori più lunghi del limite di contenuto (60 KB per impostazione predefinita) vengono troncati.351Questi attributi appaiono sugli span seguenti, e `Controllato da` indica la variabile di cui un attributo ha bisogno oltre al tracing beta dettagliato. I valori più lunghi del limite del contenuto (60 KB per impostazione predefinita) vengono troncati.

352 352 

353| Attributo | Span | Descrizione | Controllato da |353| Attributo | Span | Descrizione | Controllato da |

354| - | - | - | - |354| - | - | - | - |

355| `new_context` | `claude_code.interaction` | Il prompt dell'utente | `OTEL_LOG_USER_PROMPTS` |355| `new_context` | `claude_code.interaction` | Il prompt dell'utente | `OTEL_LOG_USER_PROMPTS` |

356| `new_context` | `claude_code.llm_request` | I nuovi messaggi dell'utente e i risultati degli strumenti inviati con la richiesta | `OTEL_LOG_USER_PROMPTS` |356| `new_context` | `claude_code.llm_request` | I nuovi messaggi dell'utente e i risultati degli strumenti inviati con la richiesta | `OTEL_LOG_USER_PROMPTS` |

357| `system_reminders` | `claude_code.llm_request` | Il testo dei [promemoria di sistema](https://code.claude.com/docs/it/glossary.md#system-reminder) tra i nuovi messaggi della richiesta | `OTEL_LOG_USER_PROMPTS` |357| `system_reminders` | `claude_code.llm_request` | Il testo dei [promemoria di sistema](https://code.claude.com/docs/it/glossary.md#system-reminder) tra i nuovi messaggi della richiesta | `OTEL_LOG_USER_PROMPTS` |

358| `system_prompt_preview` | `claude_code.llm_request` | I primi 500 caratteri del prompt di sistema completo inviato con la richiesta | `OTEL_LOG_USER_PROMPTS` |358| `system_prompt_preview` | `claude_code.llm_request` | Primi 500 caratteri del prompt di sistema completo inviato con la richiesta | `OTEL_LOG_USER_PROMPTS` |

359| `user_system_prompt` | `claude_code.llm_request` | Solo il testo del prompt di sistema che fornisci tramite l'opzione SDK `systemPrompt` o i flag `--system-prompt` e `--append-system-prompt`. Emesso una volta per sessione piuttosto che per richiesta | `OTEL_LOG_USER_PROMPTS` |359| `user_system_prompt` | `claude_code.llm_request` | Solo il testo del prompt di sistema che fornisci tramite l'opzione `systemPrompt` dell'SDK o i flag `--system-prompt` e `--append-system-prompt`. Emesso una volta per sessione anziché per richiesta | `OTEL_LOG_USER_PROMPTS` |

360| `response.model_output` | `claude_code.llm_request` | Testo della risposta del modello alla richiesta | `OTEL_LOG_USER_PROMPTS` |360| `response.model_output` | `claude_code.llm_request` | Testo della risposta del modello alla richiesta | `OTEL_LOG_USER_PROMPTS` |

361| `new_context` | `claude_code.tool` | Il risultato della chiamata allo strumento, qualunque sia lo strumento | `OTEL_LOG_TOOL_CONTENT` |361| `new_context` | `claude_code.tool` | Il risultato della chiamata allo strumento, qualunque sia lo strumento | `OTEL_LOG_TOOL_CONTENT` |

362| `tool_input` | `claude_code.tool` | L'input serializzato della chiamata allo strumento | `OTEL_LOG_TOOL_DETAILS` |362| `tool_input` | `claude_code.tool` | L'input serializzato della chiamata allo strumento | `OTEL_LOG_TOOL_DETAILS` |

363 363 

364Con il tracing beta dettagliato e `OTEL_LOG_USER_PROMPTS=1`, Claude Code emette anche un evento `claude_code.system_prompt` che porta il prompt di sistema completo, troncato al limite di contenuto. Arriva la prima volta che una sessione invia ciascun prompt di sistema distinto, e di nuovo dopo la compattazione.364Con il tracing beta dettagliato e `OTEL_LOG_USER_PROMPTS=1`, Claude Code emette anche un evento `claude_code.system_prompt` che contiene il prompt di sistema completo, troncato al limite del contenuto. Arriva la prima volta che una sessione invia ciascun prompt di sistema distinto, e di nuovo dopo la compattazione.

365 365 

366### Intestazioni dinamiche366### Header dinamici

367 367 

368Per gli ambienti aziendali che richiedono autenticazione dinamica, puoi configurare uno script per generare intestazioni dinamicamente. Le intestazioni dinamiche si applicano solo ai protocolli `http/protobuf` e `http/json`. Con il protocollo `grpc`, Claude Code utilizza solo le variabili di intestazioni statiche, `OTEL_EXPORTER_OTLP_HEADERS` e i suoi varianti specifici per segnale.368Per gli ambienti aziendali che richiedono un'autenticazione dinamica, puoi configurare uno script per generare header in modo dinamico. Gli header dinamici si applicano solo ai protocolli `http/protobuf` e `http/json`. Con il protocollo `grpc`, Claude Code usa solo le variabili degli header statici, `OTEL_EXPORTER_OTLP_HEADERS` e le sue varianti specifiche per segnale.

369 369 

370#### Configurazione delle impostazioni370#### Configurazione delle impostazioni

371 371 

372Aggiungi al tuo `.claude/settings.json`, sostituendo il percorso con il tuo script:372Aggiungi al tuo `.claude/settings.json`, sostituendo il percorso con quello del tuo script:

373 373 

374```json theme={null}374```json theme={null}

375{375{


377}377}

378```378```

379 379 

380Il valore può essere il percorso di un file eseguibile, incluso un percorso che contiene spazi, o una riga di comando della shell con argomenti. Su Windows, il valore viene sempre eseguito attraverso la shell, quindi racchiudi tra virgolette un percorso che contiene spazi all'interno del valore JSON.380Il valore può essere il percorso di un file eseguibile, incluso un percorso che contiene spazi, oppure una riga di comando della shell con argomenti. Su Windows, il valore viene sempre eseguito tramite la shell, quindi racchiudi tra virgolette un percorso che contiene spazi all'interno del valore JSON.

381 381 

382#### Requisiti dello script382#### Requisiti dello script

383 383 

384Lo script deve emettere JSON valido con coppie chiave-valore di stringhe che rappresentano intestazioni HTTP:384Lo script deve produrre un JSON valido con coppie chiave-valore di tipo stringa che rappresentano gli header HTTP:

385 385 

386```bash theme={null}386```bash theme={null}

387#!/bin/bash387#!/bin/bash

388# Esempio: Intestazioni multiple388# Example: Multiple headers

389echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"389echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

390```390```

391 391 

392Se l'helper non riesce o stampa output che non soddisfa questi requisiti, le esportazioni non riescono e il tuo backend di telemetria non riceve nulla dalla sessione fino a quando l'helper non funziona di nuovo. Claude Code segnala l'errore in:392Se l'helper non riesce o stampa un output che non soddisfa questi requisiti, le esportazioni non riescono e il tuo backend di telemetria non riceve nulla dalla sessione finché l'helper non funziona di nuovo. Claude Code segnala l'errore in:

393 393 

394* Una notifica di avviso nelle sessioni interattive, [`otelHeadersHelper failed; telemetry is not being exported`](https://code.claude.com/docs/it/errors#otelheadershelper-failed), mostrata una volta per sessione quando l'helper non riesce per la prima volta394* Una notifica di avviso nelle sessioni interattive, [`otelHeadersHelper failed; telemetry is not being exported`](https://code.claude.com/docs/it/errors#otelheadershelper-failed), mostrata una volta per sessione quando l'helper non riesce per la prima volta

395* Output di `/status`395* L'output di `/status`

396* Il log di debug, quando si esegue con [`--debug`](https://code.claude.com/docs/it/cli-reference#cli-flags) o dopo aver eseguito `/debug` nella sessione396* Il log di debug, quando esegui con [`--debug`](https://code.claude.com/docs/it/cli-reference#cli-flags) o dopo aver eseguito `/debug` nella sessione

397* stderr, nelle sessioni non interattive avviate con `-p`397* stderr, nelle sessioni non interattive avviate con `-p`

398 398 

399#### Comportamento di aggiornamento399#### Comportamento di aggiornamento

400 400 

401Lo script dell'helper di intestazioni viene eseguito all'avvio e periodicamente in seguito per supportare l'aggiornamento del token. Per impostazione predefinita, lo script viene eseguito ogni 29 minuti. Personalizza l'intervallo con la variabile di ambiente `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`.401Lo script helper degli header viene eseguito all'avvio e successivamente a intervalli regolari per supportare l'aggiornamento dei token. Per impostazione predefinita, lo script viene eseguito ogni 29 minuti. Personalizza l'intervallo con la variabile d'ambiente `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`.

402 402 

403### Supporto per organizzazioni multi-team403### Supporto per organizzazioni con più team

404 404 

405Le organizzazioni con più team o dipartimenti possono aggiungere attributi personalizzati per distinguere tra diversi gruppi utilizzando la variabile di ambiente `OTEL_RESOURCE_ATTRIBUTES`:405Le organizzazioni con più team o reparti possono aggiungere attributi personalizzati per distinguere tra gruppi diversi usando la variabile d'ambiente `OTEL_RESOURCE_ATTRIBUTES`:

406 406 

407```bash theme={null}407```bash theme={null}

408# Aggiungi attributi personalizzati per l'identificazione del team408# Add custom attributes for team identification

409export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"409export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

410```410```

411 411 

412Questi attributi personalizzati sono inclusi in tutte le metriche e gli eventi, consentendoti di:412Questi attributi personalizzati sono inclusi in tutte le metriche e in tutti gli eventi, consentendoti di:

413 413 

414* Filtrare le metriche per team o dipartimento414* Filtrare le metriche per team o reparto

415* Tracciare i costi per centro di costo415* Monitorare i costi per centro di costo

416* Creare dashboard specifici del team416* Creare dashboard specifiche per team

417* Impostare avvisi per team specifici417* Configurare avvisi per team specifici

418 418 

419Claude Code allega questi valori come attributi su ogni punto dati di metrica e record di evento, oltre a inviarli nel blocco di risorse OTLP. Poiché la maggior parte dei backend di metriche espone gli attributi dei punti dati come etichette interrogabili, puoi raggruppare e filtrare le metriche per le tue chiavi personalizzate direttamente. Ad eccezione degli [attributi del repository](#repository-attributes) `vcs.*`, le chiavi personalizzate non sostituiscono mai gli [attributi standard](#standard-attributes) come `user.id` o `session.id`: quando una chiave collide, Claude Code mantiene il valore integrato.419Claude Code associa questi valori come attributi su ogni datapoint delle metriche e su ogni record di evento, oltre a inviarli nel blocco delle risorse OTLP. Poiché la maggior parte dei backend di metriche espone gli attributi dei datapoint come etichette interrogabili, puoi raggruppare e filtrare le metriche direttamente in base alle tue chiavi personalizzate. Ad eccezione degli [attributi del repository](#repository-attributes) `vcs.*`, le chiavi personalizzate non sovrascrivono mai gli [attributi standard](#standard-attributes) come `user.id` o `session.id`: quando una chiave entra in conflitto, Claude Code mantiene il valore integrato.

420 420 

421Ogni chiave personalizzata diventa un'etichetta su ogni serie di metriche, quindi i valori ad alta cardinalità aumentano il costo di archiviazione nel tuo backend di metriche. Per inviare attributi personalizzati nel blocco di risorse solo e ometterli dalle etichette dei punti dati, imposta `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Vedi [Controllo della cardinalità delle metriche](#metrics-cardinality-control).421Ogni chiave personalizzata diventa un'etichetta su ogni serie di metriche, quindi valori ad alta cardinalità aumentano i costi di archiviazione nel tuo backend di metriche. Per inviare gli attributi personalizzati solo nel blocco delle risorse e ometterli dalle etichette dei datapoint, imposta `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Consulta [Controllo della cardinalità delle metriche](#metrics-cardinality-control).

422 422 

423> [!WARNING]423> [!WARNING]

424>424>

425> La variabile di ambiente `OTEL_RESOURCE_ATTRIBUTES` utilizza coppie chiave=valore separate da virgola con requisiti di formattazione rigorosi:425> La variabile d'ambiente `OTEL_RESOURCE_ATTRIBUTES` usa coppie key=value separate da virgole con requisiti di formattazione rigorosi:

426>426>

427> * **Nessuno spazio consentito**: i valori non possono contenere spazi. Ad esempio, `user.organizationName=My Company` non è valido427> * **Nessuno spazio consentito**: i valori non possono contenere spazi. Ad esempio, `user.organizationName=My Company` non è valido

428> * **Formato**: deve essere coppie chiave=valore separate da virgola: `key1=value1,key2=value2`428> * **Formato**: deve essere composta da coppie key=value separate da virgole: `key1=value1,key2=value2`

429> * **Caratteri consentiti**: solo caratteri US-ASCII escludendo caratteri di controllo, spazi bianchi, virgolette doppie, virgole, punti e virgola e barre rovesciate429> * **Caratteri consentiti**: solo caratteri US-ASCII esclusi i caratteri di controllo, gli spazi bianchi, le virgolette doppie, le virgole, i punti e virgola e le barre rovesciate

430> * **Caratteri speciali**: i caratteri al di fuori dell'intervallo consentito devono essere codificati in percentuale430> * **Caratteri speciali**: i caratteri al di fuori dell'intervallo consentito devono essere codificati con percent-encoding

431>431>

432> Per un valore che avrebbe bisogno di uno spazio, usa sottolineature o camelCase. I seguenti esempi impostano `org.name` con ogni forma:432> Per un valore che richiederebbe uno spazio, usa invece underscore o camelCase. Gli esempi seguenti impostano `org.name` con ciascuna forma:

433>433>

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

435> export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"435> export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

436> export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"436> export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

437> ```437> ```

438>438>

439> Puoi codificare in percentuale qualsiasi carattere, non solo quelli esclusi. Questo esempio codifica sia lo spazio che l'apostrofo:439> Puoi codificare con percent-encoding qualsiasi carattere, non solo quelli esclusi. Questo esempio codifica sia lo spazio sia l'apostrofo:

440>440>

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

442> export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"442> export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

443> ```443> ```

444>444>

445> 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`.445> Racchiudere i valori tra virgolette non esegue l'escape degli spazi. Ad esempio, `org.name="My Company"` produce il valore letterale `"My Company"` con le virgolette incluse, non `My Company`.

446 446 

447### Attribuire la telemetria alle sessioni SSH di Desktop447### Attribuire la telemetria alle sessioni SSH di Desktop

448 448 

449Per vedere su quale macchina remota è stata eseguita una [sessione SSH di Desktop](https://code.claude.com/docs/it/desktop.md#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.449Per vedere su quale macchina remota è stata eseguita una [sessione SSH di Desktop](https://code.claude.com/docs/it/desktop.md#ssh-sessions), assegna un nome a ogni macchina in un attributo personalizzato. Le metriche e gli eventi non indicano la macchina su cui è stata eseguita una sessione.

450 450 

451Su 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](https://code.claude.com/docs/it/desktop.md#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.451Su ogni 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](https://code.claude.com/docs/it/desktop.md#managed-settings). Scrivi il nome per esteso nel file di ogni macchina. Claude Code non espande il valore, quindi `host.name=$(hostname)` arriva come quei caratteri.

452 452 

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

454 454 


465}465}

466```466```

467 467 

468Quando 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).468Quando nient'altro imposta la variabile, `host.name` arriva nel blocco delle risorse, nelle sessioni SSH di Desktop e nella CLI su quella macchina. Per sapere dove altro appaiono gli attributi personalizzati, consulta [Supporto per organizzazioni con più team](#multi-team-organization-support).

469 469 

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

471 471 

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

473* **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.473* **L'hai esportato in `/etc/profile` o in un altro file letto solo dalle shell di login**: il nome arriva quando esegui `claude` da una shell di login, ma non in una sessione SSH di Desktop. Desktop non avvia Claude Code tramite una shell di login. Imposta invece la variabile sotto `env` nel [file delle impostazioni gestite](https://code.claude.com/docs/it/desktop.md#managed-settings) sulla macchina remota.

474* **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).474* **Un valore contiene uno spazio**: in questo caso Claude Code non copia nessuna delle chiavi su eventi o datapoint e non segnala alcun errore. [Rimuovi lo spazio dal valore](#multi-team-organization-support).

475* **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](https://code.claude.com/docs/it/settings-reference.md#how-env-values-interact-with-your-shell). Il [log di debug](https://code.claude.com/docs/it/debug-your-config.md) 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.475* **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 delle impostazioni](https://code.claude.com/docs/it/settings-reference.md#how-env-values-interact-with-your-shell). Il [log di debug](https://code.claude.com/docs/it/debug-your-config.md) indica ogni variabile ignorata. Quando un deploy di Desktop di terze parti [specifica un endpoint OTLP](#how-managed-settings-lock-the-otlp-destination) nell'ambiente che fornisce, quell'ambiente include il proprio `OTEL_RESOURCE_ATTRIBUTES` di Desktop.

476 476 

477### Configurazioni di esempio477### Configurazioni di esempio

478 478 

479Imposta queste variabili di ambiente prima di eseguire `claude`. Ogni scenario di seguito mostra una configurazione completa, e ogni variabile è descritta sotto [Variabili di configurazione comuni](#common-configuration-variables). Per confermare che una configurazione ha avuto effetto, controlla il tuo backend per la metrica `claude_code.session.count` dopo aver avviato una sessione; la [Guida rapida](#quick-start) copre la verifica solo dei log e cosa controllare quando non arriva nulla.479Imposta queste variabili d'ambiente prima di eseguire `claude`. Ogni scenario seguente mostra una configurazione completa, e ogni variabile è descritta in [Variabili di configurazione comuni](#common-configuration-variables). Per confermare che una configurazione sia stata applicata, controlla nel tuo backend la metrica `claude_code.session.count` dopo aver avviato una sessione; la [Guida rapida](#quick-start) spiega la verifica dei soli log e cosa controllare quando non arriva nulla.

480 480 

481Per il debug della console con un intervallo di esportazione di 1 secondo:481Per il debug sulla console con un intervallo di esportazione di 1 secondo:

482 482 

483```bash theme={null}483```bash theme={null}

484export CLAUDE_CODE_ENABLE_TELEMETRY=1484export CLAUDE_CODE_ENABLE_TELEMETRY=1


495export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317495export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

496```496```

497 497 

498Per Prometheus, raschiato da `http://localhost:9464/metrics`:498Per Prometheus, con scraping da `http://localhost:9464/metrics`:

499 499 

500```bash theme={null}500```bash theme={null}

501export CLAUDE_CODE_ENABLE_TELEMETRY=1501export CLAUDE_CODE_ENABLE_TELEMETRY=1

502export OTEL_METRICS_EXPORTER=prometheus502export OTEL_METRICS_EXPORTER=prometheus

503```503```

504 504 

505Su un [ambiente self-hosted](https://code.claude.com/docs/it/self-hosted-environments-reference.md#pass-through-session-child-metrics), la sessione lega la porta 9464 solo alla capacità predefinita del runner di uno. A capacità più elevate, il runner ri-espone i contatori e i gauge della sessione sul suo endpoint `/metrics` invece.505In un [ambiente self-hosted](https://code.claude.com/docs/it/self-hosted-environments-reference.md#pass-through-session-child-metrics), la sessione si associa alla porta 9464 solo con la capacità predefinita del runner pari a uno. Con una capacità superiore, il runner espone invece nuovamente i contatori e gli indicatori della sessione sul proprio endpoint `/metrics`.

506 506 

507Per inviare metriche a più esportatori:507Per inviare le metriche a più exporter:

508 508 

509```bash theme={null}509```bash theme={null}

510export CLAUDE_CODE_ENABLE_TELEMETRY=1510export CLAUDE_CODE_ENABLE_TELEMETRY=1


524export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317524export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

525```525```

526 526 

527Per esportare solo metriche, senza eventi o log:527Per esportare solo le metriche, senza eventi o log:

528 528 

529```bash theme={null}529```bash theme={null}

530export CLAUDE_CODE_ENABLE_TELEMETRY=1530export CLAUDE_CODE_ENABLE_TELEMETRY=1


1403* `pre_tokens`: numero approssimativo di token prima della compattazione1403* `pre_tokens`: numero approssimativo di token prima della compattazione

1404* `post_tokens`: numero approssimativo di token dopo la compattazione1404* `post_tokens`: numero approssimativo di token dopo la compattazione

1405* `error`: messaggio di errore quando la compattazione non è riuscita1405* `error`: messaggio di errore quando la compattazione non è riuscita

1406* `precompute_reuse`: impostato solo quando `trigger` è `"manual"` o per una [compattazione in inattività](https://code.claude.com/docs/it/settings-reference.md#idlecompaction), che riporta `trigger` come `"auto"`. La compattazione automatica può preparare un riepilogo in background prima che la finestra di contesto si riempia, e questo attributo registra se la compattazione ha riutilizzato quel riepilogo preparato. `"hit"` significa che è stato riutilizzato; `"miss_custom_instructions"`, `"miss_hook"` e `"miss_not_ready"` indicano il motivo per cui è stato invece calcolato un nuovo riepilogo1406* `precompute_reuse`: impostato solo quando `trigger` è `"manual"`, oppure quando `trigger` è `"auto"` per una [compattazione in inattività](https://code.claude.com/docs/it/settings-reference.md#idlecompaction) in una sessione interattiva nel terminale. La compattazione automatica può preparare un riepilogo in background prima che la finestra di contesto si riempia, e questo attributo registra se la compattazione ha riutilizzato quel riepilogo preparato. `"hit"` indica che è stato riutilizzato; `"miss_custom_instructions"`, `"miss_hook"` e `"miss_not_ready"` indicano il motivo per cui è stato invece calcolato un nuovo riepilogo

1407 1407 

1408#### Evento di completamento del subagent1408#### Evento di completamento del subagent

1409 1409 

Details

248 248 

249**Web and mobile**249**Web and mobile**

250 250 

251Su [claude.ai/code](https://claude.ai/code), utilizza il menu a discesa della modalità accanto alla casella del prompt. Nell'app mobile, tocca il pulsante **+** nella casella del prompt, poi **Permission**. Le sessioni cloud e le sessioni Remote Control offrono modalità di permesso diverse:251Su [claude.ai/code](https://claude.ai/code), utilizza il menu a discesa della modalità nella riga sotto la casella del prompt. Nell'app mobile, tocca il pulsante **+** nella casella del prompt, poi **Permission**. Le sessioni cloud e le sessioni Remote Control offrono modalità di permesso diverse:

252 252 

253* **[Sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md)**: Accept edits, Plan e Auto. Accept edits corrisponde alla modalità `default`: le sessioni cloud pre-approvano le modifiche ai file indipendentemente dalla modalità, quindi il menu a discesa mostra Accept edits invece di Manual. Le sessioni cloud rispettano comunque `defaultMode: "acceptEdits"` dalle impostazioni. La modalità auto appare solo quando la tua organizzazione la consente e il modello selezionato la supporta. Bypass permissions non è disponibile.253* **[Sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md)**: Accept edits, Plan e Auto. Accept edits corrisponde alla modalità `default`: le sessioni cloud pre-approvano le modifiche ai file indipendentemente dalla modalità, quindi il menu a discesa mostra Accept edits invece di Manual. Le sessioni cloud rispettano comunque `defaultMode: "acceptEdits"` dalle impostazioni. La modalità auto appare solo quando la tua organizzazione la consente e il modello selezionato la supporta. Bypass permissions non è disponibile.

254* **[Sessioni Remote Control](https://code.claude.com/docs/it/remote-control.md)** sulla tua macchina locale: Manual, Accept edits, Plan e Auto per una sessione che hai avviato tu stesso, e non puoi selezionare Bypass permissions dall'app. Per usare Auto, la sessione deve soddisfare i [requisiti di disponibilità](#eliminate-prompts-with-auto-mode) della modalità auto. Per un thread di progetto in esecuzione sul tuo computer, consulta [Esegui un thread sul tuo computer](https://code.claude.com/docs/it/claude-projects.md#run-a-thread-on-your-own-computer).254* **[Sessioni Remote Control](https://code.claude.com/docs/it/remote-control.md)** sulla tua macchina locale: Manual, Accept edits, Plan e Auto per una sessione che hai avviato tu stesso, e non puoi selezionare Bypass permissions dall'app. Per usare Auto, la sessione deve soddisfare i [requisiti di disponibilità](#eliminate-prompts-with-auto-mode) della modalità auto. Per un thread di progetto in esecuzione sul tuo computer, consulta [Esegui un thread sul tuo computer](https://code.claude.com/docs/it/claude-projects.md#run-a-thread-on-your-own-computer).

Details

584 584 

585Il comando di un monitor è limitato in dove inizia e cosa può fare riferimento:585Il comando di un monitor è limitato in dove inizia e cosa può fare riferimento:

586 586 

587* **Solo sessioni interattive**: i monitor del plugin si avviano in una sessione interattiva e mai in modalità non interattiva con il flag `-p`. Inoltre non si avviano nelle sessioni in cui il provider API o le impostazioni di telemetria rendono non disponibile lo [strumento Monitor](https://code.claude.com/docs/it/tools-reference.md#monitor-tool)587* **Sessioni interattive**: i monitor del plugin non si avviano in modalità non interattiva con il flag `-p`

588* **Versione minima**: su Amazon Bedrock, Claude Platform on AWS, Agent Platform di Google Cloud o Microsoft Foundry, oppure con `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` impostati, i monitor richiedono Claude Code v2.1.310 o successivo. Il requisito si applica quando il [recupero dei feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching) è disattivato

588* **Nessuna configurazione utente**: `command` ottiene le [variabili di percorso](#path-variables-and-persistent-data) e `${ENV_VAR}` dall'ambiente, ma mai `${user_config.*}`. Un monitor che fa riferimento a uno non si avvia, e i processi monitor non ricevono nemmeno `CLAUDE_PLUGIN_OPTION_<KEY>`589* **Nessuna configurazione utente**: `command` ottiene le [variabili di percorso](#path-variables-and-persistent-data) e `${ENV_VAR}` dall'ambiente, ma mai `${user_config.*}`. Un monitor che fa riferimento a uno non si avvia, e i processi monitor non ricevono nemmeno `CLAUDE_PLUGIN_OPTION_<KEY>`

589* **Disabilitazione a metà sessione**: se disabiliti un plugin a metà sessione, Claude Code non ferma i monitor che sono già in esecuzione. Si fermano quando la sessione finisce590* **Disabilitazione a metà sessione**: se disabiliti un plugin a metà sessione, Claude Code non ferma i monitor che sono già in esecuzione. Si fermano quando la sessione finisce

590 591 


647 648 

648Nel percorso della directory dei dati, `<id>` è l'identificatore del plugin con ogni carattere diverso da lettere, cifre, `_`, e `-` sostituito da `-`, quindi `my-plugin@my-marketplace` diventa `my-plugin-my-marketplace`.649Nel percorso della directory dei dati, `<id>` è l'identificatore del plugin con ogni carattere diverso da lettere, cifre, `_`, e `-` sostituito da `-`, quindi `my-plugin@my-marketplace` diventa `my-plugin-my-marketplace`.

649 650 

650Su Windows, i percorsi sostituiti utilizzano barre in avanti in modo che una shell non legga le barre rovesciate come escape.651Su Windows, la maggior parte dei percorsi sostituiti utilizza barre in avanti, come in `C:/Users/you/...`. Mantengono le loro barre rovesciate native in un [hook in forma exec](https://code.claude.com/docs/it/hooks.md#exec-form-and-shell-form) e in un hook che viene eseguito tramite PowerShell, che è la shell predefinita su Windows quando Git Bash non è installato.

651 652 

652### Installa le dipendenze nella directory dei dati653### Installa le dipendenze nella directory dei dati

653 654 

Details

148 148 

149Quando i due nomi differiscono e qualcuno installa per nome del manifest, Claude Code segnala `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Mantieni i due nomi uguali. Per ulteriori informazioni su come Claude Code utilizza i due nomi, vedi [Riferimento al caricamento dei plugin](https://code.claude.com/docs/it/plugins/loading.md#find-where-a-plugin-came-from).149Quando i due nomi differiscono e qualcuno installa per nome del manifest, Claude Code segnala `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Mantieni i due nomi uguali. Per ulteriori informazioni su come Claude Code utilizza i due nomi, vedi [Riferimento al caricamento dei plugin](https://code.claude.com/docs/it/plugins/loading.md#find-where-a-plugin-came-from).

150 150 

151### Tieni i submodule inutilizzati fuori dal clone

152 

153Quando qualcuno aggiunge il tuo marketplace, Claude Code clona il repository e recupera solo i submodule git che contengono file dei plugin. Richiede Claude Code v2.1.295 o versioni successive.

154 

155Sei tu a decidere quali submodule Claude Code recupera, in base a dove collochi ciascun plugin:

156 

157* **Un plugin in una sottodirectory**: Claude Code recupera i submodule all'interno della directory del plugin e un submodule che la contiene. Metti un submodule di cui il tuo plugin ha bisogno all'interno della directory del plugin, e tieni fuori quelli di cui non ha bisogno

158* **Un plugin nella radice del marketplace**: Claude Code recupera ogni submodule del repository non appena uno dei file del plugin fa riferimento a un percorso all'interno di uno qualsiasi di essi. Se il tuo repository ha un submodule di grandi dimensioni usato solo dalla tua build, sposta il plugin in una sottodirectory

159 

160Se un plugin nella radice esegue un file da un submodule, scrivi esplicitamente il percorso del file nella configurazione degli hook o del server del plugin, ad esempio `${CLAUDE_PLUGIN_ROOT}/vendor/tool/run.sh`. Claude Code legge quei percorsi per capire se il plugin ha bisogno dei submodule. Non può vedere un percorso che uno script costruisce durante l'esecuzione.

161 

162Per la regola completa, consulta [Submodule Git nel repository del marketplace](https://code.claude.com/docs/it/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository).

163 

151## Scegliere una fonte di plugin164## Scegliere una fonte di plugin

152 165 

153Ogni voce di plugin in `marketplace.json` ha una `source` che dice a Claude Code da dove recuperare quel plugin. Scegli la fonte in base a dove sono archiviati i file del plugin. La tabella elenca le fonti che la maggior parte dei proprietari di marketplace utilizza.166Ogni voce di plugin in `marketplace.json` ha una `source` che dice a Claude Code da dove recuperare quel plugin. Scegli la fonte in base a dove sono archiviati i file del plugin. La tabella elenca le fonti che la maggior parte dei proprietari di marketplace utilizza.

Details

111Comunica agli utenti cosa serve per ogni protocollo sulla loro macchina:111Comunica agli utenti cosa serve per ogni protocollo sulla loro macchina:

112 112 

113* **SSH**: la chiave deve funzionare senza un prompt di passphrase, ad esempio perché è caricata in `ssh-agent`. L'host deve già essere in `known_hosts`.113* **SSH**: la chiave deve funzionare senza un prompt di passphrase, ad esempio perché è caricata in `ssh-agent`. L'host deve già essere in `known_hosts`.

114* **HTTPS**: Claude Code lascia abilitato l'helper di credenziali git dell'utente ma gli vieta di chiedere. Una credenziale che l'helper già memorizza funziona; una che dovrebbe chiedere fallisce. Su GitHub, `gh auth login` seguito da `gh auth setup-git` ne memorizza una.114* **HTTPS**: Claude Code lascia abilitato l'helper di credenziali git dell'utente ma gli vieta di chiedere, e non esegue programmi askpass come quello impostato in `GIT_ASKPASS`. Una credenziale che l'helper già memorizza funziona; una che dovrebbe chiedere fallisce. Su GitHub, `gh auth login` seguito da `gh auth setup-git` ne memorizza una.

115 115 

116Per un host GitHub Enterprise Server, gli utenti hanno bisogno dell'accesso git a quell'host dalla loro macchina. Vedi [Plugin marketplaces on GHES](https://code.claude.com/docs/it/github-enterprise-server.md#plugin-marketplaces-on-ghes) per cosa serve a ogni superficie Claude Code per raggiungere un marketplace ospitato su GHES.116Per un host GitHub Enterprise Server, gli utenti hanno bisogno dell'accesso git a quell'host dalla loro macchina. Vedi [Plugin marketplaces on GHES](https://code.claude.com/docs/it/github-enterprise-server.md#plugin-marketplaces-on-ghes) per cosa serve a ogni superficie Claude Code per raggiungere un marketplace ospitato su GHES.

117 117 

Details

238 238 

239Un marketplace privato è uno in un repository a cui hai bisogno di credenziali per clonare, su GitHub o su qualsiasi altro host git. Lo aggiungi con lo stesso comando `/plugin marketplace add` o `claude plugin marketplace add` di uno pubblico. Claude Code lo clona con le credenziali git già sulla tua macchina e non chiede mai, quindi ogni modo di connettersi ha un requisito:239Un marketplace privato è uno in un repository a cui hai bisogno di credenziali per clonare, su GitHub o su qualsiasi altro host git. Lo aggiungi con lo stesso comando `/plugin marketplace add` o `claude plugin marketplace add` di uno pubblico. Claude Code lo clona con le credenziali git già sulla tua macchina e non chiede mai, quindi ogni modo di connettersi ha un requisito:

240 240 

241* **HTTPS**: i tuoi helper di credenziali git si applicano, quindi l'accesso che hai configurato con `gh auth login`, il Portachiavi macOS o `git-credential-store` funziona. I prompt interattivi sono soppressi, quindi un host a cui non ti sei mai autenticato fallisce invece di chiedere una password.241* **HTTPS**: i tuoi helper di credenziali git si applicano, quindi l'accesso che hai configurato con `gh auth login`, il Portachiavi macOS o `git-credential-store` funziona. I prompt di Git e i programmi askpass sono disattivati, incluso uno impostato in `GIT_ASKPASS`, quindi la clonazione fallisce invece di chiedere quando git dovrebbe richiedere una credenziale.

242* **SSH**: l'host deve già essere nel tuo file `known_hosts` e la chiave deve funzionare senza un prompt di passphrase. Se la tua configurazione git nomina un programma SSH in `GIT_SSH_COMMAND`, `GIT_SSH`, o il `core.sshCommand` della tua configurazione git, Claude Code esegue quel programma.242* **SSH**: l'host deve già essere nel tuo file `known_hosts` e la chiave deve funzionare senza un prompt di passphrase. Se la tua configurazione git nomina un programma SSH in `GIT_SSH_COMMAND`, `GIT_SSH`, o il `core.sshCommand` della tua configurazione git, Claude Code esegue quel programma.

243* **Scorciatoia GitHub `owner/repo`**: Claude Code controlla se la tua chiave SSH si autentica a `github.com`, quindi clona su SSH se lo fa e su HTTPS se non lo fa. Imposta [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](https://code.claude.com/docs/it/env-vars#variables) per saltare quel controllo e clonare sempre su HTTPS.243* **Scorciatoia GitHub `owner/repo`**: Claude Code controlla se la tua chiave SSH si autentica a `github.com`, quindi clona su SSH se lo fa e su HTTPS se non lo fa. Imposta [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](https://code.claude.com/docs/it/env-vars#variables) per saltare quel controllo e clonare sempre su HTTPS.

244 244 

Details

41* **Un marketplace che le impostazioni dichiarano ma che `known_marketplaces.json` non ha**: Claude Code lo clona, quindi ricarica i plugin e scarica i plugin abilitati che non sono ancora in cache41* **Un marketplace che le impostazioni dichiarano ma che `known_marketplaces.json` non ha**: Claude Code lo clona, quindi ricarica i plugin e scarica i plugin abilitati che non sono ancora in cache

42* **Un marketplace dichiarato la cui fonte è cambiata nelle impostazioni**: Claude Code lo recupera di nuovo dalla nuova fonte e mostra `Plugins changed. Run /reload-plugins to activate.`42* **Un marketplace dichiarato la cui fonte è cambiata nelle impostazioni**: Claude Code lo recupera di nuovo dalla nuova fonte e mostra `Plugins changed. Run /reload-plugins to activate.`

43 43 

44Un plugin abilitato che nessuno dei due percorsi ha recuperato e che non ha una directory cache utilizzabile mostra `Plugin "<name>" not cached at <path>` nella scheda **Errors** di `/plugin`, e `claude plugin list` aggiunge `— run /plugin to refresh` alla stessa riga. Per la correzione, vedi [`Plugin "<name>" not cached at <path>`](https://code.claude.com/docs/it/plugins/troubleshooting#plugin-not-cached-at).44Un plugin abilitato che nessuno dei due percorsi ha recuperato e che non ha una directory cache utilizzabile mostra `Plugin "<name>" not cached at <path>` nella scheda **Errors** di `/plugin`. Per la correzione, vedi [`Plugin "<name>" not cached at <path>`](https://code.claude.com/docs/it/plugins/troubleshooting#plugin-not-cached-at).

45 45 

46## Trova da dove è venuto un plugin46## Trova da dove è venuto un plugin

47 47 

Details

155| `workflows` | Path, or array of paths | File [Workflow](https://code.claude.com/docs/it/workflows.md#distribute-a-workflow-in-a-plugin) `.js` o directory. Sostituisce la scansione predefinita `workflows/` |155| `workflows` | Path, or array of paths | File [Workflow](https://code.claude.com/docs/it/workflows.md#distribute-a-workflow-in-a-plugin) `.js` o directory. Sostituisce la scansione predefinita `workflows/` |

156| `experimental` | Object | Contenitore per `themes`, `monitors` e `evals`, la cui forma di manifest potrebbe ancora cambiare |156| `experimental` | Object | Contenitore per `themes`, `monitors` e `evals`, la cui forma di manifest potrebbe ancora cambiare |

157| `experimental.themes` | Path, or array of paths | File di tema o directory. Sostituisce la scansione predefinita `themes/`. Una chiave `themes` di primo livello si carica ancora, con un avviso `claude plugin validate` |157| `experimental.themes` | Path, or array of paths | File di tema o directory. Sostituisce la scansione predefinita `themes/`. Una chiave `themes` di primo livello si carica ancora, con un avviso `claude plugin validate` |

158| [`experimental.monitors`](#monitors) | Path, or inline array | Un file `.json` che contiene l'array monitors, o l'array stesso. Predefinito a `monitors/monitors.json`. Una chiave `monitors` di primo livello si carica ancora, con un avviso `claude plugin validate`. I monitor vengono eseguiti solo in sessioni interattive, e non su Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry |158| [`experimental.monitors`](#monitors) | Path, or inline array | Un file `.json` che contiene l'array monitors, o l'array stesso. Predefinito a `monitors/monitors.json`. Una chiave `monitors` di primo livello si carica ancora, con un avviso `claude plugin validate`. I monitor [non vengono avviati con il flag `-p`](https://code.claude.com/docs/it/plugins/components#monitors) |

159| `experimental.evals` | Path, or array of paths | Directory che contiene i [casi di eval](https://code.claude.com/docs/it/plugin-evals.md#use-a-different-eval-directory) del plugin quando non è la directory predefinita `evals/`. `claude plugin eval --eval-dir` la sostituisce |159| `experimental.evals` | Path, or array of paths | Directory che contiene i [casi di eval](https://code.claude.com/docs/it/plugin-evals.md#use-a-different-eval-directory) del plugin quando non è la directory predefinita `evals/`. `claude plugin eval --eval-dir` la sostituisce |

160 160 

161Nella colonna Type, un percorso è una stringa relativa alla radice del plugin, come `"./custom/commands"`.161Nella colonna Type, un percorso è una stringa relativa alla radice del plugin, come `"./custom/commands"`.


606}606}

607```607```

608 608 

609Su Windows, i percorsi sostituiti usano barre in avanti in modo che una shell non legga le barre rovesciate come escape.609Su Windows, la maggior parte dei percorsi sostituiti usa barre in avanti, come in `C:/Users/you/...`. Mantengono le loro barre rovesciate native in un [hook in forma exec](https://code.claude.com/docs/it/hooks.md#exec-form-and-shell-form) e in un hook eseguito tramite PowerShell, che è la shell predefinita su Windows quando Git Bash non è installato.

610 610 

611## Standard layout611## Standard layout

612 612 

Details

172* **`url`**: Claude Code recupera solo `marketplace.json`, quindi i percorsi relativi non possono risolversi. Dare a ogni plugin una sorgente di oggetto, come `github` o `git-subdir`.172* **`url`**: Claude Code recupera solo `marketplace.json`, quindi i percorsi relativi non possono risolversi. Dare a ogni plugin una sorgente di oggetto, come `github` o `git-subdir`.

173* **`settings`**: i percorsi relativi sono rifiutati completamente.173* **`settings`**: i percorsi relativi sono rifiutati completamente.

174 174 

175#### Git submodules in the marketplace repository

176 

177Quando Claude Code clona un repository del marketplace, recupera solo i submodule git che contengono file di plugin. Richiede Claude Code v2.1.295 o successivo.

178 

179Le versioni precedenti recuperano ogni submodule, inclusi quelli annidati. Se il repository ha un submodule di grandi dimensioni, Claude Code può quindi superare il [timeout del clone](https://code.claude.com/docs/it/plugins/troubleshooting.md#git-clone-timed-out-after-120s) mentre lo recupera.

180 

181Per un plugin in una sottodirectory, come `./plugins/formatter`, Claude Code recupera un submodule in questi casi:

182 

183* **Il plugin è all'interno del submodule**: il submodule è la directory del plugin o una directory al di sopra di essa

184* **Il submodule è all'interno del plugin**: il submodule si trova in qualsiasi punto sotto la directory del plugin

185* **Un collegamento simbolico punta all'interno del submodule**: un collegamento di cui è stato fatto il commit nel repository ha la sua destinazione nel submodule

186 

187Un plugin alla radice del marketplace, con `"source": "./"`, ottiene tutti i submodule del repository oppure nessuno. Claude Code recupera ogni submodule quando uno di questi elementi punta all'interno di un qualsiasi submodule:

188 

189* **Una directory di componenti**: una directory alla radice che contiene componenti del plugin, come `skills/`, `hooks/` o `bin/`

190* **Un percorso nella configurazione del plugin**: un percorso nella voce del marketplace del plugin, nel suo `plugin.json` o in un file di configurazione come `.mcp.json` o `hooks/hooks.json`

191* **Un collegamento simbolico**: un collegamento di cui è stato fatto il commit nel repository

192* **Testo nei file del plugin**: il percorso di un submodule, come `vendor/tool`, scritto in un file di configurazione o in un file sotto una directory di componenti

193 

194Quando nessuno di essi lo fa, Claude Code non recupera alcun submodule per quel plugin. Un repository che è sia un progetto sia un plugin ha spesso submodule che solo la build del progetto usa, e questa regola li esclude.

195 

196Claude Code recupera inoltre ogni submodule quando non riesce a stabilire quali contengono file di plugin, ad esempio:

197 

198* **Un `SKILL.md` alla radice**: l'intero repository è allora la directory di una singola skill

199* **Un file che Claude Code non riesce a leggere**: il file del marketplace, uno dei file di configurazione del plugin o `.gitmodules`

200 

201Se aggiungi un marketplace con `--sparse`, o la sua sorgente imposta `sparsePaths`, Claude Code estrae solo le directory lì indicate e non recupera alcun submodule. Le versioni precedenti fanno lo stesso.

202 

203Per escludere dal clone un submodule che i tuoi plugin non usano, consulta [Keep unused submodules out of the clone](https://code.claude.com/docs/it/plugins/create-marketplace.md#keep-unused-submodules-out-of-the-clone).

204 

175#### Bare names under pluginRoot205#### Bare names under pluginRoot

176 206 

177Un nome bare è un singolo nome di directory senza `/`, come `"formatter"`. Per scrivere nomi bare invece di percorsi `./`, impostare [`metadata.pluginRoot`](#top-level-fields) sulla directory in cui si risolvono. Con `"pluginRoot": "./plugins"`, `"source": "formatter"` si risolve in `./plugins/formatter`. Richiede Claude Code v2.1.239 o successivo.207Un nome bare è un singolo nome di directory senza `/`, come `"formatter"`. Per scrivere nomi bare invece di percorsi `./`, impostare [`metadata.pluginRoot`](#top-level-fields) sulla directory in cui si risolvono. Con `"pluginRoot": "./plugins"`, `"source": "formatter"` si risolve in `./plugins/formatter`. Richiede Claude Code v2.1.239 o successivo.

Details

313 313 

314#### Cosa restituiscono le chiamate rifiutate314#### Cosa restituiscono le chiamate rifiutate

315 315 

316Nei risultati, `<reason>` sta per `the session was stopped and nobody has sent input since`:316Nei risultati, `<reason>` sta per il motivo per cui la chiamata è stata rifiutata. Dopo un'interruzione, è `the session was stopped and nobody has sent input since`. Per altri motivi, consulta [Chiamate rifiutate nelle esecuzioni `claude -p` e nelle sessioni Agent SDK](#calls-refused-in-non-interactive-runs).

317 317 

318| Alcune chiamate rifiutate | Risultato fino al successivo input dell'utente |318| Alcune chiamate rifiutate | Risultato |

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

320| `$.prompt.submit` | Si risolve con `{ drop: '<reason>' }` e non mette in coda alcun prompt |320| `$.prompt.submit` | Si risolve con `{ drop: '<reason>' }` e non mette in coda alcun prompt |

321| `$.command.run` | Viene rifiutata con un errore il cui messaggio termina con `<reason>` |321| `$.command.run` | Viene rifiutata con un errore il cui messaggio termina con `<reason>` |


324| `$.session.send` a un membro di un [team di agenti](https://code.claude.com/docs/it/agent-teams.md) | Si risolve con `{ isDelivered: false, reason: 'Teammate "<name>" was not messaged: <reason>.' }`, dove `<name>` è il nome del membro del team |324| `$.session.send` a un membro di un [team di agenti](https://code.claude.com/docs/it/agent-teams.md) | Si risolve con `{ isDelivered: false, reason: 'Teammate "<name>" was not messaged: <reason>.' }`, dove `<name>` è il nome del membro del team |

325| [`$.tool.call`](https://code.claude.com/docs/it/plugins/mods/reference#mods-api-methods) di Bash con `run_in_background: true`, Monitor o CronCreate | Si risolve con `{ deny: '<tool> was not run: it starts background work, a schedule or a goal, and <reason>' }`, dove `<tool>` è il nome dello strumento |325| [`$.tool.call`](https://code.claude.com/docs/it/plugins/mods/reference#mods-api-methods) di Bash con `run_in_background: true`, Monitor o CronCreate | Si risolve con `{ deny: '<tool> was not run: it starts background work, a schedule or a goal, and <reason>' }`, dove `<tool>` è il nome dello strumento |

326 326 

327Insieme a questi risultati di `$.session.send` e `$.tool.call`, l'utente può vedere il [toast `Stopped:`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).327Quando una di queste chiamate `$.session.send` o `$.tool.call` viene rifiutata dopo un'interruzione in una sessione interattiva, l'utente può vedere il [toast `Stopped:`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).

328 328 

329#### Lavoro avviato dal tuo mod prima dell'interruzione329#### Lavoro avviato dal tuo mod prima dell'interruzione

330 330 


341 341 

342Quando un job pianificato scade o un monitor genera un evento prima del successivo input dell'utente, l'utente può vedere il [toast `Stopped:`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).342Quando un job pianificato scade o un monitor genera un evento prima del successivo input dell'utente, l'utente può vedere il [toast `Stopped:`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).

343 343 

344### Chiamate rifiutate nelle esecuzioni `claude -p` e nelle sessioni Agent SDK

345 

346In un'esecuzione `claude -p` o in una sessione [Agent SDK](https://code.claude.com/docs/it/agent-sdk/overview.md), un risultato come `{ drop: 'the run reached its --max-turns limit' }` significa che l'esecuzione ha rifiutato la chiamata del tuo mod.

347 

348Una chiamata `$.prompt.submit` rifiutata si risolve con `{ drop: '<reason>' }`. Le altre chiamate rifiutate, come `$.command.run` e `$.agent.spawn`, restituiscono i risultati mostrati in [Cosa restituiscono le chiamate rifiutate](#what-refused-calls-return) con il motivo al posto di `<reason>`. Trova il tuo `<reason>` qui sotto per sapere cosa fare:

349 

350* **`the run reached its --max-turns limit`**: i turni generati dai prompt del tuo mod e dai subagent che avvia vengono conteggiati ai fini di [`--max-turns`](https://code.claude.com/docs/it/cli-reference#cli-flags) o del [limite di turni](https://code.claude.com/docs/it/agent-sdk/configuration.md#limit-turns-and-spend) dell'Agent SDK. Per avere più turni, avvia l'esecuzione con un limite più alto. Se non puoi, fai in modo che il tuo mod smetta di effettuare la chiamata rifiutata. Se l'esecuzione riceve un altro prompt dall'utente o dall'applicazione SDK, il conteggio dei turni si azzera e l'esecuzione accetta di nuovo le chiamate.

351* **`the run is past its --max-budget-usd limit`**: avvia l'esecuzione con un `--max-budget-usd` più alto, oppure aumenta il [limite di spesa](https://code.claude.com/docs/it/agent-sdk/configuration.md#limit-turns-and-spend) dell'Agent SDK. Se non puoi, fai in modo che il tuo mod smetta di effettuare la chiamata rifiutata. Il limite si applica al costo totale dell'esecuzione fino a quel momento. Quel totale continua ad aumentare quando l'esecuzione riceve un altro prompt, quindi un nuovo tentativo restituisce lo stesso motivo.

352* **`the host has ended its input`**: ad esempio, l'applicazione SDK ha terminato il suo [input in streaming](https://code.claude.com/docs/it/agent-sdk/streaming-vs-single-mode.md), oppure lo stdin si è chiuso in un'esecuzione avviata con [`--input-format stream-json`](https://code.claude.com/docs/it/cli-reference#cli-flags). L'esecuzione sta terminando e non accetta altro input, quindi un nuovo tentativo restituisce lo stesso motivo. Fai in modo che il tuo mod smetta di effettuare la chiamata rifiutata. Se sei tu ad avviare l'esecuzione, la prossima volta mantieni aperto quell'input finché il tuo mod non ha più chiamate da effettuare.

353* **`the session was stopped and nobody has sent input since`**: l'esecuzione è stata [interrotta](#calls-and-background-work-after-the-user-interrupts-a-turn), ad esempio con [`interrupt()`](https://code.claude.com/docs/it/agent-sdk/typescript#query-object) dell'Agent SDK. Per effettuare di nuovo la chiamata dopo il successivo messaggio dell'utente o dell'applicazione SDK, segui [Riprovare una chiamata rifiutata o scartata](#retry-a-refused-or-dropped-call).

354 

355### Un'esecuzione `claude -p` con il tuo mod non termina mai

356 

357Se il tuo mod invia un prompt alla fine di ogni turno, ogni prompt avvia un altro turno. Senza [`--max-turns`](https://code.claude.com/docs/it/cli-reference#cli-flags) o `--max-budget-usd`, un'esecuzione `claude -p` che carica il mod continua finché non la interrompi tu stesso.

358 

359Per fare in modo che l'esecuzione termini da sola, aggiungi uno dei due flag al comando nella tua shell. Se sono altre persone ad avviare l'esecuzione, fai in modo che il tuo mod smetta di inviare prompt una volta terminato il suo lavoro. Questo comando aggiunge `--max-turns`:

360 

361```bash theme={null}

362claude -p "find the TODOs" --max-turns 5

363```

364 

365Una volta che l'esecuzione raggiunge quel limite, il prompt successivo del mod viene [rifiutato](#calls-refused-in-non-interactive-runs) invece di avviare un turno, e l'esecuzione termina.

366 

367Se l'esecuzione supera comunque il limite, esegui `claude --version` nella tua shell e [aggiorna Claude Code](https://code.claude.com/docs/it/setup.md#update-claude-code) se la tua versione è precedente alla v2.1.304. I prompt del mod vengono rifiutati al raggiungimento del limite a partire dalla v2.1.299. Se il tuo mod avvia subagent, i loro turni vengono conteggiati ai fini di `--max-turns` a partire dalla v2.1.304.

368 

344## Inviare e ricevere messaggi tra sessioni369## Inviare e ricevere messaggi tra sessioni

345 370 

346Un mod può inviare un messaggio di testo semplice a un'altra delle tue sessioni, a uno dei subagent di questa sessione o a un membro del suo [team di agenti](https://code.claude.com/docs/it/agent-teams.md). Può anche osservare i messaggi che arrivano e partono.371Un mod può inviare un messaggio di testo semplice a un'altra delle tue sessioni, a uno dei subagent di questa sessione o a un membro del suo [team di agenti](https://code.claude.com/docs/it/agent-teams.md). Può anche osservare i messaggi che arrivano e partono.


390| `$.http` | `fetch(url, init)` su `http` o `https`. Si risolve in `{ status, ok, headers, text }` una volta letto il body. |415| `$.http` | `fetch(url, init)` su `http` o `https`. Si risolve in `{ status, ok, headers, text }` una volta letto il body. |

391| `$.store` | Un archivio chiave-valore JSON proprio del tuo plugin, mantenuto tra una sessione e l'altra |416| `$.store` | Un archivio chiave-valore JSON proprio del tuo plugin, mantenuto tra una sessione e l'altra |

392| `$.env` | `get` e `set` delle variabili d'ambiente. Scrivi il nome come stringa letterale. |417| `$.env` | `get` e `set` delle variabili d'ambiente. Scrivi il nome come stringa letterale. |

393| `$.settings` | `read` di ciò che contengono i file delle impostazioni e la policy gestita |418| `$.settings` | `read()` si risolve in tutte le impostazioni, unite in un unico oggetto. Con `{ source }` o `{ key }`, si risolve invece nelle [impostazioni di una singola origine o nel valore di una singola chiave](#read-one-source-or-one-key). |

394| `$.session` | `messages()` restituisce la trascrizione come elenco di `{ role, text, toolUses }`. Inoltre la directory di lavoro, il modello e altro. [`usage()`](https://code.claude.com/docs/it/plugins/mods/reference#mods-api-methods) restituisce l'uso della finestra di contesto e i limiti del piano. |419| `$.session` | `messages()` restituisce la trascrizione come elenco di `{ role, text, toolUses }`. Inoltre la directory di lavoro, il modello e altro. [`usage()`](https://code.claude.com/docs/it/plugins/mods/reference#mods-api-methods) restituisce l'uso della finestra di contesto e i limiti del piano. |

395| `$.mcp` | `call` di uno strumento su un server MCP connesso |420| `$.mcp` | `call` di uno strumento su un server MCP connesso |

396 421 


408* **`$.process.spawn started, and a plugin withheld its result:`**: il mod che ha rifiutato non aveva letto l'output del comando fino alla fine. Claude Code arresta il comando se è ancora in esecuzione.433* **`$.process.spawn started, and a plugin withheld its result:`**: il mod che ha rifiutato non aveva letto l'output del comando fino alla fine. Claude Code arresta il comando se è ancora in esecuzione.

409* **`$.process.spawn ran, and a plugin withheld its result:`**: il mod che ha rifiutato aveva letto l'output del comando fino alla fine, quindi il comando era già terminato434* **`$.process.spawn ran, and a plugin withheld its result:`**: il mod che ha rifiutato aveva letto l'output del comando fino alla fine, quindi il comando era già terminato

410 435 

436### Leggere tutte le impostazioni, una singola origine o una singola chiave

437 

438`$.settings.read()` si risolve in un unico oggetto che contiene le impostazioni di tutte le origini in uso, unite in base alla [precedenza](https://code.claude.com/docs/it/settings.md#settings-precedence). Passa `{ source }` per leggere invece una singola origine, `{ key }` per leggere una singola chiave, oppure entrambi:

439 

440| Chiamata | Si risolve in |

441| :- | :- |

442| `$.settings.read()` | Le impostazioni unite in un unico oggetto. Le sue chiavi di primo livello sono quelle di un file `settings.json`, come `permissions` e `hooks`. |

443| `$.settings.read({ source: 'policy' })` | Le impostazioni di quella singola origine in un unico oggetto, oppure `{}` quando quell'origine non contiene impostazioni |

444| `$.settings.read({ key: 'spinnerTipsEnabled' })` | Il valore di quella chiave nelle impostazioni unite, oppure `undefined` quando la chiave non è impostata |

445| `$.settings.read({ key: 'spinnerTipsEnabled', source: 'user' })` | Il valore di quella chiave in quella singola origine, oppure `undefined` quando quell'origine non la imposta |

446 

447Per `source`, passa il nome della singola origine delle impostazioni da leggere:

448 

449* **`user`**: `~/.claude/settings.json`

450* **`project`**: `.claude/settings.json`

451* **`local`**: `.claude/settings.local.json`

452* **`flag`**: ciò che passi con `--settings` e le impostazioni inline dell'SDK

453* **`policy`**: [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md#how-claude-code-combines-managed-sources)

454 

455Per `key`, passa il nome esatto di una singola chiave di primo livello, non un percorso con punti all'interno di un oggetto annidato. L'argomento `key` richiede Claude Code v2.1.304 o successivo.

456 

411## Passaggi successivi457## Passaggi successivi

412 458 

413* [Reagire agli eventi](https://code.claude.com/docs/it/plugins/mods/events.md): intercetta con hook le chiamate agli strumenti, i prompt e i turni459* [Reagire agli eventi](https://code.claude.com/docs/it/plugins/mods/events.md): intercetta con hook le chiamate agli strumenti, i prompt e i turni

Details

48 48 

49Usa ciò che hai chiesto. Per il prompt di esempio, il nome del branch corrente appare sopra la casella del prompt. Se il mod non fa ciò che volevi, di' a Claude cosa cambiare. Il mod si ricarica alla fine di ogni turno che ne modifica i file, quindi puoi provare la modifica non appena Claude termina.49Usa ciò che hai chiesto. Per il prompt di esempio, il nome del branch corrente appare sopra la casella del prompt. Se il mod non fa ciò che volevi, di' a Claude cosa cambiare. Il mod si ricarica alla fine di ogni turno che ne modifica i file, quindi puoi provare la modifica non appena Claude termina.

50 50 

51Se una riga della trascrizione che inizia con il nome del mod indica che la [modifica non è stata caricata](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#this-mods-change-didnt-load), incolla quella riga nel tuo messaggio successivo quando chiedi a Claude una correzione. Claude non vede la riga a meno che tu non la incolli.

52 

51### Usare il mod in altre sessioni53### Usare il mod in altre sessioni

52 54 

53Un mod scritto da Claude viene caricato solo nella sessione che l'ha creato, e Claude Code elimina la cartella dei mod di quella sessione una volta che supera [`cleanupPeriodDays`](https://code.claude.com/docs/it/settings-reference#cleanupperioddays). Per conservare il mod, copia la sua directory fuori dalla cartella dei mod in una posizione tua, come `~/mods/git-branch`. Poi scegli come caricarlo:55Un mod scritto da Claude viene caricato solo nella sessione che l'ha creato, e Claude Code elimina la cartella dei mod di quella sessione una volta che supera [`cleanupPeriodDays`](https://code.claude.com/docs/it/settings-reference#cleanupperioddays). Per conservare il mod, copia la sua directory fuori dalla cartella dei mod in una posizione tua, come `~/mods/git-branch`. Poi scegli come caricarlo:

Details

93 93 

94## Agganciarsi a ciò che Claude sta facendo94## Agganciarsi a ciò che Claude sta facendo

95 95 

96Gestisci questi eventi per vedere o modificare una chiamata a uno strumento, un prompt o un turno mentre avviene. Per ogni evento e per ciò che un hook può restituire, consulta il [riferimento degli eventi](https://code.claude.com/docs/it/plugins/mods/reference.md#events).96Gestisci questi eventi per vedere o modificare una chiamata a uno strumento, un prompt, un turno o una lettura delle impostazioni mentre avviene. Per ogni evento e per ciò che un hook può restituire, consulta il [riferimento degli eventi](https://code.claude.com/docs/it/plugins/mods/reference.md#events).

97 97 

98### Proteggere o modificare una chiamata a uno strumento98### Proteggere o modificare una chiamata a uno strumento

99 99 


115 115 

116Quando Claude prova `git push --force`, il comando non viene eseguito e non compare alcuna richiesta di permesso, perché l'hook non chiama mai `next`. Claude legge il testo di `deny` come risultato dello strumento, quindi scrivilo come un'istruzione su cui Claude possa agire. Ogni altro comando Bash viene eseguito come farebbe senza il mod.116Quando Claude prova `git push --force`, il comando non viene eseguito e non compare alcuna richiesta di permesso, perché l'hook non chiama mai `next`. Claude legge il testo di `deny` come risultato dello strumento, quindi scrivilo come un'istruzione su cui Claude possa agire. Ogni altro comando Bash viene eseguito come farebbe senza il mod.

117 117 

118Se questo hook genera un'eccezione o va in timeout, Claude Code lo salta e il comando procede come farebbe senza il mod. Per rifiutare invece il comando, [aggiungi un handler `.catch`](#handle-a-hook-that-fails) all'hook.

119 

118Per agire dopo che uno strumento è stato eseguito, usa `await next(e)`, svolgi il tuo lavoro e restituisci ciò che `next` ti ha dato. Questo hook registra ogni file `.mdx` che Claude modifica, con [`$.ui.log`](https://code.claude.com/docs/it/plugins/mods/api#show-something-without-starting-a-turn), che aggiunge alla trascrizione una riga attenuata che Claude non legge:120Per agire dopo che uno strumento è stato eseguito, usa `await next(e)`, svolgi il tuo lavoro e restituisci ciò che `next` ti ha dato. Questo hook registra ogni file `.mdx` che Claude modifica, con [`$.ui.log`](https://code.claude.com/docs/it/plugins/mods/api#show-something-without-starting-a-turn), che aggiunge alla trascrizione una riga attenuata che Claude non legge:

119 121 

120```javascript theme={null}122```javascript theme={null}


177* **L'utente digita una risposta**: `$.ui.ask` si risolve nel testo digitato. L'hook lo confronta con `Run it`, quindi qualsiasi altro testo rifiuta il comando.179* **L'utente digita una risposta**: `$.ui.ask` si risolve nel testo digitato. L'hook lo confronta con `Run it`, quindi qualsiasi altro testo rifiuta il comando.

178* **Nessuno risponde**: `$.ui.ask` viene rifiutata quando l'utente chiude la domanda o sceglie **Chat about this**, e in un'esecuzione `claude -p`, quindi il blocco `catch` lascia la risposta a `Refuse`180* **Nessuno risponde**: `$.ui.ask` viene rifiutata quando l'utente chiude la domanda o sceglie **Chat about this**, e in un'esecuzione `claude -p`, quindi il blocco `catch` lascia la risposta a `Refuse`

179 181 

180Mantieni l'attesa all'interno di una chiamata all'API dei mod come `$.ui.ask`, perché quel tempo non viene conteggiato nel [limite di tempo](https://code.claude.com/docs/it/plugins/mods/reference.md#limits) dell'hook. Il tempo trascorso in attesa di una tua promise invece viene conteggiato. Claude Code salta un hook che va in timeout, quindi il comando trattenuto verrebbe eseguito.182Mantieni l'attesa all'interno di una chiamata all'API dei mod come `$.ui.ask`, perché quel tempo non viene conteggiato nel [limite di tempo](https://code.claude.com/docs/it/plugins/mods/reference.md#limits) dell'hook. Il tempo trascorso in attesa di una tua promise invece viene conteggiato.

183 

184Claude Code salta un hook che va in timeout, quindi il comando trattenuto verrebbe eseguito. Per rifiutarlo invece, concatena [un handler `.catch`](#handle-a-hook-that-fails) alla registrazione restituita da `on`. Quell'handler è separato dal blocco `catch` all'interno dell'hook.

181 185 

182#### Approvare o rifiutare una chiamata a uno strumento prima che venga chiesto all'utente186#### Approvare o rifiutare una chiamata a uno strumento prima che venga chiesto all'utente

183 187 


207 211 

208* **Su `main`**: l'hook restituisce `deny`, anche quando una regola consente `git push`212* **Su `main`**: l'hook restituisce `deny`, anche quando una regola consente `git push`

209* **Su un altro branch, e per altri comandi**: la chiamata riceve la decisione che riceverebbe senza il mod213* **Su un altro branch, e per altri comandi**: la chiamata riceve la decisione che riceverebbe senza il mod

214* **L'hook genera un'eccezione o va in timeout**: anche in questo caso la chiamata riceve la decisione che riceverebbe senza il mod. Per rifiutare invece la chiamata, [aggiungi un handler `.catch`](#handle-a-hook-that-fails) che restituisca `{ decision: 'deny', reason: 'the reason' }`.

210 215 

211L'hook confronta il testo del comando, quindi consideralo un promemoria per Claude. Per bloccare i push su `main` per tutti, proteggi il branch sul tuo host Git.216L'hook confronta il testo del comando, quindi consideralo un promemoria per Claude. Per bloccare i push su `main` per tutti, proteggi il branch sul tuo host Git.

212 217 


269 274 

270Quando invii un prompt come `open a PR for this change`, il tuo messaggio appare invariato nella trascrizione, e Claude legge anche una riga come `Current branch: feature/auth` dopo di esso. Un prompt che non menziona una pull request passa invariato, e `git` non viene eseguito.275Quando invii un prompt come `open a PR for this change`, il tuo messaggio appare invariato nella trascrizione, e Claude legge anche una riga come `Current branch: feature/auth` dopo di esso. Un prompt che non menziona una pull request passa invariato, e `git` non viene eseguito.

271 276 

272Per bloccare un prompt, restituisci `{ drop: 'the reason' }` senza chiamare `next`. Il testo torna nel campo di input del prompt dell'utente, che vede `Prompt dropped by a hook:` seguito dal tuo motivo, quindi rivolgi il motivo all'utente. Se il tuo hook restituisce un `drop` dopo che la sua chiamata a `next(e)` ha lasciato passare il prompt, il turno viene comunque eseguito e l'hook [non riesce](#handle-a-hook-that-fails) con un messaggio che include `a drop after its next() was answered`.277Per bloccare un prompt, restituisci `{ drop: 'the reason' }` senza chiamare `next`. Il testo torna nel campo di input del prompt dell'utente, che vede `Prompt dropped by a hook:` seguito dal tuo motivo, quindi rivolgi il motivo all'utente. Il prompt passa comunque in questi casi:

278 

279* **Il tuo hook restituisce un `drop` dopo che la sua chiamata a `next(e)` ha lasciato passare il prompt**: il turno viene comunque eseguito e l'hook [non riesce](#handle-a-hook-that-fails) con un messaggio che include `a drop after its next() was answered`

280* **Il tuo hook genera un'eccezione o va in timeout**: Claude Code lo salta e invia il prompt. [Aggiungi un handler `.catch`](#handle-a-hook-that-fails) in modo che un errore non invii un prompt che l'hook avrebbe bloccato.

273 281 

274[Altri eventi](https://code.claude.com/docs/it/plugins/mods/reference.md#prompts-and-what-claude-reads) coprono il resto di ciò che Claude legge: `prompt.section` per ogni sezione del prompt di sistema, `prompt.context` per il contesto inviato con il primo messaggio e `skill.prompt` per il testo di una skill. Il testo di questi hook che cambia tra una richiesta e l'altra [invalida la cache dei prompt](https://code.claude.com/docs/it/prompt-caching.md). In un hook `skill.prompt` puoi anche leggere [da quale plugin o file proviene la skill](https://code.claude.com/docs/it/plugins/mods/reference.md#skill-prompt-fields).282[Altri eventi](https://code.claude.com/docs/it/plugins/mods/reference.md#prompts-and-what-claude-reads) coprono il resto di ciò che Claude legge: `prompt.section` per ogni sezione del prompt di sistema, `prompt.context` per il contesto inviato con il primo messaggio e `skill.prompt` per il testo di una skill. Il testo di questi hook che cambia tra una richiesta e l'altra [invalida la cache dei prompt](https://code.claude.com/docs/it/prompt-caching.md). In un hook `skill.prompt` puoi anche leggere [da quale plugin o file proviene la skill](https://code.claude.com/docs/it/plugins/mods/reference.md#skill-prompt-fields).

275 283 


305 313 

306Per vedere le chiamate agli strumenti che l'API ha eseguito autonomamente durante la richiesta, come le chiamate allo [strumento advisor](https://code.claude.com/docs/it/advisor.md), leggi `result.serverToolUses`. Claude Code non esegue queste chiamate, quindi nessun hook `tool.call` o `tool.check` si attiva per esse. Il campo è assente quando la risposta non contiene chiamate di questo tipo e richiede Claude Code v2.1.290 o successivo.314Per vedere le chiamate agli strumenti che l'API ha eseguito autonomamente durante la richiesta, come le chiamate allo [strumento advisor](https://code.claude.com/docs/it/advisor.md), leggi `result.serverToolUses`. Claude Code non esegue queste chiamate, quindi nessun hook `tool.call` o `tool.check` si attiva per esse. Il campo è assente quando la risposta non contiene chiamate di questo tipo e richiede Claude Code v2.1.290 o successivo.

307 315 

316### Modificare o rifiutare una lettura delle impostazioni

317 

318Un hook `settings.read` viene eseguito sulla lettura di un mod e sulla lettura di Claude Code stesso:

319 

320* **La lettura di un mod**: un mod chiama [`$.settings.read`](https://code.claude.com/docs/it/plugins/mods/api#read-one-source-or-one-key).

321* **La lettura di Claude Code stesso**: Claude Code costruisce le impostazioni unite della sessione. Questa lettura si ripete quando cambiano le impostazioni o i plugin caricati.

322 

323Prima di fare affidamento su una delle due letture, verifica la protezione e la tua versione:

324 

325* **La protezione integrata**: con le impostazioni gestite, o con un [`/login`](https://code.claude.com/docs/it/authentication#authentication-precedence) Team o Enterprise come credenziale della sessione, la [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default) può saltare questo hook in un mod che installi o carichi con `--plugin-dir`. Per verificarlo, cerca nel [log di debug](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#read-the-debug-log) `settings.read bypassed by cc-plugin-sec-default`. Se una riga con quel testo nomina il tuo mod, chiedi all'amministratore della tua organizzazione di [installare il mod come uno dei mod dell'organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods).

326* **La versione**: l'attivazione dell'evento sulla lettura di Claude Code stesso, e il campo `e.layers`, richiedono Claude Code v2.1.304 o successivo.

327 

328#### Cosa riceve un hook `settings.read`

329 

330| Campo | Tipo | Cosa contiene |

331| :- | :- | :- |

332| `e.layers` | array | Un oggetto `{ source, settings }` per ogni origine in uso che contiene impostazioni, a partire da quella con [precedenza](https://code.claude.com/docs/it/settings.md#settings-precedence) più bassa: `plugin`, `user`, `project`, `local`, `flag`, `policy`. Vuoto in `claude plugin test`. |

333| `e.source` | string | L'unica origine richiesta da un mod, come in `$.settings.read({ source: 'policy' })`. In tal caso `e.layers` contiene solo quel livello. Assente nella lettura di Claude Code stesso e in qualsiasi altra lettura delle impostazioni unite. |

334 

335In `e.layers`, `plugin` contiene le impostazioni fornite dai plugin abilitati ed è solo il nome di un livello, non una `source` che puoi passare a `$.settings.read`. `flag` contiene le impostazioni passate con `--settings`, e `policy` contiene le impostazioni gestite.

336 

337#### Distinguere la lettura di Claude Code stesso dalla lettura di un mod

338 

339Nella [lettura di Claude Code stesso](#settings-read-hook), [`next.origin`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function) è `{ plugin: 'engine', tier: 'core' }`, e nella lettura di un mod `next.origin.plugin` è il nome del mod chiamante.

340 

341#### Cosa può restituire un hook `settings.read`

342 

343Il tuo hook può restituire il risultato di [`next(e)`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function) invariato, un `{ value }` proprio oppure `{ deny: reason }`. Nella [lettura di Claude Code stesso](#settings-read-hook) e nella lettura di un mod, un `{ value }` sostituisce ciò che la lettura fornisce e `{ deny: reason }` rifiuta la lettura:

344 

345| Valore restituito | Nella lettura di Claude Code stesso | Nella lettura di un mod |

346| :- | :- | :- |

347| `{ value }` | Per ogni chiave che modifichi, ciò che restituisci sostituisce l'intero valore di quella chiave nelle impostazioni unite della sessione, se [rispetta lo schema della chiave](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-refused) | La chiamata di quel mod si risolve nel tuo `value`, oppure nella `key` richiesta presa dal tuo `value`, quindi restituisci un oggetto intero e non un array |

348| `{ deny: reason }` | La sessione mantiene le impostazioni così come erano state unite prima che qualsiasi hook rispondesse, e il [log di debug registra il tuo `reason`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#settings-read-refused) | La chiamata di quel mod viene rifiutata con `<calling mod>: $.settings.read: <reason>` |

349 

350Nella lettura di Claude Code stesso, costruisci il tuo `{ value }` a partire dal [`value` di `next(e)`](#settings-read-next), poiché una chiave che ometti risulta non impostata. Quando Claude Code legge una chiave come `env` da ciascuna origine separatamente, modificarla nel tuo `value` [non ha effetto](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

351 

352#### Cosa fornisce `next(e)` a un hook `settings.read`

353 

354`next(e)` si risolve in `{ value }` o in `{ deny }`:

355 

356* **`{ value }`**: `value` sono le impostazioni unite, oppure le impostazioni di una sola origine quando [`e.source`](#settings-read-receives) è impostato. Se un hook che [viene eseguito dopo il tuo](#the-order-mods-run-in) ha restituito un `{ value }` proprio, ricevi invece il `value` di quell'hook.

357* **`{ deny }`**: un hook eseguito dopo il tuo ha rifiutato la lettura. Restituisci quel `{ deny }` invariato.

358 

359#### Modificare un'impostazione da un hook `settings.read`

360 

361Verifica prima [quali mod ricevono questo evento e da quale versione](#settings-read-hook).

362 

363Per modificare una chiave, espandi il `value` di [`next(e)`](https://code.claude.com/docs/it/plugins/mods/reference#the-hook-function) e imposta quella chiave, come fa questo hook con [`spinnerTipsEnabled`](https://code.claude.com/docs/it/settings-reference#spinnertipsenabled). L'hook non controlla [`next.origin`](#settings-read-origin), quindi modifica la chiave sia nella [lettura di Claude Code stesso](#settings-read-hook) sia nella lettura unita di un mod:

364 

365```javascript theme={null}

366on('settings.read', async ($, e, next) => {

367 const read = await next(e)

368 // Pass through a read of one source, so that only the merged settings change.

369 // Pass through a { deny } from a later hook too: it has no value.

370 if (e.source || !read.value) return read

371 // Keep every other key and change this one

372 return { value: { ...read.value, spinnerTipsEnabled: false } }

373})

374```

375 

376Nella lettura di Claude Code stesso, se il tuo hook restituisce un valore al di fuori dello schema della chiave, come una stringa, solo quella chiave mantiene il valore unito prima che qualsiasi hook rispondesse. Il log di debug riporta quindi [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/it/plugins/mods/troubleshoot#settings-read-key-refused). Se il tuo valore è valido e la chiave comunque non cambia, consulta [perché una chiave restituita non ha effetto](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

377 

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

309 379 

310Gli hook delle impostazioni sono gli hook di comando, HTTP, prompt e agente che configuri nei file di impostazioni. Ogni [evento degli hook delle impostazioni](https://code.claude.com/docs/it/hooks.md#hook-events), come `Stop`, `SessionEnd` o `PostToolUse`, è anche un evento denominato `classic.` seguito dal nome dell'evento dell'hook delle impostazioni, come `classic.Stop`. `e` è il JSON che un hook delle impostazioni riceve su stdin, incluso `transcript_path`.380Gli hook delle impostazioni sono gli hook di comando, HTTP, prompt e agente che configuri nei file di impostazioni. Ogni [evento degli hook delle impostazioni](https://code.claude.com/docs/it/hooks.md#hook-events), come `Stop`, `SessionEnd` o `PostToolUse`, è anche un evento denominato `classic.` seguito dal nome dell'evento dell'hook delle impostazioni, come `classic.Stop`. `e` è il JSON che un hook delle impostazioni riceve su stdin, incluso `transcript_path`.

Details

508* **`Input`**: accetta `onSubmit(value)` e `onInput(value)`508* **`Input`**: accetta `onSubmit(value)` e `onInput(value)`

509* **`Select`**: accetta `onSelect(value)` con le sue scelte in `options`, un elenco di almeno una scelta con valori univoci, come `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`509* **`Select`**: accetta `onSelect(value)` con le sue scelte in `options`, un elenco di almeno una scelta con valori univoci, come `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`

510 510 

511Un test preme o digita in un controllo tramite la sua `key`, quindi assegnane una a ciascun controllo. Ogni uso di un controllo attiva anche [`ui.press`, `ui.input` o `ui.select`](https://code.claude.com/docs/it/plugins/mods/reference#interface) con la `key` in `e.element`, e un altro mod può gestire quegli eventi. Il suo hook viene eseguito prima della tua callback, quindi vede ciò che l'utente digita nel tuo `Input` e può modificarlo o rispondere al posto della tua callback. L'API dei mod non ha alcun metodo che prema il pulsante di un altro mod.511### Quali controlli richiedono una `key`

512 

513Assegna a ogni `Input` e `Select` una prop `key`, come `key: 'size'`. Un `Button` può fare a meno di una `key` quando ha una prop `label` o un singolo figlio di tipo stringa. In quel caso la sua key è il valore di `label` o quella stringa.

514 

515I test e gli altri mod identificano un controllo tramite la sua key:

516 

517* **Test**: un [test](https://code.claude.com/docs/it/plugins/mods/test.md#test-a-drawing) preme o digita in un controllo tramite la sua key.

518* **Altri mod**: Claude Code attiva [`ui.press`, `ui.input` o `ui.select`](https://code.claude.com/docs/it/plugins/mods/reference#interface) con la key del controllo in `e.element` prima di eseguire la callback del controllo. L'hook di un altro mod per quell'evento vede ciò che l'utente ha digitato nel tuo `Input` e può modificare quel testo o impedire l'esecuzione della tua callback. L'API dei mod non fornisce a quel mod alcun metodo per premere i tuoi pulsanti.

519 

520Se un messaggio indica `needs a key` o `is drawn twice`, [trova la causa in base a quel messaggio](https://code.claude.com/docs/it/plugins/mods/troubleshoot.md#needs-a-key).

512 521 

513### Focus della tastiera e tasti di scelta rapida522### Focus della tastiera e tasti di scelta rapida

514 523 

Details

21| `.claude-plugin/plugin.json` | Sì | Il [manifest](https://code.claude.com/docs/it/plugins/manifest-reference.md) del plugin. I mod non aggiungono campi obbligatori. |21| `.claude-plugin/plugin.json` | Sì | Il [manifest](https://code.claude.com/docs/it/plugins/manifest-reference.md) del plugin. I mod non aggiungono campi obbligatori. |

22| `hooks/hooks.json` | Sì | `modules`: un array con un percorso, relativo a questo file, al modulo degli hook, come in `"modules": ["./register.js"]`. Può contenere anche [hook delle impostazioni](https://code.claude.com/docs/it/hooks.md) sotto `hooks`. |22| `hooks/hooks.json` | Sì | `modules`: un array con un percorso, relativo a questo file, al modulo degli hook, come in `"modules": ["./register.js"]`. Può contenere anche [hook delle impostazioni](https://code.claude.com/docs/it/hooks.md) sotto `hooks`. |

23| Il modulo degli hook, ad esempio [`hooks/register.js`](https://code.claude.com/docs/it/plugins/mods/create#write-a-mod-yourself) | Sì | Il punto di ingresso del mod. Esporta `register(on, options)`. Con estensione `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` o `.tsx`. Un modulo ES. |23| Il modulo degli hook, ad esempio [`hooks/register.js`](https://code.claude.com/docs/it/plugins/mods/create#write-a-mod-yourself) | Sì | Il punto di ingresso del mod. Esporta `register(on, options)`. Con estensione `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` o `.tsx`. Un modulo ES. |

24| [`types/index.d.ts`](https://code.claude.com/docs/it/plugins/mods/interface#declare-the-values), indicato da `types` nel manifest | Quando il mod usa `$.state` o aggiunge un namespace all'API dei mod | Dichiara i valori di `PluginState` e qualsiasi namespace aggiunto dal mod |24| [`types/index.d.ts`](https://code.claude.com/docs/it/plugins/mods/interface#declare-the-values), a meno che `types` nel manifest non indichi un altro percorso | Quando il mod usa `$.state` o aggiunge un namespace all'API dei mod | Dichiara i valori di `PluginState` e qualsiasi namespace aggiunto dal mod. Per omettere `types` dal manifest, ti serve la v2.1.299 o successiva. |

25| File i cui nomi terminano con `.test.ts` o `.test.tsx` | No | Test eseguiti da [`claude plugin test`](https://code.claude.com/docs/it/plugins/mods/test#write-a-test) |25| File i cui nomi terminano con `.test.ts` o `.test.tsx` | No | Test eseguiti da [`claude plugin test`](https://code.claude.com/docs/it/plugins/mods/test#write-a-test) |

26 26 

27`register` riceve `on` e `options`. `options` contiene i valori dei campi [`userConfig`](https://code.claude.com/docs/it/plugins/components#user-configuration) dichiarati dal manifest, con i valori predefiniti compilati.27`register` riceve `on` e `options`. `options` contiene i valori dei campi [`userConfig`](https://code.claude.com/docs/it/plugins/components#user-configuration) dichiarati dal manifest, con i valori predefiniti compilati.


110 110 

111### Comandi e configurazione111### Comandi e configurazione

112 112 

113Gli eventi dei comandi e della configurazione si attivano quando un comando viene eseguito o elencato e quando una riga di `/config` viene mostrata o modificata:113Gli eventi dei comandi e della configurazione si attivano quando un comando viene eseguito o elencato, quando una riga di `/config` viene mostrata o modificata e durante una lettura delle impostazioni:

114 114 

115| Evento | Si attiva quando | Un hook può restituire |115| Evento | Si attiva quando | Un hook può restituire |

116| :- | :- | :- |116| :- | :- | :- |


118| `command.describe` | Una volta per ogni comando, per l'elenco dei comandi | `{ description, argumentHint, isHidden }` |118| `command.describe` | Una volta per ogni comando, per l'elenco dei comandi | `{ description, argumentHint, isHidden }` |

119| `config.set` | Una riga di `/config` sta per cambiare | `next({ ...e, value })` oppure `{ deny: reason }` |119| `config.set` | Una riga di `/config` sta per cambiare | `next({ ...e, value })` oppure `{ deny: reason }` |

120| `config.describe` | Una volta per ogni riga di `/config` | `{ label, description, isHidden }` |120| `config.describe` | Una volta per ogni riga di `/config` | `{ label, description, isHidden }` |

121| [`settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook) | Un mod chiama [`$.settings.read`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network), oppure Claude Code costruisce le impostazioni unite della sessione | `next(e)`, `{ value }` oppure `{ deny: reason }` |

122 

123#### `e.layers` e `e.source` su `settings.read`

124 

125* **`e.layers`**: un oggetto `{ source, settings }` per ogni origine in uso che contiene impostazioni, a partire da quella con la [precedenza](https://code.claude.com/docs/it/settings.md#settings-precedence) più bassa. Consulta [Cosa riceve un hook `settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-receives).

126* **`e.source`**: l'unica origine richiesta da un mod, come in `$.settings.read({ source: 'policy' })`. Assente nella lettura effettuata da Claude Code stesso e in qualsiasi altra lettura delle impostazioni unite

127 

128Su `settings.read`, l'attivazione dell'evento durante la lettura effettuata da Claude Code stesso e il campo `e.layers` richiedono Claude Code v2.1.304 o versioni successive. Per sapere quando viene eseguito l'hook e cosa può restituire, con un esempio, consulta [Modificare o rifiutare una lettura delle impostazioni](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-hook).

121 129 

122### Turni130### Turni

123 131 

Details

168 168 

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

170 170 

171### `This mod's change didn't load` o `the earlier version is no longer running`

172 

173Non è stato possibile caricare una modifica a un [mod scritto da Claude in questa sessione](https://code.claude.com/docs/it/plugins/mods/create.md#ask-claude-for-a-mod). La riga della trascrizione inizia con il nome del mod e termina con il motivo:

174 

175* `This mod's change didn't load, so the earlier version is still running: <reason>.`

176* `This mod didn't load, and the earlier version is no longer running: <reason>.`

177 

178Claude non vede questa riga, quindi incollala nel tuo prossimo messaggio quando chiedi a Claude una correzione.

179 

171### `$.agent.register refused: the hooks module that made the call is no longer loaded`180### `$.agent.register refused: the hooks module that made the call is no longer loaded`

172 181 

173La 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.182La 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.


225 234 

226Leggi il motivo su quella riga. Le cause comuni sono una prop che l'elemento non accetta e un elemento che l'app non possiede.235Leggi il motivo su quella riga. Le cause comuni sono una prop che l'elemento non accetta e un elemento che l'app non possiede.

227 236 

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

238 

239Un elemento nell'albero restituito dal tuo hook `ui.render` non ha una [`key`](https://code.claude.com/docs/it/plugins/mods/interface#which-controls-need-a-key) valida, oppure due elementi ne condividono una. Trova il messaggio che hai ricevuto:

240 

241* **`<Input> needs a key` o `<Select> needs a key`**: l'elemento non ha la prop `key`, oppure la sua `key` è vuota o non è una stringa, come in `key: 3`. Assegnagli come `key` una stringa non vuota.

242* **`<Button> needs a key`**: assegna al pulsante come `key` una stringa non vuota

243* **`is drawn twice; each takes its own key`**: due elementi del tipo indicato dal messaggio hanno la stessa `key`, come in `Input "size" is drawn twice; each takes its own key`. Assegna a ciascun elemento la propria `key`.

244* **`key each once` da `press` in un [test](https://code.claude.com/docs/it/plugins/mods/test.md#test-a-drawing)**: il disegno contiene più di un pulsante con la key che hai passato. I pulsanti con la stessa etichetta e senza prop `key` condividono quell'etichetta come key. Assegna a ciascun pulsante la propria `key`.

245 

228### Una riga `ui.render` riporta `threw while drawn`246### Una riga `ui.render` riporta `threw while drawn`

229 247 

230La riga indica il [punto di rendering](https://code.claude.com/docs/it/plugins/mods/reference.md#render-sites), poi riporta `threw while drawn:` e l'errore, come in `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`. Claude Code ha riscontrato quell'errore durante il disegno dell'albero restituito dal tuo hook [`ui.render`](https://code.claude.com/docs/it/plugins/mods/reference#interface), oppure durante il disegno del punto di rendering a partire dalle [`props` che il tuo hook ha passato a `next`](https://code.claude.com/docs/it/plugins/mods/interface#change-what-claude-code-already-draws). La parte finale `the engine drew its own` significa che il punto di rendering mostra il contenuto abituale di Claude Code.248La riga indica il [punto di rendering](https://code.claude.com/docs/it/plugins/mods/reference.md#render-sites), poi riporta `threw while drawn:` e l'errore, come in `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`. Claude Code ha riscontrato quell'errore durante il disegno dell'albero restituito dal tuo hook [`ui.render`](https://code.claude.com/docs/it/plugins/mods/reference#interface), oppure durante il disegno del punto di rendering a partire dalle [`props` che il tuo hook ha passato a `next`](https://code.claude.com/docs/it/plugins/mods/interface#change-what-claude-code-already-draws). La parte finale `the engine drew its own` significa che il punto di rendering mostra il contenuto abituale di Claude Code.


303 321 

304[Carica di nuovo il valore salvato](https://code.claude.com/docs/it/plugins/mods/interface.md#load-a-saved-value-again-after-clear) in un hook `classic.SessionStart`.322[Carica di nuovo il valore salvato](https://code.claude.com/docs/it/plugins/mods/interface.md#load-a-saved-value-again-after-clear) in un hook `classic.SessionStart`.

305 323 

324### Una chiave restituita dal tuo hook `settings.read` non ha effetto

325 

326Le voci `env` restituite non diventano variabili d'ambiente. Le regole `allow`, `ask` e `deny` restituite non vengono verificate nelle chiamate agli strumenti. Impostale in un [file di impostazioni](https://code.claude.com/docs/it/settings.md), oppure chiama [`$.env.set`](https://code.claude.com/docs/it/plugins/mods/api#reach-files-processes-and-the-network) per le variabili d'ambiente.

327 

328Per un'altra chiave, verifica [quali mod ricevono `settings.read` e da quale versione](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook), poi cerca `settings.read` nel [log di debug](#read-the-debug-log) e individua una di queste righe:

329 

330| Riga di log | Significato e passaggio |

331| :- | :- |

332| `settings.read hook skipped`, dopo il nome del tuo mod | Il tuo hook non è riuscito. [Correggi l'errore riportato dalla riga](#hook-skipped). |

333| `settings.read bypassed by cc-plugin-sec-default`, su una riga che nomina il tuo mod prima di esso | La [protezione integrata](https://code.claude.com/docs/it/plugins/mods/admin.md#know-what-happens-by-default) ha saltato il tuo hook. Chiedi all'amministratore della tua organizzazione di [installare il mod come uno dei mod dell'organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods). |

334| `settings.read: the answer for <key> is no value the key can hold` | Il valore restituito non è conforme allo schema della chiave. [Restituiscine uno consentito](#settings-read-key-refused). |

335| `settings.read: the merge never settles for <key>` | Le chiavi nominate dalla riga mantengono i valori delle origini delle impostazioni. Impostale in un file di impostazioni. |

336| `answered settings.read without next()`, dopo il nome di un mod | Rilevante solo se quel mod [viene eseguito prima del tuo](https://code.claude.com/docs/it/plugins/mods/events.md#the-order-mods-run-in). In tal caso il tuo hook non è stato eseguito in quella lettura. [Disattiva quel mod](https://code.claude.com/docs/it/plugins/mods/overview.md#turn-mods-on-or-off) oppure, se è stato distribuito dalla tua organizzazione, chiedi al suo amministratore di farlo. |

337| `settings.read: refused to the engine` | La lettura è stata rifiutata, quindi nessun `{ value }` di alcun hook è stato applicato. [Scopri cosa l'ha rifiutata](#settings-read-refused). |

338 

339Se nessuna riga spiega la chiave, controlla i mod eseguiti prima del tuo per individuare un hook `settings.read` che [modifica la chiave](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-example). Disattiva quel mod, oppure chiedi all'amministratore della tua organizzazione di farlo. Se nessun hook lo fa, imposta la chiave in un file di impostazioni.

340 

341### `the answer for <key> is no value the key can hold`

342 

343Questa riga del [log di debug](#read-the-debug-log) indica che Claude Code ha rifiutato il valore restituito dal tuo hook [`settings.read`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-hook) per la chiave indicata, e solo per quella chiave:

344 

345```text theme={null}

346settings.read: the answer for <key> is no value the key can hold; the settings' own value stands

347```

348 

349Il valore che hai restituito per la chiave indicata non era conforme allo schema di quella chiave, ad esempio per tipo o per intervallo. Restituisci un valore consentito dalla voce della chiave nel [riferimento delle impostazioni](https://code.claude.com/docs/it/settings-reference.md). Finché il tuo valore non è conforme, la chiave mantiene il valore risultante dal merge delle origini delle impostazioni prima che qualsiasi hook rispondesse. La riga lo chiama il valore proprio delle impostazioni.

350 

351### `settings.read: refused to the engine`

352 

353Questa riga del [log di debug](#read-the-debug-log) indica che [la lettura propria di Claude Code](https://code.claude.com/docs/it/plugins/mods/events.md#settings-read-hook) è stata rifiutata, quindi nessun `{ value }` di alcun hook è stato applicato, compreso il tuo. Quando un hook `settings.read` rifiuta quella lettura con [`{ deny: reason }`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-returns), la riga riporta il motivo di quell'hook:

354 

355```text theme={null}

356settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand

357```

358 

359Cerca il testo `<reason>` nel codice del tuo hook:

360 

361* **Il tuo codice lo contiene**: il tuo hook ha rifiutato la lettura. Fai in modo che restituisca `{ value }` quando [`next.origin`](https://code.claude.com/docs/it/plugins/mods/events#settings-read-origin) indica la lettura propria di Claude Code.

362* **Il tuo codice non lo contiene**: [disattiva](https://code.claude.com/docs/it/plugins/mods/overview.md#turn-mods-on-or-off) gli altri tuoi mod uno alla volta. Dopo ciascuno, esegui di nuovo il comando di questa sessione dalla tua shell con un solo `--debug-file` su un nuovo percorso, e cerca `refused to the engine` in quel file. Se la riga è presente, disattiva il mod successivo. In caso contrario, l'ultimo mod che hai disattivato ha rifiutato la lettura, quindi lascialo disattivato.

363 

364Se non rimane nessun altro mod, usa un [file di impostazioni](https://code.claude.com/docs/it/settings.md) per le chiavi restituite dal tuo hook. I suoi valori restano validi mentre la lettura viene rifiutata.

365 

306## Leggere il log di debug366## Leggere il log di debug

307 367 

308Il log di debug contiene una riga per ogni modulo che Claude Code carica o rifiuta, per ogni hook che fallisce e per ogni risultato che rifiuta, quindi è il posto in cui guardare quando la trascrizione non mostra nulla. Per scriverne uno, nella tua shell avvia Claude Code con `--debug`, oppure con `--debug-file <path>` per scegliere dove salvarlo:368Il log di debug contiene una riga per ogni modulo che Claude Code carica o rifiuta, per ogni hook che fallisce e per ogni risultato che rifiuta, quindi è il posto in cui guardare quando la trascrizione non mostra nulla. Per scriverne uno, nella tua shell avvia Claude Code con `--debug`, oppure con `--debug-file <path>` per scegliere dove salvarlo:

Details

251 251 

252Per prima cosa controllare il repository stesso: un `owner/repo` scritto male, un repository che non esiste o un repository privato che non si può vedere termina anche con questo messaggio. Aprire l'URL del repository nel browser o eseguire `git ls-remote <url>` nel terminale per confermare che esiste e che si ha accesso.252Per prima cosa controllare il repository stesso: un `owner/repo` scritto male, un repository che non esiste o un repository privato che non si può vedere termina anche con questo messaggio. Aprire l'URL del repository nel browser o eseguire `git ls-remote <url>` nel terminale per confermare che esiste e che si ha accesso.

253 253 

254Se il repository è corretto, la causa è le credenziali. Claude Code esegue git con i prompt interattivi disabilitati, quindi non può chiedere una password, una passphrase della chiave o una credenziale come farebbe il terminale. Se git ha bisogno di un prompt, si vede `fatal: Cannot prompt because user interactivity has been disabled` o `terminal prompts disabled` nell'errore originale. Solo le credenziali che già funzionano in modo non interattivo hanno successo:254Se il repository è corretto, la causa sono le credenziali. Claude Code disattiva i prompt di git e i programmi askpass, incluso quello impostato in `GIT_ASKPASS`, ed esegue SSH in modalità batch. Quando git ha bisogno di un prompt, l'errore del clone include `fatal: Cannot prompt because user interactivity has been disabled`, `terminal prompts disabled` o `fatal: unable to get password from user`. Hanno successo solo le credenziali che git può ottenere senza un prompt o un programma askpass:

255 255 

256* **SSH**: `ssh -T git@<host>` deve avere successo senza chiedere una passphrase e l'host deve già essere in `known_hosts`256* **SSH**: `ssh -T git@<host>` deve avere successo senza chiedere una passphrase e l'host deve già essere in `known_hosts`

257* **HTTPS**: l'helper delle credenziali deve contenere un token per l'host. Per GitHub, eseguire `gh auth login` e `gh auth setup-git`. Per un altro host, memorizzare un token di accesso personale nell'helper delle credenziali git. Testare con `git ls-remote <url>`257* **HTTPS**: il tuo helper delle credenziali deve contenere un token per l'host. Per GitHub, esegui `gh auth login` e `gh auth setup-git`. Per un altro host, memorizza un token di accesso personale nel tuo helper delle credenziali git. Per testare, rimuovi `GIT_ASKPASS` nel terminale ed esegui `git -c core.askPass= ls-remote <url>`.

258 258 

259Una volta che `git ls-remote` ha successo nel terminale senza un prompt, eseguire di nuovo l'aggiunta o l'aggiornamento. Un'aggiunta riuscita stampa `Successfully added marketplace: <name>`. Un aggiornamento riuscito stampa `Successfully updated marketplace: <name>` dalla shell o `✔ Updated 1 marketplace` in una sessione.259Una volta che il controllo per il tuo protocollo ha successo senza un prompt, esegui di nuovo l'aggiunta o l'aggiornamento. Un'aggiunta riuscita stampa `Successfully added marketplace: <name>`. Un aggiornamento riuscito stampa `Successfully updated marketplace: <name>` dalla shell o `✔ Updated 1 marketplace` in una sessione.

260 260 

261Per fare in modo che Claude Code salti SSH per le fonti GitHub `owner/repo`, impostare `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Senza di esso, Claude Code clona quelle fonti su SSH quando una chiave SSH per `github.com` sembra configurata e torna a HTTPS quando il clone SSH fallisce.261Per fare in modo che Claude Code salti SSH per le fonti GitHub `owner/repo`, impostare `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Senza di esso, Claude Code clona quelle fonti su SSH quando una chiave SSH per `github.com` sembra configurata e torna a HTTPS quando il clone SSH fallisce.

262 262 


318 318 

319Se il repository è un monorepo, limitare il checkout alle directory che si nominano con `claude plugin marketplace add <source> --sparse <paths>`.319Se il repository è un monorepo, limitare il checkout alle directory che si nominano con `claude plugin marketplace add <source> --sparse <paths>`.

320 320 

321Se il repository contiene submodule git di grandi dimensioni, aggiorna Claude Code. Dalla v2.1.295 in poi, Claude Code scarica solo i [submodule che contengono file di plugin](https://code.claude.com/docs/it/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository). Le versioni precedenti scaricano tutti i submodule, cosa che da sola può esaurire i 120 secondi.

322 

321### Marketplace updates keep failing offline323### Marketplace updates keep failing offline

322 324 

323Si lavora in un ambiente in cui l'host git del marketplace non è raggiungibile e ogni sessione ripete un aggiornamento fallito in background. Il checkout esistente del marketplace rimane in posizione e l'avvio non è ritardato.325Si lavora in un ambiente in cui l'host git del marketplace non è raggiungibile e ogni sessione ripete un aggiornamento fallito in background. Il checkout esistente del marketplace rimane in posizione e l'avvio non è ritardato.


609| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Nessuna versione soddisfa tutti gli intervalli che la vincolano. Il messaggio elenca gli intervalli. | Disinstalla o aggiorna uno dei plugin in conflitto, oppure chiedi all'autore upstream di ampliare il vincolo. |611| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Nessuna versione soddisfa tutti gli intervalli che la vincolano. Il messaggio elenca gli intervalli. | Disinstalla o aggiorna uno dei plugin in conflitto, oppure chiedi all'autore upstream di ampliare il vincolo. |

610| `... has version requirements too complex to intersect` o `has an invalid version requirement` | Un intervallo non è semver valido, oppure gli intervalli combinati non possono essere intersecati. | Correggi l'intervallo non valido o semplifica le catene `\|\|` lunghe. |612| `... has version requirements too complex to intersect` o `has an invalid version requirement` | Un intervallo non è semver valido, oppure gli intervalli combinati non possono essere intersecati. | Correggi l'intervallo non valido o semplifica le catene `\|\|` lunghe. |

611| `... has no git tag satisfying <range>` | Il repository della dipendenza non ha alcun tag `<name>--v*` nell'intervallo. | Verifica che l'upstream contrassegni le release con quella convenzione, oppure allenta l'intervallo. |613| `... has no git tag satisfying <range>` | Il repository della dipendenza non ha alcun tag `<name>--v*` nell'intervallo. | Verifica che l'upstream contrassegni le release con quella convenzione, oppure allenta l'intervallo. |

612| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dipendenza si trova in un marketplace diverso e la risoluzione tra marketplace è disattivata per impostazione predefinita. | Installa tu stesso la dipendenza nello stesso ambito, nella shell con `claude plugin install <dep>@<marketplace>` più il `--scope` in cui stai installando il plugin, quindi riprova. |614| `Dependency "<dep>" (required by <plugin>) is in marketplace "<marketplace>", which is not in the allowlist` | La dipendenza si trova in un marketplace diverso e la risoluzione tra marketplace è disattivata per impostazione predefinita. | Installa tu stesso la dipendenza nello stesso ambito, nella shell con `claude plugin install <dep>@<marketplace>` più il `--scope` in cui stai installando il plugin, quindi riprova. |

613 615 

614Per visualizzarli a livello di programmazione, esegui `claude plugin list --json` nella shell. I plugin con problemi hanno un campo `errors` con i messaggi e un campo `errorDetails` con un `type` per ciascuno: le prime tre righe corrispondono a `dependency-unsatisfied` e la quarta a `dependency-version-unsatisfied`.616Per visualizzarli a livello di programmazione, esegui `claude plugin list --json` nella shell. I plugin con problemi hanno un campo `errors` con i messaggi e un campo `errorDetails` con un `type` per ciascuno: le prime tre righe corrispondono a `dependency-unsatisfied` e la quarta a `dependency-version-unsatisfied`.

615 617 


979 981 

980### `${CLAUDE_PLUGIN_ROOT}` mostra barre oblique in avanti su Windows982### `${CLAUDE_PLUGIN_ROOT}` mostra barre oblique in avanti su Windows

981 983 

982Su Windows, un hook del plugin riceve `${CLAUDE_PLUGIN_ROOT}` come `C:/Users/you/...` anziché `C:\Users\you\...` e uno script che si aspettava barre oblique inverse si interrompe.984Su Windows, un hook del plugin eseguito tramite Git Bash riceve `${CLAUDE_PLUGIN_ROOT}` come `C:/Users/you/...` anziché `C:\Users\you\...` e uno script che si aspettava barre oblique inverse si interrompe.

983 985 

984Claude Code esegue gli hook in forma shell attraverso Git Bash su Windows e sostituisce la radice del plugin nella forma Win32 con barre oblique in avanti di proposito. I builtin di Bash, gli strumenti MSYS e i binari Windows nativi accettano tutti quella forma.986Con Git Bash installato, un [hook in forma shell](https://code.claude.com/docs/it/hooks.md#exec-form-and-shell-form) viene eseguito tramite Git Bash per impostazione predefinita. Per un hook eseguito tramite Git Bash, Claude Code passa il percorso con barre oblique in avanti in modo che Bash non interpreti le barre oblique inverse come caratteri di escape. I builtin di Bash, gli strumenti MSYS e i binari Windows nativi accettano tutti quella forma.

985 987 

986Se il tuo script ha bisogno di barre oblique inverse, passa l'hook a una delle forme che mantengono i percorsi nativi, descritte sotto [exec form and shell form](https://code.claude.com/docs/it/hooks.md#exec-form-and-shell-form):988Se il tuo script ha bisogno di barre oblique inverse, passa l'hook a una delle forme che mantengono i percorsi nativi, descritte sotto [exec form and shell form](https://code.claude.com/docs/it/hooks.md#exec-form-and-shell-form):

987 989 


1090 1092 

1091In alternativa, ospitare il marketplace in un repository git e dire agli utenti di aggiungerlo con l'URL del repository. Per una fonte git, Claude Code clona l'intero repository, quindi i percorsi relativi si risolvono. I tipi di fonte sono sul [marketplace reference](https://code.claude.com/docs/it/plugins/marketplace-reference.md).1093In alternativa, ospitare il marketplace in un repository git e dire agli utenti di aggiungerlo con l'URL del repository. Per una fonte git, Claude Code clona l'intero repository, quindi i percorsi relativi si risolvono. I tipi di fonte sono sul [marketplace reference](https://code.claude.com/docs/it/plugins/marketplace-reference.md).

1092 1094 

1095### A root plugin's files from a git submodule are missing after install

1096 

1097Il tuo plugin si trova alla radice del marketplace ed esegue o legge un file da un submodule git del repository. Dopo l'installazione, la directory del submodule è vuota. Prima della v2.1.295, Claude Code recuperava ogni submodule, quindi la directory era popolata.

1098 

1099Quando Claude Code clona il tuo marketplace, recupera solo i [submodule che contengono file del plugin](https://code.claude.com/docs/it/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository). Per un plugin alla radice, decide leggendo i percorsi nella configurazione del plugin e il testo dei file del plugin. Non può vedere un percorso che uno script costruisce durante l'esecuzione.

1100 

1101Scrivi per intero un percorso all'interno del submodule dove Claude Code può leggerlo, come `${CLAUDE_PLUGIN_ROOT}/vendor/tool/run.sh` in un comando hook. Claude Code recupera quindi ogni submodule del repository per quel plugin.

1102 

1093### Marketplace validation errors1103### Marketplace validation errors

1094 1104 

1095È stato eseguito `claude plugin validate .` dalla directory del marketplace e ha segnalato errori o avvisi sul file del marketplace stesso.1105È stato eseguito `claude plugin validate .` dalla directory del marketplace e ha segnalato errori o avvisi sul file del marketplace stesso.


1121 1131 

1122### `Marketplace source '<source>' is blocked by enterprise policy`1132### `Marketplace source '<source>' is blocked by enterprise policy`

1123 1133 

1124È stato eseguito `/plugin marketplace add`, `update` o un'installazione e Claude Code ha rifiutato con questa riga. Per una fonte GitHub o git, l'host segue la fonte tra parentesi, come in `'github:owner/repo' (github.com)`.1134Hai eseguito `/plugin marketplace add`, `update` o un'installazione e Claude Code ha rifiutato con questa riga.

1125 1135 

1126L'amministratore ha impostato `blockedMarketplaces` o `strictKnownMarketplaces` nelle impostazioni gestite e questa fonte non è consentita. Chiedere all'amministratore di consentire la fonte o aggiungere una delle fonti consentite che il messaggio elenca.1136L'amministratore ha impostato `blockedMarketplaces` o `strictKnownMarketplaces` nelle impostazioni gestite e questa fonte non è consentita. Chiedere all'amministratore di consentire la fonte o aggiungere una delle fonti consentite che il messaggio elenca.

1127 1137 

Details

100 100 

101### Attivazione della modalità veloce101### Attivazione della modalità veloce

102 102 

103L'abilitazione della [modalità veloce](https://code.claude.com/docs/it/fast-mode.md) aggiunge un'intestazione di richiesta che fa parte della chiave di cache, quindi la prima richiesta che Claude Code invia con la modalità veloce attiva legge l'intera cronologia della conversazione senza cache hit. Claude Code imposta quell'intestazione una volta quando inizia un turno e la mantiene per l'intero turno, quindi quando attivi la modalità veloce mentre Claude sta lavorando, il cache miss dall'intestazione si verifica sulla prima richiesta del tuo turno successivo. Quei token di input non memorizzati nella cache vengono fatturati alle [tariffe della modalità veloce](https://code.claude.com/docs/it/fast-mode.md#understand-the-cost-tradeoff), motivo per cui attivare la modalità veloce all'inizio di una sessione costa meno che attivarla in profondità in una sessione lunga. Se il tuo modello attuale non supporta la modalità veloce, l'abilitazione della modalità veloce [cambia anche il tuo modello](#switching-models), e quel cambio avvia una cache nuova dalla richiesta successiva nel turno in esecuzione.103La [modalità veloce](https://code.claude.com/docs/it/fast-mode.md) e la velocità standard mantengono cache separate, quindi dopo che attivi o disattivi la modalità veloce, la richiesta successiva non può usare ciò che l'altra velocità ha memorizzato nella cache. La prima volta che attivi la modalità veloce in una conversazione, la richiesta successiva legge l'intera conversazione fino a quel punto senza cache alle [tariffe della modalità veloce](https://code.claude.com/docs/it/fast-mode.md#understand-the-cost-tradeoff). Per mantenere basso quel costo, attivala all'inizio di una sessione.

104 104 

105Il costo si applica una volta per conversazione. Dopo il primo turno in modalità veloce, Claude Code continua a inviare l'intestazione e varia solo l'impostazione di velocità della richiesta, che non fa parte della chiave di cache. Disattivare la modalità veloce, il [fallback automatico alla velocità standard](https://code.claude.com/docs/it/fast-mode.md#handle-rate-limits) dopo un rate limit, e riattivarla in seguito mantengono tutti la cache. Se [esaurisci i crediti di utilizzo](https://code.claude.com/docs/it/fast-mode.md#handle-rate-limits) a metà sessione, Claude Code riprova ogni richiesta in modalità veloce rifiutata alla velocità standard nello stesso modo, quindi questo fallback mantiene anche la cache. `/clear` e `/compact` ripristinano questo, poiché ricostruiscono la cache in quei punti comunque.105* Se la attivi mentre Claude sta lavorando, quel turno termina alla velocità standard, e paghi l'eventuale lettura non memorizzata nella cache sulla prima richiesta del tuo turno successivo.

106* Se il tuo modello attuale non supporta la modalità veloce, l'abilitazione della modalità veloce [ti fa passare anche a Opus](https://code.claude.com/docs/it/fast-mode.md#toggle-fast-mode). Quel [cambio di modello](#switching-models) avvia di per sé una cache nuova dalla richiesta successiva nel turno in esecuzione.

107 

108Ogni attivazione/disattivazione successiva legge senza cache tutto ciò che la velocità a cui passi non ha memorizzato nella cache. Anche i cambi di velocità che Claude Code effettua da solo, come il [fallback alla velocità standard](https://code.claude.com/docs/it/fast-mode.md#handle-rate-limits) dopo un rate limit e il successivo ritorno alla modalità veloce, contano come attivazioni/disattivazioni.

106 109 

107### Connessione o rimozione di un server MCP110### Connessione o rimozione di un server MCP

108 111 


184>187>

185> La compattazione funziona a tuo favore quando il contesto che scarta è contenuto che non ti serve più. Per scegliere quando il suo sovraccarico accade, esegui `/compact` a una pausa naturale nel tuo lavoro, ad esempio tra le attività, invece di aspettare che la compattazione automatica si attivi a metà attività. Se sei andato su un percorso che vuoi abbandonare completamente, [`/rewind`](#rewinding-the-conversation) a un turno precedente. Il riavvolgimento tronca a un prefisso che è già memorizzato nella cache, piuttosto che costruirne uno nuovo come fa la compattazione.188> La compattazione funziona a tuo favore quando il contesto che scarta è contenuto che non ti serve più. Per scegliere quando il suo sovraccarico accade, esegui `/compact` a una pausa naturale nel tuo lavoro, ad esempio tra le attività, invece di aspettare che la compattazione automatica si attivi a metà attività. Se sei andato su un percorso che vuoi abbandonare completamente, [`/rewind`](#rewinding-the-conversation) a un turno precedente. Il riavvolgimento tronca a un prefisso che è già memorizzato nella cache, piuttosto che costruirne uno nuovo come fa la compattazione.

186 189 

187Se lasci inattiva una conversazione lunga in una sessione del terminale mentre usa il [TTL di un'ora](#which-ttl-each-request-gets), Claude Code può compattarla poco prima che la cache scada. Per disattivare la compattazione in caso di inattività, imposta [`idleCompaction`](https://code.claude.com/docs/it/settings-reference#idlecompaction) su `false`, il che richiede Claude Code v2.1.290 o successiva.190Se lasci inattiva una conversazione lunga mentre usa il [TTL di un'ora](#which-ttl-each-request-gets), Claude Code può compattarla. Per disattivare la compattazione in caso di inattività, imposta [`idleCompaction`](https://code.claude.com/docs/it/settings-reference#idlecompaction) su `false`, il che richiede Claude Code v2.1.290 o successiva.

188 191 

189### Accumulo di molte immagini192### Accumulo di molte immagini

190 193 


309 312 

310In Claude Code, la cache è effettivamente scoped a una macchina e una directory. Il prompt di sistema incorpora i tuoi percorsi di memoria automatica, e la conversazione si apre con un annuncio della directory di lavoro, della piattaforma, della shell e della versione del sistema operativo. Due sessioni in directory diverse quindi costruiscono prefissi diversi e si perdono la cache l'una dell'altra.313In Claude Code, la cache è effettivamente scoped a una macchina e una directory. Il prompt di sistema incorpora i tuoi percorsi di memoria automatica, e la conversazione si apre con un annuncio della directory di lavoro, della piattaforma, della shell e della versione del sistema operativo. Due sessioni in directory diverse quindi costruiscono prefissi diversi e si perdono la cache l'una dell'altra.

311 314 

312Le sessioni che esegui in parallelo nella stessa directory costruiscono prefissi corrispondenti e leggono la cache l'una dell'altra. Le sessioni sequenziali condividono il prefisso solo quando lo snapshot dello stato git all'avvio corrisponde, poiché ogni conversazione porta anche il ramo e i commit recenti da quello snapshot.315* Le sessioni che esegui in parallelo nella stessa directory costruiscono prefissi corrispondenti e possono leggere la cache l'una dell'altra.

316* Le sessioni sequenziali condividono il prefisso solo quando lo snapshot dello stato git acquisito all'avvio corrisponde, poiché ogni conversazione porta anche il branch e i commit recenti da quello snapshot.

317 

318La cache API sottostante è più ampia. Le cache sono isolate tra le organizzazioni e, su alcuni provider, [tra i workspace all'interno di un'organizzazione](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing). All'interno di questi confini, due richieste condividono una cache solo quando il modello, la [velocità](#turning-on-fast-mode) e il prefisso corrispondono.

313 319 

314La cache API sottostante è più ampia. Le cache sono isolate tra le organizzazioni e, su alcuni provider, [tra i workspace all'interno di un'organizzazione](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing). All'interno di questi confini, qualsiasi due richieste con lo stesso modello e prefisso leggono la stessa cache. Per i chiamanti dell'Agent SDK che eseguono flotte di processi automatizzati, vedi [improve prompt caching across users and machines](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines) per spostare la posizione della memoria automatica fuori dal prompt di sistema e condividere la voce della cache del prompt di sistema tra utenti e macchine.320Per i chiamanti dell'Agent SDK che eseguono flotte di processi automatizzati, vedi [migliorare il prompt caching tra utenti e macchine](https://code.claude.com/docs/it/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines) per spostare la posizione della memoria automatica fuori dal prompt di sistema.

315 321 

316## Verificare le prestazioni della cache322## Verificare le prestazioni della cache

317 323 

Details

179* **Diff delle tue modifiche**: quando la directory della sessione si trova in un repository git, il pannello diff di un dispositivo connesso mostra le tue modifiche. Su un ramo che ha commit davanti al ramo predefinito del repository, il pannello mostra le modifiche da quando il ramo si è separato da esso, incluse le tue modifiche non sottoposte a commit. Sul ramo predefinito stesso, o su un ramo che non è davanti a esso, il pannello mostra solo le tue modifiche non sottoposte a commit.179* **Diff delle tue modifiche**: quando la directory della sessione si trova in un repository git, il pannello diff di un dispositivo connesso mostra le tue modifiche. Su un ramo che ha commit davanti al ramo predefinito del repository, il pannello mostra le modifiche da quando il ramo si è separato da esso, incluse le tue modifiche non sottoposte a commit. Sul ramo predefinito stesso, o su un ramo che non è davanti a esso, il pannello mostra solo le tue modifiche non sottoposte a commit.

180* **Modello**: quando scegli un [modello](https://code.claude.com/docs/it/model-config.md) da un dispositivo connesso, Claude Code esegue la sessione su quel modello. Richiede Claude Code v2.1.238 o successivo. Un modello che scegli dal controllo del modello del dispositivo si applica solo alla sessione corrente. Quando invii `/model <name>` dal dispositivo a una sessione interattiva, Claude Code imposta anche il tuo valore predefinito per le nuove sessioni.180* **Modello**: quando scegli un [modello](https://code.claude.com/docs/it/model-config.md) da un dispositivo connesso, Claude Code esegue la sessione su quel modello. Richiede Claude Code v2.1.238 o successivo. Un modello che scegli dal controllo del modello del dispositivo si applica solo alla sessione corrente. Quando invii `/model <name>` dal dispositivo a una sessione interattiva, Claude Code imposta anche il tuo valore predefinito per le nuove sessioni.

181* **Livello di sforzo**: quando imposti il [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) da un dispositivo connesso, con `/effort` o il controllo dello sforzo del dispositivo, Claude Code lo applica alla sessione sulla tua macchina. Se hai fissato un livello con `CLAUDE_CODE_EFFORT_LEVEL`, la sessione mantiene quel livello, e Claude Code rifiuta una scelta diversa dal controllo dello sforzo. La scelta di un livello dal controllo dello sforzo richiede Claude Code v2.1.234 o successivo sulla tua macchina.181* **Livello di sforzo**: quando imposti il [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) da un dispositivo connesso, con `/effort` o il controllo dello sforzo del dispositivo, Claude Code lo applica alla sessione sulla tua macchina. Se hai fissato un livello con `CLAUDE_CODE_EFFORT_LEVEL`, la sessione mantiene quel livello, e Claude Code rifiuta una scelta diversa dal controllo dello sforzo. La scelta di un livello dal controllo dello sforzo richiede Claude Code v2.1.234 o successivo sulla tua macchina.

182* **Riconnessione dopo un errore di connessione**: esegui `/remote-control` per riconnetterti. Se la compattazione ha riscritto la conversazione o hai cambiato conversazioni con `/resume` nel frattempo, Claude Code archivia la sessione del server che stava utilizzando invece di lasciarla nell'elenco delle sessioni. Puoi comunque trovarla [filtrando le sessioni archiviate](https://code.claude.com/docs/it/claude-code-on-the-web.md#archive-sessions). Il cambio di conversazioni mentre un dispositivo è ancora connesso non archivia la sessione.182* **Riconnessione dopo un errore di connessione**: esegui `/remote-control` per riconnetterti. Se nel frattempo la compattazione ha riscritto la conversazione o hai cambiato conversazione con `/resume`, Claude Code archivia la sessione del server che stava utilizzando invece di lasciarla nell'elenco delle sessioni. Puoi comunque trovare quella sessione tra le tue [sessioni archiviate](https://code.claude.com/docs/it/claude-code-on-the-web.md#find-an-archived-session) su claude.ai/code. Cambiare conversazione mentre un dispositivo è ancora connesso non archivia la sessione.

183 183 

184### Abilitare Remote Control per tutte le sessioni184### Abilitare Remote Control per tutte le sessioni

185 185 


401 401 

402## Troubleshooting402## Troubleshooting

403 403 

404### "Remote Control disconnected" or "Can't reach"

405 

406Su [claude.ai/code](https://claude.ai/code) o nell'app Desktop, un messaggio **Remote Control disconnected** o **Can't reach** significa che il tuo browser o la tua app ha perso il contatto con Claude Code sul tuo computer. Nessuno dei due messaggi ti dice se Claude o un subagent che stavi osservando sta ancora lavorando sul tuo computer. Su quel computer, controlla in quale stato si trova Claude Code e segui il passaggio corrispondente per riconnetterti:

407 

408* **Una sessione interattiva mostra `Remote Control disconnected`**: segui [i passaggi di riconnessione per il motivo indicato in quella riga](#session-ended-elsewhere)

409* **Claude Code è in esecuzione e non mostra alcun errore**: una sessione interattiva si riconnette da sola non appena la macchina è attiva e online, quindi non devi fare nulla. Se hai usato `claude remote-control`, consulta **Extended network outage** in [Limitazioni](#limitations)

410* **Claude Code non è in esecuzione**: [avvialo di nuovo e ripristina la sessione](#resume-sessions-after-stopping-the-server)

411 

404### "Remote Control requires a claude.ai subscription"412### "Remote Control requires a claude.ai subscription"

405 413 

406Non sei connesso con un account claude.ai, oppure un'altra credenziale sta avendo la precedenza sul tuo accesso. Il messaggio assume una di queste forme:414Non sei connesso con un account claude.ai, oppure un'altra credenziale sta avendo la precedenza sul tuo accesso. Il messaggio assume una di queste forme:


463* **Con `/remote-control`, `claude --remote-control` o [auto-connect](#enable-remote-control-for-all-sessions)**: la sessione continua a funzionare senza Remote Control, e Claude Code la archivia su claude.ai471* **Con `/remote-control`, `claude --remote-control` o [auto-connect](#enable-remote-control-for-all-sessions)**: la sessione continua a funzionare senza Remote Control, e Claude Code la archivia su claude.ai

464* **Con `claude remote-control`**: il server si arresta e archivia le sessioni che stava servendo, quindi termina472* **Con `claude remote-control`**: il server si arresta e archivia le sessioni che stava servendo, quindi termina

465 473 

466Puoi comunque trovare una sessione archiviata [filtrando le sessioni archiviate](https://code.claude.com/docs/it/claude-code-on-the-web.md#archive-sessions).474Per ritrovare una di queste sessioni, apri le tue [sessioni archiviate](https://code.claude.com/docs/it/claude-code-on-the-web.md#find-an-archived-session) su claude.ai/code.

467 475 

468Remote Control non si riconnette da solo. Per riattivarlo dopo che la tua organizzazione lo consente di nuovo, esegui `/remote-control` nella sessione o `claude remote-control` nella tua shell. Entrambi i comandi falliscono con [`Remote Control is disabled by your organization's policy`](#remote-control-is-disabled-by-your-organizations-policy) finché Claude Code su questa macchina non ha recuperato la policy modificata. Una sessione aperta la recupera circa una volta all'ora. Per scoprire cosa sta bloccando Remote Control, confronta il testo completo stampato dal comando con quella voce.476Remote Control non si riconnette da solo. Per riattivarlo dopo che la tua organizzazione lo consente di nuovo, esegui `/remote-control` nella sessione o `claude remote-control` nella tua shell. Entrambi i comandi falliscono con [`Remote Control is disabled by your organization's policy`](#remote-control-is-disabled-by-your-organizations-policy) finché Claude Code su questa macchina non ha recuperato la policy modificata. Una sessione aperta la recupera circa una volta all'ora. Per scoprire cosa sta bloccando Remote Control, confronta il testo completo stampato dal comando con quella voce.

469 477 

routines.md +24 −4

Details

293 293 

294#### Eventi supportati294#### Eventi supportati

295 295 

296I trigger GitHub possono sottoscriversi a una delle seguenti categorie di eventi. All'interno di ogni categoria puoi scegliere un'azione specifica, come `pull_request.opened`, oppure reagire a tutte le azioni della categoria.296Scegli un evento da una qualsiasi delle seguenti categorie. All'interno di ogni categoria puoi scegliere un'azione specifica, come `pull_request.opened`, oppure reagire a tutte le azioni della categoria.

297 297 

298| Event | Triggers when |298| Event | Triggers when |

299| :- | :- |299| :- | :- |

300| Pull request | Una PR viene aperta, chiusa, assegnata, etichettata, sincronizzata o altrimenti aggiornata |300| Pull request | Una PR viene aperta, chiusa, assegnata, etichettata, sincronizzata o altrimenti aggiornata |

301| Release | Una release viene creata, pubblicata, modificata o eliminata |301| Release | Una release viene creata, pubblicata, modificata o eliminata |

302| Issue | Una issue viene aperta, modificata, chiusa, riaperta, etichettata, assegnata o altrimenti aggiornata |

302 303 

303#### Filtrare le pull request304#### Filtrare le pull request

304 305 


333 334 

334Fai clic su qualsiasi esecuzione per aprirla come sessione completa. Da lì puoi vedere cosa ha fatto Claude, rivedere le modifiche, creare una pull request o continuare la conversazione. Ogni sessione di esecuzione funziona come qualsiasi altra sessione: usa il menu a discesa accanto al titolo della sessione per rinominarla, archiviarla o eliminarla.335Fai clic su qualsiasi esecuzione per aprirla come sessione completa. Da lì puoi vedere cosa ha fatto Claude, rivedere le modifiche, creare una pull request o continuare la conversazione. Ogni sessione di esecuzione funziona come qualsiasi altra sessione: usa il menu a discesa accanto al titolo della sessione per rinominarla, archiviarla o eliminarla.

335 336 

336> [!NOTE]337In **History** nella pagina di dettaglio dell'attività, la riga di ogni esecuzione terminata si chiude con **Error** se l'esecuzione non è riuscita, con **Cancelled** se è stata annullata e con nessuna delle due parole se è riuscita. Il filtro **Status** chiama gli stessi tre esiti **Failed**, **Cancelled** e **Succeeded**. Questi esiti indicano come si è conclusa la sessione, non se Claude ha completato il lavoro descritto dal tuo prompt, quindi apri l'esecuzione e leggine la trascrizione per vedere cosa è successo.

337>338 

338> Uno stato verde nell'elenco delle esecuzioni significa che la sessione è stata avviata e si è chiusa senza un errore infrastrutturale. Non significa che il lavoro descritto dal tuo prompt sia riuscito. Apri l'esecuzione per leggere la trascrizione e verificare cosa ha effettivamente fatto Claude. Le richieste di rete bloccate, gli strumenti dei connettori mancanti e gli errori nel lavoro stesso compaiono lì anziché nell'indicatore di stato.339* **Succeeded**: la sessione si è conclusa senza che Claude Code segnalasse un errore. Le richieste di rete bloccate, gli strumenti dei connettori mancanti e il lavoro che Claude non è riuscito a completare compaiono nella trascrizione anziché nella riga

340* **Failed**: la sessione non si è conclusa normalmente. Ad esempio, si è interrotta inaspettatamente, è terminata con un errore o è stata archiviata prima dell'avvio dell'esecuzione

341* **Cancelled**: l'esecuzione non è fallita e la sua sessione è stata archiviata. Se archivi la sessione di un'esecuzione riuscita, l'esecuzione passa a **Cancelled**. Non è necessario modificare nulla nell'attività

342 

343Se compare un avviso in **History**, consulta [Avvisi «The last run»](#the-last-run-didnt-start).

339 344 

340### Modificare e controllare le attività pianificate345### Modificare e controllare le attività pianificate

341 346 


499 504 

500Probabilmente un Owner della tua organizzazione Team o Enterprise ha disattivato l'interruttore **Scheduled tasks (Was Routines)** in [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). Su Claude Code v2.1.227 o successivo, lo stesso interruttore nasconde anche `/schedule` nella CLI. Si tratta di un'impostazione dell'organizzazione lato server, quindi non può essere sovrascritta dalla tua configurazione locale. Chiedi a un Owner di riattivare le attività pianificate per la tua organizzazione.505Probabilmente un Owner della tua organizzazione Team o Enterprise ha disattivato l'interruttore **Scheduled tasks (Was Routines)** in [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). Su Claude Code v2.1.227 o successivo, lo stesso interruttore nasconde anche `/schedule` nella CLI. Si tratta di un'impostazione dell'organizzazione lato server, quindi non può essere sovrascritta dalla tua configurazione locale. Chiedi a un Owner di riattivare le attività pianificate per la tua organizzazione.

501 506 

507### Avvisi "The last run"

508 

509Quando un avviso in **History** inizia con "The last run", trovalo nella prima colonna e fai ciò che indica la sua riga. L'avviso scompare non appena si avvia un'esecuzione successiva.

510 

511| Avviso | Cosa fare |

512| :- | :- |

513| "The last run didn't start because your organization had reached its limit on cloud sessions running at once." | L'attività non richiede modifiche. Fai clic su **Run now** più tardi, oppure attendi l'esecuzione successiva |

514| "The last run didn't start because its cloud environment couldn't be found or used." | Nella pagina dei dettagli dell'attività, apri il menu accanto al suo nome, seleziona **Edit** e trova il [selettore dell'ambiente cloud](#environments-and-network-access). Se indica **Unavailable environment**, quell'ambiente è stato archiviato o non è più disponibile per il tuo account, quindi scegline un altro lì e salva le modifiche. Altrimenti, riprova con **Run now** nella pagina dei dettagli, oppure scegli un altro ambiente nel selettore e salva le modifiche |

515| "The last run was blocked because it couldn't access something it needs, or your organization's policy doesn't allow it." | Verifica che il tuo [accesso a GitHub](#repositories-and-branch-permissions) copra i repository dell'attività. Se è così, chiedi a un [Owner](https://code.claude.com/docs/it/server-managed-settings.md#access-control) della tua organizzazione Claude se una policy blocca l'attività |

516| "The last run didn't start because of a problem that's usually temporary." | Fai clic su **Run now** per riprovare, oppure attendi l'esecuzione successiva |

517| "The last run didn't start because its repository or branch wasn't available." | Verifica su GitHub che ogni repository dell'attività abbia il [branch da cui parte l'esecuzione](#repositories-and-branch-permissions). Verifica anche che il tuo [accesso a GitHub](#repositories-and-branch-permissions) copra ogni repository e ricollega GitHub se la connessione è scaduta |

518| "The last run didn't start because some of its settings weren't accepted." | Nella pagina dei dettagli dell'attività, apri il menu accanto al suo nome e seleziona **Edit**. La finestra di dialogo non indica quale impostazione non è stata accettata, quindi controllale tutte lì, inclusi nome, prompt, modello, repository, ambiente, connettori e trigger dell'attività |

519| "The last run stopped because a usage limit was reached." | Per sapere quando le esecuzioni dell'attività possono ripartire dopo un limite di utilizzo, consulta [Utilizzo e limiti](#usage-and-limits) |

520| "The last run failed." | Fai clic su **Run now** per riprovare, oppure attendi l'esecuzione successiva. L'esecuzione non riuscita non ha una sessione da aprire |

521 

502## Risorse correlate522## Risorse correlate

503 523 

504* [`/loop` e pianificazione all'interno della sessione](https://code.claude.com/docs/it/scheduled-tasks): pianifica attività locali all'interno di una sessione CLI aperta524* [`/loop` e pianificazione all'interno della sessione](https://code.claude.com/docs/it/scheduled-tasks): pianifica attività locali all'interno di una sessione CLI aperta

Details

181 181 

182* [Sandboxing](https://code.claude.com/docs/it/sandboxing.md): configura lo sandboxed Bash tool integrato182* [Sandboxing](https://code.claude.com/docs/it/sandboxing.md): configura lo sandboxed Bash tool integrato

183* [Dev container](https://code.claude.com/docs/it/devcontainer.md): il container di sviluppo Docker preconfigurato183* [Dev container](https://code.claude.com/docs/it/devcontainer.md): il container di sviluppo Docker preconfigurato

184* [Security](https://code.claude.com/docs/it/security.md): il modello di sicurezza completo di Claude Code184* [Sicurezza](https://code.claude.com/docs/it/security.md): il modello di sicurezza completo di Claude Code

185* [Secure deployment](https://code.claude.com/docs/it/agent-sdk/secure-deployment.md): guida all'isolamento per le applicazioni Agent SDK185* [Distribuzione sicura](https://code.claude.com/docs/it/agent-sdk/secure-deployment.md): guida all'isolamento per le applicazioni Agent SDK

186* [Settings](https://code.claude.com/docs/it/settings-reference.md#sandbox-settings): tutte le chiavi di configurazione sandbox, inclusa la consegna di managed settings186* [Impostazioni](https://code.claude.com/docs/it/settings-reference.md#sandbox-settings): tutte le chiavi di configurazione sandbox, inclusa la consegna delle impostazioni gestite

sandboxing.md +26 −2

Details

223* **Una regola ask per il parametro**: aggiungi una [regola ask](https://code.claude.com/docs/it/permissions.md#match-by-input-parameter) per `Bash(dangerouslyDisableSandbox:true)` per ricevere una richiesta di conferma sui nuovi tentativi Bash. Ricevi la richiesta anche in modalità auto e in modalità `bypassPermissions`, e la regola ha la precedenza su una regola allow corrispondente223* **Una regola ask per il parametro**: aggiungi una [regola ask](https://code.claude.com/docs/it/permissions.md#match-by-input-parameter) per `Bash(dangerouslyDisableSandbox:true)` per ricevere una richiesta di conferma sui nuovi tentativi Bash. Ricevi la richiesta anche in modalità auto e in modalità `bypassPermissions`, e la regola ha la precedenza su una regola allow corrispondente

224* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: [Azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) descrive i nuovi tentativi che chiedono conferma mentre è attiva224* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: [Azioni che nessuna modalità approva automaticamente](https://code.claude.com/docs/it/permission-modes.md#actions-no-mode-auto-approves) descrive i nuovi tentativi che chiedono conferma mentre è attiva

225 225 

226Mentre i comandi vengono rifiutati con un [messaggio `Sandbox is required`](#commands-refused-with-sandbox-is-required), Claude Code ignora il parametro `dangerouslyDisableSandbox` e rifiuta anche il nuovo tentativo.

227 

226#### Disattivare il nuovo tentativo con la modalità sandbox rigorosa228#### Disattivare il nuovo tentativo con la modalità sandbox rigorosa

227 229 

228Puoi disabilitare il nuovo tentativo fuori dalla sandbox impostando `"allowUnsandboxedCommands": false` nelle tue [impostazioni della sandbox](https://code.claude.com/docs/it/settings-reference.md#sandbox-settings). Con il nuovo tentativo disabilitato, Claude Code ignora il parametro `dangerouslyDisableSandbox`. Mentre la sandbox è in esecuzione, i comandi eseguiti da Claude vengono quindi eseguiti in sandbox, a meno che non corrispondano a una voce di `excludedCommands`. Per impedire a Claude Code di eseguire comandi fuori dalla sandbox quando la sandbox non può avviarsi, imposta anche [`failIfUnavailable`](https://code.claude.com/docs/it/settings-reference#sandbox-failifunavailable). La scheda **Overrides** di `/sandbox` mostra questa impostazione come **Strict sandbox mode**.230Puoi disabilitare il nuovo tentativo fuori dalla sandbox impostando `"allowUnsandboxedCommands": false` nelle tue [impostazioni della sandbox](https://code.claude.com/docs/it/settings-reference.md#sandbox-settings). Con il nuovo tentativo disabilitato, Claude Code ignora il parametro `dangerouslyDisableSandbox`. Mentre la sandbox è in esecuzione, i comandi eseguiti da Claude vengono quindi eseguiti in sandbox, a meno che non corrispondano a una voce di `excludedCommands`. Per impedire a Claude Code di eseguire comandi fuori dalla sandbox quando la sandbox non può avviarsi, imposta anche [`failIfUnavailable`](https://code.claude.com/docs/it/settings-reference#sandbox-failifunavailable). La scheda **Overrides** di `/sandbox` mostra questa impostazione come **Strict sandbox mode**.


899 901 

900### Compaiono file di sola lettura da 0 byte nei percorsi delle impostazioni `.claude`, e "Sì, e non chiedere più" non salva902### Compaiono file di sola lettura da 0 byte nei percorsi delle impostazioni `.claude`, e "Sì, e non chiedere più" non salva

901 903 

902Su Linux e WSL2, la sandbox mantiene un divieto di scrittura su un file che non esiste ancora creando in quel punto un placeholder di sola lettura da 0 byte mentre viene eseguito un comando sandboxato. La sandbox rimuove il placeholder in seguito. Se una sessione viene terminata prima che venga eseguita quella pulizia, ad esempio da SIGKILL, i placeholder rimangono. Le sessioni successive eseguono di nuovo il bind dei placeholder in sola lettura a ogni avvio, quindi una scrittura delle impostazioni, come il salvataggio di una scelta di permesso, fallisce in un percorso in cui rimane un placeholder.904Su Linux e WSL2, la sandbox mantiene un divieto di scrittura su un file che non esiste ancora creando in quel punto un placeholder di sola lettura da 0 byte mentre viene eseguito un comando sandboxato. La sandbox rimuove il placeholder in seguito.

905 

906Un placeholder rimane in casi come questi:

907 

908* La sessione viene terminata prima che venga eseguita quella pulizia, ad esempio da SIGKILL

909* La sessione termina mentre un comando sandboxato è ancora in esecuzione, come un comando in background

903 910 

904Esegui `claude doctor` nel tuo terminale per elencare i file placeholder rimasti. L'avviso [`Sandbox mask files left behind at write-deny paths`](https://code.claude.com/docs/it/errors#stale-sandbox-mask-files-left-by-a-killed-session) ne indica alcuni e conta i restanti. Elimina ciascun file con `rm` mentre nessun'altra sessione di Claude Code è in esecuzione in quel progetto. Prima della v2.1.257, Claude Code lasciava gli stessi placeholder senza segnalarli.911Le sessioni successive eseguono di nuovo il bind dei placeholder in sola lettura a ogni avvio, quindi una scrittura delle impostazioni, come il salvataggio di una scelta di permesso, fallisce in un percorso in cui rimane un placeholder.

912 

913Esegui `claude doctor` nel tuo terminale per elencare i file placeholder rimasti. L'avviso [`Sandbox mask files left behind at write-deny paths`](https://code.claude.com/docs/it/errors#stale-sandbox-mask-files-left-by-a-killed-session) ne indica alcuni e conta i restanti. Elimina ciascun file con `rm` mentre nessun'altra sessione di Claude Code è in esecuzione in quel progetto. Prima della v2.1.257, Claude Code lasciava gli stessi placeholder quando una sessione veniva terminata, senza segnalarli.

905 914 

906### `git` su SSH fallisce con la sandbox attiva915### `git` su SSH fallisce con la sandbox attiva

907 916 


1000 1009 

1001Prima della v2.1.284, il proxy si connetteva a qualsiasi indirizzo in cui si risolvesse un hostname consentito.1010Prima della v2.1.284, il proxy si connetteva a qualsiasi indirizzo in cui si risolvesse un hostname consentito.

1002 1011 

1012### I comandi vengono rifiutati con `Sandbox is required`

1013 

1014Se richiedi la sandbox con [`sandbox.failIfUnavailable`](https://code.claude.com/docs/it/settings-reference#sandbox-failifunavailable) e questa fallisce in uno di questi modi dopo l'avvio di Claude Code, ogni comando sandboxato eseguito da Claude viene rifiutato con il messaggio indicato. La sessione continua, e il comando rifiutato non viene eseguito al di fuori della sandbox:

1015 

1016* **`Sandbox is required but failed to initialize: <reason>`**: Claude Code si è avviato, ma la sandbox non è poi riuscita a inizializzarsi. Esegui il passaggio indicato dal messaggio: `Restart to retry.` o `Fix the sandbox settings to retry`.

1017* **`Sandbox is required (sandbox.failIfUnavailable) and stopped being available in this session: <reason>`**: su Linux o WSL2, la sandbox si è avviata e Claude Code ha poi rilevato una dipendenza mancante. Correggi quanto indicato dal motivo, ad esempio [installando una dipendenza mancante](#set-up-linux-and-wsl2), quindi riavvia Claude Code.

1018 

1019I comandi esclusi e i comandi che digiti tu stesso continuano a essere eseguiti, e Claude non può riprovare un comando rifiutato al di fuori della sandbox:

1020 

1021* **Comandi esclusi**: i comandi che corrispondono a una voce di [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) continuano a essere eseguiti al di fuori della sandbox. Quando uno di essi scrive in un percorso di [`filesystem.allowWrite`](https://code.claude.com/docs/it/settings-reference#sandbox-filesystem-allowwrite) al di fuori della tua directory di lavoro, quella scrittura passa attraverso il normale flusso dei permessi. Con una [sandbox obbligatoria per l'amministratore](#repository-settings-under-an-admin-required-sandbox), Claude Code ignora le voci provenienti dalle impostazioni del repository

1022* **Comandi che digiti al [prompt della modalità shell `!`](https://code.claude.com/docs/it/interactive-mode#shell-mode-with-prefix)**: continuano a essere eseguiti al di fuori della sandbox. In una [sessione in background](https://code.claude.com/docs/it/agent-view.md), vengono rifiutati anch'essi

1023* **Nuovi tentativi fuori dalla sandbox**: Claude Code ignora il parametro `dangerouslyDisableSandbox` di un [nuovo tentativo fuori dalla sandbox](#the-unsandboxed-retry-escape-hatch)

1024 

1025In una sessione Linux con `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` impostato, ogni comando viene eseguito nella sandbox, quindi anche i comandi esclusi e quelli che digiti vengono rifiutati.

1026 

1003### `/sandbox` fallisce con `Sandbox settings are overridden by a higher-priority configuration`1027### `/sandbox` fallisce con `Sandbox settings are overridden by a higher-priority configuration`

1004 1028 

1005`/sandbox` stampa `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` invece di aprire il suo pannello quando un [livello di impostazioni](https://code.claude.com/docs/it/settings.md#settings-precedence) superiore imposta `sandbox.enabled`, `sandbox.autoAllowBashIfSandboxed` o `sandbox.allowUnsandboxedCommands`. Il pannello salva le tue scelte in `.claude/settings.local.json`, e un valore salvato lì non può sovrascrivere quei livelli.1029`/sandbox` stampa `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` invece di aprire il suo pannello quando un [livello di impostazioni](https://code.claude.com/docs/it/settings.md#settings-precedence) superiore imposta `sandbox.enabled`, `sandbox.autoAllowBashIfSandboxed` o `sandbox.allowUnsandboxedCommands`. Il pannello salva le tue scelte in `.claude/settings.local.json`, e un valore salvato lì non può sovrascrivere quei livelli.

Details

784 784 

785Per l'ordine in cui si applicano queste fonti, consulta [precedenza delle impostazioni](https://code.claude.com/docs/it/settings.md#settings-precedence).785Per l'ordine in cui si applicano queste fonti, consulta [precedenza delle impostazioni](https://code.claude.com/docs/it/settings.md#settings-precedence).

786 786 

787Quando il control plane di Anthropic fornisce a una sessione degli [hook di Claude Code](https://code.claude.com/docs/it/hooks.md), il runner li installa accanto alla tua configurazione, non al suo posto. Richiede Claude Code v2.1.229 o versioni successive.787Quando il control plane di Anthropic fornisce a una sessione degli [hook di Claude Code](https://code.claude.com/docs/it/hooks.md), il runner li installa accanto alla tua configurazione, non al suo posto. Richiede Claude Code v2.1.229 o versioni successive; i runner meno recenti ignorano gli hook forniti. Gli hook forniti eseguono `python3`, quindi installa `python3` nella tua [immagine del runner](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#build-the-runner-image).

788 788 

789* **Dove vengono collocati**: il runner scrive ogni script hook fornito in una sottodirectory riservata `hooks/.ccr-launcher/` della directory di configurazione della sessione e registra gli script in un file di impostazioni separato che passa alla sessione con `--settings`, lasciando intatti il `settings.json` popolato e i tuoi script in `hooks/<name>`. Il runner ricrea la sottodirectory riservata per ogni sessione e non copia nelle sessioni il contenuto dell'host presente in `~/.claude/hooks/.ccr-launcher/`.789* **Dove vengono collocati**: il runner scrive ogni script hook fornito in una sottodirectory riservata `hooks/.ccr-launcher/` della directory di configurazione della sessione e registra gli script in un file di impostazioni separato che passa alla sessione con `--settings`, lasciando intatti il `settings.json` popolato e i tuoi script in `hooks/<name>`. Il runner ricrea la sottodirectory riservata per ogni sessione e non copia nelle sessioni il contenuto dell'host presente in `~/.claude/hooks/.ccr-launcher/`.

790* **Chi li crea**: il control plane popola gli script a partire da costanti fisse nel proprio deploy, mai da input per sessione o di terze parti.790* **Chi li crea**: il control plane popola gli script a partire da costanti fisse nel proprio deploy, mai da input per sessione o di terze parti.

Details

348 348 

349Le ricette di seguito usano `--capacity 4`, in modo che un container serva fino a quattro sessioni concorrenti dallo stesso owner bloccato. Questo non fornisce l'isolamento del container per sessione nella [sezione hardening](#harden-your-deployment): prima di connettere un ambiente ai sistemi di produzione, esegui le ricette a `--capacity 1` con un container per sessione, o usa [runner on-demand](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#on-demand-runners), che mantengono anche il segreto dell'ambiente lontano dagli host che eseguono sessioni. Se aggiungi il [proxy git Anthropic](#use-the-anthropic-git-proxy) a una di queste ricette, cambia anche `--capacity` a `1`.349Le ricette di seguito usano `--capacity 4`, in modo che un container serva fino a quattro sessioni concorrenti dallo stesso owner bloccato. Questo non fornisce l'isolamento del container per sessione nella [sezione hardening](#harden-your-deployment): prima di connettere un ambiente ai sistemi di produzione, esegui le ricette a `--capacity 1` con un container per sessione, o usa [runner on-demand](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#on-demand-runners), che mantengono anche il segreto dell'ambiente lontano dagli host che eseguono sessioni. Se aggiungi il [proxy git Anthropic](#use-the-anthropic-git-proxy) a una di queste ricette, cambia anche `--capacity` a `1`.

350 350 

351Questo Dockerfile è un punto di partenza minimo:351Questo Dockerfile è un punto di partenza minimo. Installa `python3` perché gli [hook che il control plane di Anthropic fornisce](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled) alle sessioni Claude Tag, incluso quello che fa pubblicare a Claude la sua risposta in Slack, eseguono `python3`. Mantieni `python3` nel `PATH` in qualsiasi immagine che serve sessioni Claude Tag:

352 352 

353```dockerfile theme={null}353```dockerfile theme={null}

354FROM debian:bookworm-slim354FROM debian:bookworm-slim

355ARG CLAUDE_CODE_VERSION355ARG CLAUDE_CODE_VERSION

356RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \356RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq python3 \

357 && rm -rf /var/lib/apt/lists/*357 && rm -rf /var/lib/apt/lists/*

358RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \358RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

359 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude359 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude


363ENTRYPOINT ["claude"]363ENTRYPOINT ["claude"]

364```364```

365 365 

366Scambia `linux-x64` con `linux-arm64` se i tuoi nodi sono ARM, o con `linux-x64-musl` o `linux-arm64-musl` su un'immagine basata su musl come Alpine; vedi [Configurazione Alpine Linux](https://code.claude.com/docs/it/setup.md#alpine-linux-and-musl-based-distributions) per i pacchetti extra di cui le immagini musl hanno bisogno. L'URL è la posizione di rilascio standard di Claude Code, quindi puoi verificare il binario scaricato rispetto al manifesto firmato del rilascio come descritto in [Integrità binaria e firma del codice](https://code.claude.com/docs/it/setup.md#binary-integrity-and-code-signing). Il runner richiede Claude Code versione 2.1.224 o successiva. Costruisci l'immagine, quindi spingila al tuo registro e fai riferimento ad essa nelle ricette di seguito:366Scambia `linux-x64` con `linux-arm64` se i tuoi nodi sono ARM, o con `linux-x64-musl` o `linux-arm64-musl` su un'immagine basata su musl come Alpine; vedi [Configurazione Alpine Linux](https://code.claude.com/docs/it/setup.md#alpine-linux-and-musl-based-distributions) per i pacchetti extra di cui le immagini musl hanno bisogno. L'URL è la posizione di rilascio standard di Claude Code, quindi puoi verificare il binario scaricato rispetto al manifesto firmato del rilascio come descritto in [Integrità binaria e firma del codice](https://code.claude.com/docs/it/setup.md#binary-integrity-and-code-signing). Il runner richiede Claude Code versione 2.1.224 o successiva, oppure 2.1.229 o successiva per servire sessioni Claude Tag. Esegui la build dell'immagine, quindi spingila al tuo registro e fai riferimento ad essa nelle ricette di seguito:

367 367 

368```bash theme={null}368```bash theme={null}

369docker build \369docker build \


768 * **Con un hook `checkout`**: i repository estratti tramite un [hook del ciclo di vita `checkout`](https://code.claude.com/docs/it/self-hosted-environments-configuration#checkout) non vengono sottoposti a push. Crea invece uno snapshot di questi repository dall'[hook `post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session).768 * **Con un hook `checkout`**: i repository estratti tramite un [hook del ciclo di vita `checkout`](https://code.claude.com/docs/it/self-hosted-environments-configuration#checkout) non vengono sottoposti a push. Crea invece uno snapshot di questi repository dall'[hook `post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session).

769 * **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.769 * **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.

770 * **Le modifiche senza commit vengono comunque perse**: per chiedere a Claude di fare il commit e il push quando finisce di rispondere, vedi [Chiedere alle sessioni di eseguire il push del proprio lavoro](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)770 * **Le modifiche senza commit vengono comunque perse**: per chiedere a Claude di fare il commit e il push quando finisce di rispondere, vedi [Chiedere alle sessioni di eseguire il push del proprio lavoro](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)

771* **Un comando interrotto dalla perdita di un runner può essere eseguito di nuovo**: quando la sessione riprende su un altro runner, Claude vede la chiamata allo strumento interrotta con un risultato che indica che il suo esito è sconosciuto.

771* **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.772* **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.

772* **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.773* **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.

773* **Quando qualcuno archivia o elimina una sessione, o rilascia il suo runner dal menu della sessione**: non fare affidamento sul push di [`--push-outcome-on-release`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags). Per salvare i commit in questi casi, esegui il push di `HEAD` su un branch di recupero da un [hook `post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session). Se parti dall'esempio presente lì, fai in modo che esegua il push anche quando non ci sono modifiche senza commit, perché esegue il push solo dopo un commit di snapshot.774* **Quando qualcuno archivia o elimina una sessione, o rilascia il suo runner dal menu della sessione**: non fare affidamento sul push di [`--push-outcome-on-release`](https://code.claude.com/docs/it/self-hosted-environments-reference#runner-cli-flags). Per salvare i commit in questi casi, esegui il push di `HEAD` su un branch di recupero da un [hook `post-session`](https://code.claude.com/docs/it/self-hosted-environments-configuration#post-session). Se parti dall'esempio presente lì, fai in modo che esegua il push anche quando non ci sono modifiche senza commit, perché esegue il push solo dopo un commit di snapshot.


824 Una volta aggiornato il runner o corretta la causa, riprova la sessione o avviane una nuova. Se nessuno di questi controlli individua la causa, [segnala un problema](#report-an-issue).825 Una volta aggiornato il runner o corretta la causa, riprova la sessione o avviane una nuova. Se nessuno di questi controlli individua la causa, [segnala un problema](#report-an-issue).

825 826 

826 Per l'origine a cui la sessione invia i risultati, un branch eliminato fa fallire la sessione. Per un'origine git che la sessione legge soltanto, il runner salta quell'origine e continua con le rimanenti. Il runner fa fallire la sessione quando saltare l'origine la lascerebbe senza alcun repository. Prima della v2.1.228, una sessione di questo tipo si avviava in una directory vuota.827 Per l'origine a cui la sessione invia i risultati, un branch eliminato fa fallire la sessione. Per un'origine git che la sessione legge soltanto, il runner salta quell'origine e continua con le rimanenti. Il runner fa fallire la sessione quando saltare l'origine la lascerebbe senza alcun repository. Prima della v2.1.228, una sessione di questo tipo si avviava in una directory vuota.

828* **Claude Tag a volte non pubblica la sua risposta in Slack**: il promemoria di risposta è un [hook fornito dal control plane](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Verifica con `claude --version` che il runner sia Claude Code v2.1.229 o successivo, poiché i runner meno recenti ignorano gli hook forniti; verifica che `python3 --version` riesca all'interno dell'immagine del runner, poiché gli hook eseguono `python3`; e verifica che nessun file di impostazioni disattivi gli hook, che si tratti di `disableAllHooks` in `managed-settings.json`, nel `~/.claude/settings.json` dell'utente del runner o nel `.claude/settings.json` o `.claude/settings.local.json` del repository, oppure di `allowManagedHooksOnly` o di uno [`strictPluginOnlyCustomization`](https://code.claude.com/docs/it/settings-reference#strictpluginonlycustomization) che copre gli hook nelle impostazioni gestite.

827* **Una sessione inizia senza uno dei suoi repository**: su un runner senza un [hook `checkout`](https://code.claude.com/docs/it/self-hosted-environments-configuration#checkout), l'host git può rifiutare il controllo di accesso del runner per un repository che la sessione legge solo. Il runner quindi salta quel repository, registra una riga `[runner:warn] could not access context source` che nomina il rifiuto, e avvia la sessione su quelli rimanenti.829* **Una sessione inizia senza uno dei suoi repository**: su un runner senza un [hook `checkout`](https://code.claude.com/docs/it/self-hosted-environments-configuration#checkout), l'host git può rifiutare il controllo di accesso del runner per un repository che la sessione legge solo. Il runner quindi salta quel repository, registra una riga `[runner:warn] could not access context source` che nomina il rifiuto, e avvia la sessione su quelli rimanenti.

828 830 

829 Il runner salta solo un rifiuto chiaro: l'host risponde che il repository non è stato trovato, git non trova credenziali per l'host, o l'autenticazione fallisce. Un errore di rete, un timeout, o un HTTP `403` comunque fa fallire l'avvio della sessione, così come un rifiuto per un repository a cui la sessione spinge i risultati. Il runner comunque fa fallire una sessione che saltare lascerebbe senza alcun repository. Con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), il runner salta solo un repository che il git proxy stesso nega.831 Il runner salta solo un rifiuto chiaro: l'host risponde che il repository non è stato trovato, git non trova credenziali per l'host, o l'autenticazione fallisce. Un errore di rete, un timeout, o un HTTP `403` comunque fa fallire l'avvio della sessione, così come un rifiuto per un repository a cui la sessione spinge i risultati. Il runner comunque fa fallire una sessione che saltare lascerebbe senza alcun repository. Con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), il runner salta solo un repository che il git proxy stesso nega.

Details

35 35 

36Installa sull'host prima di iniziare:36Installa sull'host prima di iniziare:

37 37 

38* **Claude Code v2.1.224 o successivo**, con uno qualsiasi dei [metodi di installazione standard](https://code.claude.com/docs/it/setup.md). Il runner fa parte del binario `claude` standard, e le versioni precedenti non riconoscono il subcommand `self-hosted-runner`. Per fissare la versione esatta che la tua fleet esegue, vedi [Installa una versione specifica](https://code.claude.com/docs/it/setup.md#install-a-specific-version). Per le immagini container, vedi il Dockerfile in [Distribuisci in produzione](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#build-the-runner-image).38* **Claude Code v2.1.224 o successivo**, con uno qualsiasi dei [metodi di installazione standard](https://code.claude.com/docs/it/setup.md). Il runner fa parte del binario `claude` standard, e le versioni precedenti non riconoscono il subcommand `self-hosted-runner`. Un runner che serve sessioni Claude Tag richiede la v2.1.229 o successiva e `python3` nel suo `PATH`, poiché gli [hook forniti dal control plane](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled) per quelle sessioni eseguono `python3`. Per fissare la versione esatta che la tua fleet esegue, vedi [Installa una versione specifica](https://code.claude.com/docs/it/setup.md#install-a-specific-version). Per le immagini container, vedi il Dockerfile in [Distribuisci in produzione](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#build-the-runner-image).

39* **Git 2.24 o più recente**. Alcune opzioni git nella pagina di distribuzione richiedono versioni più recenti; [Configura git](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#configure-git) indica ogni limite.39* **Git 2.24 o più recente**. Alcune opzioni git nella pagina di distribuzione richiedono versioni più recenti; [Configura git](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#configure-git) indica ogni limite.

40 40 

41Conferma che l'host è pronto:41Conferma che l'host è pronto:

Details

52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Ritira il runner a un timestamp Unix assoluto in secondi, per l'infrastruttura che uccide il runner a un'ora nota; [Runner lifecycle](https://code.claude.com/docs/it/self-hosted-environments#runner-lifecycle) descrive la sequenza di rilascio e come dimensionare il margine. I valori prima del 2001 o dopo l'anno 5138 vengono rifiutati dal flag e ignorati dalla variabile d'ambiente. |52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Ritira il runner a un timestamp Unix assoluto in secondi, per l'infrastruttura che uccide il runner a un'ora nota; [Runner lifecycle](https://code.claude.com/docs/it/self-hosted-environments#runner-lifecycle) descrive la sequenza di rilascio e come dimensionare il margine. I valori prima del 2001 o dopo l'anno 5138 vengono rifiutati dal flag e ignorati dalla variabile d'ambiente. |

53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Quali degli elenchi di regole del classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) che il control plane invia con una sessione possono raggiungere quella sessione: `all`, `no-allow` o `none`. Vedi [Elenchi di regole della modalità auto](#auto-mode-rule-lists) per cosa applica ciascun valore. Un valore non valido arresta il runner all'avvio. Richiede Claude Code v2.1.295 o successivo. |53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Quali degli elenchi di regole del classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) che il control plane invia con una sessione possono raggiungere quella sessione: `all`, `no-allow` o `none`. Vedi [Elenchi di regole della modalità auto](#auto-mode-rule-lists) per cosa applica ciascun valore. Un valore non valido arresta il runner all'avvio. Richiede Claude Code v2.1.295 o successivo. |

54| `--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. |54| `--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. |

55| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Rilascia uno slot di sessione se il figlio non ha segnalato sul [canale di attività](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached) di essersi inizializzato entro N minuti. Gli N minuti partono dalla generazione, dopo la clonazione, e ripartono da capo a ogni messaggio `user` o `assistant` che il figlio emette prima di essersi inizializzato o di aver segnalato il proprio stato. Prima della v2.1.299, questo timeout smetteva di applicarsi al primo messaggio di questo tipo della sessione. Per il rilascio dopo il segnale di init, vedi `--release-idle-session-min`. `0` disabilita. |55| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Quanto tempo attendere un processo figlio che non si è inizializzato prima di rilasciare lo slot della sessione. Vedi [Timeout di avvio della sessione](#session-startup-timeout) per sapere da dove parte il conteggio e quali sessioni lascia in esecuzione. `0` disabilita il timeout. |

56| `--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](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#harden-your-deployment) le scansiona indipendentemente da questo flag. |56| `--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](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#harden-your-deployment) le scansiona indipendentemente da questo flag. |

57| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clona i repository su github.com tramite il [proxy git di Anthropic](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#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. |57| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clona i repository su github.com tramite il [proxy git di Anthropic](https://code.claude.com/docs/it/self-hosted-environments-deploy.md#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. |

58 58 


61* **Flag**: l'avvio fallisce con un errore.61* **Flag**: l'avvio fallisce con un errore.

62* **Variabile d'ambiente**: il runner fissa il valore al limite del timer piuttosto che rifiutarlo.62* **Variabile d'ambiente**: il runner fissa il valore al limite del timer piuttosto che rifiutarlo.

63 63 

64### Timeout di avvio della sessione

65 

66Se una sessione ha perso il suo slot durante un turno come `/code-review`, aggiorna il runner e il binario figlio alla v2.1.309 o successiva. Dalla v2.1.299 alla v2.1.308, il runner rilasciava una sessione, anche a metà turno, una volta trascorso il timeout di avvio senza un messaggio `user` o `assistant`.

67 

68Con `--startup-timeout-min <n>`, il runner rilascia lo slot di una sessione quando il suo figlio non si è inizializzato entro `<n>` minuti dopo la clonazione. Durante un turno che inizia prima che il figlio si inizializzi, la sessione mantiene il suo slot finché non trascorrono `<n>` minuti senza alcuna riga sul [canale di attività](https://code.claude.com/docs/it/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached) del figlio. Una volta che il figlio si inizializza, il runner azzera quel conteggio e il rilascio è governato da `--release-idle-session-min`. Per limitare una sessione il cui figlio è attivo ma bloccato, imposta `--kill-session-after-min`.

69 

64### Elenchi di regole della modalità auto70### Elenchi di regole della modalità auto

65 71 

66`--server-auto-mode-lists` ti permette di decidere quali regole del classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#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`:72`--server-auto-mode-lists` ti permette di decidere quali regole del classificatore della [modalità auto](https://code.claude.com/docs/it/permission-modes.md#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`:


374 380 

375#### Unire le metriche di una sessione a quelle del runner381#### Unire le metriche di una sessione a quelle del runner

376 382 

377Per affiancare le metriche proprie di una sessione a `claude_code_self_hosted_runner_session_idle_seconds`, esegui il join sul `session_id` del runner:383Per vedere quanto sono costate le sessioni inattive, esegui il join tra `claude_code_self_hosted_runner_session_idle_seconds` del runner e la metrica di costo di Claude Code su `ccr_session_id`. La metrica del runner non porta quell'etichetta, quindi assegnagliela con `label_replace`, come in questa query:

384 

385```text theme={null}

386sum by (ccr_session_id) (claude_code_cost_usage_total)

387and on (ccr_session_id)

388label_replace(

389 claude_code_self_hosted_runner_session_idle_seconds > 600,

390 "ccr_session_id", "cse_$1", "session_id", "session_(.*)"

391)

392```

393 

394La query restituisce un risultato per ogni sessione inattiva da oltre dieci minuti: il costo in dollari USA che il suo processo Claude Code ha conteggiato finora. Per eseguire il join con un'altra metrica di Claude Code, sostituisci `claude_code_cost_usage_total` nella query. La query funziona con qualsiasi `--capacity`.

378 395 

379* **Con `--capacity` superiore a uno**: esegui il join direttamente. Sull'endpoint `/metrics` del runner, le serie della sessione portano lo stesso `session_id` di quella metrica, nella forma `session_...`.396* **`session_id`**: sulla porta 9464, quell'etichetta sulle metriche di Claude Code contiene il [`session.id`](https://code.claude.com/docs/it/monitoring-usage#standard-attributes) proprio di Claude Code, che non corrisponde ad alcuna serie del runner. Un join su di essa non restituisce nulla, quindi esegui il join su `ccr_session_id`.

380* **Con `--capacity 1`**: esegui il join su un `ccr_session_id` convertito. Per impostazione predefinita, ogni metrica di Claude Code sulla porta 9464 porta quell'etichetta, che contiene l'ID della sessione nella forma `cse_...`. In una nuova etichetta, sostituisci il suo prefisso `cse_` con `session_` per ottenere il `session_id` del runner. Il `session_id` della metrica stessa contiene il [`session.id`](https://code.claude.com/docs/it/monitoring-usage#standard-attributes) proprio di Claude Code, che non corrisponde ad alcuna serie del runner.397* **Le metriche di Claude Code non hanno `ccr_session_id`**: verifica che [`OTEL_METRICS_INCLUDE_SESSION_ID`](https://code.claude.com/docs/it/monitoring-usage#metrics-cardinality-control) non sia impostato su `false`

381 398 

382### Semantica del contatore del ciclo di vita della sessione399### Semantica del contatore del ciclo di vita della sessione

383 400 

Details

117| [`gcpAuthRefresh`](#gcpauthrefresh) | Aggiorna le [credenziali Google Cloud](https://code.claude.com/docs/it/google-vertex-ai.md#advanced-credential-configuration) con un tuo comando | Autenticazione e provider | Any file |117| [`gcpAuthRefresh`](#gcpauthrefresh) | Aggiorna le [credenziali Google Cloud](https://code.claude.com/docs/it/google-vertex-ai.md#advanced-credential-configuration) con un tuo comando | Autenticazione e provider | Any file |

118| [`hooks`](#hooks) | Esegui i tuoi comandi come [hook](https://code.claude.com/docs/it/hooks.md) in determinati punti del ciclo di vita di Claude Code | Hook e automazione | Any file |118| [`hooks`](#hooks) | Esegui i tuoi comandi come [hook](https://code.claude.com/docs/it/hooks.md) in determinati punti del ciclo di vita di Claude Code | Hook e automazione | Any file |

119| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limita quali variabili d'ambiente gli [hook HTTP](https://code.claude.com/docs/it/hooks.md) possono inserire nelle intestazioni | Hook e automazione | Any file |119| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limita quali variabili d'ambiente gli [hook HTTP](https://code.claude.com/docs/it/hooks.md) possono inserire nelle intestazioni | Hook e automazione | Any file |

120| [`idleCompaction`](#idlecompaction) | Impedisci a Claude Code di compattare una conversazione lunga mentre la sessione del terminale è inattiva | Memoria e contesto | Any file |120| [`idleCompaction`](#idlecompaction) | Impedisci a Claude Code di compattare una conversazione lunga da cui ti sei allontanato | Memoria e contesto | Any file |

121| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecato; usa `attribution` per nascondere o cambiare l'attribuzione di commit e PR | Git e attribuzione | Any file |121| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecato; usa `attribution` per nascondere o cambiare l'attribuzione di commit e PR | Git e attribuzione | Any file |

122| [`includeGitInstructions`](#includegitinstructions) | Rimuovi le istruzioni integrate su commit e PR dal contesto di Claude | Git e attribuzione | Any file |122| [`includeGitInstructions`](#includegitinstructions) | Rimuovi le istruzioni integrate su commit e PR dal contesto di Claude | Git e attribuzione | Any file |

123| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Ricevi una [notifica push](https://code.claude.com/docs/it/remote-control.md#mobile-push-notifications) quando Claude ti sta aspettando | Remoto, desktop e notifiche | Any file |123| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Ricevi una [notifica push](https://code.claude.com/docs/it/remote-control.md#mobile-push-notifications) quando Claude ti sta aspettando | Remoto, desktop e notifiche | Any file |


1229Su una piattaforma che la sandbox non supporta, Claude Code non si avvia con questa chiave attiva. Vedi [Enforce sandboxing with managed settings](https://code.claude.com/docs/it/sandboxing.md#enforce-sandboxing-with-managed-settings).1229Su una piattaforma che la sandbox non supporta, Claude Code non si avvia con questa chiave attiva. Vedi [Enforce sandboxing with managed settings](https://code.claude.com/docs/it/sandboxing.md#enforce-sandboxing-with-managed-settings).

1230 1230 

1231* **Scope**: [`Any file`](#scopes), con [limiti sulle impostazioni di progetto e locali](https://code.claude.com/docs/it/sandboxing.md#repository-settings-under-an-admin-required-sandbox)1231* **Scope**: [`Any file`](#scopes), con [limiti sulle impostazioni di progetto e locali](https://code.claude.com/docs/it/sandboxing.md#repository-settings-under-an-admin-required-sandbox)

1232* **Type**: Boolean1232* **Tipo**: booleano

1233 * `true`: Claude Code esce con un errore all'avvio quando `sandbox.enabled` è `true` ma la sandbox non può avviarsi1233 * `true`: Claude Code termina con un errore all'avvio quando `sandbox.enabled` è `true` ma la sandbox non riesce ad avviarsi. Se la sandbox supera quel controllo e poi non riesce a inizializzarsi, la sessione continua e Claude Code [rifiuta ogni comando in sandbox](https://code.claude.com/docs/it/sandboxing.md#commands-refused-with-sandbox-is-required)

1234 * `false`: Claude Code esegue i comandi senza sandbox quando la sandbox non può avviarsi1234 * `false`: Claude Code esegue i comandi fuori dalla sandbox quando la sandbox non riesce ad avviarsi

1235* **Default**: `false`1235* **Default**: `false`

1236 1236 

1237Questo fa sì che ogni macchina gestita metta in sandbox i comandi o rifiuti di avviarsi:1237Questo attiva la sandbox per le macchine gestite e imposta `failIfUnavailable` su `true`:

1238 1238 

1239```json managed-settings.json theme={null}1239```json managed-settings.json theme={null}

1240{1240{


2415 2415 

2416### `idleCompaction`2416### `idleCompaction`

2417 2417 

2418La compattazione durante l'inattività [compatta](https://code.claude.com/docs/it/context-window.md#what-survives-compaction) una conversazione lunga da cui ti sei allontanato, poco prima che la sua cache del prompt scada. Il tuo messaggio successivo invia quindi un riepilogo invece dell'intera conversazione. Quando torni, la conversazione mostra una riga che inizia con `Compacted while idle, before the prompt cache expired`.2418La compattazione durante l'inattività [compatta](https://code.claude.com/docs/it/context-window.md#what-survives-compaction) una conversazione lunga da cui ti sei allontanato. Il tuo messaggio successivo invia quindi un riepilogo invece dell'intera conversazione. Una volta compattata, la conversazione mostra un avviso:

2419 

2420* **Terminale**: una riga che inizia con `Compacted while idle, before the prompt cache expired`

2421* **[Pannello chat di VS Code](#idle-compaction-in-vs-code-and-the-desktop-app)**: un avviso che include `a summary written while you were away`

2422* **[App desktop](#idle-compaction-in-vs-code-and-the-desktop-app)**: lo stesso avviso, all'interno di una riga la cui etichetta include `Claude Code notice`. Se non vedi quella riga o il suo testo, passa alla [modalità di visualizzazione Verbose](https://code.claude.com/docs/it/desktop.md#switch-view-modes).

2419 2423 

2420La compattazione durante l'inattività è attiva per impostazione predefinita per le conversazioni che soddisfano tutte queste condizioni:2424La compattazione durante l'inattività è attiva per impostazione predefinita per le conversazioni che soddisfano tutte queste condizioni:

2421 2425 

2422* **Sessione**: sei in una sessione interattiva del terminale2426* **Sessione**: sei in una sessione interattiva del terminale, oppure nel pannello chat dell'estensione VS Code o nella scheda Code dell'app desktop con un [account selezionato da Anthropic](#idle-compaction-in-vs-code-and-the-desktop-app)

2423* **Compattazione automatica**: [`autoCompactEnabled`](#autocompactenabled) è attiva2427* **Compattazione automatica**: [`autoCompactEnabled`](#autocompactenabled) è attiva

2424* **Cache del prompt**: la conversazione usa il [TTL di un'ora della cache del prompt](https://code.claude.com/docs/it/prompt-caching.md#which-ttl-each-request-gets)2428* **Cache del prompt**: la conversazione usa il [TTL di un'ora della cache del prompt](https://code.claude.com/docs/it/prompt-caching.md#which-ttl-each-request-gets)

2425* **Feature flag**: Claude Code può [recuperare i feature flag da Anthropic](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching)2429* **Feature flag**: Claude Code può [recuperare i feature flag da Anthropic](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching)


2441}2445}

2442```2446```

2443 2447 

2444Per disattivare o attivare la compattazione durante l'inattività dall'interno di una sessione, esegui `/config` e modifica la riga **Idle compaction**. La tua scelta viene salvata nelle tue impostazioni utente e si applica subito. La riga richiede Claude Code v2.1.302 o successiva. Se esegui una di queste versioni e `/config` non mostra la riga, verifica queste cause:2448Per disattivare o attivare la compattazione durante l'inattività dall'interno di una sessione del terminale, esegui `/config` e modifica la riga **Idle compaction**. La tua scelta viene salvata nelle tue impostazioni utente e si applica subito. La riga richiede Claude Code v2.1.302 o successiva. Se esegui una di queste versioni e `/config` non mostra la riga, verifica queste cause:

2445 2449 

2446* **Un'altra fonte di impostazioni imposta la chiave**: un valore nelle impostazioni gestite, nel flag `--settings` o in un file di impostazioni di progetto o locale sovrascrive le tue impostazioni utente. Modifica invece la chiave in quella fonte2450* **Un'altra fonte di impostazioni imposta la chiave**: un valore nelle impostazioni gestite, nel flag `--settings` o in un file di impostazioni di progetto o locale sovrascrive le tue impostazioni utente. Modifica invece la chiave in quella fonte

2447* **I feature flag non sono disponibili**: dove Claude Code non può [recuperare i feature flag da Anthropic](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching), la compattazione durante l'inattività non viene eseguita, quindi non c'è nulla da disattivare2451* **I feature flag non sono disponibili**: dove Claude Code non può [recuperare i feature flag da Anthropic](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching), la compattazione durante l'inattività non viene eseguita, quindi non c'è nulla da disattivare


2462}2466}

2463```2467```

2464 2468 

2469#### Compattazione durante l'inattività in VS Code e nell'app desktop

2470 

2471Un avviso come questo significa che Claude Code [ha sostituito la tua conversazione precedente con un riepilogo](https://code.claude.com/docs/it/context-window.md#what-survives-compaction) a partire dal quale Claude ora lavora:

2472 

2473```text theme={null}

2474Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json

2475```

2476 

2477Non devi fare nulla. Per disattivare la compattazione durante l'inattività, imposta `idleCompaction` su `false` in `~/.claude/settings.json` o in un altro [file di impostazioni](https://code.claude.com/docs/it/settings.md#settings-files-and-who-they-affect).

2478 

2479Nel pannello chat dell'estensione VS Code e nella scheda Code dell'app desktop, la compattazione durante l'inattività viene eseguita per gli account selezionati da Anthropic. Claude Code scrive il riepilogo mentre sei via, poi compatta usandolo solo se il tuo messaggio successivo arriva un'ora o più dopo l'ultima richiesta.

2480 

2465### `plansDirectory`2481### `plansDirectory`

2466 2482 

2467Scegli dove Claude Code archivia i file di piano che scrive in [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode). Claude Code risolve il percorso relativamente alla radice del progetto.2483Scegli dove Claude Code archivia i file di piano che scrive in [plan mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode). Claude Code risolve il percorso relativamente alla radice del progetto.


3522 3538 

3523* **Gli hook gestiti e SDK vengono eseguiti**: gli hook dalle impostazioni gestite e gli hook che l'[Agent SDK](https://code.claude.com/docs/it/agent-sdk/overview.md) registra nel processo3539* **Gli hook gestiti e SDK vengono eseguiti**: gli hook dalle impostazioni gestite e gli hook che l'[Agent SDK](https://code.claude.com/docs/it/agent-sdk/overview.md) registra nel processo

3524* **Gli hook dei plugin forzati vengono eseguiti**: gli hook dai plugin che le tue impostazioni gestite forzano ad abilitare tramite [`enabledPlugins`](#enabledplugins). Claude Code confronta l'ID completo `plugin@marketplace`, quindi un plugin con lo stesso nome da un marketplace diverso rimane bloccato. Questo ti consente di distribuire hook verificati tramite un marketplace dell'organizzazione mentre blocchi tutto il resto. Un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) in tale plugin viene caricato solo quando [conta come quello della tua organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods)3540* **Gli hook dei plugin forzati vengono eseguiti**: gli hook dai plugin che le tue impostazioni gestite forzano ad abilitare tramite [`enabledPlugins`](#enabledplugins). Claude Code confronta l'ID completo `plugin@marketplace`, quindi un plugin con lo stesso nome da un marketplace diverso rimane bloccato. Questo ti consente di distribuire hook verificati tramite un marketplace dell'organizzazione mentre blocchi tutto il resto. Un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) in tale plugin viene caricato solo quando [conta come quello della tua organizzazione](https://code.claude.com/docs/it/plugins/mods/admin.md#install-your-organizations-mods)

3541* **I monitor degli altri plugin sono bloccati**: i [monitor](https://code.claude.com/docs/it/plugins/components.md#monitors) di un plugin non si avviano a meno che il plugin non sia forzato ad abilitare. Richiede Claude Code v2.1.310 o successivo

3525* **Tutto il resto è bloccato**: gli hook dell'utente, del progetto e locali, gli hook e i mod da altri plugin installati e gli hook dichiarati nel frontmatter dell'agente. I [mod integrati in Claude Code](https://code.claude.com/docs/it/plugins/mods/overview.md#mods-built-into-claude-code) continuano a essere eseguiti. Per bloccare solo i mod degli utenti, imposta invece [`allowManagedModsOnly`](https://code.claude.com/docs/it/plugins/mods/admin#set-options-on-the-built-in-guard).3542* **Tutto il resto è bloccato**: gli hook dell'utente, del progetto e locali, gli hook e i mod da altri plugin installati e gli hook dichiarati nel frontmatter dell'agente. I [mod integrati in Claude Code](https://code.claude.com/docs/it/plugins/mods/overview.md#mods-built-into-claude-code) continuano a essere eseguiti. Per bloccare solo i mod degli utenti, imposta invece [`allowManagedModsOnly`](https://code.claude.com/docs/it/plugins/mods/admin#set-options-on-the-built-in-guard).

3526* **I plugin con origine comando sono disabilitati**: Claude Code disabilita anche i plugin con un'[origine `command`](https://code.claude.com/docs/it/plugins/marketplace-reference#command-plugin-source), inclusi i plugin forzati abilitati in `enabledPlugins` gestito, a meno che tu non imposti [`disableCommandPluginSources`](#disablecommandpluginsources) su `false` esplicitamente3543* **I plugin con origine comando sono disabilitati**: Claude Code disabilita anche i plugin con un'[origine `command`](https://code.claude.com/docs/it/plugins/marketplace-reference#command-plugin-source), inclusi i plugin forzati abilitati in `enabledPlugins` gestito, a meno che tu non imposti [`disableCommandPluginSources`](#disablecommandpluginsources) su `false` esplicitamente

3527* **I comandi marketplace `headersHelper` sono bloccati**: Claude Code blocca anche i comandi marketplace [`headersHelper`](https://code.claude.com/docs/it/plugins/host-marketplace#authenticate-archive-downloads) a meno che [`disableCommandPluginSources`](#disablecommandpluginsources) non sia esplicitamente impostato su `false`, ad eccezione di un marketplace che le impostazioni gestite stesse dichiarano. Richiede Claude Code v2.1.238 o successivo3544* **I comandi marketplace `headersHelper` sono bloccati**: Claude Code blocca anche i comandi marketplace [`headersHelper`](https://code.claude.com/docs/it/plugins/host-marketplace#authenticate-archive-downloads) a meno che [`disableCommandPluginSources`](#disablecommandpluginsources) non sia esplicitamente impostato su `false`, ad eccezione di un marketplace che le impostazioni gestite stesse dichiarano. Richiede Claude Code v2.1.238 o successivo

statusline.md +1 −1

Details

380* `used_percentage` e `resets_at`: arrivano con ogni risposta, quindi sono presenti ogni volta che lo è `spend_limit`. `used_percentage` va da 0 a 100, o sopra 100 una volta superato il limite, e `resets_at` indica i secondi di epoca Unix in cui il periodo del limite si ripristina.380* `used_percentage` e `resets_at`: arrivano con ogni risposta, quindi sono presenti ogni volta che lo è `spend_limit`. `used_percentage` va da 0 a 100, o sopra 100 una volta superato il limite, e `resets_at` indica i secondi di epoca Unix in cui il periodo del limite si ripristina.

381* `used_usd`, `limit_usd` e `period`: la tua spesa stimata finora e il tuo limite in dollari statunitensi, e il periodo coperto dal limite, uno tra `daily`, `weekly` o `monthly`. Il gateway [calcola `used_usd` dai conteggi dei token](https://code.claude.com/docs/it/claude-apps-gateway-spend-limits#how-requests-are-priced), quindi è una stima e non un importo fatturato. Claude Code li legge dal gateway in una richiesta separata, circa ogni cinque minuti mentre invii richieste. Gli importi in dollari possono essere più vecchi di circa cinque minuti rispetto a `used_percentage`, quindi i due valori potrebbero non coincidere per breve tempo. Richiede la v2.1.284 o successiva sia su Claude Code sia sul gateway.381* `used_usd`, `limit_usd` e `period`: la tua spesa stimata finora e il tuo limite in dollari statunitensi, e il periodo coperto dal limite, uno tra `daily`, `weekly` o `monthly`. Il gateway [calcola `used_usd` dai conteggi dei token](https://code.claude.com/docs/it/claude-apps-gateway-spend-limits#how-requests-are-priced), quindi è una stima e non un importo fatturato. Claude Code li legge dal gateway in una richiesta separata, circa ogni cinque minuti mentre invii richieste. Gli importi in dollari possono essere più vecchi di circa cinque minuti rispetto a `used_percentage`, quindi i due valori potrebbero non coincidere per breve tempo. Richiede la v2.1.284 o successiva sia su Claude Code sia sul gateway.

382 382 

383Tratta `used_usd`, `limit_usd` e `period` come facoltativi anche quando `spend_limit` è presente. Il tuo script riceve la percentuale prima di questi campi, e rimangono assenti se imposti `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, che disattiva quella richiesta. Leggi ciascuno con un fallback nel tuo script, ad esempio `jq -r '.rate_limits.spend_limit.used_usd // empty'`.383Tratta `used_usd`, `limit_usd` e `period` come facoltativi anche quando `spend_limit` è presente, perché il tuo script riceve la percentuale prima di questi campi. Leggi ciascuno con un fallback nel tuo script, ad esempio `jq -r '.rate_limits.spend_limit.used_usd // empty'`. Prima di Claude Code v2.1.295, rimanevano assenti se impostavi `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, che disattivava quella richiesta.

384 384 

385### Campi della prompt cache385### Campi della prompt cache

386 386 

sub-agents.md +1 −1

Details

600| `default` | Modalità Manual: chiede il permesso |600| `default` | Modalità Manual: chiede il permesso |

601| `acceptEdits` | Auto-accetta modifiche ai file e comandi comuni del filesystem per i percorsi nella directory di lavoro o `additionalDirectories` |601| `acceptEdits` | Auto-accetta modifiche ai file e comandi comuni del filesystem per i percorsi nella directory di lavoro o `additionalDirectories` |

602| `auto` | [Auto mode](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode): un classificatore in background esamina i comandi e le scritture di directory protette |602| `auto` | [Auto mode](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode): un classificatore in background esamina i comandi e le scritture di directory protette |

603| `dontAsk` | Nega automaticamente le chiamate che richiederebbero un permesso, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Gli strumenti consentiti esplicitamente continuano a funzionare. `AskUserQuestion`, gli strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool), le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths) e gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools), nelle sessioni in cui quell'impostazione raggiunge Claude Code, vengono negati anche se li hai consentiti |603| `dontAsk` | Nega automaticamente le chiamate che richiederebbero un permesso, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare [alcune di queste chiamate](https://code.claude.com/docs/it/permissions.md#precedence-among-rules-hooks-and-mods). Gli strumenti consentiti esplicitamente continuano a funzionare. `AskUserQuestion`, gli strumenti MCP contrassegnati con [`requiresUserInteraction`](https://code.claude.com/docs/it/mcp#require-approval-for-a-specific-tool), le [letture da percorsi di rete](https://code.claude.com/docs/it/permissions.md#network-paths) e gli strumenti dei connettori [che la tua organizzazione ha impostato su `ask`](https://code.claude.com/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quell'impostazione raggiunge Claude Code vengono negati anche se li hai consentiti |

604| `bypassPermissions` | [Salta i prompt di autorizzazione](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode). Un subagent viene eseguito in questa modalità solo quando la conversazione principale lo fa |604| `bypassPermissions` | [Salta i prompt di autorizzazione](https://code.claude.com/docs/it/permission-modes.md#skip-all-checks-with-bypasspermissions-mode). Un subagent viene eseguito in questa modalità solo quando la conversazione principale lo fa |

605| `plan` | Plan mode (esplorazione di sola lettura) |605| `plan` | Plan mode (esplorazione di sola lettura) |

606 606 

Details

121* **Sessione in background**: una [sessione in background](https://code.claude.com/docs/it/agent-view.md) non segnala il proprio stato al tuo terminale, nemmeno mentre sei collegato a essa. La vista agenti mostra invece il suo stato.121* **Sessione in background**: una [sessione in background](https://code.claude.com/docs/it/agent-view.md) non segnala il proprio stato al tuo terminale, nemmeno mentre sei collegato a essa. La vista agenti mostra invece il suo stato.

122* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/it/env-vars#variables)**: se imposti questa variabile su `1`, Claude Code non verifica il supporto né segnala lo stato. Rimuovila.122* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/it/env-vars#variables)**: se imposti questa variabile su `1`, Claude Code non verifica il supporto né segnala lo stato. Rimuovila.

123 123 

124In un terminale che segnala il supporto per il protocollo, il titolo della scheda non inizia con un glifo di stato. Il terminale mostra autonomamente lo stato della sessione, quindi Claude Code omette il glifo che negli altri terminali antepone al titolo.

125 

124## Configurare tmux126## Configurare tmux

125 127 

126Quando Claude Code viene eseguito all'interno di tmux, per impostazione predefinita Shift+Invio invia il messaggio invece di inserire una nuova riga, e le notifiche desktop e la [barra di avanzamento](https://code.claude.com/docs/it/settings-reference.md#terminalprogressbarenabled) non raggiungono mai il terminale esterno. Aggiungere queste righe a `~/.tmux.conf`, quindi eseguire `tmux source-file ~/.tmux.conf` per applicarle al server in esecuzione:128Quando Claude Code viene eseguito all'interno di tmux, per impostazione predefinita Shift+Invio invia il messaggio invece di inserire una nuova riga, e le notifiche desktop e la [barra di avanzamento](https://code.claude.com/docs/it/settings-reference.md#terminalprogressbarenabled) non raggiungono mai il terminale esterno. Aggiungere queste righe a `~/.tmux.conf`, quindi eseguire `tmux source-file ~/.tmux.conf` per applicarle al server in esecuzione:

Details

258 258 

259Un 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.259Un 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.

260 260 

261Claude 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.261Claude 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. Se il comando non ha stampato alcun testo del file, come quando una ricerca non trova corrispondenze, il controllo read-before-edit si applica comunque.

262 262 

263Quando Claude visualizza un file in questo modo, Claude Code carica anche gli eventuali [`CLAUDE.md` delle sottodirectory](https://code.claude.com/docs/it/memory#how-claude-md-files-load) e le [regole con ambito di percorso](https://code.claude.com/docs/it/memory.md#path-specific-rules) che si applicano a quel file. Consulta [Regole di permesso Read e Edit](https://code.claude.com/docs/it/permissions.md#read-and-edit) per sapere quali comandi Bash sono coperti dalle tue regole di negazione `Read` e `Edit`.263Quando Claude visualizza un file in questo modo, Claude Code carica anche gli eventuali [`CLAUDE.md` delle sottodirectory](https://code.claude.com/docs/it/memory#how-claude-md-files-load) e le [regole con ambito di percorso](https://code.claude.com/docs/it/memory.md#path-specific-rules) che si applicano a quel file. Consulta [Regole di permesso Read e Edit](https://code.claude.com/docs/it/permissions.md#read-and-edit) per sapere quali comandi Bash sono coperti dalle tue regole di negazione `Read` e `Edit`.

264 264 


383 383 

384La [sorgente WebSocket](#websocket-source) ha il suo prompt di approvazione, che il classificatore decide anche in modalità auto.384La [sorgente WebSocket](#websocket-source) ha il suo prompt di approvazione, che il classificatore decide anche in modalità auto.

385 385 

386Lo strumento non è disponibile su Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. Non è disponibile nemmeno quando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostato. Su Windows, lo strumento è disponibile solo quando [Git Bash](https://code.claude.com/docs/it/setup.md#set-up-on-windows) è installato.386Monitor richiede una versione minima o Git Bash in questi casi:

387 

388* **Versione minima**: su Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform o Microsoft Foundry, oppure con `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` impostato, Monitor richiede Claude Code v2.1.310 o successivo. Il requisito si applica quando il [recupero dei feature flag](https://code.claude.com/docs/it/env-vars.md#features-that-need-feature-flag-fetching) è disattivato

389* **Windows**: lo strumento è disponibile solo quando [Git Bash](https://code.claude.com/docs/it/setup.md#set-up-on-windows) è installato

387 390 

388I plugin possono dichiarare monitor che si avviano automaticamente quando il plugin è attivo, invece di chiedere a Claude di avviarli. Vedi [plugin monitors](https://code.claude.com/docs/it/plugins/components.md#monitors).391I plugin possono dichiarare monitor che si avviano automaticamente quando il plugin è attivo, invece di chiedere a Claude di avviarli. Vedi [plugin monitors](https://code.claude.com/docs/it/plugins/components.md#monitors).

389 392 

Details

177 177 

178**1. Apri la vista diff**178**1. Apri la vista diff**

179 179 

180Un indicatore diff mostra le righe aggiunte e rimosse durante la sessione, ad esempio `+42 -18`. Selezionalo per aprire la vista diff, con un elenco di file a sinistra e le modifiche a destra.180Dopo che Claude ha effettuato il push delle sue modifiche su un branch, la scheda **Modifiche** nel pannello accanto alla chat mostra le righe aggiunte e rimosse durante la sessione, ad esempio `+42 -18`. Fai clic su questi conteggi per aprire la vista diff.

181 181 

182Il diff confronta le modifiche della sessione rispetto al suo ramo base per impostazione predefinita. Per confrontare rispetto a un ramo diverso, seleziona **Confronta con** e scegline uno.182* Puoi anche fare clic su **Modifiche** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.

183* Per mostrare il pannello quando è nascosto, fai clic sull'icona **Mostra barra laterale della sessione** nella barra del titolo della sessione, oppure nel menu **⋮** della barra.

184 

185Il diff confronta le modifiche della sessione rispetto al suo branch base per impostazione predefinita. Per confrontare rispetto a un branch diverso, seleziona **Confronta con** e scegline uno.

183 186 

184**2. Lascia commenti inline**187**2. Lascia commenti inline**

185 188 


187 190 

188**3. Crea una pull request**191**3. Crea una pull request**

189 192 

190Quando il diff sembra giusto, seleziona **Crea PR** nella parte superiore della vista diff. Puoi aprirla come una PR completa, una bozza, o saltare alla pagina di composizione di GitHub con un titolo e una descrizione generati.193Quando il diff sembra giusto, [mostra di nuovo il pannello](https://code.claude.com/docs/it/claude-code-on-the-web.md#review-changes) se la scheda **Modifiche** non è visibile, quindi crea una pull request o una bozza dalla scheda:

194 

195* Fai clic su **Crea PR**. Claude Code crea la pull request con un titolo e una descrizione generati.

196* Per aprire invece una bozza, fai clic con il pulsante destro su **Crea PR**, seleziona **Crea bozza PR** per cambiare l'azione del pulsante, quindi fai clic sul pulsante

191 197 

192**4. Continua a iterare dopo la PR**198**4. Continua a iterare dopo la PR**

193 199