Claude Code 在 v2.1.314 加了一个不起眼但很关键的安全设置:permissions.blockWritesOutsideWorkingDirectories。启用后,Write、Edit、NotebookEdit 这三个写工具在所有权限模式下都会拒绝写工作目录之外的路径。这条改动本身只有一句话,但它补的是编码 Agent 权限模型里一个长期存在的洞。这篇把它拆开讲。

这条设置解决什么

编码 Agent 跑在用户机器上,权限粒度如果只到「能不能编辑文件」这一层,是不够的——用户授权它改项目代码,并不意味着授权它改用户主目录下的配置文件、或者某个无关项目的源码。在 v2.1.314 之前,写工具在某些权限模式下可以写到工作目录之外,等于「信任它改这个仓库」被放大成了「信任它改这台机器上的任意文件」。这条设置的意义,是把「工作目录」变成写操作的一条硬边界:不管权限模式是宽松还是严格,工作目录之外一律拒绝。

配置方式

这个护栏是一个布尔开关,写在 Claude Code 的 settings 里:

{
  "permissions": {
    "blockWritesOutsideWorkingDirectories": true
  }
}

关键在「所有权限模式」这个限定:它不是只在默认模式下生效,而是贯穿始终。这意味着即便你为了效率把权限放宽到自动批准,写目录外路径依然会被拦下来,安全性不随便利性一起下降。

权限模型对比

维度 之前 v2.1.314
写工作目录外路径 部分权限模式下可能允许 所有模式一律拒绝
生效范围 视模式而定 贯穿所有权限模式
涉及工具 — Write / Edit / NotebookEdit
配置入口 无 permissions.blockWritesOutsideWorkingDirectories

这个对比里最值得注意的,是它把「一条安全规则」从「随权限模式起伏」变成了「无条件成立」。对编码 Agent 来说,这种「不因便利而放松」的不变量,比再多的单点修复都更有价值。

同版其它安全相关改动

这版的安全修复不止这一条。Claude apps 网关的 upstream 加了可选的 groups 列表,只把指定 IdP 组里的开发者路由到对应 upstream,failover 时同样生效;Bedrock upstream 加了 guardrail_trace,记录哪条 Amazon Bedrock 防护规则命中了请求、但不记录匹配文本;还有一堆边界修复,比如网关不认 tool search 的 tool_reference 块时自动降级重发、MCP 服务器存储的登录失效后改为未登录使用、CI 环境下 claude ultrareview 和 remote-control 对不受信任文件夹直接拒绝等。单看每一条都是小修,合起来是朝着「权限默认收紧、护栏默认打开」的方向在走。

值不值得升级

如果你是重度使用、或者让 Claude Code 在多个项目间穿梭的人,值得升——这条护栏直接堵住了写目录外文件的风险,几乎零成本。如果你只是偶尔在一个固定仓库里用、又从来不碰权限配置,这版没有非升不可的理由。有一个配合习惯值得养成:升级后用 /permissions 看一眼当前生效的权限规则,确认这条护栏确实开着了,别假设它默认就是 true。总体看,v2.1.314 是那种「单看不起眼、但对长期安全很有分量」的版本,真正的价值在权限模型被补上了一个缺口,而不是表面上的功能堆叠。

不适合谁

两类人从这条改动里收益有限:一是从不让 Agent 触碰工作目录之外、且权限始终审得严的团队,护栏对你更多是「保险」而非「刚需」;二是只在完全隔离的沙箱环境里跑 Claude Code 的人,沙箱本身已经限制了写范围。对这两类人,这版的其他 bug 修复可能比这条护栏更实际,可以按需升级而不必为它专门跟进。