Meteora Web

Claude Code 2.1.314 阻止工作目录外的写入并修复数十个漏洞

Claude Code 2.1.314 新增阻止写入工作目录之外的功能、网关上的 IdP 用户组以及数十项修复。一文看懂有哪些变化。

Ing. Calogero Bono 1 分钟阅读
Claude Code 2.1.314 阻止工作目录外的写入并修复数十个漏洞

Anthropic 在 GitHub 上发布了 Claude Code 2.1.314 版本。Claude Code 是一款可以在终端、VS Code 和 Claude Desktop 中处理代码的工具。最直接的变化是一项新的权限设置,它会阻止 Claude 写入工作目录之外的文件。其余内容是一长串修复,许多针对在企业中使用 Claude Code 的用户,涉及网关、云服务商和集中规则。决定这类工具能否进入团队的,往往正是这些安全与管理细节。

在进入具体内容之前,先说几个术语。网关是位于开发者和模型之间的中间服务器,让企业可以控制谁用什么。IdP(身份提供商)是管理身份和用户组的系统。Bedrock、Vertex 和 Foundry 分别是亚马逊、谷歌和微软的云服务,可以从中调用模型。压缩是对长对话的摘要,避免占满模型的记忆。钩子(hook)是在特定时刻触发的脚本,例如在某条命令执行之前。

Zenithby Meteora Web 你企业的操作系统。 社交媒体、客户、预订和发票都在同一个平台。适合健身房、理发店和专业人士。 了解 Zenith → 免费演示 · 无需信用卡

阻止工作目录外写入的功能是什么?

根据Claude Code 官方仓库的发布说明,新设置名为 permissions.blockWritesOutsideWorkingDirectories。开启后,Write、Edit 和 NotebookEdit 工具会拒绝工作目录之外的路径,并且在所有权限模式下都生效。

最关键的是最后这一点。此前即使规则很严格,行为也取决于所选的模式。现在说明中写明,无论哪种模式都会拒绝,即使用户选择了让智能体拥有更大自由度的情况也不例外。选项名称也表明它是可选的,需要手动开启。

沙箱方面也有类似的修复。sandbox.excludedCommands 的说明原本写着列出的命令总是在沙箱外运行,现在改为明确,一次调用中的每条命令都必须与某个条目匹配。另外,使用 claude -p --resume 或 --continue 打开的 worktree 此前不受沙箱保护,现在已经受到保护。还有一项修复涉及通过 --setting-sources 排除的设置文件,它之前仍在提供部分设置,例如自动模式的规则和已保存的授权。

网关和管理员有哪些变化?

Claude 应用网关新增了一项面向组织的功能。每个 upstream,即网关转发请求的目标,都可以设置一份可选的用户组列表。只有属于所列 IdP 用户组的开发者才会被转发到该 upstream,即使在故障转移时也是如此,所谓故障转移是指出现故障后网关切换到备用目标。

Bedrock 的 upstream 新增了 guardrail_trace。它用于记录某次请求触发了哪一条 Amazon Bedrock 护栏过滤器,但不保存触发过滤的原始文本。对于需要了解请求被拦截原因、同时又不想在日志中留存敏感数据的团队,这是一个很实用的折中。

多项修复涉及管理员设置。

  • 管理员定义的 TLS 设置此前在 Claude Desktop 会话中不生效,现在已经生效。
  • 如果 forceRemoteSettingsRefresh 只在远程设置中开启,过期的本地副本就不会再被应用。服务器不可达时,会话可能在没有策略的情况下启动。
  • 在带有托管插件的机器上,如果某个个人插件的清单损坏或下载失败,切换模型会被拒绝。
  • 如果管理员限制了某个模型的 effort 级别,Claude Code 现在会降低 effort、重试,并告知正在使用的级别。此前会话每一轮都会失败。

另外,当 Google 令牌端点接受连接却不返回响应时,网关的 Vertex upstream 可能挂起数分钟。这一点也已修复。

哪些修复涉及 Bedrock、Foundry 和 Vertex?

此次发布包含大量面向不直接使用 Anthropic API 用户的修复。

Bedrock

包含大量图片的 Bedrock 会话此前每一轮都会失败,/compact 也会因输入过长而报错。现在 Claude Code 会移除较旧的图片再进行压缩。另一项修复涉及 Bedrock 和 Vertex 上的模型更新提示,即使托管设置已锁定模型,它也会在每次启动时重新出现。

Microsoft Foundry

当资源中没有默认 Sonnet、Opus 或 Haiku 模型的部署时,会话会失败。现在 Claude Code 会回退到同一系列的较旧模型。

第三方网关

如果网关不接受工具搜索的 tool_reference 块,请求会在去掉该功能后重发一次,会话也会记住这一结果。如果网关或服务商按名称拒绝某个 Claude Code 的 beta 请求头,同样会在去掉该请求头后重新发送。使用点号书写的模型 ID(例如 claude-opus-4.8)此前会被当作旧模型处理,上下文窗口、输出上限、effort、推理模式和费用都会出错,现在已经修正。

在证书方面,当系统信任库中包含一个与前任交叉签名的已续期根证书时,TLS 连接会因 UNABLE_TO_GET_ISSUER_CERT 而失败。这一问题也已解决。

日常使用有什么变化?

对编写代码的人来说,最明显的变化是 VS Code 和 Claude Desktop 的 Code 标签页中新增了空闲时压缩。超过 20 万 token 且处于闲置状态的对话会被摘要,如果提示缓存已过期,下一条消息就会使用该摘要。

