Torna alle guide
Risoluzione dei problemi·23 settembre 2026·6 min di lettura

Claude Code “context_management: Extra inputs are not permitted” — l'header beta che non è arrivato

Claude Code invia il campo context_management insieme all'header anthropic-beta che lo abilita, e questo 400 significa che il campo ha raggiunto un backend che non lo accetta: un gateway o proxy ha eliminato l'header, oppure ha inoltrato la richiesta a un backend con uno schema diverso, come Amazon Bedrock. Claude Code non ritenta la richiesta. Imposta CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 (Claude Code 2.1.27 o successivo) per impedire l'invio del campo, oppure fai inoltrare anthropic-beta dal gateway.

Ultima revisione: .

Claude Code invia il campo context_management insieme all'header anthropic-beta che lo abilita, e questo 400 significa che il campo ha raggiunto un backend che non lo accetta: un gateway o proxy ha eliminato l'header, oppure ha inoltrato la richiesta a un backend con uno schema diverso, come Amazon Bedrock. Claude Code non ritenta la richiesta. Imposta CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 (Claude Code 2.1.27 o successivo) per impedire l'invio del campo, oppure fai inoltrare anthropic-beta dal gateway.

L’errore

risposta (HTTP 400)
// Through Kunavo, if a channel rejects the field: the upstream message, typed as
// Anthropic types a 400; no request_id field, the upstream's own id is appended:
{"type":"error","error":{"type":"invalid_request_error","message":"context_management: Extra inputs are not permitted (request id: …)"}}

// From Anthropic's API directly, as Claude Code prints it:
//   API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"context_management: Extra inputs are not permitted"},"request_id":"req_011C..."}

// request_id varies per request; a gateway may drop it, or append its own id to the message.
// Same mismatch, other fields: tools.0.custom.eager_input_streaming, tools.N.custom.defer_loading

Cause e soluzioni in breve

CausaSoluzione
Un gateway inoltra il body ma elimina anthropic-betaInoltra l'header senza modificarlo oppure imposta CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 sul client.
Un gateway in formato Anthropic davanti ad Amazon Bedrock o Google CloudIndirizza Claude Code al formato proprietario di quel provider (CLAUDE_CODE_USE_BEDROCK o CLAUDE_CODE_USE_VERTEX), oppure imposta il flag.
Claude Code precedente alla 2.1.27Aggiorna. Prima della 2.1.27 il flag non copriva la gestione del contesto.
L'errore nomina eager_input_streaming o defer_loadingLo stesso disallineamento, un campo beta degli strumenti. Il flag li rimuove dalla 2.1.77 in poi.

Conferma che manca l'header

Claude Code abbina ogni campo del body pre-release al valore anthropic-beta che lo abilita, e i due elementi devono viaggiare insieme: un gateway che rimuove l'header ma inoltra il body produce 400 netti, e la funzionalità si disattiva silenziosamente solo quando mancano entrambi (https://code.claude.com/docs/en/llm-gateway-protocol#feature-pass-through, a settembre 2026). Invia una richiesta al tuo URL di base con il campo e il relativo header, nella forma usata dalla pagina di Anthropic sull'editing del contesto, senza il relativo strumento di ricerca web (https://platform.claude.com/docs/en/build-with-claude/context-editing). Lo stesso 400 con l'header presente significa che l'header non sta raggiungendo un backend che lo accetta.

check_header.sh
curl -s "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: context-management-2025-06-27" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 64,
       "messages": [{"role": "user", "content": "ping"}],
       "context_management": {"edits": [{"type": "clear_tool_uses_20250919"}]}}'

Impedisci a Claude Code di inviarlo: CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

