Claude Code 2.1.281 对危险 rm 先问再拒

Claude Code 2.1.281 规定:目标只来自命令替换的递归 rm,在 auto 和跳过权限模式下也要询问,即使已有 Bash 允许规则。无人值守时危险 rm 最多等 2 分钟,然后拒绝并附上改写提示,默认不要关掉这两条保护。

Claude Code 2.1.281 对危险 rm 先问再拒

Claude Code 2.1.281 收紧了递归删除。发行说明写:目标只是命令替换结果的递归 rm,例如 rm -rf "$(pwd)",以前在 auto 和 --dangerously-skip-permissions 下会不经提示就跑。现在即使有 Bash 允许规则也会先问。关掉这次询问的变量是 CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1。claude code 危险 rm 在这一版里还有第二条:危险 rm 的提示在跳过权限和 auto 下最多等 2 分钟,然后拒绝,并给一句改写提示,好让无人值守的会话继续。CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1 关掉这个超时。

作者CodePass 技术编辑

两条开关不要对调

第一条管的是「目标来自命令替换」。Bash 允许规则不再足够让这种 rm 直接执行。第二条管的是「已经弹出的危险删除提示等太久」。超时之后的动作是拒绝,不是执行。发行说明写 deny the command with a rewrite hint。会话不会停在对话框上直到人回来。

若你故意要无人值守删除,必须同时理解这两个变量:一个跳过「命令替换也要问」,一个跳过「两分钟后拒绝」。发行说明把它们写成关闭保护的开关,默认是保护开着。不要在共享的项目设置里打开它们。

同一版还改进了危险 rm 的识别:目标是 shell 变量再跟上顶层目录名、从工作目录推导出来的变量,或只有反斜杠的目标,也会被标出来。这是检测面变宽,不是新的删除能力。

和符号链接写入是不同的批准

2.1.280 修的是写入通过符号链接时按树内拼写放行,见 按落地路径批写入。2.1.281 的 rm 修的是删除命令在自动模式里不经提示。升级到 2.1.281 会带上 2.1.280 的写入修复,只升到 2.1.280 则还没有这两条 rm 规则。

允许规则里若含 NUL 字节,2.1.281 改为匹配不到任何命令,而不是展开成通配。过宽的允许规则和危险删除是两套检查。规则写坏了不会变成「什么都能删」,但也不会再按你以为的前缀去匹配。

参考资料