SpyBara
Go Premium

Documentation 2026-07-20 23:01 UTC to 2026-07-21 23:00 UTC

8 files changed +295 −236. View all changes and history on the product overview
2026
Tue 21 23:00 Mon 20 23:01 Sat 18 16:02 Fri 17 22:57 Thu 16 22:59 Wed 15 22:00 Tue 14 23:01 Mon 13 23:57 Sat 11 19:03 Fri 10 17:00 Thu 9 23:58 Wed 8 16:02 Tue 7 16:02 Mon 6 23:57 Sat 4 03:01 Fri 3 23:00 Thu 2 23:59 Wed 1 21:01
Details

6 6 

7> Registrare il gateway con il vostro IdP, costruire il container, distribuire su Kubernetes o Cloud Run, e gestirlo: controlli di integrità, rotazione dei segreti, aggiornamenti e sicurezza.7> Registrare il gateway con il vostro IdP, costruire il container, distribuire su Kubernetes o Cloud Run, e gestirlo: controlli di integrità, rotazione dei segreti, aggiornamenti e sicurezza.

8 8 

9Questa pagina copre il lato operativo dell'esecuzione del [gateway delle app Claude](/it/claude-apps-gateway): registrazione di un client OAuth nel vostro provider di identità (IdP), distribuzione del gateway come container, e gestione quotidiana. Per ogni opzione nel file `gateway.yaml` che il gateway legge all'avvio, consultare il [Riferimento di configurazione](/it/claude-apps-gateway-config).9Questa pagina copre il lato operativo dell'esecuzione del [gateway delle app Claude](/docs/it/claude-apps-gateway): registrazione di un client OAuth nel vostro provider di identità (IdP), distribuzione del gateway come container, e gestione quotidiana. Per ogni opzione nel file `gateway.yaml` che il gateway legge all'avvio, consultare il [Riferimento di configurazione](/docs/it/claude-apps-gateway-config).

10 10 

11Una distribuzione in produzione segue quattro passaggi in ordine, e le sezioni sottostanti li corrispondono. I primi due sono dove fate scelte; i secondi due sono materiale di riferimento da consultare una volta che è in esecuzione.11Una distribuzione in produzione segue quattro passaggi in ordine, e le sezioni sottostanti li corrispondono. I primi due sono dove fate scelte; i secondi due sono materiale di riferimento da consultare una volta che è in esecuzione.

12 12 


31 31 

32Qualsiasi IdP conforme a OIDC funziona: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate e altri. L'IdP deve soddisfare tre requisiti:32Qualsiasi IdP conforme a OIDC funziona: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate e altri. L'IdP deve soddisfare tre requisiti:

33 33 

34* Serve `/.well-known/openid-configuration`, su HTTPS in produzione; il gateway accetta un [`http://` issuer](/it/claude-apps-gateway-config#oidc), e un issuer loopback richiede inoltre `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`34* Serve `/.well-known/openid-configuration`, su HTTPS in produzione; il gateway accetta un [`http://` issuer](/docs/it/claude-apps-gateway-config#oidc), e un issuer loopback richiede inoltre `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`

35* Supporta il flusso authorization-code. PKCE (Proof Key for Code Exchange) è attivo per impostazione predefinita; disabilitalo con `oidc.use_pkce: false` per IdP che non lo supportano35* Supporta il flusso authorization-code. PKCE (Proof Key for Code Exchange) è attivo per impostazione predefinita; disabilitalo con `oidc.use_pkce: false` per IdP che non lo supportano

36* Restituisce `email` e facoltativamente `groups` nell'id\_token, o li serve dall'endpoint userinfo con `oidc.userinfo_fallback: true`36* Restituisce `email` e facoltativamente `groups` nell'id\_token, o li serve dall'endpoint userinfo con `oidc.userinfo_fallback: true`

37 37 


41 41 

42* **Okta**: il server di autorizzazione dell'organizzazione in `https://example.okta.com` restituisce un id\_token sottile che omette `email` e `groups`, quindi imposta `oidc.userinfo_fallback: true` ogni volta che lo usi come `issuer`. Un server di autorizzazione personalizzato come `https://example.okta.com/oauth2/default` che include `email` e facoltativamente `groups` nell'id\_token li emette direttamente e non ha bisogno di fallback. Okta emette `groups` solo quando lo scope `groups` è richiesto in `oidc.scopes` e il filtro dei claim dei gruppi dell'app lo consente; `userinfo_fallback` non può riempire un claim per il quale l'IdP non è stato interrogato.42* **Okta**: il server di autorizzazione dell'organizzazione in `https://example.okta.com` restituisce un id\_token sottile che omette `email` e `groups`, quindi imposta `oidc.userinfo_fallback: true` ogni volta che lo usi come `issuer`. Un server di autorizzazione personalizzato come `https://example.okta.com/oauth2/default` che include `email` e facoltativamente `groups` nell'id\_token li emette direttamente e non ha bisogno di fallback. Okta emette `groups` solo quando lo scope `groups` è richiesto in `oidc.scopes` e il filtro dei claim dei gruppi dell'app lo consente; `userinfo_fallback` non può riempire un claim per il quale l'IdP non è stato interrogato.

43* **Microsoft Entra ID**: `issuer` = `https://login.microsoftonline.com/<tenant-id>/v2.0`. Entra emette Object ID dei gruppi piuttosto che nomi, quindi usa i GUID in `managed.policies.match.groups`, o usa App Roles per nomi leggibili. Se il tuo tenant emette ruoli sotto `roles` invece di `groups`, imposta `oidc.groups_claim: roles`.43* **Microsoft Entra ID**: `issuer` = `https://login.microsoftonline.com/<tenant-id>/v2.0`. Entra emette Object ID dei gruppi piuttosto che nomi, quindi usa i GUID in `managed.policies.match.groups`, o usa App Roles per nomi leggibili. Se il tuo tenant emette ruoli sotto `roles` invece di `groups`, imposta `oidc.groups_claim: roles`.

44* **Google Workspace**: `issuer` = `https://accounts.google.com`. L'id\_token di Google non contiene gruppi. Per usare `allowed_groups` basato su gruppi o `managed.policies` con Google come IdP, configura [`oidc.google_groups`](/it/claude-apps-gateway-config#oidc), che cerca i gruppi di ogni utente tramite l'API Admin SDK Directory usando un account di servizio con delega a livello di dominio. Senza di esso, usa `oidc.allowed_email_domains` per il gating dell'appartenenza e `managed.policies.match.email_domain` per l'assegnazione della policy. Google ignora anche lo scope standard `offline_access`. Per i token di aggiornamento, imposta `oidc.scopes: [openid, profile, email]` e `oidc.extra_auth_params: { access_type: offline, prompt: consent }`.44* **Google Workspace**: `issuer` = `https://accounts.google.com`. L'id\_token di Google non contiene gruppi. Per usare `allowed_groups` basato su gruppi o `managed.policies` con Google come IdP, configura [`oidc.google_groups`](/docs/it/claude-apps-gateway-config#oidc), che cerca i gruppi di ogni utente tramite l'API Admin SDK Directory usando un account di servizio con delega a livello di dominio. Senza di esso, usa `oidc.allowed_email_domains` per il gating dell'appartenenza e `managed.policies.match.email_domain` per l'assegnazione della policy. Google ignora anche lo scope standard `offline_access`. Per i token di aggiornamento, imposta `oidc.scopes: [openid, profile, email]` e `oidc.extra_auth_params: { access_type: offline, prompt: consent }`.

45 45 

46Per supporto con un provider di identità non trattato sopra, vedi [Troubleshooting](#troubleshooting).46Per supporto con un provider di identità non trattato sopra, vedi [Troubleshooting](#troubleshooting).

47 47 

48<Warning>48<Warning>

49 I token di aggiornamento consentono al gateway di rinnovare silenziosamente la sessione di uno sviluppatore, senza inviare lo sviluppatore al browser. Guidano anche il deprovisioning, perché quando l'IdP disabilita un utente, il prossimo aggiornamento fallisce e la sessione termina entro `ttl_hours`. Il gateway richiede `offline_access` per impostazione predefinita per ottenere un token di aggiornamento. Se il tuo IdP richiede il consenso esplicito per l'accesso offline, configura il client OAuth per consentirlo.49 I token di aggiornamento consentono al gateway di rinnovare silenziosamente la sessione di uno sviluppatore, senza inviare lo sviluppatore al browser. Guidano anche il deprovisioning, perché quando l'IdP disabilita un utente, il prossimo aggiornamento fallisce e la sessione termina entro `ttl_hours`. Il gateway richiede `offline_access` per impostazione predefinita per ottenere un token di aggiornamento. Se il tuo IdP richiede il consenso esplicito per l'accesso offline, configura il client OAuth per consentirlo.

50 50 

51 Se il tuo IdP non può emettere token di aggiornamento affatto, il gateway funziona comunque, ma non c'è rinnovamento silenzioso, quindi gli sviluppatori rieseguono l'accesso al browser quando la loro sessione scade. Per evitare che ciò accada ogni ora, aumenta [`session.ttl_hours`](/it/claude-apps-gateway-config#session) a `8` o `12`. Il compromesso è la latenza di deprovisioning, perché senza token di aggiornamento un utente disabilitato mantiene l'accesso fino a quando il TTL più lungo non scade.51 Se il tuo IdP non può emettere token di aggiornamento affatto, il gateway funziona comunque, ma non c'è rinnovamento silenzioso, quindi gli sviluppatori rieseguono l'accesso al browser quando la loro sessione scade. Per evitare che ciò accada ogni ora, aumenta [`session.ttl_hours`](/docs/it/claude-apps-gateway-config#session) a `8` o `12`. Il compromesso è la latenza di deprovisioning, perché senza token di aggiornamento un utente disabilitato mantiene l'accesso fino a quando il TTL più lungo non scade.

52</Warning>52</Warning>

53 53 

54<h2 id="deployment">54<h2 id="deployment">


62Alcune decisioni modellano la distribuzione oltre a dove viene eseguita:62Alcune decisioni modellano la distribuzione oltre a dove viene eseguita:

63 63 

64* **Costo**: non c'è una licenza separata o una tassa per posto per il gateway; fa parte del binario `claude`. Paghi per l'inferenza attraverso il tuo impegno cloud o Anthropic esistente, più il calcolo per il container e il tuo collettore di telemetria.64* **Costo**: non c'è una licenza separata o una tassa per posto per il gateway; fa parte del binario `claude`. Paghi per l'inferenza attraverso il tuo impegno cloud o Anthropic esistente, più il calcolo per il container e il tuo collettore di telemetria.

65* **Bypass**: il gateway non applica che l'unica rotta a un modello passi attraverso di esso. Uno sviluppatore con la propria credenziale può comunque chiamare il provider direttamente, quindi chiudere quel percorso è una decisione di policy di rete, ad esempio bloccando l'uscita verso `api.anthropic.com` tranne dal gateway. Bloccare anche quell'uscita interrompe il [controllo di sicurezza del dominio WebFetch](/it/data-usage#webfetch-domain-safety-check), che chiama `api.anthropic.com` da ogni macchina dello sviluppatore; imposta `skipWebFetchPreflight: true` nella policy gestita per disabilitarlo.65* **Bypass**: il gateway non applica che l'unica rotta a un modello passi attraverso di esso. Uno sviluppatore con la propria credenziale può comunque chiamare il provider direttamente, quindi chiudere quel percorso è una decisione di policy di rete, ad esempio bloccando l'uscita verso `api.anthropic.com` tranne dal gateway. Bloccare anche quell'uscita interrompe il [controllo di sicurezza del dominio WebFetch](/docs/it/data-usage#webfetch-domain-safety-check), che chiama `api.anthropic.com` da ogni macchina dello sviluppatore; imposta `skipWebFetchPreflight: true` nella policy gestita per disabilitarlo.

66* **Gateway multipli**: ogni gateway è una distribuzione separata con la sua configurazione. Il CLI memorizza la sua impronta digitale di fiducia e le credenziali per nome host del gateway, quindi diversi team possono connettersi a gateway diversi senza conflitto. Per servire più emittenti OIDC, esegui istanze separate.66* **Gateway multipli**: ogni gateway è una distribuzione separata con la sua configurazione. Il CLI memorizza la sua impronta digitale di fiducia e le credenziali per nome host del gateway, quindi diversi team possono connettersi a gateway diversi senza conflitto. Per servire più emittenti OIDC, esegui istanze separate.

67* **Serverless**: Cloud Run funziona; imposta `min-instances: 1` per evitare il cold start della scoperta OIDC. Lambda e Cloud Functions no, perché il gateway è un server HTTP a lunga durata.67* **Serverless**: Cloud Run funziona; imposta `min-instances: 1` per evitare il cold start della scoperta OIDC. Lambda e Cloud Functions no, perché il gateway è un server HTTP a lunga durata.

68 68 

69Ogni topologia di produzione qui mette un proxy L7, come un Ingress, il front-end di Cloud Run, o un ALB, davanti alle repliche HTTP semplici. Imposta [`listen.trusted_proxies`](/it/claude-apps-gateway-config#listen) agli intervalli di origine del proxy in modo che il gateway legga gli IP client da `X-Forwarded-For`. Il gateway onora l'intestazione solo quando il peer TCP è affidabile; l'[esempio elaborato di Google Cloud](/it/claude-apps-gateway-on-gcp) ha valori concreti per topologia. Senza proxy affidabili, ogni richiesta sembra provenire dall'IP del proxy, il che comprime i limiti di velocità per IP in un bucket condiviso e registra l'IP del proxy negli eventi di audit.69Ogni topologia di produzione qui mette un proxy L7, come un Ingress, il front-end di Cloud Run, o un ALB, davanti alle repliche HTTP semplici. Imposta [`listen.trusted_proxies`](/docs/it/claude-apps-gateway-config#listen) agli intervalli di origine del proxy in modo che il gateway legga gli IP client da `X-Forwarded-For`. Il gateway onora l'intestazione solo quando il peer TCP è affidabile; l'[esempio elaborato di Google Cloud](/docs/it/claude-apps-gateway-on-gcp) ha valori concreti per topologia. Senza proxy affidabili, ogni richiesta sembra provenire dall'IP del proxy, il che comprime i limiti di velocità per IP in un bucket condiviso e registra l'IP del proxy negli eventi di audit.

70 70 

71<h3 id="container-image">71<h3 id="container-image">

72 Immagine del container72 Immagine del container


74 74 

75Costruisci la tua immagine attorno al binario `claude` nativo dalla versione standard di Claude Code:75Costruisci la tua immagine attorno al binario `claude` nativo dalla versione standard di Claude Code:

76 76 

771. Scarica la build Linux per l'architettura della tua immagine da una versione fissa; consulta [Installa una versione specifica](/it/setup#install-a-specific-version) per l'URL di download.771. Scarica la build Linux per l'architettura della tua immagine da una versione fissa; consulta [Installa una versione specifica](/docs/it/setup#install-a-specific-version) per l'URL di download.

782. Verificalo rispetto al `manifest.json` firmato con GPG della versione come descritto in [Integrità binaria e firma del codice](/it/setup#binary-integrity-and-code-signing).782. Verificalo rispetto al `manifest.json` firmato con GPG della versione come descritto in [Integrità binaria e firma del codice](/docs/it/setup#binary-integrity-and-code-signing).

793. Copialo nel contesto di build.793. Copialo nel contesto di build.

80 80 

81Specchia la versione nel tuo registro interno se le tue build non possono raggiungere l'host della versione, e fissa la versione che la tua flotta esegue.81Specchia la versione nel tuo registro interno se le tue build non possono raggiungere l'host della versione, e fissa la versione che la tua flotta esegue.

82 82 

83Oltre al binario, l'immagine ha bisogno di:83Oltre al binario, l'immagine ha bisogno di:

84 84 

85* **Un'immagine basata su glibc**: la build glibc ha solo dipendenze dinamiche dalle librerie glibc. Le immagini basate su Musl hanno bisogno della build `linux-x64-musl` o `linux-arm64-musl` più pacchetti aggiuntivi; consulta [Configurazione di Alpine Linux](/it/setup#alpine-linux-and-musl-based-distributions).85* **Un'immagine basata su glibc**: la build glibc ha solo dipendenze dinamiche dalle librerie glibc. Le immagini basate su Musl hanno bisogno della build `linux-x64-musl` o `linux-arm64-musl` più pacchetti aggiuntivi; consulta [Configurazione di Alpine Linux](/docs/it/setup#alpine-linux-and-musl-based-distributions).

86* **Una directory di stato scrivibile**: il gateway funziona come qualsiasi utente, ma le immagini minime non hanno home scrivibile. Imposta `CLAUDE_CONFIG_DIR` a un percorso scrivibile come `/tmp/.claude`.86* **Una directory di stato scrivibile**: il gateway funziona come qualsiasi utente, ma le immagini minime non hanno home scrivibile. Imposta `CLAUDE_CONFIG_DIR` a un percorso scrivibile come `/tmp/.claude`.

87* **Il comando del container**: `claude gateway --config /etc/claude/gateway.yaml`, con il file di configurazione montato in sola lettura e i segreti forniti come variabili di ambiente; il gateway ascolta su `listen.port`, predefinito `8080`.87* **Il comando del container**: `claude gateway --config /etc/claude/gateway.yaml`, con il file di configurazione montato in sola lettura e i segreti forniti come variabili di ambiente; il gateway ascolta su `listen.port`, predefinito `8080`.

88 88 


99<Note>99<Note>

100 **Workload identity**100 **Workload identity**

101 101 

102 Preferisci l'identità del workload della piattaforma rispetto alle chiavi statiche: IRSA su EKS per Bedrock e per Claude Platform su AWS, Workload Identity su GKE per Agent Platform, e workload identity su AKS per Foundry. Imposta `auth: {}` nel blocco upstream, o `use_azure_ad: true` per Foundry, e il gateway raccoglie l'identità del pod attraverso la catena di credenziali predefinita di quel provider. Per un accoppiamento cross-cloud, come un upstream Bedrock su GKE, imposta credenziali esplicite nel blocco `auth` dell'upstream. Il [riferimento `upstreams`](/it/claude-apps-gateway-config#upstreams) ha dettagli di configurazione per piattaforma.102 Preferisci l'identità del workload della piattaforma rispetto alle chiavi statiche: IRSA su EKS per Bedrock e per Claude Platform su AWS, Workload Identity su GKE per Agent Platform, e workload identity su AKS per Foundry. Imposta `auth: {}` nel blocco upstream, o `use_azure_ad: true` per Foundry, e il gateway raccoglie l'identità del pod attraverso la catena di credenziali predefinita di quel provider. Per un accoppiamento cross-cloud, come un upstream Bedrock su GKE, imposta credenziali esplicite nel blocco `auth` dell'upstream. Il [riferimento `upstreams`](/docs/it/claude-apps-gateway-config#upstreams) ha dettagli di configurazione per piattaforma.

103</Note>103</Note>

104 104 

105<h3 id="cloud-run">105<h3 id="cloud-run">


109Configura il servizio come segue:109Configura il servizio come segue:

110 110 

111* Lascia `listen.port` al suo predefinito di `8080`, che corrisponde al `PORT` predefinito di Cloud Run, o imposta `port: ${PORT}`111* Lascia `listen.port` al suo predefinito di `8080`, che corrisponde al `PORT` predefinito di Cloud Run, o imposta `port: ${PORT}`

112* Imposta `public_url` all'origine esternamente raggiungibile. Per la produzione questo è normalmente il nome host di un load balancer interno, perché `/login` [rifiuta gli indirizzi pubblici](/it/claude-apps-gateway#prerequisites) e l'URL `*.run.app` si risolve in uno, quindi l'URL di Cloud Run da solo funziona solo per un test di fumo `curl` o browser. L'eccezione è una rete dove `*.run.app` si risolve privatamente tramite Private Service Connect e una zona privata di Cloud DNS; in quella topologia l'URL di Cloud Run è un `public_url` valido. L'[esempio elaborato di Google Cloud](/it/claude-apps-gateway-on-gcp#deploy-the-gateway) copre entrambi.112* Imposta `public_url` all'origine esternamente raggiungibile. Per la produzione questo è normalmente il nome host di un load balancer interno, perché `/login` [rifiuta gli indirizzi pubblici](/docs/it/claude-apps-gateway#prerequisites) e l'URL `*.run.app` si risolve in uno, quindi l'URL di Cloud Run da solo funziona solo per un test di fumo `curl` o browser. L'eccezione è una rete dove `*.run.app` si risolve privatamente tramite Private Service Connect e una zona privata di Cloud DNS; in quella topologia l'URL di Cloud Run è un `public_url` valido. L'[esempio elaborato di Google Cloud](/docs/it/claude-apps-gateway-on-gcp#deploy-the-gateway) copre entrambi.

113* Monta la configurazione come volume segreto113* Monta la configurazione come volume segreto

114* Imposta `min-instances: 1` per evitare il cold start della scoperta OIDC alla prima richiesta114* Imposta `min-instances: 1` per evitare il cold start della scoperta OIDC alla prima richiesta

115 115 

116<Note>116<Note>

117 Per un esempio elaborato completo su Google Cloud, che copre Cloud Run o GKE, Cloud SQL e Secret Manager, consulta [Distribuisci su Google Cloud](/it/claude-apps-gateway-on-gcp).117 Per un esempio elaborato completo su Google Cloud, che copre Cloud Run o GKE, Cloud SQL e Secret Manager, consulta [Distribuisci su Google Cloud](/docs/it/claude-apps-gateway-on-gcp).

118</Note>118</Note>

119 119 

120<h3 id="push-the-gateway-url-to-developer-machines">120<h3 id="push-the-gateway-url-to-developer-machines">

121 Invia l'URL del gateway alle macchine degli sviluppatori121 Invia l'URL del gateway alle macchine degli sviluppatori

122</h3>122</h3>

123 123 

124Una volta che il gateway è in servizio, invia `forceLoginMethod` e `forceLoginGatewayUrl` a ogni macchina dello sviluppatore tramite impostazioni gestite, tramite MDM o scrivendo direttamente il `managed-settings.json` per OS. Senza questo, `/login` mostra il selettore di account standard senza opzione gateway. Consulta [Impostazioni gestite lato client](/it/claude-apps-gateway-config#client-side-managed-settings) per i percorsi dei file.124Una volta che il gateway è in servizio, invia `forceLoginMethod` e `forceLoginGatewayUrl` a ogni macchina dello sviluppatore tramite impostazioni gestite, tramite MDM o scrivendo direttamente il `managed-settings.json` per OS. Senza questo, `/login` mostra il selettore di account standard senza opzione gateway. Consulta [Impostazioni gestite lato client](/docs/it/claude-apps-gateway-config#client-side-managed-settings) per i percorsi dei file.

125 125 

126<h2 id="operations">126<h2 id="operations">

127 Operazioni127 Operazioni


160 160 

161* **Sessioni esistenti**: i bearer token si convalidano localmente con il segreto JWT, gli aggiornamenti della sessione non toccano lo store, e il processo del gateway può comunque servire l'inferenza161* **Sessioni esistenti**: i bearer token si convalidano localmente con il segreto JWT, gli aggiornamenti della sessione non toccano lo store, e il processo del gateway può comunque servire l'inferenza

162* **Nuovi accessi**: falliscono fino al recupero di Postgres, perché il flusso del dispositivo e i suoi contatori di limite di velocità vivono in Postgres162* **Nuovi accessi**: falliscono fino al recupero di Postgres, perché il flusso del dispositivo e i suoi contatori di limite di velocità vivono in Postgres

163* **[Applicazione del limite di spesa](/it/claude-apps-gateway-spend-limits#postgres-availability)**: fallisce aperto per impostazione predefinita durante l'interruzione, quindi l'inferenza continua a fluire; capovolgilo per fallire chiuso se preferisci bloccare piuttosto che eseguire senza misurazione163* **[Applicazione del limite di spesa](/docs/it/claude-apps-gateway-spend-limits#postgres-availability)**: fallisce aperto per impostazione predefinita durante l'interruzione, quindi l'inferenza continua a fluire; capovolgilo per fallire chiuso se preferisci bloccare piuttosto che eseguire senza misurazione

164* **Readiness**: `/readyz` segnala non-ready durante l'interruzione, quindi gli orchestrator che controllano il traffico sulla readiness rimuovono ogni replica dalla rotazione contemporaneamente. In quella topologia tutto il traffico, inclusa l'inferenza che il gateway potrebbe comunque servire, fallisce al load balancer fino al recupero di Postgres. La sonda di liveness su `/healthz` continua a passare, quindi le repliche non vengono riavviate. Punta la sonda di readiness a `/healthz` invece se preferisci che gli sviluppatori che hanno effettuato l'accesso continuino a lavorare attraverso un'interruzione dello store; il costo è che i nuovi accessi falliscono contro una replica che ancora segnala ready.164* **Readiness**: `/readyz` segnala non-ready durante l'interruzione, quindi gli orchestrator che controllano il traffico sulla readiness rimuovono ogni replica dalla rotazione contemporaneamente. In quella topologia tutto il traffico, inclusa l'inferenza che il gateway potrebbe comunque servire, fallisce al load balancer fino al recupero di Postgres. La sonda di liveness su `/healthz` continua a passare, quindi le repliche non vengono riavviate. Punta la sonda di readiness a `/healthz` invece se preferisci che gli sviluppatori che hanno effettuato l'accesso continuino a lavorare attraverso un'interruzione dello store; il costo è che i nuovi accessi falliscono contro una replica che ancora segnala ready.

165 165 

166Se il tuo IdP si arresta, le sessioni esistenti funzionano fino a `ttl_hours`, e i nuovi accessi e aggiornamenti falliscono. Imposta un `ttl_hours` più lungo se il tuo IdP ha frequenti finestre di manutenzione.166Se il tuo IdP si arresta, le sessioni esistenti funzionano fino a `ttl_hours`, e i nuovi accessi e aggiornamenti falliscono. Imposta un `ttl_hours` più lungo se il tuo IdP ha frequenti finestre di manutenzione.


191| `admin_audit` | Traccia di mutazione dell'API admin | `admin.audit_retention_days`, predefinito 365 |191| `admin_audit` | Traccia di mutazione dell'API admin | `admin.audit_retention_days`, predefinito 365 |

192| `principal_emails` | Email dell'ultimo accesso di ogni principale, nome visualizzato e gruppi IdP. Contiene PII. | `admin.identity_retention_days` dall'ultima attività, predefinito 90 |192| `principal_emails` | Email dell'ultimo accesso di ogni principale, nome visualizzato e gruppi IdP. Contiene PII. | `admin.identity_retention_days` dall'ultima attività, predefinito 90 |

193 193 

194Un ciclo di 30 secondi scade le righe `kv` oltre il loro TTL, e una pulizia oraria applica le finestre di conservazione sulle tabelle di spesa, quindi nulla cresce senza limiti. Senza [limiti di spesa](/it/claude-apps-gateway-spend-limits) configurati, solo `kv` viene scritto. Se la tua policy di sicurezza proibisce DDL dal ruolo dell'applicazione, pre-crea queste tabelle e `_migrations` con un ruolo admin e concedi al ruolo dell'app `SELECT, INSERT, UPDATE, DELETE` su ciascuno.194Un ciclo di 30 secondi scade le righe `kv` oltre il loro TTL, e una pulizia oraria applica le finestre di conservazione sulle tabelle di spesa, quindi nulla cresce senza limiti. Senza [limiti di spesa](/docs/it/claude-apps-gateway-spend-limits) configurati, solo `kv` viene scritto. Se la tua policy di sicurezza proibisce DDL dal ruolo dell'applicazione, pre-crea queste tabelle e `_migrations` con un ruolo admin e concedi al ruolo dell'app `SELECT, INSERT, UPDATE, DELETE` su ciascuno.

195 195 

196Con limiti di spesa in uso, un database perso significa perdita di tracciamento della spesa e limiti, non solo re-accessi degli sviluppatori, quindi esegui backup regolari. Per cancellare immediatamente uno sviluppatore partito piuttosto che aspettare la conservazione, esegui `DELETE FROM principal_emails WHERE principal = '<sub>'` direttamente; questo rimuove l'unica tabella che contiene la loro email, nome e gruppi. Le righe `spend` e `admin_audit` fanno riferimento solo allo pseudonimo OIDC `sub`.196Con limiti di spesa in uso, un database perso significa perdita di tracciamento della spesa e limiti, non solo re-accessi degli sviluppatori, quindi esegui backup regolari. Per cancellare immediatamente uno sviluppatore partito piuttosto che aspettare la conservazione, esegui `DELETE FROM principal_emails WHERE principal = '<sub>'` direttamente; questo rimuove l'unica tabella che contiene la loro email, nome e gruppi. Le righe `spend` e `admin_audit` fanno riferimento solo allo pseudonimo OIDC `sub`.

197 197 


218| Dati | Percorso | Inviato ad Anthropic dal gateway |218| Dati | Percorso | Inviato ad Anthropic dal gateway |

219| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------- |219| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------- |

220| Inferenza (prompt, completamenti) | CLI → gateway → il tuo upstream | Solo se l'API Anthropic è un upstream configurato |220| Inferenza (prompt, completamenti) | CLI → gateway → il tuo upstream | Solo se l'API Anthropic è un upstream configurato |

221| Telemetria (metriche OTLP, più [log e tracce opt-in](/it/claude-apps-gateway-config#telemetry)) | CLI → gateway → il tuo collettore | Mai |221| Telemetria (metriche OTLP, più [log e tracce opt-in](/docs/it/claude-apps-gateway-config#telemetry)) | CLI → gateway → il tuo collettore | Mai |

222| Identità (email, gruppi, sub) | IdP → gateway → JWT → CLI; il CLI lo marca sulle esportazioni OTLP | Mai |222| Identità (email, gruppi, sub) | IdP → gateway → JWT → CLI; il CLI lo marca sulle esportazioni OTLP | Mai |

223| Impostazioni gestite | Il tuo gateway YAML → CLI | Mai |223| Impostazioni gestite | Il tuo gateway YAML → CLI | Mai |

224| Log di audit | Gateway stderr → il tuo aggregatore | Mai |224| Log di audit | Gateway stderr → il tuo aggregatore | Mai |


237 237 

238Due minacce sono fuori ambito perché sono la tua infrastruttura da proteggere:238Due minacce sono fuori ambito perché sono la tua infrastruttura da proteggere:

239 239 

240* **Un host gateway compromesso**: l'host sia contiene la credenziale upstream che distribuisce [impostazioni gestite](/it/claude-apps-gateway-config#managed) a ogni sviluppatore connesso, quindi il controllo sulla configurazione del gateway è paragonabile al controllo sul tuo MDM. La finestra di dialogo di approvazione una tantum del CLI per le impostazioni in grado di shell limita i cambiamenti silenziosi ma non sostituisce la sicurezza dell'host.240* **Un host gateway compromesso**: l'host sia contiene la credenziale upstream che distribuisce [impostazioni gestite](/docs/it/claude-apps-gateway-config#managed) a ogni sviluppatore connesso, quindi il controllo sulla configurazione del gateway è paragonabile al controllo sul tuo MDM. La finestra di dialogo di approvazione una tantum del CLI per le impostazioni in grado di shell limita i cambiamenti silenziosi ma non sostituisce la sicurezza dell'host.

241* **Un provider OIDC malintenzionato**: il provider firma gli id\_token che il gateway si fida, quindi può asserire qualsiasi identità. Il vetting e la protezione del tuo IdP è tua responsabilità.241* **Un provider OIDC malintenzionato**: il provider firma gli id\_token che il gateway si fida, quindi può asserire qualsiasi identità. Il vetting e la protezione del tuo IdP è tua responsabilità.

242 242 

243<h3 id="user-code-brute-force-resistance">243<h3 id="user-code-brute-force-resistance">


246 246 

247Il `user_code` che uno sviluppatore digita nella pagina di verifica `/device` è di 8 caratteri tratti da un alfabeto di 20 caratteri, che produce 20⁸ o circa 2,56×10¹⁰ combinazioni, e scade dopo 10 minuti.247Il `user_code` che uno sviluppatore digita nella pagina di verifica `/device` è di 8 caratteri tratti da un alfabeto di 20 caratteri, che produce 20⁸ o circa 2,56×10¹⁰ combinazioni, e scade dopo 10 minuti.

248 248 

249Il gateway applica limiti di velocità per IP sugli endpoint di concessione del dispositivo, configurabili tramite [`rate_limits`](/it/claude-apps-gateway-config#http-tuning). Aumenta i limiti se molti sviluppatori accedono da un singolo indirizzo NAT aziendale condiviso. I limiti si applicano solo al flusso di accesso, non all'inferenza.249Il gateway applica limiti di velocità per IP sugli endpoint di concessione del dispositivo, configurabili tramite [`rate_limits`](/docs/it/claude-apps-gateway-config#http-tuning). Aumenta i limiti se molti sviluppatori accedono da un singolo indirizzo NAT aziendale condiviso. I limiti si applicano solo al flusso di accesso, non all'inferenza.

250 250 

251<h3 id="compliance-posture">251<h3 id="compliance-posture">

252 Postura di conformità252 Postura di conformità


255* **Residenza dei dati**: il piano dati del gateway stesso non invia nulla ad Anthropic a meno che l'API Anthropic non sia un upstream configurato; quando lo è, il tuo accordo di gestione dei dati esistente si applica al percorso di inferenza. Telemetria, audit, identità e impostazioni vanno solo alle destinazioni che configuri.255* **Residenza dei dati**: il piano dati del gateway stesso non invia nulla ad Anthropic a meno che l'API Anthropic non sia un upstream configurato; quando lo è, il tuo accordo di gestione dei dati esistente si applica al percorso di inferenza. Telemetria, audit, identità e impostazioni vanno solo alle destinazioni che configuri.

256* **Traffico del processo host**: il processo host è il CLI di Claude Code, che può inviare analitiche di avvio e controlli di aggiornamento ad Anthropic. Per distribuzioni con uscita ristretta, imposta `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` nell'ambiente del container del gateway.256* **Traffico del processo host**: il processo host è il CLI di Claude Code, che può inviare analitiche di avvio e controlli di aggiornamento ad Anthropic. Per distribuzioni con uscita ristretta, imposta `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` nell'ambiente del container del gateway.

257* **Analitiche client**: il CLI disabilita la sua stessa analittica di utilizzo mentre è connesso a un gateway, e la segnalazione degli errori è disattivata per impostazione predefinita su superfici API di terze parti.257* **Analitiche client**: il CLI disabilita la sua stessa analittica di utilizzo mentre è connesso a un gateway, e la segnalazione degli errori è disattivata per impostazione predefinita su superfici API di terze parti.

258* **Macchine client**: i CLI degli sviluppatori inviano comunque controlli del nome host WebFetch e controlli della versione ad Anthropic a meno che `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` e `skipWebFetchPreflight: true` non siano impostati. Consulta [utilizzo dei dati](/it/data-usage).258* **Macchine client**: i CLI degli sviluppatori inviano comunque controlli del nome host WebFetch e controlli della versione ad Anthropic a meno che `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` e `skipWebFetchPreflight: true` non siano impostati. Consulta [utilizzo dei dati](/docs/it/data-usage).

259* **Valutazioni del sondaggio**: la credenziale del gateway disabilita il sink di valutazione legato ad Anthropic, quindi le valutazioni non vengono inviate ad Anthropic.259* **Valutazioni del sondaggio**: la credenziale del gateway disabilita il sink di valutazione legato ad Anthropic, quindi le valutazioni non vengono inviate ad Anthropic.

260* **Condivisione della trascrizione**: scegliere Sì su un prompt di condivisione della trascrizione di un sondaggio scrive un file locale sotto `~/.claude/feedback-bundles/` invece di caricare su Anthropic.260* **Condivisione della trascrizione**: scegliere Sì su un prompt di condivisione della trascrizione di un sondaggio scrive un file locale sotto `~/.claude/feedback-bundles/` invece di caricare su Anthropic.

261* **Aggiornamenti client**: i controlli di aggiornamento sono separati dal traffico del gateway. Fissa le versioni attraverso la tua distribuzione e imposta `DISABLE_UPDATES` se i laptop non devono recuperare le versioni. `DISABLE_AUTOUPDATER` interrompe solo gli aggiornamenti in background mentre `claude update` funziona ancora.261* **Aggiornamenti client**: i controlli di aggiornamento sono separati dal traffico del gateway. Fissa le versioni attraverso la tua distribuzione e imposta `DISABLE_UPDATES` se i laptop non devono recuperare le versioni. `DISABLE_AUTOUPDATER` interrompe solo gli aggiornamenti in background mentre `claude update` funziona ancora.

262* **TLS**: servi `public_url` su HTTPS in produzione, sia dal listener proprio del gateway tramite `listen.tls` che da un ingress che termina TLS davanti alle repliche HTTP semplici con `listen.public_url` impostato. Il gateway non rifiuta HTTP semplice. L'IdP deve servire HTTPS in produzione, e Postgres supporta `?sslmode=require`. Imposta `Strict-Transport-Security` al tuo ingress.262* **TLS**: servi `public_url` su HTTPS in produzione, sia dal listener proprio del gateway tramite `listen.tls` che da un ingress che termina TLS davanti alle repliche HTTP semplici con `listen.public_url` impostato. Il gateway non rifiuta HTTP semplice. L'IdP deve servire HTTPS in produzione, e Postgres supporta `?sslmode=require`. Imposta `Strict-Transport-Security` al tuo ingress.

263* **Divulgazione di vulnerabilità**: segui [Segnalazione di problemi di sicurezza](/it/security#reporting-security-issues)263* **Divulgazione di vulnerabilità**: segui [Segnalazione di problemi di sicurezza](/docs/it/security#reporting-security-issues)

264 264 

265<h2 id="troubleshooting">265<h2 id="troubleshooting">

266 Risoluzione dei problemi266 Risoluzione dei problemi


272* **Problema di accesso**: lo sviluppatore esegue `claude --debug-file ./claude-debug.txt`, riproduce, e invia quel file più il log di audit del gateway per la stessa finestra272* **Problema di accesso**: lo sviluppatore esegue `claude --debug-file ./claude-debug.txt`, riproduce, e invia quel file più il log di audit del gateway per la stessa finestra

273* **Problema di inferenza**: il modello richiesto, gli upstream configurati, e il log di audit del gateway per la richiesta, che registra quale upstream l'ha servita e lo stato della risposta273* **Problema di inferenza**: il modello richiesto, gli upstream configurati, e il log di audit del gateway per la richiesta, che registra quale upstream l'ha servita e lo stato della risposta

274 274 

275Lo stderr del gateway include il flusso di eventi di audit, il log di audit registra le identità degli sviluppatori e il file di debug registra l'output di hook e MCP server dalla macchina dello sviluppatore. Rivedere e oscurare questi elementi prima di pubblicare in un problema pubblico.

276 

275| Sintomo | Causa | Correzione |277| Sintomo | Causa | Correzione |

276| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |278| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

279| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Il nome host del gateway si risolve in almeno un indirizzo IP pubblico. Claude Code controlla ogni indirizzo risolto e richiede che ogni uno sia privato. Una causa comune è un nome dual-stack dove una famiglia si risolve in un indirizzo pubblico, inclusi i load balancer dual-stack interni AWS, che restituiscono indirizzi AAAA di intervallo pubblico. | Fai risolvere il nome del gateway solo in indirizzi privati sulle macchine degli sviluppatori. Per un nome dual-stack, elimina il record di intervallo pubblico o servi un nome DNS solo interno separato. Consulta il [prerequisito di rete privata](/it/claude-apps-gateway#prerequisites). |281| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Il nome host del gateway si risolve in almeno un indirizzo IP pubblico. Claude Code controlla ogni indirizzo risolto e richiede che ogni uno sia privato. Una causa comune è un nome dual-stack dove una famiglia si risolve in un indirizzo pubblico, inclusi i load balancer dual-stack interni AWS, che restituiscono indirizzi AAAA di intervallo pubblico. | Fai risolvere il nome del gateway solo in indirizzi privati sulle macchine degli sviluppatori. Per un nome dual-stack, elimina il record di intervallo pubblico o servi un nome DNS solo interno separato. Consulta il [prerequisito di rete privata](/docs/it/claude-apps-gateway#prerequisites). |

280| CLI `/login`: `Gateway login requires a direct connection and does not support connecting through an HTTP proxy` | Un `HTTPS_PROXY` o `HTTP_PROXY` si applica all'host del gateway e il nome host del proxy si risolve in un indirizzo pubblico. Un proxy il cui host si risolve solo in indirizzi privati è consentito e non attiva questo errore | Aggiungi l'host del gateway a `NO_PROXY` sulla macchina dello sviluppatore in modo che la connessione sia diretta, o usa un proxy il cui nome host si risolve in indirizzi privati |282| CLI `/login`: `Gateway login requires a direct connection and does not support connecting through an HTTP proxy` | Un `HTTPS_PROXY` o `HTTP_PROXY` si applica all'host del gateway e il nome host del proxy si risolve in un indirizzo pubblico. Un proxy il cui host si risolve solo in indirizzi privati è consentito e non attiva questo errore | Aggiungi l'host del gateway a `NO_PROXY` sulla macchina dello sviluppatore in modo che la connessione sia diretta, o usa un proxy il cui nome host si risolve in indirizzi privati |

281| CLI `/login`: `Could not resolve gateway host <host>` | La macchina non può risolvere il nome DNS interno del gateway, tipicamente perché non è sulla rete aziendale | Fai connettere lo sviluppatore alla tua rete o VPN, quindi riprova `/login` |283| CLI `/login`: `Could not resolve gateway host <host>` | La macchina non può risolvere il nome DNS interno del gateway, tipicamente perché non è sulla rete aziendale | Fai connettere lo sviluppatore alla tua rete o VPN, quindi riprova `/login` |

282| L'avvio esce con un errore di convalida della configurazione che nomina `store.postgres_url` | Nessun Postgres configurato; il gateway richiede Postgres | Imposta `store.postgres_url`. Per lo sviluppo locale, usa un container usa e getta: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |284| L'avvio esce con un errore di convalida della configurazione che nomina `store.postgres_url` | Nessun Postgres configurato; il gateway richiede Postgres | Imposta `store.postgres_url`. Per lo sviluppo locale, usa un container usa e getta: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

283| L'avvio esce: `requires the native binary` | Esecuzione sotto Node invece del binario nativo | Installa Claude Code con uno dei [metodi di installazione standalone](/it/setup) |285| L'avvio esce: `requires the native binary` | Esecuzione sotto Node invece del binario nativo | Installa Claude Code con uno dei [metodi di installazione standalone](/docs/it/setup) |

284| L'avvio esce con un errore di scoperta OIDC dopo `config.load` | `oidc.issuer` non raggiungibile, o catena TLS non affidabile | Controlla che l'emittente sia raggiungibile dal pod e serva `/.well-known/openid-configuration`. Imposta `ca_cert_pem` per PKI privata. |286| L'avvio esce con un errore di scoperta OIDC dopo `config.load` | `oidc.issuer` non raggiungibile, o catena TLS non affidabile | Controlla che l'emittente sia raggiungibile dal pod e serva `/.well-known/openid-configuration`. Imposta `ca_cert_pem` per PKI privata. |

285| L'avvio esce con un errore di permesso di Postgres | Il ruolo dell'app manca `CREATE TABLE` | Pre-crea lo schema con un ruolo admin e concedi DML al ruolo dell'app, o concedi DDL temporaneamente per gli avvii che applicano nuove migrazioni |287| L'avvio esce con un errore di permesso di Postgres | Il ruolo dell'app manca `CREATE TABLE` | Pre-crea lo schema con un ruolo admin e concedi DML al ruolo dell'app, o concedi DDL temporaneamente per gli avvii che applicano nuove migrazioni |

286| `/oauth/callback` mostra "Sign-in could not be completed" | Dominio email rifiutato, convalida id\_token fallita, o `email_verified` è esplicitamente `false`, che il gateway rifiuta sempre senza override | Controlla `allowed_email_domains` e che l'IdP restituisca un claim `email` verificato. Per `email_verified: false`, correggi la verifica lato IdP. Se il tuo IdP emette email sotto un nome di claim diverso, imposta `oidc.email_claim`. |288| `/oauth/callback` mostra "Sign-in could not be completed" | Dominio email rifiutato, convalida id\_token fallita, o `email_verified` è esplicitamente `false`, che il gateway rifiuta sempre senza override | Controlla `allowed_email_domains` e che l'IdP restituisca un claim `email` verificato. Per `email_verified: false`, correggi la verifica lato IdP. Se il tuo IdP emette email sotto un nome di claim diverso, imposta `oidc.email_claim`. |


293| L'accesso si completa all'IdP ma il callback fallisce, con un errore CSP in Chrome o "this sign-in link has expired" in Safari | L'IdP ha restituito il codice tramite `response_mode=form_post`, che lo auto-invia cross-origin tramite POST a `/oauth/callback`. Chrome blocca quello sotto una CSP ristretta; Safari consente l'invio ma il callback legge solo la stringa di query. | Assicurati che il tuo IdP onori `response_mode=query`, che il gateway richiede esplicitamente in modo che il callback sia un reindirizzamento semplice |295| L'accesso si completa all'IdP ma il callback fallisce, con un errore CSP in Chrome o "this sign-in link has expired" in Safari | L'IdP ha restituito il codice tramite `response_mode=form_post`, che lo auto-invia cross-origin tramite POST a `/oauth/callback`. Chrome blocca quello sotto una CSP ristretta; Safari consente l'invio ma il callback legge solo la stringa di query. | Assicurati che il tuo IdP onori `response_mode=query`, che il gateway richiede esplicitamente in modo che il callback sia un reindirizzamento semplice |

294| L'accesso funziona localmente ma fallisce dietro un ALB | `public_url` non impostato, quindi l'IdP ottiene l'origine interna `http://` come `redirect_uri` | Imposta `listen.public_url` all'origine esterna `https://` |296| L'accesso funziona localmente ma fallisce dietro un ALB | `public_url` non impostato, quindi l'IdP ottiene l'origine interna `http://` come `redirect_uri` | Imposta `listen.public_url` all'origine esterna `https://` |

295| Lo sviluppatore vede il prompt di fiducia ripetutamente | Il certificato TLS ruota per replica o per richiesta | Usa un certificato stabile all'ingress, o termina TLS una volta ed esegui le repliche su HTTP semplice internamente |297| Lo sviluppatore vede il prompt di fiducia ripetutamente | Il certificato TLS ruota per replica o per richiesta | Usa un certificato stabile all'ingress, o termina TLS una volta ed esegui le repliche su HTTP semplice internamente |

296| CLI `/login`: "Could not verify the gateway's TLS certificate" o `SELF_SIGNED_CERT_IN_CHAIN` | La catena TLS del gateway è firmata da una CA privata non nell'archivio di fiducia dell'host CLI | Claude Code legge l'archivio di fiducia del sistema operativo per impostazione predefinita sul binario nativo e su Node 22.15 o successivo; [`CLAUDE_CODE_CERT_STORE`](/it/network-config#ca-certificate-store) controlla questo comportamento. Se la CA è installata nell'archivio di fiducia del sistema operativo, assicurati che gli sviluppatori siano su un runtime corrente. Altrimenti imposta `NODE_EXTRA_CA_CERTS` al certificato CA PEM prima di lanciare. Il prompt dell'impronta digitale della prima connessione si applica comunque. |298| CLI `/login`: "Could not verify the gateway's TLS certificate" o `SELF_SIGNED_CERT_IN_CHAIN` | La catena TLS del gateway è firmata da una CA privata non nell'archivio di fiducia dell'host CLI | Claude Code legge l'archivio di fiducia del sistema operativo per impostazione predefinita sul binario nativo e su Node 22.15 o successivo; [`CLAUDE_CODE_CERT_STORE`](/docs/it/network-config#ca-certificate-store) controlla questo comportamento. Se la CA è installata nell'archivio di fiducia del sistema operativo, assicurati che gli sviluppatori siano su un runtime corrente. Altrimenti imposta `NODE_EXTRA_CA_CERTS` al certificato CA PEM prima di lanciare. Il prompt dell'impronta digitale della prima connessione si applica comunque. |

297 299 

298<h2 id="related">300<h2 id="related">

299 Correlati301 Correlati

300</h2>302</h2>

301 303 

302* [Panoramica del gateway delle app Claude](/it/claude-apps-gateway): quickstart e connessione dello sviluppatore304* [Panoramica del gateway delle app Claude](/docs/it/claude-apps-gateway): quickstart e connessione dello sviluppatore

303* [Riferimento di configurazione](/it/claude-apps-gateway-config): ogni opzione di `gateway.yaml`305* [Riferimento di configurazione](/docs/it/claude-apps-gateway-config): ogni opzione di `gateway.yaml`

env-vars.md +20 −10

Details

87 87 

88Quando lo stesso comportamento ha sia una variabile d'ambiente che un campo di impostazioni, la variabile d'ambiente ha la precedenza. Ad esempio, `ANTHROPIC_MODEL` sostituisce l'impostazione `model` e `CLAUDE_CODE_AUTO_CONNECT_IDE` sostituisce `autoConnectIde`. Il campo di impostazioni si applica quando la variabile d'ambiente non è impostata.88Quando lo stesso comportamento ha sia una variabile d'ambiente che un campo di impostazioni, la variabile d'ambiente ha la precedenza. Ad esempio, `ANTHROPIC_MODEL` sostituisce l'impostazione `model` e `CLAUDE_CODE_AUTO_CONNECT_IDE` sostituisce `autoConnectIde`. Il campo di impostazioni si applica quando la variabile d'ambiente non è impostata.

89 89 

90Quando la stessa variabile è impostata sia nella shell che in un file di impostazioni nel blocco `env`, il valore del file di impostazioni si applica. Claude Code scrive ogni voce `env` nell'ambiente del processo all'avvio, sostituendo il valore ereditato dalla shell. Alcune variabili sono trattate come casi speciali; l'[impostazione `env`](/it/settings#available-settings) elenca le eccezioni.

91 

92Tra i file di impostazioni, i valori `env` seguono la [precedenza delle impostazioni](/it/settings#settings-precedence), quindi una voce di impostazioni gestita sostituisce la stessa variabile nelle impostazioni utente o progetto.

93 

90Il modo in cui una variabile d'ambiente interagisce con i flag CLI e i comandi in-sessione varia per funzionalità: `--model` e `/model` sostituiscono `ANTHROPIC_MODEL`, mentre `CLAUDE_CODE_EFFORT_LEVEL` sostituisce `/effort`. Quando una variabile interagisce con un'altra fonte di configurazione, la sua riga nell'elenco [Variabili](#variables) dichiara la precedenza o si collega alla pagina che la documenta.94Il modo in cui una variabile d'ambiente interagisce con i flag CLI e i comandi in-sessione varia per funzionalità: `--model` e `/model` sostituiscono `ANTHROPIC_MODEL`, mentre `CLAUDE_CODE_EFFORT_LEVEL` sostituisce `/effort`. Quando una variabile interagisce con un'altra fonte di configurazione, la sua riga nell'elenco [Variabili](#variables) dichiara la precedenza o si collega alla pagina che la documenta.

91 95 

92Claude Code legge le variabili d'ambiente all'avvio, quindi le modifiche hanno effetto la prossima volta che avviate `claude`.96Claude Code legge le variabili d'ambiente all'avvio, quindi le modifiche hanno effetto la prossima volta che avviate `claude`.


96</h2>100</h2>

97 101 

98| Variabile | Scopo |102| Variabile | Scopo |

99| :------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |103| :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

100| `ANTHROPIC_API_KEY` | Chiave API inviata come intestazione `X-Api-Key`. Quando impostata, questa chiave viene utilizzata al posto del vostro abbonamento Claude Pro, Max, Team o Enterprise anche se siete connessi. In modalità non interattiva (`-p`), la chiave viene sempre utilizzata quando presente. In modalità interattiva, vi viene chiesto di approvare la chiave una volta prima che sostituisca il vostro abbonamento. Per utilizzare il vostro abbonamento, eseguite `unset ANTHROPIC_API_KEY` |104| `ANTHROPIC_API_KEY` | Chiave API inviata come intestazione `X-Api-Key`. Quando impostata, questa chiave viene utilizzata al posto del vostro abbonamento Claude Pro, Max, Team o Enterprise anche se siete connessi. In modalità non interattiva (`-p`), la chiave viene sempre utilizzata quando presente. In modalità interattiva, vi viene chiesto di approvare la chiave una volta prima che sostituisca il vostro abbonamento. Per utilizzare il vostro abbonamento, eseguite `unset ANTHROPIC_API_KEY` |

101| `ANTHROPIC_AUTH_TOKEN` | Valore personalizzato per l'intestazione `Authorization` (il valore che impostate qui sarà preceduto da `Bearer `) |105| `ANTHROPIC_AUTH_TOKEN` | Valore personalizzato per l'intestazione `Authorization` (il valore che impostate qui sarà preceduto da `Bearer `) |

102| `ANTHROPIC_AWS_API_KEY` | Chiave API dell'area di lavoro per [Claude Platform on AWS](/it/claude-platform-on-aws), generata nella Console AWS. Inviata come `x-api-key` e ha la precedenza su AWS SigV4 |106| `ANTHROPIC_AWS_API_KEY` | Chiave API dell'area di lavoro per [Claude Platform on AWS](/it/claude-platform-on-aws), generata nella Console AWS. Inviata come `x-api-key` e ha la precedenza su AWS SigV4 |


134| `ANTHROPIC_FOUNDRY_RESOURCE` | Nome della risorsa Microsoft Foundry (ad esempio, `my-resource`). Obbligatorio se `ANTHROPIC_FOUNDRY_BASE_URL` non è impostato (vedi [Microsoft Foundry](/it/microsoft-foundry)) |138| `ANTHROPIC_FOUNDRY_RESOURCE` | Nome della risorsa Microsoft Foundry (ad esempio, `my-resource`). Obbligatorio se `ANTHROPIC_FOUNDRY_BASE_URL` non è impostato (vedi [Microsoft Foundry](/it/microsoft-foundry)) |

135| `ANTHROPIC_MODEL` | Nome dell'impostazione del modello da utilizzare (vedi [Configurazione del modello](/it/model-config#environment-variables)) |139| `ANTHROPIC_MODEL` | Nome dell'impostazione del modello da utilizzare (vedi [Configurazione del modello](/it/model-config#environment-variables)) |

136| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATO] Nome del [modello di classe Haiku per attività in background](/it/costs) |140| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATO] Nome del [modello di classe Haiku per attività in background](/it/costs) |

137| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Sovrascrivi la regione AWS per il modello di classe Haiku quando utilizzate Amazon Bedrock o Amazon Bedrock Mantle. Su Amazon Bedrock, questo ha effetto solo quando `ANTHROPIC_DEFAULT_HAIKU_MODEL` o il deprecato `ANTHROPIC_SMALL_FAST_MODEL` è anche impostato, poiché Amazon Bedrock altrimenti utilizza il modello primario per le attività in background |141| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Sovrascrivi la regione AWS per il modello di classe Haiku quando utilizzate Amazon Bedrock o Amazon Bedrock Mantle. Su Amazon Bedrock, questo ha effetto solo quando `ANTHROPIC_DEFAULT_HAIKU_MODEL` o il deprecato `ANTHROPIC_SMALL_FAST_MODEL` è anche impostato, poiché Amazon Bedrock altrimenti esegue attività in background sul [modello Sonnet predefinito o sul modello primario](/it/amazon-bedrock#4-pin-model-versions) nella regione della sessione |

138| `ANTHROPIC_VERTEX_BASE_URL` | Sovrascrivi l'URL dell'endpoint Google Cloud's Agent Platform. Utilizza per endpoint Google Cloud's Agent Platform personalizzati o quando instrada attraverso un [gateway LLM](/it/llm-gateway). Vedi [Google Cloud's Agent Platform](/it/google-vertex-ai) |142| `ANTHROPIC_VERTEX_BASE_URL` | Sovrascrivi l'URL dell'endpoint Google Cloud's Agent Platform. Utilizza per endpoint Google Cloud's Agent Platform personalizzati o quando instrada attraverso un [gateway LLM](/it/llm-gateway). Vedi [Google Cloud's Agent Platform](/it/google-vertex-ai) |

139| `ANTHROPIC_VERTEX_PROJECT_ID` | ID progetto GCP per le richieste Google Cloud's Agent Platform. Sovrascritto da `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` o dal progetto nel vostro file di credenziali `GOOGLE_APPLICATION_CREDENTIALS`. Vedi [Google Cloud's Agent Platform](/it/google-vertex-ai) |143| `ANTHROPIC_VERTEX_PROJECT_ID` | ID progetto GCP per le richieste Google Cloud's Agent Platform. Sovrascritto da `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` o dal progetto nel vostro file di credenziali `GOOGLE_APPLICATION_CREDENTIALS`. Vedi [Google Cloud's Agent Platform](/it/google-vertex-ai) |

140| `ANTHROPIC_WORKSPACE_ID` | ID area di lavoro per la [federazione dell'identità del carico di lavoro](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Impostate questo quando la vostra regola di federazione è limitata a più di un'area di lavoro in modo che lo scambio di token sappia quale area di lavoro indirizzare |144| `ANTHROPIC_WORKSPACE_ID` | ID area di lavoro per la [federazione dell'identità del carico di lavoro](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Impostate questo quando la vostra regola di federazione è limitata a più di un'area di lavoro in modo che lo scambio di token sappia quale area di lavoro indirizzare |


165| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Imposta su `0` per omettere il blocco di attribuzione (versione client e impronta digitale del prompt) dall'inizio del prompt di sistema. Disabilitarlo migliora i tassi di hit della cache dei prompt quando si instrada attraverso un [gateway LLM](/it/llm-gateway). Il caching dell'API Anthropic non è interessato |169| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Imposta su `0` per omettere il blocco di attribuzione (versione client e impronta digitale del prompt) dall'inizio del prompt di sistema. Disabilitarlo migliora i tassi di hit della cache dei prompt quando si instrada attraverso un [gateway LLM](/it/llm-gateway). Il caching dell'API Anthropic non è interessato |

166| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Imposta la capacità del contesto in token utilizzata per i calcoli di compattazione automatica. Per impostazione predefinita, la finestra del contesto del modello: 200K per i modelli standard o 1M per i modelli con [contesto esteso](/it/model-config#extended-context), tranne su Sonnet 5, che ha la sua propria [soglia predefinita](/it/model-config#sonnet-5-context-window). Utilizzate un valore inferiore come `500000` su un modello 1M per trattare la finestra come 500K ai fini della compattazione. Il valore è limitato alla finestra del contesto effettiva del modello. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` viene applicato come percentuale di questo valore. L'impostazione di questa variabile disaccoppia la soglia di compattazione dalla `used_percentage` della linea di stato, che utilizza sempre la finestra del contesto completa del modello |170| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Imposta la capacità del contesto in token utilizzata per i calcoli di compattazione automatica. Per impostazione predefinita, la finestra del contesto del modello: 200K per i modelli standard o 1M per i modelli con [contesto esteso](/it/model-config#extended-context), tranne su Sonnet 5, che ha la sua propria [soglia predefinita](/it/model-config#sonnet-5-context-window). Utilizzate un valore inferiore come `500000` su un modello 1M per trattare la finestra come 500K ai fini della compattazione. Il valore è limitato alla finestra del contesto effettiva del modello. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` viene applicato come percentuale di questo valore. L'impostazione di questa variabile disaccoppia la soglia di compattazione dalla `used_percentage` della linea di stato, che utilizza sempre la finestra del contesto completa del modello |

167| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Sovrascrivi la [connessione IDE](/it/vs-code) automatica. Per impostazione predefinita, Claude Code si connette automaticamente quando avviato all'interno del terminale integrato di un IDE supportato. Imposta su `false` per impedire questo. Imposta su `true` per forzare un tentativo di connessione quando l'auto-rilevamento fallisce, ad esempio quando tmux oscura il terminale padre. Ha la precedenza sull'impostazione globale [`autoConnectIde`](/it/settings#global-config-settings) |171| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Sovrascrivi la [connessione IDE](/it/vs-code) automatica. Per impostazione predefinita, Claude Code si connette automaticamente quando avviato all'interno del terminale integrato di un IDE supportato. Imposta su `false` per impedire questo. Imposta su `true` per forzare un tentativo di connessione quando l'auto-rilevamento fallisce, ad esempio quando tmux oscura il terminale padre. Ha la precedenza sull'impostazione globale [`autoConnectIde`](/it/settings#global-config-settings) |

172| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | {/* min-version: 2.1.207 */}Tempo in millisecondi che Claude Code attende affinché la catena del provider di credenziali predefinito AWS produca credenziali prima che la richiesta fallisca con [`AWS default-chain credential resolve timed out`](/it/errors#aws-default-chain-credential-resolve-timed-out) (predefinito: `60000`). Aumentatelo quando un passaggio nella vostra catena ha legittimamente bisogno di più tempo, come un accesso SSO basato su browser con MFA attraverso un wrapper come `aws-vault`. Si applica ovunque Claude Code firma con la catena predefinita: [Amazon Bedrock](/it/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/it/claude-platform-on-aws) e l'[endpoint Mantle](/it/amazon-bedrock#use-the-mantle-endpoint). Richiede Claude Code v2.1.207 o successivo |

168| `CLAUDE_CODE_BRIDGE_SESSION_ID` | {/* min-version: 2.1.199 */}Impostato automaticamente nel sottoprocesso dello strumento Bash e nel [comando hook](/it/hooks) mentre la sessione ha una connessione [Remote Control](/it/remote-control) attiva, e rimosso quando la connessione termina. Il valore è l'ID della sessione in forma `session_`, lo stesso identificatore che appare nell'URL `claude.ai/code` della sessione, quindi uno script può collegarsi di nuovo alla sessione che lo ha eseguito. Richiede Claude Code v2.1.199 o successivo. Nelle [sessioni cloud](/it/claude-code-on-the-web), leggete `CLAUDE_CODE_REMOTE_SESSION_ID` |173| `CLAUDE_CODE_BRIDGE_SESSION_ID` | {/* min-version: 2.1.199 */}Impostato automaticamente nel sottoprocesso dello strumento Bash e nel [comando hook](/it/hooks) mentre la sessione ha una connessione [Remote Control](/it/remote-control) attiva, e rimosso quando la connessione termina. Il valore è l'ID della sessione in forma `session_`, lo stesso identificatore che appare nell'URL `claude.ai/code` della sessione, quindi uno script può collegarsi di nuovo alla sessione che lo ha eseguito. Richiede Claude Code v2.1.199 o successivo. Nelle [sessioni cloud](/it/claude-code-on-the-web), leggete `CLAUDE_CODE_REMOTE_SESSION_ID` |

169| `CLAUDE_CODE_CERT_STORE` | Elenco separato da virgole di fonti di certificati CA per le connessioni TLS. `bundled` è il set Mozilla CA fornito con Claude Code. `system` è l'archivio di fiducia del sistema operativo, di sola lettura su runtime con `tls.getCACertificates`: il binario nativo, o Node 22.15 o successivo per installazioni npm. Vedi [Archivio certificati CA](/it/network-config#ca-certificate-store). Per impostazione predefinita è `bundled,system` |174| `CLAUDE_CODE_CERT_STORE` | Elenco separato da virgole di fonti di certificati CA per le connessioni TLS. `bundled` è il set Mozilla CA fornito con Claude Code. `system` è l'archivio di fiducia del sistema operativo, di sola lettura su runtime con `tls.getCACertificates`: il binario nativo, o Node 22.15 o successivo per installazioni npm. Vedi [Archivio certificati CA](/it/network-config#ca-certificate-store). Per impostazione predefinita è `bundled,system` |

170| `CLAUDE_CODE_CHILD_SESSION` | {/* min-version: 2.1.172 */}Imposta su `1` nei sottoprocessi che Claude Code genera tramite gli strumenti Bash, PowerShell e Monitor, i comandi [hook](/it/hooks) e i comandi della [linea di stato](/it/statusline). Non impostato per i sottoprocessi del server MCP [stdio](/it/mcp), che sono di lunga durata e sopravvivono alla sessione che li ha generati. A differenza di `CLAUDECODE`, questo viene impostato solo da Claude Code stesso quando avvia un sottoprocesso e non dalle estensioni IDE, quindi distingue in modo affidabile una sessione annidata da un `claude` di livello superiore avviato in un terminale integrato IDE. Una TUI `claude` interattiva annidata avviata in questo modo viene automaticamente esclusa da `--resume`, `--continue`, dalla cronologia della freccia su e dall'elenco `claude agents`. Le sessioni non interattive `claude -p` persistono comunque. Impostare `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` per sostituire questa esclusione. Richiede Claude Code v2.1.172 o successivo |175| `CLAUDE_CODE_CHILD_SESSION` | {/* min-version: 2.1.172 */}Imposta su `1` nei sottoprocessi che Claude Code genera tramite gli strumenti Bash, PowerShell e Monitor, i comandi [hook](/it/hooks) e i comandi della [linea di stato](/it/statusline). Non impostato per i sottoprocessi del server MCP [stdio](/it/mcp), che sono di lunga durata e sopravvivono alla sessione che li ha generati. A differenza di `CLAUDECODE`, questo viene impostato solo da Claude Code stesso quando avvia un sottoprocesso e non dalle estensioni IDE, quindi distingue in modo affidabile una sessione annidata da un `claude` di livello superiore avviato in un terminale integrato IDE. Una TUI `claude` interattiva annidata avviata in questo modo viene automaticamente esclusa da `--resume`, `--continue`, dalla cronologia della freccia su e dall'elenco `claude agents`. Le sessioni non interattive `claude -p` persistono comunque. Impostare `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` per sostituire questa esclusione. Richiede Claude Code v2.1.172 o successivo |


176| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Livello di log minimo scritto nel file di log di debug. Valori: `verbose`, `debug` (predefinito), `info`, `warn`, `error`. Imposta su `verbose` per includere diagnostica ad alto volume come l'output completo del comando della linea di stato, o aumenta a `error` per ridurre il rumore |181| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Livello di log minimo scritto nel file di log di debug. Valori: `verbose`, `debug` (predefinito), `info`, `warn`, `error`. Imposta su `verbose` per includere diagnostica ad alto volume come l'output completo del comando della linea di stato, o aumenta a `error` per ridurre il rumore |

177| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Imposta su `1` per disabilitare il supporto della [finestra del contesto 1M](/it/model-config#extended-context). Se impostato, le varianti del modello 1M non sono disponibili nel selettore di modelli, e le sessioni [Sonnet 5](/it/model-config#sonnet-5-context-window) vengono trattate come aventi una finestra di 200K. Utile per ambienti aziendali con requisiti di conformità |182| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Imposta su `1` per disabilitare il supporto della [finestra del contesto 1M](/it/model-config#extended-context). Se impostato, le varianti del modello 1M non sono disponibili nel selettore di modelli, e le sessioni [Sonnet 5](/it/model-config#sonnet-5-context-window) vengono trattate come aventi una finestra di 200K. Utile per ambienti aziendali con requisiti di conformità |

178| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Imposta su `1` per disabilitare il [ragionamento adattivo](/it/model-config#adjust-effort-level) su Opus 4.6 e Sonnet 4.6 e tornare al budget di thinking fisso controllato da `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Da v2.1.111, non ha effetto su Fable 5, Sonnet 5 o Opus 4.7 e versioni successive, che utilizzano sempre il ragionamento adattivo |183| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Imposta su `1` per disabilitare il [ragionamento adattivo](/it/model-config#adjust-effort-level) su Opus 4.6 e Sonnet 4.6 e tornare al budget di thinking fisso controllato da `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Da v2.1.111, non ha effetto su Fable 5, Sonnet 5 o Opus 4.7 e versioni successive, che utilizzano sempre il ragionamento adattivo |

179| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | {/* min-version: 2.1.98 */}Imposta su `1` per disabilitare lo [strumento advisor](/it/advisor). Il comando `/advisor` diventa non disponibile, qualsiasi `advisorModel` configurato viene ignorato e il flag `--advisor` viene accettato ma non ha effetto, quindi gli script esistenti che lo passano continuano a funzionare senza errori. Richiede Claude Code v2.1.98 o successivo |184| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Imposta su `1` per disabilitare lo [strumento advisor](/it/advisor). Il comando `/advisor` diventa non disponibile, qualsiasi `advisorModel` configurato viene ignorato e il flag `--advisor` viene accettato ma non ha effetto, quindi gli script esistenti che lo passano continuano a funzionare senza errori |

180| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Imposta su `1` per disattivare gli [agenti in background e la visualizzazione degli agenti](/it/agent-view): `claude agents`, `--bg`, `/background` e il supervisore su richiesta. Equivalente all'impostazione [`disableAgentView`](/it/settings#available-settings) |185| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Imposta su `1` per disattivare gli [agenti in background e la visualizzazione degli agenti](/it/agent-view): `claude agents`, `--bg`, `/background` e il supervisore su richiesta. Equivalente all'impostazione [`disableAgentView`](/it/settings#available-settings) |

181| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Imposta su `1` per disabilitare il [rendering a schermo intero](/it/fullscreen) e utilizzare il renderer della schermata principale classica. La conversazione rimane nello scrollback nativo del vostro terminale in modo che `Cmd+f` e la modalità di copia di tmux funzionino come al solito. Ha la precedenza su `CLAUDE_CODE_NO_FLICKER` e sull'impostazione [`tui`](/it/settings#available-settings). Potete anche passare con `/tui default`. Non si applica alle sessioni in background aperte dalla [visualizzazione degli agenti](/it/agent-view), che utilizzano sempre il rendering a schermo intero |186| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Imposta su `1` per disabilitare il [rendering a schermo intero](/it/fullscreen) e utilizzare il renderer della schermata principale classica. La conversazione rimane nello scrollback nativo del vostro terminale in modo che `Cmd+f` e la modalità di copia di tmux funzionino come al solito. Ha la precedenza su `CLAUDE_CODE_NO_FLICKER` e sull'impostazione [`tui`](/it/settings#available-settings). Potete anche passare con `/tui default`. Non si applica alle sessioni in background aperte dalla [visualizzazione degli agenti](/it/agent-view), che utilizzano sempre il rendering a schermo intero |

182| `CLAUDE_CODE_DISABLE_ARTIFACT` | Imposta su `1` per disabilitare lo strumento [Artifact](/it/artifacts), che pubblica l'output della sessione come pagina web privata su claude.ai. Equivalente all'impostazione [`disableArtifact`](/it/settings#available-settings) |187| `CLAUDE_CODE_DISABLE_ARTIFACT` | Imposta su `1` per disabilitare lo strumento [Artifact](/it/artifacts), che pubblica l'output della sessione come pagina web privata su claude.ai. Equivalente all'impostazione [`disableArtifact`](/it/settings#available-settings) |

183| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Imposta su `1` per disabilitare l'elaborazione degli allegati. Le menzioni di file con la sintassi `@` vengono inviate come testo semplice invece di essere espanse nel contenuto del file |188| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Imposta su `1` per disabilitare l'elaborazione degli allegati. Le menzioni di file con la sintassi `@` vengono inviate come testo semplice invece di essere espanse nel contenuto del file |

184| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Imposta su `1` per disabilitare la [memoria automatica](/it/memory#auto-memory). Imposta su `0` per forzare la memoria automatica anche quando la modalità `--bare` o [`autoMemoryEnabled: false`](/it/settings#available-settings) altrimenti la disabiliterebbe. Quando disabilitato, Claude non crea o carica i file di memoria automatica |189| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Imposta su `1` per disabilitare la [memoria automatica](/it/memory#auto-memory). Imposta su `0` per forzare la memoria automatica anche quando la modalità `--bare` o [`autoMemoryEnabled: false`](/it/settings#available-settings) altrimenti la disabiliterebbe. Quando disabilitato, Claude non crea o carica i file di memoria automatica |

185| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Imposta su `1` per disabilitare tutta la funzionalità di attività in background, incluso il parametro `run_in_background` su strumenti Bash e subagent, auto-backgrounding e la scorciatoia Ctrl+B |190| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Imposta su `1` per disabilitare tutta la funzionalità di attività in background, incluso il parametro `run_in_background` su strumenti Bash e subagent, auto-backgrounding e la scorciatoia Ctrl+B |

191| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | {/* min-version: 2.1.208 */}Imposta su `1` per saltare il controllo che una risposta di streaming [Amazon Bedrock](/it/amazon-bedrock) porti il content-type `application/vnd.amazon.eventstream`. Senza questa variabile, una risposta con un content-type diverso fallisce con un errore che nomina quel content-type, il che significa che un [gateway o proxy sta trasformando la risposta](/it/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Impostatela solo quando il gateway riscrive l'intestazione `Content-Type` ma passa il corpo del flusso di eventi binario invariato; se il corpo stesso è stato trasformato, le richieste falliscono con `Truncated event message received`. Richiede Claude Code v2.1.208 o successivo |

186| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | {/* min-version: 2.1.196 */}Imposta su `1` per interrompere i comandi shell in background in esecuzione, i workflow dinamici e, a partire da v2.1.198, i subagent in background di una [sessione in background](/it/agent-view) quando il [supervisore](/it/agent-view#the-supervisor-process) si ferma, si riavvia o aggiorna il processo di quella sessione, invece di trasferirli al processo successivo della sessione. Influisce solo su quel trasferimento: mettere una sessione in background con `←` o [`/background`](/it/agent-view#from-inside-a-session) continua a portare il lavoro in volo, e `CLAUDE_DISABLE_ADOPT` disattiva entrambi. Richiede Claude Code v2.1.196 o successivo |192| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | {/* min-version: 2.1.196 */}Imposta su `1` per interrompere i comandi shell in background in esecuzione, i workflow dinamici e, a partire da v2.1.198, i subagent in background di una [sessione in background](/it/agent-view) quando il [supervisore](/it/agent-view#the-supervisor-process) si ferma, si riavvia o aggiorna il processo di quella sessione, invece di trasferirli al processo successivo della sessione. Influisce solo su quel trasferimento: mettere una sessione in background con `←` o [`/background`](/it/agent-view#from-inside-a-session) continua a portare il lavoro in volo, e `CLAUDE_DISABLE_ADOPT` disattiva entrambi. Richiede Claude Code v2.1.196 o successivo |

187| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | {/* min-version: 2.1.193 */}Imposta su `1` per impedire a Claude Code di terminare i [comandi shell in background](/it/interactive-mode#background-bash-commands) quando il sistema operativo segnala pressione di memoria. Per impostazione predefinita, su macOS e Linux, Claude Code termina un shell in background avviato nella sessione principale su un segnale di pressione di memoria una volta che la sessione è stata inattiva per 30 minuti e nessun turno o subagent è in esecuzione. Windows non ha un segnale di pressione di memoria, quindi questa variabile non ha effetto lì. Richiede Claude Code v2.1.193 o successivo |193| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | {/* min-version: 2.1.193 */}Imposta su `1` per impedire a Claude Code di terminare i [comandi shell in background](/it/interactive-mode#background-bash-commands) quando il sistema operativo segnala pressione di memoria. Per impostazione predefinita, su macOS e Linux, Claude Code termina un shell in background avviato nella sessione principale su un segnale di pressione di memoria una volta che la sessione è stata inattiva per 30 minuti e nessun turno o subagent è in esecuzione. Windows non ha un segnale di pressione di memoria, quindi questa variabile non ha effetto lì. Richiede Claude Code v2.1.193 o successivo |

188| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Imposta su `1` per disabilitare le [skill](/it/skills) e i workflow che vengono forniti con Claude Code: le skill raggruppate e i workflow vengono rimossi completamente, mentre i comandi slash integrati come `/init` rimangono digitabili ma sono nascosti dal modello. `/doctor` rimane digitabile come i comandi integrati; nascondilo con `DISABLE_DOCTOR_COMMAND`. Le skill dai plugin, `.claude/skills/` e `.claude/commands/` non sono interessate. Equivalente all'impostazione [`disableBundledSkills`](/it/settings#available-settings); `0` non la sostituisce |194| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Imposta su `1` per disabilitare le [skill](/it/skills) e i workflow che vengono forniti con Claude Code: le skill raggruppate e i workflow vengono rimossi completamente, mentre i comandi slash integrati come `/init` rimangono digitabili ma sono nascosti dal modello. `/doctor` rimane digitabile come i comandi integrati; nascondilo con `DISABLE_DOCTOR_COMMAND`. Le skill dai plugin, `.claude/skills/` e `.claude/commands/` non sono interessate. Equivalente all'impostazione [`disableBundledSkills`](/it/settings#available-settings); `0` non la sostituisce |

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

190| `CLAUDE_CODE_DISABLE_CRON` | Imposta su `1` per disabilitare le [attività pianificate](/it/scheduled-tasks). La skill `/loop` e gli strumenti cron diventano non disponibili e tutte le attività già pianificate smettono di attivarsi, incluse le attività già in esecuzione a metà sessione |196| `CLAUDE_CODE_DISABLE_CRON` | Imposta su `1` per disabilitare le [attività pianificate](/it/scheduled-tasks). La skill `/loop` e gli strumenti cron diventano non disponibili e tutte le attività già pianificate smettono di attivarsi, incluse le attività già in esecuzione a metà sessione |

191| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Imposta su `1` per rimuovere le intestazioni di richiesta `anthropic-beta` specifiche di Anthropic e i campi dello schema degli strumenti beta (come `defer_loading` e `eager_input_streaming`) dalle richieste API. Utilizza questo quando un gateway proxy rifiuta le richieste con errori come "Unexpected value(s) for the `anthropic-beta` header" o "Extra inputs are not permitted". I campi standard (`name`, `description`, `input_schema`, `cache_control`) vengono preservati |197| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Imposta su `1` per rimuovere le intestazioni di richiesta `anthropic-beta` specifiche di Anthropic e i campi dello schema degli strumenti beta (come `defer_loading` e `eager_input_streaming`) dalle richieste API. Utilizza questo quando un gateway proxy rifiuta le richieste con errori come "Unexpected value(s) for the `anthropic-beta` header" o "Extra inputs are not permitted". I campi standard (`name`, `description`, `input_schema`, `cache_control`) vengono preservati. La [ricerca degli strumenti MCP](/it/mcp#scale-with-mcp-tool-search) è disabilitata e tutti gli strumenti MCP vengono caricati in primo piano, anche quando `ENABLE_TOOL_SEARCH` è impostato |

192| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | {/* min-version: 2.1.198 */}Imposta su `1` per disabilitare i [subagent Explore e Plan integrati](/it/sub-agents#built-in-subagents). Claude esplora con i suoi strumenti di ricerca o il subagent di uso generale, e la [modalità plan](/it/permission-modes#analyze-before-you-edit-with-plan-mode) legge i file direttamente piuttosto che lanciare agenti Explore e Plan. I subagent personalizzati denominati `Explore` o `Plan` non sono interessati. Per rimuovere ogni tipo di subagent integrato in Agent SDK o modalità non interattiva, utilizza `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`. Richiede Claude Code v2.1.198 o successivo |198| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | {/* min-version: 2.1.198 */}Imposta su `1` per disabilitare i [subagent Explore e Plan integrati](/it/sub-agents#built-in-subagents). Claude esplora con i suoi strumenti di ricerca o il subagent di uso generale, e la [modalità plan](/it/permission-modes#analyze-before-you-edit-with-plan-mode) legge i file direttamente piuttosto che lanciare agenti Explore e Plan. I subagent personalizzati denominati `Explore` o `Plan` non sono interessati. Per rimuovere ogni tipo di subagent integrato in Agent SDK o modalità non interattiva, utilizza `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`. Richiede Claude Code v2.1.198 o successivo |

193| `CLAUDE_CODE_DISABLE_FAST_MODE` | Imposta su `1` per disabilitare la [modalità veloce](/it/fast-mode) |199| `CLAUDE_CODE_DISABLE_FAST_MODE` | Imposta su `1` per disabilitare la [modalità veloce](/it/fast-mode) |

194| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Imposta su `1` per disabilitare i sondaggi sulla qualità della sessione "Come sta andando Claude?". I sondaggi sono anche disabilitati quando `DISABLE_TELEMETRY`, `DO_NOT_TRACK` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostato, a meno che `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` non opti di nuovo. Per impostare una frequenza di campionamento invece di disabilitare completamente, utilizzate l'impostazione [`feedbackSurveyRate`](/it/settings#available-settings). Vedi [Sondaggi sulla qualità della sessione](/it/data-usage#session-quality-surveys) |200| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Imposta su `1` per disabilitare i sondaggi sulla qualità della sessione "Come sta andando Claude?". I sondaggi sono anche disabilitati quando `DISABLE_TELEMETRY`, `DO_NOT_TRACK` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostato, a meno che `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` non opti di nuovo. Per impostare una frequenza di campionamento invece di disabilitare completamente, utilizzate l'impostazione [`feedbackSurveyRate`](/it/settings#available-settings). Vedi [Sondaggi sulla qualità della sessione](/it/data-usage#session-quality-surveys) |


208| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Imposta su `1` per disabilitare i [workflow](/it/workflows#turn-workflows-off). Equivalente all'impostazione [`disableWorkflows`](/it/settings#available-settings) |214| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Imposta su `1` per disabilitare i [workflow](/it/workflows#turn-workflows-off). Equivalente all'impostazione [`disableWorkflows`](/it/settings#available-settings) |

209| `CLAUDE_CODE_EFFORT_LEVEL` | Imposta il livello di sforzo per i modelli supportati. Valori: `low`, `medium`, `high`, `xhigh`, `max` o `auto` per usare il valore predefinito del modello. I livelli disponibili dipendono dal modello. Ha la precedenza su `/effort` e sull'impostazione `effortLevel`. Vedi [Regola il livello di sforzo](/it/model-config#adjust-effort-level) |215| `CLAUDE_CODE_EFFORT_LEVEL` | Imposta il livello di sforzo per i modelli supportati. Valori: `low`, `medium`, `high`, `xhigh`, `max` o `auto` per usare il valore predefinito del modello. I livelli disponibili dipendono dal modello. Ha la precedenza su `/effort` e sull'impostazione `effortLevel`. Vedi [Regola il livello di sforzo](/it/model-config#adjust-effort-level) |

210| `CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT` | {/* min-version: 2.1.205 */}Imposta su `1` per abilitare l'aggiunta di testo extra alla fine del prompt di sistema di ogni [subagent](/it/sub-agents). Il flag [`--append-subagent-system-prompt`](/it/cli-reference#cli-flags) fornisce il testo aggiunto e imposta questa variabile automaticamente, quindi non è necessario impostarla voi stessi. Richiede Claude Code v2.1.205 o successivo |216| `CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT` | {/* min-version: 2.1.205 */}Imposta su `1` per abilitare l'aggiunta di testo extra alla fine del prompt di sistema di ogni [subagent](/it/sub-agents). Il flag [`--append-subagent-system-prompt`](/it/cli-reference#cli-flags) fornisce il testo aggiunto e imposta questa variabile automaticamente, quindi non è necessario impostarla voi stessi. Richiede Claude Code v2.1.205 o successivo |

211| `CLAUDE_CODE_ENABLE_AUTO_MODE` | {/* min-version: 2.1.158 */}Imposta su `1` per rendere la [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) disponibile su Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e sessioni [gateway app Claude](/it/claude-apps-gateway) con accesso. Richiede Claude Code v2.1.158 o successivo. Non ha effetto sull'API Anthropic, dove la modalità auto è disponibile per impostazione predefinita. Vedi [Abilita la modalità auto su Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry](/it/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) |217| `CLAUDE_CODE_ENABLE_AUTO_MODE` | {/* min-version: 2.1.207 */}Accettato per compatibilità con versioni precedenti e non ha effetto. La modalità auto è disponibile per impostazione predefinita su ogni provider, inclusi Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e sessioni [gateway app Claude](/it/claude-apps-gateway) con accesso. In v2.1.158 attraverso v2.1.206, l'impostazione di questo su `1` era richiesta per rendere la [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) disponibile su quei provider |

212| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Sovrascrivi la disponibilità del [riepilogo della sessione](/it/interactive-mode#session-recap). Imposta su `0` per forzare i riepiloghi disattivati indipendentemente dall'interruttore `/config`. Imposta su `1` per forzare i riepiloghi attivati quando [`awaySummaryEnabled`](/it/settings#available-settings) è `false`. Ha la precedenza sull'impostazione e sull'interruttore `/config` |218| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Sovrascrivi la disponibilità del [riepilogo della sessione](/it/interactive-mode#session-recap). Imposta su `0` per forzare i riepiloghi disattivati indipendentemente dall'interruttore `/config`. Imposta su `1` per forzare i riepiloghi attivati quando [`awaySummaryEnabled`](/it/settings#available-settings) è `false`. Ha la precedenza sull'impostazione e sull'interruttore `/config` |

213| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Imposta su `1` per aggiornare lo stato del plugin ai confini dei turni in [modalità non interattiva](/it/headless) dopo il completamento di un'installazione in background. Disattivato per impostazione predefinita perché l'aggiornamento cambia il prompt di sistema a metà sessione, il che invalida il [caching dei prompt](/it/prompt-caching) per quel turno |219| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Imposta su `1` per aggiornare lo stato del plugin ai confini dei turni in [modalità non interattiva](/it/headless) dopo il completamento di un'installazione in background. Disattivato per impostazione predefinita perché l'aggiornamento cambia il prompt di sistema a metà sessione, il che invalida il [caching dei prompt](/it/prompt-caching) per quel turno |

214| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Imposta su `1` per instradare il sondaggio sulla qualità della sessione "Come sta andando Claude?" al vostro [collettore OpenTelemetry](/it/monitoring-usage) quando il traffico non essenziale legato ad Anthropic è bloccato. I rating del sondaggio vengono emessi solo come eventi OTEL al vostro collettore configurato. Nessun dato del sondaggio viene inviato ad Anthropic in questa modalità. Si applica quando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` o `DO_NOT_TRACK` è impostato, e non ha effetto altrimenti. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` e la politica di feedback del prodotto dell'organizzazione hanno la precedenza |220| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Imposta su `1` per instradare il sondaggio sulla qualità della sessione "Come sta andando Claude?" al vostro [collettore OpenTelemetry](/it/monitoring-usage) quando il traffico non essenziale legato ad Anthropic è bloccato. I rating del sondaggio vengono emessi solo come eventi OTEL al vostro collettore configurato. Nessun dato del sondaggio viene inviato ad Anthropic in questa modalità. Si applica quando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` o `DO_NOT_TRACK` è impostato, e non ha effetto altrimenti. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` e la politica di feedback del prodotto dell'organizzazione hanno la precedenza |


220| `CLAUDE_CODE_ENABLE_TELEMETRY` | Imposta su `1` per abilitare la raccolta di dati OpenTelemetry per metriche e logging. Obbligatorio prima di configurare gli esportatori OTel. Vedi [Monitoraggio](/it/monitoring-usage) |226| `CLAUDE_CODE_ENABLE_TELEMETRY` | Imposta su `1` per abilitare la raccolta di dati OpenTelemetry per metriche e logging. Obbligatorio prima di configurare gli esportatori OTel. Vedi [Monitoraggio](/it/monitoring-usage) |

221| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo in millisecondi da attendere dopo che il loop di query diventa inattivo prima di uscire automaticamente. Utile per flussi di lavoro automatizzati e script che utilizzano la modalità SDK |227| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo in millisecondi da attendere dopo che il loop di query diventa inattivo prima di uscire automaticamente. Utile per flussi di lavoro automatizzati e script che utilizzano la modalità SDK |

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

223| `CLAUDE_CODE_EXTRA_BODY` | Oggetto JSON da unire al livello superiore di ogni corpo di richiesta API. Utile per passare parametri specifici del provider che Claude Code non espone direttamente |229| `CLAUDE_CODE_EXTRA_BODY` | Oggetto JSON da unire al livello superiore di ogni corpo di richiesta API. Utile per passare parametri specifici del provider che Claude Code non espone direttamente. {/* min-version: 2.1.206 */}Un valore esportato nella vostra shell si applica anche alle [sessioni in background](/it/agent-view) che inviate con `claude agents` o `--bg`. Prima di v2.1.206, le sessioni in background ignoravano un valore esportato dalla shell e utilizzavano qualsiasi copia il processo supervisore in background ereditava |

224| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Sovrascrivi il limite di token predefinito per le letture di file. Utile quando è necessario leggere file più grandi per intero |230| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Sovrascrivi il limite di token predefinito per le letture di file. Utile quando è necessario leggere file più grandi per intero |

225| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | {/* min-version: 2.1.172 */}Imposta su `1` per forzare la persistenza della trascrizione, la cronologia dei prompt e la registrazione di `claude agents` anche quando questo `claude` è stato avviato dall'interno di un'altra sessione Claude Code. Utilizza quando un valore `CLAUDE_CODE_CHILD_SESSION` ereditato, ad esempio da una sessione tmux o un launcher in background avviato per la prima volta dallo strumento Bash di Claude Code, causa una sessione di livello superiore genuina a essere classificata erroneamente come annidata. {/* min-version: 2.1.178 */}A partire da v2.1.178, Claude Code rileva automaticamente il caso tmux e ignora il marcatore ereditato, quindi tmux non ha più bisogno di questa variabile. Anche onorato su v2.1.169 e versioni precedenti; non ha effetto su v2.1.170 e v2.1.171, dove il rilevamento della sessione annidata che sostituisce è stato rimosso |231| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | {/* min-version: 2.1.172 */}Imposta su `1` per forzare la persistenza della trascrizione, la cronologia dei prompt e la registrazione di `claude agents` anche quando questo `claude` è stato avviato dall'interno di un'altra sessione Claude Code. Utilizza quando un valore `CLAUDE_CODE_CHILD_SESSION` ereditato, ad esempio da una sessione tmux o un launcher in background avviato per la prima volta dallo strumento Bash di Claude Code, causa una sessione di livello superiore genuina a essere classificata erroneamente come annidata. {/* min-version: 2.1.178 */}A partire da v2.1.178, Claude Code rileva automaticamente il caso tmux e ignora il marcatore ereditato, quindi tmux non ha più bisogno di questa variabile. Anche onorato su v2.1.169 e versioni precedenti; non ha effetto su v2.1.170 e v2.1.171, dove il rilevamento della sessione annidata che sostituisce è stato rimosso |

226| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | {/* min-version: 2.1.186 */}Imposta su `1` per forzare il rendering del barrato per `~~text~~` nelle risposte di Claude quando il vostro terminale lo supporta ma non viene rilevato automaticamente, ad esempio su SSH senza `TERM_PROGRAM` inoltrato. Senza questo, i terminali non rilevati mostrano i marcatori letterali `~~` invece di renderizzare il testo come barrato. Richiede Claude Code v2.1.186 o successivo |232| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | {/* min-version: 2.1.186 */}Imposta su `1` per forzare il rendering del barrato per `~~text~~` nelle risposte di Claude quando il vostro terminale lo supporta ma non viene rilevato automaticamente, ad esempio su SSH senza `TERM_PROGRAM` inoltrato. Senza questo, i terminali non rilevati mostrano i marcatori letterali `~~` invece di renderizzare il testo come barrato. Richiede Claude Code v2.1.186 o successivo |

227| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Imposta su `1` per forzare l'abilitazione della modalità privata DEC 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) quando il vostro terminale la supporta ma non viene rilevato automaticamente. Utile per emulatori come Emacs `eat` che implementano BSU/ESU ma non rispondono al probe di capacità. Non ha effetto sotto tmux |233| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Imposta su `1` per forzare l'abilitazione della modalità privata DEC 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) quando il vostro terminale la supporta ma non viene rilevato automaticamente. Utile per emulatori come Emacs `eat` che implementano BSU/ESU ma non rispondono al probe di capacità. Non ha effetto sotto tmux. A differenza di `CLAUDE_CODE_NO_FLICKER`, che passa al [rendering a schermo intero](/it/fullscreen), questo non cambia il renderer |

228| `CLAUDE_CODE_FORK_SUBAGENT` | Imposta su `1` per consentire a Claude di generare [subagent biforcati](/it/sub-agents#fork-the-current-conversation), o `0` per disabilitarli, sostituendo qualsiasi rollout lato server. Quando abilitato, Claude può richiedere il tipo di subagent `fork` per generare un fork, un subagent che eredita il contesto della conversazione completa invece di iniziare da zero. Gli spawn senza un tipo di subagent utilizzano comunque il subagent di uso generale, e tutti gli spawn di subagent vengono eseguiti in background. Il comando esplicito [`/fork`](/it/commands) funziona senza questa variabile. Funziona in modalità interattiva e tramite SDK o `claude -p` |234| `CLAUDE_CODE_FORK_SUBAGENT` | Imposta su `1` per consentire a Claude di generare [subagent biforcati](/it/sub-agents#fork-the-current-conversation), o `0` per disabilitarli, sostituendo qualsiasi rollout lato server. Quando abilitato, Claude può richiedere il tipo di subagent `fork` per generare un fork, un subagent che eredita il contesto della conversazione completa invece di iniziare da zero. Gli spawn senza un tipo di subagent utilizzano comunque il subagent di uso generale, e tutti gli spawn di subagent vengono eseguiti in background. Il comando esplicito [`/fork`](/it/commands) funziona senza questa variabile. Funziona in modalità interattiva e tramite SDK o `claude -p` |

229| `CLAUDE_CODE_GIT_BASH_PATH` | Solo Windows: percorso dell'eseguibile Git Bash (`bash.exe`). Utilizza quando Git Bash è installato ma non nel vostro PATH. Vedi [Configurazione di Windows](/it/setup#set-up-on-windows) |235| `CLAUDE_CODE_GIT_BASH_PATH` | Solo Windows: percorso dell'eseguibile Git Bash (`bash.exe`). Utilizza quando Git Bash è installato ma non nel vostro PATH. Vedi [Configurazione di Windows](/it/setup#set-up-on-windows) |

230| `CLAUDE_CODE_GLOB_HIDDEN` | Imposta su `false` per escludere i dotfile dai risultati quando Claude richiama lo [strumento Glob](/it/tools-reference#glob-tool-behavior). Incluso per impostazione predefinita. Non influisce su `@` file autocomplete, `ls`, Grep o Read |236| `CLAUDE_CODE_GLOB_HIDDEN` | Imposta su `false` per escludere i dotfile dai risultati quando Claude richiama lo [strumento Glob](/it/tools-reference#glob-tool-behavior). Incluso per impostazione predefinita. Non influisce su `@` file autocomplete, `ls`, Grep o Read |


261| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Percorso di una o più directory di seed plugin di sola lettura, separate da `:` su Unix o `;` su Windows. Utilizza questo per raggruppare una directory plugin pre-popolata in un'immagine container. Claude Code registra i marketplace da queste directory all'avvio e utilizza i plugin pre-memorizzati nella cache senza ri-clonare. Vedi [Pre-popola i plugin per i container](/it/plugin-marketplaces#pre-populate-plugins-for-containers) |267| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Percorso di una o più directory di seed plugin di sola lettura, separate da `:` su Unix o `;` su Windows. Utilizza questo per raggruppare una directory plugin pre-popolata in un'immagine container. Claude Code registra i marketplace da queste directory all'avvio e utilizza i plugin pre-memorizzati nella cache senza ri-clonare. Vedi [Pre-popola i plugin per i container](/it/plugin-marketplaces#pre-populate-plugins-for-containers) |

262| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Imposta su `1` per impedire a Claude Code di passare `-ExecutionPolicy Bypass` quando genera PowerShell per le chiamate di strumento, gli hook e i comandi della linea di stato, e rispettare la politica di esecuzione effettiva della macchina. Per impostazione predefinita Claude Code bypassa la politica di esecuzione a livello di processo in modo che gli script `.ps1` e gli import di moduli funzionino su installazioni Windows predefinite con Restricted. Il bypass a livello di processo non sostituisce mai la Politica di gruppo `MachinePolicy` o `UserPolicy` indipendentemente da questa impostazione |268| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Imposta su `1` per impedire a Claude Code di passare `-ExecutionPolicy Bypass` quando genera PowerShell per le chiamate di strumento, gli hook e i comandi della linea di stato, e rispettare la politica di esecuzione effettiva della macchina. Per impostazione predefinita Claude Code bypassa la politica di esecuzione a livello di processo in modo che gli script `.ps1` e gli import di moduli funzionino su installazioni Windows predefinite con Restricted. Il bypass a livello di processo non sostituisce mai la Politica di gruppo `MachinePolicy` o `UserPolicy` indipendentemente da questa impostazione |

263| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | {/* min-version: 2.1.182 */}Tempo massimo in millisecondi che la [modalità non interattiva](/it/headless#background-tasks-at-exit) con il flag `-p` attende dopo il turno finale per i subagent in background e i workflow il cui risultato fa parte dell'output. Predefinito: `600000`, o 10 minuti. Quando il limite viene superato, i subagent in background rimanenti vengono terminati e il processo esce. Imposta su `0` per attendere indefinitamente. Questo limite è separato dal periodo di grazia di cinque secondi che si applica ai semplici shell in background |269| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | {/* min-version: 2.1.182 */}Tempo massimo in millisecondi che la [modalità non interattiva](/it/headless#background-tasks-at-exit) con il flag `-p` attende dopo il turno finale per i subagent in background e i workflow il cui risultato fa parte dell'output. Predefinito: `600000`, o 10 minuti. Quando il limite viene superato, i subagent in background rimanenti vengono terminati e il processo esce. Imposta su `0` per attendere indefinitamente. Questo limite è separato dal periodo di grazia di cinque secondi che si applica ai semplici shell in background |

270| `CLAUDE_CODE_PROCESS_WRAPPER` | {/* min-version: 2.1.208 */}Avvia i processi che Claude Code avvia dal suo binario attraverso un wrapper eseguibile, dato come prefisso argv come `/opt/corp/launcher`. Copre il servizio in background che ospita le sessioni [agent view](/it/agent-view), ogni sessione che genera, e il riavvio che Claude Code esegue di se stesso per finire di installare un aggiornamento. Il primo token deve essere il percorso assoluto di un eseguibile che termina eseguendo `exec "$@"`, e la maggior parte dei launcher è quel singolo percorso. Il valore è un elenco di argomenti, non un comando di shell: lo spazio separa i token, le virgolette doppie raggruppano un percorso che contiene spazi, e un valore che inizia con `[` viene letto come un array di stringhe JSON. Impostatelo nel blocco `env` delle impostazioni utente o [gestite](/it/permissions#managed-settings), non come esportazione di shell, in modo che il servizio in background staccato lo erediti; le impostazioni di progetto e locali non possono impostarlo. Il wrapper dell'estensione VS Code configura il suo launcher separatamente attraverso la sua impostazione `claudeProcessWrapper`. Ignorato su Windows. `CLAUDE_CODE_SHELL_PREFIX` è un controllo separato: avvolge i comandi shell che Claude Code esegue come una singola stringa quoted, mentre questa variabile avvolge i processi di Claude Code stesso come prefisso argv. Vedi [Esegui Claude Code dietro un launcher aziendale](/it/corporate-launcher) |

264| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | {/* min-version: 2.1.152 */}Imposta su `1` per propagare il contesto di traccia W3C quando `ANTHROPIC_BASE_URL` punta a un proxy personalizzato. La propagazione copre l'intestazione `traceparent` su richieste di modello e MCP HTTP e la variabile d'ambiente `TRACEPARENT` per sottoprocessi Bash, PowerShell e hook. Per impostazione predefinita, la propagazione è abilitata solo quando connessi direttamente all'API Anthropic. Aggiunto in v2.1.152. Vedi [Tracce (beta)](/it/monitoring-usage#traces-beta) |271| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | {/* min-version: 2.1.152 */}Imposta su `1` per propagare il contesto di traccia W3C quando `ANTHROPIC_BASE_URL` punta a un proxy personalizzato. La propagazione copre l'intestazione `traceparent` su richieste di modello e MCP HTTP e la variabile d'ambiente `TRACEPARENT` per sottoprocessi Bash, PowerShell e hook. Per impostazione predefinita, la propagazione è abilitata solo quando connessi direttamente all'API Anthropic. Aggiunto in v2.1.152. Vedi [Tracce (beta)](/it/monitoring-usage#traces-beta) |

265| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Impostato da piattaforme host che incorporano Claude Code e gestiscono l'instradamento del provider di modelli per suo conto. Se impostato, la selezione del provider, l'endpoint e le variabili di autenticazione come `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` e `ANTHROPIC_API_KEY` nei file di impostazioni vengono ignorate in modo che le impostazioni dell'utente non possono sovrascrivere l'instradamento dell'host. Anche l'opt-out automatico della telemetria per Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry viene saltato, quindi la telemetria segue l'opt-out standard `DISABLE_TELEMETRY`. Vedi [Comportamenti predefiniti per provider API](/it/data-usage#default-behaviors-by-api-provider) |272| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Impostato da piattaforme host che incorporano Claude Code e gestiscono l'instradamento del provider di modelli per suo conto. Se impostato, la selezione del provider, l'endpoint e le variabili di autenticazione come `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` e `ANTHROPIC_API_KEY` nei file di impostazioni vengono ignorate in modo che le impostazioni dell'utente non possono sovrascrivere l'instradamento dell'host. Anche l'opt-out automatico della telemetria per Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry viene saltato, quindi la telemetria segue l'opt-out standard `DISABLE_TELEMETRY`. Vedi [Comportamenti predefiniti per provider API](/it/data-usage#default-behaviors-by-api-provider) |

266| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Imposta su `1` per consentire al proxy di eseguire la risoluzione DNS invece del chiamante. Opt-in per ambienti in cui il proxy deve gestire la risoluzione del nome host |273| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Imposta su `1` per consentire al proxy di eseguire la risoluzione DNS invece del chiamante. Opt-in per ambienti in cui il proxy deve gestire la risoluzione del nome host |


279| `CLAUDE_CODE_SIMPLE` | Imposta su `1` per eseguire con un prompt di sistema minimo e solo gli strumenti Bash, lettura file e modifica file. Gli strumenti MCP da `--mcp-config` sono ancora disponibili. Disabilita l'auto-discovery di hook, skill, plugin, server MCP, memoria automatica e CLAUDE.md. I token OAuth e le credenziali del portachiavi non vengono letti, quindi l'autenticazione Anthropic deve provenire da `ANTHROPIC_API_KEY` o da un `apiKeyHelper` in `--settings`. Equivalente a passare [`--bare`](/it/headless#start-faster-with-bare-mode) |286| `CLAUDE_CODE_SIMPLE` | Imposta su `1` per eseguire con un prompt di sistema minimo e solo gli strumenti Bash, lettura file e modifica file. Gli strumenti MCP da `--mcp-config` sono ancora disponibili. Disabilita l'auto-discovery di hook, skill, plugin, server MCP, memoria automatica e CLAUDE.md. I token OAuth e le credenziali del portachiavi non vengono letti, quindi l'autenticazione Anthropic deve provenire da `ANTHROPIC_API_KEY` o da un `apiKeyHelper` in `--settings`. Equivalente a passare [`--bare`](/it/headless#start-faster-with-bare-mode) |

280| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Imposta su `1` per utilizzare il prompt di sistema minimo e le descrizioni degli strumenti compresse su qualsiasi modello. Imposta su `0`, `false`, `no` o `off` per rinunciare anche su modelli dove l'esperimento o la configurazione del server altrimenti lo abiliterebbero. Il set di strumenti completo, hook, server MCP e scoperta CLAUDE.md rimangono abilitati |287| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Imposta su `1` per utilizzare il prompt di sistema minimo e le descrizioni degli strumenti compresse su qualsiasi modello. Imposta su `0`, `false`, `no` o `off` per rinunciare anche su modelli dove l'esperimento o la configurazione del server altrimenti lo abiliterebbero. Il set di strumenti completo, hook, server MCP e scoperta CLAUDE.md rimangono abilitati |

281| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Salta l'autenticazione lato client per [Claude Platform on AWS](/it/claude-platform-on-aws), per gateway che firmano le richieste stessi |288| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Salta l'autenticazione lato client per [Claude Platform on AWS](/it/claude-platform-on-aws), per gateway che firmano le richieste stessi |

289| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | {/* min-version: 2.1.207 */}Imposta su `1` per disattivare la cache in-process delle credenziali risolte dalla catena del provider di credenziali predefinito AWS, in modo che Claude Code risolva la catena su ogni richiesta API. Con la cache disattivata, un profilo supportato da SSO richiede credenziali da IAM Identity Center su ogni richiesta. Vedi [credential caching and resolution timeout](/it/amazon-bedrock#credential-caching-and-resolution-timeout). Richiede Claude Code v2.1.207 o successivo |

282| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Salta l'autenticazione AWS per Amazon Bedrock (ad esempio, quando si utilizza un gateway LLM) |290| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Salta l'autenticazione AWS per Amazon Bedrock (ad esempio, quando si utilizza un gateway LLM) |

283| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Salta l'autenticazione Azure per Microsoft Foundry, per un proxy o gateway che inietta la propria intestazione `Authorization`. Claude Code invia richieste senza una credenziale Azure e preserva l'intestazione `Authorization` che fornite, ad esempio tramite `ANTHROPIC_CUSTOM_HEADERS`. Ignorato quando `ANTHROPIC_FOUNDRY_API_KEY` o `ANTHROPIC_FOUNDRY_AUTH_TOKEN` è impostato. {/* min-version: 2.1.203 */}Prima di v2.1.203, questa variabile lasciava il client Microsoft Foundry incapace di inviare richieste a meno che una chiave API non fosse anche impostata |291| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Salta l'autenticazione Azure per Microsoft Foundry, per un proxy o gateway che inietta la propria intestazione `Authorization`. Claude Code invia richieste senza una credenziale Azure e preserva l'intestazione `Authorization` che fornite, ad esempio tramite `ANTHROPIC_CUSTOM_HEADERS`. Ignorato quando `ANTHROPIC_FOUNDRY_API_KEY` o `ANTHROPIC_FOUNDRY_AUTH_TOKEN` è impostato. {/* min-version: 2.1.203 */}Prima di v2.1.203, questa variabile lasciava il client Microsoft Foundry incapace di inviare richieste a meno che una chiave API non fosse anche impostata |

284| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Salta l'autenticazione AWS per Amazon Bedrock Mantle (ad esempio, quando si utilizza un gateway LLM) |292| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Salta l'autenticazione AWS per Amazon Bedrock Mantle (ad esempio, quando si utilizza un gateway LLM) |


295| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Imposta su `false` per disabilitare l'evidenziazione della sintassi nell'output diff. Utile quando i colori interferiscono con la configurazione del vostro terminale. Per disabilitare anche l'evidenziazione nei blocchi di codice e nelle anteprime di file, utilizzate l'impostazione [`syntaxHighlightingDisabled`](/it/settings) |303| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Imposta su `false` per disabilitare l'evidenziazione della sintassi nell'output diff. Utile quando i colori interferiscono con la configurazione del vostro terminale. Per disabilitare anche l'evidenziazione nei blocchi di codice e nelle anteprime di file, utilizzate l'impostazione [`syntaxHighlightingDisabled`](/it/settings) |

296| `CLAUDE_CODE_TASK_LIST_ID` | Condividi un elenco di attività tra le sessioni. Imposta lo stesso ID in più istanze di Claude Code per coordinare un elenco di attività condiviso. Vedi [Elenco attività](/it/interactive-mode#task-list) |304| `CLAUDE_CODE_TASK_LIST_ID` | Condividi un elenco di attività tra le sessioni. Imposta lo stesso ID in più istanze di Claude Code per coordinare un elenco di attività condiviso. Vedi [Elenco attività](/it/interactive-mode#task-list) |

297| `CLAUDE_CODE_TEAM_NAME` | Nome del team di agenti a cui appartiene questo compagno di squadra. Impostato automaticamente sui membri del [team di agenti](/it/agent-teams) |305| `CLAUDE_CODE_TEAM_NAME` | Nome del team di agenti a cui appartiene questo compagno di squadra. Impostato automaticamente sui membri del [team di agenti](/it/agent-teams) |

306| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | {/* min-version: 2.1.206 */}Sovrascrivi, in millisecondi, quanto tempo una sessione non interattiva attende all'uscita affinché il suo [team di agenti](/it/agent-teams) finisca di smontarsi. Accetta 1000 a 60000; un valore fuori intervallo viene ignorato e si applica il valore predefinito di 10000. Richiede Claude Code v2.1.206 o successivo |

298| `CLAUDE_CODE_TMPDIR` | Sovrascrivi la directory temporanea utilizzata per i file temporanei interni. Claude Code aggiunge `/claude-{uid}/` su Unix o `/claude/` su Windows a questo percorso. Predefinito: `/tmp` su macOS, `os.tmpdir()` su Linux e Windows. {/* min-version: 2.1.161 */}A partire da v2.1.161, su macOS e Linux, i sottoprocessi Bash [sandboxed](/it/sandboxing) ricevono un fallback `$TMPDIR` breve sotto il valore predefinito del sistema quando il vostro override è un percorso lungo, poiché alcuni strumenti falliscono quando i percorsi temporanei diventano troppo lunghi. I comandi Bash non sandboxed ereditano il vostro `$TMPDIR` della shell invariato. I file temporanei di Claude Code stesso utilizzano sempre il vostro override |307| `CLAUDE_CODE_TMPDIR` | Sovrascrivi la directory temporanea utilizzata per i file temporanei interni. Claude Code aggiunge `/claude-{uid}/` su Unix o `/claude/` su Windows a questo percorso. Predefinito: `/tmp` su macOS, `os.tmpdir()` su Linux e Windows. {/* min-version: 2.1.161 */}A partire da v2.1.161, su macOS e Linux, i sottoprocessi Bash [sandboxed](/it/sandboxing) ricevono un fallback `$TMPDIR` breve sotto il valore predefinito del sistema quando il vostro override è un percorso lungo, poiché alcuni strumenti falliscono quando i percorsi temporanei diventano troppo lunghi. I comandi Bash non sandboxed ereditano il vostro `$TMPDIR` della shell invariato. I file temporanei di Claude Code stesso utilizzano sempre il vostro override |

299| `CLAUDE_CODE_TMUX_TRUECOLOR` | Imposta su `1` per consentire l'output truecolor a 24 bit all'interno di tmux. Per impostazione predefinita, Claude Code si limita a 256 colori quando `$TMUX` è impostato perché tmux non passa attraverso le sequenze di escape truecolor a meno che non sia configurato per farlo. Imposta questo dopo aver aggiunto `set -ga terminal-overrides ',*:Tc'` al vostro `~/.tmux.conf`. Vedi [Configurazione del terminale](/it/terminal-config) per altre impostazioni di tmux |308| `CLAUDE_CODE_TMUX_TRUECOLOR` | Imposta su `1` per consentire l'output truecolor a 24 bit all'interno di tmux. Per impostazione predefinita, Claude Code si limita a 256 colori quando `$TMUX` è impostato perché tmux non passa attraverso le sequenze di escape truecolor a meno che non sia configurato per farlo. Imposta questo dopo aver aggiunto `set -ga terminal-overrides ',*:Tc'` al vostro `~/.tmux.conf`. Vedi [Configurazione del terminale](/it/terminal-config) per altre impostazioni di tmux |

300| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Utilizza [Claude Platform on AWS](/it/claude-platform-on-aws) |309| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Utilizza [Claude Platform on AWS](/it/claude-platform-on-aws) |


319| `DISABLE_COMPACT` | Imposta su `1` per disabilitare tutta la compattazione: sia la compattazione automatica che il comando manuale `/compact` |328| `DISABLE_COMPACT` | Imposta su `1` per disabilitare tutta la compattazione: sia la compattazione automatica che il comando manuale `/compact` |

320| `DISABLE_COST_WARNINGS` | Imposta su `1` per disabilitare i messaggi di avviso sui costi |329| `DISABLE_COST_WARNINGS` | Imposta su `1` per disabilitare i messaggi di avviso sui costi |

321| `DISABLE_DOCTOR_COMMAND` | Imposta su `1` per nascondere il comando `/doctor`. Utile per distribuzioni gestite in cui gli utenti non dovrebbero eseguire diagnostiche di installazione |330| `DISABLE_DOCTOR_COMMAND` | Imposta su `1` per nascondere il comando `/doctor`. Utile per distribuzioni gestite in cui gli utenti non dovrebbero eseguire diagnostiche di installazione |

322| `DISABLE_ERROR_REPORTING` | Imposta su `1` per rinunciare alla segnalazione degli errori di Sentry |331| `DISABLE_ERROR_REPORTING` | Imposta su `1` per rinunciare alla segnalazione degli errori |

323| `DISABLE_EXTRA_USAGE_COMMAND` | Imposta su `1` per nascondere il comando `/usage-credits` che consente agli utenti di acquistare utilizzo aggiuntivo oltre i limiti di velocità |332| `DISABLE_EXTRA_USAGE_COMMAND` | Imposta su `1` per nascondere il comando `/usage-credits` che consente agli utenti di acquistare utilizzo aggiuntivo oltre i limiti di velocità |

324| `DISABLE_FEEDBACK_COMMAND` | Imposta su `1` per disabilitare il comando `/feedback`. Il nome più vecchio `DISABLE_BUG_COMMAND` è anche accettato |333| `DISABLE_FEEDBACK_COMMAND` | Imposta su `1` per disabilitare il comando `/feedback`. Il nome più vecchio `DISABLE_BUG_COMMAND` è anche accettato |

325| `DISABLE_GROWTHBOOK` | Imposta su `1` per disabilitare il recupero dei flag di funzionalità GrowthBook e utilizzare i valori predefiniti del codice per ogni flag. La registrazione degli eventi di telemetria rimane attiva a meno che `DISABLE_TELEMETRY` non sia anche impostato |334| `DISABLE_GROWTHBOOK` | Imposta su `1` per disabilitare il recupero dei flag di funzionalità GrowthBook e utilizzare i valori predefiniti del codice per ogni flag. La registrazione degli eventi di telemetria rimane attiva a meno che `DISABLE_TELEMETRY` non sia anche impostato |


340| `ENABLE_CLAUDEAI_MCP_SERVERS` | Imposta su `false` per disabilitare i [server MCP claude.ai](/it/mcp#use-mcp-servers-from-claude-ai) in Claude Code. Abilitato per impostazione predefinita per gli utenti connessi. Per disabilitare per progetto o per organizzazione, imposta [`disableClaudeAiConnectors`](/it/settings#available-settings) nelle impostazioni |349| `ENABLE_CLAUDEAI_MCP_SERVERS` | Imposta su `false` per disabilitare i [server MCP claude.ai](/it/mcp#use-mcp-servers-from-claude-ai) in Claude Code. Abilitato per impostazione predefinita per gli utenti connessi. Per disabilitare per progetto o per organizzazione, imposta [`disableClaudeAiConnectors`](/it/settings#available-settings) nelle impostazioni |

341| `ENABLE_PROMPT_CACHING_1H` | Imposta su `1` per richiedere un TTL della cache dei prompt di 1 ora invece dei 5 minuti predefiniti. Destinato agli utenti di chiave API, [Amazon Bedrock](/it/amazon-bedrock), [Google Cloud's Agent Platform](/it/google-vertex-ai), [Microsoft Foundry](/it/microsoft-foundry) e [Claude Platform on AWS](/it/claude-platform-on-aws). Gli utenti di abbonamento ricevono automaticamente il TTL di 1 ora. Le scritture della cache di 1 ora vengono fatturate a una tariffa più elevata |350| `ENABLE_PROMPT_CACHING_1H` | Imposta su `1` per richiedere un TTL della cache dei prompt di 1 ora invece dei 5 minuti predefiniti. Destinato agli utenti di chiave API, [Amazon Bedrock](/it/amazon-bedrock), [Google Cloud's Agent Platform](/it/google-vertex-ai), [Microsoft Foundry](/it/microsoft-foundry) e [Claude Platform on AWS](/it/claude-platform-on-aws). Gli utenti di abbonamento ricevono automaticamente il TTL di 1 ora. Le scritture della cache di 1 ora vengono fatturate a una tariffa più elevata |

342| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecato. Utilizza `ENABLE_PROMPT_CACHING_1H` invece |351| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecato. Utilizza `ENABLE_PROMPT_CACHING_1H` invece |

343| `ENABLE_TOOL_SEARCH` | Controlla la [ricerca degli strumenti MCP](/it/mcp#scale-with-mcp-tool-search). Non impostato: tutti gli strumenti MCP differiti per impostazione predefinita, ma caricati in primo piano su Google Cloud's Agent Platform o quando `ANTHROPIC_BASE_URL` punta a un host non di prima parte. Valori: `true` (sempre differire e inviare l'intestazione beta, le richieste falliscono su modelli Google Cloud's Agent Platform precedenti a Sonnet 4.5 o Opus 4.5, o su proxy che non supportano `tool_reference`), `auto` (modalità soglia: carica in primo piano se gli strumenti si adattano entro il 10% del contesto), `auto:N` (soglia personalizzata, ad es. `auto:5` per il 5%), `false` (carica tutto in primo piano) |352| `ENABLE_TOOL_SEARCH` | Controlla la [ricerca degli strumenti MCP](/it/mcp#scale-with-mcp-tool-search). Non impostato: tutti gli strumenti MCP differiti per impostazione predefinita, ma caricati in primo piano su Google Cloud's Agent Platform o quando `ANTHROPIC_BASE_URL` punta a un host non di prima parte. Valori: `true` (sempre differire e inviare l'intestazione beta, le richieste falliscono su modelli Google Cloud's Agent Platform precedenti a Sonnet 4.5 o Opus 4.5, o su proxy che non supportano `tool_reference`), `auto` (modalità soglia: carica in primo piano se gli strumenti si adattano entro il 10% del contesto), `auto:N` (soglia personalizzata, ad es. `auto:5` per il 5%), `false` (carica tutto in primo piano). Ignorato quando `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` è impostato, che forza tutti gli strumenti a caricarsi in primo piano |

344| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Imposta su qualsiasi valore non vuoto per fare in modo che tutti i modelli, non solo Opus, smettano di riprovare con un errore di sovraccarico ripetuto quando nessun modello di fallback è configurato. {/* min-version: 2.1.160 */}A partire da v2.1.160, una [catena di modelli di fallback](/it/model-config#fallback-model-chains) configurata si attiva su errori di sovraccarico ripetuti per qualsiasi modello primario, quindi questa variabile non influisce sul passaggio a un modello di fallback |353| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Imposta su qualsiasi valore non vuoto per fare in modo che tutti i modelli, non solo Opus, smettano di riprovare con un errore di sovraccarico ripetuto quando nessun modello di fallback è configurato. {/* min-version: 2.1.160 */}A partire da v2.1.160, una [catena di modelli di fallback](/it/model-config#fallback-model-chains) configurata si attiva su errori di sovraccarico ripetuti per qualsiasi modello primario, quindi questa variabile non influisce sul passaggio a un modello di fallback |

345| `FORCE_AUTOUPDATE_PLUGINS` | Imposta su `1` per forzare gli aggiornamenti automatici dei plugin anche quando l'auto-updater principale è disabilitato tramite `DISABLE_AUTOUPDATER` |354| `FORCE_AUTOUPDATE_PLUGINS` | Imposta su `1` per forzare gli aggiornamenti automatici dei plugin anche quando l'auto-updater principale è disabilitato tramite `DISABLE_AUTOUPDATER` |

355| `FORCE_HYPERLINK` | Imposta su `1` per abilitare i hyperlink OSC 8 cliccabili quando il vostro terminale li supporta ma non viene rilevato automaticamente, o `0` per disabilitarli |

346| `FORCE_PROMPT_CACHING_5M` | Imposta su `1` per forzare il TTL della cache dei prompt di 5 minuti anche quando il TTL di 1 ora si applicherebbe altrimenti. Sostituisce `ENABLE_PROMPT_CACHING_1H` |356| `FORCE_PROMPT_CACHING_5M` | Imposta su `1` per forzare il TTL della cache dei prompt di 5 minuti anche quando il TTL di 1 ora si applicherebbe altrimenti. Sostituisce `ENABLE_PROMPT_CACHING_1H` |

347| `HTTP_PROXY` | Specifica il server proxy HTTP per le connessioni di rete |357| `HTTP_PROXY` | Specifica il server proxy HTTP per le connessioni di rete |

348| `HTTPS_PROXY` | Specifica il server proxy HTTPS per le connessioni di rete |358| `HTTPS_PROXY` | Specifica il server proxy HTTPS per le connessioni di rete |


357| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Numero massimo di server MCP remoti (HTTP/SSE) da connettere in parallelo durante l'avvio (predefinito: 20) |367| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Numero massimo di server MCP remoti (HTTP/SSE) da connettere in parallelo durante l'avvio (predefinito: 20) |

358| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Numero massimo di server MCP locali (stdio) da connettere in parallelo durante l'avvio (predefinito: 3) |368| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Numero massimo di server MCP locali (stdio) da connettere in parallelo durante l'avvio (predefinito: 3) |

359| `MCP_TIMEOUT` | Timeout in millisecondi per l'avvio del server MCP (predefinito: 30000, o 30 secondi) |369| `MCP_TIMEOUT` | Timeout in millisecondi per l'avvio del server MCP (predefinito: 30000, o 30 secondi) |

360| `MCP_TOOL_TIMEOUT` | Timeout in millisecondi per l'esecuzione dello strumento MCP (predefinito: 100000000, circa 28 ore). Un campo `timeout` per server in `.mcp.json` sostituisce questo per quel server. {/* min-version: 2.1.203 */}Un `timeout` per server di almeno 1000 imposta anche la finestra di inattività minima per le chiamate di strumento di quel server, quindi `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` non le interrompe mai prima; questo floor richiede Claude Code v2.1.203 o successivo. Per la variabile env, i valori inferiori a 1000 vengono arrotondati a un secondo; per il campo per server, i valori inferiori a 1000 vengono ignorati |370| `MCP_TOOL_TIMEOUT` | Timeout in millisecondi per l'esecuzione dello strumento MCP (predefinito: 100000000, circa 28 ore). Per un server HTTP, SSE o connettore claude.ai, ogni richiesta scade anche dopo 60 secondi per impostazione predefinita; impostate questa variabile, o il `timeout` per server, sopra 60000 per aumentare quel limite per richiesta. Un valore inferiore accorcia comunque il timeout complessivo di esecuzione dello strumento ma lascia il limite per richiesta a 60 secondi. I server stdio e WebSocket non hanno un timer per richiesta. Un campo `timeout` per server in `.mcp.json` sostituisce questo per quel server. {/* min-version: 2.1.203 */}Un `timeout` per server di almeno 1000 imposta anche la finestra di inattività minima per le chiamate di strumento di quel server, quindi `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` non le interrompe mai prima; questo floor richiede Claude Code v2.1.203 o successivo. Per la variabile env, i valori inferiori a 1000 vengono arrotondati a un secondo; per il campo per server, i valori inferiori a 1000 vengono ignorati |

361| `NO_PROXY` | Elenco di domini e IP a cui le richieste verranno emesse direttamente, bypassando il proxy |371| `NO_PROXY` | Elenco di domini e IP a cui le richieste verranno emesse direttamente, bypassando il proxy |

362| `OTEL_LOG_ASSISTANT_RESPONSES` | {/* min-version: 2.1.193 */}Imposta su `1` per includere il testo della risposta del modello su eventi di log OpenTelemetry `assistant_response`. Se non impostato, viene utilizzato il valore di `OTEL_LOG_USER_PROMPTS`. Imposta su `0` per mantenere le risposte redatte anche quando `OTEL_LOG_USER_PROMPTS` è impostato. Richiede Claude Code v2.1.193 o successivo. Vedi [Monitoraggio](/it/monitoring-usage#assistant-response-event) |372| `OTEL_LOG_ASSISTANT_RESPONSES` | {/* min-version: 2.1.193 */}Imposta su `1` per includere il testo della risposta del modello su eventi di log OpenTelemetry `assistant_response`. Se non impostato, viene utilizzato il valore di `OTEL_LOG_USER_PROMPTS`. Imposta su `0` per mantenere le risposte redatte anche quando `OTEL_LOG_USER_PROMPTS` è impostato. Richiede Claude Code v2.1.193 o successivo. Vedi [Monitoraggio](/it/monitoring-usage#assistant-response-event) |

363| `OTEL_LOG_RAW_API_BODIES` | Emetti il JSON della richiesta e della risposta dell'API Anthropic Messages come eventi di log `api_request_body` / `api_response_body`. Imposta su `1` per i corpi inline troncati a 60 KB, o `file:<dir>` per scrivere i corpi non troncati su disco ed emettere un percorso `body_ref` invece. Disabilitato per impostazione predefinita; i corpi includono l'intera cronologia della conversazione. Vedi [Monitoraggio](/it/monitoring-usage#api-request-body-event) |373| `OTEL_LOG_RAW_API_BODIES` | Emetti il JSON della richiesta e della risposta dell'API Anthropic Messages come eventi di log `api_request_body` / `api_response_body`. Imposta su `1` per i corpi inline troncati a 60 KB, o `file:<dir>` per scrivere i corpi non troncati su disco ed emettere un percorso `body_ref` invece. Disabilitato per impostazione predefinita; i corpi includono l'intera cronologia della conversazione. Vedi [Monitoraggio](/it/monitoring-usage#api-request-body-event) |

hooks.md +63 −63

Details

7> Riferimento per gli eventi dei hook di Claude Code, schema di configurazione, formati JSON di input/output, codici di uscita, hook asincroni, hook HTTP, hook di prompt e hook degli strumenti MCP.7> Riferimento per gli eventi dei hook di Claude Code, schema di configurazione, formati JSON di input/output, codici di uscita, hook asincroni, hook HTTP, hook di prompt e hook degli strumenti MCP.

8 8 

9<Tip>9<Tip>

10 Per una guida di avvio rapido con esempi, consultare [Automatizzare i flussi di lavoro con i hook](/it/hooks-guide).10 Per una guida di avvio rapido con esempi, consultare [Automatizzare i flussi di lavoro con i hook](/docs/it/hooks-guide).

11</Tip>11</Tip>

12 12 

13Gli hook sono comandi shell definiti dall'utente, endpoint HTTP o prompt LLM che si eseguono automaticamente in punti specifici del ciclo di vita di Claude Code. Utilizzare questo riferimento per cercare schemi di eventi, opzioni di configurazione, formati JSON di input/output e funzionalità avanzate come hook asincroni, hook HTTP e hook degli strumenti MCP. Se si stanno configurando i hook per la prima volta, iniziare con la [guida](/it/hooks-guide).13Gli hook sono comandi shell definiti dall'utente, endpoint HTTP o prompt LLM che si eseguono automaticamente in punti specifici del ciclo di vita di Claude Code. Utilizzare questo riferimento per cercare schemi di eventi, opzioni di configurazione, formati JSON di input/output e funzionalità avanzate come hook asincroni, hook HTTP e hook degli strumenti MCP. Se si stanno configurando i hook per la prima volta, iniziare con la [guida](/docs/it/hooks-guide).

14 14 

15<h2 id="hook-lifecycle">15<h2 id="hook-lifecycle">

16 Ciclo di vita dei hook16 Ciclo di vita dei hook


52| `TaskCompleted` | When a task is being marked as completed |52| `TaskCompleted` | When a task is being marked as completed |

53| `Stop` | When Claude finishes responding |53| `Stop` | When Claude finishes responding |

54| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |54| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

55| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |55| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |

56| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |56| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

57| `ConfigChange` | When a configuration file changes during a session |57| `ConfigChange` | When a configuration file changes during a session |

58| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |58| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

59| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |59| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

60| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |60| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |

61| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |61| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |

62| `PreCompact` | Before context compaction |62| `PreCompact` | Before context compaction |

63| `PostCompact` | After context compaction completes |63| `PostCompact` | After context compaction completes |

64| `Elicitation` | When an MCP server requests user input during a tool call |64| `Elicitation` | When an MCP server requests user input during a tool call |


147 }147 }

148 ```148 ```

149 149 

150 Se il comando fosse stato una variante più sicura di `rm` come `rm file.txt`, lo script avrebbe raggiunto `exit 0` invece. Il codice di uscita 0 senza output significa che l'hook non ha alcuna decisione da segnalare, quindi la chiamata dello strumento continua attraverso il normale [flusso di autorizzazione](/it/permissions). L'hook può negare la chiamata, ma rimanere in silenzio non la approva.150 Se il comando fosse stato una variante più sicura di `rm` come `rm file.txt`, lo script avrebbe raggiunto `exit 0` invece. Il codice di uscita 0 senza output significa che l'hook non ha alcuna decisione da segnalare, quindi la chiamata dello strumento continua attraverso il normale [flusso di autorizzazione](/docs/it/permissions). L'hook può negare la chiamata, ma rimanere in silenzio non la approva.

151 </Step>151 </Step>

152 152 

153 <Step title="Claude Code agisce sul risultato">153 <Step title="Claude Code agisce sul risultato">


185| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repository |185| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repository |

186| `.claude/settings.local.json` | Singolo progetto | No, gitignored quando Claude Code lo crea |186| `.claude/settings.local.json` | Singolo progetto | No, gitignored quando Claude Code lo crea |

187| Impostazioni della politica gestita | Organizzazione intera | Sì, controllato dall'amministratore |187| Impostazioni della politica gestita | Organizzazione intera | Sì, controllato dall'amministratore |

188| [Plugin](/it/plugins) `hooks/hooks.json` | Quando il plugin è abilitato | Sì, fornito con il plugin |188| [Plugin](/docs/it/plugins) `hooks/hooks.json` | Quando il plugin è abilitato | Sì, fornito con il plugin |

189| [Skill](/it/skills) o [agent](/it/sub-agents) frontmatter | Mentre il componente è attivo | Sì, definito nel file del componente |189| [Skill](/docs/it/skills) o [agent](/docs/it/sub-agents) frontmatter | Mentre il componente è attivo | Sì, definito nel file del componente |

190 190 

191Per i dettagli sulla risoluzione del file di impostazioni, consultare [settings](/it/settings). Gli amministratori aziendali possono utilizzare `allowManagedHooksOnly` per bloccare i hook dell'utente, del progetto e del plugin. Gli hook dai plugin forzatamente abilitati nelle impostazioni gestite `enabledPlugins` sono esenti, quindi gli amministratori possono distribuire hook verificati attraverso un marketplace dell'organizzazione. Consultare [Hook configuration](/it/settings#hook-configuration).191Per i dettagli sulla risoluzione del file di impostazioni, consultare [settings](/docs/it/settings). Gli amministratori aziendali possono utilizzare `allowManagedHooksOnly` per bloccare i hook dell'utente, del progetto e del plugin. Gli hook dai plugin forzatamente abilitati nelle impostazioni gestite `enabledPlugins` sono esenti, quindi gli amministratori possono distribuire hook verificati attraverso un marketplace dell'organizzazione. Consultare [Hook configuration](/docs/it/settings#hook-configuration).

192 192 

193<h3 id="matcher-patterns">193<h3 id="matcher-patterns">

194 Modelli di matcher194 Modelli di matcher


258 258 

259`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` e `CwdChanged` non supportano i matcher e si attivano sempre ad ogni occorrenza. Se si aggiunge un campo `matcher` a questi eventi, viene silenziosamente ignorato.259`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` e `CwdChanged` non supportano i matcher e si attivano sempre ad ogni occorrenza. Se si aggiunge un campo `matcher` a questi eventi, viene silenziosamente ignorato.

260 260 

261Per gli eventi degli strumenti, è possibile filtrare più strettamente impostando il campo [`if`](#common-fields) sui singoli gestori del hook. `if` utilizza la [sintassi delle regole di autorizzazione](/it/permissions) per corrispondere al nome dello strumento e agli argomenti insieme, quindi `"Bash(git *)"` viene eseguito quando qualsiasi sottocomando dell'input Bash corrisponde a `git *` e `"Edit(*.ts)"` viene eseguito solo per i file TypeScript.261Per gli eventi degli strumenti, è possibile filtrare più strettamente impostando il campo [`if`](#common-fields) sui singoli gestori del hook. `if` utilizza la [sintassi delle regole di autorizzazione](/docs/it/permissions) per corrispondere al nome dello strumento e agli argomenti insieme, quindi `"Bash(git *)"` viene eseguito quando qualsiasi sottocomando dell'input Bash corrisponde a `git *` e `"Edit(*.ts)"` viene eseguito solo per i file TypeScript.

262 262 

263<h4 id="match-mcp-tools">263<h4 id="match-mcp-tools">

264 Corrispondere ai strumenti MCP264 Corrispondere ai strumenti MCP

265</h4>265</h4>

266 266 

267Gli strumenti del server [MCP](/it/mcp) appaiono come strumenti regolari negli eventi degli strumenti (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), quindi è possibile farvi corrispondere lo stesso modo in cui si fa corrispondere qualsiasi altro nome di strumento.267Gli strumenti del server [MCP](/docs/it/mcp) appaiono come strumenti regolari negli eventi degli strumenti (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), quindi è possibile farvi corrispondere lo stesso modo in cui si fa corrispondere qualsiasi altro nome di strumento.

268 268 

269Gli strumenti MCP seguono il modello di denominazione `mcp__<server>__<tool>`, ad esempio:269Gli strumenti MCP seguono il modello di denominazione `mcp__<server>__<tool>`, ad esempio:

270 270 


280 280 

281I trattini nel set di corrispondenza esatta richiedono Claude Code v2.1.195 o successivo. Nelle versioni precedenti un prefisso semplice con trattino come `mcp__brave-search` viene valutato come un'espressione regolare non ancorata e corrisponde a ogni strumento da quel server. La forma `mcp__brave-search__.*` funziona su ogni versione.281I trattini nel set di corrispondenza esatta richiedono Claude Code v2.1.195 o successivo. Nelle versioni precedenti un prefisso semplice con trattino come `mcp__brave-search` viene valutato come un'espressione regolare non ancorata e corrisponde a ogni strumento da quel server. La forma `mcp__brave-search__.*` funziona su ogni versione.

282 282 

283Gli strumenti da un [server MCP fornito da plugin](/it/mcp#plugin-provided-mcp-servers) utilizzano un segmento server con ambito che include il nome del plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher scritto rispetto alla chiave del server semplice non si attiva mai per questi strumenti. Per un plugin denominato `my-plugin` che fornisce un server con la chiave `db`, uno strumento `query` appare come `mcp__plugin_my-plugin_db__query`, quindi il matcher per ogni strumento da quel server è `mcp__plugin_my-plugin_db__.*`. Utilizzare lo stesso nome dello strumento con ambito nel campo [`if`](#common-fields) di un gestore. Consultare [Plugin-provided MCP servers](/it/mcp#plugin-provided-mcp-servers) per come viene costruito il nome con ambito.283Gli strumenti da un [server MCP fornito da plugin](/docs/it/mcp#plugin-provided-mcp-servers) utilizzano un segmento server con ambito che include il nome del plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher scritto rispetto alla chiave del server semplice non si attiva mai per questi strumenti. Per un plugin denominato `my-plugin` che fornisce un server con la chiave `db`, uno strumento `query` appare come `mcp__plugin_my-plugin_db__query`, quindi il matcher per ogni strumento da quel server è `mcp__plugin_my-plugin_db__.*`. Utilizzare lo stesso nome dello strumento con ambito nel campo [`if`](#common-fields) di un gestore. Consultare [Plugin-provided MCP servers](/docs/it/mcp#plugin-provided-mcp-servers) per come viene costruito il nome con ambito.

284 284 

285Questo esempio registra tutte le operazioni del server memory e convalida le operazioni di scrittura da qualsiasi server MCP:285Questo esempio registra tutte le operazioni del server memory e convalida le operazioni di scrittura da qualsiasi server MCP:

286 286 


319 319 

320* **[Command hooks](#command-hook-fields)** (`type: "command"`): eseguono un comando shell. Lo script riceve l'[input JSON](#hook-input-and-output) dell'evento su stdin e comunica i risultati attraverso codici di uscita e stdout.320* **[Command hooks](#command-hook-fields)** (`type: "command"`): eseguono un comando shell. Lo script riceve l'[input JSON](#hook-input-and-output) dell'evento su stdin e comunica i risultati attraverso codici di uscita e stdout.

321* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): inviano l'input JSON dell'evento come richiesta HTTP POST a un URL. L'endpoint comunica i risultati attraverso il corpo della risposta utilizzando lo stesso [formato JSON di output](#json-output) dei command hook.321* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): inviano l'input JSON dell'evento come richiesta HTTP POST a un URL. L'endpoint comunica i risultati attraverso il corpo della risposta utilizzando lo stesso [formato JSON di output](#json-output) dei command hook.

322* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): chiamano uno strumento su un [server MCP](/it/mcp) già connesso. L'output di testo dello strumento viene trattato come stdout del command hook.322* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): chiamano uno strumento su un [server MCP](/docs/it/mcp) già connesso. L'output di testo dello strumento viene trattato come stdout del command hook.

323* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): inviano un prompt a un modello Claude per la valutazione a turno singolo. Il modello restituisce una decisione sì/no come JSON. Consultare [Prompt-based hooks](#prompt-based-hooks).323* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): inviano un prompt a un modello Claude per la valutazione a turno singolo. Il modello restituisce una decisione sì/no come JSON. Consultare [Prompt-based hooks](#prompt-based-hooks).

324* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): generano un subagent che può utilizzare strumenti come Read, Grep e Glob per verificare le condizioni prima di restituire una decisione. Gli agent hook sono sperimentali e potrebbero cambiare. Consultare [Agent-based hooks](#agent-based-hooks).324* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): generano un subagent che può utilizzare strumenti come Read, Grep e Glob per verificare le condizioni prima di restituire una decisione. Gli agent hook sono sperimentali e potrebbero cambiare. Consultare [Agent-based hooks](#agent-based-hooks).

325 325 

326Tutti gli hook corrispondenti vengono eseguiti in parallelo e i gestori identici vengono automaticamente deduplicati. I command hook vengono deduplicati per stringa di comando e `args`, e gli HTTP hook vengono deduplicati per URL.326Tutti gli hook corrispondenti vengono eseguiti in parallelo e i gestori identici vengono automaticamente deduplicati. I command hook vengono deduplicati per stringa di comando e `args`, e gli HTTP hook vengono deduplicati per URL.

327 327 

328I gestori vengono eseguiti nella directory corrente con l'ambiente di Claude Code. La variabile di ambiente `$CLAUDE_CODE_REMOTE` è impostata su `"true"` negli ambienti web remoti e non è impostata nella CLI locale. {/* min-version: 2.1.199 */}A partire da v2.1.199, [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/it/env-vars) è impostato sull'ID della sessione [Remote Control](/it/remote-control) mentre la sessione locale ha una connessione Remote Control attiva.328I gestori vengono eseguiti nella directory corrente con l'ambiente di Claude Code. La variabile di ambiente `$CLAUDE_CODE_REMOTE` è impostata su `"true"` negli ambienti web remoti e non è impostata nella CLI locale. {/* min-version: 2.1.199 */}A partire da v2.1.199, [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/it/env-vars) è impostato sull'ID della sessione [Remote Control](/docs/it/remote-control) mentre la sessione locale ha una connessione Remote Control attiva.

329 329 

330<h4 id="common-fields">330<h4 id="common-fields">

331 Campi comuni331 Campi comuni


336| Campo | Obbligatorio | Descrizione |336| Campo | Obbligatorio | Descrizione |

337| :-------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |337| :-------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

338| `type` | sì | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |338| `type` | sì | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |

339| `if` | no | Sintassi della regola di autorizzazione per filtrare quando questo hook viene eseguito, come `"Bash(git *)"` o `"Edit(*.ts)"`. L'hook viene eseguito solo se la chiamata dello strumento corrisponde al modello. Consultare la [tabella di corrispondenza Bash](#bash-if-matching) di seguito per come i modelli Bash si valutano rispetto ai sottocomandi, `$()` e backtick. Valutato solo su eventi degli strumenti: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Su altri eventi, un hook con `if` impostato non viene mai eseguito. Utilizza la stessa sintassi delle [regole di autorizzazione](/it/permissions) |339| `if` | no | Sintassi della regola di autorizzazione per filtrare quando questo hook viene eseguito, come `"Bash(git *)"` o `"Edit(*.ts)"`. L'hook viene eseguito solo se la chiamata dello strumento corrisponde al modello. Consultare la [tabella di corrispondenza Bash](#bash-if-matching) di seguito per come i modelli Bash si valutano rispetto ai sottocomandi, `$()` e backtick. Valutato solo su eventi degli strumenti: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Su altri eventi, un hook con `if` impostato non viene mai eseguito. Utilizza la stessa sintassi delle [regole di autorizzazione](/docs/it/permissions) |

340| `timeout` | no | Secondi prima dell'annullamento. Impostazioni predefinite: 600 per `command`, `http` e `mcp_tool`; 30 per `prompt`; 60 per `agent`. [`UserPromptSubmit`](#userpromptsubmit) abbassa l'impostazione predefinita di `command`, `http` e `mcp_tool` a 30, e [`MessageDisplay`](#messagedisplay) la abbassa a 10 |340| `timeout` | no | Secondi prima dell'annullamento. Impostazioni predefinite: 600 per `command`, `http` e `mcp_tool`; 30 per `prompt`; 60 per `agent`. [`UserPromptSubmit`](#userpromptsubmit) abbassa l'impostazione predefinita di `command`, `http` e `mcp_tool` a 30, e [`MessageDisplay`](#messagedisplay) la abbassa a 10 |

341| `statusMessage` | no | Messaggio spinner personalizzato visualizzato mentre l'hook viene eseguito |341| `statusMessage` | no | Messaggio spinner personalizzato visualizzato mentre l'hook viene eseguito |

342| `once` | no | Se `true`, viene eseguito una sola volta per sessione e poi rimosso. Solo onorato per gli hook dichiarati nel [frontmatter della skill](#hooks-in-skills-and-agents); ignorato nei file di impostazioni e nel frontmatter dell'agente |342| `once` | no | Se `true`, viene eseguito una sola volta per sessione e poi rimosso. Solo onorato per gli hook dichiarati nel [frontmatter della skill](#hooks-in-skills-and-agents); ignorato nei file di impostazioni e nel frontmatter dell'agente |


353| `Bash(rm *)` | `echo $(date)` | no | nessun sottocomando corrisponde a `rm *` |353| `Bash(rm *)` | `echo $(date)` | no | nessun sottocomando corrisponde a `rm *` |

354| `Bash(git push *)` | `echo $(date)` | sì | i modelli che specificano più del nome del comando eseguono l'hook comunque su `$()`, backtick o `$VAR` |354| `Bash(git push *)` | `echo $(date)` | sì | i modelli che specificano più del nome del comando eseguono l'hook comunque su `$()`, backtick o `$VAR` |

355 355 

356Il filtro fallisce anche in modo aperto, eseguendo l'hook indipendentemente dal modello, quando il comando Bash non può essere analizzato. Poiché il filtro `if` è best-effort, utilizzare il [sistema di autorizzazione](/it/permissions) piuttosto che un hook per applicare un'autorizzazione o un diniego rigido.356Il filtro fallisce anche in modo aperto, eseguendo l'hook indipendentemente dal modello, quando il comando Bash non può essere analizzato. Poiché il filtro `if` è best-effort, utilizzare il [sistema di autorizzazione](/docs/it/permissions) piuttosto che un hook per applicare un'autorizzazione o un diniego rigido.

357 357 

358<h4 id="command-hook-fields">358<h4 id="command-hook-fields">

359 Campi del command hook359 Campi del command hook


404}404}

405```405```

406 406 

407Entrambe le forme supportano gli stessi [segnaposti di percorso](#reference-scripts-by-path), ed entrambi li esportano come variabili di ambiente `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` e `CLAUDE_PLUGIN_DATA` sul processo generato, quindi uno script può leggere `process.env.CLAUDE_PLUGIN_ROOT` indipendentemente da come è stato lanciato. Gli hook del plugin inoltre sostituiscono i valori [`${user_config.*}`](/it/plugins-reference#user-configuration), in exec form solo: il valore viene sostituito in `command` e in ogni elemento `args` come stringa semplice, quindi nessuna shell lo rianalizza.407Entrambe le forme supportano gli stessi [segnaposti di percorso](#reference-scripts-by-path), ed entrambi li esportano come variabili di ambiente `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` e `CLAUDE_PLUGIN_DATA` sul processo generato, quindi uno script può leggere `process.env.CLAUDE_PLUGIN_ROOT` indipendentemente da come è stato lanciato. Gli hook del plugin inoltre sostituiscono i valori [`${user_config.*}`](/docs/it/plugins-reference#user-configuration), in exec form solo: il valore viene sostituito in `command` e in ogni elemento `args` come stringa semplice, quindi nessuna shell lo rianalizza.

408 408 

409Un hook del plugin in shell form il cui `command` fa riferimento a `${user_config.*}` fallisce con un [errore](/it/errors#plugin-command-references-user-config) invece di eseguirsi. Per utilizzare un valore di opzione da un hook in shell form, leggere la variabile di ambiente `$CLAUDE_PLUGIN_OPTION_<KEY>`, come `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` per un'opzione `webhook_url`, oppure impostare `args` per passare l'hook a exec form. Prima di v2.1.207, i comandi degli hook del plugin in shell form sostituivano anche `${user_config.*}`.409Un hook del plugin in shell form il cui `command` fa riferimento a `${user_config.*}` fallisce con un [errore](/docs/it/errors#plugin-command-references-user-config) invece di eseguirsi. Per utilizzare un valore di opzione da un hook in shell form, leggere la variabile di ambiente `$CLAUDE_PLUGIN_OPTION_<KEY>`, come `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` per un'opzione `webhook_url`, oppure impostare `args` per passare l'hook a exec form. Prima di v2.1.207, i comandi degli hook del plugin in shell form sostituivano anche `${user_config.*}`.

410 410 

411<Note>411<Note>

412 In exec form, `command` è solo il nome o il percorso dell'eseguibile. Se `command` è un nome semplice senza separatore di percorso e contiene spazi bianchi insieme a `args`, Claude Code registra un avviso perché la generazione avrà esito negativo: non esiste un eseguibile denominato `node script.js`. Spostare i token extra in `args`. I percorsi assoluti con spazi, come `C:\Program Files\nodejs\node.exe`, sono un singolo eseguibile valido e non attivano l'avviso.412 In exec form, `command` è solo il nome o il percorso dell'eseguibile. Se `command` è un nome semplice senza separatore di percorso e contiene spazi bianchi insieme a `args`, Claude Code registra un avviso perché la generazione avrà esito negativo: non esiste un eseguibile denominato `node script.js`. Spostare i token extra in `args`. I percorsi assoluti con spazi, come `C:\Program Files\nodejs\node.exe`, sono un singolo eseguibile valido e non attivano l'avviso.


461 461 

462| Campo | Obbligatorio | Descrizione |462| Campo | Obbligatorio | Descrizione |

463| :------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |463| :------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

464| `server` | sì | Nome di un server MCP configurato. Per un [server fornito da plugin](/it/mcp#plugin-provided-mcp-servers), questo è il nome con ambito `plugin:<plugin-name>:<server-name>`, come `plugin:my-plugin:db`, non la chiave del server semplice. Il server deve essere già connesso; l'hook non attiva mai un flusso OAuth o di connessione |464| `server` | sì | Nome di un server MCP configurato. Per un [server fornito da plugin](/docs/it/mcp#plugin-provided-mcp-servers), questo è il nome con ambito `plugin:<plugin-name>:<server-name>`, come `plugin:my-plugin:db`, non la chiave del server semplice. Il server deve essere già connesso; l'hook non attiva mai un flusso OAuth o di connessione |

465| `tool` | sì | Nome dello strumento da chiamare su quel server |465| `tool` | sì | Nome dello strumento da chiamare su quel server |

466| `input` | no | Argomenti passati allo strumento. I valori stringa supportano la sostituzione `${path}` dall'[input JSON](#hook-input-and-output) del hook, come `"${tool_input.file_path}"` |466| `input` | no | Argomenti passati allo strumento. I valori stringa supportano la sostituzione `${path}` dall'[input JSON](#hook-input-and-output) del hook, come `"${tool_input.file_path}"` |

467 467 


508 508 

509Utilizzare questi segnaposti per fare riferimento agli script del hook relativi alla radice del progetto o del plugin, indipendentemente dalla directory di lavoro quando l'hook viene eseguito:509Utilizzare questi segnaposti per fare riferimento agli script del hook relativi alla radice del progetto o del plugin, indipendentemente dalla directory di lavoro quando l'hook viene eseguito:

510 510 

511* `${CLAUDE_PROJECT_DIR}`: la radice del progetto. Claude Code inoltre imposta questa variabile nell'ambiente dei [server MCP stdio](/it/mcp#option-3-add-a-local-stdio-server) e dei server LSP del plugin.511* `${CLAUDE_PROJECT_DIR}`: la radice del progetto. Claude Code inoltre imposta questa variabile nell'ambiente dei [server MCP stdio](/docs/it/mcp#option-3-add-a-local-stdio-server) e dei server LSP del plugin.

512* `${CLAUDE_PLUGIN_ROOT}`: la directory di installazione del plugin, per gli script forniti con un [plugin](/it/plugins). Cambia ad ogni aggiornamento del plugin.512* `${CLAUDE_PLUGIN_ROOT}`: la directory di installazione del plugin, per gli script forniti con un [plugin](/docs/it/plugins). Cambia ad ogni aggiornamento del plugin.

513* `${CLAUDE_PLUGIN_DATA}`: la [directory di dati persistenti](/it/plugins-reference#persistent-data-directory) del plugin, per le dipendenze e lo stato che dovrebbero sopravvivere agli aggiornamenti del plugin.513* `${CLAUDE_PLUGIN_DATA}`: la [directory di dati persistenti](/docs/it/plugins-reference#persistent-data-directory) del plugin, per le dipendenze e lo stato che dovrebbero sopravvivere agli aggiornamenti del plugin.

514 514 

515Preferire [exec form](#exec-form-and-shell-form) per qualsiasi hook che faccia riferimento a un segnaposto di percorso. Exec form passa ogni elemento `args` come un argomento senza tokenizzazione shell, quindi i percorsi con spazi o caratteri speciali non hanno bisogno di virgolette. In shell form, racchiudere ogni segnaposto tra virgolette doppie.515Preferire [exec form](#exec-form-and-shell-form) per qualsiasi hook che faccia riferimento a un segnaposto di percorso. Exec form passa ogni elemento `args` come un argomento senza tokenizzazione shell, quindi i percorsi con spazi o caratteri speciali non hanno bisogno di virgolette. In shell form, racchiudere ogni segnaposto tra virgolette doppie.

516 516 


564 }564 }

565 ```565 ```

566 566 

567 Consultare il [plugin components reference](/it/plugins-reference#hooks) per i dettagli sulla creazione dei hook del plugin.567 Consultare il [plugin components reference](/docs/it/plugins-reference#hooks) per i dettagli sulla creazione dei hook del plugin.

568 </Tab>568 </Tab>

569</Tabs>569</Tabs>

570 570 


572 Hook in skills e agents572 Hook in skills e agents

573</h3>573</h3>

574 574 

575Oltre ai file di impostazioni e ai plugin, gli hook possono essere definiti direttamente in [skills](/it/skills) e [subagents](/it/sub-agents) utilizzando il frontmatter. Questi hook sono limitati al ciclo di vita del componente e vengono eseguiti solo quando quel componente è attivo.575Oltre ai file di impostazioni e ai plugin, gli hook possono essere definiti direttamente in [skills](/docs/it/skills) e [subagents](/docs/it/sub-agents) utilizzando il frontmatter. Questi hook sono limitati al ciclo di vita del componente e vengono eseguiti solo quando quel componente è attivo.

576 576 

577Tutti gli hook event sono supportati. Per i subagent, gli hook `Stop` vengono automaticamente convertiti in `SubagentStop` poiché questo è l'evento che si attiva quando un subagent termina.577Tutti gli hook event sono supportati. Per i subagent, gli hook `Stop` vengono automaticamente convertiti in `SubagentStop` poiché questo è l'evento che si attiva quando un subagent termina.

578 578 


641| Campo | Descrizione |641| Campo | Descrizione |

642| :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |642| :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

643| `session_id` | Identificatore della sessione corrente |643| `session_id` | Identificatore della sessione corrente |

644| `prompt_id` | UUID che identifica il prompt dell'utente attualmente in elaborazione. Corrisponde all'attributo [`prompt.id` sugli eventi OpenTelemetry](/it/monitoring-usage#event-correlation-attributes), quindi è possibile correlare l'output del hook con la telemetria per un singolo prompt. Assente fino al primo input dell'utente. {/* min-version: 2.1.196 */}Richiede Claude Code v2.1.196 o successivo |644| `prompt_id` | UUID che identifica il prompt dell'utente attualmente in elaborazione. Corrisponde all'attributo [`prompt.id` sugli eventi OpenTelemetry](/docs/it/monitoring-usage#event-correlation-attributes), quindi è possibile correlare l'output del hook con la telemetria per un singolo prompt. Assente fino al primo input dell'utente. {/* min-version: 2.1.196 */}Richiede Claude Code v2.1.196 o successivo |

645| `transcript_path` | Percorso al JSON della conversazione. Il file della trascrizione viene scritto in modo asincrono e potrebbe rimanere indietro rispetto alla conversazione in memoria, quindi potrebbe non includere ancora i messaggi più recenti del turno corrente quando un hook si attiva. Gli hook che necessitano del testo dell'assistente finale del turno corrente dovrebbero utilizzare `last_assistant_message` su [Stop](#stop) e [SubagentStop](#subagentstop) invece di leggere la trascrizione |645| `transcript_path` | Percorso al JSON della conversazione. Il file della trascrizione viene scritto in modo asincrono e potrebbe rimanere indietro rispetto alla conversazione in memoria, quindi potrebbe non includere ancora i messaggi più recenti del turno corrente quando un hook si attiva. Gli hook che necessitano del testo dell'assistente finale del turno corrente dovrebbero utilizzare `last_assistant_message` su [Stop](#stop) e [SubagentStop](#subagentstop) invece di leggere la trascrizione |

646| `cwd` | Directory di lavoro corrente quando l'hook viene invocato |646| `cwd` | Directory di lavoro corrente quando l'hook viene invocato |

647| `permission_mode` | [Modalità di autorizzazione](/it/permissions#permission-modes) corrente: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` o `"bypassPermissions"`. La modalità etichettata **Manual** arriva come `"default"`, mai come `"manual"`, quindi gli script che corrispondono a `"default"` continuano a funzionare. Non tutti gli eventi ricevono questo campo. Controllare l'esempio JSON in ogni sezione [hook event](#hook-events) |647| `permission_mode` | [Modalità di autorizzazione](/docs/it/permissions#permission-modes) corrente: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` o `"bypassPermissions"`. La modalità etichettata **Manual** arriva come `"default"`, mai come `"manual"`, quindi gli script che corrispondono a `"default"` continuano a funzionare. Non tutti gli eventi ricevono questo campo. Controllare l'esempio JSON in ogni sezione [hook event](#hook-events) |

648| `effort` | Oggetto con un campo `level` che contiene il [livello di effort](/it/model-config#adjust-effort-level) attivo per il turno: `"low"`, `"medium"`, `"high"`, `"xhigh"` o `"max"`. Se l'effort richiesto del modello supera quello supportato dal modello corrente, questo è il livello ridotto che il modello ha effettivamente utilizzato. Ultracode non è un livello distinto e viene segnalato come `"xhigh"`. L'oggetto corrisponde al campo `effort` della [riga di stato](/it/statusline#available-data). Presente per gli eventi che si attivano all'interno di un contesto di utilizzo dello strumento, come `PreToolUse`, `PostToolUse`, `Stop` e `SubagentStop`, quando il modello corrente supporta il parametro effort. Il livello è disponibile anche ai comandi hook e allo strumento Bash come variabile di ambiente `$CLAUDE_EFFORT`. |648| `effort` | Oggetto con un campo `level` che contiene il [livello di effort](/docs/it/model-config#adjust-effort-level) attivo per il turno: `"low"`, `"medium"`, `"high"`, `"xhigh"` o `"max"`. Se l'effort richiesto del modello supera quello supportato dal modello corrente, questo è il livello ridotto che il modello ha effettivamente utilizzato. Ultracode non è un livello distinto e viene segnalato come `"xhigh"`. L'oggetto corrisponde al campo `effort` della [riga di stato](/docs/it/statusline#available-data). Presente per gli eventi che si attivano all'interno di un contesto di utilizzo dello strumento, come `PreToolUse`, `PostToolUse`, `Stop` e `SubagentStop`, quando il modello corrente supporta il parametro effort. Il livello è disponibile anche ai comandi hook e allo strumento Bash come variabile di ambiente `$CLAUDE_EFFORT`. |

649| `hook_event_name` | Nome dell'evento che si è attivato |649| `hook_event_name` | Nome dell'evento che si è attivato |

650 650 

651Quando si esegue con `--agent` o all'interno di un subagent, vengono inclusi due campi aggiuntivi:651Quando si esegue con `--agent` o all'interno di un subagent, vengono inclusi due campi aggiuntivi:


653| Campo | Descrizione |653| Campo | Descrizione |

654| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |654| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

655| `agent_id` | Identificatore univoco per il subagent. Presente solo quando l'hook si attiva all'interno di una chiamata di subagent. Utilizzare questo per distinguere le chiamate del hook del subagent dalle chiamate del thread principale. |655| `agent_id` | Identificatore univoco per il subagent. Presente solo quando l'hook si attiva all'interno di una chiamata di subagent. Utilizzare questo per distinguere le chiamate del hook del subagent dalle chiamate del thread principale. |

656| `agent_type` | Nome dell'agente (ad esempio, `"Explore"` o `"security-reviewer"`). Presente quando la sessione utilizza `--agent` o l'hook si attiva all'interno di un subagent. Per i subagent, il tipo del subagent ha la precedenza sul valore `--agent` della sessione. Per i [subagent personalizzati](/it/sub-agents), questo è il campo `name` dal frontmatter dell'agente, non il nome del file. Per i subagent forniti da un [plugin](/it/plugins), questo è l'identificatore con ambito plugin come `my-plugin:reviewer`, non il nome del frontmatter semplice. Consultare [SubagentStart](#subagentstart) per come scrivere un matcher rispetto a un nome con ambito plugin. |656| `agent_type` | Nome dell'agente (ad esempio, `"Explore"` o `"security-reviewer"`). Presente quando la sessione utilizza `--agent` o l'hook si attiva all'interno di un subagent. Per i subagent, il tipo del subagent ha la precedenza sul valore `--agent` della sessione. Per i [subagent personalizzati](/docs/it/sub-agents), questo è il campo `name` dal frontmatter dell'agente, non il nome del file. Per i subagent forniti da un [plugin](/docs/it/plugins), questo è l'identificatore con ambito plugin come `my-plugin:reviewer`, non il nome del frontmatter semplice. Consultare [SubagentStart](#subagentstart) per come scrivere un matcher rispetto a un nome con ambito plugin. |

657 657 

658Solo gli hook [`SessionStart`](#sessionstart) possono ricevere un campo `model`, e non è garantito che sia presente. Non esiste una variabile di ambiente `$CLAUDE_MODEL`. Un processo hook eredita l'ambiente padre, quindi può leggere `$ANTHROPIC_MODEL` se lo imposti nella tua shell, ma quel valore non cambia quando cambi modelli con `/model` durante una sessione. Un insieme di variabili non viene ereditato: Claude Code [rimuove le variabili dell'esportatore `OTEL_*` da ogni sottoprocesso che genera](/it/monitoring-usage#administrator-configuration), inclusi gli hook.658Solo gli hook [`SessionStart`](#sessionstart) possono ricevere un campo `model`, e non è garantito che sia presente. Non esiste una variabile di ambiente `$CLAUDE_MODEL`. Un processo hook eredita l'ambiente padre, quindi può leggere `$ANTHROPIC_MODEL` se lo imposti nella tua shell, ma quel valore non cambia quando cambi modelli con `/model` durante una sessione. Un insieme di variabili non viene ereditato: Claude Code [rimuove le variabili dell'esportatore `OTEL_*` da ogni sottoprocesso che genera](/docs/it/monitoring-usage#administrator-configuration), inclusi gli hook.

659 659 

660Ad esempio, un hook `PreToolUse` per un comando Bash riceve questo su stdin:660Ad esempio, un hook `PreToolUse` per un comando Bash riceve questo su stdin:

661 661 


774 È necessario scegliere un approccio per hook, non entrambi: utilizzare i codici di uscita da soli per la segnalazione oppure uscire 0 e stampare JSON per il controllo strutturato. Claude Code elabora JSON solo su exit 0. Se si esce con 2, qualsiasi JSON viene ignorato.774 È necessario scegliere un approccio per hook, non entrambi: utilizzare i codici di uscita da soli per la segnalazione oppure uscire 0 e stampare JSON per il controllo strutturato. Claude Code elabora JSON solo su exit 0. Se si esce con 2, qualsiasi JSON viene ignorato.

775</Note>775</Note>

776 776 

777Lo stdout del hook deve contenere solo l'oggetto JSON. Se il profilo shell stampa testo all'avvio, può interferire con l'analisi JSON. Consultare [JSON validation failed](/it/hooks-guide#json-validation-failed) nella guida alla risoluzione dei problemi.777Lo stdout del hook deve contenere solo l'oggetto JSON. Se il profilo shell stampa testo all'avvio, può interferire con l'analisi JSON. Consultare [JSON validation failed](/docs/it/hooks-guide#json-validation-failed) nella guida alla risoluzione dei problemi.

778 778 

779Le stringhe di output del hook, incluse `additionalContext`, `systemMessage` e stdout semplice, sono limitate a 10.000 caratteri. L'output che supera questo limite viene salvato in un file e sostituito con un'anteprima e un percorso di file, nello stesso modo in cui vengono gestiti i risultati degli strumenti di grandi dimensioni.779Le stringhe di output del hook, incluse `additionalContext`, `systemMessage` e stdout semplice, sono limitate a 10.000 caratteri. L'output che supera questo limite viene salvato in un file e sostituito con un'anteprima e un percorso di file, nello stesso modo in cui vengono gestiti i risultati degli strumenti di grandi dimensioni.

780 780 


866* **Regole di progetto condizionali**: quale comando di test si applica al file appena modificato, quali directory sono di sola lettura in questo worktree866* **Regole di progetto condizionali**: quale comando di test si applica al file appena modificato, quali directory sono di sola lettura in questo worktree

867* **Dati esterni**: problemi aperti assegnati a voi, risultati CI recenti, contenuto recuperato da un servizio interno867* **Dati esterni**: problemi aperti assegnati a voi, risultati CI recenti, contenuto recuperato da un servizio interno

868 868 

869Per le istruzioni che non cambiano mai, preferire [CLAUDE.md](/it/memory). Si carica senza eseguire uno script ed è il luogo standard per le convenzioni di progetto statiche.869Per le istruzioni che non cambiano mai, preferire [CLAUDE.md](/docs/it/memory). Si carica senza eseguire uno script ed è il luogo standard per le convenzioni di progetto statiche.

870 870 

871Scrivere il testo come affermazioni fattuali piuttosto che istruzioni di sistema imperative. Frasi come "La destinazione di distribuzione è produzione" o "Questo repository utilizza `bun test`" si leggono come informazioni di progetto. Il testo inquadrato come comandi di sistema fuori banda può attivare le difese di iniezione di prompt di Claude, il che causa a Claude di far emergere il testo a voi invece di trattarlo come contesto.871Scrivere il testo come affermazioni fattuali piuttosto che istruzioni di sistema imperative. Frasi come "La destinazione di distribuzione è produzione" o "Questo repository utilizza `bun test`" si leggono come informazioni di progetto. Il testo inquadrato come comandi di sistema fuori banda può attivare le difese di iniezione di prompt di Claude, il che causa a Claude di far emergere il testo a voi invece di trattarlo come contesto.

872 872 


948 </Tab>948 </Tab>

949</Tabs>949</Tabs>

950 950 

951Per esempi estesi inclusa la convalida dei comandi Bash, il filtraggio dei prompt e gli script di approvazione automatica, consultare [What you can automate](/it/hooks-guide#what-you-can-automate) nella guida e l'[implementazione di riferimento del validatore di comandi Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).951Per esempi estesi inclusa la convalida dei comandi Bash, il filtraggio dei prompt e gli script di approvazione automatica, consultare [What you can automate](/docs/it/hooks-guide#what-you-can-automate) nella guida e l'[implementazione di riferimento del validatore di comandi Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

952 952 

953<h2 id="hook-events">953<h2 id="hook-events">

954 Hook events954 Hook events


960 SessionStart960 SessionStart

961</h3>961</h3>

962 962 

963Viene eseguito quando Claude Code avvia una nuova sessione o riprende una sessione esistente. Utile per caricare il contesto di sviluppo come problemi esistenti o modifiche recenti al codebase, o per configurare le variabili di ambiente. Per il contesto statico che non richiede uno script, utilizzare [CLAUDE.md](/it/memory) invece.963Viene eseguito quando Claude Code avvia una nuova sessione o riprende una sessione esistente. Utile per caricare il contesto di sviluppo come problemi esistenti o modifiche recenti al codebase, o per configurare le variabili di ambiente. Per il contesto statico che non richiede uno script, utilizzare [CLAUDE.md](/docs/it/memory) invece.

964 964 

965SessionStart viene eseguito ad ogni sessione, quindi mantenere questi hook veloci. Solo gli hook `type: "command"` e `type: "mcp_tool"` sono supportati.965SessionStart viene eseguito ad ogni sessione, quindi mantenere questi hook veloci. Solo gli hook `type: "command"` e `type: "mcp_tool"` sono supportati.

966 966 


1006| Campo | Descrizione |1006| Campo | Descrizione |

1007| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1007| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1008| `additionalContext` | Stringa aggiunta al contesto di Claude all'inizio della conversazione, prima del primo prompt. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) per come il testo viene consegnato e cosa inserirvi |1008| `additionalContext` | Stringa aggiunta al contesto di Claude all'inizio della conversazione, prima del primo prompt. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) per come il testo viene consegnato e cosa inserirvi |

1009| `initialUserMessage` | Stringa utilizzata come primo messaggio dell'utente della sessione. Si applica in [modalità non interattiva](/it/headless) con il flag `-p`, dove diventa il primo turno anche se non viene fornito alcun prompt. Se viene fornito un prompt, segue come turno successivo. A differenza di `additionalContext`, che si allega a un turno esistente, questo crea il turno |1009| `initialUserMessage` | Stringa utilizzata come primo messaggio dell'utente della sessione. Si applica in [modalità non interattiva](/docs/it/headless) con il flag `-p`, dove diventa il primo turno anche se non viene fornito alcun prompt. Se viene fornito un prompt, segue come turno successivo. A differenza di `additionalContext`, che si allega a un turno esistente, questo crea il turno |

1010| `sessionTitle` | Imposta il titolo della sessione, con lo stesso effetto di `/rename`. Utilizzare per denominare automaticamente le sessioni dalla cartella di avvio, dal ramo git o dal nome del worktree. Si applica solo quando `source` è `"startup"` o `"resume"`; ignorato su `"clear"` e `"compact"` |1010| `sessionTitle` | Imposta il titolo della sessione, con lo stesso effetto di `/rename`. Utilizzare per denominare automaticamente le sessioni dalla cartella di avvio, dal ramo git o dal nome del worktree. Si applica solo quando `source` è `"startup"` o `"resume"`; ignorato su `"clear"` e `"compact"` |

1011| `watchPaths` | Array di percorsi assoluti da monitorare per gli eventi [FileChanged](#filechanged) durante questa sessione |1011| `watchPaths` | Array di percorsi assoluti da monitorare per gli eventi [FileChanged](#filechanged) durante questa sessione |

1012| `reloadSkills` | Booleano. Quando `true`, Claude Code esegue nuovamente la scansione delle directory [skill](/it/skills) e dei comandi dopo il completamento degli hook SessionStart, in modo che le skill installate dall'hook siano disponibili nella stessa sessione, a partire dal primo prompt |1012| `reloadSkills` | Booleano. Quando `true`, Claude Code esegue nuovamente la scansione delle directory [skill](/docs/it/skills) e dei comandi dopo il completamento degli hook SessionStart, in modo che le skill installate dall'hook siano disponibili nella stessa sessione, a partire dal primo prompt |

1013 1013 

1014```json theme={null}1014```json theme={null}

1015{1015{


1083 Setup1083 Setup

1084</h3>1084</h3>

1085 1085 

1086Si attiva solo quando si avvia Claude Code con `--init-only`, o con `--init` o `--maintenance` in [modalità non interattiva](/it/headless) con il flag `-p`. Non si attiva all'avvio normale. Utilizzarlo per l'installazione di dipendenze una tantum o la pulizia pianificata che si attiva esplicitamente da CI o script, separato dall'avvio della sessione normale. Per l'inizializzazione per sessione, utilizzare [SessionStart](#sessionstart) invece.1086Si attiva solo quando si avvia Claude Code con `--init-only`, o con `--init` o `--maintenance` in [modalità non interattiva](/docs/it/headless) con il flag `-p`. Non si attiva all'avvio normale. Utilizzarlo per l'installazione di dipendenze una tantum o la pulizia pianificata che si attiva esplicitamente da CI o script, separato dall'avvio della sessione normale. Per l'inizializzazione per sessione, utilizzare [SessionStart](#sessionstart) invece.

1087 1087 

1088Il valore del matcher corrisponde al flag CLI che ha attivato l'hook:1088Il valore del matcher corrisponde al flag CLI che ha attivato l'hook:

1089 1089 


1094 1094 

1095`--init-only` esegue gli hook Setup e gli hook SessionStart con il matcher `startup`, quindi esce senza avviare una conversazione. `--init` e `--maintenance` attivano gli hook Setup solo quando combinati con `-p`; in una sessione interattiva questi due flag attualmente non attivano gli hook Setup.1095`--init-only` esegue gli hook Setup e gli hook SessionStart con il matcher `startup`, quindi esce senza avviare una conversazione. `--init` e `--maintenance` attivano gli hook Setup solo quando combinati con `-p`; in una sessione interattiva questi due flag attualmente non attivano gli hook Setup.

1096 1096 

1097Poiché Setup non si attiva ad ogni avvio, un plugin che ha bisogno di una dipendenza installata non può fare affidamento solo su Setup. Il modello pratico è controllare la dipendenza al primo utilizzo e installare se assente, ad esempio un hook o una skill che testa per `${CLAUDE_PLUGIN_DATA}/node_modules` ed esegue `npm install` se assente. Consultare la [directory dei dati persistenti](/it/plugins-reference#persistent-data-directory) per dove archiviare le dipendenze installate.1097Poiché Setup non si attiva ad ogni avvio, un plugin che ha bisogno di una dipendenza installata non può fare affidamento solo su Setup. Il modello pratico è controllare la dipendenza al primo utilizzo e installare se assente, ad esempio un hook o una skill che testa per `${CLAUDE_PLUGIN_DATA}/node_modules` ed esegue `npm install` se assente. Consultare la [directory dei dati persistenti](/docs/it/plugins-reference#persistent-data-directory) per dove archiviare le dipendenze installate.

1098 1098 

1099<h4 id="setup-input">1099<h4 id="setup-input">

1100 Input di Setup1100 Input di Setup


1116 Controllo della decisione di Setup1116 Controllo della decisione di Setup

1117</h4>1117</h4>

1118 1118 

1119Gli hook Setup non possono bloccare. Qualsiasi exit code non zero, incluso 2, fa emergere stderr all'utente come avviso `<hook name> hook error`, e l'esecuzione continua. In [modalità non interattiva](/it/headless), l'output dell'hook appare solo quando si avvia con `--verbose`.1119Gli hook Setup non possono bloccare. Qualsiasi exit code non zero, incluso 2, fa emergere stderr all'utente come avviso `<hook name> hook error`, e l'esecuzione continua. In [modalità non interattiva](/docs/it/headless), l'output dell'hook appare solo quando si avvia con `--verbose`.

1120 1120 

1121Per passare informazioni nel contesto di Claude, restituire `additionalContext` nell'output JSON; lo stdout semplice viene scritto nel log di debug solo. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, è possibile restituire questi campi specifici dell'evento:1121Per passare informazioni nel contesto di Claude, restituire `additionalContext` nell'output JSON; lo stdout semplice viene scritto nel log di debug solo. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, è possibile restituire questi campi specifici dell'evento:

1122 1122 


1186 1186 

1187Un hook `UserPromptSubmit` che raggiunge il suo timeout viene annullato e il suo output, incluso qualsiasi `additionalContext`, viene scartato. Il prompt raggiunge comunque Claude senza quel contesto. A partire da v2.1.196, la trascrizione mostra un avviso che nomina l'hook, il timeout che si è attivato e che l'output è stato scartato. Le versioni precedenti annullano l'hook senza avviso.1187Un hook `UserPromptSubmit` che raggiunge il suo timeout viene annullato e il suo output, incluso qualsiasi `additionalContext`, viene scartato. Il prompt raggiunge comunque Claude senza quel contesto. A partire da v2.1.196, la trascrizione mostra un avviso che nomina l'hook, il timeout che si è attivato e che l'output è stato scartato. Le versioni precedenti annullano l'hook senza avviso.

1188 1188 

1189Un hook di callback [Agent SDK](/it/agent-sdk/hooks) su `UserPromptSubmit` che raggiunge il suo timeout blocca il prompt con un messaggio che nomina l'hook e il timeout, perché un callback lì può agire come un gate di politica che non deve fallire in modo aperto. La sessione continua. Prima di v2.1.208, un timeout di callback su quell'evento terminava il turno con un errore di esecuzione.1189Un hook di callback [Agent SDK](/docs/it/agent-sdk/hooks) su `UserPromptSubmit` che raggiunge il suo timeout blocca il prompt con un messaggio che nomina l'hook e il timeout, perché un callback lì può agire come un gate di politica che non deve fallire in modo aperto. La sessione continua. Prima di v2.1.208, un timeout di callback su quell'evento terminava il turno con un errore di esecuzione.

1190 1190 

1191<h4 id="userpromptsubmit-input">1191<h4 id="userpromptsubmit-input">

1192 Input di UserPromptSubmit1192 Input di UserPromptSubmit


1441Viene eseguito dopo che Claude crea i parametri dello strumento e prima dell'elaborazione della chiamata dello strumento. Corrisponde al nome dello strumento: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` e qualsiasi [nome di strumento MCP](#match-mcp-tools).1441Viene eseguito dopo che Claude crea i parametri dello strumento e prima dell'elaborazione della chiamata dello strumento. Corrisponde al nome dello strumento: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` e qualsiasi [nome di strumento MCP](#match-mcp-tools).

1442 1442 

1443<Warning>1443<Warning>

1444 PreToolUse viene eseguito solo quando Claude chiama uno strumento. I file che [fate riferimento con `@` nel vostro prompt](/it/common-workflows#reference-files-and-directories) vengono aggiunti senza alcuna chiamata dello strumento: Claude Code inserisce i loro contenuti mentre costruisce il prompt, quindi nessun hook PreToolUse si attiva per loro, inclusi gli hook che corrispondono a `Read`. Per bloccare percorsi specifici dai riferimenti `@`, utilizzare una [regola di negazione `Read`](/it/permissions#read-and-edit) invece.1444 PreToolUse viene eseguito solo quando Claude chiama uno strumento. I file che [fate riferimento con `@` nel vostro prompt](/docs/it/common-workflows#reference-files-and-directories) vengono aggiunti senza alcuna chiamata dello strumento: Claude Code inserisce i loro contenuti mentre costruisce il prompt, quindi nessun hook PreToolUse si attiva per loro, inclusi gli hook che corrispondono a `Read`. Per bloccare percorsi specifici dai riferimenti `@`, utilizzare una [regola di negazione `Read`](/docs/it/permissions#read-and-edit) invece.

1445</Warning>1445</Warning>

1446 1446 

1447Utilizzare il [PreToolUse decision control](#pretooluse-decision-control) per consentire, negare, chiedere o rinviare il permesso di utilizzare lo strumento.1447Utilizzare il [PreToolUse decision control](#pretooluse-decision-control) per consentire, negare, chiedere o rinviare il permesso di utilizzare lo strumento.


1462| :------------------ | :------ | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |1462| :------------------ | :------ | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1463| `command` | string | `"npm test"` | Il comando shell da eseguire |1463| `command` | string | `"npm test"` | Il comando shell da eseguire |

1464| `description` | string | `"Run test suite"` | Descrizione facoltativa di cosa fa il comando |1464| `description` | string | `"Run test suite"` | Descrizione facoltativa di cosa fa il comando |

1465| `timeout` | number | `120000` | Timeout facoltativo in millisecondi. I valori superiori al [massimo](/it/tools-reference#bash-tool-behavior) vengono ridotti al massimo piuttosto che rifiutati |1465| `timeout` | number | `120000` | Timeout facoltativo in millisecondi. I valori superiori al [massimo](/docs/it/tools-reference#bash-tool-behavior) vengono ridotti al massimo piuttosto che rifiutati |

1466| `run_in_background` | boolean | `false` | Se eseguire il comando in background |1466| `run_in_background` | boolean | `false` | Se eseguire il comando in background |

1467 1467 

1468<h5 id="write">1468<h5 id="write">


1554 Agent1554 Agent

1555</h5>1555</h5>

1556 1556 

1557Genera un [subagent](/it/sub-agents).1557Genera un [subagent](/docs/it/sub-agents).

1558 1558 

1559| Campo | Tipo | Esempio | Descrizione |1559| Campo | Tipo | Esempio | Descrizione |

1560| :-------------- | :----- | :------------------------- | :------------------------------------------------------------------------- |1560| :-------------- | :----- | :------------------------- | :------------------------------------------------------------------------- |


1597 ExitPlanMode1597 ExitPlanMode

1598</h5>1598</h5>

1599 1599 

1600Presenta un piano e chiede all'utente di approvarlo prima che Claude lasci la [modalità piano](/it/permission-modes#analyze-before-you-edit-with-plan-mode). Claude scrive il piano in un file su disco prima di chiamare lo strumento, quindi l'`tool_input` letterale dal modello è tipicamente vuoto. Claude Code inietta il contenuto del piano e il percorso del file prima di passare l'input agli hook.1600Presenta un piano e chiede all'utente di approvarlo prima che Claude lasci la [modalità piano](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode). Claude scrive il piano in un file su disco prima di chiamare lo strumento, quindi l'`tool_input` letterale dal modello è tipicamente vuoto. Claude Code inietta il contenuto del piano e il percorso del file prima di passare l'input agli hook.

1601 1601 

1602| Campo | Tipo | Esempio | Descrizione |1602| Campo | Tipo | Esempio | Descrizione |

1603| :--------------- | :----- | :------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1603| :--------------- | :----- | :------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


1615 1615 

1616| Campo | Descrizione |1616| Campo | Descrizione |

1617| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1617| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1618| `permissionDecision` | `"allow"` bypassa il prompt di autorizzazione, tranne per [strumenti che richiedono l'interazione dell'utente](#pretooluse-decision-control) e strumenti connettore [che l'organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools). `"deny"` impedisce la chiamata dello strumento. `"ask"` richiede all'utente di confermare. `"defer"` esce correttamente in modo che lo strumento possa essere ripreso in seguito. Le regole [Deny and ask](/it/permissions#manage-permissions) si applicano ancora indipendentemente da quello che l'hook restituisce |1618| `permissionDecision` | `"allow"` bypassa il prompt di autorizzazione, tranne per [strumenti che richiedono l'interazione dell'utente](#pretooluse-decision-control) e strumenti connettore [che l'organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools). `"deny"` impedisce la chiamata dello strumento. `"ask"` richiede all'utente di confermare. `"defer"` esce correttamente in modo che lo strumento possa essere ripreso in seguito. Le regole [Deny and ask](/docs/it/permissions#manage-permissions) si applicano ancora indipendentemente da quello che l'hook restituisce |

1619| `permissionDecisionReason` | Per `"allow"` e `"ask"`, mostrato all'utente ma non a Claude. Per `"deny"`, mostrato a Claude. Per `"defer"`, ignorato |1619| `permissionDecisionReason` | Per `"allow"` e `"ask"`, mostrato all'utente ma non a Claude. Per `"deny"`, mostrato a Claude. Per `"defer"`, ignorato |

1620| `updatedInput` | Modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includere i campi invariati insieme a quelli modificati. Combinare con `"allow"` per l'approvazione automatica o `"ask"` per mostrare l'input modificato all'utente. Per `"defer"`, ignorato |1620| `updatedInput` | Modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includere i campi invariati insieme a quelli modificati. Combinare con `"allow"` per l'approvazione automatica o `"ask"` per mostrare l'input modificato all'utente. Per `"defer"`, ignorato |

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


1638}1638}

1639```1639```

1640 1640 

1641`AskUserQuestion` e `ExitPlanMode` richiedono l'interazione dell'utente e normalmente bloccano in [modalità non interattiva](/it/headless) con il flag `-p`. Restituire `permissionDecision: "allow"` insieme a `updatedInput` soddisfa quel requisito: l'hook legge l'input dello strumento da stdin, raccoglie la risposta attraverso la propria interfaccia utente e la restituisce in `updatedInput` in modo che lo strumento venga eseguito senza richiedere. Restituire `"allow"` da solo non è sufficiente per questi strumenti. Per `AskUserQuestion`, ripetere l'array `questions` originale e aggiungere un oggetto [`answers`](#askuserquestion) che mappa il testo di ogni domanda alla risposta scelta. Le risposte multi-select uniscono le etichette con virgole. Claude non imposta questo campo; fornirlo tramite `updatedInput` per rispondere a livello di programmazione.1641`AskUserQuestion` e `ExitPlanMode` richiedono l'interazione dell'utente e normalmente bloccano in [modalità non interattiva](/docs/it/headless) con il flag `-p`. Restituire `permissionDecision: "allow"` insieme a `updatedInput` soddisfa quel requisito: l'hook legge l'input dello strumento da stdin, raccoglie la risposta attraverso la propria interfaccia utente e la restituisce in `updatedInput` in modo che lo strumento venga eseguito senza richiedere. Restituire `"allow"` da solo non è sufficiente per questi strumenti. Per `AskUserQuestion`, ripetere l'array `questions` originale e aggiungere un oggetto [`answers`](#askuserquestion) che mappa il testo di ogni domanda alla risposta scelta. Le risposte multi-select uniscono le etichette con virgole. Claude non imposta questo campo; fornirlo tramite `updatedInput` per rispondere a livello di programmazione.

1642 1642 

1643Strumenti connettore [che l'organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools) richiedono il prompt anche quando un hook restituisce `"allow"`.1643Strumenti connettore [che l'organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) richiedono il prompt anche quando un hook restituisce `"allow"`.

1644 1644 

1645A partire da v2.1.199, uno strumento MCP il cui server lo contrassegna con [`_meta["anthropic/requiresUserInteraction"]`](/it/mcp#require-approval-for-a-specific-tool) è più rigoroso: un hook non può saltare il suo prompt di approvazione con `"allow"`, con o senza `updatedInput`, perché Claude Code non può confermare che l'hook ha raccolto l'interazione di cui lo strumento ha bisogno.1645A partire da v2.1.199, uno strumento MCP il cui server lo contrassegna con [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool) è più rigoroso: un hook non può saltare il suo prompt di approvazione con `"allow"`, con o senza `updatedInput`, perché Claude Code non può confermare che l'hook ha raccolto l'interazione di cui lo strumento ha bisogno.

1646 1646 

1647<Note>1647<Note>

1648 PreToolUse in precedenza utilizzava i campi `decision` e `reason` di livello superiore, ma questi sono deprecati per questo evento. Utilizzare invece `hookSpecificOutput.permissionDecision` e `hookSpecificOutput.permissionDecisionReason`. I valori deprecati `"approve"` e `"block"` si mappano a `"allow"` e `"deny"` rispettivamente. Gli altri eventi come PostToolUse e Stop continuano a utilizzare `decision` e `reason` di livello superiore come formato corrente.1648 PreToolUse in precedenza utilizzava i campi `decision` e `reason` di livello superiore, ma questi sono deprecati per questo evento. Utilizzare invece `hookSpecificOutput.permissionDecision` e `hookSpecificOutput.permissionDecisionReason`. I valori deprecati `"approve"` e `"block"` si mappano a `"allow"` e `"deny"` rispettivamente. Gli altri eventi come PostToolUse e Stop continuano a utilizzare `decision` e `reason` di livello superiore come formato corrente.


1652 Rinviare una chiamata dello strumento per dopo1652 Rinviare una chiamata dello strumento per dopo

1653</h4>1653</h4>

1654 1654 

1655`"defer"` è per le integrazioni che eseguono `claude -p` come subprocess e leggono il suo output JSON, come un'app Agent SDK o un'interfaccia utente personalizzata costruita su Claude Code. Consente a quel processo chiamante di mettere in pausa Claude in una chiamata dello strumento, raccogliere input attraverso la sua interfaccia e riprendere da dove era rimasto. Claude Code onora questo valore solo in [modalità non interattiva](/it/headless) con il flag `-p`. Nelle sessioni interattive registra un avviso e ignora il risultato del hook.1655`"defer"` è per le integrazioni che eseguono `claude -p` come subprocess e leggono il suo output JSON, come un'app Agent SDK o un'interfaccia utente personalizzata costruita su Claude Code. Consente a quel processo chiamante di mettere in pausa Claude in una chiamata dello strumento, raccogliere input attraverso la sua interfaccia e riprendere da dove era rimasto. Claude Code onora questo valore solo in [modalità non interattiva](/docs/it/headless) con il flag `-p`. Nelle sessioni interattive registra un avviso e ignora il risultato del hook.

1656 1656 

1657Lo strumento `AskUserQuestion` è il caso tipico: Claude vuole chiedere qualcosa all'utente, ma non c'è un terminale per rispondere. Il round trip funziona così:1657Lo strumento `AskUserQuestion` è il caso tipico: Claude vuole chiedere qualcosa all'utente, ma non c'è un terminale per rispondere. Il round trip funziona così:

1658 1658 


1678}1678}

1679```1679```

1680 1680 

1681Non c'è timeout o limite di tentativi. La sessione rimane su disco fino a quando non la riprendi, soggetta alla [pulizia di conservazione](/it/settings#available-settings) `cleanupPeriodDays` che elimina i file di sessione dopo 30 giorni per impostazione predefinita. Se la risposta non è pronta quando riprendi, l'hook può restituire `"defer"` di nuovo e il processo esce nello stesso modo. Il processo chiamante controlla quando interrompere il ciclo restituendo infine `"allow"` o `"deny"` dall'hook.1681Non c'è timeout o limite di tentativi. La sessione rimane su disco fino a quando non la riprendi, soggetta alla [pulizia di conservazione](/docs/it/settings#available-settings) `cleanupPeriodDays` che elimina i file di sessione dopo 30 giorni per impostazione predefinita. Se la risposta non è pronta quando riprendi, l'hook può restituire `"defer"` di nuovo e il processo esce nello stesso modo. Il processo chiamante controlla quando interrompere il ciclo restituendo infine `"allow"` o `"deny"` dall'hook.

1682 1682 

1683`"defer"` funziona solo quando Claude effettua una singola chiamata dello strumento nel turno. Se Claude effettua più chiamate dello strumento contemporaneamente, `"defer"` viene ignorato con un avviso e lo strumento procede attraverso il flusso di autorizzazione normale. Il vincolo esiste perché resume può solo rieseguire uno strumento: non c'è modo di rinviare una chiamata da un batch senza lasciare le altre irrisolte.1683`"defer"` funziona solo quando Claude effettua una singola chiamata dello strumento nel turno. Se Claude effettua più chiamate dello strumento contemporaneamente, `"defer"` viene ignorato con un avviso e lo strumento procede attraverso il flusso di autorizzazione normale. Il vincolo esiste perché resume può solo rieseguire uno strumento: non c'è modo di rinviare una chiamata da un batch senza lasciare le altre irrisolte.

1684 1684 


1734 1734 

1735| Campo | Descrizione |1735| Campo | Descrizione |

1736| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1736| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1737| `behavior` | `"allow"` concede l'autorizzazione, `"deny"` la nega. Le regole [Deny and ask](/it/permissions#manage-permissions) si applicano ancora, quindi un hook che restituisce `"allow"` non sovrascrive una regola di negazione corrispondente |1737| `behavior` | `"allow"` concede l'autorizzazione, `"deny"` la nega. Le regole [Deny and ask](/docs/it/permissions#manage-permissions) si applicano ancora, quindi un hook che restituisce `"allow"` non sovrascrive una regola di negazione corrispondente |

1738| `updatedInput` | Solo per `"allow"`: modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includere i campi invariati insieme a quelli modificati. L'input modificato viene rivalutato rispetto alle regole di negazione e richiesta |1738| `updatedInput` | Solo per `"allow"`: modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includere i campi invariati insieme a quelli modificati. L'input modificato viene rivalutato rispetto alle regole di negazione e richiesta |

1739| `updatedPermissions` | Solo per `"allow"`: array di [permission update entries](#permission-update-entries) da applicare, come l'aggiunta di una regola di consentimento o la modifica della modalità di autorizzazione della sessione |1739| `updatedPermissions` | Solo per `"allow"`: array di [permission update entries](#permission-update-entries) da applicare, come l'aggiunta di una regola di consentimento o la modifica della modalità di autorizzazione della sessione |

1740| `message` | Solo per `"deny"`: dice a Claude perché l'autorizzazione è stata negata |1740| `message` | Solo per `"deny"`: dice a Claude perché l'autorizzazione è stata negata |


1770| `removeDirectories` | `directories`, `destination` | Rimuove directory di lavoro |1770| `removeDirectories` | `directories`, `destination` | Rimuove directory di lavoro |

1771 1771 

1772<Note>1772<Note>

1773 `setMode` con `bypassPermissions` ha effetto solo se la sessione è stata avviata con la modalità bypass già disponibile: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` o `permissions.defaultMode: "bypassPermissions"` nelle impostazioni, e la modalità non è disabilitata da [`permissions.disableBypassPermissionsMode`](/it/permissions#managed-settings). Altrimenti l'aggiornamento è un no-op. `bypassPermissions` non viene mai persistito come `defaultMode` indipendentemente da `destination`.1773 `setMode` con `bypassPermissions` ha effetto solo se la sessione è stata avviata con la modalità bypass già disponibile: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` o `permissions.defaultMode: "bypassPermissions"` nelle impostazioni, e la modalità non è disabilitata da [`permissions.disableBypassPermissionsMode`](/docs/it/permissions#managed-settings). Altrimenti l'aggiornamento è un no-op. `bypassPermissions` non viene mai persistito come `defaultMode` indipendentemente da `destination`.

1774</Note>1774</Note>

1775 1775 

1776Il campo `destination` su ogni voce determina se la modifica rimane in memoria o persiste in un file di impostazioni.1776Il campo `destination` su ogni voce determina se la modifica rimane in memoria o persiste in un file di impostazioni.


1989 PermissionDenied1989 PermissionDenied

1990</h3>1990</h3>

1991 1991 

1992Viene eseguito quando il classificatore della [modalità automatica](/it/permission-modes#eliminate-prompts-with-auto-mode) nega una chiamata dello strumento. Questo hook si attiva solo in modalità automatica: non viene eseguito quando si nega manualmente una finestra di dialogo di autorizzazione, quando un hook `PreToolUse` blocca una chiamata o quando una regola `deny` corrisponde. Utilizzare questo per registrare i rifiuti del classificatore, regolare la configurazione o dire al modello che può riprovare la chiamata dello strumento.1992Viene eseguito quando il classificatore della [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) nega una chiamata dello strumento. Questo hook si attiva solo in modalità automatica: non viene eseguito quando si nega manualmente una finestra di dialogo di autorizzazione, quando un hook `PreToolUse` blocca una chiamata o quando una regola `deny` corrisponde. Utilizzare questo per registrare i rifiuti del classificatore, regolare la configurazione o dire al modello che può riprovare la chiamata dello strumento.

1993 1993 

1994Corrisponde al nome dello strumento, stessi valori di PreToolUse.1994Corrisponde al nome dello strumento, stessi valori di PreToolUse.

1995 1995 


2051| `elicitation_dialog` | Un server MCP apre un modulo di elicitazione |2051| `elicitation_dialog` | Un server MCP apre un modulo di elicitazione |

2052| `elicitation_complete` | Un modulo di elicitazione MCP viene inviato o chiuso |2052| `elicitation_complete` | Un modulo di elicitazione MCP viene inviato o chiuso |

2053| `elicitation_response` | Una risposta di elicitazione MCP viene inviata al server |2053| `elicitation_response` | Una risposta di elicitazione MCP viene inviata al server |

2054| `agent_needs_input` | Una sessione in background inizia ad attendere l'input. Si attiva solo mentre la [vista agente](/it/agent-view) è aperta in un terminale |2054| `agent_needs_input` | Una sessione in background inizia ad attendere l'input. Si attiva solo mentre la [vista agente](/docs/it/agent-view) è aperta in un terminale |

2055| `agent_completed` | Una sessione in background termina o non riesce. Si attiva solo mentre la [vista agente](/it/agent-view) è aperta in un terminale |2055| `agent_completed` | Una sessione in background termina o non riesce. Si attiva solo mentre la [vista agente](/docs/it/agent-view) è aperta in un terminale |

2056 2056 

2057I tipi `agent_needs_input` e `agent_completed` richiedono Claude Code v2.1.198 o successivo.2057I tipi `agent_needs_input` e `agent_completed` richiedono Claude Code v2.1.198 o successivo.

2058 2058 


2109 SubagentStart2109 SubagentStart

2110</h3>2110</h3>

2111 2111 

2112Viene eseguito quando un subagent di Claude Code viene generato tramite lo strumento Agent. Supporta i matcher per filtrare per nome del tipo di agente. Per gli agenti incorporati, questo è il nome dell'agente come `general-purpose`, `Explore` o `Plan`. Per i [subagent personalizzati](/it/sub-agents), questo è il campo `name` dal frontmatter dell'agente, non il nome del file.2112Viene eseguito quando un subagent di Claude Code viene generato tramite lo strumento Agent. Supporta i matcher per filtrare per nome del tipo di agente. Per gli agenti incorporati, questo è il nome dell'agente come `general-purpose`, `Explore` o `Plan`. Per i [subagent personalizzati](/docs/it/sub-agents), questo è il campo `name` dal frontmatter dell'agente, non il nome del file.

2113 2113 

2114Per i subagent forniti da un [plugin](/it/plugins), il tipo di agente è l'identificatore con ambito plugin come `my-plugin:reviewer`, non il nome del frontmatter nudo. I due punti posizionano un nome con ambito plugin sul percorso dell'espressione regolare, quindi ancorare il matcher con `^` e `$` per una corrispondenza esatta: `^my-plugin:reviewer$`.2114Per i subagent forniti da un [plugin](/docs/it/plugins), il tipo di agente è l'identificatore con ambito plugin come `my-plugin:reviewer`, non il nome del frontmatter nudo. I due punti posizionano un nome con ambito plugin sul percorso dell'espressione regolare, quindi ancorare il matcher con `^` e `$` per una corrispondenza esatta: `^my-plugin:reviewer$`.

2115 2115 

2116<h4 id="subagentstart-input">2116<h4 id="subagentstart-input">

2117 Input di SubagentStart2117 Input di SubagentStart


2243 TaskCompleted2243 TaskCompleted

2244</h3>2244</h3>

2245 2245 

2246Viene eseguito quando un'attività sta per essere contrassegnata come completata. Questo si attiva in due situazioni: quando qualsiasi agente contrassegna esplicitamente un'attività come completata attraverso lo strumento TaskUpdate, o quando un compagno di squadra di un [agent team](/it/agent-teams) finisce il suo turno con attività in corso. Utilizzare questo per applicare i criteri di completamento come il passaggio dei test o dei controlli di linting prima che un'attività possa chiudersi.2246Viene eseguito quando un'attività sta per essere contrassegnata come completata. Questo si attiva in due situazioni: quando qualsiasi agente contrassegna esplicitamente un'attività come completata attraverso lo strumento TaskUpdate, o quando un compagno di squadra di un [agent team](/docs/it/agent-teams) finisce il suo turno con attività in corso. Utilizzare questo per applicare i criteri di completamento come il passaggio dei test o dei controlli di linting prima che un'attività possa chiudersi.

2247 2247 

2248Quando un hook `TaskCompleted` esce con il codice 2, l'attività non viene contrassegnata come completata e il messaggio stderr viene restituito al modello come feedback. Per interrompere completamente il compagno di squadra invece di rieseguirlo, restituire JSON con `{"continue": false, "stopReason": "..."}`. Gli hook TaskCompleted non supportano i matcher e si attivano ad ogni occorrenza.2248Quando un hook `TaskCompleted` esce con il codice 2, l'attività non viene contrassegnata come completata e il messaggio stderr viene restituito al modello come feedback. Per interrompere completamente il compagno di squadra invece di rieseguirlo, restituire JSON con `{"continue": false, "stopReason": "..."}`. Gli hook TaskCompleted non supportano i matcher e si attivano ad ogni occorrenza.

2249 2249 


2308Viene eseguito quando l'agente Claude Code principale ha finito di rispondere. Non viene eseguito se l'arresto si è verificato a causa di un'interruzione dell'utente. Gli errori API attivano [StopFailure](#stopfailure) invece.2308Viene eseguito quando l'agente Claude Code principale ha finito di rispondere. Non viene eseguito se l'arresto si è verificato a causa di un'interruzione dell'utente. Gli errori API attivano [StopFailure](#stopfailure) invece.

2309 2309 

2310<Tip>2310<Tip>

2311 Il comando [`/goal`](/it/goal) è una scorciatoia incorporata per un hook Stop basato su prompt con ambito di sessione. Utilizzarlo quando si desidera che Claude continui a lavorare fino a quando una condizione non si verifica senza scrivere la configurazione dell'hook.2311 Il comando [`/goal`](/docs/it/goal) è una scorciatoia incorporata per un hook Stop basato su prompt con ambito di sessione. Utilizzarlo quando si desidera che Claude continui a lavorare fino a quando una condizione non si verifica senza scrivere la configurazione dell'hook.

2312</Tip>2312</Tip>

2313 2313 

2314<h4 id="stop-input">2314<h4 id="stop-input">


2439 TeammateIdle2439 TeammateIdle

2440</h3>2440</h3>

2441 2441 

2442Viene eseguito quando un compagno di squadra di un [agent team](/it/agent-teams) sta per andare inattivo dopo aver finito il suo turno. Utilizzare questo per applicare gate di qualità prima che un compagno di squadra smetta di lavorare, come richiedere il passaggio dei controlli di linting o verificare che i file di output esistano.2442Viene eseguito quando un compagno di squadra di un [agent team](/docs/it/agent-teams) sta per andare inattivo dopo aver finito il suo turno. Utilizzare questo per applicare gate di qualità prima che un compagno di squadra smetta di lavorare, come richiedere il passaggio dei controlli di linting o verificare che i file di output esistano.

2443 2443 

2444Quando un hook `TeammateIdle` esce con il codice 2, il compagno di squadra riceve il messaggio stderr come feedback e continua a lavorare invece di andare inattivo. Per interrompere completamente il compagno di squadra invece di rieseguirlo, restituire JSON con `{"continue": false, "stopReason": "..."}`. Gli hook TeammateIdle non supportano i matcher e si attivano ad ogni occorrenza.2444Quando un hook `TeammateIdle` esce con il codice 2, il compagno di squadra riceve il messaggio stderr come feedback e continua a lavorare invece di andare inattivo. Per interrompere completamente il compagno di squadra invece di rieseguirlo, restituire JSON con `{"continue": false, "stopReason": "..."}`. Gli hook TeammateIdle non supportano i matcher e si attivano ad ogni occorrenza.

2445 2445 


2653 WorktreeCreate2653 WorktreeCreate

2654</h3>2654</h3>

2655 2655 

2656Viene eseguito quando un worktree sta per essere creato, sia da `claude --worktree` che da un [subagent che utilizza `isolation: "worktree"`](/it/sub-agents#choose-the-subagent-scope). Per impostazione predefinita Claude Code crea la copia di lavoro isolata con `git worktree`. Configurando un hook WorktreeCreate si sostituisce quel comportamento git predefinito, consentendo di utilizzare un sistema di controllo della versione diverso come SVN, Perforce o Mercurial.2656Viene eseguito quando un worktree sta per essere creato, sia da `claude --worktree` che da un [subagent che utilizza `isolation: "worktree"`](/docs/it/sub-agents#choose-the-subagent-scope). Per impostazione predefinita Claude Code crea la copia di lavoro isolata con `git worktree`. Configurando un hook WorktreeCreate si sostituisce quel comportamento git predefinito, consentendo di utilizzare un sistema di controllo della versione diverso come SVN, Perforce o Mercurial.

2657 2657 

2658Poiché l'hook sostituisce completamente il comportamento predefinito, [`.worktreeinclude`](/it/worktrees#copy-gitignored-files-into-worktrees) non viene elaborato. Se è necessario copiare i file di configurazione locali come `.env` nel nuovo worktree, farlo all'interno dello script del hook.2658Poiché l'hook sostituisce completamente il comportamento predefinito, [`.worktreeinclude`](/docs/it/worktrees#copy-gitignored-files-into-worktrees) non viene elaborato. Se è necessario copiare i file di configurazione locali come `.env` nel nuovo worktree, farlo all'interno dello script del hook.

2659 2659 

2660L'hook deve restituire il percorso assoluto della directory del worktree creato. Claude Code utilizza questo percorso come directory di lavoro per la sessione isolata. Consultare [WorktreeCreate output](#worktreecreate-output) per come ogni tipo di hook restituisce il percorso.2660L'hook deve restituire il percorso assoluto della directory del worktree creato. Claude Code utilizza questo percorso come directory di lavoro per la sessione isolata. Consultare [WorktreeCreate output](#worktreecreate-output) per come ogni tipo di hook restituisce il percorso.

2661 2661 


3108 Controllare più condizioni prima di fermarsi3108 Controllare più condizioni prima di fermarsi

3109</h3>3109</h3>

3110 3110 

3111Questo hook `Stop` utilizza un prompt dettagliato per controllare tre condizioni prima di consentire a Claude di fermarsi. Gli hook `SubagentStop` utilizzano lo stesso formato per valutare se un [subagent](/it/sub-agents) dovrebbe fermarsi. Se `"ok"` è `false`, Claude continua a lavorare con il motivo fornito come sua prossima istruzione:3111Questo hook `Stop` utilizza un prompt dettagliato per controllare tre condizioni prima di consentire a Claude di fermarsi. Gli hook `SubagentStop` utilizzano lo stesso formato per valutare se un [subagent](/docs/it/sub-agents) dovrebbe fermarsi. Se `"ok"` è `false`, Claude continua a lavorare con il motivo fornito come sua prossima istruzione:

3112 3112 

3113```json theme={null}3113```json theme={null}

3114{3114{


3381 3381 

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

3383 3383 

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

hooks-guide.md +50 −50

Details

10 10 

11Per decisioni che richiedono giudizio piuttosto che regole deterministiche, potete anche utilizzare [hooks basati su prompt](#prompt-based-hooks) o [hooks basati su agenti](#agent-based-hooks) che utilizzano un modello Claude per valutare le condizioni.11Per decisioni che richiedono giudizio piuttosto che regole deterministiche, potete anche utilizzare [hooks basati su prompt](#prompt-based-hooks) o [hooks basati su agenti](#agent-based-hooks) che utilizzano un modello Claude per valutare le condizioni.

12 12 

13Per altri modi di estendere Claude Code, consultate [skills](/it/skills) per fornire a Claude istruzioni aggiuntive e comandi eseguibili, [subagents](/it/sub-agents) per eseguire attività in contesti isolati, e [plugins](/it/plugins) per pacchettizzare estensioni da condividere tra i progetti.13Per altri modi di estendere Claude Code, consultate [skills](/docs/it/skills) per fornire a Claude istruzioni aggiuntive e comandi eseguibili, [subagents](/docs/it/sub-agents) per eseguire attività in contesti isolati, e [plugins](/docs/it/plugins) per pacchettizzare estensioni da condividere tra i progetti.

14 14 

15<Tip>15<Tip>

16 Questa guida copre i casi d'uso comuni e come iniziare. Per schemi di eventi completi, formati di input/output JSON e funzionalità avanzate come hooks asincroni e hooks di strumenti MCP, consultate il [riferimento Hooks](/it/hooks).16 Questa guida copre i casi d'uso comuni e come iniziare. Per schemi di eventi completi, formati di input/output JSON e funzionalità avanzate come hooks asincroni e hooks di strumenti MCP, consultate il [riferimento Hooks](/docs/it/hooks).

17</Tip>17</Tip>

18 18 

19<h2 id="set-up-your-first-hook">19<h2 id="set-up-your-first-hook">


85 Cosa potete automatizzare85 Cosa potete automatizzare

86</h2>86</h2>

87 87 

88Gli hooks vi permettono di eseguire codice in punti chiave del ciclo di vita di Claude Code: formattare file dopo le modifiche, bloccare comandi prima che si eseguano, inviare notifiche quando Claude ha bisogno di input, iniettare contesto all'inizio della sessione, e altro ancora. Per l'elenco completo degli eventi hook, consultate il [riferimento Hooks](/it/hooks#hook-lifecycle).88Gli hooks vi permettono di eseguire codice in punti chiave del ciclo di vita di Claude Code: formattare file dopo le modifiche, bloccare comandi prima che si eseguano, inviare notifiche quando Claude ha bisogno di input, iniettare contesto all'inizio della sessione, e altro ancora. Per l'elenco completo degli eventi hook, consultate il [riferimento Hooks](/docs/it/hooks#hook-lifecycle).

89 89 

90Ogni esempio include un blocco di configurazione pronto all'uso che aggiungete a un [file di impostazioni](#configure-hook-location).90Ogni esempio include un blocco di configurazione pronto all'uso che aggiungete a un [file di impostazioni](#configure-hook-location).

91 91 

92Per un esempio di produzione di hooks che eseguono una revisione di un modello separato e reinseriscono i risultati nella sessione, consultate [come il plugin `security-guidance` si integra con Claude Code](/it/security-guidance#how-the-plugin-integrates-with-claude-code).92Per un esempio di produzione di hooks che eseguono una revisione di un modello separato e reinseriscono i risultati nella sessione, consultate [come il plugin `security-guidance` si integra con Claude Code](/docs/it/security-guidance#how-the-plugin-integrates-with-claude-code).

93 93 

94<h3 id="get-notified-when-claude-needs-input">94<h3 id="get-notified-when-claude-needs-input">

95 Ricevere una notifica quando Claude ha bisogno di input95 Ricevere una notifica quando Claude ha bisogno di input


181| `elicitation_dialog` | Un server MCP apre un modulo di elicitazione |181| `elicitation_dialog` | Un server MCP apre un modulo di elicitazione |

182| `elicitation_complete` | Un modulo di elicitazione MCP viene inviato o chiuso |182| `elicitation_complete` | Un modulo di elicitazione MCP viene inviato o chiuso |

183| `elicitation_response` | Una risposta di elicitazione MCP viene inviata al server |183| `elicitation_response` | Una risposta di elicitazione MCP viene inviata al server |

184| `agent_needs_input` | Una sessione in background inizia ad aspettare il vostro input. Si attiva solo mentre la [visualizzazione agente](/it/agent-view) è aperta |184| `agent_needs_input` | Una sessione in background inizia ad aspettare il vostro input. Si attiva solo mentre la [visualizzazione agente](/docs/it/agent-view) è aperta |

185| `agent_completed` | Una sessione in background finisce o fallisce. Si attiva solo mentre la [visualizzazione agente](/it/agent-view) è aperta |185| `agent_completed` | Una sessione in background finisce o fallisce. Si attiva solo mentre la [visualizzazione agente](/docs/it/agent-view) è aperta |

186 186 

187I matcher `agent_needs_input` e `agent_completed` richiedono Claude Code v2.1.198 o successivo.187I matcher `agent_needs_input` e `agent_completed` richiedono Claude Code v2.1.198 o successivo.

188 188 

189Digitate `/hooks` e selezionate `Notification` per confermare che l'hook è registrato. Per lo schema completo dell'evento, consultate il [riferimento Notification](/it/hooks#notification).189Digitate `/hooks` e selezionate `Notification` per confermare che l'hook è registrato. Per lo schema completo dell'evento, consultate il [riferimento Notification](/docs/it/hooks#notification).

190 190 

191<h3 id="auto-format-code-after-edits">191<h3 id="auto-format-code-after-edits">

192 Formattare automaticamente il codice dopo le modifiche192 Formattare automaticamente il codice dopo le modifiche


309}309}

310```310```

311 311 

312Potete sostituire l'`echo` con qualsiasi comando che produce output dinamico, come `git log --oneline -5` per mostrare i commit recenti. Per iniettare contesto all'inizio di ogni sessione, considerate di utilizzare [CLAUDE.md](/it/memory) invece. Per le variabili di ambiente, consultate [`CLAUDE_ENV_FILE`](/it/hooks#persist-environment-variables) nel riferimento.312Potete sostituire l'`echo` con qualsiasi comando che produce output dinamico, come `git log --oneline -5` per mostrare i commit recenti. Per iniettare contesto all'inizio di ogni sessione, considerate di utilizzare [CLAUDE.md](/docs/it/memory) invece. Per le variabili di ambiente, consultate [`CLAUDE_ENV_FILE`](/docs/it/hooks#persist-environment-variables) nel riferimento.

313 313 

314<h3 id="audit-configuration-changes">314<h3 id="audit-configuration-changes">

315 Controllare le modifiche di configurazione315 Controllare le modifiche di configurazione


337}337}

338```338```

339 339 

340Il matcher filtra per tipo di configurazione: `user_settings`, `project_settings`, `local_settings`, `policy_settings`, o `skills`. Per bloccare una modifica dall'avere effetto, uscite con il codice 2 o restituite `{"decision": "block"}`. Consultate il [riferimento ConfigChange](/it/hooks#configchange) per lo schema di input completo.340Il matcher filtra per tipo di configurazione: `user_settings`, `project_settings`, `local_settings`, `policy_settings`, o `skills`. Per bloccare una modifica dall'avere effetto, uscite con il codice 2 o restituite `{"decision": "block"}`. Consultate il [riferimento ConfigChange](/docs/it/hooks#configchange) per lo schema di input completo.

341 341 

342<h3 id="reload-environment-when-directory-or-files-change">342<h3 id="reload-environment-when-directory-or-files-change">

343 Ricaricare l'ambiente quando la directory o i file cambiano343 Ricaricare l'ambiente quando la directory o i file cambiano


376 376 

377Eseguite `direnv allow` una volta in ogni directory che ha un `.envrc` in modo che direnv sia autorizzato a caricarlo. Se utilizzate devbox o nix invece di direnv, lo stesso modello funziona con `devbox shellenv` o `devbox global shellenv` al posto di `direnv export bash`.377Eseguite `direnv allow` una volta in ogni directory che ha un `.envrc` in modo che direnv sia autorizzato a caricarlo. Se utilizzate devbox o nix invece di direnv, lo stesso modello funziona con `devbox shellenv` o `devbox global shellenv` al posto di `direnv export bash`.

378 378 

379Per reagire a file specifici invece di ogni cambio di directory, utilizzate `FileChanged` con un `matcher` che elenca i nomi dei file da guardare, separati da `|`. Quando costruite l'elenco di osservazione, Claude Code divide questo valore in nomi di file letterali piuttosto che valutarlo come regex. Consultate [FileChanged](/it/hooks#filechanged) per come lo stesso valore filtra anche quali gruppi di hook si eseguono quando un file cambia. Questo esempio guarda `.envrc` e `.env` nella directory di lavoro:379Per reagire a file specifici invece di ogni cambio di directory, utilizzate `FileChanged` con un `matcher` che elenca i nomi dei file da guardare, separati da `|`. Quando costruite l'elenco di osservazione, Claude Code divide questo valore in nomi di file letterali piuttosto che valutarlo come regex. Consultate [FileChanged](/docs/it/hooks#filechanged) per come lo stesso valore filtra anche quali gruppi di hook si eseguono quando un file cambia. Questo esempio guarda `.envrc` e `.env` nella directory di lavoro:

380 380 

381```json theme={null}381```json theme={null}

382{382{


396}396}

397```397```

398 398 

399Consultate le voci di riferimento [CwdChanged](/it/hooks#cwdchanged) e [FileChanged](/it/hooks#filechanged) per gli schemi di input, l'output `watchPaths`, e i dettagli di `CLAUDE_ENV_FILE`.399Consultate le voci di riferimento [CwdChanged](/docs/it/hooks#cwdchanged) e [FileChanged](/docs/it/hooks#filechanged) per gli schemi di input, l'output `watchPaths`, e i dettagli di `CLAUDE_ENV_FILE`.

400 400 

401<h3 id="auto-approve-specific-permission-prompts">401<h3 id="auto-approve-specific-permission-prompts">

402 Approvare automaticamente specifici prompt di autorizzazione402 Approvare automaticamente specifici prompt di autorizzazione


431Per impostare una modalità di autorizzazione specifica invece, l'output del vostro hook può includere un array `updatedPermissions` con una voce `setMode`. Il valore `mode` è qualsiasi modalità di autorizzazione come `default`, `acceptEdits`, o `bypassPermissions`, e `destination: "session"` la applica solo per la sessione corrente.431Per impostare una modalità di autorizzazione specifica invece, l'output del vostro hook può includere un array `updatedPermissions` con una voce `setMode`. Il valore `mode` è qualsiasi modalità di autorizzazione come `default`, `acceptEdits`, o `bypassPermissions`, e `destination: "session"` la applica solo per la sessione corrente.

432 432 

433<Note>433<Note>

434 `bypassPermissions` si applica solo se la sessione è stata avviata con modalità bypass già disponibile: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, o `permissions.defaultMode: "bypassPermissions"` nelle impostazioni, e non disabilitato da [`permissions.disableBypassPermissionsMode`](/it/permissions#managed-settings). Non viene mai persistito come `defaultMode`.434 `bypassPermissions` si applica solo se la sessione è stata avviata con modalità bypass già disponibile: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, o `permissions.defaultMode: "bypassPermissions"` nelle impostazioni, e non disabilitato da [`permissions.disableBypassPermissionsMode`](/docs/it/permissions#managed-settings). Non viene mai persistito come `defaultMode`.

435</Note>435</Note>

436 436 

437Per passare la sessione a `acceptEdits`, il vostro hook scrive questo JSON su stdout:437Per passare la sessione a `acceptEdits`, il vostro hook scrive questo JSON su stdout:


450}450}

451```451```

452 452 

453Mantenete il matcher il più ristretto possibile. Corrispondere a `.*` o lasciare il matcher vuoto approverebbe automaticamente ogni prompt di autorizzazione, incluse le scritture di file e i comandi shell. Consultate il [riferimento PermissionRequest](/it/hooks#permissionrequest-decision-control) per l'insieme completo di campi di decisione.453Mantenete il matcher il più ristretto possibile. Corrispondere a `.*` o lasciare il matcher vuoto approverebbe automaticamente ogni prompt di autorizzazione, incluse le scritture di file e i comandi shell. Consultate il [riferimento PermissionRequest](/docs/it/hooks#permissionrequest-decision-control) per l'insieme completo di campi di decisione.

454 454 

455<h2 id="how-hooks-work">455<h2 id="how-hooks-work">

456 Come funzionano gli hooks456 Come funzionano gli hooks


478| `TaskCompleted` | When a task is being marked as completed |478| `TaskCompleted` | When a task is being marked as completed |

479| `Stop` | When Claude finishes responding |479| `Stop` | When Claude finishes responding |

480| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |480| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

481| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |481| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |

482| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |482| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

483| `ConfigChange` | When a configuration file changes during a session |483| `ConfigChange` | When a configuration file changes during a session |

484| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |484| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

485| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |485| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

486| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |486| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |

487| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |487| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |

488| `PreCompact` | Before context compaction |488| `PreCompact` | Before context compaction |

489| `PostCompact` | After context compaction completes |489| `PostCompact` | After context compaction completes |

490| `Elicitation` | When an MCP server requests user input during a tool call |490| `Elicitation` | When an MCP server requests user input during a tool call |


494Ogni hook ha un `type` che determina come si esegue. La maggior parte degli hooks utilizza `"type": "command"`, che esegue un comando shell. Sono disponibili altri quattro tipi:494Ogni hook ha un `type` che determina come si esegue. La maggior parte degli hooks utilizza `"type": "command"`, che esegue un comando shell. Sono disponibili altri quattro tipi:

495 495 

496* `"type": "http"`: POST dei dati dell'evento a un URL. Consultate [HTTP hooks](#http-hooks).496* `"type": "http"`: POST dei dati dell'evento a un URL. Consultate [HTTP hooks](#http-hooks).

497* `"type": "mcp_tool"`: chiama uno strumento su un server MCP già connesso. Consultate [MCP tool hooks](/it/hooks#mcp-tool-hook-fields).497* `"type": "mcp_tool"`: chiama uno strumento su un server MCP già connesso. Consultate [MCP tool hooks](/docs/it/hooks#mcp-tool-hook-fields).

498* `"type": "prompt"`: valutazione LLM a turno singolo. Consultate [Prompt-based hooks](#prompt-based-hooks).498* `"type": "prompt"`: valutazione LLM a turno singolo. Consultate [Prompt-based hooks](#prompt-based-hooks).

499* `"type": "agent"`: verifica multi-turno con accesso agli strumenti. Gli agent hooks sono sperimentali e potrebbero cambiare. Consultate [Agent-based hooks](#agent-based-hooks).499* `"type": "agent"`: verifica multi-turno con accesso agli strumenti. Gli agent hooks sono sperimentali e potrebbero cambiare. Consultate [Agent-based hooks](#agent-based-hooks).

500 500 


556}556}

557```557```

558 558 

559Il vostro script può analizzare quel JSON e agire su qualsiasi di quei campi. Gli hooks `UserPromptSubmit` ricevono il testo `prompt` invece, gli hook `SessionStart` ricevono la `source` (startup, resume, clear, compact), e così via. Consultate [Campi di input comuni](/it/hooks#common-input-fields) nel riferimento per i campi condivisi, e la sezione di ogni evento per gli schemi specifici dell'evento.559Il vostro script può analizzare quel JSON e agire su qualsiasi di quei campi. Gli hooks `UserPromptSubmit` ricevono il testo `prompt` invece, gli hook `SessionStart` ricevono la `source` (startup, resume, clear, compact), e così via. Consultate [Campi di input comuni](/docs/it/hooks#common-input-fields) nel riferimento per i campi condivisi, e la sezione di ogni evento per gli schemi specifici dell'evento.

560 560 

561<h4 id="hook-output">561<h4 id="hook-output">

562 Output dell'hook562 Output dell'hook


579 579 

580Il codice di uscita determina cosa succede dopo:580Il codice di uscita determina cosa succede dopo:

581 581 

582* **Exit 0**: l'hook non riporta obiezioni e l'azione procede normalmente. Per un hook `PreToolUse` questo non approva la chiamata dello strumento: il normale [flusso di autorizzazione](/it/permissions) si applica ancora. Per gli hook `UserPromptSubmit`, `UserPromptExpansion` e `SessionStart`, qualsiasi cosa scriviate su stdout viene aggiunta al contesto di Claude.582* **Exit 0**: l'hook non riporta obiezioni e l'azione procede normalmente. Per un hook `PreToolUse` questo non approva la chiamata dello strumento: il normale [flusso di autorizzazione](/docs/it/permissions) si applica ancora. Per gli hook `UserPromptSubmit`, `UserPromptExpansion` e `SessionStart`, qualsiasi cosa scriviate su stdout viene aggiunta al contesto di Claude.

583* **Exit 2**: l'azione è bloccata. Scrivete un motivo su stderr, e Claude lo riceve come feedback in modo da poter adattarsi. Alcuni eventi non possono essere bloccati: per `SessionStart`, `Setup`, `Notification` e altri, exit 2 mostra stderr all'utente e l'esecuzione continua. Consultate [exit code 2 behavior per evento](/it/hooks#exit-code-2-behavior-per-event) per l'elenco completo.583* **Exit 2**: l'azione è bloccata. Scrivete un motivo su stderr, e Claude lo riceve come feedback in modo da poter adattarsi. Alcuni eventi non possono essere bloccati: per `SessionStart`, `Setup`, `Notification` e altri, exit 2 mostra stderr all'utente e l'esecuzione continua. Consultate [exit code 2 behavior per evento](/docs/it/hooks#exit-code-2-behavior-per-event) per l'elenco completo.

584* **Qualsiasi altro codice di uscita**: l'azione procede. La trascrizione mostra un avviso `<hook name> hook error` seguito dalla prima riga di stderr; lo stderr completo va al [debug log](/it/hooks#debug-hooks).584* **Qualsiasi altro codice di uscita**: l'azione procede. La trascrizione mostra un avviso `<hook name> hook error` seguito dalla prima riga di stderr; lo stderr completo va al [debug log](/docs/it/hooks#debug-hooks).

585 585 

586<h4 id="structured-json-output">586<h4 id="structured-json-output">

587 Output JSON strutturato587 Output JSON strutturato


607 607 

608Con `"deny"`, Claude Code annulla la chiamata dello strumento e alimenta `permissionDecisionReason` di nuovo a Claude. Questi valori `permissionDecision` sono specifici per `PreToolUse`:608Con `"deny"`, Claude Code annulla la chiamata dello strumento e alimenta `permissionDecisionReason` di nuovo a Claude. Questi valori `permissionDecision` sono specifici per `PreToolUse`:

609 609 

610* `"allow"`: salta il prompt di autorizzazione interattivo. Le regole di negazione e richiesta, incluse le liste di negazione gestite dall'azienda, si applicano ancora, così come i prompt per gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools) e gli strumenti MCP contrassegnati [`requiresUserInteraction`](/it/mcp#require-approval-for-a-specific-tool)610* `"allow"`: salta il prompt di autorizzazione interattivo. Le regole di negazione e richiesta, incluse le liste di negazione gestite dall'azienda, si applicano ancora, così come i prompt per gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool)

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

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

613 613 

614Un quarto valore, `"defer"`, è disponibile in [modalità non interattiva](/it/headless) con il flag `-p`. Esce dal processo con la chiamata dello strumento preservata in modo che un wrapper SDK Agent possa raccogliere input e riprendere. Consultate [Rinviare una chiamata di strumento per dopo](/it/hooks#defer-a-tool-call-for-later) nel riferimento.614Un quarto valore, `"defer"`, è disponibile in [modalità non interattiva](/docs/it/headless) con il flag `-p`. Esce dal processo con la chiamata dello strumento preservata in modo che un wrapper SDK Agent possa raccogliere input e riprendere. Consultate [Rinviare una chiamata di strumento per dopo](/docs/it/hooks#defer-a-tool-call-for-later) nel riferimento.

615 615 

616Restituire `"allow"` salta il prompt interattivo ma non sostituisce le [regole di autorizzazione](/it/permissions#manage-permissions). Se una regola di negazione corrisponde alla chiamata dello strumento, la chiamata viene bloccata anche quando il vostro hook restituisce `"allow"`. Se una regola di richiesta corrisponde, l'utente viene comunque richiesto, così come gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools) e gli strumenti MCP contrassegnati [`requiresUserInteraction`](/it/mcp#require-approval-for-a-specific-tool). Questo significa che le regole di negazione da qualsiasi ambito di impostazioni, incluse le [impostazioni gestite](/it/settings#settings-files), hanno sempre la precedenza sulle approvazioni degli hook.616Restituire `"allow"` salta il prompt interattivo ma non sostituisce le [regole di autorizzazione](/docs/it/permissions#manage-permissions). Se una regola di negazione corrisponde alla chiamata dello strumento, la chiamata viene bloccata anche quando il vostro hook restituisce `"allow"`. Se una regola di richiesta corrisponde, l'utente viene comunque richiesto, così come gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool). Questo significa che le regole di negazione da qualsiasi ambito di impostazioni, incluse le [impostazioni gestite](/docs/it/settings#settings-files), hanno sempre la precedenza sulle approvazioni degli hook.

617 617 

618Altri eventi utilizzano modelli di decisione diversi. Ad esempio, gli hook `PostToolUse` e `Stop` utilizzano un campo `decision: "block"` di livello superiore, mentre `PermissionRequest` utilizza `hookSpecificOutput.decision.behavior`. Consultate la [tabella di riepilogo](/it/hooks#decision-control) nel riferimento per una suddivisione completa per evento.618Altri eventi utilizzano modelli di decisione diversi. Ad esempio, gli hook `PostToolUse` e `Stop` utilizzano un campo `decision: "block"` di livello superiore, mentre `PermissionRequest` utilizza `hookSpecificOutput.decision.behavior`. Consultate la [tabella di riepilogo](/docs/it/hooks#decision-control) nel riferimento per una suddivisione completa per evento.

619 619 

620Per gli hook `UserPromptSubmit`, utilizzate `hookSpecificOutput.additionalContext` invece per iniettare testo nel contesto di Claude. Annidare `additionalContext` dentro `hookSpecificOutput`; se lo posizionate al livello superiore del JSON, Claude Code lo ignora silenziosamente. Ad esempio, questo output aggiunge lo stato del ramo corrente a ogni prompt:620Per gli hook `UserPromptSubmit`, utilizzate `hookSpecificOutput.additionalContext` invece per iniettare testo nel contesto di Claude. Annidare `additionalContext` dentro `hookSpecificOutput`; se lo posizionate al livello superiore del JSON, Claude Code lo ignora silenziosamente. Ad esempio, questo output aggiunge lo stato del ramo corrente a ogni prompt:

621 621 


628}628}

629```629```

630 630 

631Consultate [UserPromptSubmit decision control](/it/hooks#userpromptsubmit-decision-control) per la forma di output completa, incluso il blocco dei prompt e l'impostazione del titolo della sessione.631Consultate [UserPromptSubmit decision control](/docs/it/hooks#userpromptsubmit-decision-control) per la forma di output completa, incluso il blocco dei prompt e l'impostazione del titolo della sessione.

632 632 

633Gli hooks con `type: "prompt"` gestiscono l'output diversamente: consultate [Prompt-based hooks](#prompt-based-hooks).633Gli hooks con `type: "prompt"` gestiscono l'output diversamente: consultate [Prompt-based hooks](#prompt-based-hooks).

634 634 


653}653}

654```654```

655 655 

656Il matcher `"Edit|Write"` si attiva solo quando Claude utilizza lo strumento `Edit` o `Write`, non quando utilizza `Bash`, `Read`, o qualsiasi altro strumento. {/* min-version: 2.1.191 */}Su Claude Code v2.1.191 o successivo, una virgola separa le alternative allo stesso modo, quindi `"Edit, Write"` è equivalente. Consultate [Matcher patterns](/it/hooks#matcher-patterns) per come i nomi semplici e le espressioni regolari vengono valutati.656Il matcher `"Edit|Write"` si attiva solo quando Claude utilizza lo strumento `Edit` o `Write`, non quando utilizza `Bash`, `Read`, o qualsiasi altro strumento. {/* min-version: 2.1.191 */}Su Claude Code v2.1.191 o successivo, una virgola separa le alternative allo stesso modo, quindi `"Edit, Write"` è equivalente. Consultate [Matcher patterns](/docs/it/hooks#matcher-patterns) per come i nomi semplici e le espressioni regolari vengono valutati.

657 657 

658<Note>658<Note>

659 Claude può anche creare o modificare file eseguendo comandi shell attraverso lo strumento `Bash`. Se il vostro hook deve vedere ogni modifica ai file, come per la scansione di conformità o il logging di audit, aggiungete un hook [`Stop`](/it/hooks#stop) che scansiona l'albero di lavoro una volta per turno. Per una copertura per-chiamata invece, corrispondere anche a `Bash` e avere il vostro script elencare i file modificati e non tracciati con `git status --porcelain`.659 Claude può anche creare o modificare file eseguendo comandi shell attraverso lo strumento `Bash`. Se il vostro hook deve vedere ogni modifica ai file, come per la scansione di conformità o il logging di audit, aggiungete un hook [`Stop`](/docs/it/hooks#stop) che scansiona l'albero di lavoro una volta per turno. Per una copertura per-chiamata invece, corrispondere anche a `Bash` e avere il vostro script elencare i file modificati e non tracciati con `git status --porcelain`.

660</Note>660</Note>

661 661 

662Ogni tipo di evento corrisponde a un campo specifico:662Ogni tipo di evento corrisponde a un campo specifico:


676| `InstructionsLoaded` | motivo del caricamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |676| `InstructionsLoaded` | motivo del caricamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

677| `Elicitation` | nome del server MCP | i vostri nomi di server MCP configurati |677| `Elicitation` | nome del server MCP | i vostri nomi di server MCP configurati |

678| `ElicitationResult` | nome del server MCP | stessi valori di `Elicitation` |678| `ElicitationResult` | nome del server MCP | stessi valori di `Elicitation` |

679| `FileChanged` | nomi di file letterali da guardare (consultate [FileChanged](/it/hooks#filechanged)) | `.envrc\|.env` |679| `FileChanged` | nomi di file letterali da guardare (consultate [FileChanged](/docs/it/hooks#filechanged)) | `.envrc\|.env` |

680| `UserPromptExpansion` | nome del comando | i vostri nomi di skill o comando |680| `UserPromptExpansion` | nome del comando | i vostri nomi di skill o comando |

681| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `MessageDisplay` | nessun supporto matcher | si attiva sempre su ogni occorrenza |681| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `MessageDisplay` | nessun supporto matcher | si attiva sempre su ogni occorrenza |

682 682 


706 </Tab>706 </Tab>

707 707 

708 <Tab title="Corrispondere agli strumenti MCP">708 <Tab title="Corrispondere agli strumenti MCP">

709 Gli strumenti MCP utilizzano una convenzione di denominazione diversa rispetto agli strumenti integrati: `mcp__<server>__<tool>`, dove `<server>` è il nome del server MCP e `<tool>` è lo strumento che fornisce. Ad esempio, `mcp__github__search_repositories` o `mcp__filesystem__read_file`. Gli strumenti da un [server MCP fornito da plugin](/it/mcp#plugin-provided-mcp-servers) utilizzano un segmento di server con ambito invece, come `mcp__plugin_my-plugin_db__query`. Utilizzate un matcher regex per indirizzare tutti gli strumenti da un server specifico, o corrispondere tra i server con un modello come `mcp__.*__write.*`. Consultate [Match MCP tools](/it/hooks#match-mcp-tools) nel riferimento per l'elenco completo degli esempi.709 Gli strumenti MCP utilizzano una convenzione di denominazione diversa rispetto agli strumenti integrati: `mcp__<server>__<tool>`, dove `<server>` è il nome del server MCP e `<tool>` è lo strumento che fornisce. Ad esempio, `mcp__github__search_repositories` o `mcp__filesystem__read_file`. Gli strumenti da un [server MCP fornito da plugin](/docs/it/mcp#plugin-provided-mcp-servers) utilizzano un segmento di server con ambito invece, come `mcp__plugin_my-plugin_db__query`. Utilizzate un matcher regex per indirizzare tutti gli strumenti da un server specifico, o corrispondere tra i server con un modello come `mcp__.*__write.*`. Consultate [Match MCP tools](/docs/it/hooks#match-mcp-tools) nel riferimento per l'elenco completo degli esempi.

710 710 

711 Il comando sottostante estrae il nome dello strumento dall'input JSON dell'hook con `jq` e lo scrive su stderr. Scrivere su stderr mantiene stdout pulito per l'output JSON e invia il messaggio al [debug log](/it/hooks#debug-hooks):711 Il comando sottostante estrae il nome dello strumento dall'input JSON dell'hook con `jq` e lo scrive su stderr. Scrivere su stderr mantiene stdout pulito per l'output JSON e invia il messaggio al [debug log](/docs/it/hooks#debug-hooks):

712 712 

713 ```json theme={null}713 ```json theme={null}

714 {714 {


752 </Tab>752 </Tab>

753</Tabs>753</Tabs>

754 754 

755Per la sintassi completa del matcher, consultate il [Hooks reference](/it/hooks#configuration).755Per la sintassi completa del matcher, consultate il [Hooks reference](/docs/it/hooks#configuration).

756 756 

757<h4 id="filter-by-tool-name-and-arguments-with-the-if-field">757<h4 id="filter-by-tool-name-and-arguments-with-the-if-field">

758 Filtrare per nome dello strumento e argomenti con il campo `if`758 Filtrare per nome dello strumento e argomenti con il campo `if`

759</h4>759</h4>

760 760 

761Il campo `if` utilizza la [permission rule syntax](/it/permissions) per filtrare gli hooks per nome dello strumento e argomenti insieme, in modo che il processo dell'hook si generi solo quando la chiamata dello strumento corrisponde. Questo va oltre il `matcher`, che filtra a livello di gruppo per nome dello strumento solo.761Il campo `if` utilizza la [permission rule syntax](/docs/it/permissions) per filtrare gli hooks per nome dello strumento e argomenti insieme, in modo che il processo dell'hook si generi solo quando la chiamata dello strumento corrisponde. Questo va oltre il `matcher`, che filtra a livello di gruppo per nome dello strumento solo.

762 762 

763Ad esempio, questa configurazione esegue un hook solo quando Claude utilizza comandi `git` piuttosto che tutti i comandi Bash:763Ad esempio, questa configurazione esegue un hook solo quando Claude utilizza comandi `git` piuttosto che tutti i comandi Bash:

764 764 


791| `Bash(git *)` | `echo $(date)` | no | nessun sottocomando corrisponde a `git *` |791| `Bash(git *)` | `echo $(date)` | no | nessun sottocomando corrisponde a `git *` |

792| `Bash(git push *)` | `echo $(date)` | sì | i modelli che specificano più del nome del comando eseguono l'hook comunque su `$()`, backtick, o `$VAR` |792| `Bash(git push *)` | `echo $(date)` | sì | i modelli che specificano più del nome del comando eseguono l'hook comunque su `$()`, backtick, o `$VAR` |

793 793 

794Il filtro fallisce anche in modo aperto, eseguendo il vostro hook indipendentemente dal modello, quando il comando Bash non può essere analizzato. Poiché il filtro è best-effort, utilizzate il [sistema di autorizzazione](/it/permissions) piuttosto che un hook per applicare un hard allow o deny.794Il filtro fallisce anche in modo aperto, eseguendo il vostro hook indipendentemente dal modello, quando il comando Bash non può essere analizzato. Poiché il filtro è best-effort, utilizzate il [sistema di autorizzazione](/docs/it/permissions) piuttosto che un hook per applicare un hard allow o deny.

795 795 

796Il campo `if` accetta gli stessi modelli delle regole di autorizzazione: `"Bash(git *)"`, `"Edit(*.ts)"`, e così via. Per corrispondere a più nomi di strumenti, utilizzate handler separati ognuno con il suo valore `if`, o corrispondere a livello di `matcher` dove l'alternazione con pipe è supportata.796Il campo `if` accetta gli stessi modelli delle regole di autorizzazione: `"Bash(git *)"`, `"Edit(*.ts)"`, e così via. Per corrispondere a più nomi di strumenti, utilizzate handler separati ognuno con il suo valore `if`, o corrispondere a livello di `matcher` dove l'alternazione con pipe è supportata.

797 797 


809| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repo |809| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repo |

810| `.claude/settings.local.json` | Singolo progetto | No, gitignored quando Claude Code lo crea |810| `.claude/settings.local.json` | Singolo progetto | No, gitignored quando Claude Code lo crea |

811| Impostazioni di policy gestite | Organizzazione intera | Sì, controllato dall'amministratore |811| Impostazioni di policy gestite | Organizzazione intera | Sì, controllato dall'amministratore |

812| [Plugin](/it/plugins) `hooks/hooks.json` | Quando il plugin è abilitato | Sì, raggruppato con il plugin |812| [Plugin](/docs/it/plugins) `hooks/hooks.json` | Quando il plugin è abilitato | Sì, raggruppato con il plugin |

813| [Skill](/it/skills) o [agente](/it/sub-agents) frontmatter | Mentre la skill o l'agente è attivo | Sì, definito nel file del componente |813| [Skill](/docs/it/skills) o [agente](/docs/it/sub-agents) frontmatter | Mentre la skill o l'agente è attivo | Sì, definito nel file del componente |

814 814 

815Eseguite [`/hooks`](/it/hooks#the-%2Fhooks-menu) in Claude Code per sfogliare tutti gli hooks configurati raggruppati per evento.815Eseguite [`/hooks`](/docs/it/hooks#the-%2Fhooks-menu) in Claude Code per sfogliare tutti gli hooks configurati raggruppati per evento.

816 816 

817Per disabilitare gli hooks, impostate `"disableAllHooks": true` nel vostro file di impostazioni. Gli hooks configurati nelle impostazioni gestite si eseguono comunque a meno che `disableAllHooks` non sia impostato anche lì.817Per disabilitare gli hooks, impostate `"disableAllHooks": true` nel vostro file di impostazioni. Gli hooks configurati nelle impostazioni gestite si eseguono comunque a meno che `disableAllHooks` non sia impostato anche lì.

818 818 


851}851}

852```852```

853 853 

854Per le opzioni di configurazione complete, consultate [Hooks basati su prompt](/it/hooks#prompt-based-hooks) nel riferimento.854Per le opzioni di configurazione complete, consultate [Hooks basati su prompt](/docs/it/hooks#prompt-based-hooks) nel riferimento.

855 855 

856<h2 id="agent-based-hooks">856<h2 id="agent-based-hooks">

857 Hooks basati su agenti857 Hooks basati su agenti

858</h2>858</h2>

859 859 

860<Warning>860<Warning>

861 Gli agent hooks sono sperimentali. Il comportamento e la configurazione potrebbero cambiare nelle versioni future. Per i flussi di lavoro di produzione, preferite gli [hooks di comando](/it/hooks#command-hook-fields).861 Gli agent hooks sono sperimentali. Il comportamento e la configurazione potrebbero cambiare nelle versioni future. Per i flussi di lavoro di produzione, preferite gli [hooks di comando](/docs/it/hooks#command-hook-fields).

862</Warning>862</Warning>

863 863 

864Quando la verifica richiede l'ispezione di file o l'esecuzione di comandi, utilizzate gli hook `type: "agent"`. A differenza degli hook di prompt che effettuano una singola chiamata LLM, gli hook di agenti generano un subagent che può leggere file, cercare codice e utilizzare altri strumenti per verificare le condizioni prima di restituire una decisione.864Quando la verifica richiede l'ispezione di file o l'esecuzione di comandi, utilizzate gli hook `type: "agent"`. A differenza degli hook di prompt che effettuano una singola chiamata LLM, gli hook di agenti generano un subagent che può leggere file, cercare codice e utilizzare altri strumenti per verificare le condizioni prima di restituire una decisione.


887 887 

888Utilizzate gli hook di prompt quando i dati di input dell'hook da soli sono sufficienti per prendere una decisione. Utilizzate gli hook di agenti quando avete bisogno di verificare qualcosa rispetto allo stato effettivo della base di codice.888Utilizzate gli hook di prompt quando i dati di input dell'hook da soli sono sufficienti per prendere una decisione. Utilizzate gli hook di agenti quando avete bisogno di verificare qualcosa rispetto allo stato effettivo della base di codice.

889 889 

890Per le opzioni di configurazione complete, consultate [Hooks basati su agenti](/it/hooks#agent-based-hooks) nel riferimento.890Per le opzioni di configurazione complete, consultate [Hooks basati su agenti](/docs/it/hooks#agent-based-hooks) nel riferimento.

891 891 

892<h2 id="http-hooks">892<h2 id="http-hooks">

893 HTTP hooks893 HTTP hooks


920}920}

921```921```

922 922 

923L'endpoint dovrebbe restituire un corpo di risposta JSON utilizzando lo stesso [formato di output](/it/hooks#json-output) degli hook di comando. Per bloccare una chiamata di strumento, restituite una risposta 2xx con i campi `hookSpecificOutput` appropriati. I codici di stato HTTP da soli non possono bloccare le azioni.923L'endpoint dovrebbe restituire un corpo di risposta JSON utilizzando lo stesso [formato di output](/docs/it/hooks#json-output) degli hook di comando. Per bloccare una chiamata di strumento, restituite una risposta 2xx con i campi `hookSpecificOutput` appropriati. I codici di stato HTTP da soli non possono bloccare le azioni.

924 924 

925I valori dell'intestazione supportano l'interpolazione delle variabili di ambiente utilizzando la sintassi `$VAR_NAME` o `${VAR_NAME}`. Solo le variabili elencate nell'array `allowedEnvVars` vengono risolte; tutti gli altri riferimenti `$VAR` rimangono vuoti.925I valori dell'intestazione supportano l'interpolazione delle variabili di ambiente utilizzando la sintassi `$VAR_NAME` o `${VAR_NAME}`. Solo le variabili elencate nell'array `allowedEnvVars` vengono risolte; tutti gli altri riferimenti `$VAR` rimangono vuoti.

926 926 

927Per le opzioni di configurazione complete e la gestione delle risposte, consultate [HTTP hooks](/it/hooks#http-hook-fields) nel riferimento.927Per le opzioni di configurazione complete e la gestione delle risposte, consultate [HTTP hooks](/docs/it/hooks#http-hook-fields) nel riferimento.

928 928 

929<h2 id="limitations-and-troubleshooting">929<h2 id="limitations-and-troubleshooting">

930 Limitazioni e risoluzione dei problemi930 Limitazioni e risoluzione dei problemi


942 * `prompt`: 30 secondi.942 * `prompt`: 30 secondi.

943 * `agent`: 60 secondi.943 * `agent`: 60 secondi.

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

945* Gli hook `PermissionRequest` non si attivano in [modalità non interattiva](/it/headless) con il flag `-p`. Utilizzate gli hook `PreToolUse` per le decisioni di autorizzazione automatizzate.945* Gli hook `PermissionRequest` non si attivano in [modalità non interattiva](/docs/it/headless) con il flag `-p`. Utilizzate gli hook `PreToolUse` per le decisioni di autorizzazione automatizzate.

946* Gli hook `Stop` si attivano ogni volta che Claude finisce di rispondere, non solo al completamento dell'attività. Non si attivano su interruzioni dell'utente. Gli errori API attivano [StopFailure](/it/hooks#stopfailure) invece.946* Gli hook `Stop` si attivano ogni volta che Claude finisce di rispondere, non solo al completamento dell'attività. Non si attivano su interruzioni dell'utente. Gli errori API attivano [StopFailure](/docs/it/hooks#stopfailure) invece.

947* Quando più hook `PreToolUse` restituiscono [`updatedInput`](/it/hooks#pretooluse) per riscrivere gli argomenti di uno strumento, l'ultimo a terminare vince. Poiché gli hook si eseguono in parallelo, l'ordine è non deterministico. Evitate di avere più di un hook che modifica l'input dello stesso strumento.947* Quando più hook `PreToolUse` restituiscono [`updatedInput`](/docs/it/hooks#pretooluse) per riscrivere gli argomenti di uno strumento, l'ultimo a terminare vince. Poiché gli hook si eseguono in parallelo, l'ordine è non deterministico. Evitate di avere più di un hook che modifica l'input dello stesso strumento.

948 948 

949<h3 id="hooks-and-permission-modes">949<h3 id="hooks-and-permission-modes">

950 Hooks e modalità di autorizzazione950 Hooks e modalità di autorizzazione


952 952 

953Gli hook `PreToolUse` si attivano prima di qualsiasi controllo della modalità di autorizzazione. Un hook che restituisce `permissionDecision: "deny"` blocca lo strumento anche in modalità `bypassPermissions` o con `--dangerously-skip-permissions`. Questo vi permette di applicare una policy che gli utenti non possono aggirare cambiando la loro modalità di autorizzazione.953Gli hook `PreToolUse` si attivano prima di qualsiasi controllo della modalità di autorizzazione. Un hook che restituisce `permissionDecision: "deny"` blocca lo strumento anche in modalità `bypassPermissions` o con `--dangerously-skip-permissions`. Questo vi permette di applicare una policy che gli utenti non possono aggirare cambiando la loro modalità di autorizzazione.

954 954 

955Il contrario non è vero: un hook che restituisce `"allow"` non aggira le regole di negazione dalle impostazioni, e non può sopprimere il prompt per gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools) o gli strumenti MCP contrassegnati [`requiresUserInteraction`](/it/mcp#require-approval-for-a-specific-tool). Gli hook possono stringere le restrizioni ma non allentarle oltre quello che le regole di autorizzazione consentono.955Il contrario non è vero: un hook che restituisce `"allow"` non aggira le regole di negazione dalle impostazioni, e non può sopprimere il prompt per gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) o gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool). Gli hook possono stringere le restrizioni ma non allentarle oltre quello che le regole di autorizzazione consentono.

956 956 

957<h3 id="hook-not-firing">957<h3 id="hook-not-firing">

958 Hook non si attiva958 Hook non si attiva


976 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh976 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

977 echo $? # Check the exit code977 echo $? # Check the exit code

978 ```978 ```

979* Se vedete "command not found", utilizzate percorsi assoluti o `${CLAUDE_PROJECT_DIR}` per fare riferimento agli script. Per evitare completamente le virgolette della shell, aggiungete `"args": []` per passare alla [forma exec](/it/hooks#exec-form-and-shell-form), che genera lo script direttamente senza una shell979* Se vedete "command not found", utilizzate percorsi assoluti o `${CLAUDE_PROJECT_DIR}` per fare riferimento agli script. Per evitare completamente le virgolette della shell, aggiungete `"args": []` per passare alla [forma exec](/docs/it/hooks#exec-form-and-shell-form), che genera lo script direttamente senza una shell

980* Se vedete "jq: command not found", installate `jq` o utilizzate Python/Node.js per l'analisi JSON980* Se vedete "jq: command not found", installate `jq` o utilizzate Python/Node.js per l'analisi JSON

981* Se lo script non si esegue affatto, rendetelo eseguibile: `chmod +x ./my-hook.sh`981* Se lo script non si esegue affatto, rendetelo eseguibile: `chmod +x ./my-hook.sh`

982 982 


1007# ... rest of your hook logic1007# ... rest of your hook logic

1008```1008```

1009 1009 

1010Se il vostro hook ha legittimamente bisogno di più di otto iterazioni per convergere, aumentate il limite con [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/it/env-vars).1010Se il vostro hook ha legittimamente bisogno di più di otto iterazioni per convergere, aumentate il limite con [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/it/env-vars).

1011 1011 

1012<h3 id="json-validation-failed">1012<h3 id="json-validation-failed">

1013 Convalida JSON non riuscita1013 Convalida JSON non riuscita


1045 Ulteriori informazioni1045 Ulteriori informazioni

1046</h2>1046</h2>

1047 1047 

1048* [Riferimento Hooks](/it/hooks): schemi di eventi completi, formato di output JSON, hooks asincroni e hooks di strumenti MCP1048* [Riferimento Hooks](/docs/it/hooks): schemi di eventi completi, formato di output JSON, hooks asincroni e hooks di strumenti MCP

1049* [Considerazioni sulla sicurezza](/it/hooks#security-considerations): esaminate prima di distribuire gli hooks in ambienti condivisi o di produzione1049* [Considerazioni sulla sicurezza](/docs/it/hooks#security-considerations): esaminate prima di distribuire gli hooks in ambienti condivisi o di produzione

1050* [Esempio di validatore di comandi Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py): implementazione di riferimento completa1050* [Esempio di validatore di comandi Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py): implementazione di riferimento completa

Details

27 27 

28In ogni modalità tranne `bypassPermissions`, le scritture su [percorsi protetti](#protected-paths) non vengono mai auto-approvate, proteggendo lo stato del repository e la configurazione di Claude da corruzione accidentale.28In ogni modalità tranne `bypassPermissions`, le scritture su [percorsi protetti](#protected-paths) non vengono mai auto-approvate, proteggendo lo stato del repository e la configurazione di Claude da corruzione accidentale.

29 29 

30Le modalità impostano la linea di base. Sovrapponi [regole di autorizzazione](/it/permissions#manage-permissions) per pre-approvare o bloccare strumenti specifici. Le regole di negazione e le regole di richiesta esplicita si applicano in ogni modalità, inclusa `bypassPermissions`. Le regole allow non hanno effetto in quella modalità perché tutto il resto è già approvato.30Le modalità impostano la linea di base. Sovrapponi [regole di autorizzazione](/it/permissions#manage-permissions) su top per pre-approvare o bloccare strumenti specifici. Le regole di negazione, le regole di richiesta esplicita, l'[impostazione `ask` dell'organizzazione su strumenti connector](/it/mcp#organization-controls-on-connector-tools) e il marcatore [`requiresUserInteraction`](/it/mcp#require-approval-for-a-specific-tool) si applicano in ogni modalità, inclusa `bypassPermissions`. Le regole allow non hanno effetto in quella modalità perché tutto il resto è già approvato.

31 31 

32<h2 id="switch-permission-modes">32<h2 id="switch-permission-modes">

33 Cambiare le modalità di autorizzazione33 Cambiare le modalità di autorizzazione


137 137 

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

139 139 

140Oltre alle modifiche ai file, la modalità `acceptEdits` auto-approva i comuni comandi Bash del filesystem: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` e `sed`. Questi comandi vengono anche auto-approvati quando preceduti da variabili di ambiente sicure come `LANG=C` o `NO_COLOR=1`, o da wrapper di processi come `timeout`, `nice` o `nohup`. Come per le modifiche ai file, l'auto-approvazione si applica solo ai percorsi all'interno della vostra directory di lavoro o `additionalDirectories`. I percorsi al di fuori di questo ambito, le scritture su [percorsi protetti](#protected-paths) e tutti gli altri comandi Bash richiedono comunque conferma.140Oltre alle modifiche ai file, la modalità `acceptEdits` auto-approva i comuni comandi Bash del filesystem: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` e `sed`. Questi comandi vengono anche auto-approvati quando preceduti da variabili di ambiente sicure come `LANG=C` o `NO_COLOR=1`, o da wrapper di processi come `timeout`, `nice` o `nohup`. Come per le modifiche ai file, l'auto-approvazione si applica solo ai percorsi all'interno della vostra directory di lavoro o `additionalDirectories`. I percorsi al di fuori di questo ambito, le scritture su [percorsi protetti](#protected-paths) e tutti gli altri comandi Bash ad eccezione del [set di sola lettura integrato](/it/permissions#read-only-commands) richiedono comunque conferma.

141 141 

142Quando lo [strumento PowerShell](/it/tools-reference#powershell-tool) è abilitato, la modalità `acceptEdits` auto-approva anche `Set-Content`, `Add-Content`, `Clear-Content` e `Remove-Item` su percorsi nell'ambito, insieme ai loro alias comuni. Si applicano le stesse regole di ambito e percorsi protetti.142Quando lo [strumento PowerShell](/it/tools-reference#powershell-tool) è abilitato, la modalità `acceptEdits` auto-approva anche `Set-Content`, `Add-Content`, `Clear-Content` e `Remove-Item` su percorsi nell'ambito, insieme ai loro alias comuni. Si applicano le stesse regole di ambito e percorsi protetti.

143 143 


201 201 

202La modalità auto consente a Claude di eseguire senza prompt di autorizzazione di routine. Un modello classificatore separato esamina le azioni prima che vengono eseguite, bloccando qualsiasi cosa che vada oltre la tua richiesta, che prenda di mira un'infrastruttura non riconosciuta, o che sembri guidata da contenuti ostili che Claude ha letto. Le [regole di richiesta](/it/permissions#manage-permissions) esplicite forzano comunque un prompt.202La modalità auto consente a Claude di eseguire senza prompt di autorizzazione di routine. Un modello classificatore separato esamina le azioni prima che vengono eseguite, bloccando qualsiasi cosa che vada oltre la tua richiesta, che prenda di mira un'infrastruttura non riconosciuta, o che sembri guidata da contenuti ostili che Claude ha letto. Le [regole di richiesta](/it/permissions#manage-permissions) esplicite forzano comunque un prompt.

203 203 

204Le rimozioni che prendono di mira la radice del filesystem o la directory home, come `rm -rf /` e `rm -rf ~`, richiedono l'approvazione invece di andare al classificatore. {/* min-version: 2.1.208 */}Questo prompt si attiva anche quando il comando contiene sostituzione di comando con `$(...)` o backtick, o sostituzione di processo con `<(...)`, indipendentemente dal fatto che la rimozione si trovi dentro la sostituzione, come in `echo "$(rm -rf ~)"`, o altrove nello stesso comando. Prima di v2.1.208, i comandi contenenti quelle forme andavano al classificatore invece di richiedere un prompt.

205 

204La modalità auto incoraggia anche Claude a continuare a lavorare senza fermarsi per domande di chiarimento, anche se Claude chiede comunque quando il tuo prompt o un skill lo richiedono esplicitamente. Per un comportamento più autonomo mantenendo i prompt di autorizzazione, imposta invece lo [stile di output proattivo](/it/output-styles).206La modalità auto incoraggia anche Claude a continuare a lavorare senza fermarsi per domande di chiarimento, anche se Claude chiede comunque quando il tuo prompt o un skill lo richiedono esplicitamente. Per un comportamento più autonomo mantenendo i prompt di autorizzazione, imposta invece lo [stile di output proattivo](/it/output-styles).

205 207 

206<Warning>208<Warning>


301* Lettura di `.env` e invio di credenziali al loro API corrispondente303* Lettura di `.env` e invio di credenziali al loro API corrispondente

302* Richieste HTTP di sola lettura304* Richieste HTTP di sola lettura

303* Push al ramo su cui hai iniziato o uno che Claude ha creato305* Push al ramo su cui hai iniziato o uno che Claude ha creato

306* {/* min-version: 2.1.203 */}Push di routine al ramo predefinito del repository. Prima di v2.1.203, qualsiasi push diretto al ramo predefinito era bloccato

304 307 

305Claude Code v2.1.195 e successivi consentono anche questi per impostazione predefinita:308Claude Code v2.1.195 e successivi consentono anche questi per impostazione predefinita:

306 309 


319 322 

320Esegui `claude auto-mode defaults` per vedere gli elenchi di regole completi. Se le azioni di routine vengono bloccate, un amministratore può aggiungere repo, bucket e servizi attendibili tramite l'impostazione `autoMode.environment`: vedi [Configura modalità auto](/it/auto-mode-config).323Esegui `claude auto-mode defaults` per vedere gli elenchi di regole completi. Se le azioni di routine vengono bloccate, un amministratore può aggiungere repo, bucket e servizi attendibili tramite l'impostazione `autoMode.environment`: vedi [Configura modalità auto](/it/auto-mode-config).

321 324 

325Pushing al tuo ramo di lavoro, facendo un push di routine al ramo predefinito del repository, e creando una pull request che corrisponde alla tua richiesta vengono tutti eseguiti senza un prompt. Il classificatore blocca un push solo quando comporta rischio, come un force push o contenuto che aggira una revisione che hai impostato. Per richiedere un checkpoint umano prima di queste azioni mentre rimani in modalità auto, aggiungi regole `permissions.ask`: vedi [Confini comuni](/it/auto-mode-config#common-boundaries).

326 

322<h3 id="boundaries-you-state-in-conversation">327<h3 id="boundaries-you-state-in-conversation">

323 Confini che dichiari nella conversazione328 Confini che dichiari nella conversazione

324</h3>329</h3>


343 <Accordion title="Come il classificatore valuta le azioni">348 <Accordion title="Come il classificatore valuta le azioni">

344 Ogni azione passa attraverso un ordine di decisione fisso. Il primo passaggio corrispondente vince:349 Ogni azione passa attraverso un ordine di decisione fisso. Il primo passaggio corrispondente vince:

345 350 

346 1. Le azioni che corrispondono alle tue [regole allow o deny](/it/permissions#manage-permissions) si risolvono immediatamente, tranne le scritture su [percorsi protetti](#protected-paths), che vengono instradate al classificatore anche quando una regola allow corrisponde351 1. Le azioni che corrispondono alle tue [regole allow, ask, o deny](/it/permissions#manage-permissions) si risolvono immediatamente. Le scritture su [percorsi protetti](#protected-paths) vengono instradate al classificatore anche quando una regola allow corrisponde. Gli strumenti connector [che la tua organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools) e gli strumenti MCP contrassegnati [`requiresUserInteraction`](/it/mcp#require-approval-for-a-specific-tool) ti chiedono direttamente anche quando una regola allow corrisponde. Le regole ask con ambito di contenuto ricadono in un prompt di autorizzazione

347 2. Le azioni di sola lettura e le modifiche di file nella tua directory di lavoro vengono auto-approvate, tranne le scritture su [percorsi protetti](#protected-paths)352 2. Le azioni di sola lettura e le modifiche di file nella tua directory di lavoro vengono auto-approvate, tranne le scritture su [percorsi protetti](#protected-paths)

348 3. Tutto il resto va al classificatore. {/* min-version: 2.1.199 */}A partire da v2.1.199, uno strumento MCP contrassegnato con [`_meta["anthropic/requiresUserInteraction"]`](/it/mcp#require-approval-for-a-specific-tool) salta il classificatore e ti chiede direttamente, quindi un passaggio di consenso non viene mai auto-approvato per conto dell'autore dello strumento353 3. Tutto il resto va al classificatore. Uno strumento connector [che la tua organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools) salta il classificatore e ti chiede direttamente, quindi un'approvazione richiesta dall'organizzazione non viene mai auto-approvata. {/* min-version: 2.1.199 */}A partire da v2.1.199, uno strumento MCP contrassegnato con [`_meta["anthropic/requiresUserInteraction"]`](/it/mcp#require-approval-for-a-specific-tool) salta il classificatore e ti chiede direttamente, quindi un passaggio di consenso non viene mai auto-approvato per conto dell'autore dello strumento

349 4. Se il classificatore blocca, Claude riceve il motivo e prova un'alternativa354 4. Se il classificatore blocca, Claude riceve il motivo e prova un'alternativa

350 355 

351 Entrando in modalità auto, le regole allow ampie che concedono l'esecuzione arbitraria di codice vengono eliminate:356 Entrando in modalità auto, le regole allow ampie che concedono l'esecuzione arbitraria di codice vengono eliminate:


379 Consenti solo strumenti pre-approvati con la modalità dontAsk384 Consenti solo strumenti pre-approvati con la modalità dontAsk

380</h2>385</h2>

381 386 

382La modalità `dontAsk` nega automaticamente ogni chiamata di strumento che altrimenti richiederebbe una richiesta. La barra di stato mostra `⏵⏵ don't ask on` mentre questa modalità è attiva. Solo le azioni che corrispondono alle tue regole `permissions.allow` e ai [comandi Bash di sola lettura](/it/permissions#read-only-commands) possono essere eseguite; le regole [`ask`](/it/permissions#manage-permissions) esplicite vengono negate piuttosto che richiedere una conferma. {/* min-version: 2.1.199 */}A partire dalla v2.1.199, uno strumento MCP contrassegnato con [`_meta["anthropic/requiresUserInteraction"]`](/it/mcp#require-approval-for-a-specific-tool) viene anche negato in questa modalità anche quando una regola di autorizzazione corrisponde, perché la sua scheda di approvazione necessita di una risposta che questa modalità non raccoglie mai. Questo rende la modalità completamente non interattiva per pipeline CI o ambienti limitati in cui pre-definisci esattamente cosa Claude può fare. Le sessioni cloud su [Claude Code on the web](/it/claude-code-on-the-web) ignorano `defaultMode: "dontAsk"`; vedi [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) per i dettagli.387Se imposti la modalità `dontAsk`, Claude Code nega automaticamente ogni chiamata di strumento che altrimenti richiederebbe una richiesta. Claude esegue solo le azioni che corrispondono alle tue regole `permissions.allow`, ai [comandi Bash di sola lettura](/it/permissions#read-only-commands) e alle chiamate approvate da un [hook PreToolUse](/it/permissions#extend-permissions-with-hooks). Utilizza questa modalità per pipeline CI o ambienti limitati in cui pre-definisci esattamente cosa Claude può fare; la sessione non attende mai input. La barra di stato mostra `⏵⏵ don't ask on` mentre questa modalità è attiva.

388 

389Claude Code nega le chiamate che corrispondono alle tue regole [`ask`](/it/permissions#manage-permissions) esplicite piuttosto che richiedere una conferma. Nega anche lo strumento integrato `AskUserQuestion` e gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools), anche se le tue regole di autorizzazione corrispondono. {/* min-version: 2.1.199 */}Nega gli strumenti MCP contrassegnati [`_meta["anthropic/requiresUserInteraction"]`](/it/mcp#require-approval-for-a-specific-tool) allo stesso modo, perché la loro scheda di approvazione necessita di una risposta che questa modalità non raccoglie mai; questo richiede Claude Code v2.1.199 o successivo.

390 

391Le sessioni cloud su [Claude Code on the web](/it/claude-code-on-the-web) ignorano `defaultMode: "dontAsk"`; vedi [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) per i dettagli.

383 392 

384Impostalo all'avvio con il flag:393Impostalo all'avvio con il flag:

385 394 


391 Ignora tutti i controlli con la modalità bypassPermissions400 Ignora tutti i controlli con la modalità bypassPermissions

392</h2>401</h2>

393 402 

394La modalità `bypassPermissions` disabilita i prompt di autorizzazione e i controlli di sicurezza in modo che le chiamate agli strumenti vengano eseguite immediatamente. A partire dalla v2.1.126 questo include le scritture su [percorsi protetti](#protected-paths), per le quali le versioni precedenti richiedevano ancora un prompt. Le [regole ask](/it/permissions#manage-permissions) esplicite forzano comunque un prompt in questa modalità, e le rimozioni che interessano la radice del filesystem o la directory home, come `rm -rf /` e `rm -rf ~`, richiedono comunque un prompt come protezione contro gli errori del modello. {/* min-version: 2.1.199 */}A partire dalla v2.1.199, gli strumenti MCP contrassegnati con [`_meta["anthropic/requiresUserInteraction"]`](/it/mcp#require-approval-for-a-specific-tool) richiedono comunque un prompt. Utilizzare questa modalità solo in ambienti isolati come container, VM o dev container senza accesso a Internet, dove Claude Code non può danneggiare il sistema host.403La modalità `bypassPermissions` disabilita i prompt di autorizzazione e i controlli di sicurezza in modo che le chiamate agli strumenti vengano eseguite immediatamente, incluse le scritture su [percorsi protetti](#protected-paths). Prima della v2.1.126, le scritture su percorsi protetti richiedevano comunque un prompt in questa modalità.

404 

405Le [regole ask](/it/permissions#manage-permissions) esplicite e gli strumenti connector [che la vostra organizzazione ha impostato su `ask`](/it/mcp#organization-controls-on-connector-tools) forzano comunque un prompt in questa modalità. {/* min-version: 2.1.199 */}Gli strumenti MCP contrassegnati con [`_meta["anthropic/requiresUserInteraction"]`](/it/mcp#require-approval-for-a-specific-tool) richiedono comunque un prompt; questo richiede Claude Code v2.1.199 o successivo.

406 

407Le rimozioni che interessano la radice del filesystem o la directory home, come `rm -rf /` e `rm -rf ~`, richiedono comunque un prompt come protezione contro gli errori del modello. {/* min-version: 2.1.208 */}La protezione si attiva anche quando il comando contiene sostituzione di comando con `$(...)` o backtick, o sostituzione di processo con `<(...)`, indipendentemente dal fatto che la rimozione si trovi all'interno della sostituzione, come in `echo "$(rm -rf ~)"`, o altrove nello stesso comando. La forma semplice, digitata come comando autonomo, ha richiesto un prompt in questa modalità sin dall'introduzione della protezione; prima della v2.1.208, i comandi contenenti quelle forme non richiedevano un prompt.

408 

409<Warning>

410 Utilizzare questa modalità solo in ambienti isolati come container, VM o dev container senza accesso a Internet, dove Claude Code non può danneggiare il sistema host.

411</Warning>

395 412 

396Non è possibile accedere a `bypassPermissions` da una sessione avviata senza uno dei flag di abilitazione; riavviare con uno di essi per abilitarla:413Non è possibile accedere a `bypassPermissions` da una sessione avviata senza uno dei flag di abilitazione; riavviare con uno di essi per abilitarla:

397 414 

Details

7> Riferimento tecnico completo per il sistema di plugin di Claude Code, inclusi schemi, comandi CLI e specifiche dei componenti.7> Riferimento tecnico completo per il sistema di plugin di Claude Code, inclusi schemi, comandi CLI e specifiche dei componenti.

8 8 

9<Tip>9<Tip>

10 Stai cercando di installare plugin? Vedi [Scopri e installa plugin](/it/discover-plugins). Per creare plugin, vedi [Plugin](/it/plugins). Per distribuire plugin, vedi [Marketplace dei plugin](/it/plugin-marketplaces).10 Stai cercando di installare plugin? Vedi [Scopri e installa plugin](/docs/it/discover-plugins). Per creare plugin, vedi [Plugin](/docs/it/plugins). Per distribuire plugin, vedi [Marketplace dei plugin](/docs/it/plugin-marketplaces).

11</Tip>11</Tip>

12 12 

13Questo riferimento fornisce specifiche tecniche complete per il sistema di plugin di Claude Code, inclusi schemi dei componenti, comandi CLI e strumenti di sviluppo.13Questo riferimento fornisce specifiche tecniche complete per il sistema di plugin di Claude Code, inclusi schemi dei componenti, comandi CLI e strumenti di sviluppo.


48 48 

49Se un plugin non ha una directory `skills/` e nessun campo manifest `skills`, un `SKILL.md` nella radice del plugin viene caricato come una singola skill. Impostare il campo frontmatter `name` per controllare il nome di invocazione della skill. Senza di esso, Claude Code ricade al nome della directory di installazione, che per i plugin installati dal marketplace è una stringa di versione che cambia ad ogni aggiornamento. Per i plugin che forniscono più di una skill, utilizzare il layout della directory `skills/` mostrato sopra.49Se un plugin non ha una directory `skills/` e nessun campo manifest `skills`, un `SKILL.md` nella radice del plugin viene caricato come una singola skill. Impostare il campo frontmatter `name` per controllare il nome di invocazione della skill. Senza di esso, Claude Code ricade al nome della directory di installazione, che per i plugin installati dal marketplace è una stringa di versione che cambia ad ogni aggiornamento. Per i plugin che forniscono più di una skill, utilizzare il layout della directory `skills/` mostrato sopra.

50 50 

51Per i dettagli completi, vedi [Skills](/it/skills).51Per i dettagli completi, vedi [Skills](/docs/it/skills).

52 52 

53<h3 id="agents">53<h3 id="agents">

54 Agents54 Agents


79 79 

80**Punti di integrazione**:80**Punti di integrazione**:

81 81 

82* Gli agents appaiono nella typeahead [@-mention](/it/sub-agents#invoke-subagents-explicitly) con il loro nome con scope, come `my-plugin:code-reviewer`, una volta che il plugin è abilitato82* Gli agents appaiono nella typeahead [@-mention](/docs/it/sub-agents#invoke-subagents-explicitly) con il loro nome con scope, come `my-plugin:code-reviewer`, una volta che il plugin è abilitato

83* Claude può invocare gli agents automaticamente in base al contesto dell'attività83* Claude può invocare gli agents automaticamente in base al contesto dell'attività

84* Gli agents possono essere invocati manualmente dagli utenti84* Gli agents possono essere invocati manualmente dagli utenti

85* I plugin agents funzionano insieme agli agents Claude integrati85* I plugin agents funzionano insieme agli agents Claude integrati

86 86 

87Per i dettagli completi, vedi [Subagents](/it/sub-agents).87Per i dettagli completi, vedi [Subagents](/docs/it/sub-agents).

88 88 

89<h3 id="hooks">89<h3 id="hooks">

90 Hooks90 Hooks


116}116}

117```117```

118 118 

119I plugin hooks rispondono agli stessi eventi del ciclo di vita degli [hooks definiti dall'utente](/it/hooks):119I plugin hooks rispondono agli stessi eventi del ciclo di vita degli [hooks definiti dall'utente](/docs/it/hooks):

120 120 

121| Event | When it fires |121| Event | When it fires |

122| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |122| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |


138| `TaskCompleted` | When a task is being marked as completed |138| `TaskCompleted` | When a task is being marked as completed |

139| `Stop` | When Claude finishes responding |139| `Stop` | When Claude finishes responding |

140| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |140| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

141| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |141| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |

142| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |142| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

143| `ConfigChange` | When a configuration file changes during a session |143| `ConfigChange` | When a configuration file changes during a session |

144| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |144| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

145| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |145| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

146| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |146| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |

147| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |147| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |

148| `PreCompact` | Before context compaction |148| `PreCompact` | Before context compaction |

149| `PostCompact` | After context compaction completes |149| `PostCompact` | After context compaction completes |

150| `Elicitation` | When an MCP server requests user input during a tool call |150| `Elicitation` | When an MCP server requests user input during a tool call |


155 155 

156* `command`: esegui comandi shell o script156* `command`: esegui comandi shell o script

157* `http`: invia l'evento JSON come richiesta POST a un URL157* `http`: invia l'evento JSON come richiesta POST a un URL

158* `mcp_tool`: chiama uno strumento su un server [MCP](/it/mcp) configurato158* `mcp_tool`: chiama uno strumento su un server [MCP](/docs/it/mcp) configurato

159* `prompt`: valuta un prompt con un LLM (usa il placeholder `$ARGUMENTS` per il contesto)159* `prompt`: valuta un prompt con un LLM (usa il placeholder `$ARGUMENTS` per il contesto)

160* `agent`: esegui un verificatore agentico con strumenti per attività di verifica complesse160* `agent`: esegui un verificatore agentico con strumenti per attività di verifica complesse

161 161 

162Gli hook che puntano al [server MCP raggruppato](#mcp-servers) del plugin stesso devono utilizzare i suoi nomi con scope. I matcher di strumenti e i campi `if` prendono il nome dello strumento con scope `mcp__plugin_<plugin-name>_<server-name>__<tool>`, e il campo `server` di un hook `mcp_tool` prende `plugin:<plugin-name>:<server-name>`. Un matcher scritto contro la chiave del server nuda non si attiva mai. Vedi [Match MCP tools](/it/hooks#match-mcp-tools) e [Plugin-provided MCP servers](/it/mcp#plugin-provided-mcp-servers).162Gli hook che puntano al [server MCP raggruppato](#mcp-servers) del plugin stesso devono utilizzare i suoi nomi con scope. I matcher di strumenti e i campi `if` prendono il nome dello strumento con scope `mcp__plugin_<plugin-name>_<server-name>__<tool>`, e il campo `server` di un hook `mcp_tool` prende `plugin:<plugin-name>:<server-name>`. Un matcher scritto contro la chiave del server nuda non si attiva mai. Vedi [Match MCP tools](/docs/it/hooks#match-mcp-tools) e [Plugin-provided MCP servers](/docs/it/mcp#plugin-provided-mcp-servers).

163 163 

164<h3 id="mcp-servers">164<h3 id="mcp-servers">

165 MCP servers165 MCP servers


300 300 

301I plugin possono dichiarare monitor in background che Claude Code avvia automaticamente quando il plugin è attivo. Ogni monitor esegue un comando shell per la durata della sessione e fornisce ogni riga stdout a Claude come notifica, in modo che Claude possa reagire alle voci di log, ai cambiamenti di stato o agli eventi sottoposti a polling senza essere chiesto di avviare il watch stesso.301I plugin possono dichiarare monitor in background che Claude Code avvia automaticamente quando il plugin è attivo. Ogni monitor esegue un comando shell per la durata della sessione e fornisce ogni riga stdout a Claude come notifica, in modo che Claude possa reagire alle voci di log, ai cambiamenti di stato o agli eventi sottoposti a polling senza essere chiesto di avviare il watch stesso.

302 302 

303I monitor dei plugin utilizzano lo stesso meccanismo dello [strumento Monitor](/it/tools-reference#monitor-tool) e condividono i suoi vincoli di disponibilità. Vengono eseguiti solo in sessioni CLI interattive, vengono eseguiti senza sandbox allo stesso livello di fiducia degli [hooks](#hooks) e vengono saltati su host in cui lo strumento Monitor non è disponibile.303I monitor dei plugin utilizzano lo stesso meccanismo dello [strumento Monitor](/docs/it/tools-reference#monitor-tool) e condividono i suoi vincoli di disponibilità. Vengono eseguiti solo in sessioni CLI interattive, vengono eseguiti senza sandbox allo stesso livello di fiducia degli [hooks](#hooks) e vengono saltati su host in cui lo strumento Monitor non è disponibile.

304 304 

305**Posizione**: `monitors/monitors.json` nella radice del plugin, o inline in `plugin.json`305**Posizione**: `monitors/monitors.json` nella radice del plugin, o inline in `plugin.json`

306 306 


342 342 

343Il valore `command` supporta le [sostituzioni di percorso](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}` e `${CLAUDE_PROJECT_DIR}`, più qualsiasi `${ENV_VAR}` dall'ambiente. Prefissa il comando con `cd "${CLAUDE_PLUGIN_ROOT}" && ` se lo script ha bisogno di essere eseguito dalla directory del plugin stesso.343Il valore `command` supporta le [sostituzioni di percorso](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}` e `${CLAUDE_PROJECT_DIR}`, più qualsiasi `${ENV_VAR}` dall'ambiente. Prefissa il comando con `cd "${CLAUDE_PLUGIN_ROOT}" && ` se lo script ha bisogno di essere eseguito dalla directory del plugin stesso.

344 344 

345Un comando `command` del monitor non può fare riferimento ai valori [`${user_config.*}`](#user-configuration). Il comando viene eseguito attraverso una shell, quindi Claude Code rifiuta il monitor con un [errore](/it/errors#plugin-command-references-user-config) invece di sostituire il valore. I processi di monitor non ricevono variabili di ambiente `CLAUDE_PLUGIN_OPTION_<KEY>`, quindi fai in modo che lo script di monitor legga il valore da un file di configurazione che possiede. Prima di v2.1.207, i comandi di monitor sostituivano i valori `${user_config.*}`.345Un comando `command` del monitor non può fare riferimento ai valori [`${user_config.*}`](#user-configuration). Il comando viene eseguito attraverso una shell, quindi Claude Code rifiuta il monitor con un [errore](/docs/it/errors#plugin-command-references-user-config) invece di sostituire il valore. I processi di monitor non ricevono variabili di ambiente `CLAUDE_PLUGIN_OPTION_<KEY>`, quindi fai in modo che lo script di monitor legga il valore da un file di configurazione che possiede. Prima di v2.1.207, i comandi di monitor sostituivano i valori `${user_config.*}`.

346 346 

347La disabilitazione di un plugin a metà sessione non interrompe i monitor già in esecuzione. Si interrompono quando la sessione termina.347La disabilitazione di un plugin a metà sessione non interrompe i monitor già in esecuzione. Si interrompono quando la sessione termina.

348 348 


379| `user` | `~/.claude/settings.json` | Plugin personali disponibili in tutti i progetti (predefinito) |379| `user` | `~/.claude/settings.json` | Plugin personali disponibili in tutti i progetti (predefinito) |

380| `project` | `.claude/settings.json` | Plugin del team condivisi tramite controllo della versione |380| `project` | `.claude/settings.json` | Plugin del team condivisi tramite controllo della versione |

381| `local` | `.claude/settings.local.json` | Plugin specifici del progetto, gitignored |381| `local` | `.claude/settings.local.json` | Plugin specifici del progetto, gitignored |

382| `managed` | [Impostazioni gestite](/it/settings#settings-files) | Plugin gestiti (sola lettura, solo aggiornamento) |382| `managed` | [Impostazioni gestite](/docs/it/settings#settings-files) | Plugin gestiti (sola lettura, solo aggiornamento) |

383 383 

384I plugin utilizzano lo stesso sistema di ambito di altre configurazioni di Claude Code. Per le istruzioni di installazione e i flag di ambito, vedi [Installa plugin](/it/discover-plugins#install-plugins). Per una spiegazione completa degli ambiti, vedi [Ambiti di configurazione](/it/settings#configuration-scopes).384I plugin utilizzano lo stesso sistema di ambito di altre configurazioni di Claude Code. Per le istruzioni di installazione e i flag di ambito, vedi [Installa plugin](/docs/it/discover-plugins#install-plugins). Per una spiegazione completa degli ambiti, vedi [Ambiti di configurazione](/docs/it/settings#configuration-scopes).

385 385 

386***386***

387 387 


395 395 

396| Quello che hai | Quello che è |396| Quello che hai | Quello che è |

397| :-------------------------------------------- | :------------------------------------------------------------------------------------------ |397| :-------------------------------------------- | :------------------------------------------------------------------------------------------ |

398| `<skills-dir>/foo/SKILL.md` senza manifest | Una semplice [skill](/it/skills) denominata `foo` |398| `<skills-dir>/foo/SKILL.md` senza manifest | Una semplice [skill](/docs/it/skills) denominata `foo` |

399| `<skills-dir>/foo/.claude-plugin/plugin.json` | Un plugin `foo@skills-dir`, che può raggruppare le sue stesse skills, agents, hooks e altro |399| `<skills-dir>/foo/.claude-plugin/plugin.json` | Un plugin `foo@skills-dir`, che può raggruppare le sue stesse skills, agents, hooks e altro |

400| `<plugin>/skills/bar/SKILL.md` | Una skill `bar` confezionata all'interno di un plugin |400| `<plugin>/skills/bar/SKILL.md` | Una skill `bar` confezionata all'interno di un plugin |

401 401 


406| Directory delle skills | Ambito | Si carica |406| Directory delle skills | Ambito | Si carica |

407| :---------------------- | :-------- | :--------------------------------------------------------------------------------------------------------- |407| :---------------------- | :-------- | :--------------------------------------------------------------------------------------------------------- |

408| `~/.claude/skills/` | personale | In ogni progetto, poiché la posizione è solo tua |408| `~/.claude/skills/` | personale | In ogni progetto, poiché la posizione è solo tua |

409| `<cwd>/.claude/skills/` | progetto | Solo dopo che accetti la finestra di dialogo [trust](/it/settings) dell'area di lavoro per quella cartella |409| `<cwd>/.claude/skills/` | progetto | Solo dopo che accetti la finestra di dialogo [trust](/docs/it/settings) dell'area di lavoro per quella cartella |

410 410 

411Un plugin con ambito progetto viene controllato nel repository e raggiunge ogni collaboratore che lo clona. Poiché quel contenuto proviene dal repository piuttosto che da te, si carica solo dopo lo stesso gate di fiducia che governa `.claude/settings.json`, e i componenti che eseguono codice sono ulteriormente limitati:411Un plugin con ambito progetto viene controllato nel repository e raggiunge ogni collaboratore che lo clona. Poiché quel contenuto proviene dal repository piuttosto che da te, si carica solo dopo lo stesso gate di fiducia che governa `.claude/settings.json`, e i componenti che eseguono codice sono ulteriormente limitati:

412 412 

413* I server MCP che dichiara passano attraverso la stessa [approvazione per server](/it/mcp) di un `.mcp.json` del progetto413* I server MCP che dichiara passano attraverso la stessa [approvazione per server](/docs/it/mcp) di un `.mcp.json` del progetto

414* I server LSP si avviano solo dopo che hai fiducia nell'area di lavoro414* I server LSP si avviano solo dopo che hai fiducia nell'area di lavoro

415* I [monitor in background](#monitors) non si caricano415* I [monitor in background](#monitors) non si caricano

416 416 

417I plugin con ambito personale non hanno nessuna di queste restrizioni.417I plugin con ambito personale non hanno nessuna di queste restrizioni.

418 418 

419<Warning>419<Warning>

420 I plugin `@skills-dir` con ambito progetto si caricano solo da `.claude/skills/` della directory in cui avvii Claude Code. Non [salgono alla radice del repository](/it/skills#automatic-discovery-from-parent-and-nested-directories) come fanno le skills e i comandi semplici, quindi l'avvio da una sottodirectory manca un plugin che vive alla radice del repository. Avvia dalla radice del repository, o esegui `/reload-plugins` dopo aver cambiato directory.420 I plugin `@skills-dir` con ambito progetto si caricano solo da `.claude/skills/` della directory in cui avvii Claude Code. Non [salgono alla radice del repository](/docs/it/skills#automatic-discovery-from-parent-and-nested-directories) come fanno le skills e i comandi semplici, quindi l'avvio da una sottodirectory manca un plugin che vive alla radice del repository. Avvia dalla radice del repository, o esegui `/reload-plugins` dopo aver cambiato directory.

421</Warning>421</Warning>

422 422 

423<h3 id="edit-reload-and-disable-a-skills-directory-plugin">423<h3 id="edit-reload-and-disable-a-skills-directory-plugin">

424 Modifica, ricarica e disabilita un plugin della directory delle skills424 Modifica, ricarica e disabilita un plugin della directory delle skills

425</h3>425</h3>

426 426 

427Le modifiche che fai al `SKILL.md` di una skill hanno effetto immediatamente nella sessione corrente. Le modifiche agli altri componenti del plugin, come `hooks/`, `.mcp.json`, `agents/` e `output-styles/`, non lo fanno. Esegui `/reload-plugins` o riavvia Claude Code per caricarle. Vedi [Rilevamento dei cambiamenti in tempo reale](/it/skills#live-change-detection).427Le modifiche che fai al `SKILL.md` di una skill hanno effetto immediatamente nella sessione corrente. Le modifiche agli altri componenti del plugin, come `hooks/`, `.mcp.json`, `agents/` e `output-styles/`, non lo fanno. Esegui `/reload-plugins` o riavvia Claude Code per caricarle. Vedi [Rilevamento dei cambiamenti in tempo reale](/docs/it/skills#live-change-detection).

428 428 

429Per interrompere il caricamento di un plugin della directory delle skills, elimina la sua cartella o disabilitalo per nome. Non c'è un passaggio `uninstall` perché nulla è stato installato da un marketplace.429Per interrompere il caricamento di un plugin della directory delle skills, elimina la sua cartella o disabilitalo per nome. Non c'è un passaggio `uninstall` perché nulla è stato installato da un marketplace.

430 430 


487 487 

488| Campo | Tipo | Descrizione | Esempio |488| Campo | Tipo | Descrizione | Esempio |

489| :----- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |489| :----- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

490| `name` | string | Identificatore univoco (kebab-case, senza spazi). Quando una [voce del marketplace](/it/plugin-marketplaces#plugin-entries) elenca il plugin con un nome diverso, il nome della voce del marketplace è quello che `enabledPlugins` e `/plugin` utilizzano | `"deployment-tools"` |490| `name` | string | Identificatore univoco (kebab-case, senza spazi). Quando una [voce del marketplace](/docs/it/plugin-marketplaces#plugin-entries) elenca il plugin con un nome diverso, il nome della voce del marketplace è quello che `enabledPlugins` e `/plugin` utilizzano | `"deployment-tools"` |

491 491 

492Questo nome viene utilizzato per lo spazio dei nomi dei componenti. Ad esempio, nell'interfaccia utente, l'agent `agent-creator` per il plugin con nome `plugin-dev` apparirà come `plugin-dev:agent-creator`.492Questo nome viene utilizzato per lo spazio dei nomi dei componenti. Ad esempio, nell'interfaccia utente, l'agent `agent-creator` per il plugin con nome `plugin-dev` apparirà come `plugin-dev:agent-creator`.

493 493 


533`defaultEnabled` è il fallback quando nient'altro ha deciso lo stato del plugin. Due cose hanno priorità su di esso:533`defaultEnabled` è il fallback quando nient'altro ha deciso lo stato del plugin. Due cose hanno priorità su di esso:

534 534 

535* **L'impostazione dell'utente**: una voce per il plugin in `enabledPlugins` a qualsiasi ambito di impostazioni. Una volta scritta, persiste tra gli aggiornamenti e le reinstallazioni del plugin, quindi cambiare `defaultEnabled` in una versione successiva non capovolge un utente esistente.535* **L'impostazione dell'utente**: una voce per il plugin in `enabledPlugins` a qualsiasi ambito di impostazioni. Una volta scritta, persiste tra gli aggiornamenti e le reinstallazioni del plugin, quindi cambiare `defaultEnabled` in una versione successiva non capovolge un utente esistente.

536* **Un requisito di dipendenza**: quando un plugin è richiesto da un altro che è attivo, Claude Code scrive `true` per esso al momento dell'installazione o dell'abilitazione. Questo gli dà un'impostazione esplicita, quindi il suo default non si applica più. Vedi [Abilita o disabilita un plugin con dipendenze](/it/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).536* **Un requisito di dipendenza**: quando un plugin è richiesto da un altro che è attivo, Claude Code scrive `true` per esso al momento dell'installazione o dell'abilitazione. Questo gli dà un'impostazione esplicita, quindi il suo default non si applica più. Vedi [Abilita o disabilita un plugin con dipendenze](/docs/it/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).

537 537 

538Lo stesso campo può apparire nella voce del marketplace di un plugin, dove ha priorità sul valore in `plugin.json`. Vedi [Campi plugin opzionali](/it/plugin-marketplaces#optional-plugin-fields).538Lo stesso campo può apparire nella voce del marketplace di un plugin, dove ha priorità sul valore in `plugin.json`. Vedi [Campi plugin opzionali](/docs/it/plugin-marketplaces#optional-plugin-fields).

539 539 

540<h3 id="component-path-fields">540<h3 id="component-path-fields">

541 Campi del percorso del componente541 Campi del percorso del componente


551| `outputStyles` | string\|array | File/directory di stili di output personalizzati (sostituisce il valore predefinito `output-styles/`) | `"./styles/"` |551| `outputStyles` | string\|array | File/directory di stili di output personalizzati (sostituisce il valore predefinito `output-styles/`) | `"./styles/"` |

552| `lspServers` | string\|array\|object | Configurazioni [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) per l'intelligenza del codice (vai alla definizione, trova riferimenti, ecc.) | `"./.lsp.json"` |552| `lspServers` | string\|array\|object | Configurazioni [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) per l'intelligenza del codice (vai alla definizione, trova riferimenti, ecc.) | `"./.lsp.json"` |

553| `experimental.themes` | string\|array | File/directory di temi di colore (sostituisce il valore predefinito `themes/`). Vedi [Themes](#themes) | `"./themes/"` |553| `experimental.themes` | string\|array | File/directory di temi di colore (sostituisce il valore predefinito `themes/`). Vedi [Themes](#themes) | `"./themes/"` |

554| `experimental.monitors` | string\|array | Configurazioni di [Monitor](/it/tools-reference#monitor-tool) in background che si avviano automaticamente quando il plugin è attivo. Vedi [Monitors](#monitors) | `"./monitors.json"` |554| `experimental.monitors` | string\|array | Configurazioni di [Monitor](/docs/it/tools-reference#monitor-tool) in background che si avviano automaticamente quando il plugin è attivo. Vedi [Monitors](#monitors) | `"./monitors.json"` |

555| `userConfig` | object | Valori configurabili dall'utente richiesti al momento dell'abilitazione. Vedi [Configurazione utente](#user-configuration) | Vedi sotto |555| `userConfig` | object | Valori configurabili dall'utente richiesti al momento dell'abilitazione. Vedi [Configurazione utente](#user-configuration) | Vedi sotto |

556| `channels` | array | Dichiarazioni di canale per l'iniezione di messaggi (stile Telegram, Slack, Discord). Vedi [Channels](#channels) | Vedi sotto |556| `channels` | array | Dichiarazioni di canale per l'iniezione di messaggi (stile Telegram, Slack, Discord). Vedi [Channels](#channels) | Vedi sotto |

557| `dependencies` | array | Altri plugin richiesti da questo plugin, facoltativamente con vincoli di versione semver. Vedi [Vincola le versioni delle dipendenze del plugin](/it/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |557| `dependencies` | array | Altri plugin richiesti da questo plugin, facoltativamente con vincoli di versione semver. Vedi [Vincola le versioni delle dipendenze del plugin](/docs/it/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

558 558 

559<h3 id="experimental-components">559<h3 id="experimental-components">

560 Componenti sperimentali560 Componenti sperimentali


601 601 

602Ogni valore è disponibile per la sostituzione come `${user_config.KEY}` nelle configurazioni dei server MCP e LSP e nei comandi degli hooks. I valori non sensibili possono anche essere sostituiti nel contenuto delle skills e degli agents. Tutti i valori vengono esportati ai processi degli hooks come variabili di ambiente `CLAUDE_PLUGIN_OPTION_<KEY>`, dove `<KEY>` è la chiave dell'opzione in maiuscolo.602Ogni valore è disponibile per la sostituzione come `${user_config.KEY}` nelle configurazioni dei server MCP e LSP e nei comandi degli hooks. I valori non sensibili possono anche essere sostituiti nel contenuto delle skills e degli agents. Tutti i valori vengono esportati ai processi degli hooks come variabili di ambiente `CLAUDE_PLUGIN_OPTION_<KEY>`, dove `<KEY>` è la chiave dell'opzione in maiuscolo.

603 603 

604I campi che vengono eseguiti in una shell rifiutano `${user_config.*}`: sostituire un valore configurato in un comando shell consentirebbe alla shell di eseguire qualsiasi cosa contenga quel valore, quindi il componente fallisce con un [errore](/it/errors#plugin-command-references-user-config) invece. Ogni campo rifiutato ha un modo alternativo per passare il valore:604I campi che vengono eseguiti in una shell rifiutano `${user_config.*}`: sostituire un valore configurato in un comando shell consentirebbe alla shell di eseguire qualsiasi cosa contenga quel valore, quindi il componente fallisce con un [errore](/docs/it/errors#plugin-command-references-user-config) invece. Ogni campo rifiutato ha un modo alternativo per passare il valore:

605 605 

606| Campo rifiutato | Come passare il valore |606| Campo rifiutato | Come passare il valore |

607| :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |607| :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

608| Comandi hook in forma shell | Usa la [forma exec](/it/hooks#exec-form-and-shell-form) con `args`, o leggi `CLAUDE_PLUGIN_OPTION_<KEY>` dall'ambiente dell'hook |608| Comandi hook in forma shell | Usa la [forma exec](/docs/it/hooks#exec-form-and-shell-form) con `args`, o leggi `CLAUDE_PLUGIN_OPTION_<KEY>` dall'ambiente dell'hook |

609| Comandi [Monitor](#monitors) | Leggi il valore da un file di configurazione nello script |609| Comandi [Monitor](#monitors) | Leggi il valore da un file di configurazione nello script |

610| MCP [`headersHelper`](/it/mcp#use-dynamic-headers-for-custom-authentication) | Leggi il valore da un file di configurazione nello script |610| MCP [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) | Leggi il valore da un file di configurazione nello script |

611 611 

612Prima della v2.1.207, questi campi sostituivano i valori `${user_config.KEY}`; aggiorna i plugin che si basavano su questo.612Prima della v2.1.207, questi campi sostituivano i valori `${user_config.KEY}`; aggiorna i plugin che si basavano su questo.

613 613 

614I valori non sensibili vengono archiviati sotto la chiave [`pluginConfigs`](/it/settings#pluginconfigs) in `settings.json` come `pluginConfigs[<plugin-id>].options`. {/* min-version: 2.1.207 */}Claude Code scrive la chiave nelle impostazioni utente e la legge dalle impostazioni utente, dal flag `--settings` e dalle impostazioni gestite solo; le voci in `.claude/settings.json` o `.claude/settings.local.json` di un progetto vengono ignorate. Prima della v2.1.207, Claude Code leggeva anche le impostazioni di progetto e locali.614I valori non sensibili vengono archiviati sotto la chiave [`pluginConfigs`](/docs/it/settings#pluginconfigs) in `settings.json` come `pluginConfigs[<plugin-id>].options`. {/* min-version: 2.1.207 */}Claude Code scrive la chiave nelle impostazioni utente e la legge dalle impostazioni utente, dal flag `--settings` e dalle impostazioni gestite solo; le voci in `.claude/settings.json` o `.claude/settings.local.json` di un progetto vengono ignorate. Prima della v2.1.207, Claude Code leggeva anche le impostazioni di progetto e locali.

615 615 

616I valori sensibili vanno al Portachiavi di macOS, o a `~/.claude/.credentials.json` su piattaforme dove non è disponibile un portachiavi supportato. L'archiviazione del portachiavi è condivisa con i token OAuth e ha un limite totale approssimativo di 2 KB, quindi mantieni i valori sensibili piccoli.616I valori sensibili vanno al Portachiavi di macOS, o a `~/.claude/.credentials.json` su piattaforme dove non è disponibile un portachiavi supportato. L'archiviazione del portachiavi è condivisa con i token OAuth e ha un limite totale approssimativo di 2 KB, quindi mantieni i valori sensibili piccoli.

617 617 


653Se un percorso personalizzato sostituisce o estende la directory predefinita del plugin dipende dal campo:653Se un percorso personalizzato sostituisce o estende la directory predefinita del plugin dipende dal campo:

654 654 

655* **Sostituisce il valore predefinito**: `commands`, `agents`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Ad esempio, quando il manifest specifica `commands`, la directory predefinita `commands/` non viene scansionata. Per mantenere il valore predefinito e aggiungerne altri, elencalo esplicitamente: `"commands": ["./commands/", "./extras/"]`655* **Sostituisce il valore predefinito**: `commands`, `agents`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Ad esempio, quando il manifest specifica `commands`, la directory predefinita `commands/` non viene scansionata. Per mantenere il valore predefinito e aggiungerne altri, elencalo esplicitamente: `"commands": ["./commands/", "./extras/"]`

656* **Aggiunge al valore predefinito**: `skills`. La directory predefinita `skills/` viene sempre scansionata, e le directory elencate in `skills` vengono caricate insieme ad essa. Eccezione: per una [voce del marketplace il cui `source` si risolve nella radice del marketplace](/it/plugin-marketplaces#advanced-plugin-entries), dichiarare sottodirectory specifiche sostituisce la scansione predefinita `skills/`656* **Aggiunge al valore predefinito**: `skills`. La directory predefinita `skills/` viene sempre scansionata, e le directory elencate in `skills` vengono caricate insieme ad essa. Eccezione: per una [voce del marketplace il cui `source` si risolve nella radice del marketplace](/docs/it/plugin-marketplaces#advanced-plugin-entries), dichiarare sottodirectory specifiche sostituisce la scansione predefinita `skills/`

657* **Regole di merge proprie**: [hooks](#hooks), [MCP servers](#mcp-servers) e [LSP servers](#lsp-servers). Vedi ogni sezione per come più fonti si combinano657* **Regole di merge proprie**: [hooks](#hooks), [MCP servers](#mcp-servers) e [LSP servers](#lsp-servers). Vedi ogni sezione per come più fonti si combinano

658 658 

659Quando un plugin ha sia una cartella predefinita che la chiave manifest corrispondente, Claude Code v2.1.140 e versioni successive contrassegnano la cartella ignorata in `claude plugin list` e la vista dettagli `/plugin`. Il plugin continua a caricarsi utilizzando i percorsi del manifest. Nessun avviso viene mostrato quando la chiave manifest punta nella cartella predefinita, ad esempio `"commands": ["./commands/deploy.md"]`, perché la cartella è indirizzata esplicitamente in quel caso.659Quando un plugin ha sia una cartella predefinita che la chiave manifest corrispondente, Claude Code v2.1.140 e versioni successive contrassegnano la cartella ignorata in `claude plugin list` e la vista dettagli `/plugin`. Il plugin continua a caricarsi utilizzando i percorsi del manifest. Nessun avviso viene mostrato quando la chiave manifest punta nella cartella predefinita, ad esempio `"commands": ["./commands/deploy.md"]`, perché la cartella è indirizzata esplicitamente in quel caso.


704| Server MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` |704| Server MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` |

705| Server LSP | `command`, `args`, `env`, `workspaceFolder` |705| Server LSP | `command`, `args`, `env`, `workspaceFolder` |

706 706 

707Nei comandi degli hooks, usa la [forma exec](/it/hooks#exec-form-and-shell-form) con `args` in modo che ogni percorso venga passato come un singolo argomento senza virgolette. Negli hooks in forma shell e nei comandi dei monitor, racchiudi le variabili tra virgolette doppie, come in `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. Questo hook in forma shell esegue uno script fornito con un plugin:707Nei comandi degli hooks, usa la [forma exec](/docs/it/hooks#exec-form-and-shell-form) con `args` in modo che ogni percorso venga passato come un singolo argomento senza virgolette. Negli hooks in forma shell e nei comandi dei monitor, racchiudi le variabili tra virgolette doppie, come in `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. Questo hook in forma shell esegue uno script fornito con un plugin:

708 708 

709```json theme={null}709```json theme={null}

710{710{


727 727 

728Quando un plugin viene aggiornato a metà sessione, i comandi degli hooks, i monitor, i server MCP e i server LSP continuano a utilizzare il percorso della versione precedente. Esegui `/reload-plugins` per passare gli hooks, i server MCP e i server LSP al nuovo percorso; i monitor richiedono un riavvio della sessione.728Quando un plugin viene aggiornato a metà sessione, i comandi degli hooks, i monitor, i server MCP e i server LSP continuano a utilizzare il percorso della versione precedente. Esegui `/reload-plugins` per passare gli hooks, i server MCP e i server LSP al nuovo percorso; i monitor richiedono un riavvio della sessione.

729 729 

730I server MCP possono anche chiamare la richiesta `roots/list` per leggere le directory di lavoro della sessione al runtime. Vedi [cosa restituisce `roots/list` e quando Claude Code notifica al server i cambiamenti](/it/mcp#option-3-add-a-local-stdio-server).730I server MCP possono anche chiamare la richiesta `roots/list` per leggere le directory di lavoro della sessione al runtime. Vedi [cosa restituisce `roots/list` e quando Claude Code notifica al server i cambiamenti](/docs/it/mcp#option-3-add-a-local-stdio-server).

731 731 

732<h4 id="persistent-data-directory">732<h4 id="persistent-data-directory">

733 Directory di dati persistenti733 Directory di dati persistenti


893| **LSP servers** | `.lsp.json` | Configurazioni del server di linguaggio |893| **LSP servers** | `.lsp.json` | Configurazioni del server di linguaggio |

894| **Monitors** | `monitors/monitors.json` | Configurazioni dei monitor in background |894| **Monitors** | `monitors/monitors.json` | Configurazioni dei monitor in background |

895| **Executables** | `bin/` | Eseguibili aggiunti al `PATH` dello strumento Bash. I file qui sono invocabili come comandi bare in qualsiasi chiamata dello strumento Bash mentre il plugin è abilitato |895| **Executables** | `bin/` | Eseguibili aggiunti al `PATH` dello strumento Bash. I file qui sono invocabili come comandi bare in qualsiasi chiamata dello strumento Bash mentre il plugin è abilitato |

896| **Settings** | `settings.json` | Configurazione predefinita applicata quando il plugin è abilitato. Attualmente sono supportate solo le chiavi [`agent`](/it/sub-agents) e [`subagentStatusLine`](/it/statusline#subagent-status-lines) |896| **Settings** | `settings.json` | Configurazione predefinita applicata quando il plugin è abilitato. Attualmente sono supportate solo le chiavi [`agent`](/docs/it/sub-agents) e [`subagentStatusLine`](/docs/it/statusline#subagent-status-lines) |

897 897 

898***898***

899 899 


942| `mcp` | Un `.mcp.json` con esempi di server HTTP e stdio |942| `mcp` | Un `.mcp.json` con esempi di server HTTP e stdio |

943| `lsp` | Un esempio di `.lsp.json` language-server |943| `lsp` | Un esempio di `.lsp.json` language-server |

944| `output-style` | Un `output-styles/<name>.md` che si applica automaticamente mentre il plugin è abilitato |944| `output-style` | Un `output-styles/<name>.md` che si applica automaticamente mentre il plugin è abilitato |

945| `channel` | Un [channel](/it/channels) basato su MCP: un server stdio (`server.ts`), il suo `.mcp.json` e un `package.json` |945| `channel` | Un [channel](/docs/it/channels) basato su MCP: un server stdio (`server.ts`), il suo `.mcp.json` e un `package.json` |

946 946 

947Il plugin creato utilizza la fonte `@skills-dir` piuttosto che un marketplace. Gli amministratori possono bloccare questa fonte con `strictKnownMarketplaces` o aggiungendo `{"source": "skills-dir"}` a `blockedMarketplaces` nelle [impostazioni gestite](/it/plugin-marketplaces#managed-marketplace-restrictions). Quando bloccato, `plugin init` fallisce prima di scrivere.947Il plugin creato utilizza la fonte `@skills-dir` piuttosto che un marketplace. Gli amministratori possono bloccare questa fonte con `strictKnownMarketplaces` o aggiungendo `{"source": "skills-dir"}` a `blockedMarketplaces` nelle [impostazioni gestite](/docs/it/plugin-marketplaces#managed-marketplace-restrictions). Quando bloccato, `plugin init` fallisce prima di scrivere.

948 948 

949**Esempi:**949**Esempi:**

950 950 


1027 plugin prune1027 plugin prune

1028</h3>1028</h3>

1029 1029 

1030Rimuovi le dipendenze auto-installate dei plugin che non sono più richieste da nessun plugin installato. Le dipendenze che Claude Code ha incluso per soddisfare il campo [`dependencies`](/it/plugin-dependencies) di un altro plugin vengono rimosse; i plugin che hai installato direttamente non vengono mai toccati.1030Rimuovi le dipendenze auto-installate dei plugin che non sono più richieste da nessun plugin installato. Le dipendenze che Claude Code ha incluso per soddisfare il campo [`dependencies`](/docs/it/plugin-dependencies) di un altro plugin vengono rimosse; i plugin che hai installato direttamente non vengono mai toccati.

1031 1031 

1032```bash theme={null}1032```bash theme={null}

1033claude plugin prune [options]1033claude plugin prune [options]


1054 plugin enable1054 plugin enable

1055</h3>1055</h3>

1056 1056 

1057Abilita un plugin disabilitato. Se il plugin dichiara [dipendenze](/it/plugin-dependencies), Claude Code le abilita transitivamente nello stesso ambito, e il comando fallisce quando una dipendenza non è installata.1057Abilita un plugin disabilitato. Se il plugin dichiara [dipendenze](/docs/it/plugin-dependencies), Claude Code le abilita transitivamente nello stesso ambito, e il comando fallisce quando una dipendenza non è installata.

1058 1058 

1059```bash theme={null}1059```bash theme={null}

1060claude plugin enable <plugin> [options]1060claude plugin enable <plugin> [options]


1075 plugin disable1075 plugin disable

1076</h3>1076</h3>

1077 1077 

1078Disabilita un plugin senza disinstallarlo. Fallisce quando un altro plugin abilitato [dipende da](/it/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) il target. Il messaggio di errore include un comando concatenato che disabilita prima ogni dipendente.1078Disabilita un plugin senza disinstallarlo. Fallisce quando un altro plugin abilitato [dipende da](/docs/it/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) il target. Il messaggio di errore include un comando concatenato che disabilita prima ogni dipendente.

1079 1079 

1080```bash theme={null}1080```bash theme={null}

1081claude plugin disable <plugin> [options]1081claude plugin disable <plugin> [options]


1192 plugin tag1192 plugin tag

1193</h3>1193</h3>

1194 1194 

1195Crea un tag git di rilascio per il plugin nella directory corrente. Esegui dall'interno della cartella del plugin. Vedi [Tag plugin releases](/it/plugin-dependencies#tag-plugin-releases-for-version-resolution).1195Crea un tag git di rilascio per il plugin nella directory corrente. Esegui dall'interno della cartella del plugin. Vedi [Tag plugin releases](/docs/it/plugin-dependencies#tag-plugin-releases-for-version-resolution).

1196 1196 

1197```bash theme={null}1197```bash theme={null}

1198claude plugin tag [options]1198claude plugin tag [options]


1352 Vedi anche1352 Vedi anche

1353</h2>1353</h2>

1354 1354 

1355* [Plugin](/it/plugins) - Tutorial e utilizzo pratico1355* [Plugin](/docs/it/plugins) - Tutorial e utilizzo pratico

1356* [Marketplace dei plugin](/it/plugin-marketplaces) - Creazione e gestione dei marketplace1356* [Marketplace dei plugin](/docs/it/plugin-marketplaces) - Creazione e gestione dei marketplace

1357* [Skills](/it/skills) - Dettagli dello sviluppo delle skill1357* [Skills](/docs/it/skills) - Dettagli dello sviluppo delle skill

1358* [Subagents](/it/sub-agents) - Configurazione e capacità dell'agent1358* [Subagents](/docs/it/sub-agents) - Configurazione e capacità dell'agent

1359* [Hooks](/it/hooks) - Gestione degli eventi e automazione1359* [Hooks](/docs/it/hooks) - Gestione degli eventi e automazione

1360* [MCP](/it/mcp) - Integrazione di strumenti esterni1360* [MCP](/docs/it/mcp) - Integrazione di strumenti esterni

1361* [Impostazioni](/it/settings) - Opzioni di configurazione per i plugin1361* [Impostazioni](/docs/it/settings) - Opzioni di configurazione per i plugin

settings.md +48 −22

Details

180 Voci non valide nelle impostazioni gestite180 Voci non valide nelle impostazioni gestite

181</h3>181</h3>

182 182 

183Le impostazioni gestite analizzano in modo tollerante. Quando una configurazione gestita contiene una voce che non supera la convalida dello schema, Claude Code rimuove quella voce, registra un avviso e applica ogni politica valida rimanente. Un singolo errore di battitura non può disabilitare il resto della politica della tua organizzazione.183Le impostazioni gestite analizzano in modo tollerante. Quando una configurazione gestita contiene una voce che non supera la convalida dello schema, Claude Code rimuove quella voce, registra un avviso e applica ogni politica valida rimanente. Un singolo errore di battitura non può disabilitare il resto della politica della tua organizzazione. Esegui [`/doctor`](/it/debug-your-config#check-resolved-settings) per elencare le voci rimosse con il loro file di origine e campo.

184 184 

185Questo comportamento è coerente in tutti e tre i meccanismi di distribuzione: [impostazioni gestite dal server](/it/server-managed-settings), politiche plist e registro distribuite tramite MDM, e file `managed-settings.json`. Richiede Claude Code v2.1.169 o successivo.185Questo comportamento è coerente in tutti e tre i meccanismi di distribuzione: [impostazioni gestite dal server](/it/server-managed-settings), politiche plist e registro distribuite tramite MDM, e file `managed-settings.json`. Richiede Claude Code v2.1.169 o successivo.

186 186 


215`settings.json` supporta un numero di opzioni:215`settings.json` supporta un numero di opzioni:

216 216 

217| Chiave | Descrizione | Esempio |217| Chiave | Descrizione | Esempio |

218| :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |218| :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |

219| `advisorModel` | Modello per lo [strumento advisor](/it/advisor) lato server. Accetta un alias di modello come `"opus"`, `"sonnet"`, o `"fable"` ({/* min-version: 2.1.170 */}v2.1.170+), o un ID modello completo. Scritto automaticamente quando esegui `/advisor`. Non impostato per disabilitare l'advisor | `"opus"` |219| `advisorModel` | Modello per lo [strumento advisor](/it/advisor) lato server. Accetta un alias di modello come `"opus"`, `"sonnet"`, o `"fable"` ({/* min-version: 2.1.170 */}v2.1.170+), o un ID modello completo. Scritto automaticamente quando esegui `/advisor`. Non impostato per disabilitare l'advisor | `"opus"` |

220| `agent` | Esegui il thread principale come un subagent denominato e imposta l'agente predefinito per le sessioni inviate da `claude agents`. Applica il prompt di sistema, le restrizioni degli strumenti e il modello di quel subagent. Vedi [Invoca i subagent esplicitamente](/it/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |220| `agent` | Esegui il thread principale come un subagent denominato e imposta l'agente predefinito per le sessioni inviate da `claude agents`. Applica il prompt di sistema, le restrizioni degli strumenti e il modello di quel subagent. Vedi [Invoca i subagent esplicitamente](/it/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

221| `agentPushNotifEnabled` | {/* min-version: 2.1.119 */}**Predefinito**: `false`. Quando il [Controllo remoto](/it/remote-control) è connesso, consenti a Claude di inviare notifiche push proattive al tuo telefono, ad esempio quando un'attività lunga finisce. Appare in `/config` come **Push when Claude decides**. Vedi [Notifiche push mobile](/it/remote-control#mobile-push-notifications). Richiede Claude Code v2.1.119 o successivo | `true` |221| `agentPushNotifEnabled` | {/* min-version: 2.1.119 */}**Predefinito**: `false`. Quando il [Controllo remoto](/it/remote-control) è connesso, consenti a Claude di inviare notifiche push proattive al tuo telefono, ad esempio quando un'attività lunga finisce. Appare in `/config` come **Push when Claude decides**. Vedi [Notifiche push mobile](/it/remote-control#mobile-push-notifications). Richiede Claude Code v2.1.119 o successivo | `true` |


233| `autoCompactEnabled` | {/* min-version: 2.1.119 */}**Predefinito**: `true`. Compatta automaticamente la conversazione quando il contesto si avvicina al limite. Appare in `/config` come **Auto-compact**. Per disabilitare tramite variabile di ambiente, imposta [`DISABLE_AUTO_COMPACT`](/it/env-vars) in `env` | `false` |233| `autoCompactEnabled` | {/* min-version: 2.1.119 */}**Predefinito**: `true`. Compatta automaticamente la conversazione quando il contesto si avvicina al limite. Appare in `/config` come **Auto-compact**. Per disabilitare tramite variabile di ambiente, imposta [`DISABLE_AUTO_COMPACT`](/it/env-vars) in `env` | `false` |

234| `autoMemoryDirectory` | Directory personalizzata per l'archiviazione della [memoria automatica](/it/memory#storage-location). Accetta un percorso assoluto o un percorso con prefisso `~/`. Dalle impostazioni di progetto o locale, questo viene onorato solo dopo che accetti la finestra di dialogo di fiducia dell'area di lavoro, poiché un repository clonato può fornire questo file | `"~/my-memory-dir"` |234| `autoMemoryDirectory` | Directory personalizzata per l'archiviazione della [memoria automatica](/it/memory#storage-location). Accetta un percorso assoluto o un percorso con prefisso `~/`. Dalle impostazioni di progetto o locale, questo viene onorato solo dopo che accetti la finestra di dialogo di fiducia dell'area di lavoro, poiché un repository clonato può fornire questo file | `"~/my-memory-dir"` |

235| `autoMemoryEnabled` | **Predefinito**: `true`. Abilita la [memoria automatica](/it/memory#enable-or-disable-auto-memory). Quando `false`, Claude non legge da o scrive nella directory di memoria automatica. Puoi anche attivare/disattivare questo con `/memory` durante una sessione. Per disabilitare tramite variabile di ambiente, imposta [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/it/env-vars) in `env` | `false` |235| `autoMemoryEnabled` | **Predefinito**: `true`. Abilita la [memoria automatica](/it/memory#enable-or-disable-auto-memory). Quando `false`, Claude non legge da o scrive nella directory di memoria automatica. Puoi anche attivare/disattivare questo con `/memory` durante una sessione. Per disabilitare tramite variabile di ambiente, imposta [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/it/env-vars) in `env` | `false` |

236| `autoMode` | Personalizza cosa il classificatore della [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) blocca e consente. Contiene array `environment`, `allow`, `soft_deny` e `hard_deny` di regole in prosa. Includi la stringa letterale `"$defaults"` in un array per ereditare le regole incorporate in quella posizione. Vedi [Configura la modalità auto](/it/auto-mode-config). Non letto dalle impostazioni di progetto condivise | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |236| `autoMode` | Personalizza cosa il classificatore della [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) blocca e consente. Contiene array `environment`, `allow`, `soft_deny` e `hard_deny` di regole in prosa. Includi la stringa letterale `"$defaults"` in un array per ereditare le regole incorporate in quella posizione. Vedi [Configura la modalità auto](/it/auto-mode-config). Letto dalle impostazioni utente, dal flag `--settings`, e dalle impostazioni gestite solo. Ignorato nelle impostazioni di progetto `.claude/settings.json` e locale `.claude/settings.local.json`. {/* min-version: 2.1.207 */}Prima di v2.1.207, `.claude/settings.local.json` era anche letto | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

237| `autoMode.classifyAllShell` | {/* min-version: 2.1.193 */}**Predefinito**: `false`. Quando `true`, sospende ogni regola allow di Bash e PowerShell mentre la modalità auto è attiva in modo che tutti i comandi shell vengono instradati attraverso il classificatore, non solo le regole che corrispondono ai modelli di esecuzione di codice arbitrario. Vedi [Instrada tutti i comandi shell attraverso il classificatore](/it/auto-mode-config#route-all-shell-commands-through-the-classifier). Richiede Claude Code v2.1.193 o successivo | `true` |237| `autoMode.classifyAllShell` | {/* min-version: 2.1.193 */}**Predefinito**: `false`. Quando `true`, sospende ogni regola allow di Bash e PowerShell mentre la modalità auto è attiva in modo che tutti i comandi shell vengono instradati attraverso il classificatore, non solo le regole che corrispondono ai modelli di esecuzione di codice arbitrario. Vedi [Instrada tutti i comandi shell attraverso il classificatore](/it/auto-mode-config#route-all-shell-commands-through-the-classifier). Richiede Claude Code v2.1.193 o successivo | `true` |

238| `autoScrollEnabled` | **Predefinito**: `true`. Nel [rendering fullscreen](/it/fullscreen), segui il nuovo output fino al fondo della conversazione. Appare in `/config` come **Auto-scroll**. I prompt di permesso scorrono comunque in vista quando questo è disattivato | `false` |238| `autoScrollEnabled` | **Predefinito**: `true`. Nel [rendering fullscreen](/it/fullscreen), segui il nuovo output fino al fondo della conversazione. Appare in `/config` come **Auto-scroll**. I prompt di permesso scorrono comunque in vista quando questo è disattivato | `false` |

239| `autoUpdatesChannel` | **Predefinito**: `"latest"`. Canale di rilascio da seguire per gli aggiornamenti. Usa `"stable"` per una versione che è tipicamente circa una settimana vecchia e salta le versioni con regressioni importanti, o `"latest"` per il rilascio più recente. Per disabilitare completamente gli auto-aggiornamenti, imposta [`DISABLE_AUTOUPDATER`](/it/setup#disable-auto-updates) in `env` | `"stable"` |239| `autoUpdatesChannel` | **Predefinito**: `"latest"`. Canale di rilascio da seguire per gli aggiornamenti. Usa `"stable"` per una versione che è tipicamente circa una settimana vecchia e salta le versioni con regressioni importanti, o `"latest"` per il rilascio più recente. Per disabilitare completamente gli auto-aggiornamenti, imposta [`DISABLE_AUTOUPDATER`](/it/setup#disable-auto-updates) in `env` | `"stable"` |


255| `disableAllHooks` | Disabilita tutti gli [hooks](/it/hooks) e qualsiasi [status line](/it/statusline) personalizzato | `true` |255| `disableAllHooks` | Disabilita tutti gli [hooks](/it/hooks) e qualsiasi [status line](/it/statusline) personalizzato | `true` |

256| `disableArtifact` | Imposta a `true` per disabilitare lo strumento [Artifact](/it/artifacts), che pubblica l'output della sessione come pagina web privata su claude.ai. Equivalente all'impostazione di `CLAUDE_CODE_DISABLE_ARTIFACT` a `1` | `true` |256| `disableArtifact` | Imposta a `true` per disabilitare lo strumento [Artifact](/it/artifacts), che pubblica l'output della sessione come pagina web privata su claude.ai. Equivalente all'impostazione di `CLAUDE_CODE_DISABLE_ARTIFACT` a `1` | `true` |

257| `disableAutoMode` | Imposta a `"disable"` per prevenire l'attivazione della [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode). Rimuove `auto` dal ciclo `Shift+Tab` e rifiuta `--permission-mode auto` all'avvio. Molto utile nelle [impostazioni gestite](/it/permissions#managed-settings) dove gli utenti non possono ignorarla | `"disable"` |257| `disableAutoMode` | Imposta a `"disable"` per prevenire l'attivazione della [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode). Rimuove `auto` dal ciclo `Shift+Tab` e rifiuta `--permission-mode auto` all'avvio. Molto utile nelle [impostazioni gestite](/it/permissions#managed-settings) dove gli utenti non possono ignorarla | `"disable"` |

258| `disableBrowserExternalNavigation` | (Solo impostazioni gestite) Imposta a `true` per disattivare la navigazione esterna nel riquadro [Browser](/it/desktop#browse-external-sites) dell'app desktop. Né gli utenti né Claude possono navigare verso siti esterni, e le anteprime del server localhost rimangono inalterate. Il valore deve essere il booleano JSON `true`; la stringa `"true"` viene ignorata | `true` |

258| `disableBundledSkills` | Imposta a `true` per disabilitare gli [skills](/it/skills) e i flussi di lavoro che vengono forniti con Claude Code: gli skills bundled e i flussi di lavoro vengono rimossi completamente, mentre i comandi slash incorporati come `/init` rimangono digitabili ma sono nascosti dal modello. `/doctor` rimane digitabile come i comandi incorporati; nascondilo con [`DISABLE_DOCTOR_COMMAND`](/it/env-vars) invece. Gli skills dai plugin, `.claude/skills/`, e `.claude/commands/` non sono interessati. Equivalente all'impostazione di `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` a `1` | `true` |259| `disableBundledSkills` | Imposta a `true` per disabilitare gli [skills](/it/skills) e i flussi di lavoro che vengono forniti con Claude Code: gli skills bundled e i flussi di lavoro vengono rimossi completamente, mentre i comandi slash incorporati come `/init` rimangono digitabili ma sono nascosti dal modello. `/doctor` rimane digitabile come i comandi incorporati; nascondilo con [`DISABLE_DOCTOR_COMMAND`](/it/env-vars) invece. Gli skills dai plugin, `.claude/skills/`, e `.claude/commands/` non sono interessati. Equivalente all'impostazione di `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` a `1` | `true` |

259| `disableClaudeAiConnectors` | {/* min-version: 2.1.182 */}Disabilita i [connettori MCP di claude.ai](/it/mcp#use-mcp-servers-from-claude-ai) in modo che non vengano recuperati automaticamente o connessi. Imposta in qualsiasi ambito di impostazioni. `true` in qualsiasi fonte ha la precedenza, quindi un `.claude/settings.json` di progetto controllato può escludere un repository dai connettori cloud, ma un `false` a livello di progetto non può ignorare un `true` a livello utente o di politica. I server passati esplicitamente tramite `--mcp-config` non sono interessati. Per negare i singoli connettori invece di tutti loro, usa [`deniedMcpServers`](/it/managed-mcp). Richiede Claude Code v2.1.182 o successivo | `true` |260| `disableClaudeAiConnectors` | {/* min-version: 2.1.182 */}Disabilita i [connettori MCP di claude.ai](/it/mcp#use-mcp-servers-from-claude-ai) in modo che non vengano recuperati automaticamente o connessi. Imposta in qualsiasi ambito di impostazioni. `true` in qualsiasi fonte ha la precedenza, quindi un `.claude/settings.json` di progetto controllato può escludere un repository dai connettori cloud, ma un `false` a livello di progetto non può ignorare un `true` a livello utente o di politica. I server passati esplicitamente tramite `--mcp-config` non sono interessati. Per negare i singoli connettori invece di tutti loro, usa [`deniedMcpServers`](/it/managed-mcp). Richiede Claude Code v2.1.182 o successivo | `true` |

260| `disableDeepLinkRegistration` | Imposta a `"disable"` per prevenire che Claude Code registri il gestore del protocollo `claude-cli://` con il sistema operativo all'avvio. I [deep link](/it/deep-links) consentono agli strumenti esterni di aprire una sessione di Claude Code con un prompt pre-compilato. Utile negli ambienti in cui la registrazione del gestore del protocollo è limitata o gestita separatamente | `"disable"` |261| `disableDeepLinkRegistration` | Imposta a `"disable"` per prevenire che Claude Code registri il gestore del protocollo `claude-cli://` con il sistema operativo all'avvio. I [deep link](/it/deep-links) consentono agli strumenti esterni di aprire una sessione di Claude Code con un prompt pre-compilato. Utile negli ambienti in cui la registrazione del gestore del protocollo è limitata o gestita separatamente | `"disable"` |


268| `enableAllProjectMcpServers` | Approva automaticamente tutti i MCP server definiti nei file `.mcp.json` del progetto. {/* min-version: 2.1.196 */}A partire da v2.1.196, `claude mcp list` e `claude mcp get` onorano questa chiave in una cartella non attendibile solo dai [file di impostazioni che non vengono controllati nel repository](/it/mcp#managing-your-servers) | `true` |269| `enableAllProjectMcpServers` | Approva automaticamente tutti i MCP server definiti nei file `.mcp.json` del progetto. {/* min-version: 2.1.196 */}A partire da v2.1.196, `claude mcp list` e `claude mcp get` onorano questa chiave in una cartella non attendibile solo dai [file di impostazioni che non vengono controllati nel repository](/it/mcp#managing-your-servers) | `true` |

269| `enableArtifact` | {/* min-version: 2.1.196 */}Abilita o disabilita lo strumento [Artifact](/it/artifacts) per questo utente. Quando non impostato, il predefinito segue la [disponibilità](/it/artifacts#availability) della funzione per il tuo account. La riga **Artifacts** in `/config` scrive questa chiave. Un `disableArtifact` gestito e l'[impostazione di amministrazione](/it/artifacts#manage-artifacts-for-your-organization) della tua organizzazione hanno la precedenza, e la chiave viene ignorata nelle impostazioni di progetto e locale (`.claude/settings.json`, `.claude/settings.local.json`), che un repository potrebbe altrimenti controllare. Richiede Claude Code v2.1.196 o successivo | `true` |270| `enableArtifact` | {/* min-version: 2.1.196 */}Abilita o disabilita lo strumento [Artifact](/it/artifacts) per questo utente. Quando non impostato, il predefinito segue la [disponibilità](/it/artifacts#availability) della funzione per il tuo account. La riga **Artifacts** in `/config` scrive questa chiave. Un `disableArtifact` gestito e l'[impostazione di amministrazione](/it/artifacts#manage-artifacts-for-your-organization) della tua organizzazione hanno la precedenza, e la chiave viene ignorata nelle impostazioni di progetto e locale (`.claude/settings.json`, `.claude/settings.local.json`), che un repository potrebbe altrimenti controllare. Richiede Claude Code v2.1.196 o successivo | `true` |

270| `enabledMcpjsonServers` | Elenco di MCP server specifici dai file `.mcp.json` da approvare. {/* min-version: 2.1.196 */}A partire da v2.1.196, `claude mcp list` e `claude mcp get` onorano questa chiave in una cartella non attendibile solo dai [file di impostazioni che non vengono controllati nel repository](/it/mcp#managing-your-servers) | `["memory", "github"]` |271| `enabledMcpjsonServers` | Elenco di MCP server specifici dai file `.mcp.json` da approvare. {/* min-version: 2.1.196 */}A partire da v2.1.196, `claude mcp list` e `claude mcp get` onorano questa chiave in una cartella non attendibile solo dai [file di impostazioni che non vengono controllati nel repository](/it/mcp#managing-your-servers) | `["memory", "github"]` |

271| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Estendi l'elenco di autorizzazione `availableModels` al modello Predefinito. Quando `true` nelle impostazioni gestite e `availableModels` è un array non vuoto, l'opzione Predefinito ricade alla prima voce nella lista di autorizzazione che è disponibile, ma solo quando il modello predefinito per il tipo di account dell'utente non è nell'elenco di autorizzazione; un predefinito nella lista di autorizzazione viene mantenuto così com'è. Non ha effetto quando `availableModels` non è impostato o è vuoto. Vedi [Applica l'elenco di autorizzazione al modello Predefinito](/it/model-config#enforce-the-allowlist-for-the-default-model). Richiede Claude Code v2.1.175 o successivo | `true` |272| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Estendi l'elenco di autorizzazione `availableModels` al modello Predefinito. Quando `true` nelle impostazioni gestite e `availableModels` è un array non vuoto, l'opzione Predefinito ricade alla prima voce nella lista di autorizzazione che è disponibile, ma solo quando il modello predefinito per il quale il modello Predefinito si risolverebbe (il [predefinito organizzativo](/it/model-config#organization-default-model) quando uno si applica, altrimenti il predefinito del tipo di account) non è nell'elenco di autorizzazione; un predefinito nella lista di autorizzazione viene mantenuto così com'è. Non ha effetto quando `availableModels` non è impostato o è vuoto. Vedi [Applica l'elenco di autorizzazione al modello Predefinito](/it/model-config#enforce-the-allowlist-for-the-default-model). Richiede Claude Code v2.1.175 o successivo | `true` |

272| `env` | Variabili di ambiente applicate a ogni sessione e ai sottoprocessi che Claude Code genera da essa. {/* min-version: 2.1.143 */}A partire da v2.1.143, `NO_COLOR` e `FORCE_COLOR` impostati qui vengono passati ai sottoprocessi ma non cambiano i colori dell'interfaccia di Claude Code stesso. Imposta quelli nella tua shell prima di lanciare `claude` per cambiare i colori dell'interfaccia. {/* min-version: 2.1.195 */}A partire da v2.1.195, le variabili di identità che gli ambienti di hosting di Claude Code impostano, ad esempio `CLAUDE_CODE_REMOTE` e `CLAUDE_CODE_ACCOUNT_UUID`, vengono ignorate quando impostate qui | `{"FOO": "bar"}` |273| `env` | Variabili di ambiente applicate a ogni sessione e ai sottoprocessi che Claude Code genera da essa. Imposta una variabile a `""` per ignorare un'esportazione della shell con una stringa vuota, che Claude Code tratta come non impostata per la selezione del provider. I sottoprocessi ereditano comunque il valore vuoto. `NO_COLOR` e `FORCE_COLOR` impostati qui raggiungono solo i sottoprocessi; per cambiare i colori dell'interfaccia di Claude Code stesso, impostali nella tua shell prima di lanciare `claude`. {/* min-version: 2.1.195 */}A partire da v2.1.195, le variabili di identità che gli ambienti di hosting di Claude Code impostano, ad esempio `CLAUDE_CODE_REMOTE` e `CLAUDE_CODE_ACCOUNT_UUID`, vengono ignorate quando impostate qui | `{"FOO": "bar"}` |

273| `fallbackModel` | Modello/i di fallback da provare in ordine quando il modello primario è sovraccarico o non disponibile. Claude Code passa al modello disponibile successivo nella catena per il resto del turno e mostra un avviso. `"default"` si espande al modello predefinito. Le catene sono limitate a tre modelli; le voci extra vengono ignorate. A differenza della maggior parte delle impostazioni di array, questa chiave non si unisce tra i file di impostazioni: il file con la precedenza più alta che la definisce fornisce l'intera catena. Il flag [`--fallback-model`](/it/cli-reference#cli-flags) ignora questo per una sessione. Vedi [Catene di modelli di fallback](/it/model-config#fallback-model-chains) | `["claude-sonnet-5", "claude-haiku-4-5"]` |274| `fallbackModel` | Modello/i di fallback da provare in ordine quando il modello primario è sovraccarico o non disponibile. Claude Code passa al modello disponibile successivo nella catena per il resto del turno e mostra un avviso. `"default"` si espande al modello predefinito. Le catene sono limitate a tre modelli; le voci extra vengono ignorate. A differenza della maggior parte delle impostazioni di array, questa chiave non si unisce tra i file di impostazioni: il file con la precedenza più alta che la definisce fornisce l'intera catena. Il flag [`--fallback-model`](/it/cli-reference#cli-flags) ignora questo per una sessione. Vedi [Catene di modelli di fallback](/it/model-config#fallback-model-chains) | `["claude-sonnet-5", "claude-haiku-4-5"]` |

275| `fastMode` | Attiva la [modalità veloce](/it/fast-mode) per le sessioni dove è disponibile. Attivare/disattivare con `/fast` scrive `true` qui nelle impostazioni utente e rimuove la chiave quando disattivi la modalità veloce | `true` |

274| `fastModePerSessionOptIn` | Quando `true`, la modalità veloce non persiste tra le sessioni. Ogni sessione inizia con la modalità veloce disattivata, richiedendo agli utenti di abilitarla con `/fast`. La preferenza della modalità veloce dell'utente viene comunque salvata. Vedi [Richiedi opt-in per sessione](/it/fast-mode#require-per-session-opt-in) | `true` |276| `fastModePerSessionOptIn` | Quando `true`, la modalità veloce non persiste tra le sessioni. Ogni sessione inizia con la modalità veloce disattivata, richiedendo agli utenti di abilitarla con `/fast`. La preferenza della modalità veloce dell'utente viene comunque salvata. Vedi [Richiedi opt-in per sessione](/it/fast-mode#require-per-session-opt-in) | `true` |

275| `feedbackSurveyRate` | Probabilità (0–1) che il [sondaggio sulla qualità della sessione](/it/data-usage#session-quality-surveys) appaia quando idoneo. Imposta a `0` per sopprimere completamente, o imposta [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/it/env-vars) in `env`. Utile quando si utilizza Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry dove il tasso di campionamento predefinito non si applica | `0.05` |277| `feedbackSurveyRate` | Probabilità (0–1) che il [sondaggio sulla qualità della sessione](/it/data-usage#session-quality-surveys) appaia quando idoneo. Imposta a `0` per sopprimere completamente, o imposta [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/it/env-vars) in `env`. Utile quando si utilizza Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry dove il tasso di campionamento predefinito non si applica | `0.05` |

276| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}**Predefinito**: `true`. Snapshot dei file prima di ogni edit in modo che [`/rewind`](/it/checkpointing) possa ripristinarli. Appare in `/config` come **Rewind code (checkpoints)**. Per disabilitare tramite variabile di ambiente, imposta [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/it/env-vars) in `env` | `false` |278| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}**Predefinito**: `true`. Snapshot dei file prima di ogni edit in modo che [`/rewind`](/it/checkpointing) possa ripristinarli. Appare in `/config` come **Rewind code (checkpoints)**. Per disabilitare tramite variabile di ambiente, imposta [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/it/env-vars) in `env` | `false` |


308| `showClearContextOnPlanAccept` | **Predefinito**: `false`. Mostra l'opzione "cancella contesto" nella schermata di accettazione del piano. Imposta a `true` per ripristinare l'opzione | `true` |310| `showClearContextOnPlanAccept` | **Predefinito**: `false`. Mostra l'opzione "cancella contesto" nella schermata di accettazione del piano. Imposta a `true` per ripristinare l'opzione | `true` |

309| `showThinkingSummaries` | **Predefinito**: `false`. Mostra i riassunti del [pensiero esteso](/it/model-config#extended-thinking) nelle sessioni interattive. Quando non impostato o `false`, i blocchi di pensiero vengono redatti dall'API e mostrati come uno stub compresso. La redazione cambia solo quello che vedi, non quello che il modello genera: per ridurre la spesa di pensiero, [abbassa il budget o disabilita il pensiero](/it/model-config#extended-thinking) invece. Questa impostazione non ha effetto in modalità non interattiva (`-p`), l'Agent SDK, o le estensioni IDE come VS Code | `true` |311| `showThinkingSummaries` | **Predefinito**: `false`. Mostra i riassunti del [pensiero esteso](/it/model-config#extended-thinking) nelle sessioni interattive. Quando non impostato o `false`, i blocchi di pensiero vengono redatti dall'API e mostrati come uno stub compresso. La redazione cambia solo quello che vedi, non quello che il modello genera: per ridurre la spesa di pensiero, [abbassa il budget o disabilita il pensiero](/it/model-config#extended-thinking) invece. Questa impostazione non ha effetto in modalità non interattiva (`-p`), l'Agent SDK, o le estensioni IDE come VS Code | `true` |

310| `showTurnDuration` | **Predefinito**: `true`. Mostra i messaggi di durata del turno dopo le risposte, ad es. "Cooked for 1m 6s". Appare in `/config` come **Show turn duration** | `false` |312| `showTurnDuration` | **Predefinito**: `true`. Mostra i messaggi di durata del turno dopo le risposte, ad es. "Cooked for 1m 6s". Appare in `/config` come **Show turn duration** | `false` |

311| `skillListingBudgetFraction` | {/* min-version: 2.1.105 */}**Predefinito**: `0.01`. Frazione della finestra di contesto del modello riservata all'[elenco di skills](/it/skills#skill-descriptions-are-cut-short) che Claude vede ogni turno, quindi il predefinito riserva l'1%. Quando l'elenco supera il budget, le descrizioni per gli skills meno utilizzati vengono eliminate e vengono elencati solo i loro nomi, in modo che Claude possa comunque invocarli ma non possa vedere cosa fanno. Aumenta per mantenere più descrizioni visibili al costo di più contesto per turno. `/doctor` stima il costo dell'elenco rispetto al budget. Richiede Claude Code v2.1.105 o successivo | `0.02` |313| `skillListingBudgetFraction` | **Predefinito**: `0.01`. Frazione della finestra di contesto del modello riservata all'[elenco di skills](/it/skills#skill-descriptions-are-cut-short) che Claude vede ogni turno, quindi il predefinito riserva l'1%. Quando l'elenco supera il budget, le descrizioni per gli skills meno utilizzati vengono eliminate e vengono elencati solo i loro nomi, in modo che Claude possa comunque invocarli ma non possa vedere cosa fanno. Aumenta per mantenere più descrizioni visibili al costo di più contesto per turno. `/doctor` stima il costo dell'elenco rispetto al budget | `0.02` |

312| `skillListingMaxDescChars` | {/* min-version: 2.1.105 */}**Predefinito**: `1536`. Limite di caratteri per skill sul testo combinato `description` e `when_to_use` nell'[elenco di skills](/it/skills#skill-descriptions-are-cut-short) che Claude vede ogni turno. Il testo più lungo di questo viene troncato. Aumenta per mantenere le descrizioni lunghe intatte al costo di più contesto per turno; riduci per adattare più skills sotto [`skillListingBudgetFraction`](#available-settings). Richiede Claude Code v2.1.105 o successivo | `2048` |314| `skillListingMaxDescChars` | **Predefinito**: `1536`. Limite di caratteri per skill sul testo combinato `description` e `when_to_use` nell'[elenco di skills](/it/skills#skill-descriptions-are-cut-short) che Claude vede ogni turno. Il testo più lungo di questo viene troncato. Aumenta per mantenere le descrizioni lunghe intatte al costo di più contesto per turno; riduci per adattare più skills sotto [`skillListingBudgetFraction`](#available-settings) | `2048` |

313| `skillOverrides` | {/* min-version: 2.1.129 */}Override di visibilità per skill, con chiave il nome dello skill. Il valore è `"on"`, `"name-only"`, `"user-invocable-only"`, o `"off"`. Ti consente di nascondere o comprimere uno skill senza modificare il suo SKILL.md. Non si applica ai plugin skills, che vengono gestiti tramite `/plugin`. Il menu `/skills` scrive questi in `.claude/settings.local.json`. Vedi [Override della visibilità dello skill dalle impostazioni](/it/skills#override-skill-visibility-from-settings). Richiede Claude Code v2.1.129 o successivo | `{"legacy-context": "name-only", "deploy": "off"}` |315| `skillOverrides` | {/* min-version: 2.1.129 */}Override di visibilità per skill, con chiave il nome dello skill. Il valore è `"on"`, `"name-only"`, `"user-invocable-only"`, o `"off"`. Ti consente di nascondere o comprimere uno skill senza modificare il suo SKILL.md. Non si applica ai plugin skills, che vengono gestiti tramite `/plugin`. Il menu `/skills` scrive questi in `.claude/settings.local.json`. Vedi [Override della visibilità dello skill dalle impostazioni](/it/skills#override-skill-visibility-from-settings). Richiede Claude Code v2.1.129 o successivo | `{"legacy-context": "name-only", "deploy": "off"}` |

314| `skipWebFetchPreflight` | Salta il [controllo di sicurezza del dominio WebFetch](/it/data-usage#webfetch-domain-safety-check) che invia ogni hostname richiesto a `api.anthropic.com` prima del recupero. Imposta a `true` negli ambienti che bloccano il traffico verso Anthropic, come le distribuzioni Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry con egress restrittivo. Quando saltato, WebFetch tenta qualsiasi URL senza consultare l'elenco di blocco | `true` |316| `skipWebFetchPreflight` | Salta il [controllo di sicurezza del dominio WebFetch](/it/data-usage#webfetch-domain-safety-check) che invia ogni hostname richiesto a `api.anthropic.com` prima del recupero. Imposta a `true` negli ambienti che bloccano il traffico verso Anthropic, come le distribuzioni Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry con egress restrittivo. Quando saltato, WebFetch tenta qualsiasi URL senza consultare l'elenco di blocco | `true` |

315| `spinnerTipsEnabled` | **Predefinito**: `true`. Mostra suggerimenti nello spinner mentre Claude sta lavorando. Imposta a `false` per disabilitare i suggerimenti | `false` |317| `spinnerTipsEnabled` | **Predefinito**: `true`. Mostra suggerimenti nello spinner mentre Claude sta lavorando. Imposta a `false` per disabilitare i suggerimenti | `false` |


328| `useAutoModeDuringPlan` | **Predefinito**: `true`. Se la modalità piano utilizza la semantica della modalità auto quando la modalità auto è disponibile. Non letto dalle impostazioni di progetto condivise. Appare in `/config` come "Use auto mode during plan" | `false` |330| `useAutoModeDuringPlan` | **Predefinito**: `true`. Se la modalità piano utilizza la semantica della modalità auto quando la modalità auto è disponibile. Non letto dalle impostazioni di progetto condivise. Appare in `/config` come "Use auto mode during plan" | `false` |

329| `verbose` | {/* min-version: 2.1.119 */}**Predefinito**: `false`. Mostra l'output completo dello strumento invece dei riassunti troncati. Appare in `/config` come **Verbose output**. Il flag `--verbose` ignora questo per una sessione | `true` |331| `verbose` | {/* min-version: 2.1.119 */}**Predefinito**: `false`. Mostra l'output completo dello strumento invece dei riassunti troncati. Appare in `/config` come **Verbose output**. Il flag `--verbose` ignora questo per una sessione | `true` |

330| `viewMode` | Modalità di visualizzazione della trascrizione predefinita all'avvio: `"default"`, `"verbose"`, o `"focus"`. Ignora la selezione sticky `/focus` quando impostato. Il flag `--verbose` ignora questo per una sessione | `"verbose"` |332| `viewMode` | Modalità di visualizzazione della trascrizione predefinita all'avvio: `"default"`, `"verbose"`, o `"focus"`. Ignora la selezione sticky `/focus` quando impostato. Il flag `--verbose` ignora questo per una sessione | `"verbose"` |

333| `vimInsertModeRemaps` | {/* min-version: 2.1.208 */}Mappa sequenze INSERT-mode a due tasti a Escape nella [modalità editor vim](/it/interactive-mode#vim-editor-mode). Ogni chiave è esattamente due caratteri stampabili digitati in sequenza, e `"<Esc>"` è l'unico target supportato; altre voci vengono ignorate. Letto dalle impostazioni utente, dal flag `--settings`, e dalle impostazioni gestite solo, in modo che le impostazioni controllate di un repository non possono rimappare i tuoi tasti. Non ha effetto a meno che `editorMode` non sia `"vim"`. Vedi [Rimappa sequenze di tasti INSERT-mode](/it/interactive-mode#remap-insert-mode-key-sequences). Richiede Claude Code v2.1.208 o successivo | `{"jj": "<Esc>"}` |

331| `voice` | Impostazioni della [dettatura vocale](/it/voice-dictation): `enabled` attiva la dettatura, `mode` seleziona `"hold"` o `"tap"`, e `autoSubmit` invia il prompt al rilascio del tasto in modalità hold. Scritto automaticamente quando esegui `/voice`. Richiede un account Claude.ai | `{ "enabled": true, "mode": "tap" }` |334| `voice` | Impostazioni della [dettatura vocale](/it/voice-dictation): `enabled` attiva la dettatura, `mode` seleziona `"hold"` o `"tap"`, e `autoSubmit` invia il prompt al rilascio del tasto in modalità hold. Scritto automaticamente quando esegui `/voice`. Richiede un account Claude.ai | `{ "enabled": true, "mode": "tap" }` |

332| `voiceEnabled` | Alias legacy per `voice.enabled`. Preferisci l'oggetto `voice` | `true` |335| `voiceEnabled` | Alias legacy per `voice.enabled`. Preferisci l'oggetto `voice` | `true` |

333| `wheelScrollAccelerationEnabled` | {/* min-version: 2.1.174 */}**Predefinito**: `true`. Nel [rendering fullscreen](/it/fullscreen#mouse-wheel-scrolling), accelera la velocità di scorrimento della rotella del mouse durante gli scorrimenti veloci. Imposta a `false` per una velocità di scorrimento costante per tacca della rotella. Richiede Claude Code v2.1.174 o successivo | `false` |336| `wheelScrollAccelerationEnabled` | {/* min-version: 2.1.174 */}**Predefinito**: `true`. Nel [rendering fullscreen](/it/fullscreen#mouse-wheel-scrolling), accelera la velocità di scorrimento della rotella del mouse durante gli scorrimenti veloci. Imposta a `false` per una velocità di scorrimento costante per tacca della rotella. Richiede Claude Code v2.1.174 o successivo | `false` |


345</Note>348</Note>

346 349 

347| Chiave | Descrizione | Esempio |350| Chiave | Descrizione | Esempio |

348| :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |351| :--------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

349| `autoConnectIde` | **Predefinito**: `false`. Connettiti automaticamente a un IDE in esecuzione quando Claude Code si avvia da un terminale esterno. Appare in `/config` come **Auto-connect to IDE (external terminal)** quando eseguito al di fuori di un terminale VS Code o JetBrains. La variabile di ambiente [`CLAUDE_CODE_AUTO_CONNECT_IDE`](/it/env-vars) ignora questo quando impostata | `true` |352| `autoConnectIde` | **Predefinito**: `false`. Connettiti automaticamente a un IDE in esecuzione quando Claude Code si avvia da un terminale esterno. Appare in `/config` come **Auto-connect to IDE (external terminal)** quando eseguito al di fuori di un terminale VS Code o JetBrains. La variabile di ambiente [`CLAUDE_CODE_AUTO_CONNECT_IDE`](/it/env-vars) ignora questo quando impostata | `true` |

350| `autoInstallIdeExtension` | **Predefinito**: `true`. Installa automaticamente l'estensione IDE di Claude Code quando eseguito da un terminale VS Code. Appare in `/config` come **Auto-install IDE extension** quando eseguito all'interno di un terminale VS Code o JetBrains. Puoi anche impostare la variabile di ambiente [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/it/env-vars) a `1` | `false` |353| `autoInstallIdeExtension` | **Predefinito**: `true`. Installa automaticamente l'estensione IDE di Claude Code quando eseguito da un terminale VS Code. Appare in `/config` come **Auto-install IDE extension** quando eseguito all'interno di un terminale VS Code o JetBrains. Puoi anche impostare la variabile di ambiente [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/it/env-vars) a `1` | `false` |

351| `externalEditorContext` | **Predefinito**: `false`. Prependi la risposta precedente di Claude come contesto commentato con `#` quando apri l'editor esterno con `Ctrl+G`. Appare in `/config` come **Show last response in external editor** | `true` |354| `externalEditorContext` | **Predefinito**: `false`. Prependi la risposta precedente di Claude come contesto commentato con `#` quando apri l'editor esterno con `Ctrl+G`. Appare in `/config` come **Show last response in external editor** | `true` |

355| `permissionExplainerEnabled` | **Predefinito**: `true`. Mostra una [spiegazione generata dal modello del comando](/it/permissions#permission-system) quando premi `Ctrl+E` su un prompt di permesso Bash o PowerShell. Imposta a `false` per disattivare la scorciatoia | `false` |

352| `teammateDefaultModel` | Modello predefinito per i compagni di squadra del [team di agenti](/it/agent-teams) quando il prompt di spawn non ne specifica uno. Imposta a un alias di modello come `"sonnet"`, o `null` per ereditare la selezione `/model` corrente del lead. Appare in `/config` come **Default teammate model** | `"sonnet"` |356| `teammateDefaultModel` | Modello predefinito per i compagni di squadra del [team di agenti](/it/agent-teams) quando il prompt di spawn non ne specifica uno. Imposta a un alias di modello come `"sonnet"`, o `null` per ereditare la selezione `/model` corrente del lead. Appare in `/config` come **Default teammate model** | `"sonnet"` |

353| `workflowSizeGuideline` | {/* min-version: 2.1.202 */}**Predefinito**: `unrestricted`, che non invia alcuna linea guida. Imposta il [numero di agenti che Claude mira](/it/workflows#set-a-size-guideline) nei flussi di lavoro dinamici che scrive. Claude Code invia il valore a Claude come consiglio, non un limite applicato. Accetta `unrestricted`, `small`, `medium`, o `large`. Appare in `/config` come **Dynamic workflow size**. Puoi anche impostarlo direttamente con `/config workflowSizeGuideline=small`. Richiede Claude Code v2.1.202 o successivo. {/* min-version: 2.1.203 */}La linea guida del numero di agenti sostituisce anche la soglia predefinita per l'[avviso `Large workflow`](/it/workflows#cost); quel comportamento richiede Claude Code v2.1.203 o successivo | `"small"` |357| `workflowSizeGuideline` | {/* min-version: 2.1.202 */}**Predefinito**: `unrestricted`, che non invia alcuna linea guida. Imposta il [numero di agenti che Claude mira](/it/workflows#set-a-size-guideline) nei flussi di lavoro dinamici che scrive. Claude Code invia il valore a Claude come consiglio, non un limite applicato. Accetta `unrestricted`, `small`, `medium`, o `large`. Appare in `/config` come **Dynamic workflow size**. Puoi anche impostarlo direttamente con `/config workflowSizeGuideline=small`. Richiede Claude Code v2.1.202 o successivo. {/* min-version: 2.1.203 */}La linea guida del numero di agenti sostituisce anche la soglia predefinita per l'[avviso `Large workflow`](/it/workflows#cost); quel comportamento richiede Claude Code v2.1.203 o successivo | `"small"` |

354 358 


360 364 

361| Chiave | Descrizione | Esempio |365| Chiave | Descrizione | Esempio |

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

363| `worktree.baseRef` | Quale ref i nuovi worktrees si diramano da. `"fresh"` (predefinito) si dirama da `origin/<default-branch>` per un albero pulito che corrisponde al remoto. `"head"` si dirama dal tuo `HEAD` locale corrente, quindi i commit non spinti e lo stato del ramo di funzionalità sono presenti nel worktree. Si applica a `--worktree`, lo strumento `EnterWorktree`, e l'isolamento del subagent | `"head"` |367| `worktree.baseRef` | Quale ref i nuovi worktrees si diramano da. `"fresh"` (predefinito) si dirama da `origin/<default-branch>` per un albero pulito che corrisponde al remoto. `"head"` si dirama dal tuo `HEAD` locale corrente, quindi i commit non spinti e lo stato del ramo di funzionalità sono presenti nel worktree. All'interno di un worktree collegato, `"head"` si risolve in quel worktree `HEAD`, non nel `HEAD` del checkout principale. Si applica a `--worktree`, lo strumento `EnterWorktree`, e l'isolamento del subagent | `"head"` |

364| `worktree.symlinkDirectories` | Directory da collegare simbolicamente dal repository principale in ogni worktree per evitare di duplicare grandi directory su disco. Nessuna directory viene collegata simbolicamente per impostazione predefinita | `["node_modules", ".cache"]` |368| `worktree.symlinkDirectories` | Directory da collegare simbolicamente dal repository principale in ogni worktree per evitare di duplicare grandi directory su disco. Nessuna directory viene collegata simbolicamente per impostazione predefinita | `["node_modules", ".cache"]` |

365| `worktree.sparsePaths` | Directory da estrarre in ogni worktree tramite git sparse-checkout. Solo i percorsi elencati più i file a livello di radice vengono scritti su disco, il che è più veloce nei grandi monorepo | `["packages/my-app", "shared/utils"]` |369| `worktree.sparsePaths` | Directory da estrarre in ogni worktree tramite git sparse-checkout. Solo i percorsi elencati più i file a livello di radice vengono scritti su disco, il che è più veloce nei grandi monorepo. Mentre esiste un worktree sparse, git abilita `extensions.worktreeConfig` nel `.git/config` condiviso del repository; vedi [Estrai solo le directory di cui hai bisogno](/it/large-codebases#check-out-only-the-directories-you-need) | `["packages/my-app", "shared/utils"]` |

366| `worktree.bgIsolation` | {/* min-version: 2.1.143 */}Modalità di isolamento per le [sessioni in background](/it/agent-view#how-file-edits-are-isolated). `"worktree"` (predefinito) blocca `Edit`/`Write` nel checkout principale fino a quando non viene chiamato `EnterWorktree`. {/* min-version: 2.1.203 */}Al di fuori di un repository git, un [`WorktreeCreate` hook](/it/worktrees#non-git-version-control) che fallisce rilascia il blocco in modo che la sessione possa modificare la directory di lavoro in posizione; richiede Claude Code v2.1.203 o successivo. `"none"` consente ai lavori in background di modificare direttamente la copia di lavoro. Richiede Claude Code v2.1.143 o successivo | `"none"` |370| `worktree.bgIsolation` | {/* min-version: 2.1.143 */}Modalità di isolamento per le [sessioni in background](/it/agent-view#how-file-edits-are-isolated). `"worktree"` (predefinito) blocca `Edit`/`Write` nel checkout principale fino a quando non viene chiamato `EnterWorktree`. {/* min-version: 2.1.203 */}Al di fuori di un repository git, un [`WorktreeCreate` hook](/it/worktrees#non-git-version-control) che fallisce rilascia il blocco in modo che la sessione possa modificare la directory di lavoro in posizione; richiede Claude Code v2.1.203 o successivo. `"none"` consente ai lavori in background di modificare direttamente la copia di lavoro. Richiede Claude Code v2.1.143 o successivo | `"none"` |

367 371 

368Per copiare file gitignored come `.env` nei nuovi worktrees, usa un file [`.worktreeinclude`](/it/worktrees#copy-gitignored-files-into-worktrees) nella radice del tuo progetto invece di un'impostazione.372Per copiare file gitignored come `.env` nei nuovi worktrees, usa un file [`.worktreeinclude`](/it/worktrees#copy-gitignored-files-into-worktrees) nella radice del tuo progetto invece di un'impostazione.


372</h3>376</h3>

373 377 

374| Chiavi | Descrizione | Esempio |378| Chiavi | Descrizione | Esempio |

375| :---------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |379| :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

376| `allow` | Array di regole di permesso per consentire l'uso dello strumento. I glob dei nomi degli strumenti sono supportati solo nella posizione dello strumento dopo un prefisso letterale `mcp__<server>__`, come `mcp__github__get_*`; il segmento del server deve essere privo di glob. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) sottostante per i dettagli della corrispondenza dei modelli | `[ "Bash(git diff *)" ]` |380| `allow` | Array di regole di permesso per consentire l'uso dello strumento. I glob dei nomi degli strumenti sono supportati solo nella posizione dello strumento dopo un prefisso letterale `mcp__<server>__`, come `mcp__github__get_*`; il segmento del server deve essere privo di glob. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) sottostante per i dettagli della corrispondenza dei modelli | `[ "Bash(git diff *)" ]` |

377| `ask` | Array di regole di permesso per chiedere conferma all'uso dello strumento. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) sottostante | `[ "Bash(git push *)" ]` |381| `ask` | Array di regole di permesso per chiedere conferma all'uso dello strumento. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) sottostante | `[ "Bash(git push *)" ]` |

378| `deny` | Array di regole di permesso per negare l'uso dello strumento. Usa questo per escludere file sensibili dall'accesso di Claude Code. I nomi degli strumenti accettano modelli glob: `"*"` nega ogni strumento e `"mcp__*"` nega tutti gli strumenti MCP. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) e [Limitazioni dei permessi Bash](/it/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |382| `deny` | Array di regole di permesso per negare l'uso dello strumento. Usa questo per escludere file sensibili dall'accesso di Claude Code. I nomi degli strumenti accettano modelli glob: `"*"` nega ogni strumento e `"mcp__*"` nega tutti gli strumenti MCP. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) e [Limitazioni dei permessi Bash](/it/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

379| `additionalDirectories` | [Directory di lavoro](/it/permissions#working-directories) aggiuntive per l'accesso ai file. La maggior parte della configurazione `.claude/` [non viene scoperta](/it/permissions#additional-directories-grant-file-access-not-configuration) da queste directory | `[ "../docs/" ]` |383| `additionalDirectories` | [Directory di lavoro](/it/permissions#working-directories) aggiuntive per l'accesso ai file. La maggior parte della configurazione `.claude/` [non viene scoperta](/it/permissions#additional-directories-grant-file-access-not-configuration) da queste directory | `[ "../docs/" ]` |

380| `defaultMode` | [Modalità di permesso](/it/permission-modes) predefinita quando si apre Claude Code. Valori validi: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, e {/* min-version: 2.1.200 */}}`manual` come alias per `default`, la modalità etichettata Manual nella CLI e nelle estensioni VS Code e JetBrains. L'alias `manual` richiede Claude Code v2.1.200 o successivo. {/* min-version: 2.1.142 */}}`auto` viene ignorato quando impostato nelle impostazioni di progetto o locale, in modo che un repository non possa concedere a se stesso la modalità auto; impostalo invece in `~/.claude/settings.json`. Prima di v2.1.142, le impostazioni di progetto potevano impostare `auto`. Il flag CLI `--permission-mode` ignora questa impostazione per una singola sessione | `"acceptEdits"` |384| `defaultMode` | [Modalità di permesso](/it/permission-modes) predefinita quando si apre Claude Code. Valori validi: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, e {{/* min-version: 2.1.200 */}}`manual` come alias per `default`, la modalità etichettata Manual nella CLI, nelle estensioni VS Code e JetBrains, e nell'app desktop. L'alias `manual` richiede Claude Code v2.1.200 o successivo. {{/* min-version: 2.1.142 */}}`auto` viene ignorato quando impostato nelle impostazioni di progetto o locale, in modo che un repository non possa concedere a se stesso la modalità auto; impostalo invece in `~/.claude/settings.json`. Prima di v2.1.142, le impostazioni di progetto potevano impostare `auto`. Il flag CLI `--permission-mode` ignora questa impostazione per una singola sessione | `"acceptEdits"` |

381| `disableBypassPermissionsMode` | Imposta a `"disable"` per prevenire l'attivazione della modalità `bypassPermissions`. Disabilita il flag della riga di comando `--dangerously-skip-permissions`. Molto utile nelle [impostazioni gestite](/it/permissions#managed-settings) per applicare la politica organizzativa, ma funziona da qualsiasi ambito | `"disable"` |385| `disableBypassPermissionsMode` | Imposta a `"disable"` per prevenire l'attivazione della modalità `bypassPermissions`. Disabilita il flag della riga di comando `--dangerously-skip-permissions`. Molto utile nelle [impostazioni gestite](/it/permissions#managed-settings) per applicare la politica organizzativa, ma funziona da qualsiasi ambito | `"disable"` |

382| `skipDangerousModePermissionPrompt` | Salta il prompt di conferma mostrato prima di entrare nella modalità bypass dei permessi tramite `--dangerously-skip-permissions` o `defaultMode: "bypassPermissions"`. Ignorato quando impostato nelle impostazioni di progetto (`.claude/settings.json`) per prevenire che i repository non attendibili ignorino automaticamente il prompt | `true` |386| `skipDangerousModePermissionPrompt` | Salta il prompt di conferma mostrato prima di entrare nella modalità bypass dei permessi tramite `--dangerously-skip-permissions` o `defaultMode: "bypassPermissions"`. Ignorato quando impostato nelle impostazioni di progetto (`.claude/settings.json`) per prevenire che i repository non attendibili ignorino automaticamente il prompt | `true` |

383 387 


405Configura il comportamento avanzato del sandboxing. Il sandboxing isola i comandi bash dal tuo filesystem e dalla rete. Vedi [Sandboxing](/it/sandboxing) per i dettagli.409Configura il comportamento avanzato del sandboxing. Il sandboxing isola i comandi bash dal tuo filesystem e dalla rete. Vedi [Sandboxing](/it/sandboxing) per i dettagli.

406 410 

407| Chiavi | Descrizione | Esempio |411| Chiavi | Descrizione | Esempio |

408| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |412| :------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

409| `enabled` | Abilita il sandboxing bash (macOS, Linux e WSL2). Predefinito: false | `true` |413| `enabled` | Abilita il sandboxing bash (macOS, Linux e WSL2). Predefinito: false | `true` |

410| `failIfUnavailable` | Esci con un errore all'avvio se `sandbox.enabled` è true ma la sandbox non può avviarsi (dipendenze mancanti, piattaforma non supportata). Quando false (predefinito), viene mostrato un avviso e i comandi vengono eseguiti senza sandbox. Destinato alle distribuzioni di impostazioni gestite che richiedono il sandboxing come gate rigido | `true` |414| `failIfUnavailable` | Esci con un errore all'avvio se `sandbox.enabled` è true ma la sandbox non può avviarsi (dipendenze mancanti, piattaforma non supportata). Quando false (predefinito), viene mostrato un avviso e i comandi vengono eseguiti senza sandbox. Destinato alle distribuzioni di impostazioni gestite che richiedono il sandboxing come gate rigido | `true` |

411| `autoAllowBashIfSandboxed` | Approva automaticamente i comandi bash quando sandboxed. Predefinito: true | `true` |415| `autoAllowBashIfSandboxed` | Approva automaticamente i comandi bash quando sandboxed. Predefinito: true | `true` |


414| `filesystem.allowWrite` | Percorsi aggiuntivi dove i comandi sandboxed possono scrivere. Gli array vengono uniti in tutti gli ambiti di impostazioni: i percorsi utente, progetto e gestiti vengono combinati, non sostituiti. Anche uniti con i percorsi dalle regole di permesso `Edit(...)` allow. Vedi [prefissi di percorso](#sandbox-path-prefixes) sottostante. | `["/tmp/build", "~/.kube"]` |418| `filesystem.allowWrite` | Percorsi aggiuntivi dove i comandi sandboxed possono scrivere. Gli array vengono uniti in tutti gli ambiti di impostazioni: i percorsi utente, progetto e gestiti vengono combinati, non sostituiti. Anche uniti con i percorsi dalle regole di permesso `Edit(...)` allow. Vedi [prefissi di percorso](#sandbox-path-prefixes) sottostante. | `["/tmp/build", "~/.kube"]` |

415| `filesystem.denyWrite` | Percorsi dove i comandi sandboxed non possono scrivere. Gli array vengono uniti in tutti gli ambiti di impostazioni. Anche uniti con i percorsi dalle regole di permesso `Edit(...)` deny. | `["/etc", "/usr/local/bin"]` |419| `filesystem.denyWrite` | Percorsi dove i comandi sandboxed non possono scrivere. Gli array vengono uniti in tutti gli ambiti di impostazioni. Anche uniti con i percorsi dalle regole di permesso `Edit(...)` deny. | `["/etc", "/usr/local/bin"]` |

416| `filesystem.denyRead` | Percorsi dove i comandi sandboxed non possono leggere. Gli array vengono uniti in tutti gli ambiti di impostazioni. Anche uniti con i percorsi dalle regole di permesso `Read(...)` deny. | `["~/.aws/credentials"]` |420| `filesystem.denyRead` | Percorsi dove i comandi sandboxed non possono leggere. Gli array vengono uniti in tutti gli ambiti di impostazioni. Anche uniti con i percorsi dalle regole di permesso `Read(...)` deny. | `["~/.aws/credentials"]` |

417| `filesystem.allowRead` | Percorsi per consentire nuovamente la lettura all'interno delle regioni `denyRead`. Ha la precedenza su `denyRead`. Gli array vengono uniti in tutti gli ambiti di impostazioni. Usa questo per creare modelli di accesso in lettura solo per l'area di lavoro. | `["."]` |421| `filesystem.allowRead` | Percorsi per consentire nuovamente la lettura all'interno delle regioni `denyRead`. Una voce `allowRead` riapre la lettura all'interno di una regione `denyRead` più ampia, e un percorso esatto in `denyRead` rimane bloccato all'interno di una regione `allowRead` più ampia; vedi la [tabella di sovrapposizione](/it/sandboxing#configure-sandboxing) per gli esempi. Gli array vengono uniti in tutti gli ambiti di impostazioni. Usa questo per creare modelli di accesso in lettura solo per l'area di lavoro. | `["."]` |

418| `filesystem.allowManagedReadPathsOnly` | (Solo impostazioni gestite) Solo i percorsi `filesystem.allowRead` dalle impostazioni gestite sono rispettati. `denyRead` si unisce comunque da tutte le fonti. Predefinito: false | `true` |422| `filesystem.allowManagedReadPathsOnly` | (Solo impostazioni gestite) Solo i percorsi `filesystem.allowRead` dalle impostazioni gestite sono rispettati. `denyRead` si unisce comunque da tutte le fonti. Predefinito: false | `true` |

419| `credentials.files` | {/* min-version: 2.1.187 */}File o directory di credenziali che i comandi sandboxed non possono leggere. Applica lo stesso blocco di lettura di `filesystem.denyRead`; la chiave separata mantiene i percorsi delle credenziali raggruppati con `credentials.envVars` e separati dalle regole generali del filesystem. Ogni voce è `{ "path": "...", "mode": "deny" }`, e `deny` è l'unica modalità supportata per i file. I percorsi utilizzano gli stessi [prefissi](#sandbox-path-prefixes) di `filesystem.*` impostazioni. Gli array vengono uniti in tutti gli ambiti di impostazioni. Richiede Claude Code v2.1.187 o successivo. | `[{ "path": "~/.aws/credentials", "mode": "deny" }]` |423| `credentials.files` | {/* min-version: 2.1.187 */}File o directory di credenziali che i comandi sandboxed non possono leggere. Applica lo stesso blocco di lettura di `filesystem.denyRead`; la chiave separata mantiene i percorsi delle credenziali raggruppati con `credentials.envVars` e separati dalle regole generali del filesystem. Ogni voce è `{ "path": "...", "mode": "deny" }`, e `deny` è l'unica modalità supportata per i file. I percorsi utilizzano gli stessi [prefissi](#sandbox-path-prefixes) di `filesystem.*` impostazioni. Gli array vengono uniti in tutti gli ambiti di impostazioni. Richiede Claude Code v2.1.187 o successivo. | `[{ "path": "~/.aws/credentials", "mode": "deny" }]` |

420| `credentials.envVars` | {/* min-version: 2.1.187 */}Variabili di ambiente da [proteggere dai comandi sandboxed](/it/sandboxing#protect-credentials). Ogni voce ha un `name` e una `mode`; il nome deve iniziare con una lettera o un underscore e contenere solo lettere, cifre e underscore. `deny` rimuove la variabile dall'ambiente dei comandi sandboxed. Richiede Claude Code v2.1.187 o successivo. {/* min-version: 2.1.199 */}}`mask` sostituisce la variabile con un valore sentinella per sessione all'interno della sandbox mentre il proxy della sandbox sostituisce il valore reale sulle richieste in uscita a `injectHosts` di quella voce; richiede `network.tlsTerminate` e Claude Code v2.1.199 o successivo. Le voci `mask` vengono onorate solo dalle impostazioni utente, gestite, o CLI `--settings`, non da `.claude/settings.json` o `.claude/settings.local.json`. Gli array vengono uniti in tutti gli ambiti di impostazioni, e `deny` ha la precedenza quando la stessa variabile appare con entrambe le modalità. | `[{ "name": "GITHUB_TOKEN", "mode": "deny" }]` |424| `credentials.envVars` | {/* min-version: 2.1.187 */}Variabili di ambiente da [proteggere dai comandi sandboxed](/it/sandboxing#protect-credentials). Ogni voce ha un `name` e una `mode`; il nome deve iniziare con una lettera o un underscore e contenere solo lettere, cifre e underscore. `deny` rimuove la variabile dall'ambiente dei comandi sandboxed. Richiede Claude Code v2.1.187 o successivo. {{/* min-version: 2.1.199 */}}`mask` sostituisce la variabile con un valore sentinella per sessione all'interno della sandbox mentre il proxy della sandbox sostituisce il valore reale sulle richieste in uscita a `injectHosts` di quella voce; richiede `network.tlsTerminate` e Claude Code v2.1.199 o successivo. Le voci `mask` vengono onorate solo dalle impostazioni utente, gestite, o CLI `--settings`, non da `.claude/settings.json` o `.claude/settings.local.json`. Gli array vengono uniti in tutti gli ambiti di impostazioni, e `deny` ha la precedenza quando la stessa variabile appare con entrambe le modalità. | `[{ "name": "GITHUB_TOKEN", "mode": "deny" }]` |

421| `credentials.envVars[].injectHosts` | Host dove il proxy della sandbox sostituisce il valore reale di una voce `mask`. Ogni host deve essere coperto anche da `network.allowedDomains`, esattamente o da un carattere jolly. Quando non impostato, il proxy sostituisce il valore sulle richieste a ogni host in `network.allowedDomains`. Accettato ma ignorato quando `mode` è `deny`. Richiede Claude Code v2.1.199 o successivo. {/* min-version: 2.1.199 */}} | `["api.github.com"]` |425| `credentials.envVars[].injectHosts` | Host dove il proxy della sandbox sostituisce il valore reale di una voce `mask`. Ogni host deve essere coperto anche da `network.allowedDomains`, esattamente o da un carattere jolly. Quando non impostato, il proxy sostituisce il valore sulle richieste a ogni host in `network.allowedDomains`. Accettato ma ignorato quando `mode` è `deny`. Richiede Claude Code v2.1.199 o successivo. {{/* min-version: 2.1.199 */}} | `["api.github.com"]` |

422| `credentials.allowPlaintextInject` | Consenti la sostituzione `mask` anche sulle richieste HTTP semplici oltre a HTTPS con TLS terminato. Su HTTP semplice l'identità upstream non è verificata e la credenziale viaggia in chiaro, quindi lascia questo disattivato al di fuori delle reti di test attendibili. Onorato solo dalle impostazioni utente, gestite, o CLI `--settings`, non da `.claude/settings.json` o `.claude/settings.local.json`. Predefinito: false. Richiede Claude Code v2.1.199 o successivo. {/* min-version: 2.1.199 */}} | `true` |426| `credentials.allowPlaintextInject` | Consenti la sostituzione `mask` anche sulle richieste HTTP semplici oltre a HTTPS con TLS terminato. Su HTTP semplice l'identità upstream non è verificata e la credenziale viaggia in chiaro, quindi lascia questo disattivato al di fuori delle reti di test attendibili. Onorato solo dalle impostazioni utente, gestite, o CLI `--settings`, non da `.claude/settings.json` o `.claude/settings.local.json`. Predefinito: false. Richiede Claude Code v2.1.199 o successivo. {{/* min-version: 2.1.199 */}} | `true` |

423| `network.allowUnixSockets` | (Solo macOS) Percorsi dei socket Unix accessibili nella sandbox. Ignorato su Linux e WSL2, dove il filtro seccomp non può ispezionare i percorsi dei socket; usa `allowAllUnixSockets` invece. | `["~/.ssh/agent-socket"]` |427| `network.allowUnixSockets` | (Solo macOS) Percorsi dei socket Unix accessibili nella sandbox. Ignorato su Linux e WSL2, dove il filtro seccomp non può ispezionare i percorsi dei socket; usa `allowAllUnixSockets` invece. | `["~/.ssh/agent-socket"]` |

424| `network.allowAllUnixSockets` | Consenti tutte le connessioni ai socket Unix nella sandbox. Su Linux e WSL2 questo è l'unico modo per consentire i socket Unix, poiché salta il filtro seccomp che altrimenti blocca le chiamate `socket(AF_UNIX, ...)`. Predefinito: false | `true` |428| `network.allowAllUnixSockets` | Consenti tutte le connessioni ai socket Unix nella sandbox. Su Linux e WSL2 questo è l'unico modo per consentire i socket Unix, poiché salta il filtro seccomp che altrimenti blocca le chiamate `socket(AF_UNIX, ...)`. Predefinito: false | `true` |

425| `network.allowLocalBinding` | Consenti il binding alle porte localhost (solo macOS). Predefinito: false | `true` |429| `network.allowLocalBinding` | Consenti il binding alle porte localhost (solo macOS). Predefinito: false | `true` |


429| `network.allowManagedDomainsOnly` | (Solo impostazioni gestite) Solo `allowedDomains` e le regole allow `WebFetch(domain:...)` dalle impostazioni gestite sono rispettate. I domini dalle impostazioni utente, progetto e locale vengono ignorati. I domini non consentiti vengono bloccati automaticamente senza richiedere all'utente. I domini negati vengono comunque rispettati da tutte le fonti. Predefinito: false | `true` |433| `network.allowManagedDomainsOnly` | (Solo impostazioni gestite) Solo `allowedDomains` e le regole allow `WebFetch(domain:...)` dalle impostazioni gestite sono rispettate. I domini dalle impostazioni utente, progetto e locale vengono ignorati. I domini non consentiti vengono bloccati automaticamente senza richiedere all'utente. I domini negati vengono comunque rispettati da tutte le fonti. Predefinito: false | `true` |

430| `network.httpProxyPort` | Porta del proxy HTTP utilizzata se desideri portare il tuo proxy. Se non specificato, Claude eseguirà il suo proxy. | `8080` |434| `network.httpProxyPort` | Porta del proxy HTTP utilizzata se desideri portare il tuo proxy. Se non specificato, Claude eseguirà il suo proxy. | `8080` |

431| `network.socksProxyPort` | Porta del proxy SOCKS5 utilizzata se desideri portare il tuo proxy. Se non specificato, Claude eseguirà il suo proxy. | `8081` |435| `network.socksProxyPort` | Porta del proxy SOCKS5 utilizzata se desideri portare il tuo proxy. Se non specificato, Claude eseguirà il suo proxy. | `8081` |

432| `network.tlsTerminate` | Sperimentale. Termina TLS all'interno del proxy della sandbox in modo che possa leggere i contenuti delle richieste HTTPS. Richiesto per la [sostituzione delle credenziali](/it/sandboxing#protect-credentials) `mask`. Imposta `{}` per generare un'autorità di certificazione effimera per la sessione, o imposta `caCertPath` e `caKeyPath` per usare la tua. Onorato solo dalle impostazioni utente, gestite, o CLI `--settings`, non da `.claude/settings.json` o `.claude/settings.local.json`. Richiede Claude Code v2.1.199 o successivo. {/* min-version: 2.1.199 */}} | `{}` |436| `network.tlsTerminate` | Sperimentale. Termina TLS all'interno del proxy della sandbox in modo che possa leggere i contenuti delle richieste HTTPS. Richiesto per la [sostituzione delle credenziali](/it/sandboxing#protect-credentials) `mask`. Imposta `{}` per generare un'autorità di certificazione effimera per la sessione, o imposta `caCertPath` e `caKeyPath` per usare la tua. Onorato solo dalle impostazioni utente, gestite, o CLI `--settings`, non da `.claude/settings.json` o `.claude/settings.local.json`. Richiede Claude Code v2.1.199 o successivo. {{/* min-version: 2.1.199 */}} | `{}` |

433| `enableWeakerNestedSandbox` | Abilita una sandbox più debole per gli ambienti Docker senza privilegi (solo Linux e WSL2). **Riduce la sicurezza.** Predefinito: false | `true` |437| `enableWeakerNestedSandbox` | Abilita una sandbox più debole per gli ambienti Docker senza privilegi (solo Linux e WSL2). **Riduce la sicurezza.** Predefinito: false | `true` |

434| `enableWeakerNetworkIsolation` | (Solo macOS) Consenti l'accesso al servizio di fiducia TLS del sistema (`com.apple.trustd.agent`) nella sandbox. Richiesto affinché gli strumenti basati su Go come `gh`, `gcloud` e `terraform` verifichino i certificati TLS quando si utilizza `httpProxyPort` con un proxy MITM e una CA personalizzata. **Riduce la sicurezza** aprendo un potenziale percorso di esfiltrazione dei dati. Predefinito: false | `true` |438| `enableWeakerNetworkIsolation` | (Solo macOS) Consenti l'accesso al servizio di fiducia TLS del sistema (`com.apple.trustd.agent`) nella sandbox. Richiesto affinché gli strumenti basati su Go come `gh`, `gcloud` e `terraform` verifichino i certificati TLS quando si utilizza `httpProxyPort` con un proxy MITM e una CA personalizzata. **Riduce la sicurezza** aprendo un potenziale percorso di esfiltrazione dei dati. Predefinito: false | `true` |

435| `allowAppleEvents` | (Solo macOS) Consenti ai comandi sandboxed di inviare Apple Events. Richiesto per `open`, `osascript`, e strumenti che aprono URL in un browser, che altrimenti falliscono con errore `-600`. **Rimuove l'isolamento dell'esecuzione del codice.** I comandi sandboxed possono lanciare altre applicazioni senza sandbox senza prompt dell'utente; possono anche inviare comandi AppleScript alle applicazioni in esecuzione come Terminal, soggetto al prompt di consenso per-app macOS automation (TCC). Onorato solo dalle impostazioni utente, gestite, o CLI, non dalle impostazioni di progetto. Predefinito: false | `true` |439| `allowAppleEvents` | (Solo macOS) Consenti ai comandi sandboxed di inviare Apple Events. Richiesto per `open`, `osascript`, e strumenti che aprono URL in un browser, che altrimenti falliscono con errore `-600`. **Rimuove l'isolamento dell'esecuzione del codice.** I comandi sandboxed possono lanciare altre applicazioni senza sandbox senza prompt dell'utente; possono anche inviare comandi AppleScript alle applicazioni in esecuzione come Terminal, soggetto al prompt di consenso per-app macOS automation (TCC). Onorato solo dalle impostazioni utente, gestite, o CLI, non dalle impostazioni di progetto. Predefinito: false | `true` |


477**Le restrizioni del filesystem e della rete** possono essere configurate in due modi che vengono uniti insieme:481**Le restrizioni del filesystem e della rete** possono essere configurate in due modi che vengono uniti insieme:

478 482 

479* **Impostazioni `sandbox.filesystem`** (mostrate sopra): Controllano i percorsi al confine della sandbox a livello di sistema operativo. Queste restrizioni si applicano a tutti i comandi dei sottoprocessi (ad es., `kubectl`, `terraform`, `npm`), non solo agli strumenti di file di Claude.483* **Impostazioni `sandbox.filesystem`** (mostrate sopra): Controllano i percorsi al confine della sandbox a livello di sistema operativo. Queste restrizioni si applicano a tutti i comandi dei sottoprocessi (ad es., `kubectl`, `terraform`, `npm`), non solo agli strumenti di file di Claude.

480* **Regole di permesso**: Usa le regole allow/deny `Edit` per controllare l'accesso dello strumento di file di Claude, le regole deny `Read` per bloccare le letture, e le regole allow/deny `WebFetch` per controllare i domini di rete. I percorsi da queste regole vengono anche uniti nella configurazione della sandbox.484* **Regole di permesso**: Usa le regole allow/deny `Edit` per controllare l'accesso dello strumento di file di Claude, le regole deny `Read` per bloccare le letture (una regola deny `Read` blocca anche lo strumento Edit sui percorsi corrispondenti), e le regole allow/deny `WebFetch` per controllare i domini di rete. I percorsi da queste regole vengono anche uniti nella configurazione della sandbox.

481 485 

482<h3 id="attribution-settings">486<h3 id="attribution-settings">

483 Impostazioni di attribuzione487 Impostazioni di attribuzione


637 Calcola le impostazioni gestite con un policy helper641 Calcola le impostazioni gestite con un policy helper

638</h3>642</h3>

639 643 

640L'impostazione `policyHelper` punta a un eseguibile che calcola le impostazioni gestite all'avvio, in modo che gli amministratori possano derivare la politica dalla postura del dispositivo, dall'identità o da un servizio remoto invece di un file statico. Configuralo da MDM o da un file `managed-settings.json` di sistema. Claude Code ignora `policyHelper` quando appare in qualsiasi altro ambito, incluse le impostazioni utente, le impostazioni di progetto, l'hive di registro HKCU, e le [impostazioni gestite dal server](/it/server-managed-settings).644L'impostazione `policyHelper` punta a un eseguibile che calcola le impostazioni gestite all'avvio, in modo che gli amministratori possono derivare la politica dalla postura del dispositivo, dall'identità o da un servizio remoto invece di un file statico. Configuralo da MDM o da un file `managed-settings.json` di sistema. Claude Code ignora `policyHelper` quando appare in qualsiasi altro ambito, incluse le impostazioni utente, le impostazioni di progetto, l'hive di registro HKCU, e le [impostazioni gestite dal server](/it/server-managed-settings).

641 645 

642L'impostazione accetta queste chiavi:646L'impostazione accetta queste chiavi:

643 647 


712 Verifica le impostazioni attive716 Verifica le impostazioni attive

713</h3>717</h3>

714 718 

715Esegui `/status` dentro Claude Code per vedere quali fonti di impostazioni sono attive. All'interno del menu, la scheda **Status** include una riga `Setting sources` che elenca ogni livello Claude Code ha caricato per la sessione corrente, come `User settings` o `Project local settings`. Quando le [impostazioni gestite](/it/admin-setup#decide-how-settings-reach-devices) sono in vigore, la voce mostra il canale di distribuzione tra parentesi, ad esempio `Enterprise managed settings (remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, o `(file)`. Un livello appare nell'elenco solo quando quella fonte viene caricata con almeno una chiave, quindi un elenco vuoto significa che non sono state trovate fonti di impostazioni.719Esegui `/status` dentro Claude Code per vedere quali fonti di impostazioni sono attive. All'interno del menu, la scheda **Status** include una riga `Setting sources` che elenca ogni livello Claude Code ha caricato per la sessione corrente, come `User settings` o `Project local settings`. Quando le [impostazioni gestite](/it/admin-setup#decide-how-settings-reach-devices) sono in vigore, la voce mostra il canale di distribuzione tra parentesi, ad esempio `Enterprise managed settings (remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, o `(file)`. Il canale `remote` copre sia le impostazioni gestite dal server di claude.ai che le politiche consegnate dal [gateway di app Claude](/it/claude-apps-gateway). Un livello appare nell'elenco solo quando quella fonte viene caricata con almeno una chiave, quindi un elenco vuoto significa che non sono state trovate fonti di impostazioni.

716 720 

717La riga `Setting sources` conferma quali fonti vengono lette. Non mostra quale livello ha fornito ogni singola chiave. La scheda **Config** nello stesso dialogo è un editor per un insieme fisso di interruttori come tema e output dettagliato, non una visualizzazione dei contenuti del tuo `settings.json`.721La riga `Setting sources` conferma quali fonti vengono lette. Non mostra quale livello ha fornito ogni singola chiave. La scheda **Config** nello stesso dialogo è un editor per un insieme fisso di interruttori come tema e output dettagliato, non una visualizzazione dei contenuti del tuo `settings.json`.

718 722 

719Se un file di impostazioni contiene errori, come JSON non valido o un valore che non supera la convalida, `/status` elenca i file interessati. Esegui `/doctor` per i dettagli di ogni errore.723Se un file di impostazioni contiene errori, come JSON non valido o un valore che non supera la convalida, `/status` elenca i file interessati. Esegui `claude doctor` per i dettagli di ogni errore.

720 724 

721<h3 id="key-points-about-the-configuration-system">725<h3 id="key-points-about-the-configuration-system">

722 Punti chiave sul sistema di configurazione726 Punti chiave sul sistema di configurazione


831}835}

832```836```

833 837 

838<h4 id="pluginconfigs">

839 `pluginConfigs`

840</h4>

841 

842Memorizza i valori delle opzioni non sensibili che la richiesta [`userConfig`](/it/plugins-reference#user-configuration) di un plugin raccoglie, indicizzati per ID plugin. Claude Code scrive questa chiave nelle impostazioni utente quando compili la finestra di dialogo di configurazione del plugin, quindi non è necessario modificarla manualmente. Le opzioni sensibili vengono invece archiviate nel Portachiavi di macOS, oppure in `~/.claude/.credentials.json` su piattaforme senza un portachiavi supportato.

843 

844Questo esempio memorizza un'opzione per un plugin installato dal marketplace `acme-tools`:

845 

846```json theme={null}

847{

848 "pluginConfigs": {

849 "deployer@acme-tools": {

850 "options": {

851 "api_endpoint": "https://api.example.com"

852 }

853 }

854 }

855}

856```

857 

858`pluginConfigs` viene letto dalle impostazioni utente, dal flag `--settings` e dalle impostazioni gestite solo. Le voci nel file `.claude/settings.json` o `.claude/settings.local.json` di un progetto vengono ignorate, perché questi valori vengono sostituiti nelle configurazioni di hook, MCP e LSP del plugin, e un repository clonato non deve essere in grado di fornirli. Prima della v2.1.207, anche le impostazioni di progetto e locali venivano lette.

859 

834<h4 id="extraknownmarketplaces">860<h4 id="extraknownmarketplaces">

835 `extraKnownMarketplaces`861 `extraKnownMarketplaces`

836</h4>862</h4>

troubleshooting.md +18 −14

Details

10 10 

11| Sintomo | Vai a |11| Sintomo | Vai a |

12| :----------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |12| :----------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |

13| `command not found`, l'installazione fallisce, problemi di PATH, `EACCES`, errori TLS | [Troubleshoot installation and login](/it/troubleshoot-install) |13| `command not found`, l'installazione fallisce, problemi di PATH, `EACCES`, errori TLS | [Troubleshoot installation and login](/docs/it/troubleshoot-install) |

14| L'aggiornamento o l'installazione del download fallisce con `The connection dropped while downloading the update` o `aborted` | [Error reference](/it/errors#the-connection-dropped-while-downloading-the-update) |14| L'aggiornamento o l'installazione del download fallisce con `The connection dropped while downloading the update` o `aborted` | [Error reference](/docs/it/errors#the-connection-dropped-while-downloading-the-update) |

15| Loop di accesso, errori OAuth, `403 Forbidden`, "organization disabled", credenziali Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry | [Troubleshoot installation and login](/it/troubleshoot-install#login-and-authentication) |15| Loop di accesso, errori OAuth, `403 Forbidden`, "organization disabled", credenziali Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry | [Troubleshoot installation and login](/docs/it/troubleshoot-install#login-and-authentication) |

16| Le impostazioni non si applicano, gli hooks non si attivano, i server MCP non si caricano | [Debug your configuration](/it/debug-your-config) |16| Le impostazioni non si applicano, gli hooks non si attivano, i server MCP non si caricano | [Debug your configuration](/docs/it/debug-your-config) |

17| `API Error: 5xx`, `529 Overloaded`, `429`, errori di convalida delle richieste | [Error reference](/it/errors) |17| `API Error: 5xx`, `529 Overloaded`, `429`, errori di convalida delle richieste | [Error reference](/docs/it/errors) |

18| `model not found` o `you may not have access to it` | [Error reference](/it/errors#theres-an-issue-with-the-selected-model) |18| `model not found` o `you may not have access to it` | [Error reference](/docs/it/errors#theres-an-issue-with-the-selected-model) |

19| L'estensione VS Code non si connette o non rileva Claude | [VS Code integration](/it/vs-code#fix-common-issues) |19| L'estensione VS Code non si connette o non rileva Claude | [VS Code integration](/docs/it/vs-code#fix-common-issues) |

20| Il plugin JetBrains o l'IDE non viene rilevato | [JetBrains integration](/it/jetbrains#troubleshooting) |20| Il plugin JetBrains o l'IDE non viene rilevato | [JetBrains integration](/docs/it/jetbrains#troubleshooting) |

21| Utilizzo elevato di CPU o memoria, risposte lente, blocchi, la ricerca non trova file | [Performance and stability](#performance-and-stability) di seguito |21| Utilizzo elevato di CPU o memoria, risposte lente, blocchi, la ricerca non trova file | [Performance and stability](#performance-and-stability) di seguito |

22 22 

23Se non sei sicuro di quale si applica, esegui `/doctor` all'interno di Claude Code per un controllo automatico della tua installazione, impostazioni, estensioni e utilizzo del contesto; propone correzioni che può applicare dopo che le hai confermate. Se `claude` non si avvia affatto, esegui `claude doctor` dalla tua shell. Esegui `/mcp` per controllare lo stato del server MCP.23Se non sei sicuro di quale si applica, esegui `/doctor` all'interno di Claude Code per un controllo automatico della tua installazione, impostazioni, estensioni e utilizzo del contesto; propone correzioni che può applicare dopo che le hai confermate. Se `claude` non si avvia affatto, esegui `claude doctor` dalla tua shell. Esegui `/mcp` per controllare lo stato del server MCP.


371. Usa `/compact` regolarmente per ridurre la dimensione del contesto371. Usa `/compact` regolarmente per ridurre la dimensione del contesto

382. Chiudi e riavvia Claude Code tra i compiti principali382. Chiudi e riavvia Claude Code tra i compiti principali

393. Considera di aggiungere grandi directory di build al tuo file `.gitignore`393. Considera di aggiungere grandi directory di build al tuo file `.gitignore`

404. Riavvia con [`claude --safe-mode`](/it/cli-reference#cli-flags) per verificare se un plugin, un server MCP o un hook è la fonte. Disabilita tutte le personalizzazioni per la sessione; se l'utilizzo diminuisce, vedi [Debug your configuration](/it/debug-your-config#test-against-a-clean-configuration) per trovare quale sia404. Riavvia con [`claude --safe-mode`](/docs/it/cli-reference#cli-flags) per verificare se un plugin, un server MCP o un hook è la fonte. Disabilita tutte le personalizzazioni per la sessione; se l'utilizzo diminuisce, vedi [Debug your configuration](/docs/it/debug-your-config#test-against-a-clean-configuration) per trovare quale sia

41 41 

42Se l'utilizzo della memoria rimane elevato dopo questi passaggi, esegui `/heapdump` per scrivere uno snapshot dell'heap JavaScript e una suddivisione della memoria su `~/Desktop`. Su Linux senza una cartella Desktop, i file vengono scritti nella tua directory home.42Se l'utilizzo della memoria rimane elevato dopo questi passaggi, esegui `/heapdump` per scrivere uno snapshot dell'heap JavaScript e una suddivisione della memoria su `~/Desktop`. Su Linux senza una cartella Desktop, i file vengono scritti nella tua directory home.

43 43 

44La suddivisione mostra la dimensione del set residente, l'heap JS, i buffer di array e la memoria nativa non contabilizzata, il che aiuta a identificare se la crescita è negli oggetti JavaScript o nel codice nativo. Per ispezionare i detentori, apri il file `.heapsnapshot` in Chrome DevTools sotto Memory → Load. Allega entrambi i file quando segnali un problema di memoria su [GitHub](https://github.com/anthropics/claude-code/issues).44La suddivisione mostra la dimensione del resident set, l'heap JS, i buffer di array e la memoria nativa non contabilizzata, il che aiuta a identificare se la crescita è negli oggetti JavaScript o nel codice nativo. Per ispezionare i detentori, apri il file `.heapsnapshot` in Chrome DevTools in Memory → Load; la suddivisione è il file che termina con `-diagnostics.json`.

45 

46<Warning>

47 Il file `.heapsnapshot` contiene ogni stringa nel processo. Non allegarlo a un problema pubblico o condividerlo. Allega solo il file `-diagnostics.json` quando segnali un problema di memoria su [GitHub](https://github.com/anthropics/claude-code/issues). Quel file contiene statistiche di memoria e nessun contenuto di conversazione o credenziali.

48</Warning>

45 49 

46<h3 id="large-tables-are-cut-off-in-the-terminal">50<h3 id="large-tables-are-cut-off-in-the-terminal">

47 Large tables are cut off in the terminal51 Large tables are cut off in the terminal

48</h3>52</h3>

49 53 

50Una tabella Markdown con più di 200 righe renderizza le sue prime 200 righe seguite da una riga `… N more rows not shown`. Solo la visualizzazione è limitata: la tabella completa rimane nella conversazione, e [`/copy`](/it/commands) copia ogni riga. Per una tabella troppo grande per essere letta nel terminale, chiedi a Claude di scriverla in un file. Prima della v2.1.208, Claude Code renderizzava ogni riga, quindi riprendere una sessione che conteneva una tabella molto grande potrebbe bloccarsi mentre la ri-renderizzava.54Una tabella Markdown con più di 200 righe renderizza le sue prime 200 righe seguite da una riga `… N more rows not shown`. Solo la visualizzazione è limitata: la tabella completa rimane nella conversazione, e [`/copy`](/docs/it/commands) copia ogni riga. Per una tabella troppo grande per essere letta nel terminale, chiedi a Claude di scriverla in un file. Prima della v2.1.208, Claude Code renderizzava ogni riga, quindi riprendere una sessione che conteneva una tabella molto grande potrebbe bloccarsi mentre la ri-renderizzava.

51 55 

52<h3 id="auto-compaction-stops-with-a-thrashing-error">56<h3 id="auto-compaction-stops-with-a-thrashing-error">

53 Auto-compaction stops with a thrashing error57 Auto-compaction stops with a thrashing error


59 63 

601. Chiedi a Claude di leggere il file di grandi dimensioni in blocchi più piccoli, come un intervallo di righe specifico o una funzione, invece dell'intero file641. Chiedi a Claude di leggere il file di grandi dimensioni in blocchi più piccoli, come un intervallo di righe specifico o una funzione, invece dell'intero file

612. Esegui `/compact` con un focus che elimina l'output di grandi dimensioni, ad esempio `/compact keep only the plan and the diff`652. Esegui `/compact` con un focus che elimina l'output di grandi dimensioni, ad esempio `/compact keep only the plan and the diff`

623. Sposta il lavoro su file di grandi dimensioni a un [subagent](/it/sub-agents) in modo che venga eseguito in una finestra di contesto separata663. Sposta il lavoro su file di grandi dimensioni a un [subagent](/docs/it/sub-agents) in modo che venga eseguito in una finestra di contesto separata

634. Esegui `/clear` se la conversazione precedente non è più necessaria674. Esegui `/clear` se la conversazione precedente non è più necessaria

64 68 

65<h3 id="command-hangs-or-freezes">69<h3 id="command-hangs-or-freezes">


77 Garbled or corrupted text in an editor's integrated terminal81 Garbled or corrupted text in an editor's integrated terminal

78</h3>82</h3>

79 83 

80Se i caratteri vengono visualizzati come caselle, macchie o glifi errati quando esegui Claude Code nel terminale integrato di VS Code, Cursor o Devin Desktop, il renderer GPU del terminale è probabilmente la causa. Esegui `/terminal-setup` all'interno di Claude Code per impostare `terminal.integrated.gpuAcceleration` su `"off"`, oppure impostalo manualmente nelle impostazioni dell'editor e ricarica la finestra. Vedi [Terminal configuration](/it/terminal-config) per le altre impostazioni che `/terminal-setup` scrive.84Se i caratteri vengono visualizzati come caselle, macchie o glifi errati quando esegui Claude Code nel terminale integrato di VS Code, Cursor o Devin Desktop, il renderer GPU del terminale è probabilmente la causa. Esegui `/terminal-setup` all'interno di Claude Code per impostare `terminal.integrated.gpuAcceleration` su `"off"`, oppure impostalo manualmente nelle impostazioni dell'editor e ricarica la finestra. Vedi [Terminal configuration](/docs/it/terminal-config) per le altre impostazioni che `/terminal-setup` scrive.

81 85 

82<h3 id="search-and-discovery-issues">86<h3 id="search-and-discovery-issues">

83 Search and discovery issues87 Search and discovery issues


117 </Tab>121 </Tab>

118</Tabs>122</Tabs>

119 123 

120Quindi imposta `USE_BUILTIN_RIPGREP=0` nel tuo [environment](/it/env-vars).124Quindi imposta `USE_BUILTIN_RIPGREP=0` nel tuo [environment](/docs/it/env-vars).

121 125 

122<h3 id="slow-or-incomplete-search-results-on-wsl">126<h3 id="slow-or-incomplete-search-results-on-wsl">

123 Slow or incomplete search results on WSL127 Slow or incomplete search results on WSL