가이드 목록으로
문제 해결·2026년 9월 23일·6분 분량

Claude Code “context_management: Extra inputs are not permitted” — 도착하지 않은 베타 헤더

Claude Code는 이를 활성화하는 anthropic-beta 헤더와 함께 context_management 필드를 보내며, 이 400 오류는 해당 필드가 이를 허용하지 않는 백엔드에 도달했다는 뜻입니다. 게이트웨이나 프록시가 헤더를 삭제했거나 Amazon Bedrock처럼 다른 스키마를 사용하는 백엔드로 요청을 전달했다는 의미입니다. Claude Code는 이를 재시도하지 않습니다. CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1을 설정해 필드 전송을 중지하거나(Claude Code 2.1.27 이상), 게이트웨이가 anthropic-beta를 전달하도록 하세요.

마지막 검토일: .

Claude Code는 이를 활성화하는 anthropic-beta 헤더와 함께 context_management 필드를 보내며, 이 400 오류는 해당 필드가 이를 허용하지 않는 백엔드에 도달했다는 뜻입니다. 게이트웨이나 프록시가 헤더를 삭제했거나 Amazon Bedrock처럼 다른 스키마를 사용하는 백엔드로 요청을 전달했다는 의미입니다. Claude Code는 이를 재시도하지 않습니다. CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1을 설정해 필드 전송을 중지하거나(Claude Code 2.1.27 이상), 게이트웨이가 anthropic-beta를 전달하도록 하세요.

오류

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

원인과 해결 방법 한눈에 보기

원인해결 방법
게이트웨이가 본문은 전달하지만 anthropic-beta는 삭제함헤더를 변경 없이 전달하거나 클라이언트에서 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1을 설정하세요.
Amazon Bedrock 또는 Google Cloud 앞에 있는 Anthropic 형식 게이트웨이Claude Code를 해당 제공업체의 자체 형식(CLAUDE_CODE_USE_BEDROCK 또는 CLAUDE_CODE_USE_VERTEX)으로 지정하거나 플래그를 설정하세요.
2.1.27보다 오래된 Claude Code업데이트하세요. 2.1.27 이전에는 이 플래그가 컨텍스트 관리를 대상으로 하지 않았습니다.
오류에 eager_input_streaming 또는 defer_loading이 대신 표시됨동일한 불일치이며 베타 도구 필드입니다. 2.1.77부터 플래그가 이를 제거합니다.

누락된 것이 헤더인지 확인하기

