Claude Codeは、context_managementフィールドを、それを有効にするanthropic-betaヘッダーとともに送信します。この400は、そのフィールドを受け入れないバックエンドにフィールドが到達したことを意味します。ゲートウェイまたはプロキシがヘッダーを削除したか、Amazon Bedrockのように異なるスキーマを持つバックエンドへリクエストを転送したということです。Claude Codeはこれを再試行しません。CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1を設定してフィールドの送信を停止するか(Claude Code 2.1.27以降)、ゲートウェイがanthropic-betaを転送するようにしてください。
エラー
// 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)に向けるか、フラグを設定してください。 |
| Claude Code 2.1.27未満 | 更新してください。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)。Anthropicのコンテキスト編集ページが使用する形式からウェブ検索ツールを除いた形で、フィールドとそのヘッダーを付けてベースURLへ1件のリクエストを送信してください(https://platform.claude.com/docs/en/build-with-claude/context-editing)。ヘッダーを付けても同じ400になる場合、そのヘッダーは、それを受け入れるバックエンドに到達していません。
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)。
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)。
# 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=1Kunavo経由で呼び出している場合
Kunavoは、このページが扱うゲートウェイの1つでした。2026年9月24日まで、/v1/messagesは送信されたJSON本文をそのまま上流へ渡していました。context_managementも含まれますが、anthropic-betaは削除していました。これはClaude Codeのエラーリファレンスが挙げる「本文は転送されるがヘッダーは削除される」組み合わせであり、2026年9月初旬まで、Kunavo経由のClaude Codeリクエストはこのメッセージで失敗しました。いずれも9月11日に廃止された上流チャネル上で発生していました。現在のKunavoは、リクエスト料金を変えないanthropic-beta値(context-management-2025-06-27など)を転送し、それ以外(fast mode、compaction、サーバー側フォールバック、1Mコンテキストベータなど)を削除します。fast mode、サーバー側フォールバック、compaction、またはadvisorツールを使用するリクエストは、フィールド名を示す400になります。2026年9月24日のテストでは、現在Claudeに提供されているチャネルは、ヘッダーあり・なしの両方で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-management-2025-06-27)が必要です。Claude Codeのエラーリファレンスでは、このメッセージの原因を、anthropic-betaヘッダーを削除したプロキシまたはゲートウェイとしています。Claude Codeはフィールドとヘッダーをペアで送信するため、途中でヘッダーが削除されたか、異なるスキーマを持つバックエンドへリクエストが転送されました。
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASはthinkingやプロンプトキャッシュを無効にしますか?
いいえ。アダプティブ推論はベータ版ではなくモデルによって選択され、標準のプロンプトキャッシュ(cache_control)にはベータ版の組み合わせがありません。このフラグが削除するのは、リリース前機能(ベータヘッダー、ベータ版ツールフィールド、コンテキスト管理)とMCPツール検索であり、そのためMCPツールは事前に読み込まれます。手動の拡張thinkingを使用する古いモデルでは、ツール呼び出し間のインターリーブ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を示す
同じ種類の不一致ですが、別のフィールドです。ツールスキーマフィールドが、それを拒否するバックエンドに到達しました。カスタムベースURLの背後では、CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1を設定した場合に限り、Claude Codeはそのフィールド(きめ細かなツールストリーミング)を送信します。2.1.77以降では、このフラグがベータ版ツールフィールドを削除します。また、2.1.80では、プロキシ、Bedrock、Vertex経由でのきめ細かなツールストリーミングの400が修正されました。