Claude Code 2.1.177 更新日志:MCP 挂起、CLAUDE_CODE_OAUTH_TOKEN 凭证 bug、斜杠命令回归

Claude Code 2.1.177 更新日志:claude -p 加载完整 fleet 时 stdio MCP 调用挂起(claude hanging 症状)、CLAUDE_CODE_OAUTH_TOKEN 被磁盘凭证文件覆盖导致 401、/compact 被当作普通文本转发、Windows 构建无法启动。Fleet 锁版与修复指南。

TheRouter Newsroom来源 anthropics/claude-code GitHub issues
编辑风格插图:Claude Code 2.1.177 更新日志,四条回归分支——claude -p 下 headless MCP 挂起、CLAUDE_CODE_OAUTH_TOKEN 被凭证文件覆盖、斜杠命令绕过、Windows 启动失败——汇聚到 operator fleet 锁版决策

Claude Code 在 2026 年 6 月 13 日 01:25 UTC 发布了 v2.1.177,GitHub Release body 为空,并通过 native installer 完成了标准的自动更新分发。48 小时之内,针对 anthropics/claude-code 仓库提交了四个独立的 Claude Code 2.1.177 回归 issue,每一个都带有可复现的 repro 和官方 regression 标签——而这些回归全部命中了 operator 依赖的代码路径:headless MCP、OAuth 凭证、斜杠命令拦截,以及 Windows 二进制本身。

这是 routing 与平台团队今天必须完成的 operator 事后分析与 fleet 应对手册。

Claude Code 2.1.177 究竟哪里坏了

自 2026-06-13 起,已有四个独立回归被上游 issue 标签确认:

  • #68375 — claude -p 下 stdio MCP 工具调用挂起。 当完整 MCP fleet 已加载(约 10+ servers、stdio 与 http/sse 混合)时,单次本地 stdio 工具调用直接卡死。连接握手成功,但工具调用永不返回,只能在 claude 进程被杀掉时才结束。临时解法是用 --strict-mcp-config --mcp-config <minimal> 重启,让 session 只加载所需的那一个 server,工具延迟从"挂起"恢复到约 5 秒。标签:bug、has repro、area:mcp、regression。
  • #68241 — CLAUDE_CODE_OAUTH_TOKEN 被陈旧的 ~/.claude/.credentials.json 屏蔽。 优先级被反转:2.1.177 下磁盘上的 credential 文件会胜过环境变量。如果文件里是过期的 access token、且 single-use refresh token 已被消费过,Claude 就会 401 并落到 /login,而不是回退到仍然有效的 env-var token。删掉或清空该文件即可恢复 env token 工作。标签:bug、area:auth、regression。
  • #68170 — /compact 等斜杠命令被作为普通文本发送。 2.1.177 的 native installer(macOS 已确认)上,前导斜杠 / 解析器失效。/compact 被当作普通 prompt 直接送给模型,而不是触发 context compaction。本地终端与 Remote Control 手机端 session 都能复现。最后一个能正常工作的版本是 2.1.173。标签:bug、area:tui、area:core、regression。
  • #68504 — Windows 二进制无法启动。 从 2.1.174 升级到 2.1.177 后,claude.exe 报"该版本与你运行的 Windows 版本不兼容"。claude 和 claude update 都无法运行,回退只能手动 npm install 一个旧版本。标签:bug、platform:windows、area:packaging、regression。

官方的 Claude Code 2.1.177 release notes 发布时 GitHub Release body 是空的——上游 main/CHANGELOG.md 也仍然停在 2.1.176,没有 2.1.177 的条目。这正是诊断变难的原因:没有 shipped diff summary 可以圈定到底改了什么。

为什么每一个回归都直击 operator fleet

这些不是表面 bug。它们每一个都活在 operator 与 routing 团队生产自动化所依赖的路径上:

  • Headless claude -p 是自动化的脊梁。 CI worker、定时 cron 任务、网关侧 evaluator、self-hosted runner 都靠它来程序化调用 Claude。任何让 stdio MCP 工具调用静默挂起到外层 wall-clock 超时才结束的回归,都不是"工具延迟问题"——而是 queue 堆积风险。Headless worker 会用满整个 timeout 才结束,而不是在约 5 秒内完成。
  • CLAUDE_CODE_OAUTH_TOKEN 优先级反转是凭证治理破口。 容器化与 headless 部署专门用 env var 注入 OAuth token,正是为了不依赖任何文件。但如果容器里此前的 session 把 .credentials.json 写到了 mount 进来的 ~/.claude,那么下一次启动时这个文件会静默覆盖注入的 token。operator 通过 env 重新发布做 token rotation 时,即使新 token 完全有效,也会看到鉴权失败。
  • 斜杠命令解析是所有交互式 operator 流程的根基。 /compact、/cd、/model、/usage、/agents 这些 operator 控制面全部走前导 / 解析器。一旦解析器被绕过,模型就只会把斜杠命令当 chat prompt,要么"自由解读"要么拒答。Remote Control 手机 session 尤其暴露,因为这是 operator 离开桌面后检视 background agent 的途径。
  • Windows 打包破损 把一整类 operator 工作站直接拉下线,必须等回滚或 2.1.178 hotfix。

