Claude Code 接第三方网关常见报错与官方修复(2026)
截至 2026-10-07,用第三方网关或自定义 ANTHROPIC_BASE_URL 时,Claude Code 常见的几类 400 报错,官方都已给出修复版本或应对办法:「400 … Input tag 'advisor_20260301'」升级到 2.1.276 及以上即可;网关拒绝结构化输出时,设 2.1.288 新增的 CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1;网关拒绝某个 beta 头却回了 400 以外的状态码导致请求失败,2.1.290 已修。「Extra inputs are not permitted」这类报错,官方错误参考归因于网关剥掉了 anthropic-beta 头,要让网关原样转发。本页按 Claude Code 官方变更日志与网关文档原句,逐条列出报错原文、原因和修复。
更新于 2026-10-08
四个要记住的版本与请求头
修复 advisor_20260301 的 400
官方变更日志:ANTHROPIC_BASE_URL 指向代理或网关时,每个请求都报「400 … Input tag 'advisor_20260301'」。这是 2.1.275 引入的回归,2026-09-18 发布的 2.1.276 修复。
新增 CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS
修复网关拒绝结构化输出时会话标题、记忆召回与 prompt hook 失败。设为 1 只去掉 output_config.format 字段和与之配对的 beta 值,其它预发布能力保持开启。
修复 beta 头以非 400 状态被拒的失败
官方变更日志:修复代理或网关以 400 以外的状态码拒绝 Claude Code 的某个 beta 头、或与第二个 beta 一起拒绝时,请求失败的问题(2026-10-05 发布)。
网关必须原样转发的请求头
官方网关兼容指南:这两个头原样转发;anthropic-beta 不要按单个值做白名单,因为这组值随 Claude Code 版本变化。
为什么一接网关就冒出 400
截至 2026-10-07,Claude Code 经第三方网关时的 400 主要有两个来源。一是客户端版本回归,例如 2.1.265–2.1.267 的 Artifact 工具 schema、2.1.275 的 advisor 工具条目,升级即可。二是网关没有把 beta 头和与之配对的请求体字段一起转发。官方兼容指南写明:Claude Code 把 ANTHROPIC_BASE_URL 网关当作 Anthropic 格式端点,发给它的 beta 头和请求体字段与发给 api.anthropic.com 的相同;网关剥掉头却放过请求体,或把请求体转给 schema 不同的服务,就会产生硬性 400,只有两半同时缺席时功能才会安静地关掉。指南还提醒,网关为内容审查改写请求体,同样会拆散这种配对。
2.1.285 起:自定义端点默认按 1M 运行
Claude Code 2.1.285(2026-09-29 发布)的变更日志原文是「Changed sessions behind a custom ANTHROPIC_BASE_URL to use the 1M context window of models that have one (Opus 4.7+, Sonnet 5+, Fable); run /autocompact 200k if your gateway stops at 200K」。也就是说,有 1M 窗口的模型(Opus 4.7+、Sonnet 5+、Fable)在自定义端点下按 1M 运行,网关只到 200K 时运行 /autocompact 200k。官方模型配置页同时写明,Claude Code 探测不到网关或其背后服务器设的更低上限;网关拒绝 200K tokens 以上的请求时,在启动 Claude Code 的环境里设 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000。
时间线(GitHub 发布日期)
Claude Code 2.1.276 发布,修复 ANTHROPIC_BASE_URL 指向代理或网关时每个请求都报「400 … Input tag 'advisor_20260301'」的问题,这是前一天发布的 2.1.275 引入的回归。
2.1.288 发布,新增 CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS;前一天的 2.1.287 已让 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 也去掉会话标题与 prompt hook 请求里的结构化输出格式。
2.1.290 发布,修复网关以 400 以外的状态码拒绝 beta 头、或与第二个 beta 一起拒绝时的请求失败。截至 2026-10-07,最新版本是 2.1.292(2026-10-06 发布)。
已确认 vs 没有核实到的
已确认(逐字可核)
以下均可在 Claude Code 官方变更日志与文档中逐字核对:2.1.276 修复 advisor_20260301 的 400(2.1.275 回归),2.1.280 起开着 advisor 时遇到同样的拒绝会去掉该条目重试一次;2.1.287 让 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 覆盖结构化输出格式,2.1.288 新增 CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS;2.1.290 修复 beta 头以非 400 状态码被拒;2.1.285 起自定义端点下有 1M 窗口的模型默认按 1M;网关须原样转发 anthropic-version(当前为 2023-06-01)与 anthropic-beta;Claude Code 的自动恢复按错误原文匹配,所以错误响应体也要原样转发。各版本发布日期取自 GitHub Releases。
没有核实到 / 官方未写明
三件事官方没有给答案,别据此下结论。一是 2.1.290 的变更日志没有给出报错原文,也没点名是哪个 beta 头。二是你接的网关转发哪些头、校验哪些字段、上下文上限多少,取决于网关本身,官方文档不替它回答,Claude Code 也探测不到网关设的更低上限。三是 Claude Code 发送的能力集合随版本增长,官方建议用新版本测试网关,而不是固定一份观察到的清单;所以本页清单不是终版,也不对任何网关(包括 QCode)是否放行某个具体 beta 值作承诺。
怎么选:升级、改网关,还是设变量
升级 Claude Code vs 设变量止血
版本回归类报错首选升级:2.1.265–2.1.267 的工具 schema 400 升到 2.1.268 及以上,2.1.275 的 advisor_20260301 升到 2.1.276 及以上。暂时不能升级时,官方给的止血办法分别是关掉 Artifact 工具(CLAUDE_CODE_DISABLE_ARTIFACT=1)和设 CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1。升级命令照官方安装页:claude update;npm 安装用同一页给的 npm install -g @anthropic-ai/claude-code@latest。
DISABLE_EXPERIMENTAL_BETAS vs DISABLE_STRUCTURED_OUTPUTS
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 范围大:去掉 context management 及其 context_management 字段、strict 与 defer_loading 等 beta 工具字段、结构化输出的 output_config.format(需 2.1.287+)、output_config.task_budget 和 MCP 工具搜索;但不去掉扩展上下文、交错思考与 effort 的 beta 值,也不去掉你自己用 ANTHROPIC_BETAS 加的值。CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1(需 2.1.288+)只去掉结构化输出的格式字段和配对的 beta 值,其它预发布能力保留。
报错原文 → 原因 → 修复(逐条)
①「400 … Input tag 'advisor_20260301'」,每个请求都失败 → 2.1.275 灰度期间,即使没开 advisor,请求也带着 advisor 工具条目,校验工具类型的网关会拒绝整个请求 → 升级到 2.1.276 及以上;停在 2.1.275 时设 CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1。开着 advisor 时遇到同样报错,2.1.280 起 Claude Code 会去掉该条目重试一次,退出前对该 base URL 不再带 advisor。②「API Error: 400 ... Extra inputs are not permitted ... context_management」→ 代理或 LLM 网关剥掉了 anthropic-beta 请求头,API 于是拒绝依赖它的字段 → 让网关原样转发 anthropic-beta;兜底设 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1。官方说明 Claude Code 不会重试这类 400。③ 针对 anthropic-beta 头的「Unexpected value(s)」报错 → 网关拒绝了 beta 值 → 设 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1;网关以 400 以外的状态码拒绝 beta 头、或与第二个 beta 一起拒绝导致请求失败(变更日志未给出这种情况的报错原文),升级到 2.1.290 及以上;网关改写错误响应、导致每轮都以「API Error: 400」终止,2.1.275 已修。④ 点名 output_config 的 400,常见是「Extra inputs are not permitted」,表现为会话标题、记忆召回或 prompt hook 失败 → 网关后面的服务不接受结构化输出字段 → 2.1.288 及以上设 CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1,只去掉格式字段;或设 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1(2.1.287 起覆盖这一项),它不去掉 effort。⑤ 点名 thinking 或 adaptive 的 400,例如「Input tag 'adaptive' found」→ 网关后面的模型版本不接受自适应推理 → 升级网关后面的模型;Opus 4.6 与 Sonnet 4.6 也可改设 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1。⑥ 2.1.265–2.1.267 上每个请求都 400,网关用自己的话拒绝某个工具的 input schema 或其中的 pattern → Artifact 工具 schema 里的正则被这类端点拒绝 → 升级到 2.1.268 及以上,或关掉 Artifact 工具。⑦「API returned an empty or malformed response (HTTP 200)」→ 网关或中间代理回了非 API 响应,常见是 HTML 错误页或登录页 → 用 curl 直测,修好回非 API 响应的那一跳;网关把非流式回复标成 text/plain 引起的同一报错,2.1.271 已修。⑧ 网关用自己的话报上下文超限的 400,例如「ContextWindowExceededError」或「prompt token count of N exceeds the limit of M」→ 网关的上下文比模型原生窗口小,还改写了错误,Claude Code 认不出、不会自动压缩重试 → 先 /compact 救回会话;预防是把 CLAUDE_CODE_AUTO_COMPACT_WINDOW 设成网关上限(最小 100,000);2.1.285 起网关只到 200K 时运行 /autocompact 200k。
在 QCode 上
截至 2026-10-07,QCode 文档给的 Claude Code 接入写法是:ANTHROPIC_BASE_URL 填 https://api.qcode.cc/api(不带 /v1,末尾不带斜杠),ANTHROPIC_AUTH_TOKEN 填控制台创建的 cr_ 开头密钥;Claude 模型只能走 Anthropic 协议端点。QCode 故障排查页列出的修复与上面一致:2.1.275 的「400 … Input tag 'advisor_20260301'」升级到 ≥2.1.276;报「Unexpected value(s) … anthropic-beta」设 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1;并建议确认用的是最新版本,因为很多问题在新版本中已经修复。先跑文档里的 curl 自测:对 /api/v1/messages 发不带请求体的 POST,返回 400 说明路径与密钥都通,401 说明密钥无效。按 token 计费,各模型单价见 /models。
常见问题
「400 … Input tag 'advisor_20260301'」怎么修?
升级到 Claude Code 2.1.276 或更高版本。这是 2.1.275 的回归:灰度期间即使没开 advisor,请求也带着 advisor 工具条目,校验工具类型的网关会拒绝整个请求;2.1.276 起,除非你开启 advisor,否则在 ANTHROPIC_BASE_URL 网关后面不再发送这个条目。暂时不能升级就设 CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1。开着 advisor 也遇到同样拒绝时,2.1.280 起 Claude Code 会去掉该条目重试一次,之后对该 base URL 不再带 advisor,/advisor 在退出前也不可用。
「Extra inputs are not permitted」是网关的问题吗?
多数是。官方错误参考的说法是:Claude Code 与 API 之间的代理或 LLM 网关剥掉了 anthropic-beta 请求头,API 于是拒绝依赖它的字段,典型原文是「API Error: 400 ... Extra inputs are not permitted ... context_management」。根治是让网关原样转发 anthropic-beta;兜底是启动前设 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1。官方还提醒,有些 beta 不受这个变量控制,而且 Claude Code 不会重试 context management 与工具 schema 字段引起的 400。
网关要转发哪些请求头?
anthropic-version 与 anthropic-beta 必须原样转发;网关后面是 Claude Platform on AWS 时还要转发 anthropic-workspace-id。anthropic-version 当前值为 2023-06-01;anthropic-beta 整串原样转发,不要按单个值做白名单,因为这组值随 Claude Code 版本变化。凭据放在 Authorization 或 x-api-key 里,取决于你设的是哪个凭据变量;没有标注「原样转发」的头,网关可以自行读取或忽略。官方还要求原样转发错误响应体,因为 Claude Code 的自动重试按错误原文匹配。
ANTHROPIC_BETAS 和 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 有什么区别?
方向相反。ANTHROPIC_BETAS 是额外追加的 anthropic-beta 值(逗号分隔);官方说 Claude Code 已经会发它需要的 beta 头,这个变量用于在 Claude Code 原生支持之前提前启用某个 Anthropic API beta。CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 则是剥掉预发布的 anthropic-beta 值和与之配对的请求体字段,适用于网关报「Unexpected value(s)」或「Extra inputs are not permitted」时。后者不会剥掉你通过 ANTHROPIC_BETAS 自己加的值;网关拒绝的若正是这些值,需要你自己从 ANTHROPIC_BETAS 里去掉。
网关只支持 200K,2.1.285 之后怎么办?
运行 /autocompact 200k,这是 2.1.285 变更日志原文给的办法。2.1.285 起,自定义 ANTHROPIC_BASE_URL 下有 1M 窗口的模型(Opus 4.7+、Sonnet 5+、Fable)默认按 1M 运行,而官方模型配置页写明 Claude Code 探测不到网关设的更低上限。想每次启动都生效,就在启动 Claude Code 的环境里设 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000。如果网关用自己的话报超限(例如 ContextWindowExceededError),Claude Code 不会自动压缩重试,先手动运行 /compact。
在 QCode 上遇到这些报错,先做什么?
先确认 Claude Code 版本并升级到最新,QCode 文档也写明很多问题在新版本中已经修复;截至 2026-10-07 最新为 2.1.292,官方升级命令是 claude update。再核对配置:ANTHROPIC_BASE_URL 是 https://api.qcode.cc/api(不带 /v1,末尾不带斜杠),凭据放 ANTHROPIC_AUTH_TOKEN(以 Authorization: Bearer 头发出)。仍报「Unexpected value(s) … anthropic-beta」时,按 QCode 文档设 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1。
信息来源
版本号与修复内容:Claude Code 官方变更日志(GitHub 上 anthropics/claude-code 仓库的 CHANGELOG.md,2.1.268、2.1.271、2.1.275、2.1.276、2.1.280、2.1.285、2.1.287、2.1.288、2.1.290 条目),发布日期取自同一仓库的 GitHub Releases(UTC)。报错原因与修复:code.claude.com 上「Connect Claude Code to an LLM gateway」的排错表、网关兼容指南(Claude Code gateway compatibility guide)、错误参考(Error reference),以及环境变量、模型配置与安装(Advanced setup)三页。QCode 接入写法与排查顺序:docs.qcode.cc 的故障排查指南、环境变量配置、接入点与 API 格式三页。以上均于 2026-10-07 抓取。
相关阅读
Claude Code 自定义端点配置(ANTHROPIC_BASE_URL)
把 Claude Code 指向自定义端点:两个变量、凭据走哪个请求头、settings.json 写法。
Claude Code 中转下的 1M 上下文
2.1.285 起自定义端点默认按 1M 运行;网关只到 200K 时怎么设。
Context Length Exceeded 排查指南
上下文超限报错的几种形态,以及各自的解决办法。
本页版本号、报错原文与官方说法核对于 2026-10-07,以 Anthropic 官方变更日志与文档为准,上游调整不另行通知。某个网关转发哪些头、上下文上限多少,以你所接服务方的文档为准;模型可用性以 /models 为准。