Voltar aos guias
Solução de problemas·23 de setembro de 2026·6 min de leitura

Claude Code “context_management: Extra inputs are not permitted” — o cabeçalho beta que não chegou

O Claude Code envia o campo context_management junto com o cabeçalho anthropic-beta que o ativa, e este 400 significa que o campo chegou a um backend que não o aceitaria: um gateway ou proxy removeu o cabeçalho, ou encaminhou a solicitação para um backend com um esquema diferente, como o Amazon Bedrock. O Claude Code não repete essa solicitação. Defina CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 (Claude Code 2.1.27 ou posterior) para interromper o envio do campo, ou faça o gateway encaminhar anthropic-beta.

Última revisão em .

O Claude Code envia o campo context_management junto com o cabeçalho anthropic-beta que o ativa, e este 400 significa que o campo chegou a um backend que não o aceitaria: um gateway ou proxy removeu o cabeçalho, ou encaminhou a solicitação para um backend com um esquema diferente, como o Amazon Bedrock. O Claude Code não repete essa solicitação. Defina CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 (Claude Code 2.1.27 ou posterior) para interromper o envio do campo, ou faça o gateway encaminhar anthropic-beta.

O erro

response (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

Causas e soluções em resumo

CausaSolução
Um gateway encaminha o corpo, mas remove anthropic-betaEncaminhe o cabeçalho sem alterações ou defina CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 no cliente.
Um gateway no formato Anthropic diante do Amazon Bedrock ou do Google CloudAponte o Claude Code para o formato próprio desse provedor (CLAUDE_CODE_USE_BEDROCK ou CLAUDE_CODE_USE_VERTEX) ou defina o sinalizador.
Claude Code anterior à versão 2.1.27Atualize. Antes da versão 2.1.27, o sinalizador não abrangia o gerenciamento de contexto.
O erro menciona eager_input_streaming ou defer_loadingA mesma incompatibilidade, um campo de ferramenta beta. O sinalizador remove esses campos a partir da versão 2.1.77.

Confirme se o cabeçalho é o que está faltando

O Claude Code associa cada campo de corpo de pré-lançamento ao valor anthropic-beta que o ativa, e os dois precisam viajar juntos: um gateway que remove o cabeçalho enquanto permite a passagem do corpo produz erros 400 definitivos, e somente quando ambos estão ausentes o recurso é desativado silenciosamente (https://code.claude.com/docs/en/llm-gateway-protocol#feature-pass-through, em setembro de 2026). Envie uma solicitação à sua URL base com o campo e seu cabeçalho, no formato usado pela página de edição de contexto da Anthropic, sem a ferramenta de pesquisa na Web (https://platform.claude.com/docs/en/build-with-claude/context-editing). O mesmo 400 com o cabeçalho presente significa que o cabeçalho não está chegando a um backend que o aceite.

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"}]}}'

Impedir que o Claude Code o envie: CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

Esta é a correção documentada no lado do cliente: a própria referência de erros do Claude Code a fornece para esta mensagem como alternativa quando não é possível fazer o gateway encaminhar o cabeçalho (https://code.claude.com/docs/en/errors#extra-inputs-are-not-permitted). Ela remove os cabeçalhos anthropic-beta específicos da Anthropic e campos de esquema de ferramentas beta, como defer_loading e eager_input_streaming (https://code.claude.com/docs/en/env-vars), e o guia do gateway acrescenta que também interrompe os campos de corpo de pré-lançamento, incluindo o gerenciamento de contexto (https://code.claude.com/docs/en/llm-gateway-protocol#disable-pre-release-capabilities). É necessária a versão 2.1.27 ou posterior do Claude Code: essa versão, de 30 de janeiro de 2026, é aquela cujo changelog informa que o sinalizador agora evita o erro de gerenciamento de contexto para usuários de gateways (https://code.claude.com/docs/en/changelog). O custo é deixar de usar recursos de pré-lançamento e a pesquisa de ferramentas MCP, portanto as ferramentas MCP são carregadas antecipadamente (a partir da versão 2.1.227, as configurações gerenciadas podem manter a pesquisa de ferramentas ativada); o raciocínio adaptativo é escolhido pelo modelo, não por um beta, e continua ativado. Coloque-o no bloco env de ~/.claude/settings.json para aplicá-lo a todas as sessões (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 você executa o gateway: encaminhe anthropic-beta ou faça a ponte entre os formatos

O guia de gateways do Claude Code lista anthropic-version e anthropic-beta como cabeçalhos a serem encaminhados sem alterações em uma rota no formato Anthropic e solicita que os gateways transmitam cabeçalhos e campos de corpo anthropic-* como listas abertas, em vez de permitir apenas os vistos atualmente, porque cada versão adiciona novos elementos. Ele cita uma fonte comum desse 400: um gateway que aceita solicitações no formato Anthropic e as encaminha para o Amazon Bedrock. Se essa for sua configuração, disponibilize o formato próprio do provedor e aponte o Claude Code para ele usando as variáveis do provedor abaixo; nessa rota, o Claude Code limita os cabeçalhos beta e campos que envia àqueles aceitos pelo provedor (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 você estiver chamando pela Kunavo

A Kunavo foi um dos gateways abordados por esta página. Até 24 de setembro de 2026, o /v1/messages encaminhava seu corpo JSON upstream como recebido, incluindo context_management, mas removia anthropic-beta — a combinação de corpo encaminhado e cabeçalho removido citada na referência de erros do Claude Code —, e as solicitações do Claude Code pela Kunavo falhavam com esta mensagem até o início de setembro de 2026, todas em um canal upstream desativado em 11 de setembro. Agora a Kunavo encaminha os valores de anthropic-beta que não alteram o custo de uma solicitação, incluindo context-management-2025-06-27, e remove os demais, como modo rápido, fallbacks no lado do servidor, compactação e o beta de contexto de 1M; uma solicitação que usa modo rápido, fallbacks no lado do servidor, compactação ou a ferramenta advisor recebe um 400 que identifica o campo. O canal que atende Claude hoje aceitou context_management com e sem o cabeçalho em um teste de 24 de setembro de 2026, portanto você não deve precisar de CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS com a Kunavo. Esse canal decide quais campos de pré-lançamento aceita, independentemente dos cabeçalhos recebidos: no mesmo teste, rejeitou output_config.task_budget e clear_at em uma mensagem do sistema como entradas extras, com ou sem seus cabeçalhos. Se uma rejeição chegar até você, ela chega como HTTP 400 do tipo invalid_request_error, contendo o texto da mensagem do upstream com o próprio ID de solicitação do upstream anexado; nem a Kunavo nem o Claude Code repetem a solicitação, e ela não é cobrada. O restante da configuração do Claude Code para a Kunavo está em o guia de integração do Claude Code.

Perguntas frequentes

O que significa “context_management: Extra inputs are not permitted”?

A API, ou o backend por trás do seu gateway, recebeu um campo context_management que não aceita. Na API da Anthropic, esse campo precisa do cabeçalho beta de edição de contexto (context-management-2025-06-27), e a referência de erros do Claude Code atribui essa mensagem a um proxy ou gateway que removeu o cabeçalho anthropic-beta. O Claude Code envia o campo e o cabeçalho como um par, portanto algo no caminho removeu o cabeçalho ou encaminhou a solicitação para um backend com um esquema diferente.

CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS desativa o pensamento ou o cache de prompts?

Não. O raciocínio adaptativo é selecionado pelo modelo, não por um beta, e o cache padrão de prompts (cache_control) não tem um pareamento beta. O que o sinalizador remove são recursos de pré-lançamento — cabeçalhos beta, campos de ferramentas beta e gerenciamento de contexto — além da pesquisa de ferramentas MCP, portanto as ferramentas MCP são carregadas antecipadamente. Em modelos mais antigos que usam pensamento estendido manual, o pensamento intercalado entre chamadas de ferramentas precisa de um cabeçalho beta, portanto também é desativado.

Existe um sinalizador que desative apenas context_management?

Não há um sinalizador documentado, em setembro de 2026. O sinalizador abrange todos os recursos de pré-lançamento de uma vez — a única exceção, a partir do Claude Code 2.1.227, é manter a pesquisa de ferramentas MCP ativada por meio das configurações gerenciadas —, e uma solicitação de um sinalizador exclusivo para context_management (anthropics/claude-code#64510) foi encerrada por inatividade. Não dependa de variáveis que não estejam na referência de variáveis de ambiente do Claude Code.

Devo fazer downgrade do Claude Code?

Em janeiro de 2026, comentaristas em anthropics/claude-code#21612 relataram a versão 2.1.20 como a última que funcionava, mas a correção lançada foi a 2.1.27, cujo registro de alterações faz o sinalizador abranger este erro. Uma versão tão antiga também não inclui a 2.1.77, que fez o sinalizador remover campos de ferramentas beta. Defina o sinalizador e mantenha-se atualizado.

O erro menciona tools.0.custom.eager_input_streaming

É o mesmo tipo de incompatibilidade, mas com outro campo: um campo de esquema de ferramenta chegou a um backend que o rejeita. Atrás de uma URL base personalizada, o Claude Code envia esse campo — streaming de ferramentas com granularidade fina — somente se você definir CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1. O sinalizador remove campos de ferramentas beta a partir da versão 2.1.77, e a versão 2.1.80 corrigiu erros 400 de streaming de ferramentas com granularidade fina por meio de proxies, Bedrock e Vertex.

Guias relacionados

Mais detalhes sobre o significado dos erros estão em referência de erros; obter uma chave leva um minuto por meio de cadastro e da guia de autenticação.