横向的规律:Claude Code 2.1.177 regression 的影响集中在无人值守与远程的路径——headless、容器化、移动端——而这些正是 operator 在前两个发版周期里建工具链所依赖的层。

Router 与 operator 视角

由于 2.1.177 通过 native installer 自动更新分发,operator 管理的所有 fleet 默认都已经吃下了这次回归。routing 团队今天应该落地的 mitigation playbook:

  1. fleet 内全部 Claude Code 锁在 2.1.176。 用 managed settings 里的 requiredMinimumVersion,并在容器镜像与 CI runner 上配合打开 disableAutoUpdate: true。2.1.176 已经包含 availableModels env-var bypass 闭环与 Bedrock awsCredentialExport 缓存修复——两项对 operator 都有意义——同时没有 2.1.177 的四个回归。
  2. 必须留在 2.1.177 的容器,请规范化 headless 启动。 把所有 claude -p 自动化调用都包成 --strict-mcp-config --mcp-config <minimal>,并为每个 job 单独列出它需要的那几个 MCP server 白名单。这样可以绕开 #68375 的 fleet 挂起代码路径,直到上游修复为止。
  3. 审计容器基础镜像里的 OAuth 凭证优先级。 重发 2.1.177 容器之前,确保 ~/.claude/.credentials.json 要么不存在,要么显式清空(echo '{}' > ~/.claude/.credentials.json),让注入的 CLAUDE_CODE_OAUTH_TOKEN 真正被采用。在镜像 build step 加一条断言确认文件为空。在 2.1.177 上不要假定 env-var 优先。
  4. 在 operator runbook 里登记斜杠解析回归。 任何"输入 /compact 来减少 context"的操作手册步骤在 2.1.177 上都已失效。临时方案是关闭并重启 session,或者降级到 2.1.173。
  5. Windows fleet 留在 2.1.174 或 2.1.176。 回滚命令是 npm install -g @anthropic-ai/claude-code@2.1.176,并在内网网关上拦截 Windows 机器的自动更新提示。
  6. 把 /usage 的 per-skill 与 per-MCP 归因接到你的网关 dashboard——每个 session 加载了哪些 MCP server 这种字段级可观测性,会让 #68375 在哪条 pipeline 上触发变得一目了然。字段映射参考我们的 Claude Code usage 归因 playbook。

宏观层面的 routing 含义:一次糟糕的发布可以一次性破坏四条独立的 operator 代码路径。 把 Claude Code 的版本 pin 当作 fleet 治理层的一等公民,而不是开发机便利。2.1.175 的 enforceAvailableModels 框架已经给了 operator 做硬版本约束的原语——2.1.177 就是真正去用它的那一天。

TheRouter 用户接下来要关注什么

  • 等 v2.1.178。 鉴于已确认回归的广度与严重程度(#68170、#68241、#68375、#68504 全部带上游 regression 标签),hotfix 是最可能的回应方向。在 changelog 明确列出对每一项的修复之前不要恢复自动更新。来源信息以 Claude Code releases page 为准。
  • 检查你的 background-session 基础镜像。 过去 36 小时内 build 并 push 的镜像,大概率已经烘进了 2.1.177。请用明确的版本 pin 重新构建,并对 headless MCP、斜杠命令、OAuth 凭证三条路径跑一遍端到端冒烟。
  • 回顾 routing 网关的模型迁移计划。 如果你本来打算用 claude -p headless worker 作为迁移 runner、本周切换到 Claude Fable 5,那条 pipeline 在 2.1.177 上目前是有损的。锁回 2.1.176 也能让 Fable 5 tokenizer 30% 膨胀审计 工作流保持完好。

对 operator 而言,这次的教训朴素而重要:Claude Code 发版后的第一天是验证日,不是部署日。 在把任何 minor 版本提升从 staging 推到 production-managed 安装之前,给 fleet rollout 政策加一个 24 小时浸泡窗口。TheRouter 的 routing 层抽象之所以做成 tier-aware,正是为了让网关替你的开发者 fleet 先吃下每个版本的风险。

帮助与联系