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 配置项,并让损坏的会话记录自动修复而非无限循环。

TheRouter Newsroom来源 Anthropic
Claude Code 2.1.274 可靠性改进示意图,呈现 gateway 配置、MCP 连接稳定性与会话记录恢复流程

Claude Code 2.1.274 于 9 月 17 日发布,更新日志超过 80 条。对运维团队来说,真正需要关注的有三块。一是 MCP 故障,静默破坏生产 tool session;二是 Claude apps gateway 的配置缺口;三是无限循环却不报错的会话状态 bug。

六个影响生产 tool session 的 MCP 修复

MCP 的失败方式往往像用户操作失误,查日志才能看出是工具层的问题。2.1.274 关掉了六个这类漏洞。

legacy HTTP+SSE 服务器在第一次探测时返回 422。 配置为 "type": "http" 但实际走老版 HTTP+SSE 协议的 MCP 服务器,如果初始握手探测收到 422 或其他 4xx,会静默失败。很多挂在 auth proxy 后面的服务器恰好会在第一次请求时返回这个状态码。修复后,客户端会回落到 legacy 协议路径,而不是把 4xx 当作永久失败处理。

Streamable HTTP tool call 在五分钟处硬超时。 不论每个服务器的 timeout 配置是多少,Streamable HTTP 协议的 tool call 都有一个五分钟硬上限。代码合成、测试执行这类耗时操作会在这个时间点静默失败。现在改为遵守每服务器的 timeout 配置。

list_changed 通知被忽略,导致工具列表陈旧。 如果 MCP 服务器在 capability manifest 里没有显式声明 listChanged: true,发出的 list_changed 通知就会被忽略,session 里的工具列表从此不再更新。这个场景在服务端部署新工具后频繁出现。修复后,通知无论是否声明 capability 都会被处理。

403 insufficient_scope 被误报为登录过期。 tool call 被 403 insufficient_scope 拒绝时,Claude Code 以前会告诉用户登录已过期,把他们推进完整的重新认证流程,而问题实际上是 OAuth scope 缺失。修复后,报错会说明缺少哪些权限,并指向 /mcp 重新授权,而非重新认证。

Bedrock、Vertex、Foundry 及禁用遥测的安装现在默认使用 MCP v2。 这些安装之前仍在使用 v1 客户端和 2026-07-28 之前的协议协商。其他所有安装早已迁移到 MCP 2026-07-28。2.1.274 将它们统一。如果 MCP 服务器要求 legacy 协议,在更新前设置 MCP_SDK_GENERATION=v1MCP_PROTOCOL_NEGOTIATION=legacy

MCP 报错泄露解析后的 secret。 MCP 连接报错和登录工具的描述信息中会暴露从 ${VAR} 占位符解析出的实际值。已修复。

422 和 list_changed 两个问题的共同特点是本地测试能通过,在服务器挂着 auth proxy 或线上部署新工具后才会在生产中暴露。

Gateway 配置:三个新控制项

store.connect_timeout_seconds 控制 gateway 启动时等待 Postgres 连接的最长时间,默认 5 秒。接入 serverless 或冷启动 Postgres(比如 RDS Aurora Serverless)的 gateway,如果数据库没能在这个时间窗口内响应就会启动失败。报错信息现在会明确指出 store.postgres_url 和当前配置的超时时长。

CLAUDE_CODE_GATEWAY_DRAIN_TIMEOUT_MS 修复了 SIGTERM 立即断流的行为。之前 gateway 收到 SIGTERM 会立即断开所有流,滚动部署或负载均衡 drain 会把正在进行的长请求直接中断。现在 gateway 会等待至多 25 秒让进行中的请求完成再退出。如果编排平台要求快速退出,设置 CLAUDE_CODE_GATEWAY_DRAIN_TIMEOUT_MS=0 恢复旧行为。

256 上游请求饱和警告 是新增的一条启动日志,显示每个副本的上游并发上限(256),超出时触发警告。这个上限之前就存在,2.1.274 只是增加了可见性,负载下出现的不明原因延迟或流中断,现在有了明确的信号来源。

会话记录自愈与会话状态修复

损坏的会话记录自愈。 收到 unexpected tool_use_id 400 错误的 session 以前会无限重试同一请求,这是会话历史中的 tool use ID 与 API 预期不匹配导致的,属于不可恢复状态。2.1.274 检测到这类情况后会尝试自动修复;无法修复时,报出带 /rewind 提示的明确错误来终止循环。

/goal 压缩循环。 使用 /goal hook 的 session 有时会进入这样一个辭辙,上下文溢出、触发 reactive compaction、上下文再次溢出,最终以 "Prompt is too long" 卡死。已修复。用 --continue--resume 续接压缩后的 session 时,活跃的 /goal 会被静默丢弃的问题也一并修复。

claude agents 自动更新后标志丢失。 Claude Code 在 agents session 运行中执行自动更新重启时,--model--effort--permission-mode--allow-dangerously-skip-permissions--agent 标志全部丢失,重启后的进程使用了与启动时不同的参数。已修复。

可观测性新增项

enduser.sub 现在出现在 Claude Desktop 和 Cowork session 通过 Claude apps gateway 代理时的遥测数据中,来源是 SSO 提供商的 IdP subject identifier。这是将 Claude Code 用量与 SSO 身份关联的稳定跨系统键,适合计费和审计流水线使用。

claude_code.llm_request OTel span 新增了 effort 属性,effort 级别现在作为 trace span 的属性出现,与此前已有的 api_request 事件保持一致,在 tracing UI 里按 effort 拆分成本归因时更方便。

claude_code.managed_settings_resolved 事件 记录应用了哪些 managed settings 来源以及 policy 状态。设置 OTEL_LOG_MANAGED_SETTINGS=1 可以包含实际配置值,策略分层诊断从此不需要翻日志,一条 OTel 事件就能看清楚。

更新后的检查清单

Claude apps gateway 运维团队需要检查三件事。如果 Postgres 有冷启动延迟,设置 store.connect_timeout_seconds;确认编排平台的 drain 容忍度是否匹配新的 25 秒默认值;关注启动日志里的副本饱和上限提示。

Bedrock/Vertex/Foundry 用户现在默认跑 MCP 2026-07-28 加 v2 客户端,确认 MCP 服务器支持该版本,或在更新前设置 legacy 环境变量。

运行 tool-heavy agentic session 的团队不需要改任何配置。之前在五分钟处静默失败的 tool call,或服务器部署后工具列表陈旧的问题,更新后应当自动恢复。

通过 TheRouter 路由 Claude Code 的团队,drain timeout 和 Postgres timeout 的变化适用于 router 层后面自托管的 Claude apps gateway。effort OTel 属性对捕获请求的任何 tracing 方案都能提升按请求成本归因的精度。

帮助与联系