危险 rm 加了重定向也不再漏问:always-ask 修好了
Claude Code 对「可能毁掉整机或家目录」的 rm 会强制 always-ask:再急也要人点头。CLI 2.1.287 修了一条绕过路径——同一条命令里若还把输出重定向到 ~ 或带通配的路径,旧版可能把这条强确认弄丢,危险删除就有机会直接跑。
这是安全向修复,不是新功能开关:升上去就该生效。
问题长什么样
典型组合(示意,不要在生产机上试真删):
- 目标是
/、家目录等高危路径上的rm(本来应 always-ask) - 同命令又带输出重定向,且重定向目标涉及
~或通配
旧逻辑在解析 / 分类时,可能把「危险 rm」与「带重定向的写」搅在一起,结果该弹的确认没了。人眼以为「危险命令总会问」,实际已经漏问——这比「提示文案难看」严重得多。
升级后:这类组合应重新落回 always-ask,先问再跑。
为什么值得单独写一篇
- 误删不可逆:家目录、根路径相关删除一旦漏确认,恢复成本极高。
- 模型爱拼管道 / 重定向:自动生成的 Bash 经常
rm ... > somewhere或2>&1 | tee ...,更容易撞上这条边角。 - 信任假设被打破:团队若写过「危险 rm 一定要人批」,旧 bug 会让手册与真实行为不一致。
同版本还有一条相关加固:经仓库内已提交的符号链接写到敏感文件或工作区外时,会点名落点并等人确认——和「危险 rm 别漏问」是同一安全叙事下的不同面。
和相近能力怎么区分
| 能力 | 关系 |
|---|---|
| 权限与沙箱 | 讲允许哪些工具 / 沙箱;本文是 Bash 危险命令的确认是否丢失 |
| 权限提示「2 of 5」 | 队列可见性;本文是该不该问 |
| 整工具 Bash allow / hook 放行 | 2.1.287 起,对文件工具会直接拒绝的敏感路径,shell 写入也会改为先问再跑,与 rm 修复互补 |
| Windows 拒绝 Bash 时关掉 PowerShell 的启动警告 | 另一条安全 UX;不是 rm 逻辑 |
升级后建议动作
claude --version确认 ≥ 2.1.287(安全修复建议全队尽快升)。- 在空沙箱或一次性容器里,用无害路径复现「高危形态 + 重定向」:应看到确认,而不是静默执行。
- 审查团队是否曾用「永远 allow 某类 Bash」绕过确认——修复后仍可能被宽规则打穿,宽规则要单独收。
- 操作手册补一句:危险删除不得依赖「没弹窗 = 安全」;升级前后都以提示为准。
- 与 allowedProviders、沙箱策略一起看:少权限、必确认、可回滚,三层一起收。
小结
- 2.1.287 修复:危险
rm(如针对/或家目录)在叠加重定向到~/ 通配时,不再丢掉 always-ask。 - 目的是挡住「以为会问、实际已跑」的误删。
- 请尽快升级并在隔离环境抽查;宽 Bash allow 仍可能绕过确认,需单独治理。
安全修复类版本:能升就升,别等再撞一次才补。