Claude Code MCP timeout 与 WebFetch 修复:Operator 需要检查什么

Claude Code MCP timeout 与 WebFetch policy 在 6 月 3 日版本发生变化:显式 WebFetch deny 规则现在优先于预批准主机,sub-1000 ms MCP timeout 会回退到 MCP_TOOL_TIMEOUT/default,而不是触发 watchdog 故障。

发布于 来源 Anthropic

归档条目:由 AI 根据所引信源辅助生成,发布时未经逐篇审阅。责任编辑:Joe Werner。

展示 AI gateway 架构中权限规则和超时流程的抽象网络路由图

两个 bug 在 Claude Code 中悄无声息地存在了数周。6 月 3 日的更新将它们一并修复——如果你在 AI gateway 后面运行 Claude Code 或执行 WebFetch 域策略,你需要了解具体变化。

WebFetch 权限优先级 Bug

Claude Code 内置了一套预批准主机自动放行列表(preapproved-host auto-allow list),这些域名默认无需 operator 显式配置即可访问。在修复之前,operator 定义的 WebFetch(domain:...) deny 或 ask 规则对这些预批准主机完全无效。

实际后果:如果你的 operator 策略设置了 deny: WebFetch(domain:api.example.com),而 api.example.com 出现在 Anthropic 的预批准列表中,Claude Code 会静默放行该 fetch 请求,完全忽略你的 deny 规则。

修复后,operator 显式定义的 WebFetch deny/ask/allow 规则现在优先于预批准主机自动放行列表。无论目标域名是否在 Anthropic 的默认白名单中,你的 gateway 访问控制策略都会一致生效。

现在需要检查什么:

  • 检查你的 settings.json 或 .claude/settings.json 中的 WebFetch 权限规则。
  • 如果你有原本打算屏蔽特定域名的 deny 规则,升级到 6 月 3 日版本后请验证它们是否已生效。
  • 通过 TheRouter 记录和审计出站 AI fetch 调用的团队应确认 WebFetch 拦截事件能够正确落入请求账本——之前由于自动放行绕过,这些事件从未被记录。

MCP 每服务器超时看门狗 Bug

Claude Code 支持在 .mcp.json 中为每个 MCP server 单独设置 timeout 字段(单位毫秒),目的是让 operator 精细控制等待工具调用响应的时间上限。

Bug 所在:任何低于 1000 ms 的 timeout 值都会被静默提升到一个 1 秒看门狗,该看门狗会中断所有工具调用——因为它在任何正常工具响应到达之前就已触发。

这是一种静默失败模式。如果团队设置了较紧的 sub-1000 ms 超时(例如为了对 MCP 工具施加 SLA 式约束),会看到所有工具调用失败,且没有任何有意义的错误提示。修复后,claude mcp get 命令将在输出中标注低于 1000 ms 的超时条目,方便 operator 在检查时发现问题。

修复后的行为: sub-1000 ms 的 timeout 值现在会被静默忽略,回退到 MCP_TOOL_TIMEOUT 环境变量或默认值。如果你需要在毫秒级别强制执行超时约束,应在 MCP server 或 gateway 层实现,而非依赖 Claude Code 客户端的超时配置。

本次更新中其他对 Operator 有影响的变更

--tools 显式列出 Grep/Glob 现在生效。 此前,在 --tools 许可列表中明确指定 Grep 或 Glob 在内置搜索的 native build 上会被静默忽略。这些工具现在可以正确注册。如果你的 operator profile 通过 --tools 限制工具访问,请验证 Grep/Glob 是否按预期工作。

Windows 路径匹配权限规则已修复。 使用反斜杠路径(~\folder、\\server\share)或大小写变体路径的权限规则在 Windows 上从未匹配。这会影响在基于 Windows 的 CI 或 agent pipeline 中运行 Claude Code 的 operator,此前路径级 deny 规则被静默绕过。

IDE 菜单中 Windsurf 更名为 Devin Desktop。 随着该编辑器品牌重塑,/ide 菜单、/terminal-setup 和 /scroll-speed 现在显示 Devin Desktop。请更新引用了 Windsurf 的 operator 文档或入职脚本。

claude agents --json 新增 waitingFor 字段。 agents 子命令的 JSON 输出现在会显示等待中的 session 被何物阻塞(例如权限提示)。这对轮询 agent 状态的无头监控系统直接有用——现在无需解析人类可读的状态文本,就能区分"等待审批"与"正在运行"。

路由与 Gateway 影响

WebFetch 权限修复是对 AI gateway operator 影响最大的变更。核心问题在于 Anthropic 的默认策略与 operator 定义策略之间的不一致——此前 Anthropic 的策略会静默获胜。现在这一问题已得到纠正。

对于通过 TheRouter 路由 Claude Code 流量的团队:

  • 请求日志:之前被自动放行的出站 WebFetch 调用现在会遵守你的 deny 规则,你可能会看到某些 fetch 事件减少,以及请求账本中出现一类新的 blocked-fetch 记录。
  • MCP 超时行为:如果你依赖每服务器超时字段来绕过慢速工具服务器,请确认你的 timeout 值 ≥ 1000 ms。sub-1000 ms 的值现在会被静默丢弃,而非引发看门狗触发的失败——整体是改进,但你的超时预算需要在 gateway 或 MCP server 层重新规划。
  • 无头 pipeline 监控:--json 输出中的新 waitingFor 字段意味着你的 Claude Code 编排层可以更精准地呈现权限阻塞的 agent,从而缩短在多 agent pipeline 中识别卡住任务的时间。

值得关注

6 月 3 日的更新延续了 Claude Code 针对 operator 端权限执行边缘案例的修复节奏。这是本周第二次权限模型修复(6 月 2 日发布已修复了 forceLoginOrgUUID 托管设置策略回归问题)。如果你的组织在锁定的企业环境中运行 Claude Code,升级后对 settings.json 权限规则进行系统性审计是有必要的——某些看似正常工作的规则,可能一直依赖的是 Anthropic 的宽松默认值,而非你的显式策略。

相关文档

帮助与联系