SpyBara
Go Premium

Documentation 2026-10-04 23:58 UTC to 2026-10-05 01:58 UTC

6 files changed +45 −46. View all changes and history on the product overview
2026
Mon 5 02:57 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59

env-vars.md +1 −1

Details

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

358| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Percorso di una o più directory seed di plugin di sola lettura, separate da `:` su Unix o `;` su Windows. Usala per includere in un'immagine container una directory di plugin prepopolata. Claude Code registra i marketplace da queste directory all'avvio e usa i plugin già presenti nella cache senza clonarli di nuovo. Consulta [Prepopolare i plugin per i container](/docs/it/plugins/org#seed-containers-and-ci) |358| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Percorso di una o più directory seed di plugin di sola lettura, separate da `:` su Unix o `;` su Windows. Usala per includere in un'immagine container una directory di plugin prepopolata. Claude Code registra i marketplace da queste directory all'avvio e usa i plugin già presenti nella cache senza clonarli di nuovo. Consulta [Prepopolare i plugin per i container](/docs/it/plugins/org#seed-containers-and-ci) |

359| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Imposta su `1` per impedire a Claude Code di passare `-ExecutionPolicy Bypass` quando avvia PowerShell per le chiamate agli strumenti, gli hook e i comandi della riga di stato, rispettando invece la execution policy effettiva della macchina. Per impostazione predefinita Claude Code aggira la execution policy a livello di processo, in modo che gli script `.ps1` e le importazioni di moduli funzionino nelle installazioni di Windows con il valore predefinito Restricted. L'aggiramento a livello di processo non sovrascrive mai le Group Policy `MachinePolicy` o `UserPolicy`, indipendentemente da questa impostazione |359| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Imposta su `1` per impedire a Claude Code di passare `-ExecutionPolicy Bypass` quando avvia PowerShell per le chiamate agli strumenti, gli hook e i comandi della riga di stato, rispettando invece la execution policy effettiva della macchina. Per impostazione predefinita Claude Code aggira la execution policy a livello di processo, in modo che gli script `.ps1` e le importazioni di moduli funzionino nelle installazioni di Windows con il valore predefinito Restricted. L'aggiramento a livello di processo non sovrascrive mai le Group Policy `MachinePolicy` o `UserPolicy`, indipendentemente da questa impostazione |

360| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Limite massimo in millisecondi per l'attesa inattiva dei subagent e dei workflow in background dopo il turno finale in [modalità non interattiva](/docs/it/headless#background-tasks-at-exit) con il flag `-p`. L'attesa inattiva ricomincia ogni volta che Claude esegue un turno per gestire un risultato in background. Predefinito: `600000`, ovvero 10 minuti. Quando l'attesa inattiva raggiunge il limite, Claude Code smette di attendere le attività in background rimanenti ed esce. Imposta su `0` per attendere indefinitamente. Questo limite è separato dal periodo di tolleranza di cinque secondi che si applica alle semplici shell in background. Richiede Claude Code v2.1.182 o successiva |360| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Limite massimo in millisecondi per l'attesa inattiva del lavoro in background, come subagent e workflow, dopo il turno finale in [modalità non interattiva](/docs/it/headless#background-tasks-at-exit) con il flag `-p`. L'attesa inattiva ricomincia ogni volta che Claude esegue un turno per gestire un risultato in background. Predefinito: `600000`, ovvero 10 minuti. Quando l'attesa inattiva raggiunge il limite, Claude Code smette di attendere le attività in background rimanenti ed esce. Imposta su `0` per attendere indefinitamente. Questo limite è separato dal periodo di tolleranza di cinque secondi che si applica alle semplici shell in background. Richiede Claude Code v2.1.182 o successiva |

361| `CLAUDE_CODE_PROCESS_WRAPPER` | Avvia i processi che Claude Code lancia dal proprio binario, come il servizio in background che ospita le sessioni di [agent view](/docs/it/agent-view), tramite un launcher aziendale indicato come prefisso argv, ad esempio `/opt/corp/launcher`. Impostala nel blocco `env` delle impostazioni utente o delle [impostazioni gestite](/docs/it/managed-settings), non come export della shell, in modo che il servizio in background scollegato la erediti; le impostazioni di progetto e locali non possono impostarla. Equivale all'[impostazione `processWrapper`](/docs/it/settings-reference#processwrapper), che richiede Claude Code v2.1.210 o successiva; questa variabile ha la precedenza quando sono impostate entrambe. L'estensione VS Code configura il proprio launcher separatamente tramite la sua impostazione `claudeProcessWrapper`. Ignorata su Windows. Consulta [Eseguire Claude Code tramite un launcher aziendale](/docs/it/corporate-launcher) per il formato del valore, ciò che il launcher copre e i requisiti che il launcher deve soddisfare. Richiede Claude Code v2.1.208 o successiva |361| `CLAUDE_CODE_PROCESS_WRAPPER` | Avvia i processi che Claude Code lancia dal proprio binario, come il servizio in background che ospita le sessioni di [agent view](/docs/it/agent-view), tramite un launcher aziendale indicato come prefisso argv, ad esempio `/opt/corp/launcher`. Impostala nel blocco `env` delle impostazioni utente o delle [impostazioni gestite](/docs/it/managed-settings), non come export della shell, in modo che il servizio in background scollegato la erediti; le impostazioni di progetto e locali non possono impostarla. Equivale all'[impostazione `processWrapper`](/docs/it/settings-reference#processwrapper), che richiede Claude Code v2.1.210 o successiva; questa variabile ha la precedenza quando sono impostate entrambe. L'estensione VS Code configura il proprio launcher separatamente tramite la sua impostazione `claudeProcessWrapper`. Ignorata su Windows. Consulta [Eseguire Claude Code tramite un launcher aziendale](/docs/it/corporate-launcher) per il formato del valore, ciò che il launcher copre e i requisiti che il launcher deve soddisfare. Richiede Claude Code v2.1.208 o successiva |

362| `CLAUDE_CODE_PROJECT_DIR_NAME` | Impostala insieme a `CLAUDE_CONFIG_DIR` per scegliere il nome della directory in `projects/` in cui Claude Code archivia le trascrizioni e la memoria automatica di quella sessione, al posto di un nome derivato dal percorso della directory di lavoro. Ad esempio, avviare Claude Code con `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` le archivia in `/srv/tenant-a/projects/work/`. Claude Code ignora questa variabile quando `CLAUDE_CONFIG_DIR` non è impostata, e la legge solo dall'ambiente da cui avvii `claude`, mai dal [blocco `env` di un file di impostazioni](#in-settings-files). Consulta [Assegnare tu il nome alla directory del progetto](/docs/it/sessions#name-the-project-directory-yourself). Richiede Claude Code v2.1.234 o successiva |362| `CLAUDE_CODE_PROJECT_DIR_NAME` | Impostala insieme a `CLAUDE_CONFIG_DIR` per scegliere il nome della directory in `projects/` in cui Claude Code archivia le trascrizioni e la memoria automatica di quella sessione, al posto di un nome derivato dal percorso della directory di lavoro. Ad esempio, avviare Claude Code con `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` le archivia in `/srv/tenant-a/projects/work/`. Claude Code ignora questa variabile quando `CLAUDE_CONFIG_DIR` non è impostata, e la legge solo dall'ambiente da cui avvii `claude`, mai dal [blocco `env` di un file di impostazioni](#in-settings-files). Consulta [Assegnare tu il nome alla directory del progetto](/docs/it/sessions#name-the-project-directory-yourself). Richiede Claude Code v2.1.234 o successiva |

363| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Imposta `5m` o `1h`, gli unici valori accettati da Claude Code, per scegliere il [TTL della cache dei prompt](/docs/it/prompt-caching#cache-lifetime) per la conversazione principale: i tuoi turni interattivi, `-p` e SDK, più gli helper che vengono eseguiti in linea con essi. Ha la precedenza sull'impostazione `promptCacheTtl` e su `ENABLE_PROMPT_CACHING_1H`, mentre `FORCE_PROMPT_CACHING_5M` ha la precedenza su di essa. L'API addebita le scritture nella cache di 1 ora a una tariffa più alta. Richiede Claude Code v2.1.242 o successiva |363| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Imposta `5m` o `1h`, gli unici valori accettati da Claude Code, per scegliere il [TTL della cache dei prompt](/docs/it/prompt-caching#cache-lifetime) per la conversazione principale: i tuoi turni interattivi, `-p` e SDK, più gli helper che vengono eseguiti in linea con essi. Ha la precedenza sull'impostazione `promptCacheTtl` e su `ENABLE_PROMPT_CACHING_1H`, mentre `FORCE_PROMPT_CACHING_5M` ha la precedenza su di essa. L'API addebita le scritture nella cache di 1 ora a una tariffa più alta. Richiede Claude Code v2.1.242 o successiva |

hooks.md +3 −1

Details

2776 Input di Stop2776 Input di Stop

2777</h4>2777</h4>

2778 2778 

2779Oltre ai [campi di input comuni](#common-input-fields), gli hook Stop ricevono `stop_hook_active`, `last_assistant_message`, `background_tasks` e `session_crons`. Il campo `stop_hook_active` è `true` quando Claude Code sta già proseguendo a seguito di uno stop hook. Controlla questo valore o elabora la trascrizione per evitare di bloccare su una condizione che non si risolverà mai. Claude Code applica un limite di 8 prosecuzioni consecutive: dopo che gli stop hook hanno fatto proseguire il turno otto volte di fila, Claude Code sovrascrive il blocco successivo e termina il turno. Per aumentare il limite, imposta [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/it/env-vars).2779Oltre ai [campi di input comuni](#common-input-fields), gli hook Stop ricevono `stop_hook_active`, `last_assistant_message`, `background_tasks` e `session_crons`. Il campo `stop_hook_active` è `true` quando Claude Code sta già proseguendo a seguito di uno stop hook. Controlla questo valore o elabora la trascrizione per evitare di bloccare su una condizione che non si risolverà mai.

2780 

2781Claude Code applica un limite di 8 prosecuzioni consecutive: dopo che gli stop hook hanno fatto proseguire il turno otto volte di seguito, Claude Code sovrascrive il blocco successivo e termina il turno. Il conteggio delle prosecuzioni consecutive si azzera ogni volta che Claude chiama uno strumento. Per aumentare il limite, imposta [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/it/env-vars).

2780 2782 

2781Il campo `last_assistant_message` contiene il contenuto testuale della risposta finale di Claude, quindi gli hook possono accedervi senza analizzare il file della trascrizione. Per gli hook che agiscono sul turno appena completato, come gli hook di lettura ad alta voce o di notifica, usa questo campo anziché leggere `transcript_path`: non è garantito che il file della trascrizione includa il messaggio finale al momento di Stop in tutte le versioni.2783Il campo `last_assistant_message` contiene il contenuto testuale della risposta finale di Claude, quindi gli hook possono accedervi senza analizzare il file della trascrizione. Per gli hook che agiscono sul turno appena completato, come gli hook di lettura ad alta voce o di notifica, usa questo campo anziché leggere `transcript_path`: non è garantito che il file della trascrizione includa il messaggio finale al momento di Stop in tutte le versioni.

2782 2784 

hooks-guide.md +1 −1

Details

1061 1061 

1062Claude continua a lavorare invece di fermarsi, poi termina il turno con un avviso che indica che l'hook Stop ha bloccato troppe volte consecutive.1062Claude continua a lavorare invece di fermarsi, poi termina il turno con un avviso che indica che l'hook Stop ha bloccato troppe volte consecutive.

1063 1063 

1064Claude Code prende il sopravvento su un hook Stop e ne sovrascrive il blocco dopo che questo ha bloccato otto volte di seguito senza progressi. Il tuo script di hook deve verificare se ha già attivato una continuazione. Analizza il campo `stop_hook_active` dall'input JSON ed esci subito se è `true`:1064Claude Code sovrascrive un hook Stop dopo che questo ha bloccato otto volte di seguito senza alcuna chiamata a uno strumento da parte di Claude nel frattempo. Il tuo script di hook deve verificare se ha già attivato una continuazione. Analizza il campo `stop_hook_active` dall'input JSON ed esci subito se è `true`:

1065 1065 

1066```bash theme={null}1066```bash theme={null}

1067#!/bin/bash1067#!/bin/bash

Details

71 Streaming71 Streaming

72</h3>72</h3>

73 73 

74Trasmettete in streaming le risposte di inferenza. Claude Code legge il flusso mentre arriva, quindi se il vostro gateway memorizza nel buffer le risposte complete prima di inoltrarle, Claude Code si blocca.74Claude Code legge ogni risposta di inferenza in streaming evento per evento man mano che arriva, quindi il modo in cui il tuo gateway inoltra il flusso influisce su ciò che l'utente vede:

75 75 

76Consegna la sequenza di eventi completa di ogni risposta senza eliminare, duplicare o riordinare gli eventi. Quando un guardrail di Amazon Bedrock blocca una risposta, inoltra invariati gli eventi che invia, anche quando fanno riferimento a un blocco di contenuto il cui `content_block_stop` è già arrivato. [AWS Guardrails](/docs/it/amazon-bedrock#aws-guardrails) descrive come termina quella risposta. Quando qualsiasi altro evento fa riferimento a un blocco di contenuto il cui `content_block_start` non è mai arrivato, o a un blocco il cui `content_block_stop` è già arrivato, Claude Code smette di leggere il flusso a quell'evento invece di applicarlo, quindi un `content_block_stop` duplicato non può eseguire la stessa chiamata a uno strumento due volte. [La risposta sopra potrebbe essere incompleta](/docs/it/errors#the-response-above-may-be-incomplete) descrive ciò che l'utente vede, sotto le varianti `Part of the response never arrived` e `The response stream was malformed`.76* Se il tuo gateway memorizza nel buffer una risposta finché non è completa, Claude Code si blocca.

77 77* Claude Code si aspetta la sequenza di eventi completa di ogni risposta, in ordine, fino agli eventi finali `message_delta` e `message_stop`. Se il corpo termina in modo pulito dopo che un blocco di contenuto è iniziato ma prima di quel `message_delta` finale, Claude Code tratta la risposta come una connessione interrotta. [La risposta sopra potrebbe essere incompleta](/docs/it/errors#the-response-above-may-be-incomplete) descrive ciò che l'utente vede in quel caso, e [Tentativi automatici](/docs/it/errors#automatic-retries) indica quando Claude Code invece invia di nuovo la richiesta.

78Inoltrate ogni risposta attraverso i suoi eventi finali `message_delta` e `message_stop` prima di terminare il corpo. Un corpo che termina dopo un `message_delta` che trasporta un `stop_reason`, senza blocco di contenuto ancora aperto e nessun evento di blocco di contenuto dopo quel frame, conta come completo anche quando `message_stop` è mancante. Un corpo che il vostro gateway termina in modo pulito prima, una volta che un blocco di contenuto ha iniziato, viene trattato come una connessione interrotta: [Tentativi automatici](/docs/it/errors#automatic-retries) dice quando Claude Code ri-emette la richiesta, e [La risposta sopra potrebbe essere incompleta](/docs/it/errors#the-response-above-may-be-incomplete) copre ciò che mantiene una volta che il contenuto visibile è arrivato. Claude Code mantiene il `stop_reason` che un `message_delta` consegna, quindi un successivo `message_delta` solo per l'utilizzo il cui `delta` ha `stop_reason: null` o nessuna chiave `stop_reason` non lo cancella.78* Quando un guardrail di Amazon Bedrock blocca una risposta, gli eventi che Bedrock invia possono fare riferimento a un blocco di contenuto il cui `content_block_stop` è già arrivato, e Claude Code si basa sul riceverli così come sono stati inviati. [AWS Guardrails](/docs/it/amazon-bedrock#aws-guardrails) descrive come termina quella risposta.

79 79* Claude Code interrompe una risposta in streaming quando nessun byte lo raggiunge per un tempo superiore al suo [timeout di inattività dello streaming](/docs/it/network-config#streaming-idle-watchdogs). Durante una lunga pausa di ragionamento, gli eventi SSE `ping` dell'upstream possono essere gli unici byte sul flusso, quindi un gateway che li elimina o li memorizza nel buffer può far scattare quel timeout a metà di una risposta. Un gateway che traduce da un upstream senza ping, come l'event stream binario di Amazon Bedrock, presenta la stessa lacuna a meno che non emetta i propri eventi `ping`.

80Quando il client parla il formato Amazon Bedrock, inoltrate il corpo della risposta `InvokeModelWithResponseStream` e il suo header `Content-Type: application/vnd.amazon.eventstream` senza modifiche, e non convertite il flusso in server-sent events. Vedete [Errori di streaming dietro un gateway o proxy](/docs/it/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).80* Con il [formato Amazon Bedrock InvokeModel](#api-formats), Claude Code legge la risposta di `/model/{model}/invoke-with-response-stream` come il corpo binario `application/vnd.amazon.eventstream` restituito da Bedrock, e non riesce ad analizzarlo se un gateway lo converte in server-sent events o riscrive l'header `Content-Type`. [Errori di streaming dietro un gateway o proxy](/docs/it/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy) descrive ciò che l'utente vede in quel caso.

81 

82Inoltrate anche i ping keep-alive, perché Claude Code interrompe una risposta in streaming una volta che nessun byte la raggiunge per [cinque minuti per impostazione predefinita](/docs/it/network-config#streaming-idle-watchdogs). Durante una lunga pausa di pensiero, gli eventi SSE `ping` dell'upstream possono essere gli unici byte sul flusso. Se il vostro gateway li elimina o li memorizza nel buffer, Claude Code interrompe la risposta a metà della pausa. Quando traducete da un upstream che non invia affatto ping, come l'event-stream binario di Amazon Bedrock, emettete i vostri stessi eventi `ping` durante i gap silenziosi.

83 81 

84<h3 id="format-mismatch-with-the-upstream">82<h3 id="format-mismatch-with-the-upstream">

85 Mancata corrispondenza di formato con l'upstream83 Mancata corrispondenza di formato con l'upstream

managed-mcp.md +33 −35

Details

50 50 

51Quando distribuisci un file `managed-mcp.json`, Claude Code carica solo questi server MCP:51Quando distribuisci un file `managed-mcp.json`, Claude Code carica solo questi server MCP:

52 52 

53* I server che il file definisce53* I server definiti nel file

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

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

56* Il server integrato [Claude in Chrome](/docs/it/chrome), se lo [consenti insieme al set gestito](#allow-claude-in-chrome-alongside-the-managed-set)56* Il server integrato [Claude in Chrome](/docs/it/chrome), se lo [consenti insieme al set gestito](#allow-claude-in-chrome-alongside-the-managed-set)

57 57 

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

59 59 

60<h3 id="deploy-managed-mcp-json">60<h3 id="deploy-managed-mcp-json">

61 Distribuire managed-mcp.json61 Distribuire managed-mcp.json

62</h3>62</h3>

63 63 

64`managed-mcp.json` è un file autonomo, quindi non può essere fornito attraverso [impostazioni gestite dal server](/docs/it/server-managed-settings). Per fornire server attraverso impostazioni gestite, senza controllo esclusivo, utilizza [`managedMcpServers`](#provide-servers-through-managed-settings).64`managed-mcp.json` è un file autonomo, quindi non può essere distribuito tramite le [impostazioni gestite dal server](/docs/it/server-managed-settings). Per fornire invece i server tramite le impostazioni gestite, senza controllo esclusivo, usa [`managedMcpServers`](#provide-servers-through-managed-settings).

65 65 

66Qualsiasi processo che può scrivere in un percorso di sistema con privilegi di amministratore può distribuire il file. Su una flotta, di solito avviene attraverso strumenti di gestione dei dispositivi, come Jamf o un profilo di configurazione su macOS, Criteri di gruppo o Intune su Windows, o la gestione della flotta di tua scelta su Linux. Claude Code cerca il file in uno di questi percorsi:66Qualsiasi processo in grado di scrivere in un percorso di sistema con privilegi di amministratore può distribuire il file. Su una flotta di dispositivi, di solito si usano strumenti di gestione dei dispositivi, come Jamf o un profilo di configurazione su macOS, Criteri di gruppo o Intune su Windows, o lo strumento di gestione della flotta che preferisci su Linux. Claude Code cerca il file in uno di questi percorsi:

67 67 

68| Piattaforma | Percorso |68| Piattaforma | Percorso |

69| :- | :- |69| :- | :- |


71| Linux e WSL | `/etc/claude-code/managed-mcp.json` |71| Linux e WSL | `/etc/claude-code/managed-mcp.json` |

72| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |72| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |

73 73 

74Il file utilizza lo stesso formato di un file [`.mcp.json`](/docs/it/mcp#project-scope) del progetto:74Il file usa lo stesso formato di un file [`.mcp.json`](/docs/it/mcp#project-scope) di progetto:

75 75 

76```json theme={null}76```json theme={null}

77{77{


100 Autenticarsi con credenziali per utente100 Autenticarsi con credenziali per utente

101</h3>101</h3>

102 102 

103Qualsiasi utente sulla macchina può leggere questo file, quindi non memorizzare chiavi API o altre credenziali nei blocchi `env`. Passa credenziali per utente con uno di questi:103Qualsiasi utente della macchina può leggere questo file, quindi non memorizzare chiavi API o altre credenziali nei blocchi `env`. Passa invece le credenziali per utente con uno di questi metodi:

104 104 

105* [Espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json) per leggere i segreti dall'ambiente di ogni utente.105* [Espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json) per leggere i segreti dall'ambiente di ciascun utente.

106* [OAuth o intestazioni per utente](/docs/it/mcp#authenticate-with-remote-mcp-servers) in modo che ogni utente si autentichi come se stesso.106* [OAuth o header per utente](/docs/it/mcp#authenticate-with-remote-mcp-servers) in modo che ogni utente si autentichi con la propria identità.

107* [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) per generare credenziali al momento della connessione.107* [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) per generare le credenziali al momento della connessione.

108 108 

109<h3 id="servers-passed-with-mcp-config-or-strict-mcp-config">109<h3 id="servers-passed-with-mcp-config-or-strict-mcp-config">

110 Server passati con `--mcp-config` o `--strict-mcp-config`110 Server passati con `--mcp-config` o `--strict-mcp-config`

111</h3>111</h3>

112 112 

113Quando una sessione riceve server attraverso `--mcp-config` mentre un `managed-mcp.json` che Claude Code può leggere e analizzare è distribuito, ciò che l'utente vede differisce tra una workstation e una sessione cloud:113Quando una sessione riceve server tramite `--mcp-config` mentre è distribuito un `managed-mcp.json` che Claude Code può leggere e analizzare, ciò che l'utente vede differisce tra una workstation e una sessione cloud:

114 114 

115* Su una workstation, Claude Code esce all'avvio con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.115* Su una workstation, Claude Code termina all'avvio con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

116* Nelle [sessioni cloud](/docs/it/claude-code-on-the-web) su un host dove il file è distribuito, come un [runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), Claude Code si avvia solo con i server gestiti e salta i connettori claude.ai e gli altri server che l'host cloud fornisce attraverso `--mcp-config`. Nulla nella sessione comunica all'utente quali server sono stati omessi. Claude Code li nomina in un avviso su stderr, che un runner self-hosted registra al livello di log `debug`.116* Nelle [sessioni cloud](/docs/it/claude-code-on-the-web) su un host in cui il file è distribuito, come un [runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), Claude Code si avvia solo con i server gestiti e ignora i connettori claude.ai e gli altri server che l'host cloud fornisce tramite `--mcp-config`. Nulla nella sessione indica all'utente quali server sono stati esclusi. Claude Code li elenca in un avviso sul proprio stderr, che un runner self-hosted registra al livello di log `debug`.

117 117 

118Il flag `--strict-mcp-config` chiede di sostituire il set gestito. Se un utente lo passa mentre tale file è distribuito, Claude Code esce all'avvio sia su una workstation che in una sessione cloud.118Il flag `--strict-mcp-config` richiede di sostituire il set gestito. Se un utente lo passa mentre è distribuito un file di questo tipo, Claude Code termina all'avvio sia su una workstation sia in una sessione cloud.

119 119 

120<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">120<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">

121 Come allowlist e denylists si applicano al set gestito121 Come si applicano allowlist e denylist al set gestito

122</h3>122</h3>

123 123 

124La denylist può filtrare ulteriormente i server in `managed-mcp.json`:124La denylist può filtrare ulteriormente i server in `managed-mcp.json`:

125 125 

126* `deniedMcpServers` si applica anche ai server gestiti, quindi un server gestito che corrisponde a una voce non verrà caricato.126* `deniedMcpServers` si applica anche ai server gestiti, quindi un server gestito che corrisponde a una voce non verrà caricato.

127* La propria `deniedMcpServers` di un utente si unisce dalle sue impostazioni, quindi gli utenti possono bloccare un server gestito per se stessi.127* Il `deniedMcpServers` di un utente viene unito tramite merge dalle sue impostazioni, quindi gli utenti possono bloccare un server gestito per se stessi.

128 128 

129`allowedMcpServers` non si applica ai server in `managed-mcp.json`, con un'eccezione: Claude Code controlla comunque un server la cui definizione utilizza [espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json) rispetto all'allowlist, perché la configurazione effettiva di quel server proviene dall'ambiente di ogni utente piuttosto che dal file solo. Prima della v2.1.259, ogni server gestito doveva passare l'allowlist ogni volta che uno era impostato. Vedi [Come viene valutato un server](#how-a-server-is-evaluated) per quali campi attivano il controllo `${VAR}` e l'ordine completo dei controlli.129`allowedMcpServers` non si applica ai server in `managed-mcp.json`, con un'eccezione: Claude Code verifica comunque rispetto all'allowlist un server la cui definizione usa l'[espansione `${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json), perché la configurazione effettiva di quel server deriva dall'ambiente di ciascun utente anziché dal solo file. Prima della v2.1.259, ogni server gestito doveva superare l'allowlist ogni volta che ne era impostata una. Consulta [Come viene valutato un server](#how-a-server-is-evaluated) per sapere quali campi attivano il controllo `${VAR}` e l'ordine completo dei controlli.

130 130 

131Se hai utilizzato `allowedMcpServers` per impedire il caricamento di alcuni dei tuoi server `managed-mcp.json`, quei server inizieranno a caricarsi al primo avvio di v2.1.259 o successivo di ogni utente a meno che non utilizzino l'espansione `${VAR}`, senza prompt o avviso: solo `deniedMcpServers` continua a sottrarre da quei server. Aggiungi voci di denylist per loro, o distribuisci un `managed-mcp.json` separato per gruppo, prima che i tuoi utenti eseguano l'upgrade.131Se usavi `allowedMcpServers` per impedire il caricamento di alcuni dei tuoi server di `managed-mcp.json`, quei server iniziano a essere caricati al primo avvio della v2.1.259 o successiva da parte di ciascun utente, a meno che non usino l'espansione `${VAR}`, senza alcuna richiesta o avviso: solo `deniedMcpServers` continua a escludere quei server. Aggiungi voci della denylist per loro, oppure distribuisci un `managed-mcp.json` separato per ciascun gruppo, prima che i tuoi utenti eseguano l'aggiornamento.

132 132 

133<h3 id="validate-the-configuration">133<h3 id="validate-the-configuration">

134 Convalidare la configurazione134 Convalidare la configurazione

135</h3>135</h3>

136 136 

137Per confermare che il file è in vigore, esegui due controlli su una macchina gestita:137Per confermare che il file sia effettivo, esegui due controlli su una macchina gestita:

138 138 

1391. `claude mcp list` mostra solo i server in `managed-mcp.json`, più quelli che fornisci attraverso `managedMcpServers`. Due altri risultati significano che qualcosa non va:1391. `claude mcp list` mostra solo i server in `managed-mcp.json`, più quelli che fornisci tramite `managedMcpServers`. Altri due risultati indicano un problema:

140 * Se i server propri di un utente appaiono ancora, Claude Code non sta leggendo il file, quindi controlla il percorso e le autorizzazioni sulle sue directory padre.140 * Se compaiono ancora i server propri di un utente, Claude Code non sta leggendo il file, quindi controlla il percorso e i permessi delle directory padre.

141 * Se i server del file non appaiono e la sezione `MCP config diagnostics` contrassegna la configurazione aziendale come non riuscita a analizzare, Claude Code non può leggere o analizzare il file. Correggi l'errore che quella sezione nomina, quindi fai riavviare Claude Code all'utente.141 * Se i server del file non compaiono e la sezione `MCP config diagnostics` indica che l'analisi della configurazione enterprise non è riuscita, Claude Code non riesce a leggere o analizzare il file. Correggi l'errore indicato in quella sezione, quindi chiedi all'utente di riavviare Claude Code.

1422. `claude mcp add --transport http test https://example.com/mcp` fallisce con `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. L'URL non deve essere un server reale, poiché il controllo della policy rifiuta il comando prima che qualsiasi cosa venga contattata.1422. `claude mcp add --transport http test https://example.com/mcp` non riesce con `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`. Non è necessario che l'URL corrisponda a un server reale, poiché il controllo della policy rifiuta il comando prima di contattare qualsiasi cosa.

143 143 

144<h3 id="disable-mcp-entirely">144<h3 id="disable-mcp-entirely">

145 Disabilitare MCP completamente145 Disabilitare completamente MCP

146</h3>146</h3>

147 147 

148Distribuisci un `managed-mcp.json` contenente una mappa di server vuota per bloccare ogni server MCP a parte i [server in-process che l'app che ha avviato la sessione registra, come il server proprio dell'estensione VS Code o i connettori che l'app desktop fornisce](#exclusive-control-with-managed-mcp-json):148Distribuisci un `managed-mcp.json` contenente una mappa di server vuota per bloccare ogni server MCP tranne quelli che [vengono caricati in regime di controllo esclusivo](#exclusive-control-with-managed-mcp-json):

149 149 

150```json theme={null}150```json theme={null}

151{151{


153}153}

154```154```

155 155 

156`claude mcp add` fallisce con l'errore di policy aziendale di cui sopra. I server che gli utenti avevano precedentemente configurato smettono di caricarsi la prossima volta che avviano una sessione, senza avviso che la policy è il motivo. I server che fornisci attraverso `managedMcpServers`, e qualsiasi altra cosa tu consenta insieme al set gestito, si caricano comunque sotto una mappa vuota, quindi lascia quelle chiavi non impostate per disabilitare MCP completamente.156`claude mcp add` non riesce con l'errore della policy enterprise indicato sopra. I server configurati in precedenza dagli utenti smettono di essere caricati al successivo avvio di una sessione, senza alcun avviso che ne indichi la policy come causa. I server che fornisci tramite `managedMcpServers`, e qualsiasi altro elemento che consenti insieme al set gestito, vengono comunque caricati anche con una mappa vuota, quindi lascia queste chiavi non impostate per disattivare completamente MCP.

157 157 

158<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">158<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">

159 Consentire i connettori claude.ai insieme al set gestito159 Consentire i connettori claude.ai insieme al set gestito

160</h3>160</h3>

161 161 

162Per impostazione predefinita, la distribuzione di `managed-mcp.json` sopprime i [connettori claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai) che Claude Code recupera da solo, inclusi i connettori che un amministratore ha configurato per l'organizzazione nella console di amministrazione claude.ai. Per caricare quei connettori insieme ai server in `managed-mcp.json`, imposta `"allowAllClaudeAiMcps": true` in una [fonte di impostazioni gestite](/docs/it/admin-setup#decide-how-settings-reach-devices).162Per impostazione predefinita, la distribuzione di `managed-mcp.json` sopprime i [connettori claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai) che Claude Code recupera autonomamente, inclusi i connettori che un amministratore ha configurato per l'organizzazione nella console di amministrazione di claude.ai. Per caricare quei connettori insieme ai server in `managed-mcp.json`, imposta `"allowAllClaudeAiMcps": true` in una [fonte di impostazioni gestite](/docs/it/admin-setup#decide-how-settings-reach-devices).

163 163 

164Con l'impostazione abilitata, Claude Code carica gli stessi connettori claude.ai che caricherrebbe se `managed-mcp.json` non fosse distribuito. [Allowlist e denylists](#policy-based-control-with-allowlists-and-denylists) si applicano comunque a quei connettori, quindi puoi bloccare quelli specifici con `deniedMcpServers`. L'impostazione influisce solo sui connettori claude.ai che Claude Code recupera da solo; i server forniti dai plugin rimangono soppressi.164Con l'impostazione attivata, Claude Code carica gli stessi connettori claude.ai che caricherebbe se `managed-mcp.json` non fosse distribuito. [Allowlist e denylist](#policy-based-control-with-allowlists-and-denylists) si applicano comunque a quei connettori, quindi puoi bloccarne alcuni specifici con `deniedMcpServers`. L'impostazione riguarda solo i connettori claude.ai che Claude Code recupera autonomamente; i server forniti dai plugin restano soppressi.

165 165 

166Le sessioni cloud e le sessioni locali e SSH dell'app desktop ricevono i connettori in un altro modo, descritto in [Come i connettori raggiungono Claude Code](/docs/it/mcp#how-connectors-reach-claude-code). Un `managed-mcp.json` sull'host che esegue una sessione cloud, come un [host runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), sopprime i connettori di quella sessione indipendentemente dal fatto che tu imposti `allowAllClaudeAiMcps`. Nessun `managed-mcp.json` raggiunge i connettori che l'app desktop fornisce alle sue sessioni locali e SSH.166Le sessioni cloud e le sessioni locali e SSH dell'app desktop ricevono i connettori in un altro modo, descritto in [Come i connettori raggiungono Claude Code](/docs/it/mcp#how-connectors-reach-claude-code). Un `managed-mcp.json` sull'host che esegue una sessione cloud, come un [host di runner self-hosted](/docs/it/self-hosted-environments-configuration#mcp-servers), sopprime i connettori di quella sessione indipendentemente dal fatto che tu imposti `allowAllClaudeAiMcps`. Nessun `managed-mcp.json` raggiunge i connettori che l'app desktop fornisce alle proprie sessioni locali e SSH.

167 167 

168Claude Code legge `allowAllClaudeAiMcps` solo dai livelli di policy controllati dall'amministratore: impostazioni gestite dal server, una chiave plist distribuita da MDM o una chiave di registro HKLM, o un file `managed-settings.json` di sistema. Posizionarlo nelle impostazioni utente o progetto non ha effetto, quindi gli utenti non possono riabilitare i connettori che il controllo esclusivo ha soppresso.168Claude Code legge `allowAllClaudeAiMcps` solo dai livelli di policy controllati dall'amministratore: impostazioni gestite dal server, un plist distribuito tramite MDM o una chiave di registro HKLM, oppure un file `managed-settings.json` di sistema. Inserirla nelle impostazioni utente o di progetto non ha alcun effetto, quindi gli utenti non possono riattivare i connettori soppressi dal controllo esclusivo.

169 169 

170<h3 id="allow-claude-in-chrome-alongside-the-managed-set">170<h3 id="allow-claude-in-chrome-alongside-the-managed-set">

171 Consentire Claude in Chrome insieme al set gestito171 Consentire Claude in Chrome insieme al set gestito

172</h3>172</h3>

173 173 

174Per impostazione predefinita, quando distribuisci `managed-mcp.json`, Claude Code blocca il server integrato [Claude in Chrome](/docs/it/chrome) nelle sessioni di terminale. Gli utenti non ricevono il [prompt di installazione dell'estensione](/docs/it/chrome#install-the-extension-when-claude-asks), e una sessione in cui l'utente ha [abilitato Chrome per impostazione predefinita](/docs/it/chrome#enable-chrome-by-default) si avvia senza Chrome e non stampa alcun avviso. Quando un utente che potrebbe altrimenti eseguire Claude in Chrome lo avvia con `claude --chrome` o `CLAUDE_CODE_ENABLE_CFC=1`, Claude Code esce all'avvio con un errore che nomina l'impostazione `allowClaudeInChromeWithManagedMcp`.174Per impostazione predefinita, quando distribuisci `managed-mcp.json`, Claude Code blocca il server integrato [Claude in Chrome](/docs/it/chrome) nelle sessioni del terminale. Gli utenti non ricevono la [richiesta di installazione dell'estensione](/docs/it/chrome#install-the-extension-when-claude-asks), e una sessione in cui l'utente ha [attivato Chrome per impostazione predefinita](/docs/it/chrome#enable-chrome-by-default) si avvia senza di esso e non mostra alcun avviso. Se un utente che altrimenti potrebbe eseguire Claude in Chrome avvia `claude --chrome`, Claude Code termina all'avvio con un errore che indica l'impostazione `allowClaudeInChromeWithManagedMcp`.

175 175 

176Per consentire agli utenti di eseguire Claude in Chrome insieme ai server in `managed-mcp.json`, imposta `"allowClaudeInChromeWithManagedMcp": true` nelle impostazioni gestite del dispositivo. Inseriscilo in una chiave plist distribuita da MDM o una chiave di registro HKLM, o un file `managed-settings.json` di sistema, a seconda di quale Claude Code [seleziona](/docs/it/managed-settings#precedence-within-the-managed-tier) su quel dispositivo. Richiede Claude Code v2.1.282 o successivo. Prima della v2.1.282, Claude Code ignora l'impostazione, e il messaggio di errore all'avvio recita `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.176Per consentire agli utenti di eseguire Claude in Chrome insieme al set gestito, imposta `"allowClaudeInChromeWithManagedMcp": true` nelle impostazioni gestite proprie del dispositivo. Inseriscila in un plist distribuito tramite MDM, in una chiave di registro HKLM o in un file `managed-settings.json` di sistema, a seconda di quale di queste fonti Claude Code [seleziona](/docs/it/managed-settings#precedence-within-the-managed-tier) su quel dispositivo. Richiede Claude Code v2.1.282 o successiva. Claude Code legge l'impostazione solo da queste fonti del dispositivo, anche quando le [impostazioni gestite dal server](/docs/it/server-managed-settings) forniscono il resto della tua policy. Una voce di [`deniedMcpServers`](#policy-based-control-with-allowlists-and-denylists) per `claude-in-chrome` blocca comunque il server anche con l'impostazione attivata.

177 

178Claude Code legge l'impostazione da quelle fonti di dispositivo anche quando [impostazioni gestite dal server](/docs/it/server-managed-settings) forniscono il resto della tua policy. Ignora l'impostazione nelle impostazioni gestite dal server stesse, nel registro HKCU scrivibile dall'utente, e nelle impostazioni utente o progetto. Una voce [`deniedMcpServers`](#policy-based-control-with-allowlists-and-denylists) per `claude-in-chrome` blocca comunque il server con l'impostazione attiva.

179 177 

180<h2 id="provide-servers-through-managed-settings">178<h2 id="provide-servers-through-managed-settings">

181 Fornire server tramite impostazioni gestite179 Fornire server tramite impostazioni gestite

Details

729| Un target che è solo l'output di una sostituzione di comando, quando `rm` è ricorsivo | `rm -rf "$(pwd)"` | Claude Code non può controllare il target prima che il comando venga eseguito |729| Un target che è solo l'output di una sostituzione di comando, quando `rm` è ricorsivo | `rm -rf "$(pwd)"` | Claude Code non può controllare il target prima che il comando venga eseguito |

730| Una sostituzione di comando finale dopo un percorso critico | `rm -rf ~/$(cmd)` | Claude Code controlla il percorso che rimarrebbe se la sostituzione si espandesse vuota, qui la tua directory home |730| Una sostituzione di comando finale dopo un percorso critico | `rm -rf ~/$(cmd)` | Claude Code controlla il percorso che rimarrebbe se la sostituzione si espandesse vuota, qui la tua directory home |

731| Un target che è solo backslash | `rm -rf "\\"` | Git Bash su Windows legge un singolo backslash come la radice dell'unità corrente, quindi il controllo si applica su ogni piattaforma |731| Un target che è solo backslash | `rm -rf "\\"` | Git Bash su Windows legge un singolo backslash come la radice dell'unità corrente, quindi il controllo si applica su ogni piattaforma |

732| Alcuni target che terminano con `/*` o `/*/` | `rm -rf logs/*/*`, `rm -rf logs/*/`, `cd logs && rm -rf a/*` | Claude Code non può sapere, prima che il comando venga eseguito, quali directory raggiungono |

732 733 

733Per disattivare il controllo su un target che è solo output di sostituzione di comando, imposta [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/it/env-vars#variables) nell'ambiente che avvia Claude Code.734Per disattivare il controllo su un target che è solo output di sostituzione di comando, imposta [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/it/env-vars#variables) nell'ambiente che avvia Claude Code.

734 735