Claude Code는 각 시험판 본문 필드와 이를 활성화하는 anthropic-beta 값을 함께 보내며, 둘은 함께 전달되어야 합니다. 본문은 통과시키면서 헤더를 제거하는 게이트웨이는 확실한 400 오류를 일으키고, 둘 다 누락된 경우에만 기능이 조용히 꺼집니다(2026년 9월 기준 https://code.claude.com/docs/en/llm-gateway-protocol#feature-pass-through). 해당 필드와 헤더를 포함한 요청 하나를 기본 URL로 보내세요. Anthropic의 컨텍스트 편집 페이지 형식을 사용하되 웹 검색 도구는 제외합니다(https://platform.claude.com/docs/en/build-with-claude/context-editing). 헤더가 포함되어 있는데도 동일한 400이 발생한다면 헤더가 이를 허용하는 백엔드에 도달하지 않은 것입니다.

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

Claude Code가 이를 보내지 않도록 중지하기: CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

이는 문서화된 클라이언트 측 해결 방법입니다. Claude Code 자체 오류 참조는 게이트웨이가 헤더를 전달하도록 만들 수 없을 때 이 메시지의 대안으로 해당 설정을 제시합니다(https://code.claude.com/docs/en/errors#extra-inputs-are-not-permitted). Anthropic 전용 anthropic-beta 헤더와 defer_loading 및 eager_input_streaming 같은 베타 도구 스키마 필드를 제거하며(https://code.claude.com/docs/en/env-vars), 게이트웨이 가이드는 이 설정이 컨텍스트 관리까지 포함한 시험판 본문 필드도 중지한다고 설명합니다(https://code.claude.com/docs/en/llm-gateway-protocol#disable-pre-release-capabilities). Claude Code 2.1.27 이상이 필요합니다. 2026년 1월 30일 릴리스인 이 버전의 변경 로그에는 게이트웨이 사용자의 컨텍스트 관리 오류를 플래그가 방지한다고 적혀 있습니다(https://code.claude.com/docs/en/changelog). 이 설정을 사용하면 시험판 기능과 MCP 도구 검색을 사용할 수 없게 됩니다. 따라서 MCP 도구가 처음에 로드됩니다(2.1.227부터 관리형 설정으로 도구 검색을 계속 켤 수 있음). 적응형 추론의 사용 여부는 베타가 아니라 모델에 따라 결정되며 계속 활성화됩니다. 모든 세션에 적용하려면 ~/.claude/settings.json의 env 블록에 설정하세요(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" } }

게이트웨이를 운영한다면 anthropic-beta를 전달하거나 형식을 변환하세요

Claude Code의 게이트웨이 가이드는 Anthropic 형식 경로에서 anthropic-version 및 anthropic-beta를 변경 없이 전달할 헤더로 지정하고, 각 릴리스마다 새 헤더가 추가되므로 게이트웨이가 현재 확인된 헤더만 허용 목록에 넣지 말고 anthropic-* 헤더와 본문 필드를 개방형 목록으로 전달하도록 요구합니다. 이 400의 일반적인 원인으로 Anthropic 형식 요청을 받아 Amazon Bedrock으로 전달하는 게이트웨이를 들고 있습니다. 이 구성이면 아래의 제공업체 변수를 사용해 제공업체 자체 형식을 노출하고 Claude Code를 해당 형식으로 지정하세요. 그 경로에서는 Claude Code가 제공업체가 허용하는 베타 헤더와 필드만 전송하도록 제한합니다(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

Kunavo를 통해 호출하는 경우

Kunavo는 이 페이지가 다루는 게이트웨이 중 하나였습니다. 2026년 9월 24일까지 Kunavo의 /v1/messages는 context_management를 포함한 JSON 본문을 전송된 그대로 업스트림에 전달했지만 anthropic-beta는 삭제했습니다. 이는 Claude Code 오류 참조가 지목하는 ‘본문 전달, 헤더 삭제’ 조합이며, 2026년 9월 초까지 Kunavo를 통한 Claude Code 요청은 이 메시지와 함께 실패했습니다. 해당 요청은 모두 9월 11일에 폐기된 업스트림 채널에서 발생했습니다. 현재 Kunavo는 요청 비용을 변경하지 않는 anthropic-beta 값(그중 context-management-2025-06-27 포함)은 전달하고, fast mode, compaction, 서버 측 폴백 및 1M-context 베타 같은 나머지는 삭제합니다. fast mode, 서버 측 폴백, compaction 또는 advisor 도구를 사용하는 요청은 해당 필드를 명시한 400을 받습니다. 현재 Claude를 제공하는 채널은 2026년 9월 24일 테스트에서 헤더가 있거나 없어도 context_management를 허용했으므로 Kunavo에서 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS가 필요하지 않아야 합니다. 해당 채널은 도착한 헤더와 관계없이 어떤 시험판 필드를 허용할지 결정합니다. 같은 테스트에서 output_config.task_budget과 시스템 메시지의 clear_at을 헤더가 있거나 없어도 추가 입력으로 거부했습니다. 거부가 사용자에게 도달하면 invalid_request_error 유형의 HTTP 400으로 전달되며, 업스트림의 메시지 텍스트 뒤에 업스트림 자체 요청 ID가 추가됩니다. Kunavo와 Claude Code 모두 이를 재시도하지 않으며 요금도 청구되지 않습니다. Kunavo를 위한 Claude Code 설정의 나머지 내용은 Claude Code 통합 가이드에 있습니다.

자주 묻는 질문

“context_management: Extra inputs are not permitted”는 무엇을 의미하나요?

API 또는 게이트웨이 뒤의 백엔드가 허용하지 않는 context_management 필드를 받았다는 뜻입니다. Anthropic의 API에서는 이 필드에 context-editing 베타 헤더(context-management-2025-06-27)가 필요하며, Claude Code의 오류 참조 문서에서는 이 메시지의 원인을 anthropic-beta 헤더를 제거한 프록시 또는 게이트웨이로 설명합니다. Claude Code는 필드와 헤더를 한 쌍으로 전송하므로, 중간의 무언가가 헤더를 삭제했거나 다른 스키마를 사용하는 백엔드로 요청을 전달한 것입니다.

CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS를 사용하면 thinking이나 프롬프트 캐싱이 꺼지나요?

아니요. 적응형 추론은 베타가 아니라 모델에 의해 선택되며, 표준 프롬프트 캐싱(cache_control)에도 대응하는 베타가 없습니다. 이 플래그가 제거하는 것은 출시 전 기능인 베타 헤더, 베타 도구 필드, context management와 MCP 도구 검색이며, 그 결과 MCP 도구가 처음부터 로드됩니다. 수동 확장 thinking을 사용하는 이전 모델에서는 도구 호출 사이의 interleaved thinking에 베타 헤더가 필요하므로 이 기능도 함께 비활성화됩니다.

context_management만 끄는 스위치가 있나요?

2026년 9월 기준으로 문서화된 스위치는 없습니다. 이 플래그는 모든 출시 전 기능을 한꺼번에 다룹니다. Claude Code 2.1.227부터의 유일한 예외는 관리형 설정을 통해 MCP 도구 검색을 계속 켜둘 수 있다는 점입니다. context_management만 제어하는 스위치 요청(anthropics/claude-code#64510)은 비활성 상태로 종료되었습니다. Claude Code의 환경 변수 참조 문서에 없는 변수에 의존하지 마세요.

대신 Claude Code를 다운그레이드해야 하나요?

2026년 1월 anthropics/claude-code#21612의 댓글 작성자들은 2.1.20이 작동한 마지막 버전이라고 보고했지만, 실제로 출시된 수정 버전은 2.1.27이며, 변경 로그에는 이 플래그가 해당 오류까지 다루도록 명시되어 있습니다. 그렇게 오래된 버전에 고정하면 플래그가 베타 도구 필드를 제거하도록 만든 2.1.77도 놓치게 됩니다. 플래그를 설정하고 최신 버전을 유지하세요.

대신 오류에 tools.0.custom.eager_input_streaming이 표시됩니다

종류는 같은 불일치지만 필드가 다릅니다. 도구 스키마 필드가 이를 거부하는 백엔드에 도달한 것입니다. 사용자 지정 base URL 뒤에서 Claude Code는 CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1을 설정한 경우에만 해당 필드, 즉 세분화된 도구 스트리밍을 전송합니다. 2.1.77부터 이 플래그는 베타 도구 필드를 제거하며, 2.1.80에서는 프록시, Bedrock 및 Vertex를 통한 세분화된 도구 스트리밍의 400 오류가 수정되었습니다.

관련 가이드

오류 의미에 대한 자세한 내용은 오류 참조에서 확인할 수 있습니다. 가입 및 인증 가이드를 통해 1분이면 키를 받을 수 있습니다.