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 | 同样的架构不匹配,这是一个 beta 工具字段。从 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,说明该标头没有到达接受它的后端。
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 等 beta 工具架构字段(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 起,托管设置可以保持工具搜索开启);自适应推理由模型选择,而不是由 beta 选择,因此仍会启用。将其放入 ~/.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 会将发送的 beta 标头和字段限制为提供商接受的内容(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=1如果你通过 Kunavo 调用
Kunavo 是本页面所讨论的网关之一。直到 2026 年 9 月 24 日,Kunavo 的 /v1/messages 会按原样将你的 JSON 正文转发到上游,其中包括 context_management,但会丢弃 anthropic-beta——也就是 Claude Code 错误参考文档所称的“转发正文、丢弃标头”组合;Claude Code 通过 Kunavo 的请求因该消息而失败的情况持续到 2026 年 9 月初,所有这些失败请求都发生在一个于 9 月 11 日退役的上游通道上。Kunavo 现在会转发不会改变请求成本的 anthropic-beta 值,其中包括 context-management-2025-06-27,并丢弃其他值,例如快速模式、压缩、服务端回退和 1M 上下文 beta;使用快速模式、服务端回退、压缩或 advisor 工具的请求会收到一个指出该字段的 400。2026 年 9 月 24 日的测试表明,当前为 Claude 提供服务的通道在有无该标头的情况下都接受 context_management,因此使用 Kunavo 时应该不需要设置 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS。无论收到什么标头,该通道都会自行决定接受哪些预发布字段:同一测试中,无论是否带有相应标头,它都将 output_config.task_budget 和系统消息的 clear_at 拒绝为额外输入。如果拒绝错误传达到你这里,它会以 HTTP 400、类型为 invalid_request_error 的形式到达,并携带上游的消息文本以及附加在末尾的上游请求 ID;Kunavo 和 Claude Code 都不会重试,也不会对此计费。 Claude Code 在 Kunavo 上的其余设置请参阅 Claude Code 集成指南.
常见问题
“context_management: Extra inputs are not permitted”是什么意思?
API 或网关后面的后端收到了它不接受的 context_management 字段。在 Anthropic API 上,该字段需要上下文编辑 beta 标头(context-management-2025-06-27);Claude Code 的错误参考文档将此消息归因于剥离了 anthropic-beta 标头的代理或网关。Claude Code 会成对发送该字段和标头,因此中间环节要么丢弃了标头,要么将请求转发到了使用不同架构的后端。
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 会关闭思考或提示词缓存吗?
不会。自适应推理由模型选择,而不是由 beta 选择;标准提示词缓存(cache_control)也没有对应的 beta。该开关移除的是预发布功能——beta 标头、beta 工具字段、上下文管理——以及 MCP 工具搜索,因此 MCP 工具会预先加载。对于使用手动扩展思考的旧模型,工具调用之间的交错思考需要 beta 标头,因此该功能也会被关闭。
有没有只关闭 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,因为该版本让开关能够移除 beta 工具字段。设置该开关并保持更新。
错误改为命名 tools.0.custom.eager_input_streaming
同一种架构不匹配,但字段不同:工具架构字段到达了拒绝它的后端。在自定义基础 URL 后面,只有设置 CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1 时,Claude Code 才会发送该字段——细粒度工具流式传输。从 2.1.77 起,该开关会移除 beta 工具字段;2.1.80 修复了通过代理、Bedrock 和 Vertex 使用细粒度工具流式传输时出现的 400 错误。