Questa è la correzione documentata lato client: il riferimento agli errori di Claude Code la indica per questo messaggio come soluzione alternativa quando non è possibile fare in modo che il gateway inoltri l'header (https://code.claude.com/docs/en/errors#extra-inputs-are-not-permitted). Rimuove gli header anthropic-beta specifici di Anthropic e i campi beta dello schema degli strumenti come defer_loading ed eager_input_streaming (https://code.claude.com/docs/en/env-vars), e la guida ai gateway aggiunge che interrompe anche l'invio dei campi pre-release del body, inclusa la gestione del contesto (https://code.claude.com/docs/en/llm-gateway-protocol#disable-pre-release-capabilities). Richiede Claude Code 2.1.27 o successivo: quella release, del 30 gennaio 2026, è quella il cui changelog afferma che il flag evita ora l'errore di gestione del contesto per gli utenti dei gateway (https://code.claude.com/docs/en/changelog). Il costo sono le funzionalità pre-release e la ricerca degli strumenti MCP, quindi gli strumenti MCP vengono caricati in anticipo (dalla 2.1.227, le impostazioni gestite possono mantenere attiva la ricerca degli strumenti); il ragionamento adattivo viene scelto dal modello, non da una beta, e rimane attivo. Inseriscilo nel blocco env di ~/.claude/settings.json per applicarlo a ogni sessione (https://code.claude.com/docs/en/settings-reference#env).

disable_betas.sh
claude --version          # 2.1.27 or later
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
claude

# Every session, in ~/.claude/settings.json:
#   { "env": { "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1" } }

Se gestisci il gateway: inoltra anthropic-beta oppure adatta il formato

La guida ai gateway di Claude Code indica anthropic-version e anthropic-beta come header da inoltrare senza modifiche su una route in formato Anthropic e chiede ai gateway di far passare gli header e i campi del body anthropic-* come liste aperte invece di consentire solo quelli attualmente noti, perché ogni release ne aggiunge di nuovi. Indica una fonte comune di questo 400: un gateway che accetta richieste in formato Anthropic e le inoltra ad Amazon Bedrock. Se questa è la tua configurazione, esponi il formato proprietario del provider e indirizza Claude Code verso di esso con le variabili del provider riportate sotto; su quella route Claude Code limita gli header e i campi beta inviati a quelli accettati dal provider (https://code.claude.com/docs/en/llm-gateway-connect#route-to-a-cloud-provider-through-a-gateway).

bedrock_format.sh
# Only if your gateway exposes the Amazon Bedrock format:
export ANTHROPIC_BEDROCK_BASE_URL=https://llm-gateway.example.com/bedrock
export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1
export CLAUDE_CODE_USE_BEDROCK=1

Se chiami tramite Kunavo

Kunavo era uno dei gateway trattati in questa pagina. Fino al 24 settembre 2026 il suo /v1/messages inoltrava il body JSON upstream così com'era, incluso context_management, ma eliminava anthropic-beta — la combinazione body inoltrato, header eliminato citata dal riferimento agli errori di Claude Code — e le richieste di Claude Code tramite Kunavo fallivano con questo messaggio fino ai primi di settembre 2026, tutte su un canale upstream ritirato l'11 settembre. Kunavo ora inoltra i valori anthropic-beta che non modificano il costo di una richiesta, tra cui context-management-2025-06-27, e rimuove gli altri, come la modalità rapida, i fallback lato server, la compattazione e la beta del contesto 1M; una richiesta che usa la modalità rapida, i fallback lato server, la compattazione o lo strumento advisor restituisce un 400 che nomina il campo. Il canale che oggi serve Claude ha accettato context_management con e senza il relativo header in un test del 24 settembre 2026, quindi con Kunavo non dovrebbe essere necessario CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS. Quel canale decide quali campi pre-release accetta indipendentemente dagli header ricevuti: nello stesso test ha rifiutato output_config.task_budget e clear_at nel messaggio di sistema come input aggiuntivi, con o senza i relativi header. Se un rifiuto ti raggiunge, arriva come HTTP 400 di tipo invalid_request_error, contenente il testo del messaggio upstream con l'ID della richiesta upstream aggiunto; né Kunavo né Claude Code ritentano la richiesta e non viene fatturata. Il resto della configurazione di Claude Code per Kunavo si trova in la guida all'integrazione di Claude Code.

Domande frequenti

Cosa significa “context_management: Extra inputs are not permitted”?

L'API, o il backend dietro il tuo gateway, ha ricevuto un campo context_management che non accetta. Sull'API di Anthropic quel campo richiede l'header beta di modifica del contesto (context-management-2025-06-27), e il riferimento agli errori di Claude Code attribuisce questo messaggio a un proxy o gateway che ha eliminato l'header anthropic-beta. Claude Code invia il campo e l'header come coppia, quindi qualcosa nel mezzo ha eliminato l'header oppure ha inoltrato la richiesta a un backend con uno schema diverso.

CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS disattiva il thinking o il prompt caching?

No. Il ragionamento adattivo viene selezionato dal modello, non da una beta, e il prompt caching standard (cache_control) non ha un abbinamento beta. Il flag rimuove le funzionalità pre-release — header beta, campi beta degli strumenti, gestione del contesto — oltre alla ricerca degli strumenti MCP, quindi gli strumenti MCP vengono caricati in anticipo. Sui modelli più vecchi che usano il thinking esteso manuale, il thinking intercalato tra le chiamate agli strumenti richiede un header beta, quindi viene rimosso anch'esso.

Esiste un interruttore che disattivi solo context_management?

Non uno documentato, a settembre 2026. Il flag copre tutte le funzionalità pre-release insieme — l'unica eccezione, dalla versione 2.1.227 di Claude Code, è mantenere attiva la ricerca degli strumenti MCP tramite le impostazioni gestite — e una richiesta di un interruttore solo per context_management (anthropics/claude-code#64510) è stata chiusa come inattiva. Non basarti su variabili che non compaiono nel riferimento alle variabili d'ambiente di Claude Code.

Dovrei fare il downgrade di Claude Code?

Nel gennaio 2026, alcuni commentatori su anthropics/claude-code#21612 hanno indicato la 2.1.20 come ultima versione funzionante, ma la correzione rilasciata è stata la 2.1.27, il cui changelog specifica che il flag copre questo errore. Un pin così vecchio inoltre non include la 2.1.77, che ha fatto sì che il flag rimuovesse i campi beta degli strumenti. Imposta il flag e mantieniti aggiornato.

L'errore nomina tools.0.custom.eager_input_streaming

Lo stesso tipo di disallineamento, ma un campo diverso: un campo dello schema di uno strumento ha raggiunto un backend che lo rifiuta. Dietro un URL di base personalizzato, Claude Code invia quel campo — streaming degli strumenti a granularità fine — solo se imposti CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1. Il flag rimuove i campi beta degli strumenti dalla 2.1.77, e la 2.1.80 ha corretto i 400 dello streaming degli strumenti a granularità fine attraverso proxy, Bedrock e Vertex.

Guide correlate

Ulteriori dettagli sul significato degli errori sono disponibili in riferimento agli errori; ottenere una chiave richiede un minuto tramite registrazione e la guida all’autenticazione.