此外还有一系列终端和 CI 相关的修复。

  • 如果启动失败,claude -p 此前会以退出码 0 结束且没有输出。现在会打印错误并以 1 退出,这对脚本很重要。
  • 在带终端的 CI 任务中,claude ultrareview 和 claude remote-control 不再询问是否信任目录。设置 CI 后,它们会直接拒绝不受信任的目录。
  • 输出非常大的 PreCompact 钩子会导致压缩失败或反复重试。现在每个钩子的输出都会截断为 10,000 个字符。
  • 后台的 diff 更新会短暂占用仓库的索引锁,可能导致同一时间运行的 git 命令失败。
  • 拦截 Bash 的钩子此前不会在 Monitor 工具启动的命令上触发。现在会触发,但它们只能阻止或要求确认,不能批准或改写这些命令。

其余是界面打磨,涉及 Markdown 表格、vim 模式、智能体选择、文本和图片粘贴、会话标题以及权限对话框。

需要了解的局限

我们掌握的发布说明在末尾被截断,因此无法排除还有其他条目。我们没有发布日期,关于写入设置也没有完整文档。我们不知道它是否默认开启,文本似乎暗示没有。我们也不清楚工作目录的具体定义,例如符号链接或关联仓库如何处理。

这些都是厂商的说明,而非独立测试。阻止写入工具并不能约束 shell 命令,后者遵循沙箱规则。关于 Monitor 钩子的那句话也需谨慎看待,因为它改变了钩子能够承诺的范围。

对数字工作者意味着什么

如果你管理一个团队,首先应阅读完整列表,判断哪些修复与你的情况相关。使用大量图片的 Bedrock、部分部署的 Foundry,或企业网关用户会直接受益。如果你独自工作并使用基础套餐,主要会看到空闲压缩和界面打磨。

对于代理公司或软件开发团队,写入规则是一个可以向客户讲清楚的卖点。它说明智能体可以被限制在项目之内,这在同一台电脑上存放多个仓库或配置文件时尤其有用。根本原则依然成立,智能体应当被视为拥有最小权限的协作者。我们在Cursor 上被木马化的 Claude Code 扩展和 SSH 后门事件中也看到了这一点,风险来自工具的周边环境。

如果你在 CI 中通过 claude -p 运行脚本,请重新检查退出码。以前被视为成功的错误现在会让流水线停止,这是正确的做法,但可能会让人意外。如果你在自有服务器上运行开发环境,也要记住机器本身同样重要,因此需要带安全更新的托管服务器。

我们的看法

这次发布很能说明编程智能体目前所处的阶段。新功能不多,大部分工作是修复边界情况、代理、证书、策略和回退机制。这表明该工具正从单个开发者的笔记本走向那些不允许任何模糊地带的环境。

阻止工作目录外写入是正确的选择,但留下两个疑问。第一,它是可选的。一项需要先了解才能开启的保护,主要保护的是本来就很谨慎的人。第二,权限相关的修复为何如此之多,包括仍在生效的被排除设置和未触发的钩子。这并非过错,但提醒我们控制措施需要验证,不能想当然。

还有一个问题是谁来审查生成的代码。更受限制的智能体并不能替代人工审查,因此GitHub 上的 pull request 与代码审查实践,以及用于代码审查的 AI 工具依然有用。

常见问题

permissions.blockWritesOutsideWorkingDirectories 有什么作用?

它会让 Write、Edit 和 NotebookEdit 拒绝工作目录之外的路径。根据发布说明,它在所有权限模式下都生效。对于符号链接等特殊情况如何处理,我们没有详细信息。

该阻止功能默认开启吗?

说明中没有明确说明。文中提到的是新增的设置,因此建议在自己的配置中进行检查。在依赖这项保护之前,请先查阅官方文档。

使用 Bedrock 或 Foundry 的人需要更新吗?

如果你遇到了文中描述的问题,那就需要。此版本修复了包含大量图片的 Bedrock 会话,以及没有默认模型部署的 Foundry 情况。在为整个团队更新电脑之前,请先在一台机器上试用。

网关上的用户组是什么?

它是与每个 upstream 关联的一份可选 IdP 用户组列表。只有这些组的开发者会被路由到该处,即使在故障转移时也是如此。它用于区分谁可以使用哪些目标。

空闲压缩可以在所有地方使用吗?

不能,根据说明,它只添加到了 VS Code 和 Claude Desktop 的 Code 标签页。它适用于闲置超过 20 万 token 的对话,并且只有在提示缓存过期时才会使用摘要。

未来几个月值得关注什么,权限与企业中的智能体

重点不在这一个版本,而在于发展方向。智能体将拥有越来越多的集中控制,现在就应做好准备。

  • 检查你的权限配置,决定是否开启阻止工作目录外写入的功能,可以先在测试项目上试用。
  • 检查使用 claude -p 的 CI 脚本,因为启动错误现在会以退出码 1 结束并可能停止流水线。
  • 如果你使用网关或云服务商,请通读完整的修复列表,并将相关案例与你的日志进行对比。想了解不同供应商的成本,可以阅读Claude 与 OpenAI 的对比,同时也要记住多个模型同时出现的故障也可能影响到你。

来源

Zenithby Meteora Web 你企业的操作系统。 社交媒体、客户、预订和发票都在同一个平台。适合健身房、理发店和专业人士。 了解 Zenith → 免费演示 · 无需信用卡

相关阅读

博客精选

最新文章