Claude Code v2.1.321 于 2026 年 11 月 9 日发布,一次性补上了五个与安全相关的缺口。先跑 claude --version,低于 2.1.321 的版本仍然带着这些问题。团队用户可以把最低版本写进受管设置或开发环境脚本,并加进入职检查清单。
五个缺口分别涉及:MCP OAuth 刷新令牌在重定向时被发往另一台主机;被判为只读的 Bash 命令在沙箱外执行;deny 规则漏掉了 cp 或 mv 写入文件夹的文件;一条 PreToolUse 的 ask 被丢失;以及回答超过 16 MiB 时 mcp_tool 钩子被跳过。更新之后,再逐项核对下面的设置。
MCP OAuth 令牌与重定向
修复之前,一个对 OAuth 请求做重定向的服务器,可能收到本应发给另一台主机的机密信息,例如刷新令牌。用 claude mcp list 列出你的 MCP 服务器,删掉不再使用的,对任何不受你控制的服务器轮换令牌。MCP 调用应当作为独立的工具类别,配自己的规则,与 shell 和文件访问分开管理。
沙箱外的只读 Bash
一条被判为只读的命令,可以在没有提示的情况下跑在沙箱之外。“只读”是对命令文本做出的判断,而命令文本可能误导判断。在命令执行前看到完整命令的第二道检查(一个 PreToolUse 钩子)是一层成本很低的额外防护。
cp 和 mv 写入文件夹
deny 规则和保护文件提示,没有作用到 cp x dir/ 或 mv x dir/ 实际写入的那个文件上。这与 v2.1.319 修复的引号路径问题属于同一类缺口:针对路径的一种写法写下的规则,会漏掉同一次写入的另一种写法。如果你禁止写入 .env、.github/workflows/ 或钩子配置,更新后请用 cp 和 mv 往这些文件夹里写一次,确认能拿到拒绝或提示。
两个钩子修复
- 当一个 PreToolUse 钩子发出的 ask 遇到另一个钩子的 defer 先完成时,这条 ask 可能丢失。
- 回答超过 16 MiB 时,mcp_tool 钩子会被跳过;现在这种情况改为直接拒绝该调用。
如果钩子是你的安全层,就要提前决定钩子无法作答时怎么办:失败关闭(阻断)还是失败放行(继续)。对 shell 命令、文件写入和 MCP 调用,失败关闭是更安全的默认值;对文件读取,失败放行通常可以接受。
这次发布说明了什么
一个版本里五个修复,全部落在人们信任用来拦截危险动作的那一层。内置权限在持续变好,但它们仍然是对命令文本的模式检查。允许智能体执行命令的团队应当保持:当前版本;范围收窄的 allow 规则;能看到每一次工具调用、把有风险的调用扣下来等人处理、并把每个决定记进审计日志的执行前策略检查;以及为长时间自主运行准备的沙箱。
核对清单
- Claude Code 版本为 2.1.321 或更高
- 已用 claude mcp list 复查,删除了不用的服务器
- 已为第三方 MCP 服务器轮换令牌
- 已用 cp、mv 和带引号的路径测试过 deny 规则
- 每个工具类别(shell、文件写入、文件读取、MCP)各有一条 PreToolUse 条目,且各自写明失败模式
- 钩子配置文件已受保护,智能体无法改动
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.