Skip to main content
Questa pagina elenca gli errori di runtime che Claude Code visualizza e come recuperare da ciascuno, oltre a cosa controllare quando le risposte sembrano non corrette senza un errore. Per gli errori di installazione come command not found o errori TLS durante la configurazione, vedi Risoluzione dei problemi di installazione e accesso. Ad eccezione degli errori di Wrapper e IDE, che il programma di avvio stampa piuttosto che Claude Code stesso, questi errori e i comandi di recupero si applicano su CLI, l’app Desktop e le sessioni cloud, poiché tutti e tre avvolgono lo stesso CLI di Claude Code. Per altri problemi specifici della superficie, vedi la sezione di risoluzione dei problemi nella pagina di quella superficie.
Claude Code chiama l’API Claude per le risposte del modello, quindi la maggior parte degli errori di runtime si mappano a un codice di errore API sottostante. Questa pagina copre cosa significa ogni errore all’interno di Claude Code e come recuperare. Per le definizioni del codice di stato HTTP grezzo, vedi il riferimento degli errori della piattaforma Claude.

Trova il tuo errore

Abbina il messaggio che vedi a una sezione qui sotto.

Tentativi automatici

Claude Code ritenta i guasti transitori fino a 10 volte con backoff esponenziale prima di mostrarti un errore. Non sempre ritenta un guasto che arriva a metà della risposta di Claude. Quando vedi uno degli errori in questa pagina, Claude Code ha già effettuato i tentativi che si applicano a quel guasto. Claude Code ritenta questi guasti:
  • Errori del server, risposte sovraccariche e timeout delle richieste che arrivano prima che una qualsiasi risposta di Claude sia stata trasmessa.
  • Un errore del server o una risposta sovraccarica che arriva dopo che Claude ha finito di pensare ma prima di aver iniziato un testo o una chiamata a uno strumento. Claude Code ritenta un errore del server a quel punto fino a due volte. Prima della v2.1.284, Claude Code terminava il turno con l’errore a quel punto.
  • Connessioni interrotte. Quando una connessione si interrompe a metà di una richiesta prima che Claude abbia completato una qualsiasi parte della sua risposta, incluso il suo ragionamento, Claude Code invia nuovamente la richiesta con lo stesso backoff e il turno continua, anche se del testo aveva già iniziato a essere trasmesso. Quando si interrompe dopo che Claude ha finito di pensare ma prima di aver iniziato un testo o una chiamata a uno strumento, Claude Code invece invia nuovamente la richiesta fino a due volte in rapida successione, e termina il turno con Connection lost before a response was produced se la connessione continua a interrompersi a quel punto.
  • Una connessione che Claude Code rileva è stata interrotta dal tuo computer che si è addormentato a metà di una richiesta. Claude Code la conta come una connessione interrotta secondo le regole sopra; una volta che l’etichetta di riprovazione nomina il motivo specifico, legge Connection lost while your computer was asleep, e se il turno termina dopo che Claude ha finito di pensare ma prima di un testo o di una chiamata a uno strumento, il messaggio legge Your computer went to sleep before a response was produced.
  • Un flusso di risposta bloccato, quando le intestazioni di risposta sono arrivate ma nessuna risposta di Claude è arrivata, o quando Claude ha finito di pensare ma non ha iniziato un testo o una chiamata a uno strumento: Claude Code interrompe la connessione bloccata e trasmette nuovamente la richiesta in streaming al massimo una volta. Se la risposta si blocca una seconda volta dopo che Claude ha finito di pensare ma prima di un testo o di una chiamata a uno strumento, Claude Code termina il turno con The response stalled before a response was produced.
  • Una richiesta di streaming a cui l’API non risponde mai con intestazioni di risposta, su una connessione dove il first-byte deadline runs: Claude Code la interrompe alla scadenza e la invia nuovamente al massimo una volta per richiesta di modello, entro il budget di riprovazione, quindi termina il turno con No response from API se anche quel tentativo rimane senza risposta. Quando imposti CLAUDE_CODE_RETRY_WATCHDOG, il limite di un tentativo non si applica.
  • Una risposta in streaming che il filtro dei contenuti di output dell’API interrompe prima che Claude abbia finito il suo ragionamento o iniziato un testo o una chiamata a uno strumento. Claude Code invia nuovamente la richiesta una volta, entro il budget di riprovazione, e mostra Output blocked by content filtering policy se il filtro interrompe anche la seconda risposta.
  • Throttle 429 temporanei, ma non il 429 del limite di spesa di un gateway, che non è un throttle; vedi Spend limit reached.
    • Quando sei connesso con un abbonamento claude.ai, questo include throttle 429 che non portano le intestazioni di quota del tuo piano. Prima della v2.1.199, Claude Code ritentava questi throttle solo per le chiavi API e gli accessi Enterprise.
  • Una richiesta rifiutata perché l’input più max_tokens supera il limite di contesto. Inviarla nuovamente invariata fallirebbe allo stesso modo, quindi Claude Code ritenta con un max_tokens ridotto, e smette di ritentare e compatta invece in due casi:
    • Quando nessuna riduzione può adattarsi, ad esempio quando la conversazione stessa riempie quasi la finestra di contesto.
    • Quando un tentativo non può ridurre ulteriormente max_tokens. Prima della v2.1.218, Claude Code poteva inviare nuovamente una richiesta ridotta che ancora non si adattava, ad esempio quando il budget di ragionamento esteso superava il contesto rimanente, fino a quando il budget di riprovazione non si esauriva.
  • Una credenziale Google Cloud scaduta o mancante su Google Cloud’s Agent Platform, o credenziali AWS che non riescono a caricarsi sulla tua macchina. Claude Code scarta le sue credenziali memorizzate nella cache e ritenta fino a due volte, quindi segnala l’errore in modo che tu possa autenticarti di nuovo subito, come descritto in Could not load AWS or Google Cloud credentials. Prima della v2.1.228, Claude Code ritentava una credenziale Google Cloud non riuscita attraverso il budget di riprovazione completo prima di mostrare l’errore.
  • Un 401 o 403 dall’API Anthropic, direttamente o attraverso un LLM gateway, mentre uno script apiKeyHelper fornisce la credenziale. Claude Code esegue nuovamente lo script e ritenta con il suo output aggiornato, entro il budget di riprovazione completo. Quando lo script stesso fallisce al nuovo tentativo, Claude Code mostra Your apiKeyHelper script is failing invece.
Prima della v2.1.227, Connection lost before a response was produced leggeva Connection closed while thinking, before producing a response e The response stalled before a response was produced leggeva Response stalled while thinking, before producing a response. Claude Code non ritenta questi guasti:
  • Un errore di convalida del certificato TLS, come un proxy che ispeziona TLS, un bundle NODE_EXTRA_CA_CERTS mancante, o un certificato scaduto. Claude Code segnala l’errore al primo tentativo, in modo che tu possa correggere subito la configurazione del certificato; vedi SSL certificate errors. Claude Code ritenta comunque condizioni TLS transitorie come un timeout di handshake. Prima della v2.1.199, Claude Code ritentava i guasti dei certificati attraverso il budget di riprovazione completo prima di mostrare l’errore.
  • Un errore del server, una connessione interrotta, o un flusso bloccato che arriva dopo che Claude ha completato un blocco di testo o una chiamata a uno strumento, o ne ha iniziato uno dopo aver finito il suo ragionamento, ma prima di finire la risposta. Claude Code non esegue nuovamente la richiesta, perché ciò potrebbe eseguire le stesse chiamate agli strumenti due volte. Mantiene ciò che Claude ha completato, esegue le chiamate agli strumenti che Claude ha finito, e continua il turno dai loro risultati. Per ciò che vedi in una sessione interattiva e in una non interattiva, leggi The response above may be incomplete. Prima della v2.1.199, Claude Code scartava l’output parziale e segnalava l’intero turno come un errore quando un errore del server arrivava a metà del flusso.
  • Un guasto che arriva dopo che Claude ha finito la risposta: non c’è nulla da ritentare, quindi Claude Code mantiene la risposta completa e termina il turno normalmente.
  • Una Amazon Bedrock streaming response with an unexpected content-type, perché il gateway o il proxy che riscrive la risposta riscriverebbero il tentativo allo stesso modo. Richiede Claude Code v2.1.208 o successivo.
  • Un tentativo non in streaming di una richiesta in streaming non riuscita che ottiene uno stato di successo ma no Claude API message in the body. Claude Code termina il turno con quell’errore.
  • Una richiesta che il controllo della politica della tua organizzazione ha negato, che emerge come una riga API Error: che porta il messaggio di negazione. Gli amministratori della tua organizzazione hanno configurato il controllo con Inference hooks, una funzione Claude Enterprise, e il messaggio termina con le istruzioni che hanno configurato, o per impostazione predefinita ti dice di contattarli. Claude Code non invia nuovamente la richiesta negata allo stesso modello o a un fallback model, perché il diniego riguarda il contenuto della richiesta piuttosto che il modello. Prima della v2.1.239, Claude Code poteva inviare nuovamente una richiesta negata, senza streaming o su un fallback model configurato, prima di mostrarti il diniego.

Cosa vedi mentre Claude Code ritenta o attende

Durante il tentativo, lo spinner mostra un countdown Retrying in Ns · attempt x/y dopo un’etichetta di errore. L’etichetta nomina il motivo specifico dal primo tentativo per i guasti su cui puoi agire subito: la rete è inattiva, un handshake TLS non è riuscito, o hai raggiunto un rate limit. Per altri errori legge API error all’inizio. A partire dalla v2.1.198 passa al motivo specifico dal terzo tentativo, o al tentativo finale quando CLAUDE_CODE_MAX_RETRIES consente meno di tre; le versioni precedenti passano solo al tentativo finale. A partire dalla v2.1.198, il suggerimento dello spinner usuale è soppresso durante i tentativi. Una volta rivelato il motivo dell’errore, se il guasto è un sovraccarico 529 la riga sotto il countdown nomina anche dove controllare lo stato del servizio: status.claude.com sull’API Anthropic, o l’host del provider o del gateway nominato nel messaggio su altre configurazioni. Se nessun dato arriva sul flusso di risposta per 20 secondi mentre una richiesta è ancora in sospeso, lo spinner mostra Waiting for API response · will retry in … · check your network prima che sia iniziato un tentativo. La richiesta non è ancora fallita: il countdown corre fino al punto in cui Claude Code interrompe la connessione bloccata. Dopo l’interruzione, ciò che vedi dipende da quanto lontano era arrivata la risposta:
  • Prima che Claude abbia completato un blocco di testo o una chiamata a uno strumento, o ne abbia iniziato uno dopo aver finito il suo ragionamento, Claude Code ritenta la richiesta o termina il turno con un errore. Automatic retries dice quali blocchi ritenta e quante volte.
  • Dopo che Claude ha completato un blocco di testo o una chiamata a uno strumento, o ne ha iniziato uno dopo aver finito il suo ragionamento, ma prima che Claude abbia finito la risposta, Claude Code mantiene ciò che Claude ha completato, continua il turno da qualsiasi chiamata a uno strumento che Claude ha finito, e mostra The response above may be incomplete. In una sessione non interattiva, e per la risposta di un subagent in qualsiasi sessione, Claude Code potrebbe prima chiedere a Claude di continuare la risposta; quella voce dice quando lo fa e quando vedi ancora l’avviso lì.
  • Dopo che Claude ha finito la risposta, Claude Code termina il turno normalmente.
Il banner si cancella da solo una volta che i dati riprendono o un tentativo ha successo. Se riappare ad ogni tentativo, trattalo come un network issue. Prima della v2.1.185, il banner appariva dopo 10 secondi con una formulazione diversa. Mentre Claude sta consultando l’advisor, il banner appare dopo 90 secondi senza dati invece di 20, perché una lunga revisione dell’advisor può non inviare nulla per ben oltre 20 secondi. Prima della v2.1.214, la soglia di 20 secondi si applicava anche durante le chiamate dell’advisor, quindi il banner appariva durante le revisioni dell’advisor anche quando non c’era nulla di sbagliato.

Sintonizza il comportamento dei tentativi

Puoi sintonizzare il comportamento dei tentativi con queste variabili d’ambiente:

Errori del server

La maggior parte di questi errori proviene dal provider di inferenza: il servizio di Anthropic su Anthropic API e il servizio dietro l’endpoint di quel provider su Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry o un gateway personalizzato. Auto mode cannot determine the safety of an action e Agent terminated early due to an API error coprono anche cause dal tuo lato, come un account Amazon Bedrock che non può invocare il modello del classificatore o un subagent che ha raggiunto un limite di utilizzo.

API Error: 500 Internal server error

Claude Code mostra il codice di stato e il messaggio di errore dell’API per qualsiasi risposta 5xx. L’esempio seguente mostra una risposta 500 su Anthropic API:
La frase finale indica dove controllare lo stato del servizio e varia in base al provider. Le configurazioni di Amazon Bedrock, Google Cloud’s Agent Platform e Microsoft Foundry indicano lo stato del servizio di quel provider. Un ANTHROPIC_BASE_URL personalizzato indica l’host del gateway. Un 5xx dall’API stessa indica un errore imprevisto all’interno dell’API. Non è causato dal tuo prompt, dalle tue impostazioni o dal tuo account. Quando un proxy, un load balancer o un gateway risponde con una pagina di errore HTML, il messaggio mostra il codice di stato e il titolo della pagina, come API Error: 502 Bad Gateway. Per una pagina senza titolo, il messaggio mostra invece il codice di stato e il suo nome standard. Prima della v2.1.281, il codice di stato veniva omesso quando la pagina aveva un titolo e il markup grezzo della pagina veniva stampato quando non ne aveva uno. Cosa fare:
  • Controlla status.claude.com o la pagina di stato del provider indicata nel messaggio per eventuali incidenti in corso
  • Aspetta un minuto, quindi invia di nuovo il messaggio. Il tuo messaggio originale è ancora nella conversazione, quindi per un prompt lungo puoi digitare try again invece di incollarlo tutto.
  • Se l’errore persiste senza alcun incidente pubblicato, esegui /feedback in modo che Anthropic possa indagare con i dettagli della tua richiesta. Consulta Segnalare un errore se /feedback non è disponibile nel tuo ambiente.

API Error: Repeated 529 Overloaded errors

L’API è temporaneamente al limite della capacità per tutti gli utenti. Claude Code ha già riprovato più volte prima di mostrare questo messaggio:
La frase finale varia in base al provider nello stesso modo dell’errore 500 descritto sopra. Un 529 non è il tuo limite di utilizzo e non viene conteggiato nella tua quota. Cosa fare:
  • Controlla status.claude.com o la pagina di stato del provider indicata nel messaggio per eventuali avvisi sulla capacità
  • Riprova tra qualche minuto
  • Esegui /model e passa a un modello diverso per continuare a lavorare, poiché la capacità è monitorata per modello. Claude Code ti chiede di farlo quando un modello è sotto un carico particolarmente elevato, ad esempio Opus is experiencing high load, please use /model to switch to Sonnet. Sui modelli Fable il messaggio indica Fable. In una sessione eseguita dall’app Claude Desktop, come la scheda Code o Cowork, il messaggio è Opus is experiencing high load. Switch to Sonnet. e cambi modello con il selettore di modelli dell’app.

Request timed out

L’API non ha risposto entro la scadenza della connessione.
Il timeout predefinito della richiesta è di 10 minuti. Cosa fare:

No response from API

Claude Code ha inviato una richiesta in streaming e l’API non ha restituito intestazioni di risposta entro la scadenza per il primo byte, quindi Claude Code ha interrotto la richiesta invece di attendere l’intero timeout di richiesta API_TIMEOUT_MS, 10 minuti per impostazione predefinita. Claude Code invia di nuovo la richiesta al massimo una volta, se il budget dei nuovi tentativi lo consente. Quando anche il nuovo tentativo resta senza risposta, il turno termina con questo messaggio, che mostra quanto ha atteso ciascun tentativo. Quando imposti CLAUDE_CODE_RETRY_WATCHDOG, il limite di un solo nuovo tentativo non si applica e Claude Code riprova secondo il budget descritto in Regolare il comportamento dei nuovi tentativi.
Claude Code imposta separatamente l’attesa delle intestazioni di risposta per il primo tentativo e l’attesa per il nuovo tentativo:
  • Primo tentativo: CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS quando lo imposti su 1 o più, limitato a un valore compreso tra 10 secondi e 30 minuti. Altrimenti Claude Code usa il timeout del watchdog a livello di byte indicato in Watchdog di inattività dello streaming, quindi le variabili che modificano quel timeout modificano anche questa attesa. In entrambi i casi, Claude Code aggiunge un secondo per ogni 32KB del corpo della richiesta.
  • Nuovo tentativo: un secondo in meno di API_TIMEOUT_MS, poco meno di 10 minuti per impostazione predefinita, in modo che il nuovo tentativo possa durare più a lungo di un proxy o gateway che trattiene la risposta fino al completamento della generazione. Su Amazon Bedrock, il nuovo tentativo usa la stessa scadenza del primo tentativo e il messaggio mostra una sola durata invece di due.
Nessuna delle due attese supera un secondo in meno di un API_TIMEOUT_MS positivo, e un API_TIMEOUT_MS positivo inferiore a 11 secondi disattiva la scadenza. Il watchdog a livello di byte parte solo quando arrivano le intestazioni di risposta, quindi una risposta che smette di inviare byte dopo quel momento segue le regole per i flussi bloccati invece di questa scadenza. Cosa fare:
  • Invia di nuovo il messaggio. Il tuo messaggio originale è ancora nella conversazione, quindi per un prompt lungo puoi digitare try again invece di incollarlo tutto.
  • Se si ripete, trattalo come un problema di rete o di proxy.
  • Se un proxy o gateway sulla tua rete trattiene le risposte fino al loro completamento, aumenta API_TIMEOUT_MS in modo che il nuovo tentativo attenda più a lungo. Su Amazon Bedrock, aumenta anche CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS.
  • Se il primo tentativo continua ad andare in timeout e poi il nuovo tentativo riesce, aumenta CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS in modo che anche il primo tentativo attenda abbastanza a lungo.
Prima della v2.1.242, Claude Code attendeva l’intero timeout di richiesta API_TIMEOUT_MS, 10 minuti per impostazione predefinita, prima di far fallire una richiesta in streaming senza risposta. Prima della v2.1.261, il nuovo tentativo attendeva la stessa scadenza del primo tentativo e il messaggio non mostrava alcuna durata.

The response above may be incomplete

Una richiesta in streaming non è riuscita mentre la risposta era ancora in corso, dopo che Claude aveva completato un blocco di testo o una chiamata a uno strumento, oppure ne aveva iniziato uno dopo aver terminato il ragionamento. Inviare di nuovo la richiesta potrebbe eseguire due volte le stesse chiamate agli strumenti, quindi Claude Code conserva l’output che Claude ha completato e aggiunge questo avviso invece di scartare il turno. La variante che vedi indica la causa:
  • Server error mid-response: un errore di sovraccarico o un errore del server 5xx a metà flusso. Questa variante richiede Claude Code v2.1.199 o successivo; prima di allora, in questo caso l’output parziale veniva scartato e l’intero turno veniva segnalato come errore.
  • Connection lost mid-response: la connessione si è interrotta. Vedi questa variante anche quando un proxy o gateway chiude regolarmente il corpo della risposta prima che la risposta sia terminata.
  • Your computer went to sleep mid-response: Claude Code ha rilevato che il tuo computer è entrato in sospensione mentre la risposta era in streaming. Quando il computer si riattiva, Claude Code considera la connessione interrotta e smette di leggerla.
  • Part of the response never arrived: un evento del flusso è andato perso tra l’API e Claude Code, quindi un evento successivo ha fatto riferimento a contenuto mai arrivato. Prima della v2.1.281, questo caso terminava il turno con API Error: Content block not found.
  • The response stream was malformed: è arrivato un evento per un blocco di contenuto già terminato, oppure è arrivato un evento danneggiato. Un evento danneggiato è un evento i cui dati non sono JSON valido, il cui contenuto manca o il cui contenuto non corrisponde al tipo dell’evento. Prima della v2.1.284, quando un evento con JSON non valido arrivava dopo che Claude aveva completato il ragionamento, un blocco di testo o una chiamata a uno strumento, veniva invece mostrato l’errore grezzo del parser, ad esempio uno che inizia con API Error: JSON Parse error.
  • The response stopped arriving: la connessione è rimasta aperta ma ha smesso di trasmettere dati, quindi il watchdog di inattività dello streaming l’ha interrotta. Prima della v2.1.222, Claude Code poteva segnalare questo errore anche sulle connessioni gateway raggiunte tramite ANTHROPIC_BASE_URL o ANTHROPIC_AWS_BASE_URL mentre i ping keep-alive del server continuavano ad arrivare, perché su quelle connessioni contava solo gli eventi di risposta analizzati; l’aggiornamento elimina quei timeout spuri su quei percorsi. I gateway raggiunti tramite un URL di base del provider come ANTHROPIC_BEDROCK_BASE_URL non sono coperti dal watchdog a livello di byte; consulta Watchdog di inattività dello streaming.
Prima della v2.1.227, Connection lost mid-response era Connection closed mid-response e The response stopped arriving era Response stalled mid-stream. Quando un evento del flusso perso, duplicato o danneggiato arriva prima che Claude abbia iniziato qualsiasi testo o chiamata a uno strumento, non vedi questo avviso:
  • Se Claude aveva completato solo il ragionamento, Claude Code invia di nuovo la richiesta. Quando i flussi inviati di nuovo si interrompono allo stesso modo, il turno termina con Part of the response never arrived and no response was produced. Try again. o The response stream was malformed and no response was produced. Try again.
  • Se non era stato completato nulla, Claude Code invia invece di nuovo la richiesta senza streaming. Se hai disattivato quel fallback con CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK, il turno termina con API Error: Content block not found per un evento perso o con API Error: Content block already closed per un evento duplicato. Per un evento danneggiato con il fallback disattivato, il turno termina con API Error: Stream event unreadable o con l’errore grezzo del parser.
In quattro casi, Claude Code gestisce l’errore senza mostrare subito questo avviso:
  • Nelle fasi iniziali della risposta, Claude Code riprova dopo l’errore oppure termina il turno con un errore diverso. Consulta Nuovi tentativi automatici.
  • Quando uno di questi errori arriva dopo che Claude ha terminato la risposta, Claude Code conserva la risposta completa e termina il turno normalmente, senza questo avviso. Prima della v2.1.222, Claude Code mostrava questo avviso quando la connessione si interrompeva o si bloccava dopo il completamento della risposta e segnalava il turno come errore anche se la risposta era completa.
  • In una sessione non interattiva, come un’esecuzione -p, un’esecuzione dell’Agent SDK o una sessione cloud, non devi inviare tu continue quando la risposta interrotta si trova nella conversazione principale e contiene testo ma nessuna chiamata a uno strumento: Claude Code conserva l’output parziale e chiede a Claude di continuare da dove si era fermato, fino a tre volte di seguito. Vedi questo avviso per una risposta di questo tipo solo quando Claude Code ha esaurito quelle continuazioni. Prima della v2.1.246, Claude Code terminava un turno non interattivo con questo avviso alla prima interruzione.
  • In un subagent, che la sessione sia interattiva o meno: quando la sua risposta interrotta contiene testo ma nessuna chiamata a uno strumento, Claude Code chiede al subagent di continuare. L’avviso diventa l’ultimo messaggio del subagent solo quando quelle continuazioni sono esaurite. Prima della v2.1.257, un subagent mostrava questo avviso alla prima interruzione.
Cosa fare:
  • In una sessione interattiva, leggi la risposta che rimane sullo schermo: Claude Code conserva ogni blocco che Claude ha completato prima dell’errore, ma scarta un blocco finale interrotto quando il turno termina, quindi le frasi finali o le chiamate agli strumenti finali potrebbero mancare. Rispondi con continue per far riprendere Claude dal suo ultimo blocco completato.
  • In modalità non interattiva (-p):
    • Con l’output di testo predefinito, Claude Code stampa l’ultimo blocco di testo completato che conserva ancora da un punto precedente del turno, seguito da questo messaggio. Quando non ne conserva nessuno, Claude Code stampa solo questo messaggio, ad esempio perché ha compattato la conversazione a metà turno e ha eliminato quel testo. Prima della v2.1.219, Claude Code stampava solo questo messaggio nell’output di testo di -p e scartava la risposta già prodotta.
    • Con --output-format json o stream-json, Claude Code riporta questo messaggio nel campo result.
    • Per continuare il turno quando la connessione è stabile, riprendi la sessione e invia continue come descritto in Continuare le conversazioni.

Auto mode cannot determine the safety of an action

Il modello che la modalità auto usa per classificare le azioni non è riuscito a produrre una decisione, quindi la modalità auto non ha approvato automaticamente l’azione. Il messaggio che vedi dipende da come il classificatore non è riuscito. Le letture, le ricerche e le modifiche all’interno della tua directory di lavoro non passano dal classificatore, quindi continuano a funzionare in tutti questi casi. Quando il modello del classificatore non è disponibile:
In una sessione interattiva, sotto la chiamata allo strumento appare una riga attenuata Not run · auto mode's check had no usable answer al posto di questo messaggio. Premi Ctrl+O per leggere il messaggio nel visualizzatore della trascrizione. I rifiuti gave no verdict descritti in The server returned no safety verdict mostrano la stessa riga. Prima della v2.1.296, il messaggio appariva sotto la chiamata come errore in rosso. Quando Claude Code riesce a determinare la categoria dell’errore, la indica tra parentesi dopo temporarily unavailable, ad esempio <model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now. Le categorie sono (rate-limited), (overloaded), (server error), (timed out) e (connection failed). Se (timed out) o (connection failed) si ripete, controlla la tua connessione; consulta Unable to connect to API. Prima della v2.1.229, il messaggio non indicava mai una categoria e diceva Wait briefly and then try this action again. Quando nessuna categoria è adatta, il messaggio appare senza categoria tra parentesi; più errori diversi producono questa forma. Su Amazon Bedrock, incluso l’endpoint Mantle, appare anche quando il tuo account AWS non può invocare il modello indicato nel messaggio, e quell’errore si ripete a ogni nuovo tentativo finché al tuo account non viene concesso l’accesso al modello. Cosa fare:
  • Riprova dopo qualche secondo; Claude vede lo stesso messaggio e di solito riprova da solo. Un errore temporaneo non è legato all’idoneità alla modalità auto; non devi modificare le impostazioni
  • Se i nuovi tentativi continuano a non riuscire, prosegui con attività di sola lettura e torna più tardi all’azione bloccata
  • Su Amazon Bedrock, se il messaggio si ripresenta a ogni nuovo tentativo, verifica che il tuo account possa invocare il modello indicato: per i modelli Amazon Bedrock standard, conferma che la tua policy IAM ne consenta l’invocazione; per gli ID modello Mantle, contatta il team del tuo account AWS
  • Se il messaggio si ripresenta a ogni nuovo tentativo e indica il modello che hai impostato in CLAUDE_CODE_AUTO_MODE_MODEL, verifica che l’API o il provider cloud su cui viene eseguita la tua sessione serva quell’ID modello. In caso contrario, imposta la variabile su un ID modello che serve, oppure rimuovi la variabile per usare il modello del classificatore predefinito.
Quando una richiesta al classificatore non riesce perché il tuo token OAuth è scaduto o è stato ruotato da un’altra sessione, Claude Code aggiorna il token e riprova la richiesta una volta, quindi una normale scadenza del token non si manifesta con questo messaggio. Prima della v2.1.216, un token scaduto o ruotato faceva fallire ogni richiesta al classificatore e la modalità auto negava ogni azione controllata con questo messaggio finché il token non veniva aggiornato. Quando il classificatore ha restituito una risposta non analizzabile:
Cosa fare:
  • Riprova l’azione; di solito riesce al tentativo successivo
  • Esegui claude --debug e ripeti l’azione per vedere i dettagli nel log di debug
Quando un controllo di sicurezza dell’API separato ha bloccato la richiesta al classificatore a causa di contenuti precedenti della conversazione:
Claude Code nega l’azione ma comunica a Claude che non si tratta di un giudizio sulla pericolosità dell’azione e che deve proseguire con altre attività invece di riprovare. Questi rifiuti non vengono conteggiati nelle soglie di pausa della modalità auto. In un’esecuzione -p non interattiva, Claude Code non interrompe l’esecuzione. Ciò che Claude riceve dipende da dove ha richiesto l’azione:
  • A un subagent in background in un’esecuzione -p senza --input-format stream-json, Claude Code restituisce un risultato di errore contenente Agent aborted: auto mode classifier request refused by the safety safeguard in headless mode
  • In tutti gli altri casi, incluse le sessioni interattive e la conversazione principale di un’esecuzione -p, Claude Code restituisce quel rifiuto a Claude
Prima della v2.1.225, Claude Code conteggiava questi rifiuti nelle soglie di pausa e restituiva lo stesso messaggio di rifiuto di un vero blocco del classificatore. Cosa fare:
  • Non si tratta di una decisione sulla tua azione. Contenuti già presenti nella tua conversazione hanno attivato un filtro di sicurezza dell’API quando la modalità auto ha inviato la conversazione al classificatore
  • Riprovare non servirà; gli stessi contenuti della conversazione attiveranno di nuovo il filtro
  • In una sessione interattiva, passa a una modalità di permesso diversa in modo da poter approvare l’azione quando ti viene chiesto
  • Avvia una nuova conversazione senza i contenuti che attivano il filtro
Quando la conversazione è troppo lunga per la richiesta al classificatore di Claude Code e Claude Code non riesce a compattarla da solo:
Ciò che accade all’azione dipende da dove Claude l’ha richiesta:
  • In una sessione interattiva, la modalità auto ripiega su una normale richiesta di permesso per quell’azione, così puoi approvarla o negarla manualmente
  • A un subagent in background in un’esecuzione -p non interattiva senza --input-format stream-json, Claude Code restituisce un risultato di errore contenente Agent aborted: auto mode classifier transcript exceeded context window in headless mode e l’esecuzione continua
  • Altrove in un’esecuzione -p senza un --permission-prompt-tool, non c’è alcuna richiesta di permesso su cui ripiegare, quindi l’azione non viene eseguita e l’esecuzione continua
Cosa fare:
  • In una sessione interattiva, approva o nega l’azione nella richiesta che appare
  • In una sessione interattiva, esegui /compact per ridurre le dimensioni della conversazione in modo che le azioni successive rientrino di nuovo nella finestra del classificatore

The server returned no safety verdict

Con la revisione del classificatore lato server, la modalità auto nega un’azione quando il server non fornisce un verdetto su di essa. Il rifiuto indica una categoria tra parentesi quando Claude Code riesce a determinarla, come (timed out):
Il resto del messaggio indica a Claude se un nuovo tentativo può essere utile. Prima di alcuni di questi rifiuti, Claude Code attende, in modo che il tentativo successivo di Claude non segua immediatamente. Durante l’attesa in una sessione interattiva, lo spinner mostra Auto mode check unavailable con un conto alla rovescia, e premendo Esc interrompi il turno. Dopo dieci risposte consecutive senza verdetto, la modalità auto interrompe il turno:
Il messaggio di interruzione appare in un punto diverso a seconda del tipo di sessione:
  • In una sessione interattiva, il messaggio appare come avviso nella trascrizione e il turno termina
  • In un’esecuzione -p non interattiva, l’esecuzione termina e segnala un errore di esecuzione. Con l’output di testo predefinito, il messaggio viene stampato su stderr.
  • Quando un subagent ha raggiunto il limite, il subagent si ferma prima di terminare e Claude riceve ciò che ha prodotto, con una nota che indica che la modalità auto lo ha fermato
Cosa fare:
  • In una sessione interattiva, premi Ctrl+O per leggere il testo del rifiuto nel visualizzatore della trascrizione.
  • Se il rifiuto indica (the conversation is too long for the check), esegui /compact al prompt di Claude Code per accorciare la conversazione. Finché la conversazione non è più breve, inviare un altro messaggio produce lo stesso rifiuto. Se hai disattivato la compattazione automatica, riattivala in modo che Claude Code compatti da solo la prossima volta.
  • Invia un altro messaggio per far riprovare Claude. Il conteggio delle risposte riparte da zero.
  • Se l’interruzione si ripete e le tue richieste passano attraverso un gateway o proxy LLM, verifica se tronca o riscrive le risposte in streaming. La sezione Revisione del classificatore lato server indica quale comportamento del gateway causa i rifiuti, e la guida alla compatibilità dei gateway elenca cosa deve essere inoltrato senza modifiche.
  • Imposta CLAUDE_CODE_AUTO_MODE_SERVER=0 prima di avviare Claude Code per usare invece le sue richieste al classificatore. Prima della v2.1.281, Claude Code non leggeva la variabile su una connessione diretta ad Anthropic API.
  • Per approvare tu stesso le azioni, esci dalla modalità auto
Prima della v2.1.280, Claude Code negava immediatamente ogni azione proveniente da una risposta senza verdetto e non interrompeva mai il turno. Prima della v2.1.302, su una connessione diretta ad Anthropic API, Claude Code non compattava una conversazione diventata troppo lunga per il controllo del server.

Was not reviewed and did not run

Un rifiuto was not reviewed and did not run significa che la conversazione è troppo lunga perché il classificatore della modalità auto possa controllare l’azione, quindi l’azione non è stata eseguita. Claude Code restituisce questo messaggio a Claude:
Se la compattazione non riesce, le azioni successive che il classificatore non può controllare ricevono uno di altri due messaggi: Cosa fare:
  • Se la compattazione annunciata dal messaggio riesce, non devi fare nulla.
  • Se vedi uno di questi due messaggi, esegui /compact al prompt di Claude Code per accorciare tu stesso la conversazione. Se hai disattivato la compattazione automatica, riattivala in modo che Claude Code compatti da solo la prossima volta.

Agent terminated early due to an API error

Una richiesta API di un subagent non è riuscita in modo definitivo, ad esempio perché è stato raggiunto un limite di utilizzo o perché i nuovi tentativi per un errore del server si sono esauriti, quindi il subagent si è fermato prima di completare la sua attività. Questo messaggio richiede Claude Code v2.1.199 o successivo; prima di allora il testo dell’errore API veniva restituito a Claude come se fosse il risultato del subagent.
Cosa fare:
  • Individua la sezione di questa pagina corrispondente al dettaglio dell’errore dopo i due punti, come Limiti di utilizzo o Errori del server, e segui i passaggi di quella sezione
  • Una volta risolto l’errore sottostante, chiedi a Claude di riprovare l’attività o di riprendere il subagent
Quando un rate limit, un sovraccarico o un errore del server interrompe un subagent in primo piano che ha già prodotto output di testo, Claude riceve quell’output parziale contrassegnato come incompleto invece di questo errore. Anche un subagent il cui unico output erano chiamate agli strumenti riceve questo errore; nella v2.1.199 quel caso restituiva invece un risultato parziale vuoto. Consulta Errori API nei subagent.

Limiti di utilizzo

La maggior parte degli errori in questa sezione significa che è stata raggiunta una quota associata al tuo account o al tuo piano. Tre funzionano diversamente: Server is temporarily limiting requests è una limitazione lato server non correlata alla quota del tuo piano, Usage credits required for 1M context è un controllo di diritto piuttosto che una quota esaurita, e The prompt to confirm went unanswered significa che un prompt di consenso per i crediti di utilizzo è stato chiuso senza risposta, indipendentemente dal fatto che sia stata raggiunta una quota.

You’ve hit your session limit

I piani di abbonamento includono un’indennità di utilizzo mobile. Quando si esaurisce, vedrai uno di questi messaggi:
Claude Code blocca ulteriori richieste fino all’ora di ripristino mostrata nel messaggio. I limiti di sessione e settimanali sono condivisi tra tutti i modelli, quindi il cambio di modelli non ripristina l’accesso. I limiti Opus e Sonnet si applicano ciascuno solo alle richieste a quella famiglia di modelli, quindi il passaggio a un modello al di fuori della famiglia con /model ti mantiene al lavoro. In una sessione interattiva con accesso tramite abbonamento claude.ai, Claude Code può anche attendere nella sessione aperta e continuare l’attività interrotta poco dopo il ripristino. Vedi Wait for a usage limit to reset per quello che vedi, come avviare o annullare un’attesa e come disattivare la continuazione automatica. Prima della v2.1.234, Claude Code non offriva questa attesa. L’utilizzo conta sia per le indennità di sessione che settimanali contemporaneamente. Un singolo picco di attività intensa, come un grande fanout di workflow, può esaurire l’indennità settimanale prima che la finestra di sessione si ripristini. Cosa fare:
  • Attendi l’ora di ripristino mostrata nell’errore
  • Nella scheda Code dell’app Desktop, la scheda session-limit offre una casella di controllo Auto-continue when limits reset. La scheda weekly-limit non lo fa. Quando è selezionata, l’app Desktop riprova il turno interrotto dopo il ripristino e mostra l’ora del nuovo tentativo sulla scheda. La casella di controllo Desktop e l’impostazione Continue automatically at usage limit della CLI in /config sono separate, quindi disattiva ciascuna per conto proprio.
  • Per il limite Opus o Sonnet, esegui /model e passa a un modello al di fuori di quella famiglia per continuare a lavorare. Ogni modello ha la propria cache di prompt, quindi la richiesta successiva rilegge l’intera conversazione senza hit della cache; vedi Switching models
  • Esegui /usage per vedere i limiti del tuo piano e quando si ripristinano
  • Esegui /usage-credits per acquistare utilizzo aggiuntivo su Pro e Max, o per richiederlo al tuo amministratore su Team ed Enterprise. Vedi usage credits for paid plans per come viene fatturato.
  • Per aggiornare il tuo piano per limiti di base più elevati, vedi claude.com/pricing
Prima che una finestra si esaurisca, Claude Code può avvertirti che hai utilizzato la maggior parte di essa, con un messaggio come You've used 85% of your session limit · resets 3:45pm. Per monitorare l’indennità rimanente continuamente, aggiungi i campi rate_limits a una riga di stato personalizzata, oppure nell’app Desktop fai clic sull’anello di utilizzo accanto al selettore di modelli.

Usage credits required for 1M context

Il modello selezionato utilizza la finestra di contesto estesa da 1M token e il tuo piano lo include solo tramite crediti di utilizzo.
In una sessione che l’app Claude Desktop esegue, il suggerimento non nomina alcun comando: punta alla pagina delle impostazioni di utilizzo di claude.ai, oppure sui piani Team ed Enterprise dice di attivare i crediti di utilizzo su claude.ai/admin-settings/usage o di chiedere al tuo amministratore. Questo è un controllo di diritto, non un esaurimento della quota. Si attiva anche quando le tue indennità di sessione e settimanali hanno capacità rimanente. Vedi Extended context per quali piani includono il contesto 1M direttamente e quali richiedono crediti di utilizzo. Quando questo errore appare a metà conversazione perché il contesto è cresciuto oltre 200K token, Claude Code compatta automaticamente la conversazione al di sotto del limite di contesto standard e mantiene la sessione a quel limite in seguito, quindi non è necessaria alcuna azione. Nelle versioni precedenti alla v2.1.172, l’errore si ripeteva su ogni richiesta successiva incluso /compact; esegui /clear su quelle versioni per recuperare. I passaggi seguenti si applicano quando hai esplicitamente selezionato un modello [1m]. Cosa fare:
  • Esegui /model e seleziona la variante senza il suffisso [1m] per tornare alla finestra di contesto standard
  • Dove il messaggio nomina /usage-credits, eseguilo per attivare la fatturazione a consumo per la variante 1M su Pro e Max, o per richiedere crediti di utilizzo al tuo amministratore su Team ed Enterprise. Una volta che i crediti di utilizzo sono attivati, riavvia Claude Code o avvia una nuova sessione, a seconda di quello che dice il messaggio. Fino al riavvio, la sessione rimane al limite di contesto standard.
  • Se l’errore persiste dopo /model, un ID modello 1M potrebbe essere impostato altrove. Vedi Setting your model per i percorsi di configurazione da controllare in ordine di priorità.
  • Per rimuovere completamente le varianti 1M dal selettore di modelli, imposta CLAUDE_CODE_DISABLE_1M_CONTEXT=1
Prima della v2.1.268, il messaggio terminava con run /usage-credits to turn them on, or /model to switch to standard context e non menzionava il riavvio.

The prompt to confirm went unanswered

Se il tuo account richiede il consenso per i crediti di utilizzo Fable, Claude Code ti chiede di confermare prima che una richiesta Fable fatturi i crediti di utilizzo. Quando il prompt di consenso si chiude senza che nessuno risponda, Claude Code termina il turno con uno di questi messaggi:
I messaggi nominano il modello Fable della sessione, quindi su Fable 5 leggono continuing on Fable 5 e Fable 5 now uses usage credits. Prima della v2.1.257, il primo messaggio iniziava Fable 5 limit reached. Questo accade nelle sessioni Remote Control, nelle sessioni in background, nelle sessioni dei membri di un team di agenti e nelle sessioni che un’altra applicazione ospita tramite Agent SDK. Per quando Claude Code chiude il prompt, vedi Fable and usage credits. Cosa fare:
  • Dove viene eseguita la sessione, al terminale o nell’applicazione che la ospita, invia un altro prompt e rispondi al prompt di consenso quando riappare. Per una sessione in background, collegati prima dalla vista agenti. Reinviare da un client Remote Control mostra di nuovo questo messaggio, perché il client non può visualizzare il prompt.
  • Esegui /model per passare a un modello che non fattura i crediti di utilizzo
  • Per darti più tempo, imposta dialogExpiry su un valore più lungo o "never"
Prima della v2.1.236, questo messaggio non appariva: mentre un client Remote Control era connesso, Claude Code attendeva 60 secondi per una risposta e poi continuava il turno sul tuo modello predefinito.

Server is temporarily limiting requests

L’API ha applicato una limitazione di breve durata non correlata alla quota del tuo piano.
Claude Code distingue questi casi dal limite del tuo piano per l’assenza delle intestazioni di quota unificata che una vera risposta di limite porta. A partire dalla v2.1.199 questo viene riprovato automaticamente con backoff prima di essere mostrato, indipendentemente da come ti autentichi. Nelle versioni precedenti, una sessione con accesso tramite abbonamento claude.ai faceva fallire il turno alla prima occorrenza; solo gli accessi con chiave API ed Enterprise riprovavano. Cosa fare:

Request rejected (429)

Hai raggiunto il rate limit configurato per la tua chiave API, il progetto Amazon Bedrock o il progetto Google Cloud.
La frase finale nomina dove controllare l’integrità del servizio e varia in base al provider. Le configurazioni Amazon Bedrock, Google Cloud’s Agent Platform e Microsoft Foundry nominano lo stato del servizio di quel provider invece della pagina di stato Anthropic. Un ANTHROPIC_BASE_URL personalizzato nomina l’host del gateway. Quando un proxy, un load balancer o un gateway tra Claude Code e l’API risponde con la propria pagina HTML 429, il testo dopo il · è il titolo di quella pagina quando ne ha uno, come Too Many Requests. Prima della v2.1.281, l’intero markup della pagina era stampato dopo il ·. Cosa fare:
  • Esegui /status e conferma che la credenziale attiva è quella che ti aspetti. Un ANTHROPIC_API_KEY dimenticato nel tuo ambiente può instradare le richieste attraverso una chiave di livello inferiore invece del tuo abbonamento.
  • Controlla la console del tuo provider per i limiti attivi e richiedi un livello più elevato se necessario
  • Per le chiavi API Anthropic, vedi il riferimento sui rate limit per come funzionano i livelli e come impostare i limiti per workspace
  • Riduci la concorrenza: abbassa CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY, evita di eseguire molti subagent in parallelo, o passa a un modello più piccolo con /model per esecuzioni script ad alto volume

You’ve hit your monthly spend limit

L’utilizzo incluso nel tuo piano non può coprire questa richiesta, e i crediti di utilizzo che altrimenti la pagherebbero hanno raggiunto un limite di spesa. Ciò accade quando una delle finestre di utilizzo del tuo piano si è esaurita, o quando la richiesta è una che solo i crediti di utilizzo pagano, come una richiesta a un modello che fattura ai crediti di utilizzo. Il messaggio nomina il limite che ti ha bloccato. Il testo dopo il · dice come aumentare quel limite, e varia in base al tuo piano e se gestisci la fatturazione:
team's shared budget è un budget in pool che un amministratore ha assegnato a un gruppo a cui appartieni; il messaggio non nomina il gruppo. channel's monthly spend limit è il budget dell’unico canale Slack in cui viene eseguita la sessione, quindi la tua organizzazione potrebbe ancora avere budget al di fuori di esso. Quando una delle finestre del tuo piano è quella che si è esaurita, il messaggio dice anche quando quella finestra si ripristina, ad esempio · your session limit resets 3:45pm, e l’accesso ritorna allora senza che nessuno aumenti il limite. Nelle organizzazioni con fatturazione basata sull’utilizzo, il messaggio dice usage limit al posto di spend limit, come in You've hit your individual usage limit. Se ti connetti tramite un gateway di app Claude e vedi spend limit reached minuscolo, quello è invece il limite dell’operatore del gateway; vedi Spend limit reached. Cosa fare:
  • Su Pro e Max, aumenta il tuo limite di spesa mensile in Settings > Usage su claude.ai, o esegui /usage-credits
  • Su Team ed Enterprise, aumenta il limite in Organization settings > Usage se gestisci la fatturazione, o chiedi a un amministratore di farlo. /usage-credits invia quella richiesta al tuo amministratore per te
  • Per il limite di un canale, chiedi a un proprietario dell’organizzazione o al manager del canale di aumentarlo su claude.ai. Vedi Per-channel limits nella documentazione Claude Tag
  • Se il messaggio nomina un’ora di ripristino per la finestra del tuo piano, puoi invece aspettare
  • Esegui /usage per vedere le finestre del tuo piano e quando ciascuna si ripristina

Spend limit reached

Ti connetti tramite un gateway di app Claude e hai superato un limite di spesa impostato dall’operatore del gateway. Il gateway blocca le tue richieste fino a quando il periodo indicato non si ripristina o l’operatore non aumenta il limite. Contrassegna ogni risposta 429 bloccata con x-should-retry: false, quindi Claude Code mostra questo messaggio senza riprovare.
Il messaggio nomina il periodo del limite e l’ora di ripristino, e quando l’operatore ha configurato un blocked_message, le sue istruzioni lo seguono. Prima della v2.1.225, il messaggio diceva solo spend limit reached; un gateway su una versione precedente invia ancora quella forma più breve. Cosa fare:
  • Attendi l’ora di ripristino che il messaggio nomina, o segui le istruzioni dell’operatore se il messaggio le contiene
  • Chiedi al tuo operatore del gateway di aumentare il limite se lo raggiungi regolarmente
Un messaggio correlato, spend limit unavailable, significa che il gateway non poteva leggere i suoi record di spesa e ha bloccato la richiesta come precauzione piuttosto che per il tuo limite. Di solito si risolve da solo; se persiste, avvisa il tuo operatore del gateway.

Credit balance is too low

L’organizzazione della tua Console ha esaurito i crediti prepagati, o Claude Code sta inviando le tue richieste con una chiave API Console quando intendevi usare il tuo abbonamento.
Cosa fare:
  • Se hai un piano Pro, Max, Team o Enterprise e vedi questo, esegui /status e controlla la riga API key. Un ANTHROPIC_API_KEY approvato nel tuo ambiente instrada le richieste attraverso quella chiave invece del tuo abbonamento. Annullalo nella shell corrente e rimuovilo dal tuo profilo shell, quindi riavvia claude. Esegui /login se non hai ancora effettuato l’accesso con il tuo abbonamento.
  • Aggiungi crediti su platform.claude.com/settings/billing, e considera di abilitare il ricaricamento automatico lì in modo che il saldo si riempia prima di raggiungere lo zero
  • Imposta i limiti di spesa per workspace nella Console per evitare che un singolo progetto esaurisca il saldo dell’organizzazione. Vedi Manage costs effectively.

Could not update your spend limit

Il server ha rifiutato una modifica del limite di spesa che hai effettuato dal prompt che appare quando raggiungi il tuo limite di spesa.
Quando il server spiega il rifiuto, il messaggio termina con quel motivo, e riprovare con lo stesso valore fallisce di nuovo. Quando il fallimento non ha un motivo fornito dal server, come una connessione interrotta, il messaggio dice Could not update your spend limit. Press Enter to retry. e riprovare può avere successo. Prima della v2.1.216, Claude Code mostrava la forma generica per ogni fallimento. Cosa fare:
  • Se il messaggio include un motivo, scegli un limite che lo soddisfi, come un importo inferiore
  • Se il messaggio mostra solo la forma generica, riprova; il fallimento potrebbe essere transitorio
  • Se la modifica continua a fallire, effettuala invece dalle tue impostazioni di fatturazione claude.ai nel browser

Errori di autenticazione

Questi errori indicano che Claude Code non riesce a dimostrare la tua identità all’API. Esegui /status in qualsiasi momento per vedere quale credenziale è attualmente attiva.

Accesso non effettuato

Nessuna credenziale valida è disponibile per questa sessione.
In una sessione eseguita dall’app Claude Desktop, come la scheda Code o Cowork, il messaggio è Authentication required · Sign in again to continue e devi accedere di nuovo dall’app. Se accedi con il tuo account claude.ai in un’altra finestra di Claude Code che usa la stessa directory di configurazione, una sessione interattiva che mostra questo messaggio inizia a usare quell’accesso da sola. Non devi riavviarla. Prima della v2.1.286 su macOS, la sessione poteva continuare a mostrare il messaggio dopo che avevi effettuato l’accesso da un’altra finestra. In quelle versioni, riavvia la sessione che mostra il messaggio. Cosa fare:
  • Esegui /login per autenticarti con il tuo abbonamento Claude o il tuo account Console
  • Se ti aspettavi che una variabile d’ambiente ti autenticasse, verifica che ANTHROPIC_API_KEY sia impostata ed esportata nella shell in cui hai avviato claude
  • Per CI o automazioni in cui l’accesso interattivo non è possibile, configura uno script apiKeyHelper che recuperi una chiave all’avvio
  • Consulta Precedenza dell’autenticazione per capire quale credenziale usa Claude Code quando ne sono presenti diverse
Se ti viene chiesto ripetutamente di accedere, consulta Accesso non effettuato o token scaduto per i controlli dell’orologio di sistema e i passaggi di ripristino dell’archiviazione delle credenziali su macOS.

Impossibile determinare il metodo di autenticazione

La sessione ha raggiunto il client API senza alcuna credenziale. Le sessioni in background e le sessioni cloud mostrano questo messaggio quando il worker si avvia senza una credenziale. Le esecuzioni interattive, con -p e con l’Agent SDK segnalano la stessa condizione come Accesso non effettuato e scrivono questa stringa solo nel proprio log di debug, quindi se l’hai trovata lì, segui quella voce.
Nelle versioni attuali l’errore indica che nessuna credenziale era disponibile per il processo worker. Prima della v2.1.174, una sessione in background assegnata a un worker inattivo pre-inizializzato poteva fallire in questo modo anche quando erano configurate credenziali valide. Prima della v2.1.176, poteva succedere anche a una sessione cloud rimasta inattiva prima di essere presa in carico. Aggiorna per risolvere. Cosa fare:
  • Aggiorna alla v2.1.176 o successiva se questo messaggio compare in una sessione in background o cloud e le tue credenziali sono già configurate
  • Verifica che ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN o le credenziali del tuo provider cloud siano impostate nell’ambiente che avvia il worker, non solo nella tua shell interattiva
  • Per l’Agent SDK, consulta la configurazione dell’autenticazione nella guida rapida
  • Esegui /status in una sessione interattiva nello stesso ambiente per verificare quale origine delle credenziali viene risolta

Chiave API non valida

La variabile d’ambiente ANTHROPIC_API_KEY o lo script apiKeyHelper ha restituito una chiave che l’API ha rifiutato, oppure Claude Code ha bloccato una chiave proveniente da ANTHROPIC_API_KEY prima di inviarla.
Quando il messaggio prosegue dopo Fix external API key con una descrizione come Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines)., l’API non ha mai visto la chiave. Claude Code ha trovato un carattere che le intestazioni HTTP non possono contenere e ha interrotto la richiesta prima di inviarla. Consulta Valore dell’intestazione della richiesta non valido per sapere come leggere la descrizione e correggere il valore. Cosa fare:
  • Controlla eventuali errori di battitura e verifica che la chiave non sia stata revocata nella Console
  • Nella stessa shell, esegui env | grep ANTHROPIC, oppure in PowerShell Get-ChildItem Env:ANTHROPIC*. Strumenti come direnv, i plugin di shell per dotenv e i terminali degli IDE possono caricare una chiave obsoleta da un file .env nel tuo progetto senza che tu la imposti esplicitamente.
  • Rimuovi ANTHROPIC_API_KEY ed esegui /login per usare invece l’autenticazione tramite abbonamento
  • Se la chiave proviene da uno script apiKeyHelper, esegui lo script direttamente per verificare che stampi una chiave valida su stdout
  • Esegui /status per verificare quale origine delle credenziali sta effettivamente usando Claude Code

Il tuo script apiKeyHelper non funziona

Claude Code ha eseguito il comando nella tua impostazione apiKeyHelper e non ha ricevuto una chiave. Senza una chiave, la richiesta raggiunge l’API con una credenziale segnaposto e l’API la rifiuta con 401. Il pannello Authentication nel terminale mostra quale di questi casi si è verificato:
  • Il comando è terminato con un errore o è andato in timeout
  • Il comando non ha stampato nulla su stdout
  • Il comando ha stampato qualcosa oltre alla chiave, come un banner di accesso o una riga di log. Il pannello mostra returned output that cannot be used as an API key e indica cosa non va, senza ripetere l’output. Prima della v2.1.227, Claude Code inviava qualunque cosa il comando stampasse, dopo aver rimosso gli spazi iniziali e finali.
In modalità non interattiva, anche stderr riporta il motivo specifico, preceduto da apiKeyHelper failed:. Claude Code riesegue lo script e riprova la richiesta fino ad altre due volte prima di mostrare questo messaggio, quindi l’errore emerge entro tre tentativi. Prima della v2.1.208, Claude Code esauriva l’intero budget di nuovi tentativi reinviando la richiesta con la credenziale segnaposto e poi segnalava un generico errore di autenticazione 401 invece dell’errore dello script. Eseguire /login non aiuta in questo caso: l’output dell’helper ha la precedenza su un accesso salvato finché l’impostazione è presente. Cosa fare:
  • Esegui direttamente nella tua shell il comando configurato in apiKeyHelper per riprodurre l’errore
  • Se il comando segnala una sessione scaduta, autenticati di nuovo con il tuo provider di credenziali, ad esempio accedendo di nuovo al tuo SSO o al tuo vault dei segreti
  • Correggi il comando in modo che stampi su stdout solo la chiave, come singolo token di caratteri ASCII stampabili lungo al massimo 16.384 caratteri, e termini con codice di uscita 0. Consulta ruotare le credenziali con apiKeyHelper per una configurazione funzionante.
  • Esegui /status per vedere l’errore e verificare che apiKeyHelper sia l’origine delle credenziali attiva. La riga apiKeyHelper mostra Failing con i dettagli dell’ultimo errore, come il codice di uscita e l’output di errore del comando, e scompare dopo la successiva esecuzione riuscita. Prima della v2.1.274, /status mostrava solo l’origine delle credenziali, non l’errore.
  • Ogni volta che il comando fallisce, il suo codice di uscita e il suo output di errore compaiono anche in un pannello Authentication nel terminale. Prima della v2.1.212, il pannello si intitolava Cloud authentication.

Valore dell’intestazione della richiesta non valido

Un valore che Claude Code stava per inviare come intestazione di una richiesta contiene un carattere che le intestazioni HTTP non possono contenere: un’interruzione di riga, un byte NUL o un carattere oltre U+00FF, come una virgoletta curva o uno spazio a larghezza zero. Claude Code interrompe la richiesta prima di inviare qualsiasi cosa e indica la variabile o l’impostazione da correggere. La causa abituale è una credenziale incollata da un documento o da una chat che conteneva un carattere invisibile o un’interruzione di riga accidentale. Claude Code esegue questo controllo quando invia richieste all’API Claude direttamente o tramite un gateway LLM. Con un provider cloud di terze parti come Amazon Bedrock, Claude Code non lo esegue prima dell’invio.
La prima parte del messaggio dipende dall’origine del valore errato:
  • Invalid auth token: un bearer token da ANTHROPIC_AUTH_TOKEN o CLAUDE_CODE_OAUTH_TOKEN
  • Invalid ANTHROPIC_CUSTOM_HEADERS: un nome o un valore di intestazione che hai impostato in ANTHROPIC_CUSTOM_HEADERS. La descrizione indica quale coppia Name: Value è responsabile, ad esempio distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS, senza ripetere il nome o il valore, dato che li hai scelti tu.
  • Invalid request header from the environment: un valore che Claude Code copia in un’intestazione della richiesta da un’altra variabile d’ambiente, come CLAUDE_AGENT_SDK_CLIENT_APP. La descrizione indica la variabile da correggere.
Claude Code segnala una ANTHROPIC_API_KEY errata intercettata da questo controllo come Chiave API non valida, con la stessa descrizione finale. Segnala invece una credenziale /login salvata errata come Accesso non effettuato; esegui /login per salvarne una nuova. L’output di uno script apiKeyHelper non arriva mai a questo controllo: Claude Code lo convalida quando lo script viene eseguito, e un output che un’intestazione HTTP non può contenere fallisce con Il tuo script apiKeyHelper non funziona. Dopo il secondo ·, il messaggio descrive il problema, come in questo esempio completo:
Le posizioni contano i caratteri a partire da uno. La descrizione è costruita con frasi fisse e conteggi di caratteri, quindi non include mai il valore stesso. Indica il carattere problematico solo quando si tratta di un carattere invisibile o tipografico noto, come un byte-order mark, uno spazio a larghezza zero o una virgoletta curva, e segnala qualsiasi altro carattere come a non-ASCII character. Cosa fare:
  • Reimposta la variabile o l’impostazione indicata dal messaggio, digitando di nuovo i caratteri intorno alla posizione segnalata anziché incollarli di nuovo dalla stessa fonte
  • Per ANTHROPIC_CUSTOM_HEADERS, mantieni una coppia Name: Value per riga e riscrivi la coppia indicata dal messaggio
  • Esegui /status per verificare quale origine delle credenziali è attiva

Questa organizzazione è stata disabilitata

Claude Code sta usando una ANTHROPIC_API_KEY obsoleta di un’organizzazione Console disabilitata. Quando hai un accesso tramite abbonamento salvato, la chiave ha la precedenza su di esso.
Il suggerimento dopo il · dipende dalle tue credenziali salvate: la prima forma compare quando un /login salvato può subentrare dopo che rimuovi la chiave, la seconda quando la chiave è la tua unica credenziale. Le variabili d’ambiente hanno la precedenza su /login, quindi una chiave esportata nel profilo della tua shell o caricata da un file .env viene usata anche quando hai un abbonamento Pro o Max funzionante. In modalità non interattiva (-p), la chiave viene sempre usata quando è presente. Cosa fare:
  • Rimuovi ANTHROPIC_API_KEY nella shell corrente e dal profilo della tua shell, poi riavvia claude
  • Se il messaggio dice Update or unset, non hai un accesso salvato a cui ripiegare. Rimuovi la chiave ed esegui /login, oppure sostituisci la chiave con una di un’organizzazione Console attiva.
  • Esegui /status in seguito per verificare che la credenziale attiva sia il tuo abbonamento
  • Se nessuna variabile d’ambiente è impostata e l’errore persiste, contatta l’assistenza o accedi con un account diverso.

La tua organizzazione ha disabilitato l’autenticazione con chiave API

Questo messaggio richiede Claude Code v2.1.169 o successiva. L’amministratore della tua organizzazione Console ha disattivato l’autenticazione con chiave API, quindi l’API rifiuta la chiave che Claude Code sta inviando. Il suggerimento di ripristino dopo il · varia in base all’origine della chiave:
L’ultima forma compare in una sessione eseguita dall’app Claude Desktop, come la scheda Code o Cowork, dove accedi di nuovo dall’app. Le variabili d’ambiente e apiKeyHelper hanno la precedenza su /login, quindi eseguire solo /login non aiuta finché uno dei due fornisce ancora una chiave. Consulta Precedenza dell’autenticazione. Cosa fare:
  • Se il messaggio indica ANTHROPIC_API_KEY, rimuovila nella shell corrente e dal profilo della tua shell o dal file .env, poi riavvia claude
  • Se il messaggio indica apiKeyHelper, rimuovi l’impostazione apiKeyHelper dal tuo settings.json
  • Esegui /login per accedere con il tuo account claude.ai
  • Esegui /status in seguito per verificare che la credenziale attiva sia il tuo abbonamento e non una chiave API
  • Se hai bisogno dell’autenticazione con chiave API per le automazioni, chiedi all’amministratore della tua organizzazione di riattivarla nella Console

La tua organizzazione ha disabilitato l’accesso tramite abbonamento Claude

La tua organizzazione Claude non consente di accedere a Claude Code con un accesso tramite abbonamento. Eseguire di nuovo /login con lo stesso account restituisce lo stesso errore.
Si tratta di un’impostazione dell’organizzazione lato server, quindi non può essere sovrascritta da impostazioni locali, variabili d’ambiente o flag della CLI. L’Agent SDK e la modalità non interattiva -p lo riportano come codice di errore oauth_org_not_allowed. Cosa fare:
  • Chiedi al tuo amministratore di abilitare l’accesso a Claude Code per la tua organizzazione
  • Autenticati con una chiave API della Console invece che con il tuo abbonamento. Consulta Autenticazione con Claude Console per la configurazione.
  • Se sei l’amministratore e non vedi un’opzione per abilitare l’accesso, contatta l’assistenza Anthropic

Le routine sono disabilitate dal criterio della tua organizzazione

Un Owner della tua organizzazione Team o Enterprise ha disattivato le routine a livello di organizzazione. L’errore compare quando provi a creare o eseguire una routine, ad esempio dall’interfaccia Routine su claude.ai/code. Su Claude Code v2.1.227 o successiva, la stessa impostazione nasconde anche /schedule nella CLI.
Si tratta di un’impostazione lato server, quindi non può essere sovrascritta da impostazioni locali, variabili d’ambiente o flag della CLI. Cosa fare:

Remote Control richiede l’API Anthropic

La sessione non comunica direttamente con l’API Anthropic, come richiesto da Remote Control.
Una seconda frase spiega cosa ha instradato la sessione lontano dall’API Anthropic; prima della v2.1.219, il messaggio era composto solo dalla prima frase. A seconda della causa, il messaggio indica:
  • Una variabile del provider CLAUDE_CODE_USE_*, come CLAUDE_CODE_USE_BEDROCK per Amazon Bedrock o CLAUDE_CODE_USE_VERTEX per Agent Platform di Google Cloud
  • ANTHROPIC_BASE_URL che punta a un host diverso da api.anthropic.com, come un gateway LLM o un proxy, anche quando accedi con claude.ai; prima della v2.1.196, un URL di base personalizzato non bloccava Remote Control
  • ANTHROPIC_UNIX_SOCKET impostata, per cui la sessione invia le sue richieste tramite un socket locale anziché a api.anthropic.com
  • Un accesso tramite gateway cloud aziendale effettuato con /login, che non supporta Remote Control e non ha alcuna variabile da rimuovere
Cosa fare:
  • Rimuovi la variabile indicata dal messaggio, come CLAUDE_CODE_USE_BEDROCK o ANTHROPIC_BASE_URL, e riavvia la sessione, oppure avvia Remote Control da una sessione che comunica direttamente con l’API Anthropic
  • Se la variabile non è impostata nella tua shell, controlla la chiave env nei tuoi file di impostazioni, che applica variabili d’ambiente a ogni sessione
  • Per questo e gli altri messaggi di avvio di Remote Control, consulta Risoluzione dei problemi di Remote Control

Remote Control non è riuscito ad aggiornare il tuo accesso

Claude Code mantiene attiva una connessione Remote Control usando credenziali di breve durata che ottiene e rinnova tramite il tuo accesso claude.ai salvato. Quando claude.ai smette di accettare quell’accesso, o Claude Code non ha più alcun accesso salvato, Claude Code interrompe Remote Control e ha bisogno che tu acceda di nuovo. Entrambi gli errori possono verificarsi mentre Claude Code si sta ancora connettendo oppure più tardi, quando rinnova le credenziali. Quando Claude Code chiede al servizio di accesso di aggiornare il tuo accesso salvato e non riceve risposta, mantiene Remote Control in esecuzione e riprova l’aggiornamento finché la credenziale corrente della connessione è ancora valida. Un aggiornamento non riceve risposta quando Claude Code non riesce a raggiungere il servizio di accesso, la richiesta va in timeout o il servizio fallisce senza rifiutare il tuo accesso. Se il servizio di accesso non risponde ancora quando quella credenziale scade, Claude Code interrompe Remote Control e segnala OAuth token refresh failed. Quando Claude Code interrompe Remote Control, mostra il motivo in un avviso e in una riga della trascrizione che inizia con Remote Control disconnected. La tua sessione locale continua a funzionare senza Remote Control. Questa sezione tratta queste righe:
Claude Code indica la causa nella parte centrale del messaggio:
  • Claude.ai login expired e Claude.ai login was rejected: claude.ai non accetta più il tuo token di accesso salvato, perché è scaduto o è stato revocato
  • OAuth token unavailable: Claude Code non aveva alcun token di accesso salvato quando la credenziale della connessione doveva essere rinnovata
  • OAuth token refresh failed: claude.ai ha rifiutato il tuo token di accesso salvato mentre Claude Code si stava riconnettendo, e l’aggiornamento del token non ne ha prodotto uno nuovo
  • JWT refresh failed: no OAuth token: Claude Code non ha trovato alcun token di accesso salvato con cui rinnovare
  • Signed out of Claude: sei uscito su questa macchina, ad esempio eseguendo /logout in un altro terminale, quindi Claude Code non ha più alcun accesso salvato con cui rinnovare la connessione
Cosa fare:
  • Esegui /login per accedere di nuovo
  • Esegui /remote-control per riconnettere la sessione. I messaggi che terminano con run /login to restore Remote Control non richiedono questo passaggio: Claude Code si riconnette da solo una volta effettuato l’accesso.
Prima della v2.1.224, OAuth token refresh failed — run /login to re-authenticate era OAuth token refresh failed — re-authenticate, then re-enable Remote Control, e JWT refresh failed: no OAuth token — run /login era no OAuth token available for recovery (code <N>). I messaggi Claude.ai login expired, Claude.ai login was rejected e OAuth token unavailable sono stati aggiunti nella v2.1.225. Prima della v2.1.238, Claude Code segnalava i casi che ora indicano Signed out of Claude come JWT refresh failed: no OAuth token — run /login, e interrompeva Remote Control con Claude.ai login expired — run /login to restore Remote Control non appena un aggiornamento dell’accesso non riceveva risposta.

Remote Control could not renew this computer’s connection

Questo avviso appare nel terminale in cui è in esecuzione claude remote-control quando il server non riesce a usare il tuo accesso claude.ai per rinnovare la credenziale della sua connessione prima che scada. L’ultima frase dell’avviso indica per quanto tempo la credenziale corrente funzionerà ancora, oppure che è già scaduta:
Cosa fare:
  • Se l’avviso ti dice di eseguire claude /login, apri un altro terminale sulla macchina su cui è in esecuzione il server, esegui lì claude /login e accedi con il tuo account claude.ai
  • Se il server non riesce ancora ad accedere una volta scaduta la credenziale della connessione, stampa un errore contenente Poll: Authentication failed (401) e si arresta. Accedi di nuovo come indica la seconda frase dell’avviso, poi esegui di nuovo claude remote-control nel terminale in cui il server si è arrestato.

Remote Control interrotto perché l’account con cui hai effettuato l’accesso è cambiato

Claude Code mostra questa riga durante una sessione Remote Control quando accedi a un account o a un’organizzazione claude.ai diversi su questa macchina. Hai effettuato il cambio al di fuori della sessione di Claude Code, ad esempio eseguendo /login in un altro terminale. Una sessione Remote Control che hai avviato mentre avevi effettuato l’accesso tramite /login appartiene all’account e all’organizzazione claude.ai con cui avevi effettuato l’accesso in quel momento.
Claude Code interrompe la sessione Remote Control non appena claude.ai conferma che l’account o l’organizzazione è cambiato. La tua sessione locale continua a funzionare senza Remote Control. Cosa fare:
  • Esegui /remote-control per avviare una nuova sessione Remote Control con l’account o l’organizzazione corrente
  • Per tornare indietro, esegui /login e accedi di nuovo all’account o all’organizzazione precedente. Poi esegui /remote-control.
Prima della v2.1.234, Claude Code non si accorgeva di quando passavi a un account o a un’organizzazione diversi al di fuori della sessione di Claude Code. Claude Code manteneva la sessione Remote Control connessa finché una richiesta successiva al server Remote Control non falliva con Remote Control server rejected the request (HTTP 404). Quell’errore poteva arrivare ore dopo il cambio.

Remote Control interrotto perché l’app che esegue la sessione è uscita o ha cambiato account

Quando l’app desktop di Claude o un IDE ospita la tua sessione, Claude Code ottiene il suo token di accesso da quell’app anziché da /login. Quando claude.ai rifiuta quel token, Claude Code ne chiede uno nuovo all’app. Se l’app risponde di non avere un accesso attivo, o di aver ora effettuato l’accesso con un account Claude diverso, Claude Code termina la sessione Remote Control e invia all’app una di queste righe:
La tua sessione locale continua a funzionare senza Remote Control. Cosa fare:
  • Se l’app non ha un accesso attivo, accedi di nuovo, poi riattiva Remote Control nell’app
  • Se l’app ha cambiato account, Claude Code non può continuare la sessione terminata con il nuovo account. Avvia una nuova sessione Remote Control con quell’account.
Prima della v2.1.238, in entrambi i casi Claude Code inviava all’app i messaggi run /login elencati in Remote Control non è riuscito ad aggiornare il tuo accesso.

Token OAuth revocato o scaduto

Il tuo accesso salvato non è più valido. Un token revocato significa che sei uscito ovunque o che un amministratore ha rimosso l’accesso; un token scaduto significa che l’aggiornamento automatico non è riuscito a metà sessione. Entrambi i messaggi riportano un rifiuto restituito dall’API per una richiesta inviata da Claude Code. Quando l’accesso salvato è già stato cancellato dopo un aggiornamento non riuscito, vedi invece Accesso scaduto. Se ti autentichi con un token di lunga durata in CLAUDE_CODE_OAUTH_TOKEN, vedi gli stessi messaggi quando quel token scade o viene revocato.
In modalità non interattiva (-p) e nell’Agent SDK, i messaggi sono i seguenti e il codice di errore strutturato è authentication_failed:
Prima della v2.1.287, in modalità non interattiva e nell’Agent SDK, il messaggio per il token revocato era Your account does not have access to Claude. Please login again or contact your administrator. Cosa fare:
  • Esegui /login nel prompt di Claude Code per accedere di nuovo
  • Se il tuo comando -p o il tuo programma Agent SDK usa un accesso salvato, esegui claude nello stesso ambiente, completa /login, poi esegui di nuovo il comando o il programma. Per le automazioni che non possono accedere in modo interattivo, autenticati con ANTHROPIC_API_KEY oppure genera un token di lunga durata con claude setup-token.
  • Se ti autentichi con la variabile d’ambiente CLAUDE_CODE_OAUTH_TOKEN, Claude Code continua a inviare il valore che hai impostato dopo che una richiesta fallisce con un 401, anziché passare al token di un accesso salvato. /status mostra questa credenziale come una riga Auth token con valore CLAUDE_CODE_OAUTH_TOKEN. Genera un nuovo token con claude setup-token e riavvia con esso, oppure rimuovi la variabile ed esegui /login. Prima della v2.1.225, Claude Code poteva sostituire a metà sessione il valore della variabile con il token di accesso di breve durata di un accesso salvato, e la sessione tornava a fallire con errori 401 una volta scaduto quel token.
  • Per richieste ripetute di accesso a ogni avvio, consulta i controlli dell’orologio di sistema e i passaggi di ripristino dell’archiviazione delle credenziali su macOS in Risoluzione dei problemi
  • Per altri errori, inclusi 403 Forbidden e i problemi del browser con OAuth, consulta Accesso e autenticazione

API Error: 401 Invalid authentication credentials

L’API ha riconosciuto il formato della tua credenziale ma ha rifiutato l’account o l’organizzazione associati. Anthropic restituisce questo messaggio quando una credenziale è stata revocata di recente, quando un’organizzazione è stata disabilitata o ha rimosso il tuo accesso, oppure quando l’account stesso è stato disattivato, quindi la causa non è un token scaduto. La credenziale può essere il tuo accesso salvato o una ANTHROPIC_API_KEY approvata, e la soluzione è diversa, quindi inizia eseguendo /status per vedere quale è attiva.
Cosa fare:
  • Se /status mostra una riga API key non contrassegnata come non in uso, una ANTHROPIC_API_KEY approvata è la credenziale attiva e ha la precedenza sul tuo accesso, quindi /login non la sostituisce. Ruota la chiave nella Claude Console, oppure torna al tuo abbonamento eseguendo unset ANTHROPIC_API_KEY, o in PowerShell Remove-Item Env:ANTHROPIC_API_KEY.
  • Se /status mostra solo il tuo accesso, esegui /login una volta. Se la credenziale è stata revocata, un nuovo accesso la sostituisce.
  • Se lo stesso messaggio ricompare per lo stesso account di accesso, l’account o l’organizzazione non è più attivo. Controlla l’account e l’organizzazione riportati da /status e chiedi all’amministratore della tua organizzazione di ripristinare l’accesso.
  • Se ANTHROPIC_BASE_URL punta a un gateway LLM, il testo dopo 401 è il messaggio del tuo gateway e non di Anthropic, e /login non lo modifica. Correggi invece la credenziale che il tuo gateway si aspetta.

Accesso scaduto

Claude Code ha provato a rinnovare il tuo accesso claude.ai salvato e il servizio OAuth ha rifiutato il refresh token memorizzato, quindi Claude Code ha cancellato le credenziali salvate. Da quel momento, ogni richiesta al modello si interrompe localmente con questo messaggio prima di raggiungere l’API, perché solo /login può creare nuove credenziali. Prima della v2.1.206, Claude Code inviava comunque la richiesta al modello con qualunque credenziale restasse nell’ambiente, e ogni modello falliva quindi con There’s an issue with the selected model o con un 401 invece di una richiesta di accesso.
In modalità non interattiva (-p) e nell’Agent SDK, il messaggio è il seguente e il codice di errore strutturato è authentication_failed:
Per un messaggio Login expired che termina con or re-authenticate your Anthropic profile, consulta Anthropic profile login expired. Questo stato non è lo stesso di Token OAuth revocato o scaduto. Quei messaggi riportano un rifiuto restituito dall’API. Claude Code stesso produce Login expired per un accesso che non è già riuscito a rinnovare, quindi non invia alcuna richiesta. Quando il rinnovo fallisce perché è l’account stesso a essere sospeso e non l’accesso a essere obsoleto, Claude Code mostra invece Il tuo account è sospeso. Le sessioni autenticate con una chiave API, con CLAUDE_CODE_OAUTH_TOKEN o con un provider di terze parti non usano l’accesso salvato e non vedono mai questo messaggio. Puoi verificare questo stato prima che una richiesta fallisca: /status mostra una riga Login con valore Expired — log in again, oltre all’organizzazione e all’email salvate per l’accesso scaduto. La riga compare solo quando l’accesso salvato è la tua credenziale attiva e non può più essere aggiornato. Le sessioni autenticate in altro modo non mostrano la riga, anche se resta salvato un accesso scaduto. Prima della v2.1.210, /status non dava alcuna indicazione in questo stato che fosse mai esistito un accesso, perché la credenziale cancellata non gli lasciava nulla da riportare. Cosa fare:
  • Esegui /login per accedere di nuovo. Riprovare senza accedere mostra lo stesso messaggio a ogni richiesta.
  • Se accedi con il tuo account claude.ai in un’altra finestra di Claude Code, consulta Accesso non effettuato per sapere quando questa sessione inizia a usare quell’accesso da sola.
  • In modalità non interattiva, esegui claude nello stesso ambiente, completa /login, poi esegui di nuovo il tuo comando. Per le automazioni che non possono accedere in modo interattivo, autenticati con ANTHROPIC_API_KEY oppure genera un token di lunga durata con claude setup-token.
  • Se l’accesso continua a non riuscire, consulta Accesso e autenticazione

Impossibile aggiornare il tuo accesso perché un altro processo di Claude Code lo sta aggiornando

Questo messaggio non significa che il tuo accesso è stato rifiutato. Il tuo accesso claude.ai salvato era scaduto e doveva essere rinnovato. Un altro processo di Claude Code sulla stessa macchina deteneva il lock condiviso di aggiornamento, oppure è terminato lasciandolo attivo, e l’aggiornamento non ha fatto progressi mentre questa sessione attendeva. Claude Code interrompe la richiesta prima di inviarla:
In modalità non interattiva (-p) e nell’Agent SDK, il messaggio è il seguente e il codice di errore strutturato è server_error:
Le sessioni autenticate con una chiave API, con CLAUDE_CODE_OAUTH_TOKEN o con un provider di terze parti non usano l’accesso salvato e non vedono mai questo messaggio. Cosa fare:
  • Riprova tra un minuto. Se un altro processo completa prima l’aggiornamento, questa sessione usa l’accesso rinnovato.
  • Se il messaggio continua a ripresentarsi, chiudi le altre finestre e gli altri processi di Claude Code, poi riprova.
  • Se si ripresenta senza altri processi di Claude Code in esecuzione, esegui /login. Accedere di nuovo non attende il lock di aggiornamento.

Impossibile salvare il tuo accesso

Hai effettuato l’accesso con claude.ai, ma Claude Code non è riuscito a salvare l’accesso nel suo archivio delle credenziali, quindi l’accesso non è stato completato. Su macOS questo può accadere quando il portachiavi di login si blocca, ad esempio durante lo stop o l’inattività, dopo che Claude Code ha già letto o salvato credenziali al suo interno durante la stessa sessione.
La prima forma compare su macOS e la seconda ovunque altrove. Un errore temporaneo dell’archivio delle credenziali, come un timeout o un archivio illeggibile, produce lo stesso messaggio. Cosa fare:
  • Su macOS, sblocca il portachiavi di login, poi esegui di nuovo /login
  • Sulle altre piattaforme, esegui di nuovo /login
  • Se l’accesso continua a non essere salvato, consulta Accesso non effettuato o token scaduto per il comando di sblocco del portachiavi e altri passaggi di ripristino dell’archiviazione delle credenziali

Impossibile avviare il server di callback OAuth

Quando /login, claude auth login o claude setup-token ti fa accedere tramite il browser, Claude Code apre una porta in ascolto su 127.0.0.1 in modo che il browser possa restituirgli il risultato dell’accesso. Questo messaggio indica che Claude Code non è riuscito ad aprire quella porta, e l’accesso si interrompe prima che compaia una finestra del browser o un URL di accesso:
Se il tuo messaggio termina con Is port 0 in use?, il tentativo di mettersi in ascolto sull’indirizzo di loopback IPv4 127.0.0.1 è fallito del tutto. Poiché l’errore si verifica prima che esista un URL di accesso, il flusso Paste code here if prompted non è disponibile come soluzione alternativa. Cosa fare:
  • Per accedere subito senza il listener locale: se usi un abbonamento claude.ai, esegui claude setup-token su una macchina in cui l’accesso funziona e imposta il token che stampa come CLAUDE_CODE_OAUTH_TOKEN su questa macchina. Altrimenti imposta ANTHROPIC_API_KEY con una chiave della Claude Console. Precedenza dell’autenticazione spiega come Claude Code sceglie tra le credenziali.
  • Per usare invece l’accesso tramite browser su questa macchina, Claude Code deve potersi mettere in ascolto su 127.0.0.1. Se viene eseguito in una sandbox, verifica che il criterio della sandbox consenta l’ascolto su porte locali, poi esegui di nuovo /login. Se dovrebbe poterlo fare e continua a fallire, esegui /feedback in modo che la segnalazione includa i dettagli del tuo ambiente.

Accesso Claude non accettato

Hai provato ad avviare una sessione cloud e il server si è rifiutato di crearla con un 401: non ha accettato l’accesso Claude inviato da questa macchina, di solito perché l’accesso era scaduto o era stato revocato. La prima parte della riga è il motivo fornito dal server, quando ne fornisce uno. Altrimenti la riga è:
Cosa fare:
  • Esegui /login, completa l’accesso, poi avvia di nuovo la sessione

Gli artefatti richiedono un accesso claude.ai

Claude Code ha rifiutato la pubblicazione o la lettura di un artefatto perché la sessione non ha un accesso claude.ai utilizzabile per gli artefatti. Ogni forma del messaggio inizia con le stesse parole, seguite da un rimedio che dipende da come si autentica la tua sessione. Senza credenziali concorrenti il messaggio è:
Cosa fare:
  • Esegui /login e seleziona Claude account with subscription. L’opzione Anthropic Console account non fornisce credenziali claude.ai.
  • Quando il messaggio indica una credenziale che ha la precedenza, come ANTHROPIC_API_KEY, un’impostazione apiKeyHelper o una chiave Console salvata da un precedente /login, rimuovila nel modo indicato dal messaggio, poi esegui /login
  • Quando il messaggio dice che questa sessione remota si autentica tramite la macchina che l’ha avviata, accedi a claude.ai su quella macchina, poi riconnetti la sessione
  • Quando il messaggio dice che la credenziale è fornita dall’ambiente host della sessione, non puoi modificarla in quella sessione; avvia una sessione con accesso effettuato a claude.ai
  • Consulta Disponibilità per gli altri requisiti degli artefatti, come piano, provider del modello e criterio dell’organizzazione

Il criterio dell’amministratore richiede un accesso tramite Cloud gateway

Le impostazioni gestite di un amministratore su questa macchina impostano forceLoginMethod su "gateway" oppure impostano forceLoginGatewayUrl. A meno che tu non selezioni un provider cloud tramite una variabile come CLAUDE_CODE_USE_BEDROCK, Claude Code accetta quindi solo l’accesso tramite gateway delle app Claude. Vedi uno di due messaggi:
Le richieste al modello falliscono con questo messaggio quando la sessione non ha un accesso tramite gateway, ad esempio perché non hai eseguito /login da quando il criterio è arrivato sulla macchina. Se la macchina contiene anche una credenziale emessa da Anthropic e le impostazioni gestite impostano forceLoginMethod o forceLoginOrgUUID, Claude Code termina invece all’avvio. Quella credenziale può essere una variabile ANTHROPIC_API_KEY o ANTHROPIC_AUTH_TOKEN, un’impostazione apiKeyHelper o una chiave API salvata da un precedente accesso alla Claude Console. Il messaggio di avvio indica la credenziale con cui è configurata la sessione, dove è impostata e il passaggio per rimuoverla. Ad esempio, con una variabile ANTHROPIC_API_KEY impostata nella tua shell, il messaggio è:
Cosa fare:
  • Per Not signed in to the Cloud gateway, esegui /login e completa l’accesso nella schermata Cloud gateway
  • Per il messaggio di avvio, rimuovi la credenziale seguendo i passaggi alla fine del messaggio
  • Se ritieni che la macchina non debba richiedere il gateway, chiedi all’amministratore che la gestisce di rimuovere forceLoginMethod e forceLoginGatewayUrl dalle sue impostazioni gestite
Prima della v2.1.284, il messaggio di avvio elencava le credenziali possibili invece di indicare quella configurata. Iniziava con Administrator policy requires a Cloud gateway sign-in on this machine; the Anthropic-issued credential configured here (ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, or apiKeyHelper) is not used. Se vedi quella formulazione e non riesci a capire quale credenziale rimuovere, aggiorna alla v2.1.284 o successiva e avvia di nuovo claude. Nella v2.1.265, una regressione mostrava il primo messaggio anche in alcune configurazioni con gateway LLM e proxy che si autenticano con una chiave API, apiKeyHelper o intestazioni personalizzate, anche senza alcun requisito dell’amministratore sulla macchina. Aggiorna alla v2.1.266 o successiva. Non è necessario modificare la tua configurazione. Prima della v2.1.261, sulle macchine che impostano forceLoginMethod su "gateway", Claude Code usava un accesso salvato residuo invece di far fallire le richieste al modello, e segnalava una credenziale d’ambiente configurata con This machine's managed settings require a first-party login invece del messaggio di avvio.

Il tuo account è sospeso

L’account Claude associato al tuo accesso è stato sospeso. Claude Code mostra il primo messaggio quando prova a rinnovare il tuo accesso salvato e viene a sapere della sospensione, e il secondo quando un accesso che completi nel browser la segnala:
Accedere di nuovo con lo stesso account non elimina il messaggio, perché la sospensione riguarda l’account e non l’accesso. In modalità non interattiva (-p) e nell’Agent SDK, il codice di errore strutturato è account_on_hold. Prima della v2.1.235, Claude Code segnalava un account sospeso come Login expired · Please run /login, i cui passaggi di ripristino non possono eliminare una sospensione. Cosa fare:
  • Apri il link nel messaggio per visualizzare i dettagli della sospensione o presentare ricorso
  • Se hai un altro account Claude o una chiave API non interessati dalla sospensione, puoi continuare a lavorare mentre la sospensione viene risolta: esegui /login con quell’account, oppure imposta la chiave con ANTHROPIC_API_KEY

Accesso del profilo Anthropic scaduto

Claude Code si sta autenticando tramite un profilo di credenziali Anthropic la cui credenziale di login salvata è scaduta, e il profilo non contiene alcuna credenziale di aggiornamento che Claude Code possa usare per rinnovarla. Claude Code interrompe ogni richiesta localmente senza riprovare.
Cosa fare:
  • Se il messaggio inizia con Login expired, esegui /login per accedere di nuovo
  • Per rinnovare un profilo scritto dall’accesso alla Console senza chiave o da ant auth login della CLI di Claude Platform, esegui /login su una macchina che offre l’accesso senza chiave. Scegli l’account Anthropic Console, poi Sign in with your Console account. Claude Code sostituisce la credenziale scaduta in quel profilo
  • Per rinnovare un profilo creato da un altro strumento, accedi di nuovo con quello strumento. Se invece scegli Sign in with your Console account in /login, Claude Code lascia il profilo così com’è e crea una chiave API
  • Se la credenziale del profilo è stata fornita da un amministratore, chiedigli di emetterne una nuova
  • Esegui /status per verificare l’origine delle credenziali attiva e il nome del profilo
  • Per smettere di usare il profilo, rimuovi ANTHROPIC_PROFILE se l’hai impostata, poi autenticati in un altro modo, ad esempio con /login o ANTHROPIC_API_KEY
L’inizio del messaggio ti indica come Claude Code ha trovato il profilo:
  • Quando Claude Code ha rilevato il profilo dalla tua directory di configurazione e la sua modalità di autenticazione è user_oauth, il messaggio inizia con Login expired e propone prima /login. Claude Code dà a un /login funzionante la precedenza sul profilo rilevato e si autentica quindi con il tuo account claude.ai. Dalla v2.1.234 fino alla v2.1.277, questa forma era Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile. Prima della v2.1.234, anche in questo caso Claude Code mostrava la forma Re-authenticate your Anthropic profile.
  • Quando hai selezionato il profilo con ANTHROPIC_PROFILE, il messaggio inizia con Anthropic profile login expired.
Questo messaggio compare solo quando la credenziale attiva proviene da un profilo di credenziali Anthropic, che tu selezioni con la variabile d’ambiente ANTHROPIC_PROFILE, che Claude Code rileva come profilo attivo nella tua directory di configurazione Anthropic, o che Claude Code ha scritto quando hai effettuato l’accesso senza una chiave API. Le sessioni che si autenticano con una chiave API, con un bearer token come ANTHROPIC_AUTH_TOKEN o con un provider di terze parti non vedono mai questo messaggio.

Requisito di scope OAuth

Il token memorizzato è precedente a uno scope di permesso richiesto da una funzionalità più recente:
Cosa fare:
  • Esegui /login per ottenere un nuovo token con gli scope attuali. Non è necessario uscire prima.

claude.ai ha rifiutato il token di sessione

Una richiesta di un connettore claude.ai è fallita perché claude.ai ha rifiutato il token del tuo accesso a Claude Code. Il token rifiutato è il tuo accesso, non l’autorizzazione propria del connettore in claude.ai, quindi autorizzare di nuovo il connettore non risolve il problema. In /mcp, il connettore appare come session token rejected e la sua vista dettagliata riporta:
Cosa fare:
  • Esegui /login per accedere di nuovo
  • Riconnetti il connettore da /mcp, oppure esegui /mcp reconnect <server>. Riconnettersi prima di accedere di nuovo lascia il connettore nello stesso stato. L’opzione Reconnect del pannello /mcp segnala your claude.ai session token was rejected; la forma digitata /mcp reconnect <server> segnala una riconnessione riuscita anche se il token è ancora rifiutato.
Prima della v2.1.222, Claude Code contrassegnava invece il connettore come bisognoso di autenticazione, indirizzandoti al flusso di autorizzazione del connettore anche se completarlo non risolveva lo stato.

Il server MCP richiede di accedere di nuovo

Un server MCP remoto ha rifiutato la credenziale in una chiamata a uno strumento a metà sessione, di solito perché un accesso o un token è scaduto o perché il token non ha un permesso necessario allo strumento. La chiamata allo strumento fallisce e /mcp contrassegna il server come bisognoso di autenticazione. Per un server a cui accedi da Claude Code, incluso un connettore claude.ai, l’accesso è scaduto o è stato revocato:
Esegui /mcp, seleziona il server e accedi di nuovo dal suo menu. Per un server configurato con uno script headersHelper, Claude Code ha già rieseguito l’helper e riprovato la chiamata una volta prima di mostrare questo messaggio:
Verifica che l’helper restituisca una credenziale accettata dal server, poi riconnettiti da /mcp, che esegue di nuovo l’helper. Per un server con un’intestazione Authorization statica nella sua configurazione:
Aggiorna il valore dell’intestazione dove è configurato il server, poi riconnettiti da /mcp. Prima della v2.1.273, i casi di accesso scaduto, headersHelper e intestazione Authorization mostravano tutti MCP server "<name>" requires re-authorization (token expired). Un server può anche rifiutare una chiamata a uno strumento con HTTP 403 insufficient_scope per chiederti di autorizzare uno scope, a volte uno che il tuo token elenca già. Il messaggio indica quello scope:
Esegui /mcp, seleziona il server e autenticati di nuovo dal suo menu. Quando la configurazione del server non imposta né oauth.scopes né authServerMetadataUrl, Claude Code richiede lo scope indicato dal server. Con una delle due impostazioni, Claude Code richiede invece gli scope di quell’impostazione. Se hai fissato oauth.scopes, aggiungi lo scope mancante a quell’elenco prima di autenticarti di nuovo. Prima della v2.1.274, questo caso mostrava il messaggio needs you to sign in again, e prima della v2.1.273 mostrava requires re-authorization (token expired) come gli altri casi.

URL del server MCP mancante o non valido

Claude Code si è rifiutato di avviare un accesso OAuth per un server MCP remoto perché l’url configurato del server non viene interpretato come URL. A meno che Claude Code non abbia un problema di configurazione più specifico da segnalare per il server, eseguire claude mcp login <name> nella tua shell stampa il rifiuto come:
Cosa fare:
  • Imposta l’url della voce sull’endpoint reale del server dove il server è configurato, oppure imposta la variabile d’ambiente indicata dal suo riferimento ${VAR}, poi esegui di nuovo l’accesso.

Mancata corrispondenza dell’emittente nella risposta di autorizzazione

Durante un accesso OAuth MCP, il server di autorizzazione ha reindirizzato di nuovo a Claude Code con un parametro iss che non indica l’emittente che Claude Code si aspettava in base ai metadati OAuth del server. Un emittente errato in questo passaggio è il segno di un attacco di mix-up del server di autorizzazione, quindi Claude Code fa fallire l’accesso invece di scambiare il codice di autorizzazione. Claude Code mostra l’errore nel menu del server in /mcp dopo l’accesso tramite browser:
expected è l’emittente indicato nei metadati OAuth del server, e received è il valore iss contenuto nel reindirizzamento. Un accesso il cui reindirizzamento non contiene alcun parametro iss supera il controllo, a meno che i metadati del server non impostino authorization_response_iss_parameter_supported, nel qual caso Claude Code fa fallire l’accesso. Cosa fare:
  • Riprova l’accesso da /mcp
  • Se l’errore si ripete, segnalalo al gestore del server. La correzione è lato server: il server di autorizzazione deve restituire nel parametro iss lo stesso emittente che dichiara nei suoi metadati
  • Per connetterti mentre il server viene corretto, avvia Claude Code con MCP_SDK_GENERATION=v1, il cui runtime non esegue questo controllo. Questo rimuove una protezione contro gli attacchi di mix-up, quindi preferisci la correzione lato server
Prima della v2.1.232, Claude Code usava il runtime v2 solo in un rilascio graduale o quando impostavi MCP_SDK_GENERATION=v2.

Rifiuto di inviare credenziali a un endpoint token non https

Con il runtime v2, Claude Code invia una richiesta di token OAuth MCP solo a un endpoint token servito tramite HTTPS oppure su localhost, 127.0.0.1 o ::1. Questo messaggio indica che l’endpoint token del server non è né l’uno né l’altro, quindi Claude Code si è fermato prima di inviare la richiesta. Ciò accade dopo l’accesso tramite browser, quindi il passaggio nel browser riesce prima, e di nuovo ogni volta che Claude Code aggiorna il token del server. Nella sua forma completa, il messaggio proviene dall’SDK MCP e cita l’endpoint token rifiutato. Nel log di debug, segue Error during auth completion: per un accesso o Token refresh failed: per un aggiornamento. Nella tua shell, claude mcp login <name> lo stampa dopo Couldn't complete authentication for "<name>":, e in una sessione /mcp lo mostra nel menu del server:
Claude Code considera potenzialmente segreto un URL del server che contiene una query string o un segmento di percorso lungo e dall’aspetto casuale. Per un server di questo tipo, oscura gli errori di accesso generati dall’SDK MCP prima di mostrarli o registrarli nei log. Questo errore appare allora come un nome breve che può cambiare tra una release e l’altra, come io, seguito da from the MCP SDK for e dall’URL del server oscurato. Anche gli altri errori dell’SDK MCP assumono lì la stessa forma. Il messaggio oscurato può corrispondere a questo errore solo quando l’endpoint token del server è un semplice http:// su un indirizzo diverso da localhost, 127.0.0.1 o ::1. Cosa fare:
  • Servi quell’endpoint token tramite HTTPS, ad esempio mettendo il server dietro un reverse proxy o un tunnel che termina TLS e configurando il server in modo che dichiari l’indirizzo https://
  • Per connetterti senza modificare il server, avvia Claude Code con MCP_SDK_GENERATION=v1, il cui runtime non applica questa regola e invia la richiesta di token tramite HTTP semplice. Questa scelta dura finché non esci e si applica a ogni server. Il runtime v1 salta anche il controllo dell’emittente, quindi preferisci servire l’endpoint tramite HTTPS

Credenziali AWS scadute o non valide

Il tuo token di sessione AWS è scaduto o è stato rifiutato. Questo messaggio compare in caso di 401 da Claude Platform on AWS o dall’endpoint Mantle, che è il modo in cui questi provider segnalano un token di sicurezza scaduto. Il suggerimento di azione nella parte centrale varia in base alla tua configurazione. La parte stabile è quella iniziale, AWS credentials expired or invalid:
Prima della v2.1.273, questo messaggio compariva solo quando awsAuthRefresh era configurato. Cosa fare:
  • Se il suggerimento dice che le credenziali sono gestite da questo ambiente, l’app che ha avviato Claude Code possiede la credenziale e gli altri passaggi qui non si applicano: riprova, oppure contatta il tuo amministratore
  • Se awsAuthRefresh è impostato, esegui il comando indicato nel messaggio, come aws sso login --profile myprofile, in un altro terminale e completa l’accesso nel browser, poi riprova. Altrimenti aggiorna tu stesso la credenziale AWS che usi: il tuo accesso SSO, le chiavi di accesso, la chiave API o il token del proxy
  • Con awsAuthRefresh impostato in una sessione interattiva, puoi invece eseguire /login, scegliere 3rd-party platform, poi selezionare Claude Platform on AWS · refresh credentials in Using 3rd-party platforms per eseguire lo stesso comando senza riavviare Claude Code. Consulta Configurare le credenziali AWS
  • Se l’errore si ripete dopo che il comando di aggiornamento è riuscito, verifica che l’identità sia valida al di fuori di Claude Code con aws sts get-caller-identity nella stessa shell e con lo stesso profilo

Autenticazione AWS non riuscita

Il tuo provider AWS ha restituito un 403, oppure Amazon Bedrock ha restituito un 401. Amazon Bedrock segnala un token di sicurezza scaduto come 403, ma un 403 è anche il modo in cui segnala un rifiuto di autorizzazione, come un AccessDeniedException dovuto a un permesso IAM mancante. Claude Code non è in grado di distinguere queste due cause. Anche un 401 da Amazon Bedrock finisce qui anziché in Credenziali AWS scadute o non valide, perché Amazon Bedrock non segnala un token scaduto come 401. Un 401 da quell’endpoint deriva in genere da qualcos’altro nel percorso della richiesta, come un proxy aziendale. Un aggiornamento delle credenziali risolve un token scaduto ma non può risolvere le altre cause, quindi il messaggio propone entrambe le soluzioni:
Il suggerimento di azione nella parte centrale varia in base alla tua configurazione. La parte stabile è quella iniziale, AWS authentication failed. Quando il 403 è la risposta di Amazon Bedrock per indicare che non hai accesso al modello con l’ID modello specificato, il suggerimento ti dice invece di abilitare il modello per il tuo account e la tua regione nella console di Amazon Bedrock. Prima della v2.1.273, questo messaggio compariva solo quando awsAuthRefresh era configurato. Cosa fare:
  • Se il suggerimento dice che le credenziali sono gestite da questo ambiente, l’app che ha avviato Claude Code possiede la credenziale e gli altri passaggi qui non si applicano: riprova, oppure contatta il tuo amministratore
  • Aggiorna le tue credenziali AWS nel caso in cui la causa sia una credenziale scaduta: esegui il comando awsAuthRefresh indicato nel messaggio quando ne è impostato uno, oppure aggiorna tu stesso il tuo accesso SSO, le chiavi di accesso, la chiave API o il token del proxy
  • Se le tue credenziali sono aggiornate, verifica che i permessi IAM indicati in Configurazione IAM siano associati all’identità che stai usando e che il modello selezionato sia abilitato per il tuo account e la tua regione
  • Esegui aws sts get-caller-identity per verificare quale identità usano le tue richieste

Credenziali Google Cloud scadute o non valide

Le tue credenziali Google Cloud per Agent Platform di Google Cloud sono scadute o sono state rifiutate: la richiesta ha restituito un 401, che è il modo in cui Agent Platform segnala la scadenza delle credenziali. Il suggerimento di azione nella parte centrale varia in base alla tua configurazione. La parte stabile è quella iniziale, Google Cloud credentials expired or invalid:
Cosa fare:
  • Se il suggerimento dice che le credenziali sono gestite da questo ambiente, l’app che ha avviato Claude Code possiede la credenziale e gli altri passaggi qui non si applicano: riprova, oppure contatta il tuo amministratore
  • Se ti autentichi con le credenziali predefinite dell’applicazione, esegui il comando gcpAuthRefresh indicato nel messaggio, oppure gcloud auth application-default login, e completa l’accesso, poi riprova
  • Se instradi tramite un gateway LLM con CLAUDE_CODE_SKIP_VERTEX_AUTH impostata, aggiorna il token del gateway in ANTHROPIC_AUTH_TOKEN o ANTHROPIC_CUSTOM_HEADERS, poi riprova
  • Se ti autentichi con un file di chiave di un service account, verifica che GOOGLE_APPLICATION_CREDENTIALS punti a una chiave valida. Consulta Configurare le credenziali GCP
  • Se l’errore si ripete dopo un aggiornamento, verifica che l’identità funzioni al di fuori di Claude Code con gcloud auth application-default print-access-token nella stessa shell
Prima della v2.1.273, un 401 da Agent Platform mostrava invece il messaggio generico Please run /login o Failed to authenticate, che non può aggiornare le credenziali Google Cloud.

Autenticazione Google Cloud non riuscita

Agent Platform di Google Cloud ha restituito un 403, che usa per i rifiuti di autorizzazione anziché per le credenziali scadute. Di solito all’identità con cui ti autentichi manca un permesso IAM, oppure il modello non è abilitato per il tuo progetto. Il suggerimento di azione al centro varia in base alla tua configurazione. La parte stabile è l’iniziale Google Cloud authentication failed:
Cosa fare:
  • Se il suggerimento indica che le credenziali sono gestite da questo ambiente, la credenziale appartiene all’app che ha avviato Claude Code e gli altri passaggi qui non si applicano: riprova oppure contatta il tuo amministratore
  • Verifica che i ruoli indicati in Configurazione IAM siano concessi all’identità con cui ti autentichi
  • Verifica che il modello sia abilitato per il tuo progetto. Consulta Richiedere l’accesso al modello
Prima della v2.1.273, un 403 da Agent Platform mostrava invece il messaggio generico Please run /login o Failed to authenticate, che non può aggiornare le credenziali Google Cloud.

Autenticazione Microsoft Foundry non riuscita

Microsoft Foundry ha restituito un 401 o un 403: la credenziale Azure nella richiesta è stata rifiutata, oppure l’identità associata non ha accesso alla risorsa Foundry. /login non può generare credenziali Azure. Il suggerimento di azione al centro varia in base alla tua configurazione. La parte stabile è l’iniziale Microsoft Foundry authentication failed:
Cosa fare:
  • Se il suggerimento indica che le credenziali sono gestite da questo ambiente, la credenziale appartiene all’app che ha avviato Claude Code e gli altri passaggi qui non si applicano: riprova oppure contatta il tuo amministratore
  • Aggiorna la credenziale che hai configurato in Configurare le credenziali Azure: ruota ANTHROPIC_FOUNDRY_API_KEY, genera un nuovo ANTHROPIC_FOUNDRY_AUTH_TOKEN oppure esegui az login in modo che la catena di credenziali predefinita di Microsoft Entra possa accedere di nuovo
  • Se la credenziale è aggiornata, verifica che l’identità abbia accesso alla risorsa Foundry. Consulta Configurazione RBAC di Azure
Prima della v2.1.273, un 401 o un 403 da Microsoft Foundry mostrava invece il messaggio generico Please run /login o Failed to authenticate, che non può aggiornare le credenziali Azure.

Impossibile caricare le credenziali AWS o Google Cloud

Claude Code non è riuscito a ottenere credenziali utilizzabili dalla catena di provider di credenziali AWS o dalle credenziali predefinite dell’applicazione Google sulla macchina su cui è in esecuzione, quindi nessuna richiesta ha raggiunto il tuo provider cloud. Il dettaglio dopo · indica la causa specifica, ad esempio una sessione SSO scaduta, credenziali predefinite dell’applicazione mancanti segnalate come Could not load the default credentials, oppure un accesso revocato segnalato come invalid_grant:
In modalità non interattiva con -p e nell’Agent SDK, il codice di errore strutturato è cloud_credential_error. Prima della v2.1.267, il messaggio mostrava solo il testo di dettaglio dopo API Error: e il codice strutturato era server_error o unknown. Cosa fare:

Timeout nella risoluzione delle credenziali della catena predefinita AWS

La catena di provider di credenziali predefinita AWS non ha prodotto credenziali entro 60 secondi, quindi Claude Code ha interrotto la risoluzione e ha fatto fallire la richiesta. Questo timeout è una delle cause di Impossibile caricare le credenziali AWS o Google Cloud. L’errore riguarda la risoluzione locale delle credenziali: la richiesta non ha mai raggiunto Amazon Bedrock, Claude Platform on AWS o l’endpoint Mantle. Claude Code svuota la sua cache delle credenziali e riprova prima che questo errore venga mostrato, quindi quando lo vedi la catena si è bloccata in tentativi ripetuti.
Le cause comuni sono un comando credential_process nel tuo profilo AWS che attende un input che non può ricevere, e un container o una VM il cui servizio di metadati dell’istanza (IMDS) non risponde mai alla verifica della catena. Prima della v2.1.267, il messaggio riportava API Error: AWS default-chain credential resolve timed out. Prima della v2.1.207, una catena bloccata lasciava la richiesta in attesa indefinitamente anziché farla fallire. Cosa fare:
  • Esegui aws sts get-caller-identity nella stessa shell con lo stesso AWS_PROFILE. Se si blocca anche questo, correggi il profilo; un comando credential_process che chiede input in modo interattivo è una causa comune.
  • Completa il passaggio di accesso prima di avviare Claude Code, ad esempio aws sso login --profile myprofile
  • Se la tua catena esegue un accesso interattivo che richiede legittimamente più di 60 secondi, come SSO con MFA tramite un wrapper come aws-vault, aumenta il limite in millisecondi con CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS

Timeout della verifica della configurazione di Bedrock in attesa di AWS

Una chiamata ad AWS durante la verifica delle credenziali della procedura guidata di configurazione di Bedrock, come la ricerca delle credenziali o il controllo dell’identità, non è terminata entro il limite di 60 secondi. La procedura guidata smette di attendere e fa fallire il passaggio di verifica:
Il numero riflette il tuo limite: 60 secondi per impostazione predefinita, oppure il valore che hai impostato in CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS. Le cause comuni sono una rete o un proxy che blocca le richieste ad AWS, incluso l’aggiornamento del token SSO, e un helper delle credenziali ancora in attesa di un input che non puoi vedere. Aumenta il limite solo quando l’helper ha legittimamente bisogno di più tempo. Una singola richiesta ad AWS bloccata può anche fallire per il proprio timeout per richiesta, che mostra un messaggio più breve nello stesso passaggio:
Quando gli stessi timeout si verificano nel passaggio di fissaggio del modello, la procedura guidata contrassegna un modello come unreachable anziché mostrare uno dei due messaggi. Cosa fare:
  • Esegui aws sts get-caller-identity nella stessa shell. Se si blocca anche questo, il blocco è al di fuori di Claude Code, nella tua rete, nel tuo proxy o nell’helper delle credenziali del tuo profilo AWS; risolvi prima quello.
  • Completa qualsiasi accesso interattivo prima di aprire la procedura guidata, ad esempio aws sso login --profile myprofile
  • Se un helper delle credenziali nel tuo profilo AWS ha legittimamente bisogno di più di 60 secondi per chiederti l’input, aumenta il limite in millisecondi con CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS

Sessione del gateway cloud scaduta

Hai effettuato l’accesso tramite un gateway delle app Claude e la sessione del gateway salvata su questa macchina è scaduta e non è stato possibile rinnovarla, oppure il gateway non la accetta più, ad esempio dopo la sostituzione del segreto JWT del gateway. Se vedi questa riga quando avvii claude in modo interattivo, la sessione si è aperta senza accesso al gateway:
La stessa riga può comparire durante la sessione quando la credenziale del gateway scade e Claude Code non riesce a rinnovarla. In un’esecuzione non interattiva, in una sessione in background o in un’altra sessione non presidiata, oppure in un sottocomando di claude diverso da claude auth, Claude Code termina invece con questo messaggio quando il gateway non accetta più la sessione:
Cosa fare:
  • Esegui /login nella sessione e completa l’accesso dal browser
  • Per un avvio non interattivo, avvia claude nello stesso ambiente, esegui /login, quindi esegui di nuovo il tuo comando

Accesso scaduto in attesa che tu proseguissi

Durante un accesso tramite un gateway delle app Claude, il gateway ha indicato l’account che ha effettuato l’accesso e Claude Code ti ha chiesto di confermarlo prima di salvare la credenziale. Hai lasciato la conferma aperta oltre la scadenza dell’accesso stesso e il gateway non ha emesso alcun refresh token in grado di rinnovarlo, quindi Claude Code non ha memorizzato nulla quando hai proseguito:
Cosa fare:
  • Esegui di nuovo /login e conferma l’account prima che l’accesso scada

Il gateway ha rifiutato la richiesta

Hai effettuato l’accesso tramite un gateway delle app Claude e una richiesta ha restituito un 403: il gateway, o il servizio upstream dietro di esso, l’ha rifiutata. Accedere di nuovo non cambia un rifiuto, quindi il messaggio ti indirizza all’amministratore del gateway:
Cosa fare:
  • Chiedi all’amministratore del gateway di esaminare la richiesta. La parte finale API Error: contiene il rifiuto restituito dal gateway
  • Per gli amministratori: una regola di controllo degli accessi sul gateway restituisce un 403 che il log di audit registra con il relativo motivo, e il rifiuto di autorizzazione di un upstream viene inoltrato secondo quanto descritto in Messaggi di errore upstream
Prima della v2.1.273, un 403 in una sessione del gateway mostrava invece il messaggio generico Please run /login o Failed to authenticate, e accedere di nuovo non eliminava il rifiuto.

Errori di rete e connessione

La maggior parte di questi errori significa che una richiesta di rete da Claude Code non ha raggiunto la sua destinazione, oppure qualcosa tra Claude Code e l’API ha alterato la risposta durante il percorso; quando una voce ha anche una causa locale, come una scrittura dell’archivio non riuscita, il corpo lo specifica. Di solito originano dalla tua rete locale, proxy o firewall, oppure dalla politica di rete dell’ambiente cloud.

Unable to connect to API

La connessione TCP all’API non è riuscita o non si è mai completata. Per i codici di errore di connessione comuni, il messaggio specifica il tipo di errore e mantiene il codice tra parentesi:
Un codice che Claude Code non riconosce appare come Unable to connect to API seguito dal codice tra parentesi. Alcuni di questi messaggi possono mostrare più di un codice: Connection refused può mostrare ConnectionRefused o ECONNREFUSED, ad esempio, e Can't reach the API server può mostrare ENOTFOUND o FailedToOpenSocket. Prima della v2.1.227, ognuno di questi messaggi codificati leggeva Unable to connect to API seguito dal codice, ad esempio Unable to connect to API (ECONNREFUSED). Le cause comuni includono nessun accesso a Internet, una VPN che blocca api.anthropic.com, o un proxy aziendale richiesto che non è configurato. Cosa fare:
  • Conferma di poter raggiungere l’host API dalla stessa shell eseguendo curl -I https://api.anthropic.com. Su Windows PowerShell usa curl.exe -I https://api.anthropic.com in modo che l’alias Invoke-WebRequest integrato non sia utilizzato.
  • Se sei dietro un proxy aziendale, imposta HTTPS_PROXY prima di avviare Claude Code e vedi Network configuration
  • Se instradi attraverso un gateway LLM o un relay, imposta ANTHROPIC_BASE_URL al suo indirizzo. Vedi Connect Claude Code to an LLM gateway per la configurazione.
  • Assicurati che il tuo firewall consenta gli host elencati in Network access requirements
  • I guasti intermittenti vengono ritentati automaticamente; i guasti persistenti indicano un problema di rete locale
Se curl ha successo ma Claude Code continua a fallire, la causa è solitamente qualcosa tra il runtime e la rete piuttosto che la rete stessa:
  • Controlla se ANTHROPIC_BASE_URL è impostato eseguendo echo $ANTHROPIC_BASE_URL, o echo $env:ANTHROPIC_BASE_URL in PowerShell, e cercalo nel blocco env dei tuoi settings files. Quando è impostato, Claude Code invia le richieste del modello a quell’indirizzo invece di api.anthropic.com, quindi un valore residuo che punta a un proxy locale o gateway che non è più in esecuzione produce Connection refused anche se curl raggiunge l’API. Rimuovilo dal tuo profilo shell o dalle impostazioni e avvia Claude Code da un nuovo terminale.
  • Su Linux e WSL, controlla /etc/resolv.conf per un nameserver non raggiungibile. WSL in particolare può ereditare un resolver rotto dall’host.
  • Su macOS, un client VPN che è stato disconnesso o disinstallato può lasciare dietro un’interfaccia tunnel o una regola di routing. Controlla ifconfig per interfacce utun stantie e rimuovi l’estensione di rete della VPN in Impostazioni di Sistema.
  • Docker Desktop e runtime di container simili possono intercettare il traffico in uscita. Chiudili e riprova per escludere questa possibilità.

Unable to connect to Anthropic services

Durante la configurazione della prima esecuzione, Claude Code verifica di poter raggiungere api.anthropic.com e platform.claude.com prima di mostrare il passaggio di accesso. Quando uno dei controlli fallisce, Claude Code stampa il motivo ed esce.
Claude Code invia il controllo attraverso la stessa proxy configuration delle richieste API e assegna a ogni sonda 10 secondi. Quando la sonda fallita è passata attraverso un proxy, il messaggio nomina la variabile d’ambiente che l’ha configurata, come HTTPS_PROXY. Prima della v2.1.222, il controllo utilizzava un diverso trasporto proxy senza timeout: dietro un URL proxy con lo schema https://, potrebbe bloccarsi su Checking connectivity... indefinitamente e poi fallire anche se le richieste API attraverso lo stesso proxy hanno successo. Claude Code salta questo controllo quando un file di impostazioni gestite, una policy MDM o un policy helper imposta forceLoginMethod a "gateway", o imposta forceLoginGatewayUrl senza forceLoginMethod. Con entrambe le configurazioni, Claude Code apre il passaggio di accesso sulla schermata Cloud gateway piuttosto che su un metodo di accesso Anthropic. Claude Code salta anche il controllo quando una fonte di impostazioni gestite sulla macchina esiste ma non può essere letta, poiché quella fonte potrebbe contenere la configurazione del gateway. Prima della v2.1.247, Claude Code eseguiva il controllo anche sotto questa configurazione e usciva con questo errore quando gli endpoint di Anthropic non erano raggiungibili. Claude Code salta il controllo anche su una macchina senza impostazioni gestite quando il tuo ~/.claude/settings.json specifica un gateway con forceLoginMethod e forceLoginGatewayUrl. Prima della v2.1.295, Claude Code eseguiva il controllo in quel caso. Cosa fare:
  • Se il messaggio nomina una variabile proxy, controlla che il suo valore punti al proxy giusto e chiedi al tuo team di rete di consentire connessioni HTTPS attraverso di esso all’host nel messaggio. Vedi Network configuration.
  • Lavora attraverso i controlli in Unable to connect to API. Il test curl e la guida del firewall lì si applicano anche a questo controllo.
  • Se la tua rete è aperta e il guasto persiste, Claude Code potrebbe non essere disponibile nel tuo paese

Socket is closed

Socket is closed significa che la connessione che trasporta una risposta in streaming è stata chiusa mentre la risposta stava ancora arrivando. La causa più comune è un proxy aziendale su Windows che interrompe un tunnel stabilito a metà risposta. A seconda di quanto la risposta era progredita, Claude Code ritenta la richiesta, mantiene ciò che Claude ha prodotto, o termina il turno. Vedi Automatic retries. Prima della v2.1.214, Claude Code non ritentava questo guasto e il turno si fermava con un errore contenente Socket is closed. Cosa fare:
  • Se vedi questo errore, aggiorna a v2.1.214 o successivo con claude update, quindi invia di nuovo il tuo messaggio
  • Se i turni continuano a fallire dietro lo stesso proxy dopo l’aggiornamento, lavora attraverso Unable to connect to API e controlla la configurazione del proxy in Network configuration

API returned an empty or malformed response

Claude Code mostra questo errore quando il suo nuovo tentativo non in streaming di una richiesta in streaming fallita ottiene uno stato HTTP di successo ma il corpo non è un messaggio API Claude: comunemente una pagina di errore HTML o di accesso, un corpo vuoto, o JSON in un altro formato. Un proxy, gateway, o pagina di accesso di rete che risponde al posto dell’API è la solita fonte. Claude Code non ritenta la richiesta e il turno termina con questo errore.
Dopo quell’apertura, il messaggio segnala ciò che è tornato e quale richiesta ha fallito:
  • Una clausola Response: con il tipo di contenuto, il tipo di corpo, come body is an HTML page o empty body, la sua dimensione in byte, e se la risposta ha portato un id di richiesta Anthropic. Quando la risposta nomina un server riconoscibile, come nginx o cloudflare, o porta intestazioni intermediarie, come cf-ray o via, la clausola elenca anche quelli.
  • Una frase che nomina l’id della richiesta in streaming fallita e il guasto che ha attivato il nuovo tentativo. Quando uno stream si era aperto prima del guasto, segnala anche quanti eventi di stream sono arrivati e, se ce ne sono stati, quanto tempo lo stream era stato silenzioso quando il tentativo è fallito.
Prima della v2.1.234, il messaggio terminava dopo intercepting the request. Prima della v2.1.271, una risposta che portava un messaggio API valido sotto un tipo di contenuto non JSON come text/plain terminava anche il turno con questo errore. Alcuni gateway LLM utilizzano quel tipo di contenuto per la risposta non in streaming. Cosa fare:
  • Leggi la clausola Response: per vedere quale sistema ha risposto. Un corpo HTML, nessun id di richiesta Anthropic, o un server nominato come nginx o cloudflare significa che qualcosa tra Claude Code e l’API ha risposto al suo posto
  • Se instradi attraverso un LLM gateway, testa il percorso con una richiesta diretta e correggi l’hop che restituisce la risposta non-API
  • Su una rete con una pagina di accesso, come Wi-Fi ospite, completa l’accesso in un browser, quindi riprova
  • Se solo il percorso non in streaming attraverso il tuo gateway è rotto, imposta CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1 per disattivare questo fallback, tranne quando l’endpoint di streaming stesso restituisce 404, dove Claude Code continua comunque a usare il fallback

Streaming response ended before any complete data was received

Una risposta in streaming dal tuo provider di modelli è stata completata senza fornire dati utilizzabili, quindi Claude Code ha reinviato la richiesta senza streaming per terminare il turno. Claude Code mostra l’avviso una volta per sessione, solo in sessioni interattive. Prima della v2.1.239, Claude Code ritentava silenziosamente senza streaming.
Claude Code invia ogni richiesta interessata due volte: il tentativo di streaming vuoto e il nuovo tentativo. La causa solita è un proxy o gateway che consuma o trasforma il corpo della risposta in streaming durante il percorso di ritorno. Cosa fare:

Bedrock streaming response has an unexpected content-type

Un gateway o proxy tra Claude Code e Amazon Bedrock sta trasformando il corpo della risposta in streaming o la sua intestazione Content-Type. Amazon Bedrock trasmette le risposte come application/vnd.amazon.eventstream. Piuttosto che decodificare un corpo che non può leggere, Claude Code rifiuta una risposta in streaming riuscita che segnala un content-type diverso. Claude Code non ritenta la richiesta.
Prima della v2.1.208, la stessa configurazione errata è emersa come API Error: Truncated event message received dopo che l’intera risposta era stata memorizzata nel buffer. Cosa fare:
  • Configura il gateway per passare il corpo della risposta InvokeModelWithResponseStream e la sua intestazione Content-Type senza modifiche. Un intermediario che ri-emette lo stream come server-sent events è una causa comune.
  • Impostare CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1 nasconde questo errore, ma Claude Code non decodifica un corpo binario sotto un’intestazione riscritta, quindi quelle richieste ripiegano su un percorso più lento non in streaming. Vedi Streaming errors behind a gateway or proxy.

SSL certificate errors

Un proxy o appliance di sicurezza sulla tua rete sta intercettando il traffico TLS con il suo certificato, e Claude Code non lo ritiene attendibile.
Prima della v2.1.273, entrambi i messaggi terminavano a Check your proxy or corporate SSL certificates, senza il codice OpenSSL o il suggerimento NODE_EXTRA_CA_CERTS. A partire dalla v2.1.199, un guasto di convalida del certificato non viene ritentato, quindi questo errore appare al primo tentativo invece che dopo il retry budget completo. Le versioni precedenti spendevano alcuni minuti ritentando prima di mostrarlo. Le condizioni TLS transitorie, come un timeout di handshake, continuano a ritentare. Durante /login e il controllo di connettività all’avvio, lo stesso guasto produce un messaggio diverso:
Su Amazon Bedrock, le richieste che Claude Code stesso invia ad AWS, come le chiamate di credenziale di ruolo STS e SSO, la scoperta del modello, e i controlli della procedura guidata di configurazione, dipendono dalla stessa configurazione del certificato. Vedi Certificate errors behind a TLS-inspecting proxy. Cosa fare:
  • Esporta il bundle CA della tua organizzazione e punta Claude Code ad esso con NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem
  • Vedi Network configuration per le istruzioni di configurazione complete
  • Non impostare NODE_TLS_REJECT_UNAUTHORIZED=0, che disabilita completamente la convalida del certificato

Host not allowed in a cloud session

Una richiesta HTTP in uscita da una sessione cloud o routine è stata bloccata dalla politica di rete dell’ambiente.
Potresti anche vedere un certificato TLS che non corrisponde al certificato reale della destinazione. Le sessioni cloud instradano il traffico in uscita attraverso un proxy che applica la politica di rete, quindi un certificato non corrispondente significa che il proxy ha terminato la connessione, non la destinazione. Questo non è un problema di rete lato client. Le sessioni cloud e le routine vengono eseguite all’interno di una VM sandbox il cui traffico in uscita attraverso la rete della sessione è filtrato in base all’allowlist dell’ambiente cloud; le operazioni GitHub e il traffico del connettore MCP utilizzano canali separati, motivo per cui possono continuare a funzionare mentre altri host sono bloccati. L’ambiente Default utilizza accesso Trusted, che consente l’allowlist predefinita di registri di pacchetti, API di provider cloud, registri di container, e domini di sviluppo comuni e blocca altri domini su quel percorso. Cosa fare: Questi passaggi cambiano uno dei tuoi ambienti. Un organization-shared environment si apre in sola lettura nel selettore, quindi chiedi a un Owner di cambiare il suo accesso di rete dalla pagina Cloud environments in admin settings.
  • Apri il tuo ambiente per la modifica, o dalla routine’s form o dal environment selector dove avvii sessioni cloud.
  • Nella finestra di dialogo Edit cloud environment, cambia Network access da Trusted a Custom, quindi aggiungi il dominio bloccato a Allowed domains. Inserisci un dominio per riga. Seleziona Also include default list of common package managers per mantenere l’allowlist predefinita insieme ai tuoi domini personalizzati. Seleziona Full invece se desideri accesso senza restrizioni.
  • Fai clic su Save changes. La prossima esecuzione utilizza l’allowlist aggiornata. Per una sessione cloud che è già aperta, vedi quando una modifica dell’accesso di rete raggiunge le sessioni esistenti.
Vedi Network access per i livelli di accesso e l’allowlist predefinita. Le sessioni CLI locali non sono interessate da questa politica.

The proxy refused the connection

Vedi questo messaggio quando Claude legge un artefatto attraverso il proxy che hai impostato in HTTPS_PROXY o una proxy variable correlata. Il contenuto dell’artefatto proviene da *.frame.claudeusercontent.com, quindi Claude Code invia prima al proxy una richiesta CONNECT chiedendogli di aprire un tunnel a quell’host. Quando il proxy rifiuta, nulla raggiunge l’host, e il messaggio porta lo stato HTTP del proxy:
Lo stato è la risposta del proxy al CONNECT. L’host non ha mai risposto, quindi ogni stato punta a una correzione diversa:
  • HTTP 407: il proxy richiede credenziali che non ha ricevuto. Mettile nell’URL del proxy, come mostra Basic authentication.
  • HTTP 403: il proxy rifiuta di fare tunnel a *.frame.claudeusercontent.com. Chiedi a chiunque gestisca il proxy di consentire quell’host, che Network access requirements elenca.
  • Qualsiasi altro stato, come HTTP 502: il proxy non ha aperto il tunnel per suo motivo, come il mancato raggiungimento dell’host. Cerca lo stato nei log del proxy.
  • unreadable reply al posto di uno stato: qualunque cosa sia all’indirizzo del proxy non ha risposto con una riga di stato HTTP. Controlla che l’indirizzo sia un proxy HTTP.
Cosa fare:
  • Controlla l’indirizzo e le credenziali nella variabile proxy, come descrive Proxy configuration, quindi esegui curl -x http://proxy.example.com:8080 -I https://api.anthropic.com dalla shell in cui avvii Claude Code, usando il tuo URL proxy. Su Windows PowerShell, esegui curl.exe. Se questa sonda fallisce allo stesso modo, correggi prima la configurazione del proxy. Se ha successo, il rifiuto è specifico dell’host dell’artefatto.
  • Se la tua rete consente a Claude Code di raggiungere l’host dell’artefatto direttamente, aggiungi .frame.claudeusercontent.com a NO_PROXY. Mantieni la voce stretta: una voce .claudeusercontent.com più ampia bypassa anche il proxy per bridge.claudeusercontent.com, che le organizzazioni con IP allowlisting devono mantenere sul proxy.
Prima della v2.1.238, Claude Code segnalava un tunnel rifiutato come un errore di rete generico.

The cloud environments service returned an empty or unexpected response

Claude Code richiede il tuo elenco di cloud environments in diversi punti, come quando crei una sessione cloud dalla CLI o esegui /remote-env. Quando non riesce a leggere la risposta del server, mostra uno di questi messaggi:
Il server ha accettato la richiesta ma ha risposto con un corpo che non è l’elenco degli ambienti: vuoto, non JSON, o JSON senza l’elenco. Questo di solito accompagna un’interruzione lato servizio e si risolve da solo. A seconda della superficie che ha richiesto l’elenco, Claude Code può aggiungere un prefisso, come couldn't list environments: nella finestra di dialogo /remote-env. Cosa fare:
  • Ritenta l’azione. Claude Code richiede di nuovo l’elenco ogni volta
  • Se il messaggio continua ad apparire, controlla status.claude.com per gli incidenti attivi
Prima della v2.1.236, Claude Code mostrava un TypeError JavaScript grezzo invece di questi messaggi.

Failed to fetch session from Sessions API

Questo messaggio significa che Claude Code ha trovato la sessione cloud che hai chiesto di portare nel tuo terminale ma non è riuscito a leggerne la cronologia della conversazione dai server di Anthropic, quindi non l’ha aperta:
Lo vedi dopo claude --teleport, /teleport, o dopo aver scelto la sessione nell’elenco /tasks. claude --teleport <session-id> lo stampa ed esce con codice 1. Cosa fare: Prima della v2.1.296, Claude Code non ritentava una lettura fallita e, dopo una lettura fallita, poteva aprire la sessione con una conversazione vuota e segnalare il successo invece di stampare questo messaggio.

Couldn’t reconnect to your Remote Control session

La ripresa con claude --resume o claude --continue si riconnette alla sessione Remote Control registrata in quella conversazione. Questo messaggio significa che la riconnessione è fallita per un motivo che potrebbe essere temporaneo, come un’interruzione di rete o un errore del server, quindi Claude Code non può confermare se la sessione remota esiste ancora. La tua sessione locale continua a funzionare senza Remote Control. Cosa fare:
  • Esegui /remote-control per ritentare la connessione
  • Avvia una nuova sessione con claude --remote-control per creare una nuova sessione Remote Control
  • Per altri messaggi di avvio di Remote Control, vedi Troubleshoot Remote Control
Se il server segnala invece che la sessione precedente è scomparsa, non vedi questo messaggio. Claude Code avvia una nuova sessione al suo posto o mostra Previous session is unavailable — run /remote-control to start a new one.

Sessions ended while this machine was offline

Claude Code mostra questo messaggio nel terminale che esegue claude remote-control dopo che la tua macchina è stata offline abbastanza a lungo che il server ha pulito l’ambiente Remote Control che la tua macchina stava servendo. Le sessioni in quell’ambiente sono terminate e non puoi riprenderle. Il conteggio è il numero di sessioni che sono terminate.
Cosa fare:
  • Quando Claude Code elenca i worktree mantenuti sotto questo messaggio, recupera da essi qualsiasi lavoro non committato
  • Esegui claude remote-control per avviare un ambiente nuovo

Couldn’t share the transcript

Dopo che accetti di condividere la trascrizione della tua sessione da un prompt di sondaggio, come il session quality survey, Claude Code la carica su Anthropic, o salva invece un archivio locale su provider di terze parti, su sessioni Claude apps gateway, e quando nessuna credenziale Anthropic è disponibile. Questo messaggio significa che la condivisione non è stata completata.
Il caricamento deve rientrare in un limite di 8 MiB. Su una sessione lunga, Claude Code elimina progressivamente parti della condivisione, le impostazioni del modello dell’ultima richiesta per prime, quindi la conversazione strutturata e le trascrizioni dei subagent, e mostra questo messaggio quando nessuna versione ridotta può essere inviata o un errore di rete o server interrompe il caricamento. Quando Claude Code salva invece un archivio locale, il messaggio significa che non è riuscito a scrivere l’archivio. Cosa fare:
  • Esegui /feedback per inviare la trascrizione con una descrizione di ciò che è accaduto. Vedi Report an error se /feedback non è disponibile nel tuo ambiente
  • Se anche altre richieste stanno fallendo, controlla la tua connessione di rete e vedi Unable to connect to API

Couldn’t send feedback

Hai inviato un rapporto dalla finestra di dialogo /feedback, /bug, o /share e il caricamento su Anthropic è fallito. La finestra di dialogo mantiene il tuo testo in modo che tu possa riprovare.
Il testo dopo il prefisso nomina ciò che è fallito:
  • : not signed in. Run /login, then retry.: la finestra di dialogo carica solo quando Claude Code ha trovato credenziali Anthropic mentre si apriva, e nessuna era utilizzabile al momento dell’invio. Ad esempio, sei uscito dall’account su questa macchina nel frattempo, o il tuo login non poteva più essere aggiornato.
  • Una parentesi: (server returned <status>) è il codice di risposta del servizio; (request timed out) e (couldn't reach the service) sono guasti di rete. Quando Claude Code non riesce a nominare un motivo, la parentesi è assente.
Nella feedback drafts queue, lo stesso guasto termina invece con The draft is still queued. Try again later., e la bozza rimane nella coda per un altro tentativo. Cosa fare: Prima della v2.1.281, ogni invio falliva con questo messaggio una volta che un Remote Control Stop o un messaggio urgente tra sessioni era arrivato mentre la finestra di dialogo era aperta. Su quelle versioni, chiudi la finestra di dialogo, riaprila e invia di nuovo.

Errori di richiesta

Questi errori riguardano il contenuto della tua richiesta. La maggior parte proviene dall’API dopo che ha rifiutato la richiesta; alcuni sono prodotti localmente da Claude Code prima che venga inviata qualsiasi richiesta.

Prompt is too long

La conversazione più i file allegati superano la finestra di contesto del modello.
In una sessione interattiva, Claude Code mostra questo errore come:
La riga nomina solo /clear quando DISABLE_COMPACT è impostato. Le forme più lunghe dell’errore, come la forma di compattazione non riuscita di seguito, mantengono la dicitura Prompt is too long ·. Nell’output -p e nella trascrizione, il testo rimane Prompt is too long. Quando hai disattivato la compattazione automatica nelle tue impostazioni utente, la riga dice anche:
L’interruttore Auto-compact in /config scrive autoCompactEnabled nelle impostazioni utente. L’hint appare solo quando una modifica /config avrebbe effetto. Ad esempio, non appare quando DISABLE_AUTO_COMPACT o DISABLE_COMPACT ha disattivato la compattazione automatica. Non appare nemmeno quando un ambito di precedenza superiore, come le impostazioni di progetto o gestite, ha impostato autoCompactEnabled su false. Prima della v2.1.235, la riga non conteneva alcun hint di compattazione automatica. Amazon Bedrock segnala questa condizione come Input is too long for requested model., che Claude Code gestisce allo stesso modo. Prima della v2.1.217, Claude Code non riconosceva la dicitura di Bedrock, quindi la compattazione automatica non si attivava mai e /compact falliva con lo stesso errore. Un gateway di app Claude segnala questa condizione come capability_rejected: prompt_too_long quando un upstream cloud rifiuta la richiesta nella forma di errore propria del provider. Claude Code tratta il token come Prompt is too long. Prima della v2.1.228, Claude Code non riconosceva il token, quindi la compattazione automatica non si attivava. Quando la compattazione automatica è stata eseguita su questo turno e ha fallito su un errore sottostante, come un modello non disponibile o un errore di autenticazione, il messaggio nomina quell’errore dopo un separatore:
Risolvi prima l’errore nominato; /compact fallisce sullo stesso errore finché non lo fai. Prima della v2.1.229, una compattazione automatica non riuscita mostrava Prompt is too long senza la causa. Quando la compattazione automatica viene eseguita su questo errore, normalmente riassume i tuoi scambi più vecchi e mantiene i più recenti. Come ultima risorsa, Claude Code riassume diversamente:
  • Quando non può riassumere alcuno scambio completo, Claude Code mantiene il tuo prompt più recente parola per parola e riassume tutto prima di esso.
  • In quel caso, quando la conversazione non termina con il tuo prompt, Claude Code riassume l’intera conversazione.
Claude Code salta questo recupero quando il contenuto che porterebbe avanti non contiene alcuna risposta del modello e meno di circa 1.000 token del tuo testo, come un breve tentativo inviato dopo un incolla di dimensioni eccessive. Esegui /clear per ricominciare da capo. Prima della v2.1.269, la compattazione falliva ogni volta che non poteva riassumere uno scambio completo, quindi una sessione in quello stato colpiva questo errore di nuovo ad ogni turno. Una conversazione con un singolo scambio non ha turni precedenti da riassumere. Quando la compattazione automatica avrebbe dovuto essere eseguita su uno, Claude Code salta il tentativo e spiega cosa riempie la richiesta. Quando l’API non segnala i conteggi dei token nel suo errore, il messaggio recita:
Quando l’API segnala i conteggi dei token nel suo errore, Claude Code li confronta con la sua stima della dimensione della conversazione per dire quale è la maggior parte della richiesta: il contenuto della conversazione stessa, o il prompt di sistema, le definizioni degli strumenti e il contenuto degli allegati che Claude Code invia con essa. Quando il contenuto della conversazione è la maggior parte della richiesta, il messaggio recita:
Quando la maggior parte della richiesta è al di fuori della conversazione, il messaggio recita:
Prima della v2.1.162, Claude Code tentava comunque la compattazione e mostrava il semplice Prompt is too long quando falliva. Cosa fare:
  • Esegui /compact per riassumere i turni precedenti e liberare spazio, oppure /clear per ricominciare da capo. Se /compact risponde Not enough messages to compact., la conversazione è un singolo scambio senza nulla di precedente da riassumere, quindi lo spazio è occupato da quel prompt e da quello che Claude Code invia con ogni richiesta: esegui /clear e reinvia con meno testo incollato o allegati più piccoli, oppure riduci le definizioni degli strumenti e i file di memoria utilizzando i passaggi seguenti
  • Esegui /context per vedere una suddivisione di ciò che consuma la finestra: prompt di sistema, strumenti, file di memoria e messaggi
  • Disabilita i server MCP che non stai utilizzando con /mcp disable <name> per rimuovere le loro definizioni di strumenti dal contesto
  • Taglia i file di memoria CLAUDE.md di grandi dimensioni, oppure sposta le istruzioni in regole con ambito di percorso che si caricano solo quando rilevanti
  • La compattazione automatica è attiva per impostazione predefinita e normalmente previene questo errore. Se l’hai disattivata in /config o con DISABLE_AUTO_COMPACT, riattivala. Se la mantieni disattivata, esegui /compact tu stesso prima che la finestra si riempia.
  • Se l’errore appare vicino a 200K token su un modello che ne accetta di più, una possibile causa è un ID modello che Claude Code non riconosce. Claude Code presume una finestra di 200K per un ID del genere, quindi per continuare a lavorare oltre quel punto, fornisci la reale finestra di contesto del modello.
Vedi Esplora la finestra di contesto per una visualizzazione interattiva di come il contesto si riempie.

Il contesto supera il limite di token

/context mostra questo avviso in cima al suo output quando la conversazione ha superato la finestra di contesto del modello. Le richieste falliscono con Prompt is too long finché non liberi spazio. Una sessione interattiva mostra quell’errore come la riga Context limit reached.
Quando il limite che hai superato è una finestra di compattazione, come il limite di 200K sui modelli con contesto 1M, l’avviso recita diversamente. Una finestra di compattazione può stare al di sotto della finestra di contesto del modello, quindi le richieste oltre ad essa possono ancora avere successo.
Entrambe le forme nominano /clear invece di /compact quando hai impostato DISABLE_COMPACT. Cosa fare:
  • In una conversazione multi-turno, esegui /compact per riassumere i turni precedenti e liberare spazio. Per ricominciare da capo, esegui /clear
  • Per altri modi per ridurre l’utilizzo, vedi Prompt is too long
Prima della v2.1.216, /context mostrava l’utilizzo sopra il 100% senza una riga di avviso che spiegasse cosa significava o come recuperare.

Request too large

Il corpo della richiesta grezza ha superato il limite di 32MB dell’API prima della tokenizzazione, solitamente a causa di contenuto incollato di grandi dimensioni, risultati degli strumenti o allegati. Questo limite è separato dalla finestra di contesto.
Quando la richiesta è andata direttamente all’API Claude e l’API stessa l’ha rifiutata, Claude Code misura la conversazione e formula il messaggio in base al fatto che il recupero possa funzionare. Attraverso un proxy, gateway o provider cloud ottieni il messaggio generale. Le forme misurate:
  • Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).: le immagini o i documenti hanno spinto la richiesta oltre il limite. Claude Code ritenta con essi rimossi.
  • Request too large for the API's 32MB request limit: i messaggi da soli superano il limite, quindi il messaggio dice compacting cannot make it fit e Claude Code non ritenta. In modalità non interattiva, il messaggio ti dice di ridurre l’input o avviare una nuova sessione.
Prima della v2.1.212, le conversazioni con abbastanza immagini accumulate fallivano ad ogni turno con Request too large (max 32MB). Double press esc to go back and try with a smaller file. Prima della v2.1.229, Claude Code mostrava il consiglio di allegato per ogni rifiuto, anche quando la compattazione non poteva aiutare. Cosa fare:
  • Se il messaggio dice compacting cannot make it fit, premi Esc due volte per tornare indietro oltre il turno che ha aggiunto il contenuto di grandi dimensioni, oppure esegui /clear per ricominciare da capo
  • Altrimenti, esegui /compact, che elimina le immagini e gli allegati accumulati
  • Fai riferimento ai file di grandi dimensioni per percorso invece di incollarne il contenuto, in modo che Claude possa leggerli in blocchi
  • Per le immagini, vedi Image was too large di seguito

Image was too large

Un’immagine incollata o allegata supera i limiti di dimensione o dimensione dell’API.
La riga could not be processed and was removed significa che l’API ha rifiutato un’immagine nella conversazione, ad esempio una che supera i limiti di dimensione o di risoluzione. Se uno di questi errori continua a ripresentarsi, aggiorna Claude Code. Nelle versioni precedenti, un errore relativo alle immagini poteva ripetersi per motivi come questi:
  • Prima della v2.1.299, in una conversazione lunga con molte immagini, Claude Code poteva rimuovere le immagini che avevi allegato per ultime invece di quella che superava il limite. La riga was removed si ripeteva quindi a ogni turno e Claude non vedeva le tue nuove immagini.
  • Prima della v2.1.299, in VS Code, nell’app Desktop e nell’Agent SDK, le immagini allegate mentre Claude stava lavorando non venivano ridimensionate come le altre immagini allegate. Raggiungevano l’API alla loro dimensione originale, causando errori ripetuti relativi alle immagini nelle conversazioni lunghe.
  • Prima della v2.1.166, un’immagine incollata poteva rimanere nella conversazione, e lo stesso errore si ripeteva quindi a ogni messaggio successivo
Cosa fare:
  • Ridimensiona l’immagine prima di incollarla. L’API accetta immagini fino a 8000 pixel sul lato più lungo per una singola immagine, o 3000 pixel quando nel contesto ci sono più di 20 immagini.
  • Fai uno screenshot più stretto della regione rilevante invece dello schermo intero

Unable to resize image

Claude Code non ha potuto ridimensionare un’immagine allegata prima di inviarla all’API.
Claude Code normalmente ridimensiona automaticamente le immagini di grandi dimensioni. Questi errori significano che l’immagine non poteva essere decodificata o ridimensionata per rientrare nei limiti dell’API. Cosa fare:
  • Se il messaggio ti chiede di convertire l’immagine, convertila in PNG, JPEG, GIF o WebP e allegala di nuovo. Claude Code può verificare le dimensioni per questi formati dall’intestazione del file, senza decodificare l’immagine.
  • Se il messaggio segnala un limite di dimensione o dimensione, ridimensiona o ricomprimi l’immagine al di sotto di quel limite prima di allegare.
  • Se il messaggio nomina una causa, come un JPEG CMYK, un WebP animato o un file possibilmente danneggiato, risalva l’immagine nel formato che il messaggio suggerisce e allegala di nuovo.

Request rejected as unprocessable by the model

L’API ha rifiutato la richiesta in quanto il modello non può elaborarla. Il messaggio è quello dell’API stessa.
Claude Code può rimuovere le immagini e i documenti più vecchi da una richiesta rifiutata e inviarla di nuovo. Prima della v2.1.290, Claude Code non rimuoveva le immagini in caso di questo rifiuto, quindi una sessione lunga che ne aveva accumulate centinaia poteva fallire con questo errore a ogni turno. Cosa fare:
  • Se il messaggio continua a comparire in una conversazione con immagini o documenti, rimuovili tu stesso. Premi Esc due volte per tornare indietro oltre i turni che li hanno aggiunti, oppure esegui /clear per ricominciare da zero.

Errori PDF

Il PDF che hai allegato non poteva essere elaborato. I messaggi sono mostrati qui nella loro forma non interattiva; in una sessione interattiva ti chiedono invece di premere Esc due volte e riprovare.
Cosa fare:
  • Per i PDF di grandi dimensioni, chiedi a Claude di leggere un intervallo di pagine con lo strumento Read invece di allegare l’intero file, oppure estrai il testo con uno strumento come pdftotext e fai riferimento al file di output per percorso
  • Per i PDF protetti o non validi, rimuovi la password o riesporta il file dall’applicazione sorgente, quindi riprova
Quando Claude legge un intervallo di pagine da un PDF con lo strumento Read, la lettura può fallire con un messaggio diverso:
Le letture dell’intervallo di pagine eseguono il rendering delle pagine con pdftoppm. Installa poppler-utils con il comando che il messaggio fornisce, o su altre piattaforme una build poppler che mette pdftoppm sul tuo PATH. Vedi Comportamento dello strumento Read per quali PDF vengono letti per intervallo di pagine.

Extra inputs are not permitted

Un proxy o gateway LLM tra Claude Code e l’API ha rimosso l’intestazione della richiesta anthropic-beta, quindi l’API ha rifiutato i campi che dipendono da essa.
Claude Code invia campi solo beta come context_management insieme a un’intestazione anthropic-beta che li abilita. Quando un gateway inoltra il corpo ma elimina l’intestazione, l’API vede campi che non riconosce. Cosa fare:

Lo schema di input dello strumento non è valido

Uno strumento nella richiesta ha dichiarato un input_schema che non supera la convalida JSON Schema dell’API, quindi l’API ha rifiutato l’intera richiesta. Il numero dopo tools. è la posizione dello strumento che fallisce nell’elenco degli strumenti della richiesta, non un nome che puoi cercare.
La prima forma significa che lo schema non è un JSON Schema draft 2020-12 valido. La seconda significa che un nome di proprietà di primo livello non corrisponde al pattern che il messaggio cita. Claude Code esclude gli strumenti MCP il cui schema di input fallirebbe questa convalida quando carica gli strumenti di un server, quindi le richieste normalmente non ne includono mai uno. Su una distribuzione in cui il recupero dei flag è disattivato, o su una macchina i cui flag non sono mai arrivati, Claude Code registra nel log del server quale strumento verrebbe rifiutato ma lo invia comunque, quindi questo errore può ancora verificarsi. L’errore può verificarsi anche per uno strumento il cui schema dichiara un dialetto JSON Schema diverso da draft 2020-12 in $schema. Claude Code non controlla questi schemi rispetto al meta-schema JSON Schema, anche se il controllo del nome della proprietà di primo livello si applica comunque. Prima della v2.1.216, nessuna distribuzione eseguiva i controlli di esclusione. Cosa fare:
  • Se la tua versione di Claude Code è precedente alla v2.1.216, esegui claude update.
  • Rimuovi o disabilita il server MCP che dichiara lo schema non valido. L’errore nomina lo strumento solo per posizione. Sulla v2.1.216 o successiva, controlla il log di ogni server per una riga che nomina uno strumento il cui schema di input verrebbe rifiutato. Se nessun log ne nomina uno, disabilita i server uno alla volta.
  • Se mantieni il server, correggi il input_schema dello strumento. Lo schema deve essere un JSON Schema valido e i nomi delle proprietà di primo livello devono essere da 1 a 64 caratteri e utilizzare solo lettere ASCII e cifre, _, . e -. Vedi Strumenti con schemi di input non validi.

Nome dello strumento MCP oltre 128 caratteri

Un server MCP elenca uno strumento il cui nome completo, come mcp__<server>__<tool>, è più lungo dei 128 caratteri che l’API accetta. Claude Code esclude quello strumento dagli strumenti che invia a Claude, e gli altri strumenti del server continuano a funzionare. In una sessione che avvii con claude --debug dalla tua shell, Claude Code scrive questo messaggio nel log di debug in ~/.claude/debug/<session-id>.txt:
Cosa fare:
  • Se mantieni il server, accorcia il nome dello strumento.
  • Se il server è nella tua configurazione MCP, assegnagli lì un nome più breve, come db al posto di analytics-database. Quindi aggiorna ciò che fa riferimento al server o ai suoi strumenti con il vecchio nome, come le regole di permesso e i matcher degli hook.
  • Se un plugin include il server, il nome completo dello strumento include anche il nome del plugin. Chiedi al manutentore del plugin di accorciare il nome del server o dello strumento.
Prima della v2.1.292, Claude Code inviava comunque lo strumento, e l’API rifiutava ogni richiesta che lo includeva con API Error: 400 ... tools.N.custom.name: String should have at most 128 characters.

tool_use.name oltre 200 caratteri

Una chiamata a uno strumento nella cronologia della conversazione porta un nome più lungo dei 200 caratteri che l’API accetta in una richiesta:
Claude Code taglia tale nome a 200 caratteri quando la risposta arriva e quando carica una conversazione salvata, quindi la chiamata fallisce con un errore dello strumento No such tool available e la conversazione continua senza questo errore API. Cosa fare:
  • Esegui claude update, quindi riprendi la conversazione. La versione aggiornata ripara il nome eccessivamente lungo quando carica la trascrizione, quindi una conversazione che era bloccata funziona di nuovo.
Prima della v2.1.281, il nome eccessivamente lungo rimaneva nella cronologia e l’API rifiutava ogni richiesta che reinviava la conversazione, inclusi /compact e --resume, quindi questo errore si ripeteva e la conversazione era bloccata.

There’s an issue with the selected model

Il nome del modello configurato non è stato riconosciuto o il tuo account non ha accesso ad esso. A partire dalla v2.1.160 l’hint finale, mostrato qui nella sua forma interattiva, varia in base alla superficie.
Cosa fare:
  • CLI interattiva: esegui /model per scegliere dai modelli disponibili per il tuo account.
  • Modalità non interattiva (-p): passa --model con un alias o ID valido, oppure imposta ANTHROPIC_MODEL. Il testo dell’errore mostra Run --model su questa superficie.
  • Agent SDK: il testo dell’errore omette l’hint perché il modello è impostato a livello di programmazione. Imposta model su Options in TypeScript o ClaudeAgentOptions(model=...) in Python, e gestisci l’errore strutturato model_not_found per mostrare il tuo nuovo tentativo o selettore di modello.
  • Usa un alias come sonnet o opus invece di un ID completo con versione. Gli alias si risolvono in un valore predefinito mantenuto in modo che non diventino obsoleti. Vedi Configurazione del modello.
  • Se il modello sbagliato continua a tornare nella CLI, un ID obsoleto è impostato da qualche parte. Controlla i posti in cui puoi impostare un modello in ordine di priorità e rimuovi il valore obsoleto.
  • Claude Code segnala un accesso claude.ai scaduto come Login scaduto, non come questo errore. Prima della v2.1.206, un accesso scaduto che non poteva più essere aggiornato falliva con ogni modello con questo errore; esegui /login se lo vedi su una versione precedente.
  • Per le distribuzioni di Google Cloud’s Agent Platform, vedi Risoluzione dei problemi di Google Cloud’s Agent Platform.

Model is not a recognized model id

La stringa che hai passato a un cambio di modello non è una che Claude Code può usare come modello, quindi ha rifiutato il cambio senza inviare una richiesta e la sessione mantiene il suo modello attuale. Puoi ottenere questo errore quando un modello è impostato tramite il metodo Agent SDK setModel(), da un’app che esegue la CLI di Claude Code per te, come l’app Desktop, o quando scegli un modello da un dispositivo connesso tramite Remote Control. Prima della v2.1.200, Claude Code salvava la stringa e falliva alla richiesta successiva con There’s an issue with the selected model.
In questo esempio un’app ha inviato il nome visualizzato Sonnet 5, che il messaggio ripete senza il suo spazio. L’hint finale nomina l’alias o l’ID del modello più vicino. Quando nulla è abbastanza vicino, recita invece Run /model to see available models. In una sessione che l’app Desktop avvia per te, l’hint senza corrispondenza recita Switch to a different model. Quando cambi tramite l’Agent SDK o un’app sull’API Anthropic, solo una stringa che non può essere un ID modello ottiene questo errore, come un nome visualizzato o una stringa vuota. Quando scegli un modello da un dispositivo Remote Control, Claude Code controlla la stringa localmente. Qualsiasi stringa che non sia un alias di modello, un modello che Claude Code elenca o che hai configurato, o un ID che inizia con claude- ottiene questo errore, un ID digitato male come claud-sonnet-5 incluso. Prima della v2.1.260, questo controllo non copriva le scelte di Remote Control, quindi una stringa non riconosciuta veniva applicata e falliva alla richiesta successiva. Cosa fare:
  • Esegui /model senza argomenti per aprire il selettore e scegliere dai modelli disponibili per il tuo account, quindi passa l’alias o l’ID mostrato lì
  • Se hai usato un alias che solo una versione più recente di Claude Code supporta, esegui claude update, oppure passa l’ID completo del modello. Il server può comunque richiedere una versione minima di Claude Code per quel modello; vedi Claude Code does not support this model.
  • Un modello salvato prima della v2.1.200 non viene riparato da questo controllo. Se un valore obsoleto continua a tornare, rimuovilo dalle posizioni elencate in Impostazione del modello.
  • Su qualsiasi provider diverso dall’API Anthropic, o dietro un gateway o ANTHROPIC_BASE_URL personalizzato, solo una stringa vuota ottiene questo errore. Claude Code può comunque scrivere la riga diagnostica del modello non riconosciuto al momento della richiesta, su ogni provider.

Model not found

Hai cambiato a un modello per nome e Claude Code non ha potuto confermare che esista un modello con quel nome. Quando il nome non è un alias di modello o un’altra ortografia che Claude Code accetta localmente, Claude Code lo verifica con una richiesta API minima, e questo errore è solitamente la risposta del tuo endpoint API. Con /model <name>, un nome che non può essere un ID modello affatto, come uno contenente spazi, ottiene lo stesso messaggio.
Su provider con ID modello specifici del provider, il messaggio può aggiungere un suggerimento Try '...' instead che nomina l’ID del tuo provider per un modello di fallback. Cosa fare:
  • Esegui /model senza argomenti e scegli dai modelli disponibili per il tuo account, oppure usa un alias di modello come sonnet, che si risolve in un valore predefinito mantenuto
  • Se hai digitato un ID completo, controllalo rispetto al catalogo dei modelli del tuo provider. Un modello appena lanciato può essere disponibile sull’API Anthropic prima che il tuo provider o la tua regione lo offra.
  • Nell’Agent SDK, setModel() fallisce con questo messaggio e la sessione continua a funzionare sul suo modello precedente. Nell’SDK TypeScript, chiama supportedModels() per elencare i modelli a cui puoi passare.
  • Prima della v2.1.265, /model ha anche rifiutato l’ortografia dell’alias opusplan[1m] con questo errore. Su quelle versioni, aggiorna Claude Code, oppure imposta il modello in impostazioni o con --model invece.

Couldn’t confirm model with the API

Hai cambiato modelli tramite il metodo Agent SDK setModel() o un’app che esegue la CLI di Claude Code per te, come l’app Desktop, e la richiesta che conferma l’ID del modello con il tuo endpoint API non ha ricevuto risposta entro cinque secondi. La sessione mantiene il suo modello attuale.
In una sessione che l’app Desktop avvia per te, il messaggio termina a Try again. Cosa fare:
  • Cambia di nuovo al modello
  • Se il cambio continua a fallire, controlla che Claude Code possa raggiungere il tuo endpoint API; vedi Errori di rete e connessione

Errore API durante il controllo del modello selezionato

Hai selezionato un modello con /model <name>, oppure un’app connessa alla sessione ha richiesto il cambio. L’API ha rifiutato la richiesta minima che Claude Code invia per verificare il modello, per un motivo che non ha una voce propria, come un rate limit o un errore del server. La sessione mantiene il suo modello attuale, e il messaggio termina dicendo così:
Il mezzo del messaggio è lo stato HTTP e la spiegazione propria del server. Cosa fare:

Claude Opus is not available with the Claude Pro plan

Il tuo piano di abbonamento attivo non include il modello che hai selezionato.
In una sessione che l’app Claude Desktop esegue, il messaggio dice di sign out and sign in again invece di nominare i comandi. Cosa fare:
  • Esegui /model e seleziona un modello che il tuo piano include
  • Se hai aggiornato il tuo piano di recente e vedi ancora questo, esegui /logout quindi /login. Il token memorizzato riflette il tuo piano al momento dell’accesso, quindi l’aggiornamento su claude.ai non ha effetto in una sessione esistente finché non ti autentichi di nuovo.
  • Vedi claude.com/pricing per quali modelli ogni piano include

Claude Code does not support this model

L’API ha rifiutato la richiesta con un 400 perché la tua versione di Claude Code è al di sotto di un minimo richiesto. O il modello che hai selezionato richiede una versione più recente, che il server controlla per modello, o la politica della tua organizzazione ne richiede una. Il 400 porta il codice di errore claude_code_version_too_old, e il messaggio dice quale minimo si applica.
La dicitura della politica organizzativa recita:
La versione che l’API controlla è quella segnalata dal binario di Claude Code che ha effettuato la richiesta. Cosa fare: Aggiorna quel binario, quindi avvia una nuova sessione. Da dove proviene il binario decide come, tranne in un ambiente auto-ospitato:
  • Se esegui claude update sul canale di rilascio stable, non ti porta oltre la release stable più recente, che può essere ancora al di sotto del minimo richiesto. Passa al canale latest, quindi aggiorna di nuovo. Se la tua organizzazione blocca il tuo canale o la tua versione tramite impostazioni gestite, chiedi al tuo amministratore di cambiarlo
  • Per la dicitura per modello, puoi continuare a lavorare nella sessione attuale passando a un altro modello: esegui /model nella CLI, chiama setModel() sull’oggetto Query dell’SDK TypeScript in modalità di input in streaming, o chiama set_model() su ClaudeSDKClient dell’SDK Python
  • Per la dicitura della politica organizzativa, aggiorna prima di continuare

Model is restricted by your organization’s settings

L’amministratore della tua organizzazione ha disabilitato questo modello nella console di amministrazione claude.ai, oppure le impostazioni gestite lo escludono tramite un’allowlist availableModels o un elenco deniedModels. L’avviso appare all’avvio quando --model, ANTHROPIC_MODEL, o l’impostazione model ha nominato il modello limitato, e nomina il modello che la sessione usa invece. Se le impostazioni gestite non lasciano alcun modello consentito per la sessione da usare, vedi Le impostazioni gestite bloccano il modello predefinito. L’avviso di sostituzione può anche apparire a metà sessione dopo che un amministratore disabilita il modello su cui una sessione è in esecuzione nella console di amministrazione claude.ai.
Digitare /model <name> per un modello limitato viene rifiutato e la sessione mantiene il suo modello attuale. Per un modello disabilitato nella console di amministrazione, il rifiuto recita Model '<name>' is restricted by your organization's settings. Run /model to choose a different model. Per un modello che le impostazioni gestite escludono, recita Model '<name>' is not available. Your organization restricts model selection. Un avviso con prefisso il nome di un agente, di una skill o di un comando significa che la restrizione si è applicata al modello richiesto di quel subagent: il subagent viene eseguito sul modello sostituito e il modello della tua sessione rimane invariato. Prima della v2.1.223, Claude Code mostrava l’avviso solo per i subagent lanciati con lo strumento Agent. Claude Code tratta un alias di famiglia di modelli, uno di opus, sonnet, haiku, o fable, come una richiesta per quella famiglia piuttosto che per la sua versione più recente. Sull’API Anthropic e su Claude Platform on AWS, un alias di famiglia limitato si risolve nella versione più recente della famiglia che le impostazioni della tua organizzazione consentono, e l’avviso di sostituzione nomina quella versione. Claude Code rifiuta /model <alias> solo quando ogni versione della famiglia è limitata. Prima della v2.1.205, un alias di famiglia veniva sostituito o rifiutato in base alla sua versione più recente sola, anche quando una versione precedente della stessa famiglia era consentita. Cosa fare:
  • Esegui /model per scegliere dai modelli che la tua organizzazione consente. I modelli limitati sono nascosti dal selettore.
  • Se il modello limitato è stato impostato in --model, ANTHROPIC_MODEL, il campo model di un file di impostazioni, o il frontmatter model di un subagent, di una skill o di un comando, rimuovi o aggiorna quel valore in modo che l’avviso non si ripeta
  • Se hai bisogno di accesso al modello limitato, chiedi all’amministratore della tua organizzazione di abilitarlo. Vedi Restrizioni del modello dell’organizzazione.

Can’t switch to the default model

Hai selezionato il modello Predefinito, ad esempio selezionando la riga Predefinito nel selettore /model o digitando /model default. Claude Code ha rifiutato il cambio, quindi la sessione mantiene il suo modello attuale.
La dicitura dopo i due punti nomina ciò che ha bloccato il cambio:
  • your organization's managed settings block it ... in "deniedModels": un elenco di negazione gestito blocca il modello a cui l’opzione Predefinito si risolve
  • your organization allows only the models listed in "availableModels": un’allowlist availableModels gestita con availableModelsMatch impostato su "exact" lascia fuori il modello a cui l’opzione Predefinito si risolve
  • Claude Code couldn't read your organization's managed settings to check which models they allow: le impostazioni gestite non potevano essere lette, e Claude Code rifiuta il cambio piuttosto che applicarlo senza controllo
Cosa fare:
  • Per le diciture deniedModels e availableModels, esegui /model e seleziona un modello che la tua organizzazione consente per nome
  • Chiedi al tuo amministratore di aggiornare l’impostazione gestita che il messaggio nomina
  • Per la dicitura couldn't read, riavvia Claude Code; se continua a succedere, chiedi al tuo amministratore di controllare le impostazioni gestite
Se una sessione invece non riesce ad avviarsi con un messaggio Claude Code can't start in queste impostazioni gestite, vedi Le impostazioni gestite bloccano il modello predefinito.

Model switch was blocked by a PreModelSwitch hook

Un hook PreModelSwitch non ha approvato il cambio di modello che tu o un client hai richiesto, quindi la sessione mantiene il suo modello attuale. Quando il cambio è venuto da un host Agent SDK o Remote Control piuttosto che da un comando che hai digitato, il messaggio recita Model switch blocked by a PreModelSwitch hook senza nominare il modello di destinazione.
La ragione dopo i due punti dice cosa ha rifiutato il cambio:
  • Una ragione che un hook ha scritto: un hook PreModelSwitch ha fornito quella ragione quando ha negato il cambio o chiesto conferma. Affronta ciò che chiede, o seleziona un modello che i tuoi hook consentono.
  • PreModelSwitch hook <name> did not respond before its timeout: un hook che non risponde prima del suo timeout blocca il cambio. Correggi il comando sospeso o aumenta il timeout di quell’hook, quindi cambia di nuovo.
  • confirmation required, and this session cannot ask: un hook ha risposto ask senza una ragione, e una richiesta di controllo non ha modo di mostrare la richiesta di conferma. Un comando /model in un’esecuzione -p segnala la stessa condizione con (run /model interactively to confirm) dopo la ragione. Effettua il cambio da una sessione interattiva, o cambia la decisione dell’hook per questo modello.
  • so organization-managed PreModelSwitch hooks could not be checked: Claude Code non ha potuto dire quali hook PreModelSwitch i plugin gestiti della tua organizzazione forniscono, ad esempio perché un plugin gestito non è riuscito a caricarsi. Uno di quegli hook potrebbe bloccare il cambio, quindi Claude Code rifiuta piuttosto che applicare il cambio senza controllo. L’inizio della ragione nomina cosa ha fallito. Claude Code ricontrolla ad ogni tentativo di cambio, quindi un fallimento che da allora si è chiarito smette di bloccare; se continua a fallire, esegui claude --debug e cambia di nuovo per catturare i dettagli, quindi correggi il plugin o chiedi al tuo amministratore di correggerlo.
  • a PreModelSwitch hook failed before answering o PreModelSwitch hooks were cancelled (the control stream closed) before answering: l’esecuzione dell’hook è terminata senza un verdetto, e Claude Code non lo tratta come approvazione. Esegui claude --debug per vedere cosa ha fallito, quindi cambia di nuovo.
Prima della v2.1.260, il rifiuto del plugin gestito recitava plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log. Claude Code ha ritentato il caricamento del plugin una volta e poi ha rifiutato i cambi successivi nella sessione, anche quando la tua organizzazione non ha gestito alcun plugin. Riavvia la sessione per eseguire di nuovo il caricamento del plugin su quelle versioni.

Couldn’t save it as your default

Hai selezionato un modello da salvare come predefinito, ad esempio con /model <name> o Enter nel selettore /model, e Claude Code non ha potuto scrivere la selezione nel file delle impostazioni utente, ~/.claude/settings.json. Il cambio stesso è stato applicato, quindi la sessione attuale viene eseguita sul modello che hai selezionato, ma il tuo predefinito rimane invariato e la sessione successiva inizia sul valore precedente.
La ragione dopo il percorso del file dice cosa ha fallito:
  • can't be written (<code>): la scrittura ha fallito con il codice di errore del sistema operativo tra parentesi, come EROFS quando il file, o il file a cui si collega, si trova su un filesystem che rifiuta le scritture. Rendi il file scrivibile e cambia di nuovo. Se un altro strumento genera il file, imposta la chiave model in quello strumento; vedi Una modifica che hai fatto in Claude Code viene persa nelle nuove sessioni.
  • isn't valid JSON: il file su disco non si analizza, e Claude Code lo lascia intatto piuttosto che sovrascrivere il contenuto che non può leggere di nuovo. Correggi l’errore di sintassi, quindi cambia di nuovo; vedi Correggi un file di impostazioni rotto.
Un avviso che termina couldn't confirm it was saved as your default (~/.claude/settings.json is still being written) significa che la scrittura non era terminata dopo tre secondi. Continua in background, quindi il predefinito potrebbe comunque essere salvato; controlla quale modello la tua sessione successiva inizia, oppure esegui /model <name> di nuovo. Prima della v2.1.265, l’avviso diceva che il modello era saved as your default for new sessions anche quando la scrittura ha fallito.

L’advisor è meno capace del modello principale attuale

Il tuo modello advisor si colloca al di sotto del modello principale della tua sessione, quindi Claude Code mantiene la selezione ma non collega l’advisor alle richieste del modello principale.
Altri messaggi segnalano la stessa condizione:
  • In una sessione interattiva, una notifica recita Advisor will not activate on the main model (advisor is less capable); subagents may still use it and may use more tokens · /advisor.
  • All’avvio con il flag --advisor, un avviso recita "<advisor>" cannot advise "<main model>" (the advisor must be at least as capable as the main model). The advisor will not be used for the main model. e la sessione si avvia comunque.
Cosa fare:
  • Scegli un advisor di rango più alto o un modello principale di rango più basso. Scegli un modello advisor mostra la classifica ed elenca gli advisor accettati per ogni modello principale.
  • Lascia impostato l’advisor se vuoi che i subagent il cui modello può assistere continuino a usarlo
Prima della v2.1.287, Claude Code classificava diversamente diverse combinazioni. Mostrava questa nota per un advisor Sonnet 5.5 con un modello principale Opus 4.7 o Opus 4.8, una combinazione che ora accetta. Collegava anche alcuni advisor che ora producono questa nota, come un advisor Opus 4.8 con un modello principale Sonnet 5.5.

thinking.type.enabled is not supported for this model

La tua versione di Claude Code è più vecchia del minimo per il modello selezionato. La CLI ha inviato una configurazione di ragionamento che il modello non accetta più.
Cosa fare:
  • Esegui claude update e riavvia Claude Code. Opus 4.7 ha bisogno della v2.1.111 o successiva. Opus 4.8 ha bisogno della v2.1.154 o successiva. Sonnet 5 ha bisogno della v2.1.197 o successiva. Opus 5 ha bisogno della v2.1.219 o successiva. Opus 5.5 ha bisogno della v2.1.280 o successiva. Sonnet 5.5 ha bisogno della v2.1.284 o successiva
  • Sul canale di rilascio stable, l’aggiornamento non ti porta oltre la release stable più recente, che può essere ancora più vecchia di queste versioni. Passa al canale latest, quindi aggiorna
  • Se non puoi aggiornare, esegui /model e seleziona Opus 4.6 o Sonnet 4.6
  • Se colpisci questo nell’Agent SDK, aggiorna il pacchetto SDK. Opus 4.8 ha bisogno di TypeScript SDK v0.3.154 o successiva e Python SDK v0.2.88 o successiva. Sonnet 5 ha bisogno di TypeScript SDK v0.3.197 o successiva. Opus 5 ha bisogno di TypeScript SDK v0.3.219 o successiva. Opus 5.5 ha bisogno di TypeScript SDK v0.3.280 o successiva. Sonnet 5.5 ha bisogno di TypeScript SDK v0.3.284 o successiva

Effort isn’t available with thinking turned off

Hai disattivato il ragionamento esteso e hai eseguito a un livello di sforzo superiore a high. Il modello non accetta quella combinazione, quindi l’API ha rifiutato la richiesta.
L’hint dopo il · varia in base alla sessione: in una sessione non interattiva recita use --effort high (or the effortLevel setting), e in una sessione che l’app Claude Desktop esegue recita you can lower effort to High. Cosa fare: Prima della v2.1.242, Claude Code mostrava il messaggio proprio dell’API: API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking. Prima della v2.1.251, Claude Code inviava la richiesta al livello di sforzo che hai impostato, quindi Opus 5 rifiutava ogni richiesta superiore a high con il ragionamento disattivato. Claude Code ora invia invece lo sforzo high ai modelli che sa rifiutano la combinazione, come Opus 5.

Il budget di ragionamento supera il limite di output

Il budget di ragionamento esteso configurato supera la lunghezza massima della risposta, quindi non c’è spazio rimasto per la risposta effettiva.
Cosa fare:

Response exceeded the output token maximum

La risposta di Claude ha raggiunto il numero massimo di token di output consentito dalla richiesta ed è stata troncata in quel punto:
La forma che nomina a request sent without streaming significa che una richiesta in streaming è fallita e Claude Code l’ha inviata di nuovo senza streaming, il che limita la risposta a 64.000 token di output. Prima della v2.1.299, una risposta troncata su una richiesta inviata di nuovo in questo modo terminava il turno senza questo messaggio, come se la risposta fosse completa. Cosa fare:
  • Se Claude ha scritto del testo prima che la risposta venisse troncata, rispondi continue in una sessione interattiva per chiedere il resto. Quel testo rimane nella conversazione.
  • Se il messaggio dice di impostare CLAUDE_CODE_MAX_OUTPUT_TOKENS, consulta CLAUDE_CODE_MAX_OUTPUT_TOKENS per sapere come viene limitato il valore e Impostare le variabili d’ambiente per sapere dove impostarlo
  • Per mantenere ogni risposta sotto il limite, chiedi a Claude l’output in parti più piccole, ad esempio un file o una sezione per risposta

Mancata corrispondenza dei blocchi di uso degli strumenti o di ragionamento

La cronologia della conversazione ha raggiunto l’API in uno stato incoerente.
Tutte le varianti significano la stessa cosa: la sequenza di blocchi tool_use, tool_result e thinking nella cronologia non corrisponde più a ciò che l’API si aspetta. Cosa fare:
  • Se stai usando Opus 4.7 o Opus 4.8, esegui prima claude update. Le versioni precedenti alla v2.1.156 possono attivare questo errore durante il normale uso degli strumenti, e /rewind non lo cancella.
  • Esegui /rewind, o premi Esc due volte, per tornare indietro a un checkpoint prima del turno corrotto e continua da lì. Vedi Checkpointing per come i checkpoint vengono creati e ripristinati.

Invalid data in redacted_thinking block

L’API ha rifiutato la richiesta con un 400 perché non poteva accettare un blocco redacted_thinking che un turno precedente nella cronologia della conversazione porta.
Claude Code lascia il ragionamento precedente della conversazione fuori dalla richiesta e ritenta una volta, quindi la sessione continua senza mostrare l’errore. Prima della v2.1.282, Claude Code manteneva il blocco rifiutato, e ogni turno successivo falliva con lo stesso errore. Cosa fare:
  • Se sei sulla v2.1.281 o precedente e ogni turno fallisce con questo errore, esegui claude update e riprendi la sessione
  • Se l’errore persiste, esegui /clear per avviare una conversazione che non porta il blocco

Unsupported tool content removed

Quando Claude Code si connette direttamente all’API Anthropic e carica o visualizza un’anteprima di una sessione salvata, rimuove il contenuto dello strumento che l’API Anthropic non accetta e lascia questa riga dove il contenuto rimosso si trovava tra due blocchi di ragionamento:
Tale contenuto raggiunge un file di sessione quando qualcosa di diverso dall’API Anthropic ha risposto nel formato dell’API, tipicamente un proxy di terze parti impostato tramite ANTHROPIC_BASE_URL che traduce le chiamate agli strumenti di un altro provider. Claude Code lo rimuove solo quando la sessione si connette direttamente all’API Anthropic, e carica la cronologia salvata come è quando la sessione viene eseguita tramite un proxy o su un altro provider. Prima della v2.1.246, Claude Code inviava l’uso dello strumento e il suo risultato di nuovo all’API, e ogni turno della sessione ripresa falliva con un errore 400 come messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', .... Cosa fare:
  • Nessuno necessario quando vedi la riga segnaposto. La sessione continua senza il contenuto rimosso.
  • Se ogni turno di una sessione ripresa fallisce invece con l’errore 400, esegui claude update e riprendi la sessione di nuovo. Le versioni precedenti alla v2.1.246 non rimuovono il contenuto.

role ‘system’ must precede an ‘assistant’ message

L’API ha rifiutato la richiesta con un 400 perché un messaggio di sistema si trova in una posizione nella conversazione che non accetta:
Claude Code invia parte del suo testo di promemoria e allegato come messaggi di sistema all’interno della conversazione. Quando l’API rifiuta la posizione di uno, Claude Code ritenta la richiesta una volta con quel testo inviato come messaggi utente ordinari. Le diciture di posizionamento fratello dell’API, come use the top-level 'system' parameter for the initial system prompt, ottengono lo stesso recupero. Quando l’errore appare, il messaggio di sistema rifiutato non è uno che Claude Code può rimuovere. Questo di solito significa che un proxy o gateway LLM tra Claude Code e l’API ha aggiunto un messaggio di sistema proprio. Cosa fare:
  • Se l’errore si ripete ad ogni turno dietro un proxy o gateway configurato tramite ANTHROPIC_BASE_URL, connettiti senza il proxy per confermare la fonte, e segnala l’errore a chi lo gestisce
  • Esegui /clear per avviare una conversazione fresca. Se l’errore ritorna anche lì, la causa è sul percorso della richiesta, non nella conversazione salvata.
Prima della v2.1.280, Claude Code non riconosceva questa dicitura, quindi l’errore appariva anche quando il messaggio di sistema rifiutato era uno che Claude Code stesso inviava, e ogni turno successivo della conversazione falliva allo stesso modo.

Invalid encrypted_content in search_result block

L’API ha rifiutato la richiesta con un 400 perché la cronologia della conversazione contiene contenuto di ricerca web ospitato che non può decrittare. La dicitura nomina il campo che non può leggere:
I risultati dello strumento di ricerca web ospitato dell’API portano campi crittografati che solo l’API può leggere. La dicitura encrypted_stdout nomina l’output di un programma di esecuzione del codice ospitato che ha letto tali risultati, che l’API crittografa anche. L’API rifiuta una richiesta che riproduce il contenuto che non può decrittare, come il contenuto prodotto per un’organizzazione diversa. Lo strumento WebSearch proprio di Claude Code registra i risultati della ricerca come testo semplice, quindi questi blocchi di solito raggiungono una conversazione tramite un proxy o gateway LLM che ha eseguito la ricerca web ospitata stesso. Per le tre diciture di ricerca web, Claude Code lascia le chiamate di ricerca, i risultati e le citazioni fuori da ciò che invia e ritenta la richiesta una volta, quindi la sessione continua senza mostrare l’errore. La dicitura encrypted_stdout non ha tale recupero, quindi quel messaggio ti raggiunge comunque. Prima della v2.1.282, Claude Code manteneva anche i blocchi di ricerca web rifiutati, e ogni turno successivo e /compact falliva allo stesso modo. Cosa fare:
  • Se sei sulla v2.1.281 o precedente e ogni turno fallisce con una delle diciture di ricerca web, esegui claude update e riprendi la sessione
  • Se l’errore persiste, o il messaggio nomina encrypted_stdout, esegui /rewind per tornare indietro a un checkpoint prima del turno che ha aggiunto il contenuto, oppure esegui /clear per avviare una conversazione che non lo porta
  • Se esegui Claude Code dietro un proxy o gateway, segnala l’errore a chi lo gestisce

Rifiuto della politica di utilizzo

L’API ha rifiutato di rispondere perché il contenuto nella conversazione ha attivato un controllo della Politica di utilizzo. Se il messaggio include la riga Details: `[reasoning_extraction]`, vedi Le misure di protezione hanno segnalato una richiesta del ragionamento di Claude. Il messaggio include un ID richiesta e un ID messaggio che puoi citare al supporto se ritieni che il rifiuto sia errato.
Il messaggio nomina il modello che ha rifiutato, o Claude quando nessun modello è registrato. Il controllo valuta l’intera conversazione, non solo il tuo ultimo prompt, quindi inviare un nuovo messaggio nella stessa sessione di solito ri-attiva lo stesso rifiuto. Lo stesso si applica dopo l’uscita e la riapertura della sessione con --continue o --resume, poiché la trascrizione su disco contiene ancora il contenuto che attiva. Su Amazon Bedrock, Google Cloud’s Agent Platform, e Microsoft Foundry, questo messaggio copre anche le richieste che le misure di sicurezza del modello hanno contrassegnato come un argomento di cibersicurezza. Vedi Le misure di sicurezza hanno contrassegnato un argomento di cibersicurezza. Prima della v2.1.219, il messaggio recitava Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task. Cosa fare:
  • Premi Esc due volte o esegui /rewind per tornare indietro a un checkpoint prima del turno che ha attivato il rifiuto, quindi riformula o prendi un approccio diverso. Vedi Checkpointing.
  • Se non riesci a identificare quale turno l’ha causato, esegui /clear per avviare una conversazione fresca nello stesso progetto. La tua conversazione precedente è preservata su disco e rimane disponibile in /resume.
  • In modalità non interattiva (-p), dove il rewind non è disponibile, ritenta con un prompt riformulato in una nuova sessione senza --continue. I controlli della politica variano in base al modello, quindi passare a un modello diverso con --model può anche risolvere il rifiuto in alcuni casi.

Le misure di sicurezza hanno contrassegnato un argomento di cibersicurezza

Le misure di sicurezza del modello hanno contrassegnato il contenuto nella conversazione come un argomento di cibersicurezza. Il messaggio nomina il modello che ha contrassegnato la richiesta:
Se il messaggio include la riga Details: `[reasoning_extraction]`, vedi Le misure di protezione hanno segnalato una richiesta del ragionamento di Claude. Questo messaggio si collega al Cyber Verification Program, che concede l’accesso per il lavoro di cibersicurezza legittimo. I modelli con fallback automatico del modello mostrano un messaggio diverso, senza questo link; su Opus 5.5 e Sonnet 5.5 si apre con <model>'s safeguards flagged this session. Quella sezione spiega anche quando Claude Code cambia invece modello. Su Amazon Bedrock, Google Cloud’s Agent Platform, e Microsoft Foundry, un flag di cibersicurezza produce invece il messaggio di rifiuto della politica di utilizzo. Cosa fare:
  • Se il tuo lavoro richiede questo contenuto, richiedi l’accesso tramite il Cyber Verification Program
  • Se la tua richiesta non riguardava un argomento di cibersicurezza, esegui /feedback per segnalare il falso positivo
  • Per continuare a lavorare nella stessa sessione, premi Esc due volte o esegui /rewind per tornare indietro a un checkpoint prima del turno che ha attivato il flag, quindi prendi un approccio diverso. Vedi Checkpointing.
Se il messaggio che vedi è formulato invece come uno di questi, si tratta della stessa segnalazione su una versione precedente di Claude Code:
  • Dalla v2.1.219 alla v2.1.296, il messaggio poteva includere anche Apply to the Cyber Verification Program to reduce these interruptions. prima della frase conclusiva
  • Dalla v2.1.203 alla v2.1.218, il messaggio era <model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center: seguito dallo stesso link al centro assistenza. Nelle sessioni interattive, proseguiva con If you were not engaging in a cybersecurity topic, please send feedback via /feedback.
  • Prima della v2.1.203, il messaggio era <model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption: seguito da un link a un modulo di esenzione

Le misure di protezione hanno segnalato una richiesta del ragionamento di Claude

L’API ha rifiutato la richiesta perché le misure di protezione l’hanno segnalata come una richiesta al modello di riprodurre il suo ragionamento interno nella risposta. L’API chiama questa categoria di rifiuto reasoning_extraction, e il messaggio di rifiuto include questa riga:
Prima della v2.1.234, i messaggi di rifiuto non includevano la riga Details. Cosa fare:
  • Rimuovi o riformula qualsiasi istruzione che chieda a Claude di scrivere il suo ragionamento parola per parola o in un formato fisso, come una sezione <thinking>, una sezione scratchpad o un campo reasoning nell’output JSON. L’istruzione può trovarsi nel tuo prompt o in una personalizzazione che Claude Code carica insieme ad esso, come CLAUDE.md, una skill, il prompt di un subagent, uno stile di output o la descrizione di uno strumento MCP.
  • Per verificare se la causa è una personalizzazione, esegui claude --safe-mode nel tuo terminale per avviare una sessione con le personalizzazioni disattivate, quindi invia lo stesso prompt
  • Dopo aver modificato una personalizzazione, avvia una nuova sessione
  • Per riformulare un prompt che hai già inviato, vedi Riavvolgi e riassumi
  • Puoi comunque chiedere a Claude di spiegare la sua risposta. Chiedi una breve spiegazione, le prove alla base di un risultato o un riepilogo delle azioni che ha eseguito. Per leggere i riepiloghi del ragionamento di Claude, vedi showThinkingSummaries.
  • Per altri esempi, e per cosa fare se una richiesta riformulata viene comunque rifiutata, vedi Keep reasoning in thinking blocks

Output blocked by content filtering policy

Il filtro dei contenuti di output dell’API ha interrotto la risposta che Claude stava generando. Il testo del messaggio proviene dall’API:
Cosa fare:
  • Riformula il tuo ultimo messaggio o adotta un approccio diverso
  • Per tornare indietro a un checkpoint prima del turno che ha attivato il blocco, premi Esc due volte o esegui /rewind. Vedi Checkpointing

Errori della riga di comando

Questi errori provengono dalla riga di comando claude e dai suoi sottocomandi, da un nome di comando che invii al prompt e da comandi come /security-review che raccolgono contesto eseguendo comandi della shell prima che venga eseguito il loro prompt. Provengono anche da /tui, che riavvia la CLI.

Conflitto tra --bg e --print

Questo messaggio richiede Claude Code v2.1.198 o versioni successive. Hai combinato --bg con -p o --print nella stessa invocazione di claude. --bg avvia una sessione in background a cui ti colleghi in seguito con claude agents, mentre --print viene eseguito in modalità non interattiva e non avvia mai la sessione interattiva a cui si collega claude agents. Prima della v2.1.198 questa combinazione creava silenziosamente un job in background a cui non era mai possibile collegarsi.
Cosa fare:
  • Rimuovi -p o --print. --bg accetta il prompt come argomento posizionale, quindi claude --bg "<task>" è il comando completo. Consulta Avviare nuovi agenti dalla shell.
  • Per eseguire il prompt in modo non interattivo e stampare il risultato invece di creare una sessione in background, rimuovi --bg ed esegui claude -p "<task>"

Couldn’t tell whether --bg is a flag or text

Hai eseguito claude con --bg o --background in una posizione in cui Claude Code non è riuscito a capire se lo intendessi come flag di background o come testo. Il comando non ha avviato nulla, ha stampato questa riga ed è terminato con codice di uscita 1:
Se hai digitato --background, la riga indica invece --background. Cosa fare:
  • Per avviare una sessione in background, esegui di nuovo il comando nella tua shell mettendo il flag per primo: claude --bg --name nightly-audit "<task>"

Conflitto tra un flag del prompt di sistema e la sua forma su file

Hai passato --append-subagent-system-prompt insieme a --append-subagent-system-prompt-file in un’unica invocazione di claude, quindi claude termina con codice di uscita 1 invece di avviare la sessione:
Prima della v2.1.283, claude terminava allo stesso modo quando passavi --system-prompt con --system-prompt-file, oppure --append-system-prompt con --append-system-prompt-file, perché quelle coppie entravano in conflitto invece di combinarsi. In quelle versioni il messaggio indica la coppia che hai combinato. Cosa fare:
  • Mantieni una forma del flag e rimuovi l’altra. Per combinare un file di prompt fisso con testo specifico per ogni esecuzione, unisci il testo nel file prima dell’avvio invece di passare entrambi i flag

Configurazione --agents non valida

Il valore che hai passato a --agents non è valido, quindi claude termina con codice di uscita 1 invece di avviare la sessione. Quando passi --safe-mode o imposti CLAUDE_CODE_SAFE_MODE, Claude Code ignora completamente --agents. Con --resume o --continue, un valore JSON inline non viene verificato e la sessione si avvia; un valore letto da un file viene verificato a ogni avvio. Prima della v2.1.242, Claude Code avviava comunque la sessione.
Ciò che segue la prima riga dipende da come il valore non è risultato valido. Claude Code esegue questi controlli in ordine e si ferma al primo che fallisce. Se il tuo valore presenta due tipi di problema, vedi il secondo solo dopo aver corretto il primo:
  1. Quando il valore inizia con { ma non viene analizzato come JSON, oppure il contenuto di un file --agents non viene analizzato, Claude Code stampa una riga invalid JSON: che riporta il messaggio del parser JSON stesso
  2. Quando viene analizzato ma una definizione di agente non corrisponde allo schema per i subagent definiti tramite CLI, Claude Code stampa una riga per ogni problema
  3. Quando il nome di un agente inizia con -, Claude Code stampa <name>: agent names must not start with '-'
Quando ci sono più di 20 righe di problemi, Claude Code stampa le prime 20 e sostituisce le restanti con …and N more. Con --print, --agents accetta anche il percorso di un file JSON al posto dell’oggetto inline. Prima della v2.1.281, --agents accettava solo JSON inline e trattava un percorso di file come JSON non valido. La forma su file ha i propri rifiuti, stampati al posto di questo messaggio, tra cui questi:
  • Error: --agents takes a JSON object, or a file path only with --print (-p): Claude Code ha letto il valore come percorso di file in una sessione interattiva. Passa le definizioni come JSON inline, oppure aggiungi -p per leggerle da un file.
  • Error: --agents file not found: <path>: non esiste alcun file in quel percorso. Un valore che non inizia con { e non è JSON valido viene letto come percorso, quindi anche un JSON inline alterato dalla tua shell può fallire in questo modo. Controlla il percorso o le virgolette ed esegui di nuovo il comando.
Cosa fare:

Non è possibile creare sessioni cloud da una sessione --restricted

Quando avvii una sessione con --restricted, Claude Code si rifiuta di creare sessioni cloud a partire da essa, perché la nuova sessione verrebbe eseguita al di fuori del processo con restrizioni e non applicherebbe la modalità con restrizioni. Claude Code rifiuta lato client, prima di contattare il server, quindi non viene creata alcuna sessione cloud:
Cosa fare:
  • Esegui l’attività localmente nella sessione con restrizioni
  • Se controlli il modo in cui è stata avviata la sessione, avvia una nuova sessione claude senza --restricted e crea la sessione cloud da lì
Prima della v2.1.248, Claude Code non aveva il flag --restricted; le versioni precedenti rifiutano il flag stesso con un errore di opzione sconosciuta.

Le sessioni cloud sono disabilitate dalla policy della tua organizzazione

La policy allow_remote_sessions della tua organizzazione è disattivata, quindi le sessioni cloud e i comandi che le usano non sono disponibili:
Il messaggio appare quando crei una sessione cloud dal terminale e quando invii un comando che richiede le sessioni cloud, come /teleport, /remote-env o /web-setup. Prima della v2.1.268, l’invio di uno di quei comandi restituiva invece Unknown command. Se invece il messaggio indica una credenziale che questa sessione sta usando e termina con Cloud sessions use your claude.ai login., consulta Cloud sessions use your claude.ai login. Se Claude Code non è riuscito affatto a caricare la policy della tua organizzazione, vedi invece un messaggio diverso. Cosa fare:

Cloud sessions use your claude.ai login

Quando il rifiuto della policy indica una credenziale che questa sessione sta usando e termina con questa frase, Claude Code ha controllato la policy sulle sessioni cloud dell’organizzazione che ha emesso quella credenziale. Quell’organizzazione può essere diversa da quella a cui appartiene il tuo accesso a claude.ai:
L’ultima frase significa che le sessioni cloud vengono eseguite con il tuo accesso a claude.ai anziché con quella credenziale. Questa forma appare quando avvii, riprendi o invii un messaggio a una sessione cloud dalla tua shell, ad esempio con --cloud o --teleport. Prima della v2.1.296, anche in questo caso Claude Code stampava la forma che ti invita a contattare l’amministratore della tua organizzazione.

Couldn’t verify your organization’s policy for cloud sessions

Questi messaggi indicano che Claude Code non è riuscito a caricare la policy della tua organizzazione, che controlla prima di creare, riprendere o inviare un messaggio a una sessione cloud. Finché la richiesta della policy non è terminata, il messaggio è:
All’interno di una sessione, anche un comando che richiede le sessioni cloud, come /teleport o /web-setup, restituisce questo messaggio. Lo fa anche dove la tua shell stamperebbe una forma Cloud sessions aren't available:, e la sua seconda frase è Check your network connection, then restart Claude Code and try again. Una volta che la richiesta della policy è fallita, il messaggio indica cosa non ha funzionato. Questo vale quando avvii, riprendi o invii un messaggio a una sessione cloud dalla tua shell con un flag come --cloud o --teleport. Senza un percorso verso l’API, il messaggio è:
Altri errori seguono la stessa apertura con la propria causa, ad esempio un proxy che ha rifiutato la richiesta con HTTP 403, un errore del server o credenziali che l’API non ha accettato. Quando l’API non ha accettato una credenziale che questa sessione usa al posto del tuo accesso a claude.ai, ad esempio una variabile d’ambiente ANTHROPIC_API_KEY, il messaggio può anche indicarla e suggerire di rimuoverla:
Prima della v2.1.296, anche questi errori stampavano il messaggio Couldn't verify. Cosa fare:
  • Per il messaggio Couldn't verify, controlla la tua connessione di rete e riprova. All’interno di una sessione, riavvia prima Claude Code
  • Per un messaggio Cloud sessions aren't available:, fai ciò che richiede la causa indicata, ad esempio controllare il proxy o rimuovere la credenziale indicata, poi esegui di nuovo il comando

Nessuno stash eseguito perché una cartella ha sostituito un file tracciato

Questo messaggio significa che una cartella nel tuo checkout ora si trova dove prima c’era un file o un collegamento tracciato da git. Compare dopo che scegli l’opzione di stash mentre porti una sessione cloud nel tuo terminale, ad esempio con claude --teleport o /teleport. Eseguire lo stash di quello stato potrebbe eliminare i file all’interno della cartella, quindi Claude Code rifiuta lo stash e lascia invariati il checkout e l’indice:
Cosa fare:
  • Esegui il commit della modifica o sposta la cartella altrove, come indica il messaggio, poi esegui di nuovo il teleport

Il valore di --json-schema non è un JSON Schema valido

Lo schema che hai passato a --json-schema in modalità non interattiva non ha superato la compilazione JSON Schema, quindi claude termina con codice di uscita 1 invece di eseguire il prompt. Prima della v2.1.205, uno schema non valido produceva un output non strutturato senza alcun errore, e qualsiasi schema che usasse la parola chiave format veniva trattato come non valido.
Il testo dopo i secondi due punti è la diagnostica del validatore e indica la parola chiave o la posizione che non ha superato la verifica. Gli schemi che usano la parola chiave format, come "format": "email", sono validi: Claude Code accetta format come annotazione e non lo applica. Claude Code esegue due controlli prima della compilazione dello schema: rifiuta un valore che non è JSON analizzabile con Error: --json-schema is not valid JSON, e un JSON valido che non è un oggetto con Error: --json-schema must be a JSON object. Cosa fare:
  • Correggi la parte dello schema indicata dalla diagnostica, quindi esegui di nuovo il comando
  • Consulta Ottenere output strutturato per uno schema e un comando funzionanti

Il file di impostazioni supera il limite di 2MiB

Il file che hai passato a --settings è più grande di 2 MiB, quindi claude termina con codice di uscita 1 all’avvio invece di caricarlo. Prima della v2.1.214, Claude Code leggeva il file senza alcun controllo sulla dimensione, e un file di diversi gigabyte o un file di dispositivo come /dev/zero facevano crescere la memoria senza limiti.
Claude Code rifiuta allo stesso modo un percorso --settings che non è un file regolare: un dispositivo, una FIFO o un socket riporta Error: Cannot use settings file (Not a regular file (device, FIFO, or socket)) seguito dal percorso, e una directory riporta un motivo EISDIR. Cosa fare:
  • Indica a --settings un file di impostazioni JSON regolare inferiore a 2 MiB. Consulta Impostazioni per il formato.

La directory corrente non esiste più

Hai avviato claude da una directory che è stata eliminata o spostata dopo che la tua shell vi è entrata, ad esempio un worktree o una directory temporanea rimossa da un’altra shell. Claude Code non riesce a leggere la propria directory di lavoro, quindi termina con codice di uscita 1 prima di avviare la sessione, sia in modalità interattiva sia in modalità non interattiva. Prima della v2.1.239, Claude Code andava in crash mostrando su stderr il sorgente minificato del bundle e uno stack ENOENT ... uv_cwd grezzo invece di questo messaggio.
La causa e la soluzione sono le stesse per entrambe le forme. Quando Claude Code non riesce a leggere la directory di lavoro per un motivo diverso, come una modifica dei permessi, il messaggio indica invece il codice di errore: Can't read the current directory (EACCES). Start Claude Code from a different directory. Su macOS, EPERM per una directory in ~/Desktop, ~/Documents, ~/Downloads o iCloud Drive di solito significa che macOS sta bloccando l’accesso della tua app del terminale a quella cartella. Anche altri comandi che leggono quella cartella falliscono allo stesso modo: ls in quella posizione riporta Operation not permitted, anche con sudo. Cosa fare:
  • Passa a una directory esistente, come la tua directory home o la directory del progetto, quindi esegui di nuovo claude
  • Se la directory è stata ricreata nello stesso percorso, la tua shell mantiene ancora quella eliminata. Esegui cd "$PWD" oppure esci dalla directory e rientraci, quindi esegui di nuovo claude
  • Per EPERM su macOS, chiudi la tua app del terminale con Cmd+Q, riaprila, torna in quella cartella ed esegui claude. Se ls in quella cartella continua a fallire, apri Impostazioni di Sistema > Privacy e sicurezza > File e cartelle, attiva la cartella per la tua app del terminale, quindi riapri il terminale

Directory temporanea rifiutata o impossibile da creare

Su macOS e Linux, Claude Code crea all’avvio una directory temporanea privata, claude-<uid>, nella directory temporanea di sistema o nell’override CLAUDE_CODE_TMPDIR. Quando la directory non può essere creata, o una voce già presente in quel percorso non supera i controlli di sicurezza, Claude Code stampa l’errore su stderr e termina con codice di uscita 1 invece di avviare la sessione:
Cosa fare:
  • Per ENOSPC, libera spazio su disco nel volume che contiene la directory temporanea
  • Per le forme Refusing to use it, rimuovi la voce indicata stessa, non ciò a cui punta un collegamento, e avvia di nuovo Claude Code; per la forma owned by uid, solo un amministratore o quell’utente può rimuoverla
  • Per is not readable, esegui chmod 0700 sulla directory indicata, oppure rimuovila e avvia di nuovo
  • In tutti questi casi, imposta CLAUDE_CODE_TMPDIR su una directory che controlli e avvia di nuovo Claude Code, lasciando intatto il percorso rifiutato

Non è stato possibile risolvere la directory in una posizione reale

Hai eseguito /add-dir per una sottodirectory della tua directory di lavoro e Claude Code non è riuscito a risolvere la directory nella sua posizione reale. Hai già accesso ai file di una sottodirectory della directory di lavoro, quindi /add-dir carica solo le sue skill, i suoi comandi e i suoi agenti. Prima di caricarli, Claude Code verifica che la posizione reale della directory, con eventuali collegamenti simbolici risolti, si trovi all’interno della directory di lavoro. Quando Claude Code non riesce a risolvere quella posizione, non carica nulla e mostra questo messaggio:
Cosa fare:
  • Verifica che il percorso indichi una directory reale all’interno della directory di lavoro, quindi esegui di nuovo /add-dir
  • Il messaggio non modifica il tuo accesso ai file; segnala solo che il contenuto .claude/ della directory non è stato caricato
Prima della v2.1.261, questo messaggio appariva anche per ogni /add-dir <subdirectory> quando la directory di lavoro si trovava su un automount /net/<host>, dove Claude Code per scelta progettuale non risolve i percorsi; la directory era a posto e riprovare non poteva aiutare.

Workspace non attendibile all’avvio di Remote Control

Hai avviato la modalità server di Remote Control con claude remote-control o il suo alias claude rc in una directory che non hai contrassegnato come attendibile, e il comando non è riuscito a chiederti se considerarla attendibile. Ad esempio, lo standard input o lo standard output del comando non è un terminale perché uno dei due è reindirizzato o collegato tramite pipe. Il comando termina con codice di uscita 1:
Due varianti che iniziano anch’esse con Error: Workspace not trusted. appaiono in un terminale troppo piccolo per mostrare cosa attiva il considerare attendibile la directory, o in uno che non ha riportato le proprie dimensioni. Ingrandisci la finestra o passa a una normale finestra del terminale, quindi esegui di nuovo claude rc. Nella tua directory home il messaggio è diverso, perché la finestra di dialogo di attendibilità del workspace non salva mai l’attendibilità per la directory home, quindi accettarla lì non può soddisfare questo controllo. Prima della v2.1.214, la directory home mostrava il messaggio precedente, il cui consiglio non può funzionare in quella posizione.
Se rispondi n o premi Invio alla domanda Trust <directory>?, il comando stampa un messaggio Remote Control did not start che indica la directory e termina con codice di uscita 1. Esegui di nuovo claude rc per rispondere y. Cosa fare:
  • Prima rendi attendibile la directory da un terminale: esegui claude rc lì e rispondi y, oppure esegui claude lì e accetta la finestra di dialogo di attendibilità del workspace, quindi esegui di nuovo il comando originale
  • Nella tua directory home, passa a una directory di progetto e avvia Remote Control da lì
Prima della v2.1.284, il comando non lo chiedeva mai, nemmeno in un terminale.

Non trasferito alle sessioni avviate da Remote Control

Hai avviato Remote Control con un flag globale di claude prima del verbo remote-control, uno che limiterebbe o configurerebbe le sessioni avviate da Remote Control, come --settings, --setting-sources, --permission-mode, --disallowed-tools o --mcp-config. Un flag posto prima del verbo non raggiunge mai quelle sessioni. Claude Code si rifiuta invece di avviarsi, indicando il flag:
Claude Code non rifiuta i flag globali che è innocuo scartare, come --verbose, --model, o un --session-id o --plugin-dir inserito da un wrapper: li ignora e Remote Control si avvia. Claude Code si rifiuta di avviarsi anche per un flag globale che non riconosce ancora come innocuo, quindi un flag aggiunto in una release più recente può apparire in questo messaggio finché una release successiva non lo contrassegna come innocuo. Cosa fare:
  • Rimuovi il flag da prima del verbo e passa le opzioni proprie di Remote Control dopo di esso; claude remote-control --help le elenca
  • Quando il flag rifiutato è --permission-mode, esegui claude remote-control --permission-mode <mode> per impostare la modalità di permesso per le sessioni avviate da Remote Control
Prima della v2.1.248, claude remote-control non accettava i propri flag quando veniva prima un flag globale, e il comando falliva con un errore unknown option.

--sandbox or --no-sandbox is not supported by claude remote-control

Questo errore indica che il comando che avvia il tuo server Remote Control passa --sandbox o --no-sandbox dopo remote-control, e claude remote-control non accetta nessuno dei due flag. Il server termina con codice di uscita 1 invece di avviarsi:
Cosa fare:
  • Rimuovi il flag dal comando, anche in uno script o in una definizione di servizio che avvia il server per te, quindi eseguilo di nuovo
  • Per eseguire in sandbox le sessioni avviate dal server, attiva il sandboxing impostando sandbox.enabled su true in un file di impostazioni
Entrambi i flag sono stati rimossi da claude remote-control nella v2.1.300, quindi un comando scritto per una versione precedente può ancora contenerne uno.

claude import non è ancora disponibile in questa build

Hai eseguito claude import e Claude Code ha rilevato che il flusso di importazione è disattivato, quindi il comando termina con codice di uscita 1 invece di avviare l’importazione. Prima della v2.1.222, una build con il flusso di importazione disattivato trattava import come un prompt e avviava una sessione interattiva invece di stampare questo messaggio.
Claude Code attiva claude import tramite un feature flag che recupera da Anthropic e memorizza nella cache su disco. Questo messaggio significa che il valore nella cache è disattivato. La causa è di solito una delle seguenti:
  • Non hai avviato una sessione dall’installazione, quindi Claude Code non ha ancora recuperato il flag. Il primo claude import può stampare questo messaggio anche quando la funzionalità è disponibile per te.
  • Usi Claude Code tramite Amazon Bedrock, Agent Platform di Google Cloud, Microsoft Foundry o Claude Platform on AWS, oppure tramite un gateway delle app Claude. Claude Code non recupera i feature flag in queste sessioni, quindi claude import resta non disponibile.
  • Hai impostato DISABLE_TELEMETRY, DO_NOT_TRACK, DISABLE_GROWTHBOOK o CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, che disattivano il recupero dei feature flag, quindi claude import resta non disponibile.
Cosa fare:
  • Su una nuova installazione, avvia claude, attendi che la sessione venga caricata, esci ed esegui di nuovo claude import
  • Dove il recupero dei feature flag resta disattivato, imposta tu stesso la configurazione: aggiungi i server MCP con claude mcp add e crea i file CLAUDE.md, le skill e i comandi e i subagent che vuoi trasferire. Il messaggio indica anche ~/.claude/settings.json. Della configurazione che claude import trasferisce, quel file contiene solo la modalità di permesso; Claude Code non legge i server MCP da esso.

Impossibile leggere la configurazione di Claude Code

Hai eseguito claude import mentre Claude Code non riusciva ad analizzare ~/.claude.json, il file in cui memorizza il tuo accesso e lo stato per progetto. Il sottocomando legge quel file per verificare la disponibilità, ma non mostra la finestra di dialogo di ripristino che mostra la sessione interattiva, quindi termina con codice di uscita 1. Prima della v2.1.222, claude import con un file di configurazione illeggibile avviava una sessione interattiva, la cui finestra di dialogo di ripristino gestiva il file.
Cosa fare:
  • Esegui claude senza argomenti. Claude Code rileva il file non valido e offre di reimpostarlo. Quindi esegui di nuovo claude import.
  • Per mantenere le modifiche manuali che hai apportato, correggi invece la sintassi JSON in ~/.claude.json in un editor, quindi esegui di nuovo claude import

Impossibile importare un server da Claude Desktop

Claude Code non è riuscito ad aggiungere uno dei server che hai selezionato in claude mcp add-from-claude-desktop. Il comando importa comunque gli altri server selezionati e stampa una riga per ogni server che non è riuscito ad aggiungere. Prima della v2.1.205, il primo server che falliva interrompeva l’importazione.
Il testo dopo il nome del server è il motivo. Il più comune è il controllo del nome: Claude Desktop consente nei nomi dei server caratteri, come spazi e punti, che claude mcp limita a lettere, numeri, trattini e trattini bassi. Altri motivi includono una configurazione del server che non supera la validazione e un server bloccato dalla policy MCP della tua organizzazione. Cosa fare:
  • Rinomina il server in claude_desktop_config.json usando solo lettere, numeri, trattini e trattini bassi, quindi esegui di nuovo claude mcp add-from-claude-desktop
  • Aggiungi quel server direttamente con claude mcp add o claude mcp add-json con un nome valido. Consulta Importare server MCP da Claude Desktop.

Impossibile aggiungere un server MCP all’ambito managed

Hai eseguito claude mcp add o claude mcp add-json con --scope managed. Quell’ambito contiene i server che la tua organizzazione fornisce tramite l’impostazione gestita managedMcpServers. Claude Code li legge solo dalle impostazioni gestite, quindi il comando non può scrivere un server in quell’ambito.
Cosa fare:
  • Aggiungi il server a un ambito in cui puoi scrivere: local, user o project. Senza --scope, il comando usa local. Consulta Ambiti di installazione MCP
  • Per fornire il server a ogni utente della tua organizzazione, aggiungilo a managedMcpServers nelle impostazioni gestite che distribuisci

Impossibile aggiungere un server MCP quando le impostazioni gestite consentono solo server dei plugin

Hai eseguito claude mcp add o claude mcp add-json mentre le impostazioni gestite della tua organizzazione impostano strictPluginOnlyCustomization su true o su un elenco che include mcp. Con questa impostazione, Claude Code non carica i server MCP da ~/.claude.json o .mcp.json, quindi il comando termina con codice di uscita 1 invece di salvare un server che non verrebbe mai caricato:
claude mcp add-from-claude-desktop segnala ogni server che selezioni come non importato, con questo messaggio come motivo. /import riporta questo messaggio per ogni server MCP che tenta di aggiungere e importa comunque gli altri elementi che ha trovato. Prima della v2.1.284, questi comandi salvavano il server e segnalavano il successo, e il server non veniva mai caricato. Cosa fare:
  • Installa un plugin che fornisce il server
  • Chiedi al tuo amministratore di distribuire il server in un plugin, oppure di fornirlo tramite managedMcpServers se si tratta di un server HTTP o SSE remoto

Impossibile leggere .mcp.json

Un comando che legge il file .mcp.json del progetto, come claude mcp add o claude mcp add-json con --scope project, oppure claude mcp remove, ha rilevato che il file nella directory corrente non è un file regolare o è più grande di 2 MiB, quindi termina con questo errore invece di leggere il file.
Prima della v2.1.257, una FIFO in .mcp.json lasciava il comando in attesa all’infinito senza output, e un collegamento simbolico a un file di dispositivo come /dev/zero faceva crescere la memoria finché il processo non veniva terminato. Cosa fare:
  • Controlla cosa si trova in .mcp.json nella directory corrente. Sostituiscilo con un normale file JSON nel formato dell’ambito di progetto, oppure eliminalo, quindi esegui di nuovo il comando.

Il server MCP non è stato salvato o rimosso

Hai eseguito claude mcp add, claude mcp add-json o claude mcp remove per un server nell’ambito user o local. Entrambi gli ambiti sono memorizzati in ~/.claude.json, e la modifica non è presente in quel file quando Claude Code lo rilegge dopo la scrittura. Il comando termina con questo errore invece della sua riga di successo.
Dopo una rimozione, il messaggio riporta was not removed from e termina con then remove the server again. Per un server nell’ambito local, il percorso è seguito dalla directory del progetto a cui appartiene la voce, come (local scope for /path/to/project). Prima della v2.1.283, claude mcp add, claude mcp add-json e claude mcp remove segnalavano il successo anche quando la modifica non raggiungeva il file. Cosa fare:
  • Rendi scrivibile il file indicato dal messaggio, oppure esegui il comando al di fuori della sandbox, quindi esegui di nuovo lo stesso comando di aggiunta o rimozione.

Il server MCP potrebbe non essere stato salvato o rimosso

Hai eseguito claude mcp add, claude mcp add-json o claude mcp remove per un server nell’ambito user o local, e Claude Code non è riuscito a rileggere ~/.claude.json per confermare la modifica. La modifica potrebbe essere su disco oppure no. Il testo tra parentesi è l’errore di quella lettura.
Dopo una rimozione, il messaggio riporta may not have been removed e termina con then remove the server again if it is still listed. Prima della v2.1.283, i comandi segnalavano il successo anche quando la modifica non poteva essere confermata. Cosa fare:
  • Esegui claude mcp get <name> per verificare se la modifica è su disco. Per un server nell’ambito local, eseguilo dalla directory del progetto a cui appartiene il server, poiché l’ambito locale è per progetto.
  • Se il server manca dopo un’aggiunta, o è ancora elencato dopo una rimozione, esegui di nuovo lo stesso comando di aggiunta o rimozione.

Il server è ospitato da Anthropic e non supporta OAuth locale

Hai avviato l’accesso per un server MCP il cui URL punta a un host di connettori ospitato da Anthropic che esegue l’autenticazione tramite un provider di identità di terze parti. Questi host includono microsoft365.mcp.claude.com, gmail.mcp.claude.com e gcal.mcp.claude.com. Claude Code si rifiuta di avviare il proprio flusso OAuth locale per questi host sia dal pannello /mcp sia da claude mcp login, perché il loro accesso funziona solo tramite claude.ai.
Cosa fare:
  • Rimuovi la tua voce con claude mcp remove <name>, in modo che non possa nascondere il connettore claude.ai allo stesso URL
  • Dopo averla rimossa, collega il servizio su claude.ai/customize/connectors, dopo aver effettuato l’accesso con l’account che usi in Claude Code. Una volta collegato, il connettore appare automaticamente in Claude Code se il tuo metodo di autenticazione attivo è un accesso con abbonamento claude.ai

Il server ha rifiutato l’header Authorization generato dall’headersHelper configurato

Un server MCP il cui headersHelper fornisce l’header Authorization ha risposto alla connessione con HTTP 401 o 403, quindi Claude Code segnala la connessione come non riuscita. Poiché l’helper fornisce l’header Authorization, Claude Code non ripiega su OAuth per il server:
Claude Code esegue di nuovo l’helper a ogni tentativo di connessione, quindi un nuovo tentativo dopo un rifiuto temporaneo, come una race condition nella rotazione dei token, può riuscire con una credenziale aggiornata. Cosa fare: Prima della v2.1.248, Claude Code eseguiva il discovery OAuth per un server il cui helper forniva l’header Authorization. Quel discovery poteva fallire con Incompatible auth server: does not support dynamic client registration invece di segnalare la credenziale rifiutata.

Strumento di richiesta di permesso MCP non trovato

Lo strumento che hai passato a --permission-prompt-tool non era tra gli strumenti MCP connessi quando l’esecuzione ha avuto bisogno per la prima volta di una decisione sui permessi, o perché il suo server non si è mai connesso o perché nessun server connesso espone uno strumento con quel nome. Claude Code invia comunque il tuo prompt: l’esecuzione non interattiva termina con questo errore, e codice di uscita 1, alla prima chiamata a uno strumento, quindi non produce alcuna risposta anche se la richiesta è stata effettuata. Prima del primo prompt, Claude Code attende che quel server si connetta fino al timeout di connessione per server di 30 secondi impostato da MCP_TIMEOUT. Prima della v2.1.206, l’avvio non attendeva che il server completasse la connessione, quindi anche un server funzionante ma lento ad avviarsi produceva questo errore.
L’elenco dopo Available MCP tools: indica gli strumenti MCP che erano connessi. Cosa fare:
  • Verifica che il server si avvii e resti connesso: esegui claude mcp list nella stessa directory e conferma che il server sia elencato come connesso
  • Conferma che il nome dello strumento corrisponda al nome mcp__<server>__<tool> esposto dal server
  • Se il server ha bisogno di più di 30 secondi per avviarsi, aumenta MCP_TIMEOUT

La porta di callback OAuth è già in uso

Quando accedi a un server MCP remoto con OAuth, Claude Code avvia un listener locale per ricevere il callback di accesso. Se la porta di cui ha bisogno quel listener è occupata da un altro processo, l’accesso fallisce con questo messaggio. Questo accade soprattutto con una porta di callback fissa impostata tramite la variabile MCP_OAUTH_CALLBACK_PORT o --callback-port, poiché senza di essa Claude Code sceglie una porta disponibile.
Su Windows, il comando suggerito è invece netstat -ano | findstr :<port>. Cosa fare:
  • Esegui il comando indicato nel messaggio per trovare il processo che occupa la porta, e arrestalo o attendi che termini
  • Se un altro programma ha bisogno di quella porta in modo permanente, registra un URI di reindirizzamento diverso con il server e imposta la sua porta con MCP_OAUTH_CALLBACK_PORT o --callback-port, a seconda di quale usi
  • Quindi avvia di nuovo l’accesso, ad esempio selezionando il server in /mcp

Nessuna porta disponibile per il reindirizzamento OAuth

Quando accedi a un server MCP remoto con OAuth, Claude Code avvia un listener locale per ricevere il callback di accesso. L’accesso fallisce con questo messaggio quando Claude Code non riesce a effettuare il bind di una porta locale per esso. Qualcosa sulla macchina gli impedisce di mettersi in ascolto su 127.0.0.1, ad esempio un software di sicurezza o una policy della sandbox che nega i listener locali.
Prima della v2.1.268, Claude Code non ripiegava su una porta assegnata dal sistema operativo, quindi il messaggio appariva anche quando non era possibile effettuare il bind solo delle porte scelte da Claude Code stesso. Questo può accadere su host Windows in cui Hyper-V riserva intervalli di porte che coprono le porte tra cui Claude Code sceglie. Cosa fare:
  • Verifica se un software di sicurezza o una policy della sandbox impedisce ai processi di mettersi in ascolto su 127.0.0.1, e consenti a Claude Code di effettuare il bind di una porta locale
  • Quindi avvia di nuovo l’accesso, ad esempio selezionando il server in /mcp

/security-review fallisce senza origin/HEAD

/security-review costruisce il contesto della revisione calcolando il diff del tuo branch rispetto a origin/HEAD, il ref locale che registra quale branch è quello predefinito sul tuo remote origin. Quando quel ref non esiste, i comandi git che raccolgono il diff falliscono e la revisione si interrompe prima di iniziare.
Il messaggio potrebbe citare invece git log o un diverso git diff. Git crea origin/HEAD solo quando il remote annuncia un branch predefinito e il tuo refspec di fetch lo include, come avviene con un git clone completo di un remote con dei commit. Il ref manca in queste configurazioni:
  • Un checkout single-branch o di CI, che esegue il fetch di un refspec troppo ristretto
  • Un remote il cui HEAD lato server punta a un branch su cui nessuno ha eseguito il push
  • Un repository senza remote origin, o uno su cui non hai mai eseguito il fetch
Claude Code mostra lo stesso errore per qualsiasi skill che inietta contesto dinamico, e un comando iniettato non riuscito interrompe l’invocazione di quella skill. Stringhe simili vengono generate prima ancora che il comando venga eseguito:
  • Shell command permission check failed for pattern "...": il controllo dei permessi del comando non lo ha consentito. Controlli dei permessi sui comandi inseriti spiega quali risultati causano l’interruzione in ogni modalità di permesso e come pre-approvare un comando con allowed-tools
  • Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found: il frontmatter della skill richiede bash su una macchina che non lo ha. Installa Git for Windows o modifica il frontmatter in shell: powershell. Consulta Come vengono eseguiti i comandi inseriti
  • No shell command in <name> was run: uno dei comandi ! del file contiene un carattere di controllo grezzo diverso da tabulazione o a capo, quindi nessuno di essi viene eseguito. Consulta come trovare e rimuovere il carattere
Cosa fare:
  • Crea il ref indicando il branch predefinito del tuo remote: git remote set-head origin <default-branch>. Questo funziona ogni volta che esiste il ref di tracciamento locale origin/<default-branch>. Se non esiste, come nei clone single-branch, esegui prima il fetch del branch: esegui git remote set-branches --add origin <branch>, poi git fetch origin, quindi esegui di nuovo il comando set-head. Esegui di nuovo /security-review.
  • Se preferisci non indicare il branch, esegui git fetch origin e poi git remote set-head origin --auto, che chiede al remote quale branch è quello predefinito. Fallisce con error: Cannot determine remote HEAD quando il remote non annuncia alcun branch predefinito, perché è vuoto o il suo HEAD punta a un branch su cui nessuno ha eseguito il push; in tal caso indica il branch esplicitamente. Fallisce con error: Not a valid ref quando il tuo clone non esegue il fetch di quel branch; prima amplia il refspec come indicato sopra.
  • Se il repository non ha un remote, aggiungine uno con git remote add origin <url> ed esegui il fetch prima di creare il ref. Se il remote è vuoto, esegui prima il push del tuo branch con git push -u origin HEAD e indica quel branch nel comando set-head; origin/HEAD punterà quindi al branch di cui hai appena eseguito il push, quindi /security-review vedrà un diff vuoto finché il branch non divergerà da esso.

Nessun comando shell in una skill o in un comando è stato eseguito

Uno dei comandi di contesto dinamico !`<command>` in un file di skill o di comando personalizzato contiene un carattere di controllo grezzo diverso da tabulazione o a capo. Claude Code rifiuta l’intera invocazione prima che venga eseguito qualsiasi comando del file. Il messaggio nomina lo strumento shell che avrebbe eseguito i comandi, Bash o PowerShell, e termina con il comando rifiutato. Ognuno di questi caratteri viene sostituito da � in modo che tu possa vedere dove si trova:
Cosa fare:
  • Trova ogni � nel comando citato alla fine del messaggio. Rimuovi il carattere che rappresenta dal file di skill o di comando, oppure dagli argomenti o dalle opzioni sostituiti nel file.

È necessario fornire un input quando si usa --print

claude senza argomenti ha bisogno che stdout sia un terminale per avviare l’interfaccia interattiva. Quando stdout è reindirizzato, o la console non è un vero terminale, come PowerShell ISE e alcuni riquadri di output degli IDE, claude viene invece eseguito in modalità non interattiva. È la stessa modalità di claude -p, che richiede un prompt, quindi il messaggio indica --print anche quando non hai passato il flag. Passare -p/--print senza un prompt e senza nulla inviato tramite pipe su stdin produce lo stesso errore ovunque.
Cosa fare:
  • Per l’uso interattivo, esegui claude in un vero terminale: Windows Terminal o la console di PowerShell invece di ISE, e il terminale integrato del tuo IDE invece di un riquadro di output
  • Per un uso singolo, passa il prompt: claude -p "your question", oppure invialo tramite pipe con echo "your question" | claude -p

Claude Code non può leggere la tastiera qui

Hai eseguito claude senza -p, il che avvia una sessione interattiva, ma il suo standard input non è un terminale. Qualcosa lo ha collegato tramite pipe o reindirizzato, oppure il programma che ha avviato claude ha fornito il proprio flusso di input. Una sessione interattiva ha bisogno di un terminale da cui leggere i tuoi tasti, e ciò che Claude Code fa in assenza di uno dipende dalla tua piattaforma:
  • Windows: Claude Code stampa il messaggio su stderr e termina con codice di uscita 1 invece di avviare l’interfaccia
  • macOS e Linux: Claude Code legge i tuoi tasti da /dev/tty e avvia la sessione, usando l’eventuale testo inviato tramite pipe come primo prompt. Vedi il messaggio quando /dev/tty non può essere aperto, e la sua prima riga indica /dev/tty al posto della formulazione per Windows.
Su Windows il messaggio è:
Cosa fare:
  • Per lavorare in modo interattivo, esegui claude direttamente in un terminale, senza collegare tramite pipe o reindirizzare il suo input
  • Per ottenere una risposta senza l’interfaccia interattiva, ad esempio da uno script, aggiungi -p e fornisci il prompt come argomento o su stdin, come in claude -p "your question" o echo "your question" | claude -p. Lo stesso funziona con --continue e --resume <session-id>.
Prima della v2.1.287, Claude Code avviava l’interfaccia invece di stampare questo messaggio, quindi non mostrava nulla sullo schermo oppure falliva con un errore contenente Raw mode is not supported. Se invece vedi Raw mode is not supported durante claude install, consulta Raw mode is not supported durante l’installazione.

L’input conteneva solo spazi vuoti

In modalità non interattiva, Claude Code rifiuta un prompt composto interamente da spazi, tabulazioni o a capo invece di inviarlo, perché l’API rifiuta i messaggi senza testo visibile. Il messaggio che vedi dipende dalla provenienza del prompt vuoto:
  • Argomento del prompt o stdin tramite pipe per claude -p: claude termina con Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print
  • Messaggio inviato a una sessione --input-format stream-json o Agent SDK in esecuzione: Claude Code termina il turno senza chiamare il modello e la sessione resta utilizzabile. Il rifiuto arriva come messaggio informativo e come testo del risultato del turno: Blank prompt — the message was only whitespace, so nothing was sent to the model.
Prima della v2.1.229, Claude Code inviava all’API il messaggio composto solo da spazi vuoti, e l’API rifiutava la richiesta con un errore 400. Cosa fare:
  • Includi testo visibile nel prompt. Se uno script costruisce il prompt da una variabile o da un file, verifica che l’origine non sia vuota prima di chiamare Claude Code.

L’input stream-json conteneva oltre 256M caratteri senza un a capo

Il tuo programma ha inviato più di 268.435.456 caratteri su stdin senza un a capo a un’esecuzione claude -p --input-format stream-json, quindi Claude Code stampa questo errore su stderr e termina con codice di uscita 1 invece di accumulare altro input nel buffer. Il messaggio indica quel limite come 256M. Prima della v2.1.257, Claude Code accumulava tale input nel buffer senza limiti, facendo crescere la memoria finché il processo non andava in crash o veniva terminato.
Un input così lungo senza un a capo di solito significa che il produttore non è affatto un produttore stream-json, come un file binario o un normale output di log inviato tramite pipe per errore. Anche un singolo messaggio che supera il limite non supera lo stesso controllo. Cosa fare:
  • Controlla cosa viene inviato tramite pipe a stdin. Con --input-format stream-json, ogni messaggio deve essere una singola riga JSON terminata da un a capo
  • Per inviare invece testo semplice, rimuovi --input-format stream-json; claude -p legge per impostazione predefinita un prompt in testo semplice da stdin

Comando sconosciuto

In una sessione interattiva del terminale, hai inviato un nome / che non corrisponde ad alcun comando in questa sessione, quindi Claude Code segnala il nome invece di eseguire qualcosa:
Claude Code suggerisce il nome di comando o alias più vicino tra quelli elencati nel menu in questa sessione. Quando non c’è nulla di simile, il messaggio termina dopo il nome. La causa è di solito una delle seguenti: Claude Code risponde in questo modo a un nome / senza corrispondenza solo in una sessione interattiva del terminale. In tutte le altre sessioni, invia invece il prompt a Claude come un normale messaggio, con una nota che indica che il comando non è stato eseguito e un elenco dei comandi che Claude può eseguire nella sessione. Queste sessioni includono: Per un comando integrato che non può essere eseguito in una di queste sessioni, Claude Code risponde comunque che il comando non è disponibile invece di inviarlo a Claude. Prima della v2.1.274, solo le sessioni cloud e le routine inviavano a Claude un nome senza corrispondenza. Prima della v2.1.273, anche esse rispondevano con Unknown command. Claude Code non tratta come comando ogni prompt che inizia con /. Invia il prompt a Claude come un normale messaggio quando la prima parola dopo / inizia con un segno di punteggiatura, come il /-- che apre un commento di documentazione Lean, oppure è un percorso come /var/log/syslog. Prima della v2.1.236, se premevi Enter mentre il menu dei comandi elencava una corrispondenza vicina al nome che avevi digitato, Claude Code eseguiva quella corrispondenza, quindi un errore di battitura come /hepl eseguiva /help invece di produrre questo messaggio. Cosa fare:
  • Esegui il nome suggerito, oppure digita / seguito da parte del nome per vedere cosa è disponibile in questa sessione
  • Se Claude Code segnala come sconosciuto un comando documentato, controlla la sua riga nel riferimento dei comandi per il requisito indicato

Il diff è troppo grande per ultrareview

Il diff tra il tuo branch e il branch di base, incluse le modifiche non sottoposte a commit e quelle nell’area di staging, supera i limiti di dimensione per un’ultrareview, quindi /code-review ultra e il sottocomando claude ultrareview rifiutano la revisione prima che la sessione cloud si avvii. Una revisione rifiutata non consuma un’esecuzione gratuita e non addebita crediti di utilizzo. Il messaggio indica i limiti in vigore, la dimensione del tuo diff e i file che contribuiscono con il maggior numero di righe modificate. Prima della v2.1.216, il messaggio mostrava solo le statistiche grezze del diff.
La revisione di una pull request applica gli stessi limiti; quella forma del messaggio inizia con PR #<N> is too large for ultrareview e indica il numero di file e di righe della PR. Cosa fare:
  • Passa un branch di base più vicino al tuo lavoro, come /code-review ultra develop, in modo che la revisione copra solo il diff rispetto a quel branch
  • Suddividi la modifica in branch più piccoli e revisionali uno alla volta. I file indicati dal messaggio contribuiscono con il maggior numero di righe modificate, quindi inizia spostandoli in un branch a sé.

Impossibile trovare il merge-base con il branch di base

/code-review ultra e il sottocomando claude ultrareview revisionano il diff tra il tuo branch e un branch di base, il che richiede un commit condiviso dai due. Quando git merge-base non ne trova nessuno, Claude Code rifiuta la revisione prima che la sessione cloud si avvii. Su un clone che Claude Code può verificare come completo, con almeno un branch, ripiega sulla revisione di ogni file tracciato invece di rifiutare. Vedi questo rifiuto quando il branch di base non può essere trovato affatto, quando Claude Code non riesce a verificare che il tuo clone sia completo, oppure nel raro repository in cui il diff dell’intero albero non è possibile, come con il formato oggetti SHA-256.
Il suggerimento dopo la prima frase dipende da ciò che Claude Code ha osservato:
  • Non hai passato un branch di base: Claude Code ha effettuato il confronto con il branch predefinito del repository e suggerisce di passare esplicitamente il tuo branch di base, come nell’esempio sopra
  • Hai passato un branch di base che era già nel tuo clone: il suggerimento riporta Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)
  • Hai passato un branch di base che non era nel tuo clone: Claude Code ne ha eseguito il fetch da origin prima del confronto. Il suggerimento recita <branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`); quando Claude Code non riesce a stabilire se il tuo clone è shallow, suggerisce invece git fetch --unshallow origin. Prima della v2.1.221, il suggerimento proponeva git fetch --unshallow origin per ogni branch di base recuperato con fetch, e su un clone completo quel comando fallisce con fatal: --unshallow on a complete repository does not make sense.
Cosa fare:
  • Se un altro branch è il tuo vero branch di base, passalo esplicitamente: /code-review ultra <branch>
  • Se il tuo clone potrebbe non avere la cronologia completa, esegui git fetch --unshallow origin ed esegui di nuovo la revisione

Il tuo checkout non ha branch

Un checkout può avere dei commit ma nessun branch: se esegui git init seguito da git fetch <url> e git checkout FETCH_HEAD, ottieni un HEAD scollegato senza ref. Claude Code impacchetta il tuo repository come bundle git per caricarlo per un’ultrareview, e non può creare il bundle di un repository che non ha branch o altri ref, quindi /code-review ultra e il sottocomando claude ultrareview rifiutano la revisione prima che la sessione cloud si avvii.
Prima della v2.1.221, Claude Code tentava di revisionare ogni file tracciato in questo checkout, e il caricamento falliva. Cosa fare:
  • Crea un branch al commit corrente con git checkout -b <name>, quindi esegui di nuovo la revisione

Nessun account GitHub è collegato al tuo account Claude

Hai eseguito /code-review ultra <PR#> o claude ultrareview <PR#>, e prima di creare la sessione cloud Claude Code chiede al server se l’account GitHub collegato al tuo account Claude può accedere al repository della PR. Nessun account è collegato, o il collegamento è scaduto, quindi il clone nel cloud fallirebbe e Claude Code rifiuta l’avvio. Claude Code non consuma un’esecuzione gratuita né addebita crediti di utilizzo per un avvio rifiutato.
Quando /web-setup non è disponibile nella tua sessione, il messaggio indica solo il link a claude.ai. Cosa fare:
  • Esegui /web-setup per collegare il tuo accesso alla GitHub CLI al tuo account Claude, oppure collega un account su claude.ai/connect-github
  • Esegui di nuovo la revisione un minuto dopo il collegamento
Prima della v2.1.248, Claude Code non effettuava questo controllo prima dell’avvio.

Il tuo account GitHub collegato non può vedere il repository

Hai eseguito /code-review ultra <PR#> o claude ultrareview <PR#>, e l’account GitHub collegato al tuo account Claude non può leggere il repository della PR, quindi il clone nel cloud fallirebbe e Claude Code rifiuta l’avvio. Claude Code non consuma un’esecuzione gratuita né addebita crediti di utilizzo per un avvio rifiutato.
Quando /web-setup non è disponibile nella tua sessione, il messaggio indica solo l’installazione dell’app. Cosa fare:
  • Se la tua CLI gh locale può leggere il repository, esegui /web-setup per collegare quell’accesso al tuo account Claude
  • Esegui di nuovo la revisione dopo la modifica
Prima della v2.1.248, Claude Code non effettuava questo controllo prima dell’avvio.

Il controllo preliminare della GitHub App non è riuscito temporaneamente

Hai avviato una sessione cloud da un repository locale, e due passaggi sono falliti insieme. Claude Code non è riuscito a creare o caricare il bundle del tuo repository. Prima del caricamento, ha verificato se il servizio cloud può clonare il repository da GitHub e, invece di una risposta definitiva, quel controllo si è concluso con un errore che un nuovo tentativo potrebbe risolvere, come un errore di rete, un timeout o un errore temporaneo del server. Il messaggio completo inizia con ciò che ha bloccato il bundle, ad esempio Could not upload repo bundle (<error>), e termina con la frase sul controllo preliminare:
Cosa fare:
  • Esegui di nuovo il comando dopo un momento. Quando il controllo GitHub viene superato, Claude Code può avviare la sessione da un clone GitHub, quindi il caricamento non riuscito non blocca più l’avvio
  • Se i nuovi tentativi continuano a fallire, l’inizio del messaggio indica cosa ha bloccato il caricamento. Quando quella causa è qualcosa che puoi correggere, correggila in modo che la sessione possa invece avviarsi dal tuo repository locale
Prima della v2.1.251, Claude Code terminava il messaggio con Please set up GitHub on https://claude.ai/code anche quando il controllo GitHub falliva solo temporaneamente, e un consiglio di configurazione non può risolvere un errore temporaneo.

Il caricamento del repository non può seguire un’impostazione git

Hai avviato una sessione cloud che carica il tuo repository locale, oppure un’ultrareview di un branch, e il caricamento non può seguire una delle impostazioni git che determinano quali regole degli attributi si applicano ai tuoi file. Se il caricamento procedesse e ignorasse una regola, un file che git trasforma prima di memorizzarlo, come uno cifrato da un clean filter, potrebbe arrivare nel cloud così com’è su disco. Claude Code rifiuta invece il caricamento, e non viene caricato nulla:
Il messaggio indica l’impostazione e dove è impostata, e termina con la soluzione per il caso in cui ti trovi. Lo stesso rifiuto appare per core.attributesFile e attr.tree, ciascuno con la propria soluzione. Il messaggio può indicare un file di configurazione che la tua configurazione git include tramite una direttiva include o includeIf, anche quando la condizione di quella direttiva non si applica a questo repository. Cosa fare:
  • Applica la soluzione indicata nella frase finale del messaggio

GitHub non è collegato al tuo account Claude

Hai avviato una sessione cloud dal tuo repository locale, ad esempio con /autofix-pr. Nessun account GitHub è collegato al tuo account Claude, o il collegamento è scaduto, quindi Claude Code rifiuta l’avvio:
Quando crei una routine con /schedule, lo stesso messaggio appare come nota di configurazione che indica il repository; la nota non blocca la creazione della routine. Cosa fare: Prima della v2.1.268, Claude Code segnalava questa situazione come un errore temporaneo del controllo della Claude GitHub App e suggeriva di riprovare o di installare l’app; nessuna delle due opzioni collega un account GitHub.

Una policy dell’organizzazione GitHub sta bloccando Claude

Hai eseguito al prompt di Claude Code un comando che avvia una sessione cloud, come /autofix-pr. Prima di creare la sessione, Claude Code verifica l’accesso di Claude al repository su GitHub, e GitHub lo ha rifiutato perché la tua organizzazione GitHub ha una policy che blocca Claude. Claude Code si ferma lì e mostra un messaggio che indica la policy. Quando a bloccare l’accesso è una allowlist di IP, il messaggio è:
Quando a bloccarlo è il single sign-on, il messaggio è:
Quando a bloccarlo è una policy di accesso condizionale di Microsoft Entra ID, il messaggio è:
Cosa fare:
  • Allowlist di IP: chiedi a un proprietario della tua organizzazione o enterprise GitHub di consentire gli indirizzi IP in uscita di Anthropic. Consulta Allowlist e firewall di GitHub per gli indirizzi e le impostazioni di GitHub da modificare.
  • Single sign-on: disconnetti GitHub su claude.ai/customize/connectors, quindi connettilo di nuovo. Quando GitHub lo chiede, fai clic su Authorize accanto alla tua organizzazione, in modo che la nuova connessione sia autorizzata per il suo single sign-on.
  • Policy di accesso condizionale: chiedi al tuo amministratore di GitHub Enterprise o di Microsoft Entra ID di consentire Claude in quella policy
  • Dopo la modifica, esegui di nuovo il comando

Autorizzazione single sign-on necessaria

Hai eseguito /install-github-app e scelto un repository la cui organizzazione impone il single sign-on SAML. Prima della configurazione, Claude Code verifica il tuo accesso al repository con la GitHub CLI, e GitHub ha rifiutato quella verifica perché il tuo token gh non è ancora autorizzato per l’organizzazione. La procedura guidata mostra l’avviso con i passaggi per l’autorizzazione:
Cosa fare:
  • Autorizza di nuovo il tuo accesso alla GitHub CLI con gli scope repo e workflow eseguendo gh auth refresh -h github.com -s repo,workflow, e autorizza l’organizzazione quando GitHub chiede il single sign-on
  • Se ti autentichi con un personal access token in GH_TOKEN, apri github.com/settings/tokens, seleziona Configure SSO sul token e autorizza l’organizzazione
  • Esegui di nuovo /install-github-app
Prima della v2.1.273, Claude Code mostrava invece l’avviso Admin permissions required per questa condizione.

Failed to resume the conversation

Claude Code non è riuscito a leggere o elaborare la trascrizione salvata della sessione che hai selezionato dal selettore di claude --resume, quindi termina il processo anziché continuare in uno stato caricato solo parzialmente. Il messaggio include il comando per riprovare:
Claude Code esce con codice 1 dopo aver mostrato il messaggio. Il selettore di /resume all’interno di una sessione in esecuzione segnala invece Failed to resume conversation nella conversazione, e la tua sessione corrente continua a essere eseguita. Prima della v2.1.216, una ripresa non riuscita dal selettore di claude --resume restava indefinitamente sull’indicatore Resuming conversation… invece di mostrare questo messaggio. Cosa fare:
  • Esegui claude --resume <session-id> con l’ID di sessione indicato nel messaggio per riprovare
  • In una versione precedente alla v2.1.285, se il nuovo tentativo fallisce allo stesso modo, esegui claude update e riprendi di nuovo. Quelle versioni non riescono a riprendere la sessione quando la trascrizione salvata contiene una voce che non sono in grado di leggere.
  • Se il nuovo tentativo fallisce ancora, esegui claude per avviare una nuova sessione

No conversation found with the session ID

Hai passato un ID di sessione a claude --resume <session-id> e nessuna trascrizione salvata corrisponde:
Claude Code esce con codice 1 dopo aver mostrato il messaggio. Claude Code cerca l’ID prima nel progetto corrente, poi in ogni altro progetto su questa macchina. Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi worktree git, quindi riprendi dalla directory in cui la sessione ha lavorato per ultima. Cause comuni:
  • ID digitato in modo errato: per un’esecuzione non interattiva, l’ID è il campo session_id dell’output di --output-format json
  • Trascrizione eliminata: Claude Code rimuove le trascrizioni dopo il periodo di conservazione, 30 giorni per impostazione predefinita, seguendo le regole di pulizia della conservazione
  • Macchina diversa: Claude Code memorizza le trascrizioni localmente, quindi riprendi la sessione sulla macchina in cui è stata eseguita
  • Copie duplicate: se hai copiato una directory di progetto in ~/.claude/projects in modo che due trascrizioni abbiano lo stesso ID, Claude Code mostra questo messaggio anziché riprendere arbitrariamente una delle copie
Cosa fare:
  • Per una sessione interattiva, apri il selettore delle sessioni con claude --resume e premi Ctrl+A per estenderlo a tutti i progetti su questa macchina, quindi seleziona la sessione
  • Le sessioni create con claude -p o con l’Agent SDK non compaiono nel selettore, quindi ricontrolla l’ID confrontandolo con il session_id stampato dall’esecuzione originale

Windows ha segnalato un errore (EBADF) quando Claude Code ha letto il file di trascrizione di questa sessione

Hai ripreso una sessione su Windows, il suo file di trascrizione salvato si è aperto normalmente, e poi la lettura è fallita con l’errore di sistema EBADF. L’errore di sistema non indica perché la lettura sia fallita, quindi il messaggio suggerisce le cause probabili e cosa provare:
Il messaggio segue la riga di errore del comando stesso, come Failed to resume session <session-id>. Un comando claude --resume o claude -p esce con codice 1 dopo averlo mostrato. Dopo /resume all’interno di una sessione, la tua sessione corrente continua a essere eseguita. Cosa fare:
  • Escludi la cartella che contiene le trascrizioni delle tue sessioni dai software che analizzano o intercettano le letture dei file, come gli strumenti di sicurezza, crittografia o gestione degli endpoint. Le trascrizioni si trovano in %USERPROFILE%\.claude\projects per impostazione predefinita, oppure nella directory indicata da CLAUDE_CONFIG_DIR
  • Se non puoi aggiungere un’esclusione, aggiungi invece Claude Code alle applicazioni consentite di quel software
  • Riprendi di nuovo la sessione
Prima della v2.1.282, l’errore non era accompagnato da alcuna spiegazione: claude --resume <session-id> terminava con Failed to resume session <session-id>, e un’esecuzione -p stampava solo il testo dell’errore di sistema, come Failed to resume session: EBADF: bad file descriptor, read.

Cannot switch renderers in this session

Quando cambi renderer, Claude Code riavvia il proprio processo. Hai eseguito /tui in una sessione che Claude Code si rifiuta di riavviare, quindi non effettua il cambio e non salva nulla. Il messaggio che vedi ti indica la causa:
  • Cannot switch renderers while work is running in the background: hai attività in esecuzione in background che un riavvio abbandonerebbe, come una shell in background o un subagent. Attendi che l’attività finisca o interrompila con /tasks, quindi esegui di nuovo /tui fullscreen o /tui default
  • Cannot switch renderers in this session: la sessione ha restrizioni che Claude Code non può passare al processo riavviato. Prima della v2.1.234, Claude Code effettuava comunque il riavvio e la sessione riavviata veniva eseguita senza di esse
Nel messaggio sulle restrizioni, la parte tra parentesi indica le restrizioni trovate da Claude Code:
Ogni motivo che il messaggio può mostrare tra parentesi:
  • launch flags: a custom system prompt, a tool allowlist, or restricted settings: hai avviato la sessione con un flag che Claude Code non ripassa al processo riavviato. Questi flag includono --system-prompt, --system-prompt-file, --append-system-prompt-file, una allowlist --tools, --setting-sources e --permission-prompt-tool
  • permission rules set for this session only: un aggiornamento dei permessi da un hook o da un chiamante SDK ha aggiunto regole deny o ask con destinazione session. Le regole allow limitate alla sessione non provocano il rifiuto. Un riavvio le elimina, e Claude Code chiede di nuovo
  • ask-before-running rules with no command-line form: un aggiornamento dei permessi da un hook o da un chiamante SDK ha aggiunto regole ask insieme alle regole che Claude Code ripassa come --allowed-tools e --disallowed-tools. Non esiste alcun flag per le regole ask
  • permission rules a command line cannot carry intact e added directories a command line cannot carry intact: un aggiornamento dei permessi ha aggiunto una regola o un percorso di directory durante la sessione. La riga di comando del processo riavviato non può trasportarne il testo come lo stesso valore
Cosa fare:
  • In una sessione avviata senza quelle restrizioni, esegui /tui fullscreen, oppure /tui default per tornare indietro. Claude Code salva lì l’impostazione tui

Claude Code couldn’t restart

Quando questo messaggio dice che la tua conversazione è salvata, la conversazione è su disco e puoi riprenderla da dove si era interrotta. Claude Code si stava riavviando, ad esempio per passare al rendering a schermo intero o tornare da esso dopo che hai eseguito /tui, e non è riuscito ad avviare il nuovo processo, quindi è uscito con stato 1:
Quando il riavvio non aveva alcuna conversazione da riaprire, ad esempio perché /tui era il tuo primo input in una nuova sessione, il messaggio è Claude Code couldn't restart. Start Claude Code again. Cosa fare:
  • Esegui di nuovo claude nella tua shell. Se il messaggio diceva che la tua conversazione è salvata, esegui /resume nella nuova sessione e seleziona la conversazione. Se non è nell’elenco, estendi il selettore delle sessioni
  • Se i riavvii continuano a non riuscire, avvia Claude Code dalla tua shell con claude --debug-file claude-debug.log. Se un riavvio da quella sessione non riesce, claude-debug.log nella directory da cui sei partito registra una riga Failed to relaunch: con l’errore del sistema operativo. Includi quella riga quando segnali il problema

Impossibile aprire Claude Desktop

Hai eseguito /desktop o il suo alias /app in una sessione, oppure claude --desktop nella tua shell, e il comando di sistema che Claude Code usa per aprire Claude Desktop non è riuscito. Dopo /desktop, la sessione resta nel terminale; claude --desktop stampa il messaggio senza il prefisso Error: ed esce con stato 1. Il testo tra parentesi indica il comando non riuscito, con il suo stato di uscita e la prima riga del suo output di errore quando li ha prodotti. Su macOS quel comando è open, come in questo esempio; su Windows è rundll32:
Cosa fare:
  • Apri Claude Desktop manualmente, quindi esegui di nuovo /desktop o claude --desktop
  • Per leggere l’output di errore completo del comando non riuscito, attiva il logging di debug con /debug ed esegui di nuovo /desktop, oppure esegui claude --desktop --debug-file <path>, quindi controlla il log di debug
Prima della v2.1.285, il messaggio terminava con Open Claude Desktop and run /desktop again. Prima della v2.1.275, era Failed to open Claude Desktop. Please try opening it manually. e non indicava cosa fosse fallito.

/terminal-setup ha lasciato invariata la tua keymap di Zed

Hai eseguito /terminal-setup in Zed, e Claude Code non è riuscito a completare l’aggiornamento del tuo keymap.json di Zed, quindi ha lasciato il file com’era. Ogni messaggio indica il percorso della tua keymap e termina con il blocco della scorciatoia da tastiera da aggiungere manualmente:
La prima riga del messaggio indica la causa:
  • Couldn't read your Zed keymap, so it was left unchanged.: Claude Code non è riuscito a leggere il file, ad esempio a causa dei permessi sui file
  • Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.: il file è stato letto correttamente ma non viene interpretato come un array di blocchi di scorciatoie da tastiera, nemmeno consentendo commenti // e virgole finali
  • Couldn't back up your Zed keymap; not modifying it.: Claude Code non è riuscito a copiare il file in un backup .bak accanto a esso, quindi non ha modificato nulla
  • Couldn't update your Zed keymap, so it was left unchanged.: il risultato dell’unione non è stato verificato come keymap valida contenente la scorciatoia, quindi Claude Code lo ha scartato invece di scriverlo. Un blocco di scorciatoie da tastiera con una chiave duplicata può causare questo problema
Cosa fare:
  • Copia il blocco dal messaggio nell’array di primo livello del tuo keymap.json al percorso indicato dal messaggio
  • Per isn't a readable list of keybindings, correggi l’errore di sintassi, oppure rendi un array il valore di primo livello del file, quindi esegui di nuovo /terminal-setup
Prima della v2.1.247, /terminal-setup non riusciva a interpretare una keymap di Zed che usava commenti // o virgole finali, e sostituiva l’intero file con la sola propria scorciatoia, segnalando comunque la scorciatoia come installata. Per ripristinare una keymap sostituita da una versione precedente, usa il file di backup .bak descritto in Inserire prompt su più righe.

Skill usage reports are not available on this connection

Hai eseguito /skill-doctor tramite Remote Control, dal telefono o dal browser. Claude Code non invia il report sull’utilizzo delle skill tramite Remote Control e risponde invece con questo messaggio:
Cosa fare:
  • Esegui /skill-doctor nel terminale della macchina su cui è in esecuzione la sessione, oppure esegui lì claude -p "/skill-doctor"

Gli stili di output personalizzati non possono essere selezionati tramite Remote Control

Hai eseguito /output-style dall’app mobile o dal web tramite Remote Control, oppure il comando è arrivato in un messaggio inoltrato nella sessione. Poiché un turno di questo tipo potrebbe non provenire dal proprietario dell’account, Claude Code elenca e seleziona in esso solo gli stili integrati, e aggiunge questo avviso ogni volta che il comando elenca gli stili o non riconosce il nome che hai fornito. Il nome di uno stile personalizzato riceve la stessa risposta di un nome che non esiste:
Cosa fare:
  • Scegli uno stile integrato, ad esempio /output-style concise
  • Per usare uno stile personalizzato, imposta outputStyle nel file .claude/settings.local.json del progetto, oppure esegui /output-style <style> nel terminale della sessione stessa, se ne ha uno

Gli stili di output vengono salvati nelle impostazioni locali, che questa sessione non carica

Hai provato a cambiare stile di output con /output-style <style> o /config outputStyle=<style> in una sessione le cui origini delle impostazioni escludono local. Esempi sono una sessione dell’Agent SDK il cui settingSources non include "local" e una sessione della CLI avviata con un valore di --setting-sources che non include local. Entrambi i comandi salvano lo stile in .claude/settings.local.json, un file che una sessione di questo tipo non rilegge mai, quindi Claude Code rifiuta anziché scrivere un’impostazione che non avrebbe alcun effetto:
Cosa fare:
  • Aggiungi local alle origini delle impostazioni della sessione e cambia di nuovo stile
  • Imposta la chiave outputStyle in un file di impostazioni che la sessione carica, come .claude/settings.json nel progetto o ~/.claude/settings.json. Nell’SDK TypeScript, imposta invece outputStyle all’interno dell’oggetto inline settings; consulta Attivare uno stile di output

/recap viene eseguito solo quando lo richiedi tu stesso

La richiesta /recap non proviene dal tuo input. È arrivata in un messaggio inoltrato nella sessione da un thread di Slack, Teams o di un progetto, oppure in un prompt inviato da una routine o da un altro programma. Un messaggio inoltrato riceve l’avviso anche se l’hai scritto tu. Claude Code non può stabilire che un messaggio inoltrato o automatizzato provenga dalla persona con il cui account è in esecuzione la sessione, quindi risponde con questo avviso invece che con un riepilogo:
Un /recap che passi a claude -p, o che la tua applicazione Agent SDK invia a una sessione che ha avviato, conta come tuo input. Cosa fare:

Errori dei plugin

Questi errori provengono dalla configurazione di plugin e marketplace. Per i problemi dei plugin che non producono uno dei messaggi in questa pagina, come un URL del marketplace che non si carica o un plugin che si installa ma non appare, vedi Risoluzione dei problemi dei plugin.

plugin eval è attualmente in accesso anticipato

Hai eseguito claude plugin eval o claude plugin eval init e ha terminato con codice 1 con uno di questi messaggi prima di fare qualsiasi cosa:
Il primo messaggio significa che la tua build è più vecchia della v2.1.269, la prima versione in cui il comando è generalmente disponibile. Il secondo significa che Anthropic ha disattivato il comando lato server; nulla sulla tua macchina lo riattiva. Cosa fare:
  • Esegui claude --version, quindi claude update, ed esegui il comando di nuovo in una nuova sessione. Vedi i requisiti per le valutazioni dei plugin
  • Se vedi il secondo messaggio su una build attuale, riprova più tardi dopo un altro claude update

Marketplace è registrato da una fonte non attendibile

Il marketplace è registrato con un nome che è riservato per i marketplace ufficiali di Anthropic, ma la sua fonte registrata non è un repository GitHub anthropics. Claude Code ri-controlla i nomi riservati ogni volta che carica o aggiorna un marketplace, quindi il marketplace e i plugin installati da esso smettono di caricarsi. Prima della v2.1.205, una voce registrata prima che il suo nome diventasse riservato continuava a caricarsi.
Per un marketplace la cui fonte non è un repository GitHub o un URL Git, come una directory locale, la frase centrale legge can only be used with GitHub sources from the 'anthropics' organization invece. claude plugin marketplace add esegue lo stesso controllo e rifiuta un nome riservato con Failed to add marketplace: seguito dalla stessa frase del nome riservato. Cosa fare:
  • Se il marketplace è già registrato, esegui claude plugin marketplace remove <name>, quindi aggiungilo di nuovo dal repository ufficiale github.com/anthropics
  • Se pubblichi un marketplace di terze parti che ha utilizzato il nome prima che diventasse riservato, rinominalo e chiedi agli utenti di aggiungerlo di nuovo dalla tua fonte
  • Vedi l’elenco dei nomi riservati in Schema del Marketplace

Il nome del marketplace è un’altra ortografia di un nome riservato

Il nome del marketplace non è di per sé un nome riservato, ma Claude Code lo tratta come un’altra ortografia di uno. Nomi riservati elenca quali ortografie contano come un nome riservato. Claude Code rifiuta un tale nome quando aggiungi il marketplace:
Quando un marketplace è già registrato con un tale nome, la sua voce smette di caricarsi, e /plugin, claude plugin install, e claude plugin update avvertono:
Quando il nome avrebbe bisogno di quoting della shell, il rifiuto al momento dell’aggiunta legge This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be. Cosa fare:
  • Rinomina il marketplace con un nome che non ortografia un nome riservato e aggiungilo di nuovo
  • Per l’avvertimento della voce ignorata, esegui il comando claude plugin marketplace remove che fornisce, o rimuovi la voce da ~/.claude/plugins/known_marketplaces.json

Claude Code rifiuta il nome del marketplace

Il nome di un marketplace registrato impersona un marketplace ufficiale di Anthropic secondo le regole che quella sezione elenca. Se un marketplace è stato registrato con un tale nome prima che il controllo lo bloccasse, il marketplace e i plugin installati da esso smettono di caricarsi, perché Claude Code controlla il nome ogni volta che legge il catalogo del marketplace. Quando il nome imita uno ufficiale, claude plugin list e la scheda Errors di /plugin segnalano ogni plugin interessato con un messaggio che inizia:
Per un nome che imita, l’errore del marketplace stesso legge Claude Code refuses this marketplace's name: it looks like one of Anthropic's own invece. claude plugin marketplace add rifiuta qualsiasi nome che impersona con Marketplace name impersonates an official Anthropic/Claude marketplace. Prima della v2.1.282, claude plugin list e /plugin segnalano i plugin di un nome che imita come non riusciti a caricarsi anche, senza nominare il nome del marketplace come la causa. Cosa fare:
  • Per mantenere un marketplace che un file di impostazioni dichiara inline con "source": "settings", rinominalo prima di rimuovere il vecchio nome, perché la rimozione del marketplace elimina anche la sua voce dai tuoi file di impostazioni. Claude Code v2.1.292 o successivo elenca questi passaggi nel messaggio:
    1. In ogni file di impostazioni che elenca il marketplace sotto extraKnownMarketplaces, assegna alla chiave della voce e al suo source.name un unico nuovo nome in ASCII semplice che non sembri uno ufficiale. Se un amministratore aggiunge il marketplace tramite le impostazioni gestite della tua organizzazione, è l’amministratore a eseguire questo passaggio
    2. Esegui claude plugin marketplace remove <old-name>, oppure rimuovi il vecchio nome nella scheda Marketplaces di /plugin. Questo disinstalla anche i suoi plugin ed elimina i loro dati, opzioni e segreti
    3. Avvia di nuovo Claude Code, nella cartella del progetto se il file è un file di impostazioni di progetto. Quindi installa i plugin dal marketplace rinominato
  • Per mantenere qualsiasi altro marketplace, attendi fino a quando il suo manutentore lo rinomina, quindi esegui claude plugin marketplace update <name>
  • Per rimuovere il marketplace, esegui claude plugin marketplace remove <name>. Questo disinstalla anche i plugin installati dal marketplace ed elimina i loro dati, opzioni e segreti
  • Se pubblichi il marketplace, rinominalo nel tuo marketplace.json; gli utenti aggiornano il marketplace invece di rimuoverlo

Marketplace è già aggiunto da una fonte diversa

Hai indicato una nuova fonte di marketplace con --marketplace <source> nel comando di installazione, in una sessione o dalla tua shell. Il catalogo che Claude Code ha recuperato da quella fonte ha lo stesso nome di un marketplace che hai già aggiunto da una fonte diversa. Claude Code mantiene il marketplace esistente invece di sostituirlo, e il plugin non viene installato.
Cosa fare:
  • Se il marketplace che hai già aggiunto è quello che desideri, installa da esso per nome: /plugin install <plugin>@<name>
  • Per passare alla nuova fonte, esegui /plugin marketplace remove <name>, quindi riprova l’installazione

Il comando del plugin fa riferimento a user_config in un comando shell

Un hook del plugin, monitor, o comando MCP headersHelper fa riferimento a un’opzione del plugin ${user_config.KEY}, e la stringa sostituita verrebbe passata a una shell. Un valore configurato contenente $(...), backtick, o ; verrebbe eseguito come codice lì, quindi Claude Code rifiuta di avviare il componente invece di sostituire il valore. Il controllo viene eseguito sul modello di comando, quindi l’errore appare anche quando nessun valore è ancora configurato. Prima della v2.1.207, il valore veniva sostituito nel comando shell. La formulazione dipende da quale superficie ha fatto riferimento all’opzione. Un hook in forma shell segnala:
Un monitor segnala:
Un MCP headersHelper segnala:
Cosa fare:
  • Per un hook, aggiungi un array args in modo che venga eseguito in forma exec, dove ogni ${user_config.KEY} diventa un argomento senza shell in mezzo. Oppure elimina il riferimento e leggi la variabile di ambiente $CLAUDE_PLUGIN_OPTION_<KEY> all’interno dello script
  • Per un monitor, elimina il riferimento e fai leggere al monitor script il valore da un file di configurazione
  • Per un headersHelper, sposta ${user_config.KEY} nel campo headers del server, che non viene analizzato dalla shell, o leggi il valore all’interno dello script helper

Controllo dell’integrità dell’archivio del plugin non riuscito

La voce del marketplace del plugin utilizza una fonte archive con un pin sha256, e il digest del file scaricato non corrisponde al pin. Claude Code rifiuta l’installazione, quindi nulla cambia nella cache del plugin. La mancata corrispondenza ha tre possibili cause:
  • Il file all’URL è cambiato dopo che l’autore ha calcolato il pin
  • L’autore ha inserito il digest sbagliato nella voce del marketplace
  • L’URL serve un file diverso da quello che l’autore ha pinato
Cosa fare:
  • Se pubblichi il plugin, ricalcola il digest del file esatto che l’URL serve, ad esempio con shasum -a 256 my-plugin.zip, o Get-FileHash -Algorithm SHA256 my-plugin.zip in PowerShell, e aggiorna sha256 nella voce del marketplace
  • Se installi il plugin, esegui /plugin marketplace update <name> per aggiornare il catalogo nel caso in cui la voce sia stata corretta, quindi riprova l’installazione
  • Se i digest continuano a non corrispondere dopo un aggiornamento, chiedi al proprietario del marketplace quale file hanno pinato prima di installare

Il percorso esce dalla directory del plugin

Un percorso del componente del plugin, dichiarato nel plugin.json del plugin o nella sua voce del marketplace, si risolve al di fuori della directory del plugin. Claude Code elimina quel percorso e carica il resto del plugin. Il nome del componente nel messaggio, come commands o hooks, nomina il campo che ha dichiarato il percorso.
Nell’output del comando claude plugin, lo stesso errore legge Path escapes plugin directory: ./../shared.md (commands). Claude Code rifiuta sia un percorso che punta al di fuori del plugin come scritto, come ../shared-utils, sia un symlink che porta al di fuori del plugin e non è uno che le regole del symlink del marketplace consentono. Per un symlink, il messaggio dice anche dove il percorso si risolve:
Su macOS e Linux, Claude Code rifiuta anche un percorso del componente che contiene una barra rovesciata ovunque in esso, anche quando il percorso rimane all’interno del plugin. Un plugin i cui percorsi dei componenti utilizzano separatori in stile Windows si carica su Windows e attiva questo rifiuto sulle altre piattaforme:
Prima della v2.1.251, Claude Code caricava un percorso commands dichiarato in una voce del marketplace anche quando puntava al di fuori della directory del plugin. Prima della v2.1.257, il controllo guardava solo l’ortografia del percorso, non dove un symlink porta. Cosa fare:
  • Sposta il file referenziato all’interno della directory del plugin e punta il percorso ad esso con un percorso relativo ./
  • Se il percorso è un symlink a un file al di fuori del plugin, sostituisci il symlink con una copia del file
  • Se il messaggio dice che il percorso contiene una barra rovesciata, scrivi il percorso con barre in avanti, ad esempio ./commands/deploy.md
  • Per condividere file con altri plugin nello stesso marketplace, collegali con un symlink all’interno della directory del plugin, seguendo le regole del symlink

Il percorso non poteva essere controllato

Claude Code ha chiesto al sistema operativo se un percorso del plugin esiste e ha ricevuto un errore diverso da “non trovato”, quindi non carica ciò che il percorso nomina. Quanto del plugin si carica dipende da quale percorso ha fallito: Non vedi questo errore per un percorso che non esiste affatto. In /plugin, l’errore appare sotto il plugin e nomina il percorso e il codice che il sistema operativo ha restituito:
In claude plugin list, lo stesso errore legge Path not found: /home/user/my-plugin/skills (skills, ELOOP). Le cause che producono questo errore includono:
  • ELOOP: un symlink nel percorso punta a se stesso o forma un ciclo
  • EIO o ESTALE: il percorso è su un mount di rete che è rotto o stantio
  • EACCES: una delle directory sopra il percorso nega il permesso di attraversarla
Cosa fare:
  • Sostituisci un symlink che punta a se stesso con una cartella reale, o eliminalo
  • Se il percorso è su un mount di rete, rimonta la condivisione
  • Se il codice è EACCES, ripristina il tuo permesso di esecuzione sulle directory sopra il percorso
  • Esegui /reload-plugins dopo aver corretto il percorso, o riavvia Claude Code, per caricare il plugin o il componente
Prima della v2.1.265, Claude Code trattava una cartella del componente predefinito che non poteva controllare come assente e caricava il plugin senza quel componente, senza errore.

Il percorso della voce del marketplace non rimane all’interno della directory del marketplace

La voce del marketplace del plugin dichiara un percorso di origine che Claude Code non può risolvere a una posizione all’interno della directory del marketplace stesso, quindi il plugin non si installa o carica. Il rifiuto copre:
  • Un percorso della voce che è assoluto, sale fuori dal marketplace con .., o è scritto come un percorso di rete
  • Su macOS e Linux, un percorso della voce che contiene una barra rovesciata ovunque dopo il ./ iniziale
  • Una voce in un marketplace recuperato da una fonte remota, come git o un URL, che raggiunge il suo target attraverso un symlink che si risolve al di fuori della directory del marketplace
  • Una voce relativa in un marketplace aggiunto da un URL diretto al suo marketplace.json: Claude Code scarica solo quel file, quindi nessun file di plugin locale esiste per il percorso da nominare. Vedi I plugin con percorsi relativi falliscono nei marketplace basati su URL
claude plugin install segnala il rifiuto così:
Quando il percorso di una voce di un plugin già installato fallisce lo stesso controllo, claude plugin list mostra il plugin come failed to load con:
Cosa fare:
  • Se mantieni il marketplace, scrivi il source della voce come un percorso relativo semplice con barre in avanti, come ./plugins/my-plugin, e mantieni qualsiasi symlink che attraversa puntato all’interno della directory del marketplace
  • Se hai aggiunto il marketplace da un URL diretto, le voci relative non possono risolversi. Chiedi all’autore del marketplace di utilizzare un’altra fonte di plugin, o aggiungi il marketplace dal suo repository git invece

Impossibile caricare la configurazione del marketplace

Claude Code mantiene i marketplace dei plugin che hai aggiunto in un file di registro in ~/.claude/plugins/known_marketplaces.json. Un comando di plugin che ha bisogno del registro, come claude plugin install, fallisce con uno di due messaggi quando Claude Code non può utilizzare il file:
  • Failed to load marketplace configuration: il file esiste ma non è JSON valido o non può essere letto. Un file vuoto fallisce in questo modo anche.
  • Marketplace configuration file is corrupted: il file è JSON valido ma i suoi contenuti non corrispondono allo schema del registro.
Con un file vuoto, claude plugin install segnala:
Prima della v2.1.246, claude plugin install non segnalava questo fallimento. Cosa fare:
  • Apri ~/.claude/plugins/known_marketplaces.json e ripara il JSON, o correggi le voci che il messaggio nomina come non corrispondenti allo schema del registro
  • Se non puoi ripararla, elimina il file o sostituisci i suoi contenuti con {}, quindi aggiungi di nuovo ogni marketplace con claude plugin marketplace add <source>. Claude Code ri-registra i marketplace che le tue impostazioni utente o gestite dichiarano in extraKnownMarketplaces la prossima volta che lo avvii in una cartella che hai fiducia.

Il plugin è richiesto dalla tua organizzazione

Hai eseguito claude plugin disable, o utilizzato la scheda Installed di /plugin, per disattivare un plugin sincronizzato da claude.ai che la tua organizzazione contrassegna come richiesto:
Claude Code non salva nulla e il plugin rimane abilitato. Quando provi a disabilitare un plugin da cui dipende un plugin richiesto, Claude Code rifiuta allo stesso modo, con un messaggio che nomina il plugin richiesto che lo necessita. Cosa fare:
  • Chiedi a un amministratore della tua organizzazione claude.ai di cambiare lo stato richiesto del plugin su claude.ai

Il plugin non è stato disinstallato

Hai eseguito claude plugin uninstall, o scelto Uninstall nella scheda Installed di /plugin, e la disinstallazione si è fermata con un messaggio che inizia "<plugin>" was not uninstalled:. Se il testo dopo i due punti inizia con installed_plugins.json invece di nominare un file di impostazioni, la causa è il contenuto in installed_plugins.json che questa versione di Claude Code non può leggere. Per quella forma, vedi installed_plugins.json contiene un record che questa versione non può leggere. Quando Claude Code ha rimosso la voce del plugin da enabledPlugins e ha letto i file di impostazioni di quel scope di nuovo, o il plugin era ancora acceso lì, o un file che potrebbe accenderlo non poteva essere letto o controllato. Eliminare le opzioni salvate del plugin, i segreti e i dati mentre una voce di impostazioni potrebbe accenderlo di nuovo perderebbe, quindi la disinstallazione si ferma invece: il plugin rimane installato e nulla che ha salvato viene eliminato.
Il mezzo del messaggio nomina il file e la causa:
  • it is still switched on in <file>, although the settings change reported no error: la scrittura delle impostazioni ha segnalato il successo ma la voce è ancora lì quando il file viene letto di nuovo
  • it is still switched on in <file>, and the settings change failed (<error>): il file non poteva essere salvato, per il motivo tra parentesi
  • <file> is there and could not be read: il file esiste ma non poteva essere letto come impostazioni, ad esempio perché non è JSON valido, quindi potrebbe ancora abilitare il plugin
  • <file> (not read: it is on a network path or is a link to one, or could not be checked): Claude Code non ha letto il file di impostazioni del progetto o locale perché il file, o la cartella .claude che lo contiene, è un link che porta a una posizione di rete, o perché non poteva esaminare quel percorso
claude plugin uninstall esce con 1, e con --json il risultato porta failureCode: "settings_still_on". /plugin mostra lo stesso messaggio. Cosa fare:
  • Segui l’ultima frase del messaggio: ripara o sostituisci il file di impostazioni che nomina, o rimuovi la voce del plugin da enabledPlugins in quel file tu stesso, quindi esegui di nuovo la disinstallazione

Errori degli strumenti

Questi errori derivano dalle chiamate agli strumenti di Claude. Claude corregge da solo la maggior parte degli errori degli strumenti. Quando un errore richiede una modifica da parte tua, l’elenco Cosa fare di quell’errore indica cosa cambiare.

No such tool available

Claude ha chiamato uno strumento con un nome che non è presente nell’elenco degli strumenti della sessione. Claude Code restituisce l’errore a Claude come risultato della chiamata allo strumento e il turno prosegue. Quando Claude Code riesce a capire perché lo strumento manca, aggiunge dopo il nome dello strumento una frase che indica il motivo o nomina lo strumento da chiamare al suo posto, come nella seconda riga:
Subito dopo aver ripreso una sessione, un server MCP può trovarsi ancora al primo tentativo di connessione quando Claude chiama uno dei suoi strumenti. Claude Code allora attende il server e restituisce questo errore se lo strumento non è ancora disponibile al termine dell’attesa. Prima della v2.1.284, una chiamata di questo tipo falliva immediatamente invece di attendere. Anche una chiamata il cui nome dello strumento è stato troncato da Claude Code a 200 caratteri fallisce con questo errore. Cosa fare:
  • Se succede una volta sola, non devi fare nulla. Claude legge l’errore e il turno prosegue.
  • Se le chiamate agli strumenti di un server MCP continuano a fallire con questo errore, esegui /mcp nella sessione o claude mcp list nella tua shell per controllare lo stato del server, e riconnetti un server non riuscito da /mcp. Nell’Agent SDK, consulta Gestione degli errori.

Agent would be spawned with zero tools

Nessuna voce nell’elenco tools del subagent corrispondeva a uno strumento utilizzabile, quindi Claude Code si è rifiutato di avviare il subagent: senza strumenti, non avrebbe potuto agire. Il messaggio raggruppa le tue voci in base a cosa è andato storto:
  • Non riconosciuta: la voce non corrisponde a nessun nome di strumento, di solito per un errore di battitura come Grpe invece di Grep.
  • Non disponibile per i subagent: la voce nomina uno strumento reale che i subagent non possono usare. I subagent in background mantengono un insieme più ridotto di strumenti integrati, quindi una voce che solo un subagent in primo piano può usare finisce qui quando il subagent verrebbe eseguito in background, che è il comportamento predefinito. Se elenchi Agent, il messaggio lo riporta invece nel gruppo successivo.
  • Nessuno strumento corrispondente in questa sessione: la voce è valida ma al momento nessuno strumento della sessione corrente le corrisponde, come mcp__github__* senza alcun server MCP di GitHub connesso, oppure Agent per un subagent che ha raggiunto il limite di profondità.
Omettere il campo tools non provoca mai questo rifiuto. Se lasci vuoto l’elenco tools, o se disallowedTools ne rimuove tutte le voci, Claude Code salta anch’esso il rifiuto e avvia il subagent senza strumenti. Prima della v2.1.208, il subagent veniva avviato senza strumenti e poteva restituire un risultato vuoto o confuso.
Cosa fare:
  • Correggi ogni voce indicata dall’errore confrontandola con gli strumenti disponibili per i subagent
  • Rimuovi le voci relative a strumenti che la sessione non ha, come gli strumenti MCP di un server non connesso
  • Se la voce indica un server MCP connesso, confronta la voce con il nome di quel server così come lo scrivono i nomi degli strumenti del server, ad esempio reports__v2 in mcp__reports__v2__get_totals. Per quel server, scrivi mcp__reports__v2__*, ovvero mcp__ seguito dal nome completo e da __*. Con la forma più breve mcp__reports, che indica un server chiamato reports, il subagent non riceve nessuno degli strumenti di reports__v2
  • Per uno strumento che i subagent in background escludono, come CronCreate, rimuovi la voce
  • Per mantenere invece uno strumento come CronCreate, lascia che Claude attenda il subagent, poiché un subagent che Claude attende viene eseguito in primo piano e mantiene lo strumento. Se la definizione imposta background: true, rimuovi prima quel campo, perché mantiene il subagent in background
  • Elimina il campo tools invece di elencare gli strumenti per dare al subagent ogni strumento disponibile per i subagent
  • Per un elenco tools che contiene solo Agent, aumenta il limite di profondità oppure assegna all’agente almeno un altro strumento: Claude Code nega Agent a quel limite, quindi un elenco che non contiene nient’altro si risolve in nessuno strumento

File is covered by a Read deny rule

Lo strumento Edit o Write è stato chiamato su un percorso corrispondente a una regola di negazione Read, anche per creare un nuovo file in quel percorso. Entrambi gli strumenti modificano contenuti che Claude deve poter rileggere, quindi Claude Code rifiuta la chiamata prima di qualsiasi accesso al file. NotebookEdit non è coperto dalle regole di negazione Read. Prima della v2.1.228, la regola bloccava solo lo strumento Edit, e prima della v2.1.208, solo una regola di negazione Edit bloccava le modifiche.
Quando Claude Code rifiuta lo strumento Write, il messaggio termina invece con and cannot be written. Cosa fare:
  • Se Claude deve poter modificare il file, rimuovi o restringi la regola di negazione Read in /permissions o nelle impostazioni
  • Se il file deve rimanere intatto, mantieni la regola e aggiungi una regola di negazione Edit per lo stesso percorso per bloccare anche lo strumento NotebookEdit

Path cannot contain null bytes

L’argomento percorso o pattern di una chiamata a uno strumento per i file conteneva un byte nullo, che i file system e gli strumenti di ricerca non possono accettare. Read, Write, Edit, NotebookEdit, Glob e Grep effettuano questo controllo, e il messaggio indica lo strumento e l’argomento:
La chiamata allo strumento fallisce, Claude vede l’errore e il turno prosegue. Cosa fare:
  • Nulla da parte tua: l’errore viene restituito a Claude come risultato dello strumento, e il messaggio stesso dice a Claude di rimuovere il byte nullo e riprovare
Prima della v2.1.281, un byte nullo in un percorso di Read, Write, Edit o NotebookEdit terminava l’intero turno con un errore che indicava Path contains null bytes, e lo strumento non veniva mai eseguito.

subagent_type is required

Claude ha chiamato lo strumento Agent senza un subagent_type, e questa sessione non ha alcun subagent general-purpose da usare come alternativa. Questo accade in due configurazioni: Cosa fare:
  • Di solito nulla: il messaggio elenca i subagent di cui la sessione dispone, quindi Claude può riprovare con uno di essi
  • Se Claude continua a fallire, aggiungi general-purpose all’allowlist tools: Agent(...), oppure rimuovi l’impostazione di CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS
Prima della v2.1.235, la stessa chiamata falliva con Agent type 'general-purpose' not found.

L’indice della memoria supera il limite di lettura

Claude ha scritto nell’indice MEMORY.md della memoria automatica lasciandolo oltre uno dei suoi limiti di lettura: 200 righe o 25KB. La scrittura è riuscita, ma all’avvio di una sessione vengono caricate solo le prime 200 righe o i primi 25KB, a seconda di quale limite si raggiunge per primo, quindi tutto ciò che supera il limite viene scartato ogni volta che l’indice viene letto. Prima della v2.1.210, un indice oltre il limite veniva troncato silenziosamente al caricamento successivo senza alcun segnale al momento della scrittura.
Ai fini dei limiti conta solo il contenuto che viene caricato. Il frontmatter YAML e i commenti HTML a livello di blocco vengono rimossi prima del caricamento dell’indice, quindi sono esclusi dalla misurazione. Prima della v2.1.211, Claude Code misurava il file grezzo, e il frontmatter o i commenti potevano provocare questo errore anche quando il contenuto caricato rientrava nei limiti. Claude Code consegna l’errore a Claude dopo la scrittura invece di mostrarlo come banner nel tuo terminale, quindi potresti notarlo solo nella trascrizione. Quando la scrittura di Claude porta il file vicino a un limite senza superarlo, Claude Code restituisce, invece di questo errore, un promemoria più blando per compattare l’indice. Cosa fare:
  • Lascia che Claude riscriva MEMORY.md, o chiediglielo: una riga per voce, sposta i dettagli nei file tematici e unisci o elimina le voci obsolete
  • Per ridurre tu stesso l’indice, consulta Verificare e modificare la memoria

Il pattern di pkill corrisponde al processo di Claude Code

Un comando pkill in una chiamata allo strumento Bash ha usato un pattern, tipicamente con -f, che corrisponde al processo stesso di Claude Code, quindi Claude Code rifiuta il comando invece di lasciargli terminare la sessione. Claude Code verifica il pattern con pgrep prima di eseguire pkill e rifiuta quando il proprio ID di processo compare nel risultato. Il controllo viene eseguito solo su Linux; su macOS, pkill viene eseguito senza modifiche. Prima della v2.1.214, il comando veniva eseguito, e un pattern corrispondente terminava la sessione di Claude Code a metà turno.
Il rifiuto compare nel risultato dello strumento Bash invece che come banner nel tuo terminale, e di solito Claude corregge il comando da solo. Cosa fare:
  • Restringi il pattern in modo che corrisponda solo al processo desiderato, ad esempio il percorso completo del binario di destinazione invece di una breve sottostringa
  • Per arrestare i processi avviati dalla shell corrente, usa pkill -P $$ con il pattern, che limita la corrispondenza ai processi figli della shell stessa

Failed to write to a teammate’s inbox

Claude Code non è riuscito a scrivere un messaggio nel file della casella di posta di un compagno di squadra in ~/.claude/teams/{team-name}/inboxes/, quindi il destinatario non ha ricevuto nulla. La scrittura fallisce quando Claude Code non riesce a creare o aggiornare il file, ad esempio perché il disco è pieno, la directory non è scrivibile o un altro agente mantiene il lock della casella di posta troppo a lungo. Prima della v2.1.224, Claude Code segnalava il messaggio come inviato anche quando la scrittura falliva. L’errore compare nel risultato dello strumento dell’agente mittente invece che come banner nel tuo terminale, e il suo testo dice a Claude di riprovare:
I messaggi strutturati del protocollo del team di agenti falliscono allo stesso modo, e l’errore indica il messaggio non consegnato: quando Claude Code non riesce a scrivere un’approvazione del piano, un rifiuto del piano, una richiesta di arresto o un rifiuto dell’arresto, l’errore riporta Failed to write the <message> to <name>'s inbox — nothing was sent. La plan approval in quell’elenco è la decisione del lead che approva il piano di un compagno di squadra; l’invio del piano da parte del compagno di squadra è il messaggio separato plan approval request. Quel messaggio e altri due messaggi del protocollo hanno un proprio testo e una propria conseguenza:
  • Failed to write the plan approval request to the lead's inbox — plan not submitted; try again: il piano del compagno di squadra non ha mai raggiunto il lead, e il compagno di squadra rimane in plan mode fino a un nuovo invio riuscito
  • The permission request could not be delivered to the team lead (mailbox write failed): la richiesta di permesso del compagno di squadra non ha mai raggiunto il lead, quindi nessuno ha approvato la chiamata allo strumento
  • The confirmation could not be written to team-lead's inbox.: l’approvazione dell’arresto in sé ha avuto effetto e il compagno di squadra termina; manca solo la conferma al lead
Quando sei tu a inviare un messaggio a un compagno di squadra, digitando @name seguito dal messaggio nella sessione del lead, lo stesso errore compare come notifica, Couldn't write to @name's inbox — message not sent. Try again., e Claude Code mantiene il tuo testo nella casella del prompt così puoi inviarlo di nuovo. Cosa fare:
  • Chiedi al mittente di inviare di nuovo il messaggio; la contesa per il lock della casella di posta è temporanea e si risolve con un nuovo tentativo
  • Controlla lo spazio libero su disco e verifica che ~/.claude/teams e i file al suo interno siano scrivibili dal tuo utente

La definizione dell’agente del compagno di squadra non è stata ripristinata

Claude ha inviato un messaggio a un compagno di squadra arrestato di un team di agenti, e Claude Code lo ha riattivato senza riapplicare la definizione del subagent da cui era stato generato. L’avviso segue il resoconto della ripresa nel risultato dello strumento dell’agente mittente e indica il motivo. Quando il file di definizione proviene da una cartella senza fiducia salvata, riporta:
Il controllo si applica a una definizione nella directory .claude/agents/ del progetto o di una directory --add-dir, e accettare la finestra di dialogo di fiducia per una cartella padre non è sufficiente. Cosa fare:
  • Esegui claude nella cartella indicata dal log di debug e accetta la finestra di dialogo di fiducia. La definizione viene riapplicata la prossima volta che Claude Code riattiva il compagno di squadra; non devi riavviare la sessione del lead
  • Oppure imposta la voce hasTrustDialogAccepted su true in ~/.claude.json, usando esattamente la chiave projects["<path>"] stampata dal log di debug

Message too large for cross-session delivery

Il messaggio tra sessioni di Claude verso un’altra delle tue sessioni su questa macchina era troppo lungo per essere inviato. Claude Code lo ha rifiutato, e la sessione ricevente non ha ricevuto nulla. Il rifiuto compare nel risultato dello strumento della sessione mittente, non come banner nel tuo terminale. Indica entrambe le dimensioni e come far rientrare il messaggio nel limite:
Inviare di nuovo lo stesso testo fallisce allo stesso modo. Cosa fare:
  • Chiedi a Claude di riassumere il messaggio, oppure di mettere il contenuto voluminoso in un file e inviare il percorso del file
  • Chiedi a Claude di suddividere il contenuto in più messaggi più brevi
Prima della v2.1.235, Claude Code segnalava come inviato un messaggio troppo grande. La sessione ricevente lo scartava senza leggerlo.

Too many messages to this session just now

Claude ha inviato una rapida raffica di messaggi tra sessioni a una delle tue sessioni su questa macchina, e la raffica ha raggiunto quanto la casella di posta di quella sessione accetta. Claude Code ha rifiutato l’invio successivo, e la sessione ricevente non ne ha ricevuto nulla. Il rifiuto compare nel risultato dello strumento della sessione mittente, non come banner nel tuo terminale:
Cosa fare:
  • Di solito nulla: Claude raggruppa il contenuto rimanente in un unico messaggio, oppure attende prima di inviarne altri
  • Se sei stato tu a sollecitare la raffica, chiedi a Claude di combinare ciò che resta in un unico messaggio
Prima della v2.1.236, Claude Code segnalava questi invii come riusciti. La sessione ricevente li scartava senza leggerli.

Cross-session message was dropped at the recipient session’s inbox

Claude ha inviato un messaggio tra sessioni a un’altra delle tue sessioni su questa macchina, e la casella di posta di quella sessione lo ha scartato prima che Claude in quella sessione lo leggesse. La riga indica il destinatario e, quando il destinatario ha fornito un motivo, aggiunge il motivo dopo un trattino:
Una sola riga può riguardare più messaggi scartati. In tal caso inizia al plurale, ad esempio Cross-session messages (12) were dropped. Per scoprire a quale sessione appartiene un indirizzo, confrontalo con la riga Peer address che /status mostra in ciascuna sessione. Dopo il trattino, la riga riporta uno o più di questi motivi:
  • its queue of undelivered peer messages was full: il destinatario conteneva già tanti messaggi non consegnati provenienti da altre sessioni quanti ne consente la sua coda
  • you sent faster than that session accepts: i messaggi della sessione mittente sono arrivati più velocemente di quanto il destinatario accetti da un singolo mittente
  • it repeated your previous message: il messaggio era identico a uno che la sessione mittente aveva inviato a questo destinatario poco prima
  • a relay loop between sessions was cut: il messaggio proseguiva una catena di sessioni che si scambiavano messaggi, e la catena era passata troppe volte per il destinatario o era diventata troppo lunga
Cosa fare:
  • Presumi che il destinatario non abbia mai visto i messaggi scartati. Claude Code dice lo stesso a Claude, e gli dice di includere tutto ciò che è ancora rilevante in un unico messaggio successivo invece di inviare di nuovo subito
  • Se le tue sessioni si inviano aggiornamenti frequenti, chiedi a Claude di inviare messaggi meno numerosi e più corposi, come un unico resoconto quando una sessione termina il proprio lavoro
  • Per a relay loop between sessions was cut, digita tu stesso l’istruzione successiva in una delle sessioni. Un messaggio che Claude invia in risposta a un tuo prompt avvia una nuova catena
Prima della v2.1.238, la sessione mittente non riceveva alcuna segnalazione quando la casella di posta del destinatario scartava un messaggio.

Refusing to send a cross-session message

Prima di scrivere un messaggio tra sessioni verso un’altra delle tue sessioni su questa macchina, Claude Code verifica che il socket della casella di posta della sessione di destinazione sia l’endpoint a cui il messaggio era indirizzato. Quando un controllo fallisce, Claude Code rifiuta l’invio nella sessione mittente, e la sessione di destinazione non riceve nulla. Per un messaggio inviato da Claude, il rifiuto compare nel risultato dello strumento della sessione mittente:
Il testo dopo Refusing to send: indica il controllo non superato:
  • reply target is a symlink: nel percorso del socket della sessione di destinazione si trova un collegamento simbolico. Claude Code non consegna attraverso di esso, perché un collegamento in quel punto potrebbe reindirizzare il messaggio verso un endpoint che la sessione di destinazione non ha creato.
  • cannot vet reply target: Claude Code non è riuscito affatto a ispezionare il percorso di destinazione, ad esempio perché la lettura è fallita con un errore di permesso.
Cosa fare:
  • Di solito nulla: i controlli impediscono a un messaggio di raggiungere un endpoint diverso dalla sessione a cui era indirizzato, e non è stato inviato nulla
  • Se reply target is a symlink si ripete per una sessione, verifica cosa ha creato un collegamento nel percorso del socket di quella sessione, mostrato nel suo /status sotto Peer address
Claude Code controlla le regole di permesso di un percorso di file, poi conferma di nuovo quella risoluzione quando lo strumento apre il file o avvia la ricerca. Quando non riesce a confermare che il percorso porti ancora alla posizione approvata dal controllo, Claude Code rifiuta l’operazione invece di seguirlo. Il rifiuto compare nel risultato dello strumento:
Ogni rifiuto indica il proprio motivo:
  • its symlink resolution changed after permission was checked: un collegamento simbolico lungo il percorso, o nella radice di una ricerca Grep o Glob, è stato sostituito tra il controllo dei permessi e l’operazione. In un rifiuto di lettura, la frase tra parentesi indica quale confronto è fallito.
  • its parent-directory symlink resolution changed after permission was checked: una directory attraversata dal percorso di scrittura non si risolve più nella posizione approvata
  • where it leads on disk could not be determined (a link on the way could not be examined, or the links do not resolve): Claude Code non è riuscito a seguire il percorso fino a una posizione finale su disco, ad esempio perché i collegamenti simbolici lungo di esso formano un ciclo
  • it is a symbolic link. Write to the link's target path instead: nella posizione di scrittura richiesta si trova essa stessa un collegamento simbolico, ad esempio un CLAUDE.md che è un collegamento simbolico ad AGENTS.md; il messaggio indirizza Claude verso la destinazione del collegamento
  • Refusing to write through symlink: <path>. Resolve the symlink and pass the real target path explicitly.: la stessa condizione rilevata quando un altro processo di scrittura apre il file, come una scrittura su un .mcp.json che è un collegamento simbolico
  • Refusing to write into symlinked directory: <path>: la directory che contiene il file è essa stessa un collegamento simbolico, ad esempio la directory .claude/ di un progetto collegata a un’altra posizione
  • a path one of its Read deny rules is written through changed while the search was being prepared. Retry.: una regola di negazione Read per la ricerca indica un percorso che passa attraverso un collegamento simbolico, e quel collegamento è cambiato mentre Claude Code preparava la ricerca
  • it could not be opened (EACCES) — it is unreadable, or is being replaced concurrently.: la radice della ricerca esiste ma non è stato possibile aprirla; il codice tra parentesi è l’errore del sistema operativo
  • its permission check expired before it ran (too many concurrent file operations). Retry.: Claude Code ha rimosso il record di approvazione a causa di molte operazioni simultanee sui file prima che lo strumento lo usasse; riprovare esegue un nuovo controllo dei permessi
  • ripgrep was found only by name on PATH, and a search outside the working directory cannot apply your Read deny rules in that configuration: Claude Code non è riuscito a risolvere il binario rg in un percorso assoluto, quindi rifiuta le ricerche al di fuori della directory di lavoro invece di eseguirne una non coperta dalle tue regole di negazione
Cosa fare:
  • Di solito nulla: il rifiuto raggiunge Claude come risultato dello strumento, e l’operazione rifiutata non viene eseguita
  • Se un rifiuto relativo a un collegamento simbolico si ripete su un percorso, individua cosa continua a riscrivere un collegamento in quel punto, come uno strumento di build o un file watcher, oppure chiedi a Claude di usare il percorso risolto del file invece di quello collegato
  • Se questo rifiuto compare per ogni file mentre Claude Code è in esecuzione su Windows all’interno di un AppContainer o di una sandbox con token limitato, aggiorna alla v2.1.265 o successiva
  • Se su macOS compare un rifiuto di lettura per un file che nessuno sta riscrivendo, come uno screenshot trascinato nel prompt, aggiorna alla v2.1.273 o successiva
  • Per il rifiuto relativo a ripgrep, installa ripgrep con il tuo gestore di pacchetti in modo che rg si risolva in un percorso assoluto nel PATH, oppure limita le ricerche alla directory di lavoro
Prima della v2.1.251, Claude Code ricontrollava la risoluzione di un percorso solo per le scritture di file, quindi un collegamento sostituito dopo il controllo dei permessi poteva reindirizzare una lettura o una ricerca verso una posizione diversa senza alcun messaggio. Tra questi, solo i rifiuti di scrittura relativi alla directory padre, alla scrittura attraverso un collegamento simbolico e alla directory collegata compaiono nelle versioni precedenti. Prima della v2.1.280, il rifiuto where it leads on disk could not be determined non compariva.

Task output swap refused

Claude Code salva l’output di ogni comando Bash in un file all’interno della propria directory temporanea. Ogni volta che apre uno di questi file, verifica che il percorso porti ancora al file che ha creato, senza alcun collegamento simbolico, hard link aggiuntivo o directory spostata che lo reindirizzi. Questo messaggio indica che il controllo è fallito, quindi Claude Code ha rifiutato l’operazione invece di scrivere o leggere l’output attraverso quel percorso. Il messaggio compare nel risultato dello strumento Bash:
Il testo tra parentesi indica il controllo non superato. Motivi come output symlink was re-pointed, output file identity changed e not a regular file segnalano tutti la stessa condizione: qualcosa nel percorso di output o lungo di esso non è più il file creato da Claude Code. Solo alcuni motivi includono una frase To recover:. Se il controllo fallisce mentre un comando è ancora in esecuzione, Claude Code arresta il comando, e il suo risultato riporta:
Cosa fare:
  • Aggiorna alla v2.1.260 o successiva. Le versioni precedenti a volte mostravano questo messaggio anche quando non era presente alcun collegamento o directory spostata
  • Riavvia Claude Code con CLAUDE_CODE_TMPDIR impostata su una nuova directory
  • Oppure controlla la directory del tuo progetto all’interno della directory temporanea di Claude Code, /private/tmp/claude-501/-Users-you-my-project nel messaggio di esempio. Se quel percorso è un collegamento simbolico, o una directory che non dovrebbe trovarsi lì, rimuovi il collegamento o la directory stessi invece della destinazione del collegamento, e riavvia Claude Code
  • Se il rifiuto si ripete, un processo sta sostituendo, collegando o rimuovendo voci nella directory temporanea di Claude Code mentre la sessione è in esecuzione. Imposta CLAUDE_CODE_TMPDIR su una directory non gestita da nient’altro e riavvia

Quota del disco o file system temporaneo pieni

Claude Code salva l’output di ogni comando Bash e PowerShell in un file all’interno della propria directory temporanea. Quando un comando termina con un codice diverso da zero e senza alcun output, Claude Code verifica se il file system che contiene quel file ha esaurito lo spazio o gli inode, oppure se la tua quota del disco su di esso è esaurita. In tal caso, nel risultato del comando compare una diagnostica al posto dell’output vuoto:
Il messaggio indica cosa si è esaurito:
  • Your disk quota is full ... (EDQUOT): la tua quota personale su quel file system è esaurita. Una quota può essere piena anche quando il file system mostra ancora spazio libero
  • The filesystem with Claude Code's temp directory ..., or your disk quota on it, is full (ENOSPC): il file system, o la tua quota su di esso, non ha più spazio disponibile
  • Command output was lost: the temp filesystem at ... is full oppure ... is out of inodes: il file system non ha quasi più spazio libero, oppure sta esaurendo gli inode
Cosa fare:
  • Elimina i file che non ti servono più sul file system che contiene la directory temporanea di Claude Code. Per EDQUOT, elimina i file che contano ai fini della tua quota personale. Per out of inodes, elimina molti file invece di pochi file grandi, poiché ogni file occupa un inode indipendentemente dalla sua dimensione
  • Oppure riavvia Claude Code con CLAUDE_CODE_TMPDIR impostata su una directory in un file system con spazio disponibile
  • Poi chiedi a Claude di eseguire di nuovo il comando. L’output che aveva stampato è andato perso, non troncato

File is not valid UTF-8

Claude ha usato lo strumento Edit o NotebookEdit su un file i cui byte non si decodificano come UTF-8, e Claude Code ha rifiutato la modifica. Non è stato scritto nulla, quindi il file è rimasto com’era. Questi strumenti salvano l’intero file come UTF-8, il che avrebbe trasformato ogni byte che non riuscivano a decodificare nel carattere di sostituzione U+FFFD. Il messaggio compare nel risultato dello strumento:
Anche un file che dovrebbe essere UTF-8 riceve questo messaggio quando contiene anche una sola sequenza di byte non valida, perché il controllo riguarda i byte del file nel loro insieme. Cosa fare:
  • Per mantenere il file nella sua codifica attuale, lascia che Claude apporti la modifica con un comando shell che legge e scrive il file in quella codifica, come gli indica il messaggio
  • Per continuare a modificare il file con lo strumento Edit, convertilo in UTF-8, oppure correggi i byte non validi in un file che dovrebbe essere UTF-8, poi chiedi di nuovo a Claude di apportare la modifica
Prima della v2.1.296, Edit e NotebookEdit applicavano una modifica di questo tipo e salvavano ogni byte che non riuscivano a decodificare come U+FFFD. Su quelle versioni, aggiorna Claude Code.

The source file is not valid UTF-8 text

Claude ha tentato di pubblicare un artefatto da un file i cui byte non si decodificano come testo, o il cui testo contiene già il carattere di sostituzione U+FFFD, quindi Claude Code ha rifiutato la pubblicazione prima di caricare qualsiasi cosa. Il messaggio compare nel risultato dello strumento Artifact e indica la prima posizione da correggere:
Claude Code decodifica il file come UTF-8, oppure come UTF-16 quando inizia con un byte-order mark UTF-16 little-endian. Quando un file UTF-16 di questo tipo non si decodifica, il primo messaggio indica UTF-16 e ti dice comunque di riscrivere il file come UTF-8. Quando altre posizioni seguono quella indicata, il messaggio aggiunge un conteggio come (+2 more) dopo la posizione. Cosa fare:
  • Di solito nulla: Claude riscrive il file e lo pubblica di nuovo
  • Se il file è uno che hai scritto o esportato tu, salvalo di nuovo come UTF-8 e sostituisci ogni U+FFFD con il carattere perso da una modifica, un incolla o una conversione precedente
  • Per mostrare intenzionalmente un U+FFFD nella pagina, scrivilo come &#xFFFD; nell’HTML invece del carattere letterale
Prima della v2.1.267, Claude Code caricava un file di questo tipo senza controllarlo, ed era invece il server a rifiutare la pubblicazione.

Not published: that file is on a network share

Claude ha tentato di pubblicare un artefatto da un file in un percorso che indica un host di rete:
  • Su Windows, un percorso \\server\share che non si trova sotto un’unità di rete mappata che hai passato all’avvio con --add-dir
  • Su macOS o Linux, un percorso di automount come /net/<host>/page.html
La risoluzione di un percorso di questo tipo contatta l’host indicato, e su Windows quel contatto può inviare all’host le tue credenziali. Claude Code rifiuta di pubblicare il file e non lo legge. Il rifiuto compare nel risultato dello strumento Artifact:
Cosa fare:
  • Nulla, se non ti serve esattamente quel file: il messaggio dice a Claude di pubblicare invece un file dalle cartelle della sessione
  • Per pubblicare esattamente quel file, copialo in una cartella su un disco locale e chiedi di nuovo
  • Su Windows, per consentire a Claude di pubblicare direttamente dalla condivisione, mappala su una lettera di unità e passa l’unità quando avvii Claude Code. In PowerShell, ad esempio, esegui net use Z: \\server\share e poi claude --add-dir Z:\. Claude potrà quindi pubblicare file da quell’unità. Aggiungere l’unità durante la sessione con /add-dir non è sufficiente.
  • Su macOS o Linux, monta la condivisione in una directory, ad esempio una sotto /mnt o /Volumes, e pubblica da quel percorso invece che dal percorso di automount

Lettura di un file locale al di fuori delle cartelle connesse in una sessione Cowork

In una sessione Cowork in esecuzione sulla tua macchina nell’app Claude Desktop, Claude ha indicato un file locale per un artefatto. Claude Code non è riuscito a confermare che il file sia un file semplice all’interno delle cartelle connesse della sessione: il percorso si trova al di fuori di quelle cartelle, passa attraverso un collegamento simbolico o è scritto in un modo che può indicare un file diverso da quello che sembra. La lettura di un file di questo tipo richiede la tua approvazione, e in una sessione che non può mostrarti la scheda di approvazione, come una impostata per saltare tutte le approvazioni, Claude Code rifiuta la lettura. Il rifiuto compare nel risultato dello strumento Artifact; quando non è stato possibile esaminare affatto il file, indica invece quell’errore:
Cosa fare:
  • Di solito nulla: il messaggio dice a Claude di usare invece un file semplice all’interno delle cartelle connesse
  • Per inserire esattamente quel file nell’artefatto, copialo in una delle cartelle connesse della sessione come file normale, non come collegamento simbolico, e chiedi di nuovo

WebFetch cannot fetch localhost

Claude ha chiamato WebFetch con un URL il cui hostname non contiene un punto, come http://localhost:3000 o un semplice nome intranet come http://wiki/. WebFetch rifiuta questi URL prima di effettuare qualsiasi richiesta:
Cosa fare:
  • Di solito nulla: il messaggio indirizza Claude verso curl tramite lo strumento Bash, che può raggiungere server locali e intranet
Prima della v2.1.268, WebFetch segnalava questi URL con un generico errore Invalid URL.

Controllo di sicurezza del dominio di WebFetch non riuscito

Prima di recuperare un URL, WebFetch invia l’hostname dell’URL ad api.anthropic.com per verificarlo rispetto alla blocklist di sicurezza dei domini di Anthropic. Se il controllo non può essere completato, WebFetch non può confermare che il dominio sia sicuro, quindi non recupera la pagina e il risultato dello strumento riporta invece uno di questi messaggi:
  • rate-limited: l’endpoint del controllo ha risposto con HTTP 429. Il messaggio dice a Claude di proseguire senza la pagina e di riprovare al massimo una volta più tardi. Claude Code non memorizza nella cache un controllo non riuscito, quindi un recupero successivo di quel dominio esegue di nuovo il controllo. Se le sessioni sulla tua rete incorrono spesso in questo rate limit, puoi saltare il controllo con skipWebFetchPreflight: true nelle impostazioni.
  • Unable to verify: la richiesta di controllo è fallita, è scaduta o ha ricevuto un altro stato di errore. Se la tua rete blocca api.anthropic.com, aggiungi quel dominio all’allowlist, oppure salta il controllo con skipWebFetchPreflight: true nelle impostazioni.
Prima della v2.1.286, il messaggio di rate limit riportava The safety check for domain example.com is temporarily rate-limited (too many domain checks from this network). Retry after about a minute; retrying sooner will fail the same way.. Prima della v2.1.285, un controllo soggetto a rate limit veniva segnalato invece con il messaggio Unable to verify.

Errori di sessione in background

Le sessioni in background vengono eseguite senza un terminale interattivo proprio, quindi i comandi che ne richiedono uno si comportano diversamente lì. Questi messaggi appaiono nella trascrizione di una sessione in background, nel terminale che si collega a una, nella sessione o shell da cui si invia, o, per le voci worktree-guard di seguito, in qualsiasi sessione isolata in un worktree o che esegue un subagent isolato da worktree; dove un messaggio è specifico di una superficie, la sua voce lo dice.

Comandi rifiutati in una sessione in background

I comandi che aprono una finestra di dialogo interattiva non possono farlo mentre nessun terminale è collegato a una sessione in background. /install-github-app, l’elenco delle impostazioni /mcp e le azioni di autenticazione nel menu del server MCP rispondono con un messaggio. Per /install-github-app e l’elenco delle impostazioni /mcp, la sessione appare anche sotto Needs input nella vista agente in modo che tu possa trovarla, collegarti ed eseguire di nuovo il comando. Mentre un terminale è collegato, questi comandi funzionano normalmente. Prima della v2.1.216, la sessione non appariva sotto Needs input dopo il rifiuto di /install-github-app o dell’elenco delle impostazioni /mcp. Dalla v2.1.213 alla v2.1.215, i comandi funzionavano ancora mentre un terminale era collegato, e il messaggio di rifiuto ti diceva di collegarti ed eseguire di nuovo il comando. Dalla v2.1.208 alla v2.1.212, Claude Code li rifiutava anche mentre un terminale era collegato, con un messaggio come Can't open MCP settings in a background session; su quelle versioni, esegui invece il comando da una normale sessione claude, o esegui l’upgrade. Prima della v2.1.208, aprivano la loro finestra di dialogo all’interno della sessione in background. Solo nella v2.1.208, Claude Code ha anche rifiutato il selettore /model in una sessione in background, e /upgrade ha stampato l’URL di upgrade invece di aprire un browser. La formulazione nomina il comando. L’elenco delle impostazioni /mcp riporta:
Cosa fare:
  • Collegati alla sessione dalla vista agente e esegui di nuovo il comando
  • Oppure usa il modulo che il messaggio nomina, come /mcp reconnect <server>, /mcp enable, o /mcp disable, che funzionano senza collegarsi

Scrittura o comando bloccato perché il percorso non può essere risolto in modo sicuro

Claude ha indirizzato un file o una directory di lavoro attraverso un’ortografia che la guardia di isolamento worktree non può risolvere in un’unica posizione verificabile. La guardia controlla le scritture e le directory di lavoro dei comandi in qualsiasi sessione isolata in un worktree, interattiva o in background, e in subagent isolati da worktree. Risolve i collegamenti simbolici prima di controllare che l’operazione non raggiunga il checkout condiviso, e quando la risoluzione fallisce, blocca l’operazione piuttosto che lasciarla atterrare lì. Il messaggio nomina le forme di percorso che rifiuta e come riprovare:
Un comando bloccato riporta la stessa causa per la sua directory di lavoro e termina con re-run the command from its direct symlink-free path. Prima della v2.1.217, la guardia confrontava le ortografie dei percorsi senza risolvere i collegamenti simbolici, quindi queste ortografie non erano bloccate e una scrittura instradata attraverso un collegamento simbolico poteva atterrare nel checkout condiviso. Cosa fare:
  • Di solito nulla: il messaggio completo va a Claude come errore dello strumento, e Claude riprova con il percorso diretto che nomina. Per una modifica di file bloccata, la vista della conversazione mostra solo una breve riga Error editing file; il messaggio completo appare nella vista della trascrizione, che apri con Ctrl+O. Un comando bloccato lo stampa nel suo output di comando.
  • Se il blocco si ripete sullo stesso file, il percorso probabilmente passa attraverso un collegamento simbolico sottoposto a commit il cui target contiene .., come docs/current -> ../README.md; chiedi a Claude di modificare il file target dal suo percorso reale invece che attraverso il link

Scrittura o comando bloccato perché il percorso nomina una posizione di rete

Claude ha indirizzato un file o una directory di lavoro attraverso un percorso che nomina un’unità che non è sulla tua macchina, una condivisione UNC come \\server\share\file o un percorso di automount /net, mentre il checkout della sessione è su un disco locale. La stessa guardia di isolamento worktree non può verificare che tale percorso rimanga fuori dal checkout condiviso, quindi blocca l’operazione. Isolare la sessione in un worktree non solleva il blocco. Il messaggio nomina la forma di percorso da usare invece:
Un comando bloccato riporta la stessa causa per la sua directory di lavoro e termina con re-run the command from its local, plainly-spelled path. Prima della v2.1.217, la guardia confrontava solo il testo del percorso, quindi indirizzare un file all’interno del checkout attraverso un percorso UNC o /net non era bloccato. Cosa fare:
  • Di solito nulla: Claude riprova con l’ortografia locale che il messaggio chiede

Comando bloccato dai controlli di isolamento worktree

Claude ha eseguito un comando Bash, PowerShell o Monitor in una sessione isolata in un worktree, e Claude Code l’ha rifiutato per uno di questi motivi:
  • Il comando verrebbe eseguito nel checkout principale o in un altro worktree. Il messaggio dice che la sua directory di lavoro resolved to the shared checkout o is in a different worktree.
  • Un comando Bash o Monitor punta git al checkout principale.
  • Claude Code non può verificare dal testo di un comando Bash o Monitor che qualsiasi git che il comando esegue rimanga all’interno del worktree. Un comando che non nomina mai git può comunque essere rifiutato per questo motivo, perché espandere un’indirezione di variabile come ${!name} o eseguire una sostituzione di funzione Bash come ${ command; } produce un valore in fase di esecuzione che può essere esso stesso un comando.
Il messaggio dice is isolated in the worktree <path>, but this command, seguito dal motivo, come un comando il cui testo Claude Code non è riuscito a verificare:
Cosa fare:
  • Git puntato al checkout principale, o testo del comando che non può essere verificato: nulla. Claude legge il messaggio e riscrive il comando nel modo che la sua frase finale chiede. Se un comando che hai chiesto continua ad essere rifiutato a causa di un’espansione nel suo testo, scrivi il valore contrassegnato letteralmente ed esegui git come suo proprio comando semplice dall’interno del worktree
  • Per agire sul checkout principale di proposito, esegui il comando tu stesso in un terminale al di fuori della sessione

This session has no saved transcript

Ti sei collegato a una sessione che hai spostato in background con ← o /background e che si è interrotta prima di eseguire un proprio turno. Claude Code non ha trovato la conversazione da cui l’hai spostata, quindi la sessione non ha nulla da riprendere. Il messaggio termina con il comando claude respawn per questa sessione:
Aprire la stessa riga della sessione nella vista agente mostra invece Press enter again to restart this session fresh sotto l’elenco, e un secondo Enter sulla riga riavvia la sessione con una conversazione vuota. Cosa fare:
  • Per avviare da zero la sessione interrotta, esegui claude respawn <id> con l’ID dal messaggio, o premi Enter due volte sulla sua riga nella vista agente
  • Se la sessione ha finito una risposta e vedi ancora questo rifiuto su una versione precedente alla v2.1.214, una cartella illeggibile in ~/.claude/projects potrebbe far sì che la scansione della trascrizione perda la conversazione salvata; aggiorna alla v2.1.214 o successiva, che tollera le cartelle illeggibili durante la scansione

This session is running in another terminal

Hai aperto la riga di una sessione interrotta nella vista agente, e la sua conversazione salvata è già aperta in un altro processo Claude Code attivo su questa macchina, quindi Claude Code rifiuta di avviare un secondo processo che scriverebbe sulla stessa trascrizione. Quale messaggio vedi dipende da cosa tiene la conversazione:
  • running in another terminal: un terminale tiene la conversazione, ad esempio uno in cui l’hai ripresa con claude --resume o /resume. La riga mostra anche Open in a terminal.
  • already open in another running Claude session: un altro processo Claude Code non interattivo la tiene, ad esempio un processo sessione in background per la stessa conversazione che non è ancora uscito.
Cosa fare:
  • Continua la conversazione nel processo che l’ha aperta, o esci da quel processo e apri di nuovo la riga
Prima della v2.1.248, esisteva solo il rifiuto already open in another running Claude session: una conversazione ripresa in un terminale non contava come aperta, e aprire la riga avviava un secondo processo Claude Code che scriveva sulla stessa conversazione.

This session’s saved conversation is no longer on disk

Hai aperto una sessione in background che è terminata mentre il servizio in background era spento, e la pulizia della trascrizione ha da allora rimosso la sua conversazione salvata, ad esempio dopo che la macchina è stata spenta per settimane. Aprire una tale riga normalmente riprende la sua conversazione salvata. Non avendo nulla da riprendere, Claude Code rifiuta piuttosto che rieseguire il prompt originale della sessione senza chiedere:
claude attach <id> stampa questo testo. Nella vista agente, il piè di pagina è più breve e termina con ctrl+x deletes the row. Cosa fare:
  • Esegui claude rm <id> per eliminare la riga. Quando uno dei casi mantenuti si applica, claude rm mantiene invece la riga e il worktree e nomina il motivo
  • Per eseguire di nuovo il prompt originale della sessione come una conversazione nuova, esegui claude respawn <id>
Prima della v2.1.248, aprire una tale riga rieseguiva il prompt originale della sessione invece di rifiutare, riportando in primo piano un compito vecchio di settimane.

Worktree has commits that are not pushed anywhere

Hai provato a eliminare una sessione in background il cui worktree contiene commit che Claude Code non può confermare siano salvati altrove. Claude Code mantiene il worktree e la riga della sessione piuttosto che distruggere i commit senza che tu li veda. claude rm nomina il branch e i commit non inviati con push, e dice come procedere:
Quando Claude Code non può riassumere i commit, la riga di dettaglio riporta invece The worktree has unpushed commits. Nella vista agente, la riga della sessione mostra not deleted con lo stesso motivo. I commit su un remote non bloccano l’eliminazione. Nemmeno i commit sulla copia locale del branch predefinito del tuo remote origin, purché quel branch sia estratto nel tuo checkout principale, la directory del repository stesso piuttosto che un worktree. Cosa fare:
  • Per mantenere i commit, esegui il push del branch del worktree, o esegui il merge nel branch predefinito estratto nel tuo checkout principale, quindi elimina di nuovo la sessione
  • Per scartare i commit, esegui il comando claude rm <id> --discard-unpushed che il messaggio ha stampato, o premi di nuovo Ctrl+X due volte sulla riga della sessione nella vista agente. Questo rimuove la sessione e il worktree insieme al suo branch, ai commit non inviati con push e a qualsiasi modifica non sottoposta a commit. Se il worktree ha ricevuto un commit dopo il rifiuto, Claude Code lo mantiene di nuovo e mostra lo stato aggiornato
  • Quando il messaggio dice che il worktree è anche registrato da un’altra sessione terminata, eliminare di nuovo non lo scarta: esegui il push dei commit, quindi elimina di nuovo la sessione
Prima della v2.1.268, claude rm metteva il riassunto dei commit sulla riga kept stessa. Quando claude rm non poteva riassumere i commit, la riga kept riportava worktree has commits that are not pushed anywhere al posto del riassunto. Prima della v2.1.260, il messaggio non nominava il branch o i commit, ed eliminare di nuovo era rifiutato allo stesso modo: eliminare la sessione senza eseguire il push significava rimuovere il worktree tu stesso con git worktree remove --force <path>, quindi eseguire di nuovo claude rm <id>. Prima della v2.1.248, il branch predefinito estratto nel tuo checkout principale non contava: un branch di cui avevi già eseguito il merge lì attivava ancora questo rifiuto fino a quando i suoi commit non raggiungevano un remote.

Terminal host process died

Il terminale di ogni sessione in background viene eseguito in un processo host sotto il servizio in background, e quel processo è morto mentre il servizio manteneva ancora la sua connessione, quindi la sessione non poteva essere raggiunta. Su Linux e WSL, il servizio in background controlla ogni processo host ogni pochi secondi, contrassegna la sessione come fallita quando il processo è uscito ma la sua connessione al servizio non si è mai chiusa, e mostra il motivo sulla sua riga nella vista agente:
Dalla shell, claude attach <id> riavvia una sessione già contrassegnata come fallita per un host morto, e altrimenti stampa il motivo ed esce:
La conversazione è salvata in entrambi i casi. Una riga che esegue un comando shell mostra invece terminal host process died — its output is gone; the command was not run again, e claude attach stampa This command's terminal host process died — its output is gone and the command was not run again. Claude Code non riesegue mai il comando per te. Cosa fare:
  • Nella vista agente, premi Enter sulla riga fallita; la sessione si riavvia su un nuovo processo host e la conversazione riprende
  • Dalla shell, esegui di nuovo claude attach <id>. Claude Code stampa Session <id>'s terminal host died — restarting it on a fresh one… e riapre la sessione
  • Non puoi riavviare una riga di comando shell in questo modo; invia di nuovo il comando per rieseguirlo
Prima della v2.1.247, un processo host morto poteva superare ogni controllo di vitalità che il servizio in background eseguiva, quindi aprire la sessione mostrava opening… · esc to cancel indefinitamente e claude attach <id> aspettava senza segnalare un errore.

Session isn’t responding

Hai aperto una sessione in background e il servizio in background ha accettato l’apertura, ma nessun output è arrivato per circa dieci secondi, quindi Claude Code conclude che il processo che trasmette il terminale della sessione non può fornire output, e termina il tentativo invece di aspettare. Nella vista agente, Claude Code offre un riavvio nel piè di pagina:
Dalla shell, claude attach <id> stampa il motivo ed esce:
Claude Code non riavvia mai per te una riga che esegue un comando shell, perché un riavvio rieseguirebbe il comando. Cosa fare:
  • Nella vista agente, premi di nuovo Enter sulla stessa riga. Claude Code interrompe il processo che non risponde e riavvia la sessione, e la conversazione riprende. Nulla viene interrotto senza quella seconda pressione
  • Dalla shell, esegui claude stop <id>, quindi claude attach <id>
  • Per una riga di comando shell, premi Ctrl+X nella vista agente o esegui claude stop <id> per interromperla; invia di nuovo il comando per rieseguirlo

Session was stopped while the respawn was in flight

Hai aperto una sessione in background il cui processo non era in esecuzione, e mentre Claude Code la stava riavviando, un altro processo Claude Code l’ha interrotta, ad esempio claude stop in un altro terminale. Claude Code mantiene la sessione interrotta:
Aprire una sessione che hai appena inviato, mentre il suo processo è ancora in avvio, attende invece il processo. Prima della v2.1.246, aprirla in quel momento poteva interromperla e mostrare questo messaggio. Cosa fare:
  • Se non hai interrotto la sessione, apri di nuovo la sua riga nella vista agente o esegui claude respawn <id> per riavviarla
  • Se l’hai interrotta tu stesso, non rimane nulla da fare: la sessione rimane interrotta

Agente della sessione non più disponibile

Hai ripreso una sessione che stava eseguendo un agente personalizzato, avviato con --agent o l’impostazione agent, e Claude Code non ha trovato un agente con quel nome. Cerca prima nella directory originale della sessione, quando hai concesso la fiducia a quel workspace, quindi nella directory da cui riprendi. La sessione riprende comunque, ma con gli strumenti predefiniti, quindi le restrizioni sugli strumenti dell’agente non si applicano più:
L’avviso nomina solo le directory che Claude Code ha cercato, e appare nella conversazione ripresa sia che tu risvegli una sessione in background, esegua /resume o claude --resume, o riprenda in modalità non interattiva, dove va anche a stderr. Le sessioni che usano --input-format stream-json non lo mostrano, perché l’Agent SDK fornisce gli agenti dopo l’avvio. Claude Code non salva il fallback nella sessione, quindi l’avviso si ripete a ogni ripresa finché non intervieni. L’agente claude integrato non attiva l’avviso, poiché ripiegare sul set di strumenti predefinito non cambia nulla per esso. Prima della v2.1.216, Claude Code continuava silenziosamente come l’agente predefinito, e la ricerca copriva solo la directory da cui riprendevi, quindi un agente con ambito di progetto andava perso a ogni ripresa da un’altra directory. Cosa fare:
  • Ricrea il file dell’agente in .claude/agents/<name>.md nel progetto della sessione, o in ~/.claude/agents/<name>.md per un agente personale, quindi riprendi di nuovo
  • Oppure riprendi con --agent <name> nominando un agente che esiste, per eseguire invece la sessione come quell’agente
  • Se l’agente ha ambito di progetto e non hai concesso la fiducia alla directory originale della sessione, esegui Claude Code lì una volta, accetta la finestra di dialogo di fiducia, quindi riprendi di nuovo

This session restarted after its next /loop wakeup was due

Un /loop autoregolato in una sessione in background si è interrotto. Il processo della sessione è terminato mentre il loop attendeva il suo prossimo risveglio, e quel risveglio è diventato dovuto prima che si avviasse il processo successivo della sessione. Il risveglio mancato non viene eseguito in ritardo. L’avviso indica di quanto il risveglio era in ritardo quando la sessione si è riavviata:
Prima della v2.1.295, in questa situazione il loop si interrompeva senza alcun avviso. Cosa fare:
  • Per continuare il loop, rispondi alla sessione e dillo, ad esempio keep the loop running. Claude legge l’avviso insieme alla tua risposta e può pianificare il prossimo risveglio
  • Se hai finito con il loop, non fare nulla. Si è già interrotto

Errori del launcher CLAUDE_CODE_PROCESS_WRAPPER

CLAUDE_CODE_PROCESS_WRAPPER è impostato, e il suo valore non può essere usato, quindi Claude Code rifiuta di avviare il processo interessato piuttosto che eseguirlo senza il launcher. I problemi di configurazione sono segnalati con un messaggio che inizia con il nome della variabile e dichiara il motivo, ad esempio:
Un launcher che si avvia ma esce senza sostituirsi con Claude Code fa fallire la sessione che stava avviando, e la riga della sessione nella vista agente riporta che il launcher must exec, not daemonize, seguito da qualsiasi cosa il launcher abbia stampato. Una sessione che non può avviarsi o raggiungere il servizio in background a causa del launcher riporta il problema del launcher come motivo all’interno di Couldn't reach the background service (...). Cosa fare:
  • Imposta la variabile sul percorso assoluto di un eseguibile che termina chiamando exec "$@". Vedi il contratto del launcher per il contratto completo
  • Controlla /status, che mostra il comando di avvio risolto nella sua voce Self-exec e avverte quando il servizio in background in esecuzione non corrisponde, o esegui claude daemon status da una shell
  • Dopo aver corretto il valore nel blocco env delle impostazioni, riavvia il servizio in background con claude daemon stop --any in modo che il prossimo invio ne avvii uno tramite il wrapper

EUNKNOWN quando si avvia una sessione in background

Windows ha rifiutato di avviare un programma con un codice di errore che non ha un nome standard, quindi l’errore emerge come EUNKNOWN. La causa abituale è una politica di restrizione del software, come Group Policy o AppLocker, che blocca il programma in fase di avvio. L’errore appare quando avvii una sessione in background con /background o claude --bg:
Su alcuni account il messaggio dice daemon al posto di background service. Su un’installazione npm, un EUNKNOWN che appare mentre npm install -g @anthropic-ai/claude-code sta sostituendo il binario ha la stessa causa di EACCES durante una reinstallazione e scompare quando riprovi dopo che l’installazione finisce. Claude Code avvia il servizio in background attraverso PowerShell in modo che il servizio sopravviva alla chiusura del terminale, usando PowerShell 7 quando è installato e Windows PowerShell 5.1 altrimenti. Quando nessuno dei due PowerShell può essere eseguito, Claude Code avvia invece il servizio direttamente, quindi una politica che blocca solo PowerShell non causa questo errore. Prima della v2.1.212, Claude Code usava solo Windows PowerShell 5.1 per avviare il servizio, quindi qualsiasi macchina dove Group Policy bloccava PowerShell 5.1 falliva con Couldn't start the session — EUNKNOWN: unknown error, uv_spawn, anche con PowerShell 7 installato. Cosa fare:
  • Se il messaggio riporta Couldn't start the session, aggiorna alla v2.1.212 o successiva. Sulle versioni precedenti puoi anche eseguire prima claude daemon run in un terminale separato, quindi avviare di nuovo la sessione in background. Quel comando esegue il servizio in background in primo piano nel terminale, quindi il servizio dura solo finché quel terminale rimane aperto.
  • Se un npm install stava sostituendo il binario, aspetta che finisca, quindi avvia di nuovo la sessione in background
  • Se l’errore appare sulla v2.1.212 o successiva mentre nessun npm install è in esecuzione, verifica con il tuo amministratore Windows se una politica di restrizione blocca l’eseguibile Claude Code
  • Se il servizio in background si interrompe quando chiudi il terminale, Claude Code l’ha avviato senza PowerShell. Installa PowerShell 7, o chiedi al tuo amministratore di sbloccare PowerShell, in modo che il servizio possa sopravvivere al terminale.

EACCES quando si avvia una sessione in background

Claude Code non poteva eseguire il suo stesso binario per avviare il servizio in background che ospita le sessioni in background. Su un’installazione npm, questo di solito significa che npm install -g @anthropic-ai/claude-code stava sostituendo il binario in quel momento, sia che l’abbia eseguito tu sia che l’abbia fatto l’auto-updater. L’errore appare quando apri una sessione dalla vista agente:
Quando avvii una sessione con /background o claude --bg, lo stesso motivo appare all’interno di Couldn't reach the background service (...). Durante la stessa finestra di reinstallazione l’errore può invece nominare un altro codice, come ENOENT o ENOEXEC, o EUNKNOWN o EPERM su Windows; un EUNKNOWN che persiste attraverso i nuovi tentativi ha una causa diversa. Su un’installazione npm, Claude Code aspetta che la reinstallazione finisca e riprova da solo: fino a dieci secondi, e fino a due minuti mentre un npm install di Claude Code è visibilmente ancora in esecuzione sulla macchina, il che copre un altro processo Claude Code che scarica un aggiornamento. Quando l’installazione dura più di quella attesa, l’errore nomina l’aggiornamento invece del semplice codice di errore:
Prima della v2.1.257, l’attesa si fermava a dieci secondi in ogni caso, quindi questo errore appariva mentre un altro processo Claude Code stava ancora scaricando un aggiornamento. Prima della v2.1.246, Claude Code falliva subito, senza aspettare. Cosa fare:
  • Aspetta alcuni secondi, quindi apri di nuovo la sessione o invia di nuovo. Quando il messaggio dice che Claude Code è in fase di aggiornamento, riprova dopo che l’aggiornamento finisce.
  • Se l’errore persiste mentre nessun npm install è in esecuzione, il tuo utente non può eseguire il binario installato. Controlla i suoi permessi e quelli della sua directory, o reinstalla Claude Code.

Il servizio in background è uscito prima di diventare raggiungibile

Il processo che Claude Code ha avviato come servizio in background è uscito prima di accettare connessioni, quindi Claude Code non poteva aprire la tua sessione. Quando il servizio ha stampato un errore prima di uscire, il motivo tra parentesi fornisce il codice di uscita o il segnale e la prima riga che il servizio ha stampato, che nomina cosa l’ha fermato:
Quando apri una sessione dalla vista agente, lo stesso motivo segue Couldn't start the background service —. Quando il servizio non ha stampato nulla prima di uscire, il messaggio dice invece nothing on stderr. Claude Code riporta l’errore con la riga di errore del servizio. Prima della v2.1.246, l’errore emergeva solo dopo un’attesa di 45 secondi, come background service did not become reachable within 45s, senza la riga di errore del servizio. Due motivi citati hanno cause note:
  • Error: claude native binary not installed.: un npm install stava sostituendo il binario Claude Code in quel momento, quindi il servizio ha eseguito invece il placeholder di npm. Riprova dopo che l’installazione finisce; se la riga persiste senza nessuna installazione in esecuzione, completa l’npm install. Prima della v2.1.257, un auto-aggiornamento npm su macOS produceva questo errore a ogni avvio durante la finestra di installazione.
  • nothing on stderr con codice di uscita 1, a ogni avvio, su Windows: daemon.lock nomina un processo a cui Claude Code non può né inviare segnali né dimostrare che sia terminato, quindi ogni nuovo servizio conclude che un altro detiene il lock ed esce. Un lock il cui scrittore Claude Code può dimostrare che sia terminato viene sostituito automaticamente e non produce questo errore. Quando l’errore si ripete a ogni avvio, elimina ~/.claude/daemon.lock, quindi apri di nuovo la sessione o invia di nuovo. Prima della v2.1.257, tale lock bloccava ogni avvio fino a quando non eliminavi il file.
Cosa fare:
  • Se il messaggio cita una riga, correggi quello che nomina, quindi apri di nuovo la sessione o invia di nuovo. Il prossimo tentativo avvia di nuovo il servizio
  • Esegui claude daemon status per controllare se un servizio è in esecuzione ora

La directory di lavoro non esiste più quando si avvia una sessione in background

La directory in cui hai avviato una sessione in background è stata rimossa mentre la sessione era in avvio. Claude Code non avvia la sessione, e il messaggio nomina la directory mancante:
Prima della v2.1.257, la sessione sembrava avviarsi e poi appariva nella vista agente come una riga fallita con lo stesso motivo. Prima della v2.1.281, questo messaggio appariva anche quando la directory era già scomparsa prima che avviassi la sessione. Quel caso riporta could not be resolved on disk. Cosa fare:
  • Ricrea la directory che il messaggio nomina, o invia da una directory che esiste, quindi riprova

Workspace non attendibile quando si invia una sessione in background

Hai avviato o riavviato una sessione in background in una directory a cui non hai concesso la fiducia, e la finestra di dialogo di fiducia del workspace non poteva apparire per chiedertelo. Claude Code non avvia la sessione:
Da un terminale nella directory della sessione stessa, lo stesso comando mostra invece la finestra di dialogo di fiducia e avvia la sessione una volta che accetti. Questo messaggio appare dove nessuna finestra di dialogo può apparire, come in uno script, o quando riavvii una sessione da una directory diversa dalla sua. Due varianti nominano una causa diversa:
  • The home directory is trusted one session at a time: la directory della sessione è la tua directory home. Claude Code non salva mai la fiducia per la directory home, quindi accettare la finestra di dialogo lì in una sessione precedente non conta.
  • <path> could not be resolved on disk: Claude Code non poteva trovare la directory della sessione su disco.
Prima della v2.1.286, su Windows, questo messaggio poteva apparire anche in una directory a cui avevi già concesso la fiducia, se il suo record di fiducia era stato salvato con il percorso in maiuscole/minuscole diverse. Aggiorna alla v2.1.286 o successiva. Cosa fare:
  • Esegui claude nella directory che il messaggio nomina e accetta la finestra di dialogo di fiducia, quindi esegui di nuovo il comando
  • Per il messaggio della directory home, esegui il comando da un terminale nella tua directory home in modo che la finestra di dialogo possa apparire, o avvia invece la sessione da una directory di progetto
  • Per il messaggio could not be resolved on disk, ricrea la directory, o avvia una nuova sessione da una directory che esiste

Errori del wrapper e dell’IDE

Questi errori provengono dal programma che ha avviato Claude Code per voi, come un’estensione IDE o un’applicazione Agent SDK, piuttosto che da Claude Code stesso.

Il processo Claude Code è uscito con codice N

Il processo claude sottostante è uscito con un codice diverso da zero. Il codice di uscita da solo non dice cosa è fallito: l’errore reale si trova nell’output del processo stesso, che il wrapper allega quando lo ha catturato e altrimenti mantiene nei suoi log.
Su Windows, la build nativa può uscire con codice 4294967295 subito dopo il completamento di un turno. Quando quell’uscita si verifica al confine di un turno, senza alcun messaggio in attesa e nessuna attività in background in esecuzione, l’estensione VS Code chiude la sessione silenziosamente invece di mostrare questo errore. Il vostro messaggio successivo riprende la conversazione. Prima della v2.1.273, l’estensione mostrava l’errore per quell’uscita ad ogni confine di turno, anche se nulla era andato perso. Cosa fare:
  • In VS Code, seguite il collegamento View output logs mostrato con l’errore per vedere il guasto sottostante
  • In un’applicazione Agent SDK, catturate l’errore intorno al vostro ciclo di messaggi. Le voci sotto Uscita del processo CLI coprono ciò che il vostro codice riceve in ogni linguaggio SDK.
  • Eseguite claude in un terminale nello stesso progetto. Il guasto di solito si riproduce lì con il suo messaggio di errore reale, che potete quindi cercare su questa pagina.
  • Eseguite claude doctor in un terminale per verificare l’installazione e la configurazione

Could not locate the Claude CLI on PATH

L’estensione VS Code mostra questo errore su Windows quando aprite Claude Code nel terminale integrato, la shell del terminale è PowerShell e l’estensione non riesce a trovare l’eseguibile claude installato su PATH. L’estensione si rifiuta di avviare Claude Code finché non trova il claude installato su PATH.
Cosa fare:
  • Aprite una nuova finestra PowerShell al di fuori di VS Code ed eseguite where.exe claude. Se non stampa un percorso, la CLI non è su PATH: aggiungete la sua directory di installazione seguendo Verify your PATH. Se stampa un percorso, la voce proviene dal vostro profilo PowerShell o da una modifica di PATH che VS Code non ha ancora raccolto; i prossimi due passaggi coprono questi casi.
  • Impostate la voce PATH come variabile di ambiente utente o di sistema, non nel vostro profilo PowerShell. L’estensione non esegue il vostro profilo, quindi una modifica di PATH che vive solo lì non la raggiunge mai.
  • Riavviate VS Code dopo aver modificato PATH. L’estensione controlla il PATH che VS Code ha catturato all’avvio, quindi una modifica di PATH ha effetto solo dopo un riavvio.

The connection to Claude Code ended before this message completed

L’estensione VS Code ha inviato il vostro messaggio al processo claude, e la connessione è terminata senza un errore prima che il processo lo riconoscesse o lo completasse. L’estensione non può dire se il messaggio è stato elaborato, quindi vi chiede di inviarlo di nuovo:
Cosa fare:
  • Inviate il messaggio di nuovo. Il messaggio successivo avvia un nuovo processo claude che riprende la conversazione.
  • Se si ripete, eseguite claude in un terminale nello stesso progetto. Un guasto che continua a terminare il processo di solito si riproduce lì con il suo messaggio di errore reale.

Avvisi e errori di Rewind

Questi messaggi provengono da un ripristino del codice /rewind. Restored the code, but skipped N files è un avviso che indica che Claude Code ha saltato alcuni percorsi. No files were restored è un errore che significa che non ha ripristinato nulla.

Restored the code, but skipped files

Un ripristino del codice /rewind ha saltato uno o più percorsi tracciati invece di scrivere o eliminare attraverso di essi. Claude Code salta un percorso quando:
  • è, o è diventato, un symlink, hard link, o altro file non regolare
  • la sua directory è cambiata dal checkpoint
  • il suo backup non può essere letto in modo sicuro
I percorsi saltati mantengono i loro contenuti attuali. Prima della v2.1.216, /rewind scriveva e eliminava attraverso i link nei percorsi tracciati e non segnalava un ripristino parziale.
Cosa fare:
  • Identificare quali file sono stati saltati in modo da poter gestire ognuno con i passaggi seguenti. Il messaggio fornisce solo un conteggio; il log di debug in ~/.claude/debug/<session-id>.txt nomina ogni percorso saltato mentre il ripristino viene eseguito, quindi attivare la registrazione di debug con /debug prima del prossimo ripristino. Su macOS o Linux, è possibile invece trovare i link direttamente: find . -type l per i symlink e find . -type f -links +1 per i file con hard link.
  • Se un file saltato è un link che hai creato intenzionalmente, come un file di configurazione gestito da un gestore dotfile o un file con hard link da strumenti come pnpm, il rewind ha lasciato i suoi contenuti intatti. Per annullare le modifiche della sessione ad esso, chiedi a Claude di invertire la modifica o modifica il file tu stesso
  • Se non hai creato il link, ispeziona il percorso prima di fidarti dei suoi contenuti

No files were restored

Claude Code mostra questo messaggio quando ripristini il codice con /rewind e non riesce a ripristinare nessuno dei file in quel checkpoint. Per ogni file, il backup che Claude Code ha salvato prima di modificarlo è mancante, oppure Claude Code non ha potuto scrivere o eliminare il file.
Claude Code elimina i backup di una sessione nella retention sweep, per impostazione predefinita circa 30 giorni dopo l’ultimo salvataggio della sessione. Se riprendi una sessione dopo questo periodo, /rewind elenca ancora i suoi checkpoint, ma il ripristino a uno di essi può fallire con questo errore. Se il messaggio dice anche N paths were skipped for link safety, vedi Restored the code, but skipped files per quei percorsi. Quando esegui il fork di una sessione, ad esempio con --fork-session o /branch, Claude Code copia i backup della sessione originale nel fork. Quando Claude Code non riesce a copiare un backup, ad esempio perché il disco è pieno, quel backup è mancante nel fork. Il ripristino a un checkpoint che ne ha bisogno può fallire con questo errore. Cosa fare:
  • Annulla le modifiche in un altro modo: chiedi a Claude di invertire le sue modifiche, o ripristina i file dal controllo versione. Quando i backup sono spariti, l’esecuzione di /rewind di nuovo fallisce allo stesso modo.
  • Se Claude Code non ha potuto scrivere o eliminare un file, correggi ciò che blocca la scrittura, come i permessi dei file, quindi esegui /rewind di nuovo.
  • Per mantenere i backup più a lungo nelle sessioni future, aumenta cleanupPeriodDays.
Prima della v2.1.260, Claude Code saltava silenziosamente i file i cui backup erano mancanti, e il rewind sembrava avere successo.

Avvisi di salvataggio della sessione

Claude Code mostra questi avvisi su una riga persistente sotto la casella di input quando non sta salvando la trascrizione della sessione. La sessione continua a funzionare comunque; gli avvisi indicano che la sessione potrebbe mancare da --resume in seguito.

I salvataggi della trascrizione stanno fallendo

Claude Code salva la trascrizione su disco mentre lavori, e i suoi salvataggi nel file della trascrizione stanno fallendo. Il messaggio nomina la causa con il codice di errore sottostante, ad esempio un disco pieno:
L’avviso appare in diversi punti a seconda dell’errore:
  • Al primo fallimento per condizioni che non si risolvono da sole: un disco pieno, un quota disco superata, un filesystem di sola lettura, un percorso che supera il limite di lunghezza del filesystem, o, su macOS e Linux, un errore di permesso
  • Dopo fallimenti ripetuti che durano almeno un minuto per tutto il resto, inclusi errori di permesso su Windows, dove una scansione antivirus può far fallire un singolo salvataggio che poi riesce al nuovo tentativo
Prima della v2.1.217, Claude Code scartava i salvataggi falliti senza un avviso, e un successivo --resume mancante di messaggi recenti era il primo segno. Cosa fare:
  • Correggere la condizione che il codice di errore nomina: liberare spazio su disco per ENOSPC; aumentare o cancellare la quota per EDQUOT; ripristinare l’accesso in scrittura alla posizione della trascrizione per EACCES, EPERM, o EROFS
  • L’avviso si cancella da solo al prossimo salvataggio riuscito; non è necessario riavviare
  • I messaggi inviati mentre l’avviso era visualizzato potrebbero comunque mancare quando riprendi la sessione in seguito

Il salvataggio della trascrizione è disattivato perché CLAUDE_CODE_SKIP_PROMPT_HISTORY è impostato

Questa sessione è stata avviata con CLAUDE_CODE_SKIP_PROMPT_HISTORY impostato, quindi Claude Code non scrive alcuna trascrizione o cronologia dei prompt per essa:
La variabile è un’esclusione intenzionale per sessioni script effimere, ma può anche raggiungere una sessione attraverso un profilo shell, uno script wrapper, o un processo padre che l’ha esportata. Cosa fare:
  • Se hai impostato la variabile di proposito, non è necessaria alcuna azione; l’avviso conferma che la sessione non apparirà in --resume, --continue, o nella cronologia della freccia su
  • Se non l’hai fatto, rimuovi la variabile dalla shell o dallo script che avvia claude, quindi avvia una nuova sessione. I messaggi della sessione corrente non vengono salvati retroattivamente.

Il salvataggio della trascrizione è disattivato a causa di un marcatore CLAUDE_CODE_CHILD_SESSION ereditato

Claude Code imposta CLAUDE_CODE_CHILD_SESSION nei sottoprocessi che genera, e tratta una sessione interattiva che lo eredita come annidata: Claude Code non salva alcuna trascrizione per essa, quindi le sessioni che Claude stesso avvia non riempiono il tuo elenco --resume. Questo avviso significa che la tua sessione corrente ha ereditato il marcatore:
L’avviso è previsto quando hai eseguito claude dall’interno di un’altra sessione Claude Code; segnala una classificazione errata quando il marcatore è trapelato attraverso un intermediario di lunga durata, ad esempio un terminale, una sessione screen, o un launcher che una sessione Claude Code ha originariamente avviato. All’interno di tmux, Claude Code rileva un marcatore che è arrivato attraverso l’ambiente globale del server tmux e continua a salvare, quindi questo avviso non appare per quel caso. Cosa fare:
  • Se hai avviato questa sessione dall’interno di un’altra sessione Claude Code di proposito, non è necessaria alcuna azione
  • Se questa è una sessione di primo livello, esci e riavvia con CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1 impostato. Il salvataggio si applica dal riavvio, quindi i messaggi inviati prima non vengono salvati.
  • Per correggere i futuri avvii dallo stesso terminale o launcher, rimuovi CLAUDE_CODE_CHILD_SESSION dal suo ambiente

Avvisi di configurazione

Claude Code scrive la maggior parte di questi messaggi su stderr, non nella conversazione, e scrive la maggior parte di essi all’avvio. Una voce lo dice quando il suo messaggio appare altrove, ad esempio nel log di debug o come avviso di avvio nella vista della conversazione, o in un altro momento, ad esempio la riga diagnostica modello non riconosciuto al momento della richiesta.

Claude Code è uscito dopo un errore di interfaccia irrecuperabile

Claude Code stampa questo messaggio quando esce perché la sua interfaccia terminale ha riscontrato un errore da cui non può recuperare, in uno dei due renderer. La seconda frase appare solo quando l’errore si è verificato mentre il renderer fullscreen si stava avviando:
Cosa fare:
  • Avviare di nuovo Claude Code. Per riprendere la conversazione, eseguire claude --resume nella stessa directory.
  • Se il messaggio nomina il renderer fullscreen, Fullscreen rendering dice cosa fa il prossimo avvio, che dipende da come avete attivato fullscreen, e come provare di nuovo fullscreen o mantenere il renderer classico.
Prima della v2.1.236, Claude Code usciva senza stampare un messaggio dopo questo tipo di errore.

Le descrizioni degli agenti superano il limite di 15.0k token

Claude Code mostra questo avviso come avviso di avvio nella vista della conversazione piuttosto che su stderr. Le descrizioni combinate dei vostri subagenti, ad eccezione di quelli incorporati, superano 15.000 token come Claude Code le stima. Ogni agente conta il suo nome più il suo frontmatter description. Claude Code carica ogni agente indipendentemente dal fatto che il totale superi il limite, quindi l’avviso non cambia cosa viene caricato.
Cosa fare:
  • Accorciare il frontmatter description dei vostri file di agente, o chiedere a Claude di tagliarli per voi.
  • Rimuovere i file di agente che non usate più.

Hook needs quotes around a path with a space

Questa notifica nella vista della conversazione significa che lo script di un hook non è stato eseguito perché il suo percorso contiene uno spazio e non è racchiuso tra virgolette. Si tratta di un hook asyncRewake in forma shell. Nel suo command, un interprete come python3 è seguito da un segnaposto di percorso senza virgolette, e il percorso risolto contiene uno spazio. La notifica inizia con il nome dell’evento dell’hook e nomina lo script:
Cosa fare:
  • Nel command dell’hook che esegue lo script nominato dalla notifica, racchiudi il percorso tra virgolette doppie. In un file JSON, scrivilo come "command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\"".

Instruction file not loaded

Questo avviso nella vista della conversazione di una sessione interattiva significa che un file di memoria esistente non è stato caricato. È in vigore una restrizione di lettura.
L’inciso tra parentesi indica il motivo, ad esempio:
  • a Read deny rule covers it: una regola deny Read corrisponde al percorso del file così come è scritto o alla destinazione di un collegamento che lo riguarda
  • it's read from outside your working directories, where reads are blocked: il file si risolve al di fuori delle directory di lavoro mentre permissions.blockReadsOutsideWorkingDirectories è attivo
  • where it leads couldn't be worked out: ad esempio, il file è un collegamento che rimanda a se stesso, direttamente o attraverso altri collegamenti
Quando il file di memoria di una sottodirectory non può essere caricato mentre Claude lavora con i file lì presenti, le stesse righe appaiono nella conversazione durante il turno. Quando i file esclusi sono più di quelli nominati dalle righe, una riga finale conta i restanti, ad esempio and 3 more instruction files not loaded. Cosa fare:
  • Niente, se la restrizione è voluta: la sessione procede senza le istruzioni di quel file.
  • Per caricare un file escluso perché a Read deny rule covers it, rimuovi o restringi quella regola. Poi avvia una nuova sessione.
  • Per caricare un file escluso perché it's read from outside your working directories, where reads are blocked, sposta il file o la destinazione del suo collegamento all’interno delle directory di lavoro. Poi avvia una nuova sessione.
  • Per caricare un file escluso perché where it leads couldn't be worked out, verifica se il file è un collegamento che rimanda a se stesso. In tal caso, fai puntare il collegamento a un file esistente oppure sostituiscilo con un file normale. Poi avvia una nuova sessione.
Prima della v2.1.292, l’avviso nominava il file alla fine della stessa riga, dopo il motivo.

Una skill, un comando o un workflow non è stato caricato perché il suo nome è riservato

Una cartella skill, un frontmatter name, un file o una sottocartella in .claude/commands/, o un workflow salvato usa il nome anthropic-skills o un nome che inizia con anthropic-skills:. Claude Code riserva quel nome per le skills sincronizzate da claude.ai e non carica quell’elemento. Claude Code mostra questo avviso come avviso di avvio nella vista della conversazione piuttosto che su stderr:
L’avviso nomina cosa cambiare per il primo elemento che ha rifiutato: una cartella o un file da rinominare, una riga name: da modificare, o un workflow da rinominare. Quando più di un elemento è stato rifiutato, l’avviso termina con un conteggio come · 2 more, e il log di debug nomina ognuno. Cosa fare:
  • Rinominare l’elemento che l’avviso nomina, o modificare la riga name: a cui punta, quindi riavviare la sessione.
Prima della v2.1.282, Claude Code caricava skills e comandi con questi nomi.

Skill or command name refused

Questo avviso di avvio significa che Claude Code ha rifiutato il nome di almeno una skill o di un comando personalizzato, che quindi non è stato caricato oppure è stato caricato senza il suo campo name:
  • Non caricato: Claude Code ha rifiutato il nome con cui va una skill o un comando, come il nome della sua directory oppure il nome o la sottocartella di un file di comando. Manca dal menu / e Claude non può invocarlo. La sua riga nel log di debug riporta <name> is not offered.
  • Campo name ignorato: Claude Code ha rifiutato il frontmatter name di una skill. La skill viene comunque caricata, ma il menu / non mostra il valore di name e digitarlo non invoca la skill. La sua riga nel log di debug riporta <name value> is not shown for <skill>.
Cosa fare:
  • Avvia Claude Code con claude --debug dalla tua shell e cerca [names] nel log di debug. Ogni nome conteggiato dall’avviso ha lì una riga. La riga riporta alcuni caratteri nascosti come codici, ad esempio \u{200B} per uno spazio a larghezza zero, così puoi vedere dove si trovano.
  • Rimuovi i caratteri che il nome di una skill non può contenere rinominando la cartella o il file oppure modificando la riga name:, oppure accorcia un nome che supera i 256 caratteri. Poi riavvia la sessione, a meno che il file non si trovi in una directory che Claude Code monitora per le modifiche. Per una skill di un plugin che non hai scritto tu, chiedi all’autore del plugin di rinominarla.

Lo spazio di lavoro non è stato considerato attendibile

Claude Code ha trovato regole permissions.allow o voci permissions.additionalDirectories nel .claude/settings.json o .claude/settings.local.json del progetto e non le ha applicate, perché le regole allow dalle impostazioni del progetto richiedono la fiducia dello spazio di lavoro. Il conteggio, il nome dell’impostazione e il file nominato nel messaggio variano con la vostra configurazione. Le regole deny e ask non sono interessate.
Cosa fare:
  • Eseguire claude nella directory e accettare la finestra di dialogo di fiducia. Project allow rules and workspace trust dice quale cartella copre tale accettazione.
  • In modalità non interattiva con -p nessuna finestra di dialogo viene mostrata. Impostare la voce hasTrustDialogAccepted in ~/.claude.json usando la chiave projects esatta che il messaggio stampa.
  • Se il messaggio nomina .claude/settings.local.json e avete avviato Claude Code al di fuori di un repository git o nella vostra home directory, aggiornare alla v2.1.200 o successiva. Le versioni 2.1.196 attraverso 2.1.199 hanno trattato il vostro .claude/settings.local.json come fornito dal repository in quegli spazi di lavoro. Sulla v2.1.207 e successiva, l’aggiornamento non è sufficiente al di fuori di un repository git se non avete considerato attendibile la cartella: determinare che una cartella non è all’interno di un repository esegue git, e Claude Code esegue quel controllo solo dopo che accettate la finestra di dialogo di fiducia, quindi usate il primo passaggio. La vostra home directory e qualsiasi altra configuration home sono esenti e non aspettano la finestra di dialogo. Vedere Project allow rules and workspace trust.

La directory di lavoro è un percorso di rete

Claude Code non aggiunge percorsi di rete come directory di lavoro. Cercare un percorso di rete può contattare l’host che nomina, e su Windows quel contatto può inviare all’host le vostre credenziali, quindi Claude Code rifiuta il percorso senza cercarlo. Vedete questo messaggio quando eseguite /add-dir con tale percorso, o come avviso all’avvio. Quando appare all’avvio, Claude Code si avvia senza quella directory.
I percorsi che Claude Code rifiuta in questo modo includono:
  • Condivisioni UNC come \\server\share
  • Percorsi di montaggio automatico come /net/<host>, a meno che tu non abbia avviato Claude Code da una directory sotto il montaggio automatico di quell’host. Le letture sotto quel montaggio automatico passano comunque attraverso il controllo dei percorsi di rete.
  • Percorsi locali che raggiungono una posizione di rete attraverso un collegamento simbolico o una giunzione
Le lettere di unità mappate e i percorsi \\wsl$ non contano come percorsi di rete. Cosa fare:
  • Su Windows, mappare la condivisione a una lettera di unità, ad esempio con net use Z: \\server\share, e passare l’unità all’avvio con claude --add-dir Z:\.
  • Su macOS o Linux, montare la condivisione in un percorso locale e aggiungere quel percorso invece.
  • Se il percorso è in permissions.additionalDirectories, rimuoverlo dal file di impostazioni che lo elenca.
Prima della v2.1.257, Claude Code accettava un percorso di rete raggiungibile come directory di lavoro.

Le impostazioni gestite da remoto non hanno potuto essere caricate

La vostra sessione è idonea per impostazioni gestite dal server, ma Claude Code non ha potuto recuperarle o non ha potuto applicare quello che il server ha restituito, quindi mostra questo avviso nelle sessioni interattive. La causa tra parentesi nomina cosa è fallito, come network error, request timed out, o authentication rejected (401). La causa no setting in the server response could be applied as written significa che il server ha risposto ma nessuna delle impostazioni che ha restituito ha superato la validazione. Prima della v2.1.282, questa causa leggeva server returned invalid settings. Il resto della riga dice quale politica la sessione esegue:
  • Impostazioni memorizzate nella cache da un recupero precedente riuscito: Claude Code esegue la sessione su quella politica memorizzata nella cache, ad eccezione delle variabili di ambiente trattenute, e la riga legge using cached policy.
  • Nessuna cache: Claude Code esegue la sessione senza impostazioni gestite dal server, e la riga legge no remote policy applied.
Cosa fare:
  • Agire sulla causa che il messaggio nomina: per una causa di rete, verificare che questa macchina possa raggiungere api.anthropic.com; per una causa di autenticazione, controllare il vostro accesso con /status
  • Per no setting in the server response could be applied as written, chiedere al vostro amministratore di correggere le impostazioni sul server
  • Eseguire /status o claude doctor per la diagnostica completa
Prima della v2.1.248, Claude Code segnalava un recupero di impostazioni fallito solo nel log di debug.

Le impostazioni gestite non sono state approvate

Le impostazioni gestite dal server della vostra organizzazione includono impostazioni che necessitano della vostra approvazione, e avete rifiutato la finestra di dialogo di approvazione della sicurezza, quindi Claude Code esce senza applicarle:
Cosa fare:
  • Avviare di nuovo Claude Code e approvare la finestra di dialogo per continuare secondo le impostazioni della vostra organizzazione. Una finestra di dialogo rifiutata non viene ricordata, quindi appare di nuovo al prossimo avvio.
  • Se siete incerti su un’impostazione che la finestra di dialogo elenca, chiedete a chi mantiene le impostazioni gestite della vostra organizzazione prima di approvare

Le impostazioni gestite bloccano il modello predefinito

La vostra organizzazione impostazioni gestite bloccano il modello a cui l’opzione Predefinito si risolve e ogni modello a cui potrebbe scendere. Una sessione che inizierebbe sull’opzione Predefinita esce all’avvio invece di eseguire un modello bloccato. Quale messaggio vedete dipende dall’impostazione che lo blocca. Quando un elenco deniedModels lo blocca, il messaggio legge:
Quando un elenco availableModels con availableModelsMatch impostato a "exact" lo omette, il messaggio legge:
Cosa fare:
  • Se amministrate le impostazioni, aggiungere un modello che i vostri utenti possono eseguire a availableModels, o restringere le voci deniedModels che bloccano ogni fallback. Block specific models or versions descrive come l’opzione Predefinito scende
  • Se non le amministrate, inviare il messaggio al vostro amministratore. I vostri file di impostazioni non possono ampliare un elenco availableModels o deniedModels gestito

Le impostazioni gestite non consentono questo provider API

La vostra organizzazione impostazioni gestite impostano un elenco allowedProviders, e il provider API della sessione non è su di esso o la sessione usa un endpoint che non è fissato nel modo che quella voce richiede. Claude Code rifiuta all’avvio, prima di un accesso, o quando la sessione contatta successivamente l’API. Il messaggio inizia con i provider consentiti:
Quando l’elenco è vuoto, il messaggio legge invece:
Quando ogni voce non è riconosciuta, la parentetica legge invece (allowedProviders lists only unrecognized entries). Cosa fare:
  • Seguire i passaggi To continue: del messaggio
  • Se amministrate le impostazioni, le righe del messaggio che iniziano con Admins: nominano la voce da aggiungere o il valore da fissare, e la voce allowedProviders dice quale blocco env della fonte può fissarlo

MCP server è bloccato dalla politica gestita aziendale

Avete selezionato Reconnect su un server in /mcp, o riattivato un server disabilitato lì, e un’impostazione che limita i server MCP blocca quel server. Claude Code rifiuta di connetterlo e mostra:
Una qualsiasi di queste impostazioni può produrre il messaggio: Cosa fare:
  • Controllare i vostri file di impostazioni utente e progetto per una di queste impostazioni e cambiarla o rimuoverla
  • Se nessuna delle vostre impostazioni spiega il blocco, chiedete al vostro amministratore quale impostazione gestita blocca il server
Prima della v2.1.257, Reconnect e ri-abilitare in /mcp potevano connettere un server che un aggiornamento di politica mid-session bloccava.

Il nome del server MCP è riservato

Questo messaggio nomina uno dei tuoi server MCP, il cui nome è tra quelli che Claude Code riserva, come i nomi dei suoi server integrati:
Cosa fare:
  • Rinomina il server dove lo definisci, ad esempio da workspace a my-workspace
  • Per gli altri nomi riservati da evitare, consulta Avvisi di configurazione MCP

Il documento delle impostazioni gestite non ha potuto essere analizzato

La vostra organizzazione distribuisce impostazioni gestite, e uno dei documenti distribuiti è presente ma non può essere analizzato come un oggetto JSON, quindi Claude Code esce con codice 1 all’avvio invece di eseguire senza la politica che il documento contiene. La riga nomina la fonte fallita prima del messaggio:
La fonte è una di:
  • Il percorso del file managed-settings.json o un file drop-in sotto managed-settings.d
  • Il profilo delle preferenze gestite macOS, per-user managed preferences o device-level managed preferences
  • Il valore del registro Windows, Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings
Find entries Claude Code dropped elenca cosa rende ogni fonte non analizzabile. Claude Code rifiuta di avviarsi anche quando un’altra fonte amministrativa fornisce una politica valida. Vedete questo errore nelle sessioni interattive, claude -p, sessioni Agent SDK, sessioni in background, e la maggior parte dei sottocomandi, claude doctor incluso. Il rifiuto fallisce chiuso di proposito: le impostazioni in un documento che Claude Code non può analizzare non possono essere applicate, e avviarsi comunque eseguirebbe sessioni senza i controlli dell’organizzazione. Un problema di schema in un documento analizzabile non produce questo errore. Find entries Claude Code dropped copre cosa Claude Code fa con uno. Quando una directory managed-settings.d/ esiste ma non può essere elencata, Claude Code segnala Managed settings drop-in directory could not be read: seguito dall’errore sottostante invece. Find entries Claude Code dropped copre quando un errore di lettura esce all’avvio. Cosa fare:
  • Se amministrate la macchina, correggere il documento nominato in modo che si analizzi come un oggetto JSON, o rimuovere il file, il profilo o il valore del registro. Un managed-settings.json vuoto conta come {} e non blocca l’avvio.
  • Se non lo fate, chiedete al vostro amministratore di correggere il documento distribuito. Nulla nei vostri file di impostazioni causa o cancella questo errore.

Impossibile leggere le impostazioni della politica gestita

La vostra organizzazione distribuisce impostazioni gestite, e una delle fonti distribuite esiste ma non ha potuto essere letta, per un motivo come un errore di I/O piuttosto che il sistema operativo che nega la lettura. Senza un’altra fonte amministrativa che fornisce una politica, Claude Code esce all’avvio piuttosto che eseguire senza la politica che la fonte potrebbe contenere:
Nello stesso stato, i flussi di accesso, le richieste API da una sessione che è già in esecuzione, e il server claude gateway sono rifiutati con una variante della prima riga che nomina allowedProviders. Una lettura che il sistema operativo ha negato, come su un file solo root, non produce questa uscita: la sessione si avvia senza le politiche di quella fonte. Per una fonte che non può essere analizzata, Claude Code esce con un messaggio diverso che nomina la fonte. Cosa fare:
  • Se amministrate la macchina, correggere il problema che la riga Detail: nomina in modo che la fonte distribuita possa essere letta, o rimuovere la fonte
  • Se non lo fate, inviare il messaggio al vostro amministratore. Nulla nei vostri file di impostazioni causa o cancella questo errore
Prima della v2.1.285, solo le sessioni accedute con credenziali claude.ai o Claude Console uscivano con questo messaggio, e una lettura che il sistema operativo ha negato lo produceva anche.

Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded

Questo blocco su stderr in un’esecuzione -p significa che un’origine delle impostazioni gestite contiene una voce di hook che Claude Code non riesce a caricare. Quell’hook non viene eseguito, e quando una riga indica come ignorato il campo hooks dell’origine, nessuno degli hook di quell’origine viene eseguito. Ogni riga nomina l’origine, il campo quando presente e il problema, ad esempio un type di hook sconosciuto o un hook dichiarato al di fuori della chiave hooks:
Cosa fare:
  • Se amministri l’origine, correggi o rimuovi ogni voce elencata nel blocco. Configurazione degli hook mostra la struttura che Claude Code si aspetta sotto hooks.
  • Se l’origine di una riga è parent managed settings, l’applicazione che ha avviato Claude Code ha passato quella voce come impostazioni parent, quindi segnalalo allo sviluppatore di quell’applicazione
  • Altrimenti, invia il blocco al tuo amministratore
Prima della v2.1.300, un’esecuzione -p elencava questo caso sotto l’intestazione Managed settings failed to load; policies from the failed source are NOT in effect:.

otelHeadersHelper non riuscito

Claude Code mostra questo avviso come una notifica nell’interfaccia terminale, una volta per sessione interattiva, quando lo script otelHeadersHelper fallisce o stampa output che non soddisfa i requisiti dello script. Mentre lo script continua a fallire, le esportazioni falliscono e il vostro backend di telemetria non riceve nulla dalla sessione. Il testo dopo See /status: dice cosa è fallito, come il codice di uscita dello script seguito dal suo output di errore:
Cosa fare:
  • Eseguire /status per leggere il dettaglio del fallimento.
  • Correggere lo script in modo che esca 0 entro 30 secondi e stampi un oggetto JSON di valori di intestazione stringa su stdout. Vedere requisiti dello script.
  • Se la vostra organizzazione distribuisce lo script attraverso impostazioni gestite, chiedete a chi le mantiene di correggerlo.
In modalità non interattiva con -p, lo stesso fallimento appare su stderr come otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error> invece.

headersHelper non eseguito

Claude Code ha connesso un server MCP con i suoi headers statici soli e ha saltato il headersHelper del server, perché l’helper è un comando shell e la cartella non ha fiducia salvata. Una cartella ottiene fiducia salvata quando impostate la sua voce in ~/.claude.json a mano o, al di fuori della vostra home directory, quando accettate la finestra di dialogo di fiducia per essa in una sessione interattiva. Vedere Trust a folder before its headersHelper runs per quali server questo controllo si applica. Claude Code scrive questa riga in modalità non interattiva solo, una volta per server. In una sessione interattiva scrive lo stesso rifiuto al log di debug invece.
La chiave projects che il messaggio stampa è la cartella Project allow rules and workspace trust dice Claude Code chiavi la fiducia su. Accettare la finestra di dialogo di fiducia per una cartella genitore non soddisfa il controllo, e una sessione -p o SDK non la soddisfa nemmeno. Cosa fare:
  • Eseguire claude nella cartella che il messaggio nomina, accettare la finestra di dialogo di fiducia, quindi eseguire di nuovo il vostro comando -p o SDK
  • Impostare la voce hasTrustDialogAccepted in ~/.claude.json voi stessi, usando la chiave projects esatta che il messaggio stampa
  • Se avete avviato la sessione nella vostra home directory, lavorare da una directory di progetto che avete considerato attendibile. Quando accettate la finestra di dialogo di fiducia nella vostra home directory, Claude Code mantiene quella fiducia per la sessione corrente solo.

Regola Tool(content) malformata

Una regola di permesso in uno dei vostri file di impostazioni non ha la forma Tool o Tool(content), ad esempio perché il testo segue la parentesi di chiusura o una delle parentesi manca. Claude Code salta la regola e la elenca nella finestra di dialogo delle impostazioni non valide quando una sessione interattiva si avvia, e nell’output di claude doctor:
Cosa fare:
  • Nel file di impostazioni elencato con il messaggio, riscrivere la regola in modo che termini alla sua parentesi di chiusura, ad esempio Bash(ls *) al posto di Bash(ls) x
  • Lasciare le parentesi all’interno del contenuto come sono. Sono letterali, quindi una regola come Edit(./Finance (2024)/**) è valida senza escape
Prima della v2.1.260, Claude Code segnalava una regola con parentesi non abbinate come Mismatched parentheses.

Non è abbinato dai controlli di permesso dei file

Claude Code ha trovato una regola di permesso Write, NotebookEdit, MultiEdit, o Glob permission rule con un percorso in uno dei vostri file di impostazioni, in impostazioni gestite, o in un valore di flag --allowedTools, --disallowedTools, o --settings. Controlla i permessi dei file rispetto alle regole Edit e Read solo, quindi non consulta mai una regola di percorso che nomina uno degli altri strumenti di file. Mantiene la regola e non cambia nient’altro; l’avviso nomina la regola, la sua fonte tra parentesi, e la sostituzione da scrivere:
Cosa fare:
  • Sostituire le regole Write(path), NotebookEdit(path), e legacy MultiEdit(path) con Edit(path). Le regole Edit coprono tutti gli strumenti di modifica dei file.
  • Ad eccezione di --allowedTools, dove Claude Code accetta una regola Glob senza avviso, sostituire le regole Glob(path) con Read(path).
  • Correggere la regola alla fonte che l’avviso nomina tra parentesi: un percorso di file di impostazioni, o il flag stesso per --allowed-tools e --disallowed-tools. Un percorso claude-settings-<hash>.json che non esiste su disco rappresenta un valore --settings inline. Correggere il JSON che passate a quel flag.
  • Lasciare sole le regole di nome di strumento nudo come Write o Glob. Claude Code le abbina a livello di tool level e non avvisa su di esse.
  • Se la fonte legge managed policy settings, inoltrare l’avviso a chi mantiene le vostre impostazioni gestite, poiché non potete cancellarlo voi stessi.
In una sessione in background o con --output-format json o stream-json, Claude Code scrive l’avviso al log di debug invece di stderr, quindi l’output letto dalla macchina rimane pulito. Eseguire con --debug per catturarlo in ~/.claude/debug/<session-id>.txt. Prima della v2.1.210, Claude Code accettava queste regole senza un avviso.

Ha un carattere jolly prima del resto del comando

Claude Code ha trovato una regola allow Bash il cui * viene prima di una parola successiva che determina quale comando è, come Bash(git * main) o Bash(git -C * status *), in uno dei vostri file di impostazioni, in impostazioni gestite, o in un valore di flag --allowedTools o --settings. Il * corrisponde a qualsiasi testo, incluse le opzioni inserite in quella posizione: Bash(git * main) approva anche git -c core.fsmonitor=<script> diff main, dove -c fa eseguire a git un programma che il comando nomina. Wildcard patterns mostra le regole di corrispondenza. L’avviso esiste in modo che possiate restringere una regola il cui carattere jolly è più ampio di quanto intendete. Claude Code mantiene la regola e non cambia nulla su come corrisponde; l’avviso nomina la regola e la sua fonte tra parentesi:
Cosa fare:
  • Sostituire il * prima del sottocomando con il valore esatto che intendete: Bash(git checkout main) al posto di Bash(git * main).
  • Spostare ogni * dopo il sottocomando: Bash(git status *) al posto di Bash(git -C * status *). Scrivere una regola per sottocomando che volete permettere.
  • Correggere la regola alla fonte che l’avviso nomina tra parentesi: un percorso di file di impostazioni, o il flag --allowed-tools stesso. Un percorso claude-settings-<hash>.json che non esiste su disco rappresenta un valore --settings inline. Correggere il JSON che passate a quel flag.
  • Se la fonte legge managed policy settings, inoltrare l’avviso a chi mantiene le vostre impostazioni gestite, poiché non potete cancellarlo voi stessi.
In una sessione in background o con --output-format json o stream-json, Claude Code scrive l’avviso al log di debug invece di stderr, quindi l’output letto dalla macchina rimane pulito. Eseguire con --debug per catturarlo in ~/.claude/debug/<session-id>.txt. Prima della v2.1.246, Claude Code accettava queste regole senza un avviso.

Denying Bash also turns off the PowerShell tool

Hai rimosso l’intero strumento Bash, ad esempio con --disallowedTools Bash oppure con una regola deny Bash o Bash(*) senza altre specifiche in uno dei tuoi file di impostazioni. Su Windows con Git Bash installato, negare Bash disattiva anche lo strumento PowerShell, quindi la sessione si avvia senza alcuno strumento shell. Claude Code stampa questo avviso all’avvio:
Cosa fare:
  • Per far usare PowerShell a Claude, imposta CLAUDE_CODE_USE_POWERSHELL_TOOL su 1 nel tuo ambiente o nel blocco env di un file di impostazioni, come mostrato in Attivare lo strumento PowerShell. Lo strumento PowerShell resta quindi attivo insieme alla tua regola deny per Bash.
  • Per bloccare comandi specifici invece dell’intero strumento, sostituisci la voce Bash generica con regole circoscritte come Bash(git push *) nello stesso file di impostazioni o flag. Claude mantiene lo strumento Bash, e lo strumento PowerShell resta disattivato finché non imposti anche la variabile o aggiungi una regola di permesso PowerShell circoscritta.
In una sessione in background o con --output-format json o stream-json, Claude Code scrive l’avviso nel log di debug anziché su stderr. Esegui con --debug per acquisirlo in ~/.claude/debug/<session-id>.txt. Prima della v2.1.287, Claude Code disattivava lo strumento PowerShell allo stesso modo senza stampare alcun avviso.

crossSessionInbound deve essere uno di accept, hold, refuse

Un file di impostazioni imposta crossSessionInbound a un valore che Claude Code non riconosce, come il typo "reject". La seconda frase dell’avviso dipende da quale file contiene il valore; in un file utente, progetto, locale, o --settings legge:
In impostazioni gestite, Claude Code tratta il valore non riconosciuto come refuse, il valore più restrittivo, e l’avviso dice che i messaggi cross-session vengono rifiutati fino a quando un amministratore non lo corregge. Per come l’hold si combina con i valori nei vostri altri file di impostazioni, vedere crossSessionInbound. Cosa fare:
  • Impostare la chiave a "accept", "hold", o "refuse", o rimuoverla
  • Quando l’avviso nomina impostazioni gestite, chiedere all’amministratore di correggere il valore
Prima della v2.1.248, Claude Code ignorava un valore non riconosciuto senza avviso.

ANTHROPIC_FOUNDRY_RESOURCE deve essere il nome di una risorsa Foundry

Hai impostato ANTHROPIC_FOUNDRY_RESOURCE su qualcosa di diverso dal semplice nome di una risorsa Microsoft Foundry, ad esempio l’URL dell’endpoint o il suo nome host. Claude Code ha rifiutato il valore prima di inviare una richiesta. Il messaggio appare al posto della risposta di Claude, non come avviso di avvio:
Cosa fare:
  • Imposta ANTHROPIC_FOUNDRY_RESOURCE sul solo nome della risorsa e riavvia Claude Code. Per l’endpoint https://my-resource.services.ai.azure.com/anthropic, il nome è my-resource.
  • Per fornire invece l’URL completo dell’endpoint, imposta ANTHROPIC_FOUNDRY_BASE_URL sull’URL e rimuovi ANTHROPIC_FOUNDRY_RESOURCE, quindi riavvia Claude Code. Claude Code accetta solo una delle due variabili.

Il limite di 200K non è applicato

Avete impostato CLAUDE_CODE_DISABLE_1M_CONTEXT=1, che normalmente fa sì che auto-compaction mantenga le sessioni su modelli con contesto 1M a una finestra di 200K, ma nessuna soglia di compattazione limita questa sessione a o sotto 200K, quindi la conversazione può crescere oltre.
Claude Code applica il limite di 200K da solo per ogni modello che riconosce come avente una finestra nativa di 1M, e per ID di modello che non riconosce compatta alla finestra che assume. L’avviso appare quando altra configurazione sconfigge tale applicazione: Cosa fare:
  • Impostare CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000, o l’impostazione autoCompactWindow a 200000, in modo che auto-compaction compatti al confine di 200K
  • Se il messaggio nomina un ID di modello che questa versione non riconosce, eseguire claude update. Una versione che riconosce l’ID come modello con contesto 1M applica il limite senza ulteriore configurazione.
  • Se volete che la sessione usi la finestra completa del modello invece, disimpostare CLAUDE_CODE_DISABLE_1M_CONTEXT; l’avviso segnala solo che il limite di 200K non è applicato
In una sessione in background o con --output-format json o stream-json, Claude Code scrive l’avviso al log di debug invece di stderr.

ID modello non riconosciuto su una richiesta

Claude Code ha inviato una richiesta per un ID di modello che la vostra versione di Claude Code non riconosce, e non ha trovato alcuna voce modelOverrides che mappa quell’ID a un modello che riconosce. Claude Code invia comunque la richiesta con l’ID come lo avete configurato, e non esce o cambia modelli.
In uno script o harness che legge stderr, abbinare il prefisso [claude-code:unrecognized_model]. Dopo il prefisso e uno spazio, Claude Code scrive un oggetto JSON su una riga. Claude Code può aggiungere campi ad esso in una versione successiva, quindi ignorare qualsiasi campo che non vi aspettate. Scrive almeno questi due:
  • model: la stringa del modello come l’avete configurata
  • query_source: il percorso della richiesta che ha usato il modello. Claude Code segnala sdk per un’esecuzione -p e un valore che inizia con agent: per un subagente.
Claude Code scrive la riga in uno di due posti, a seconda di come la eseguite:
  • In modalità non interattiva con -p, Claude Code la scrive su stderr sotto ogni --output-format, in modo che possiate analizzare stdout senza filtrare la riga
  • In una sessione interattiva o una sessione in background, Claude Code la scrive al log di debug invece; eseguire con --debug per catturarla in ~/.claude/debug/<session-id>.txt
Claude Code scrive la riga una volta per stringa di modello per processo. Scrive una riga separata per ogni ulteriore ID non riconosciuto, come uno che un subagente o funzionalità in background usa. Claude Code non scrive la riga per ID di provider che risolve a un modello che riconosce, come ID Amazon Bedrock us.anthropic.claude-..., ID di Google Cloud’s Agent Platform con un suffisso di versione @, e nomi di distribuzione Microsoft Foundry che contengono un ID di modello Claude. Claude Code controlla il modello dietro un ARN del profilo di inferenza dell’applicazione di Amazon Bedrock piuttosto che l’ARN stesso. Non scrive alcuna riga per un ARN che non può risolvere, come uno digitato male. Cosa fare:
  • Se avete impostato l’ID di proposito, come un alias di LLM gateway, aggiungere una voce modelOverrides al vostro file di impostazioni con l’ID come suo valore. Usare un ID di modello Anthropic come chiave, non un alias di famiglia come opus. Per my-proxy-model dalla riga di esempio, aggiungere questa voce:
    Claude Code allora tratta my-proxy-model come claude-opus-4-6 e smette di scrivere la riga.
  • Se l’ID nomina un modello più nuovo della vostra versione di Claude Code, eseguire claude update
  • Se l’ID è un typo, correggerlo in quale dei posti dove potete impostare un modello o variabili di alias lo contiene. Se query_source inizia con agent:, correggerlo dove impostate il modello del subagente invece.
Prima della v2.1.233, Claude Code non scriveva alcuna riga quando inviava una richiesta per un ID di modello che non riconosceva.

Le voci allow della sandbox vengono ignorate sotto un blocco gestito

Questo avviso in /status e claude doctor significa che le impostazioni gestite impostano allowManagedReadPathsOnly o allowManagedDomainsOnly, quindi le voci allowRead o allowedDomains nel file indicato non si applicano:
Per il blocco di rete, l’avviso nomina sandbox.network.allowedDomains e allowManagedDomainsOnly, e riporta only allowed domains (and WebFetch domain rules) from managed settings are honored. Cosa fare:
  • Non sei obbligato a intervenire sull’avviso
  • Se ti servono quei percorsi o domini e il blocco è impostato dalle impostazioni gestite della tua organizzazione, chiedi al tuo amministratore di aggiungerli a quelle impostazioni. L’avviso resta finché non rimuovi anche le voci dal file indicato.
  • Per far sparire l’avviso, rimuovi le voci dal file indicato. Per un file condiviso, come il .claude/settings.json di un progetto, puoi lasciare le voci per i colleghi senza il blocco e lasciare visibile l’avviso.

File di maschera sandbox stantii lasciati da una sessione uccisa

claude doctor stampa questo avviso nei suoi diagnostici, e /status elenca la stessa riga. Appare su Linux e WSL2 quando sandboxing è abilitato con isolamento del filesystem attivo. Mentre un comando sandboxato esegue, la sandbox mantiene un rifiuto di scrittura su un file che non esiste ancora creando un segnaposto di lettura sola di 0 byte lì, e lo rimuove dopo. Una sessione uccisa prima che quella pulizia esegua, ad esempio da SIGKILL, lascia i segnaposti dietro. Sessioni successive li legano di sola lettura di nuovo ad ogni avvio, quindi una scrittura di impostazioni come salvare “Sì, e non chiedere di nuovo” fallisce dove uno siede.
Cosa fare:
  • Chiudere qualsiasi altra sessione di Claude Code in esecuzione in quel progetto, quindi eliminare ogni file elencato con rm. L’avviso nomina fino a tre file e conta il resto, quindi rieseguire claude doctor dopo l’eliminazione fino a quando l’avviso non appare più. Un segnaposto che la sandbox di un’altra sessione sta ancora usando è una parte viva della protezione di scrittura di quella sessione
  • Se una scelta di permesso che avete salvato con “Sì, e non chiedere di nuovo” non è rimasta, salvarla di nuovo dopo aver eliminato il segnaposto
Prima della v2.1.257, claude doctor non contrassegnava questi file; le versioni precedenti lasciano gli stessi segnaposti dietro quando una sessione viene uccisa.

Le risposte sembrano di qualità inferiore al solito

Se le risposte di Claude sembrano meno capaci di quanto ti aspetti ma non viene mostrato alcun errore, la causa è solitamente lo stato della conversazione piuttosto che il modello stesso. Claude Code non cambia silenziosamente le versioni del modello. Può passare a un modello di fallback in questi casi:
  • Un --fallback-model configurato subentra dopo un errore di disponibilità, solo per quel turno, con un avviso nella trascrizione
  • Un controllo di avvio di Amazon Bedrock o della piattaforma Agent di Google Cloud trova il tuo modello predefinito non disponibile, oppure il tuo account perde l’accesso ad esso durante la sessione
  • Il fallback automatico del modello su Fable 5.1, Fable 5, Opus 5.5, Sonnet 5.5 e Opus 5 sposta la sessione al modello di fallback della categoria contrassegnata, quando quella categoria ne ha uno, e mostra un avviso nella trascrizione
Il controllo della selezione del modello di seguito cattura il secondo e il terzo caso; il primo appare come un avviso nella trascrizione piuttosto che come un cambio /model. La configurazione del modello spiega quando si applica ogni fallback. Controlla prima questi elementi:
  • Selezione del modello: esegui /model per confermare che sei sul modello che ti aspetti. Una scelta /model precedente o una variabile di ambiente ANTHROPIC_MODEL potrebbe averti messo su un modello più piccolo di quello che intendevi.
  • Livello di sforzo: esegui /effort per controllare il livello di ragionamento attuale e aumentarlo per il debug difficile o il lavoro di progettazione. I valori predefiniti variano in base al modello, quindi controlla prima di assumere che sei al di sotto del massimo. Vedi Regola il livello di sforzo per i valori predefiniti per modello e il collegamento ultrathink.
  • Pressione del contesto: esegui /context per vedere quanto è pieno il window. Se è vicino alla capacità, esegui /compact a un punto naturale o /clear per ricominciare da capo. Vedi Esplora la finestra di contesto per come auto-compact influisce sui turni precedenti.
  • Istruzioni obsolete: file CLAUDE.md grandi o obsoleti e definizioni di strumenti MCP consumano contesto e possono indirizzare le risposte. Il controllo /doctor contrassegna i file di memoria sovradimensionati e le estensioni inutilizzate, e /context mostra l’utilizzo dei token degli strumenti MCP. Prima della v2.1.205, /doctor apriva una schermata di diagnostica che contrassegnava i file di memoria sovradimensionati e le definizioni dei subagent.
Quando una risposta va male, il rewind di solito funziona meglio che rispondere con correzioni. Premi Esc due volte o esegui /rewind per tornare indietro prima del turno sbagliato, quindi riformula il prompt con più specifiche. Correggere nel thread mantiene il tentativo sbagliato nel contesto, il che può ancorare le risposte successive ad esso. Vedi Checkpointing. Se la qualità sembra ancora non corretta dopo aver controllato quanto sopra, esegui /feedback e descrivi cosa ti aspettavi rispetto a quello che hai ottenuto. Il feedback inviato in questo modo include la trascrizione della conversazione, che è il modo più veloce per Anthropic per diagnosticare una vera regressione. Vedi Segnala un errore se /feedback non è disponibile nel tuo ambiente. Se Claude ti avverte di un sospetto prompt injection, o rifiuta una richiesta a causa di un sospetto injection, e il testo che l’avviso nomina è contesto che Claude Code aggiunge automaticamente alla conversazione piuttosto che contenuto di file o web, esegui claude update e riprova. Se l’avviso si ripete dopo l’aggiornamento, segnalalo piuttosto che incollare il contenuto contrassegnato di nuovo nel prompt. Prima della v2.1.201, Sonnet 5 rifiutava alcune richieste allo stesso modo.

Segnalare un errore

Per gli errori dei componenti non trattati in questa pagina, consultare la guida pertinente: Se un errore non è elencato qui o la correzione suggerita non aiuta:
  • Eseguire /feedback all’interno di Claude Code per inviare la trascrizione e una descrizione ad Anthropic. Il comando offre anche di aprire un problema GitHub precompilato. L’invio ad Anthropic richiede l’autenticazione. Su Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry e altri provider di terze parti, o quando non sono configurate credenziali Anthropic, /feedback salva un archivio locale che è possibile inviare al rappresentante dell’account Anthropic.
  • Eseguire claude doctor dalla shell per una diagnostica di sola lettura dell’installazione, oppure eseguire il checkup /doctor all’interno di Claude Code per trovare e risolvere i problemi di configurazione
  • Controllare status.claude.com per gli incidenti attivi
  • Cercare i problemi esistenti su GitHub