Claude Code 2.1.222 修复了静默 Gateway Stream 断连与后台任务 Hook 绕过问题
Claude Code 2.1.222 中的三项修复直接影响使用自定义 ANTHROPIC_BASE_URL gateway 的运营团队:stream 空闲超时现在能正确响应任意 endpoint 的 keepalive,后台任务中的 PreToolUse hook 绕过已关闭,worktree git 命令作用域也得到加固。

Claude Code 2.1.222 的核心变化不是新功能,而是一个从未在日志中留下痕迹的静默故障模式。如果你的团队通过自定义 ANTHROPIC_BASE_URL gateway 路由 Claude Code 请求——无论是 AI 路由代理、AWS Bedrock endpoint,还是用于合规审计的本地代理——stream 空闲计时器中的一个 bug 一直在悄无声息地断开连接,而 gateway 服务端实际上认为这些连接是健康的。
以下是运营团队在这个版本落地之前需要了解的内容。
Stream 超时 bug:自定义 gateway 上究竟发生了什么
Claude Code 的 stream 空闲计时器在超时窗口内没有收到任何字节时就会触发,目的是检测卡住的响应。但 bug 在于:计时器不识别 gateway 服务端发送的 keepalive 帧。所以当你的 gateway 用定期 keepalive ping 正确地维护 TCP 连接时,Claude Code 客户端看到的是一条沉寂的线路,并宣告 stream 已死——即便模型端仍在计算中。
故障表现因重试逻辑不同而有所差异:
- 没有重试:CLI 报告"Connection closed mid-response",而实际上模型端已完成响应,只是最后几个字节还缓冲在 gateway 的写入路径中。
- 有重试:同一请求被重新发往上游 provider,对缓慢生成的请求造成双倍成本和延迟。
- 后台 agent 任务:静默失败在 subagent 轮次中积累,导致长周期 agentic session 在非 Anthropic endpoint 上显得不可靠。
2.1.222 中的修复让空闲计时器支持代理感知:只要收到任何入站数据——包括 keepalive 帧——无论这些字节是否构成模型响应块,计时器都会重置。将 ANTHROPIC_BASE_URL 设置为路由代理、Azure AI Foundry endpoint、AWS Bedrock 兼容 URL 或企业流量检查本地代理的团队,更新后应该会看到断连模式消失。
跨 provider 的 keepalive 行为:为什么这是路由层问题
Keepalive 行为在不同 AI gateway 实现之间存在显著差异:
- 直连
api.anthropic.com:响应块以可预测的间隔到达,空闲间隙很短。旧计时器阈值就是按这种流量模式校准的。 - Bedrock / Vertex AI:代理层增加了延迟,模型端计算时间更长,字节开始流动前有更长的静默间隔,这是设计如此。
- 自定义 AI 路由代理(聚合器、用于审计的本地 MITM 代理):转发前可能对输出进行缓冲,引入长达 10—30 秒的静默窗口,超过了 Claude Code 旧计时器阈值。
这些 gateway 没有任何错误——它们发送 keepalive 正是为了防止客户端宣告连接已死。Claude Code 的计时器只是忽略了这些 keepalive。这次修复让它与任何行为规范的 HTTP/2 或 SSE 客户端的空闲检测保持一致。
曾经为了补偿断连而在 ANTHROPIC_BASE_URL 之上自行实现重试包装器的运营团队,现在可以移除那一层了。通过 TheRouter 路由 Claude Code 流量的团队,现在也可以确认 gateway keepalive 行为已被正确响应——当前 base URL 配置请参见 TheRouter 文档。
后台任务 hook 绕过:PreToolUse 在 summaries、compaction 和 renames 中
第二项修复关闭了后台 agent 任务执行中的一个治理漏洞。Claude Code 有一个 PreToolUse hook,运营团队通过它控制哪些工具可以自动运行(无需用户确认)。在 2.1.222 之前,该 hook 在后台任务中——具体是在 session 摘要生成、上下文压缩(compaction)和 Claude Code 在轮次间自主运行的文件重命名操作中——并不会被评估。
实际后果:假设你的策略中有一条 PreToolUse 规则阻止 Bash 工具执行,当 compaction 内部触发 shell 命令时,这条规则不会生效。一条本应把守影响生产环境命令的工具限制,可以通过触发后台 compaction 路径来绕过。
2.1.222 在每种任务类型——无论前台还是后台——都强制执行 PreToolUse 评估。依赖基于 hook 的访问控制的运营团队,如果部署中使用了后台 agent session,应将 2.1.222 视为必须应用的安全更新。
Worktree git 命令作用域:与 2.1.216 的对比
Claude Code 2.1.216 修复了一个 worktree 隔离逃逸问题:subagent 可以通过 flag(--git-dir、-C <shared-path>)或环境变量(GIT_DIR、GIT_WORK_TREE)将 git 操作重定向回共享的父 checkout。那次补丁修复了文件编辑隔离。
2.1.222 将修复扩展到 worktree 隔离 session 内通过 Bash 执行的破坏性 git 命令。在 worktree 中运行的 subagent 可以通过构造带有显式路径的命令,在主 checkout 上执行 git reset --hard、git push --force 或 git branch -D。即便文件编辑隔离已生效,Bash 工具也会允许这些命令,因为它不继承 worktree 路径限制。
从 2.1.222 起,隔离在每种 session 类型(包括在 worktree 隔离父 session 内生成的 subagent)中同时适用于文件编辑和 Bash。官方修复说明明确写道:"isolation now applies to file edits and Bash in every session type。"
对于在独立分支上运行并行 subagent 流水线的运营团队——功能开发、代码审查自动化、依赖升级 bot——如果这些 agent 具有 git 感知能力且对仓库路径有写入权限,请审计 2.1.222 之前执行过的所有 agentic Bash 命令。
MCP 用量归因与组织模型别名修复
另外两项修复涉及计费和治理:
MCP server 用量归因存在过度归因问题:/usage 将 MCP 工具调用之后的每一轮都归因于该 server,即使后续轮次从未使用其结果。2.1.222 修复后,server 的用量份额仅反映实际消费其输出的请求。如果你按 MCP server 进行跨团队成本分摊,更新后数字会下降——这是正确的结果。
组织受限模型别名(model: opus、model: sonnet)在别名解析到组织允许范围之外的模型时,会回退到父模型。现在改为降级到所请求系列中组织允许的最新模型。对于在 managed settings 中设置模型系列别名的运营团队,这改变了 fallback 行为:agent 现在选择该系列中最新的允许模型,而不是静默使用发起请求的模型。
更新后需要做的事
移除为补偿 stream 断连而添加的 ANTHROPIC_BASE_URL 重试包装器。底层 bug 已修复;在其之上的重试层现在可能对首次成功的响应产生重复请求。在 Claude Code 配置中验证正确的 ANTHROPIC_BASE_URL 值时,可对照 TheRouter models 页面 查看可用的模型 ID。
审计 managed settings 中的 PreToolUse hook 覆盖范围。该 hook 现在在后台任务中强制执行——但如果你的旧部署假设它不会生效,请验证 hook 逻辑是否能正确处理后台任务场景。一个只预期把守交互式轮次的 hook,现在可能在 compaction 运行期间触发。
审计 worktree 隔离分支上近期的并行 subagent git 活动。在 2.1.216—2.1.221 期间,worktree 内的 subagent 仍可通过 Bash 发出破坏性 git 命令。如果你的 agentic CI 流水线在这段时间内运行过,请对比预期的分支状态与共享 checkout 中的实际 git 历史。
检查组织模型别名解析,如果你在 managed settings 中固定了系列别名,并在请求日志中发现了 fallback 模型。新的降级行为可能路由到与以往 fallback 不同的模型。
相关阅读
AI 路由新闻与供应商动态 →
Claude Code 2.1.269:一个 60 项修复包里藏着的三个 operator 级变更
Claude Code 2.1.269 新增了 gateway 发现超时覆盖参数、并发 workflow agent 上限,以及一个跨配置源默默生效的 deny rule 漏洞修复。这三项变更直接影响规模化运营 Claude Code 的团队。

Claude Code OAuth 回归:审计自定义 API Gateway 凭证路由
Claude Code OAuth 回归可能把 Anthropic 用户 token 发往自定义 API Gateway。用这份 operator 清单在 5 月 28 日补丁后审计 token 隔离、gateway 认证日志与子 Agent MCP 策略执行。

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 变更。