外部精选
Claude Code · v2.1.305
本文来自外部来源,不是黄奕彬的原创文章。本站提供原文入口,并在采集端生成 AI 结构化摘要、解读与中文翻译(如有),一切以原文为准。
阅读原文(github.com)结构化摘要 AI 生成
背景与问题
这是 Claude Code v2.1.305 的发布说明(Immutable release),面向已在使用 Claude Code 的开发者。
要解决的问题包括:v2.1.304 引入的 provider 请求失败回归、self-hosted runner 自 v2.1.296/v2.1.300 起的回归,以及大量遗留缺陷,覆盖 CLI、VS Code、Cloud sessions、Claude Tag、Code Review 等形态。
方法或内容
发布一个以修复为主的补丁版本,内容分四类:
- 新增:
sandbox.allowNestedUserNamespaces、CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS两个配置 - 修复:约 20 项,含 provider 请求、
/effort、worktree、MCP、subagent、Workflow、屏幕阅读器、runner 等 - 改进:
/usage一行修复、MCP 同意对话框、mod Image、spawn-mode 消息 - 行为变更:
allowedMcpServers过滤、插件allowed-tools、/artifacts按键、docked pane 宽度
关键发现 / 结果
关键变更点:
- 修复
2.1.304回归:Vertex、Bedrock 等 provider 或网关拒绝 tool search 时每个请求失败,现改为无 tool search 重试 - 新增
sandbox.allowNestedUserNamespaces:Linux 沙箱内命令可建用户命名空间(Chromium、rootless podman),代价是可绕过沙箱文件保护 - 新增
CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS:无人值守重试模式可察觉提前解除的用量限制 - Runner 三项修复:
2.1.300的 stdout 共享脚本回归、2.1.296起GIT_CONFIG凭据问题、spawn-runner hook 误报超时 allowedMcpServers不再过滤仅 env 使用${VAR}的 stdio 服务器:原先被排除的会随升级加载,需用deniedMcpServers屏蔽/artifacts删除确认改为 1/Enter 保留、2 删除、Esc 取消,y/n失效- Code Review:不再在有未解决 blocking findings 时以 LGTM 开场;修复多 push 时不审最新 commit
- 其余:磁盘满报错可读化、屏幕阅读器修复(VoiceOver 曾把符号读作 telephone recorder)、
/effort大小写与[1m]标签匹配、Workflow resume 从 journal 提供结果等
结论与意义
作者给出的结论即发布本身:这是一个修复密集的维护版本,重点解决上一版本回归与多形态(CLI/VS Code/Cloud/Claude Tag/Code Review/runner)缺陷。
适用边界:所有条目仅针对 v2.1.305;部分修复写明只覆盖 more cases 或 sometimes 场景,暗示同类问题可能未完全根除;allowedMcpServers 与沙箱新配置属于升级后行为变化,用户需自行评估。
AI 解读 AI 生成
方法:按「时空变量」分析(时间 / 空间 / 变量,严格区分包含、相关与因果),对象包括原文作者、署名人员与关键技术及其实际原理;结论用「元反空」(元思考、反思考、空思考、综合)整理。
时间:何时发生,现在是否仍成立
来源日期为 2026年10月21日 04:46(北京时间),即北京时间 2026-10-21 04:46:50 发布。内容是特定版本的固定快照(Immutable,仅标题与说明可改),各条目在 v2.1.305 生效。
是否仍成立取决于读者所用版本:若已升级到更高版本,其中部分行为可能又被后续版本调整;三项回归修复对应的历史版本(2.1.296、2.1.300、2.1.304)提供了明确时间锚点。原文未说明后续版本情况。
空间:谁的环境 / 场景
适用环境与场景:
- 产品与版本:Claude Code
v2.1.305,含 VS Code 扩展条目([VSCode]) - 部署形态:本地 CLI、Cloud sessions(含 self-hosted environment)、self-hosted runner、Remote Control、定时 Cowork 会话、SDK 的
setMcpServers - 平台特定:Linux 沙箱用户命名空间、
iTerm23.5+、VoiceOver 等屏幕阅读器 - Provider:Vertex、Bedrock 及经网关接入的场景
- 集成:Claude Tag(Slack 频道/DM、GitHub 账户迁移)、Code Review(pull request)
变量:实际改变了什么
相对此前的实际改变:
- 结构:新增
sandbox.allowNestedUserNamespaces与CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS两个配置项 - 行为:provider 拒绝 tool search 时自动降级重试(替代
2.1.304的全失败);allowedMcpServers停止过滤仅 env 含${VAR}的 stdio 服务器;/artifacts确认按键由y/n改为数字与 Esc;插件在allowManagedPermissionRulesOnly下不再保留路径挂载的allowed-tools - 界面:docked pane 上限为终端宽度 45%;启动警告改入 debug log;
/usage警告变为一行可按f应用的修复 - 交互:屏幕阅读器搜索框改为读出 Search:;MCP 同意对话框减少误按 Enter
区分:包含 ≠ 相关 ≠ 因果
有明确因果证据的:
- 三处回归标注了确切版本号——
2.1.304引入 provider 请求失败、2.1.300引入 runner 脚本失败、2.1.296起凭据访问失败,本版修复即因果闭环 sandbox.allowNestedUserNamespaces的后果被明确说明:开启后沙箱内命令可绕过文件保护allowedMcpServers行为变更与升级后服务器加载之间是明确因果(原文写明 one your allowlist left out now loads on upgrade)
仅相关或条件共现而无因果论证的:多数修复只描述触发条件(如 sometimes、when several pushes landed),未说明根因;[Claude Tag]、[Code Review] 各条目陈述现象与修复,不解释底层机制。因果关系不确定处:原文均未提供根因分析。
对象:作者/署名与关键技术原理
署名作者(来自结构化字段):ashwin-ant,仅此一人,无其他署名信息。关键技术按原文描述:
- 沙箱(sandbox):Linux 上通过限制文件访问保护系统,新配置允许嵌套用户命名空间(供 Chromium、rootless podman 使用)
- Tool search:一种 Claude Code 向 provider 发送的能力,Vertex/Bedrock 端点或网关可能拒绝,现支持无它重试
- MCP 管理:
setMcpServers、allowedMcpServers/deniedMcpServers、managed-mcp.json控制服务器加载与覆盖顺序 - Retry watchdog:无人值守模式(
CLAUDE_CODE_RETRY_WATCHDOG),新配置控制用量限制复查间隔 - 其余:subagent fallback model、compaction 摘要、Workflow journal(
pipeline()/parallel())、GIT_CONFIG凭据链、屏幕阅读器输出
原文均按功能层面描述,未给出底层实现原理。
元反空综合结论
元:这条内容本质在解决版本迭代后的信息同步问题——把散落在多个形态(CLI、VS Code、Cloud、Claude Tag、Code Review、runner)的修复与行为变更一次性告知用户,重点提示回归修复与升级注意点。
反:最可能失效或有边界的主张:
- 多处用 more cases、sometimes 措辞,说明同类缺陷未被穷尽,修复可能不彻底
allowedMcpServers变更是放宽过滤,未读说明的用户升级后会静默加载此前被排除的 MCP 服务器,属安全边界移动sandbox.allowNestedUserNamespaces以削弱沙箱文件保护换取兼容性,是权衡而非纯收益- runner 的
GIT_CONFIG修复针对特定凭据路径(git credential helper 或 askpass 经GIT_CONFIG读配置),其他路径原文未说明
空:去掉叙事后剩下的必要事实:北京时间 2026-10-21 发布的 v2.1.305,含 2 个新增配置、数十项修复(3 项明确标注为此前版本回归)、多项改进与行为变更,署名 ashwin-ant。
综合结论:这是一个以修复为主的维护版本,对受 2.1.304 回归影响的 Vertex/Bedrock/网关用户与 self-hosted runner 用户价值最直接;升级前应重点关注 allowedMcpServers 行为变化与 /artifacts 按键变化。
中文译文 AI 生成
不可变的 release。仅 release 标题与说明可被修改。
49b8c35
更新内容
- 新增
sandbox.allowNestedUserNamespaces,使 Linux 上的沙盒化命令可以创建用户命名空间(Chromium、rootless podman);这使它们能够绕过沙盒的文件保护 - 新增
CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS,使无人值守重试模式(CLAUDE_CODE_RETRY_WATCHDOG)能够察觉在重置之前已被解除的用量限制 - 修复了当端点或网关拒绝 tool search,以及在使用禁用了 ToolSearch 或未在
--tools中包含它的网关后面时,Vertex、Bedrock 及其他提供商上的每个请求都失败的问题(2.1.304 的回归):Claude Code 现在会在不带它的情况下重试 - 修复了当模型名称与
modelOverrides值仅在大小写或[1m]标签上存在差异时,/effort和/autocompact设置不生效的问题 - 修复了 bare 仓库中的新 worktree 有时从本地 HEAD 而非默认分支开始,以及未更改的 subagent worktree 有时未被清理的问题
- 修复了磁盘已满时 Bash 命令以原始的 ENOSPC 文件路径失败的问题:错误信息现在会说明磁盘已满且什么都没有执行
- 修复了由云会话或 SDK 的
setMcpServers传入的 MCP 服务器在会话后期被你自己设置中的同名服务器替换的问题 - 修复了 subagent 切换到回退模型后,Claude 为该 subagent 的工作报出错误模型名称的问题
- 修复了当压缩为能放得下而不得不把最旧的消息排除在摘要之外时,云会话和队友未告知 Claude 的问题
- 修复了更多这样的情况:预定的 Cowork 云会话会为每个 subagent 等待五分钟,而这些 subagent 的 WebFetch 需要一项无人在场可给出的 URL 批准
- 修复了 Workflow 恢复时重新运行已完成的
pipeline()和parallel()agent 而非从该运行的 journal 中提供它们的问题 - 修复了 Remote Control 在用
/resume切换对话后在/resume中留下空的 “(session)” 条目的问题 - 修复了
/usage的行在窄终端中被截断的问题 - 修复了启动警告以原始文本形式打印在 logo 上方的问题:它们现在会进入 debug 日志,而不限制任何内容的权限规则会作为警告行显示在 banner 下方
- 修复了屏幕阅读器模式:搜索框现在显示 “Search:” 而非被 VoiceOver 读作 “telephone recorder” 的符号,且高亮的提示文本(例如 Ctrl+R 搜索匹配内容和 “ultrathink”)不再在单词内部出现空格
- 自托管 runner:修复了当设置了
TERM时,仅与 runner 或 orchestrator 共享其 stdout 的启动脚本以 Resource temporarily unavailable 失败的问题(2.1.300 的回归) - 自托管 runner:修复了自 2.1.296 起当 git credential helper 或 askpass 程序通过
GIT_CONFIG读取其设置时仓库访问失败的问题 - 自托管 runner:修复了当其在后台启动的 runner 保持输出打开时,orchestrator 将 spawn-runner hook 报告为超时的问题
- 改进了
/usage:每条警告现在是一行指明其来源的修复,按 f 即可应用这些修复;同样的修复也会出现在 VS Code 和/doctor中 - 改进了 MCP 同意对话框,使本意用于提示的 Enter 不太可能被当作 Accept
- 改进了 mod 的 Image,使其在
iTerm23.5 及更高版本的全屏渲染中绘制图片,此前该环境下仅显示其 alt 文本 - Remote Control:改进了 spawn 模式的消息:按下 w 现在会提示新模式已为该文件夹保存,而之后使用已保存模式的
claude remote-control start会说明其来源 - 更改了
allowedMcpServers,使其不再过滤仅在 env 中使用${VAR}的managed-mcp.jsonstdio 服务器:此前被你的允许列表遗漏的服务器现在会在升级后加载;使用deniedMcpServers可继续将其排除 - 更改了由 Claude Desktop 按路径挂载的插件,当你的组织的托管设置设置了
allowManagedPermissionRulesOnly时,它们不再保留其allowed-tools - 更改了
/artifacts的删除确认:按 1 或 Enter 保留,按 2 删除,按 Esc 取消;y 和 n 不再响应它 - 更改了 mod 的停靠面板,使其保持在终端宽度的 45% 以内,包括从更宽的终端保留下来的宽度
- [VSCode] 新增了 “Running start-up hooks” 的 spinner 状态,并附带屏幕阅读器播报,在 SessionStart 或 Setup hook 运行期间显示
- [VSCode] 修复了当
spinnerVerbs设置用较短的动词替换内置动词时,spinner 将 “Compacting...” 截断的问题 - [VSCode] 更改了会话未及时启动且没有 hook 在运行时显示的消息:它现在以输出日志开头并列出原因,而不是首先指向登录和网络
- [Cloud sessions] 修复了 Cloud environments 管理页面错误地以 “installs packages” 错误拒绝保存现有环境的问题
- [Cloud sessions] 改进了删除自托管环境的流程,对话框和错误消息会说明是什么阻止了删除以及会影响什么
- [Claude Tag] 将 Claude 尚未加入的公开 Slack 频道添加到 Claude Tag 管理端的 Add place 搜索中,管理员可以从那里进行设置
- [Claude Tag] 修复了 Claude Tag 访问包,使已迁移到另一个 GitHub 账户的仓库可以再次被添加
- [Claude Tag] 修复了在 Slack DM 线程中设置的例程在该线程中另一个例程重启对话后不再发布的问题;现在两者都会继续在那里发布
- [Claude Tag] 修复了在 Slack 线程中设置的例程在对话结束后报告成功却未发布的问题;这些运行现在会被跳过,并告知创建者
- [Claude Tag] 改进了大型组织中的 Claude Tag 管理页面,使 plugin、skill 和 bundle 的编辑在频道列表仍在加载时也能工作
- [Code Review] 修复了当评审期间多次 push 落到某个 pull request 上时,Code Review 有时不评审最新 commit 的问题
- [Code Review] 更改了 Code Review 的重新评审,使其在较早的阻断性发现仍未解决时不再以 LGTM 开头
展开原文提取正文(采集端自动提取,可能有缺失)
Immutable release. Only release title and notes can be modified.
49b8c35
What's changed
Added sandbox.allowNestedUserNamespaces so sandboxed commands on Linux can create user namespaces (Chromium, rootless podman); this lets them get around the sandbox's file protections Added CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS so unattended retry mode (CLAUDE_CODE_RETRY_WATCHDOG) notices a usage limit that was lifted before its reset Fixed every request failing on Vertex, Bedrock and other providers when the endpoint or a gateway rejects tool search, and behind gateways with ToolSearch disallowed or left out of --tools (a 2.1.304 regression): Claude Code now retries without it Fixed /effort and /autocompact settings not applying when the model name differed from a modelOverrides value by letter case or a [1m] tag Fixed new worktrees in a bare repository sometimes starting from local HEAD instead of the default branch, and unchanged subagent worktrees sometimes not being cleaned up Fixed Bash commands on a full disk failing with a raw ENOSPC file path: the error now says the disk is full and that nothing ran Fixed an MCP server passed by a cloud session or by the SDK's setMcpServers being replaced later in the session by a same-named server from your own settings Fixed Claude naming the wrong model for a subagent's work after the subagent switched to a fallback model Fixed cloud sessions and teammates not telling Claude when a compaction had to leave the oldest messages out of its summary to fit Fixed more cases of scheduled Cowork cloud sessions waiting five minutes for each subagent whose WebFetch needed a URL approval that nobody was there to give Fixed Workflow resume re-running already-completed pipeline() and parallel() agents instead of serving them from the run's journal Fixed Remote Control leaving empty "(session)" entries in /resume after switching conversations with /resume Fixed /usage rows being cut off in narrow terminals Fixed startup warnings printing as raw text above the logo: they now go to the debug log, and permission rules that restrict nothing show as warning rows under the banner Fixed screen reader mode: search boxes now say "Search:" instead of a symbol VoiceOver read as "telephone recorder", and highlighted prompt text, such as Ctrl+R search matches and "ultrathink", no longer has spaces inside words Self-hosted runner: Fixed a start script that shares only its stdout with the runner or orchestrator failing with Resource temporarily unavailable when TERM is set (a 2.1.300 regression) Self-hosted runner: Fixed repository access failing since 2.1.296 when a git credential helper or askpass program reads its settings through GIT_CONFIG Self-hosted runner: Fixed the orchestrator reporting a spawn-runner hook as timed out when a runner it started in the background kept its output open Improved /usage: each warning is now a one-line fix that names its source, and f applies the fixes; the same fixes appear in VS Code and /doctor Improved MCP consent dialogs so an Enter meant for the prompt is less likely to be taken as Accept Improved a mod's Image to draw its picture in iTerm2 3.5 and later with fullscreen rendering, where it showed only its alt text Remote Control: Improved the spawn-mode messages: pressing w now says the new mode is saved for the folder, and a later claude remote-control start that uses the saved mode says where it came from Changed allowedMcpServers to stop filtering managed-mcp.json stdio servers that use ${VAR} only in env: one your allowlist left out now loads on upgrade; use deniedMcpServers to keep it off Changed plugins that Claude Desktop mounts by path to no longer keep their allowed-tools when your organization's managed settings set allowManagedPermissionRulesOnly Changed the /artifacts delete confirmation to take 1 or Enter to keep, 2 to delete, and Esc to cancel; y and n no longer answer it Changed a mod's docked pane to stay within 45% of the terminal's width, including a width kept from a wider terminal [VSCode] Added a "Running start-up hooks" spinner status, with a screen reader announcement, while SessionStart or Setup hooks run [VSCode] Fixed the spinner cutting off "Compacting..." when your spinnerVerbs setting replaces the built-in verbs with short ones [VSCode] Changed the message shown when a session does not start in time and no hook is running: it now leads with the output logs and lists causes instead of pointing to sign-in and network first [Cloud sessions] Fixed the Cloud environments admin page wrongly refusing to save an existing environment with an "installs packages" error [Cloud sessions] Improved deleting a self-hosted environment so the dialog and error messages say what blocks the delete and what it will affect [Claude Tag] Added public Slack channels Claude hasn't joined to the Claude Tag admin Add place search, so admins can set one up from there [Claude Tag] Fixed Claude Tag access bundles so a repository that moved to another GitHub account can be added again [Claude Tag] Fixed a routine set up in a Slack DM thread no longer posting after another routine in that thread restarted the conversation; both now keep posting there [Claude Tag] Fixed routines set up in a Slack thread reporting success without posting after the conversation ended; those runs are now skipped and the creator is told [Claude Tag] Improved Claude Tag admin pages in large organizations so plugin, skill and bundle edits work while the channel list is still loading [Code Review] Fixed Code Review sometimes not reviewing the newest commit when several pushes landed on a pull request during a review [Code Review] Changed Code Review re-reviews so they no longer open with LGTM while earlier blocking findings are still open
原文入口
阅读原文(github.com)原文将在新窗口打开。收录时间不是内容更新时间;正文、译文与解读的版权归原作者/来源所有,本站仅作个人阅读辅助并保留原文入口;页面时间均为北京时间。
了解来源批准与收录规则