Claude Code 2.1.275 让每个网关代理都返回 400。2.1.276 当天就修好了。
2.1.275 引入的一个内部请求 tag 导致所有通过 ANTHROPIC_BASE_URL 代理的调用全部返回 400。2.1.276 数小时后作为定向 hotfix 发布。本文拆解这次故障的机制、受影响配置,以及 2.1.275 中值得审查的三处次要 operator 变更。

Claude Code 2.1.275 于 9 月 18 日发布,携带完整 changelog。数小时内,所有通过 ANTHROPIC_BASE_URL 将请求转发给代理或网关的用户,每一次 API 调用都开始返回 400。同日,2.1.276 作为 hotfix 紧急上线。
这次故障的失效模式值得精确理解,因为它暴露了一类代理脆弱性——随着 Anthropic 持续向请求中添加内部元数据,这类问题还会反复出现。
2.1.275 里什么东西坏了
2.1.276 的修复说明记录了错误形态:
400 … Input tag 'advisor_20260301'
advisor_20260301 是 Anthropic 的一个内部 tag,2.1.275 开始将它附加到 API 请求体中。直连 api.anthropic.com 时,这个 tag 会被默默接受。但凡中间有代理或网关验证请求体、拒绝未知 input_tag 字段,请求就会在抵达模型之前失败。
失效是全面的:不是部分请求降级,不是特定 request shape 才触发。每一轮对话、每一次工具调用、每一个 subagent 启动,全部返回 400,session 完全无法推进。
受影响范围:所有通过 ANTHROPIC_BASE_URL 走中间层的用户——企业 AI 网关、做请求转换的 OpenAI-compatible 代理、LiteLLM 部署、自建认证/成本追踪中间件,以及使用原生 Anthropic endpoint 路径配置的 TheRouter。
2.1.276 做了什么
hotfix 的修改是定向的:移除通过自定义 ANTHROPIC_BASE_URL 发出的请求中的 advisor_20260301 input tag。直连 Anthropic API 的请求应该仍然携带这个 tag;代理侧不再看到它。
如果你的环境锁定了 Claude Code 的版本,操作很直接:立即升级到 2.1.276。如果你开启了自动更新,同时设置了 ANTHROPIC_BASE_URL,那么在 2.1.275 到 2.1.276 之间的窗口里你很可能已经中招,只是当时未必清楚是什么原因导致了失败。
需要持续关注的结构性问题
Anthropic 正在持续向请求中添加内部元数据——遥测 tag、advisor 元数据、上下文信号——随着 Claude Code 与平台的深度整合而不断演进。每一个新 tag 在 api.anthropic.com 上是透明的,但对做了严格 schema 校验的代理来说可能是致命的。
两类代理配置面临风险:
严格 schema 验证:任何对 Anthropic 请求体做 schema 校验并拒绝未知字段的中间件。企业安全代理做 DLP 检查时很常见。
字段白名单透传:只转发已知 header 和 body 字段的网关。如果 input_tag 不在透传列表里,新 tag 会被静默丢弃——或者视实现不同,触发这里看到的 400。
缓解模式:将代理配置为对 Anthropic 请求体中的未知顶层字段采用透传,而不是拒绝或过滤。Anthropic 的内部 tag 会持续演化,你的代理 schema 跟不上这个速度。
2.1.275 中三处值得审查的次要 operator 变更
这次回归主导了当天的关注,但 2.1.275 还带来了几个不需要等到 400 才能注意到的 operator 变更。
npm 插件安全:--ignore-scripts + 完整性校验。 从 npm 源安装的插件现在通过 npm pack --ignore-scripts 拉取,并在加载前做完整性验证。package.json 中的 install 脚本在插件安装时不再执行。这是一个有实际意义的供应链控制:对于允许用户安装任意插件的 Claude Code 环境,恶意 install 脚本是现实的攻击向量。如果你的团队通过私有 npm registry 部署内部插件,检查这些插件是否依赖 install 脚本做自身配置——那些脚本今后不会再运行。
claude.ai 账户 skill/plugin 同步:opt-out 控制。 Claude Code 2.1.275 在用户通过 Claude apps gateway 登录时,会将其 claude.ai 账户上启用的 skill 和 plugin 同步到终端 session。同步默认开启。Operator 如果希望对终端 session 中运行的内容保持更严格的控制,可以在 managed settings 中禁用:
{
"syncClaudeAiSkills": false,
"syncClaudeAiPlugins": false
}
对于在生产流水线中使用 Claude Code 的团队,这一点值得审查。用户在个人 claude.ai 账户上启用的 skill,可能意外出现在共享凭据的 CI runner session 里。
Gateway SIGTERM 优雅退出窗口延长至 25 秒。 此前,向 Claude apps gateway 发送 SIGTERM 会立即断开所有正在进行的流式响应。现在,gateway 会让进行中的请求最多完成 25 秒再退出,窗口可通过 CLAUDE_GATEWAY_DRAIN_TIMEOUT_MS 配置。对于在负载均衡器后做滚动重启的 operator,这个变更消除了 gateway 重启期间因打断长时 agent session 而产生的一类请求失败。
本次发布的 operator 检查清单
-
如果使用
ANTHROPIC_BASE_URL,立即升级到 2.1.276。 任何停留在 2.1.275 且走代理的环境都处于故障状态。 -
审查代理的 schema 验证配置。 确认你的网关是否对 Anthropic 请求体做验证或过滤。如果有,切换为对未知字段的透传模式。这类故障还会再发生。
-
检查 plugin 对 install 脚本的依赖。 如果内部 plugin 通过
postinstall写配置文件、生成资源或调用 API,这些脚本将不再触发。把配置改为运行时声明。 -
审查
syncClaudeAiSkills和syncClaudeAiPlugins策略。 如果终端 session 应与个人账户 skill 隔离,在用户用 claude.ai 账户登录前,在 managed settings 中禁用这两个标志。 -
测试滚动重启窗口与新的 25 秒 drain 的兼容性。 如果负载均衡器在 SIGTERM 前的 drain 窗口短于 25 秒,长时 agent turn 现在可以完成。如果 drain 窗口更短,仍然可能在飞行中截断长时请求。
网关用户需要持续关注的
advisor_20260301 事件是四个版本内 Anthropic 内部 API 变更导致 ANTHROPIC_BASE_URL 路径静默损坏的第二次(第一次是 2.1.268 的 HTTP 400 回归)。这个模式表明,代理兼容性测试目前还不是 Claude Code 发布流程中的一等公民需求。
通过任何中间层运行 Claude Code 的 operator,应当把小版本升级视为潜在破坏性变更,并在推广给用户之前,用版本专属测试确认 ANTHROPIC_BASE_URL 路径端到端可用。
相关阅读
AI 路由新闻与供应商动态 →
Claude Code 2.1.274:MCP 可靠性全面修复、Gateway Postgres 配置项与会话自愈
Claude Code 2.1.274 修复了六个在生产环境中静默失败的 MCP 问题,新增 store.connect_timeout_seconds 和 CLAUDE_CODE_GATEWAY_DRAIN_TIMEOUT_MS 两个 gateway 配置项,并让损坏的会话记录自动修复而非无限循环。

Claude Code 2.1.273:五个新网关提示头和 Bedrock、Vertex、Foundry 上的分类器切换
Claude Code 2.1.273 推出可选开启的网关提示头,向任何 LLM 代理暴露请求类型、agent 类型和上下文压缩状态,同时在 Bedrock、Vertex AI 和 Foundry 上静默切换 auto 模式分类器为本地模式。两个变更一起落地,但只有其中一个有回退路径。

Claude Code 2.1.269:一个 60 项修复包里藏着的三个 operator 级变更
Claude Code 2.1.269 新增了 gateway 发现超时覆盖参数、并发 workflow agent 上限,以及一个跨配置源默默生效的 deny rule 漏洞修复。这三项变更直接影响规模化运营 Claude Code 的团队。