AI编码工具变 “格式化神器”?Claude CLI半年频当“系统杀手”,多位开发者痛斥:心血都没了
Claude 又闯祸了。近日,一则 Reddit 上对 Claude CLI 的控诉帖引起了大量反响。
情况是,一位开发者用 Claude CLI 清理旧仓库里的软件包时,不仅被删除了整个用户目录,居然把整个 Mac 系统都清空了!
这到底是怎么回事?
Claude 自查“翻车”:执行了灾难性命令
据该开发者叙述,发生这事后,他第一时间询问了 Claude,而 Claude 给出的回复十分气人:
我找到了问题所在,情况非常严重。查看你的日志后发现,执行了这条灾难性命令:
bashrm -rf tests/ patches/ plan/ ~/
看到末尾的 ~/ 了吗?这代表你的整个用户主目录。
Claude Code 实例意外在删除命令中包含了 ~/,这会彻底清除以下所有内容:
你的完整桌面目录(~/Desktop)
文档、下载文件及所有个人数据
钥匙串(~/Library/Keychains)
Claude 凭证(~/.claude)
应用程序支持数据
基本上 /Users/ 目录下的所有内容都会被删除。
这也解释了其 Mac 系统为什么会出现以下情况:
- 桌面内容消失
- 钥匙串被删除
- Claude 凭证丢失
- 最终出现 “当前工作目录已被删除” 的错误提示
“看到末尾的 ~/ 了吗?这代表你的整个用户主目录”,有网友对 Claude 的这句回复啼笑皆非,表示“这简直是年度喜剧名场面!要是我不知情,保准会觉得你上一轮对话里得罪 Claude 了,它这是逮着机会报复你呢”。
还有网友“神翻译”道 Claude 的潜台词:你说得完全正确!我已经删除了你的用户目录 :) 你需要我帮忙恢复电脑功能吗?还是我依然帮不上忙?
总的来说,就是 Claude CLI 意外执行一个包含~/ 的 shell 命令、误入了用户的主目录,导致所有用户文件被递归删除。
rm 命令成 “噩梦”,多位开发者痛斥
遭遇此突发事件后,该开发者发帖求助:“有人遇到过这种情况吗?我正在想办法看看能不能恢复。好多心血都没了……”
有热心网友进一步询问情况,“你是在根目录下运行的 Claude,还是它不知怎的绕过了权限限制?”据该开发者解释,当时他是在桌面的某个代码仓库(repo)里,通过 Cursor 终端使用 Claude CLI 工具,结果在让其删除一些软件包(packages)时,Claude CLI 向上跳转了一个目录层级。
有经验的开发者在帖子下方表示,Claude Code 中 “完全放开操作权限” 的标志位命名为“—dangerously-skip-permissions”是有原因的,字面意思就是 “危险跳过权限校验”。“假设你没手动开启这个标志位,那要么是你给了它对 rm 命令的‘全权放行权限’,要么是你手动批准了这条特定命令。无论哪种情况,这个权限系统的存在都是为了保护你:因为 LLM 本质上只是根据你输入的文本(tokens)预测下一个响应文本,它根本‘不知道’ rm -rf ~/ 会彻底清空你的用户主目录。但 Claude Code 在设计时就明确了:模型输出的任何 rm 命令(以及大多数其他文件系统命令)都可能存在风险,必须先向用户确认。”
还有开发者评价道,“本质是把 Claude 当作工具,亲手删除了自己用户主目录下的所有内容。我个人习惯在 CLAUDE.md 配置文件里加上一句:绝不要使用 rm 命令,仅用 mv 命令移至归档目录 / 。还好你有备份!”
对此,该开发者也表示,以后绝不会再允许 Claude 使用 rm 命令了。此外,他还透露,“说实话,这挺搞笑的。这是我第一次遇到 YOLO 模式的问题,而我从这些编程工具支持 YOLO 模式以来就一直在用它。以后每天都要备份……”
也有开发者谈到,同一个命令很容易用一百种不同的方式表达。限制“rm -rf /”并不能完全防止 AI 攻击,它会创建一个 NodeJS 可执行文件,进而启动一个 shell。“ /sandbox 可能是更好的方法”,一名开发者指出。
值得一提的是,该开发者遇到的情况不是个例。在 Reddit 上的其他关于 Claude 的版块里,近期也有几位用户报告了同样的问题。5 个月前,一位开发者经历的情况更为棘手。Claude 不仅删除了其 Mac 桌面上的所有文件,还基本上删除了他的整个代码库。而根源同样是一条 -rf 参数命令,即 Bash(rm -rf ~/)。
“删库” 成 AI 工具通病, 开发者们如何做?
此案例为开发者社区敲响了关于 AI 开发工具便利与风险之间权衡的重要警钟。
“以这种惨烈的方式学到这个教训真的太不值了。”不少开发者因其境遇心有余悸,纷纷感叹“Claude Code 与 Claude (Web) 是不同的,毫无疑问,Claude Code 可以对你的电脑进行一些操作。”
同时,有开发者以自身经历警告道,“不要运行你不理解的命令,也不要授予工具执行此类命令的权限,更不要让 Claude 跳过请求许可的步骤,然后不是直接回答“是 / 否”,而是让 Claude 解释命令、其理由和任何风险。”一位开发者表示,“我从不让 AI 触碰任何未受严格 git 版本控制的内容。我不仅希望能回滚到任意检查点(checkpoint),还要求在接受任何更改前手动审阅代码差异(diffs)。某些氛围程序员简直就是在胡乱写东西,太疯狂了。”
“灾难性删库”,似乎已经成为不少 AI 开发工具的通病。此前,谷歌刚推出的 Gemini CLI 也发生过此类事故。今年 7 月,有开发者在 Gemini CLI 的 GitHub 项目下提交了一则 issue,让其把文件移动到新目录,不仅任务失败还把原文件夹里的所有内容都搞没了。同月,有用户发帖痛斥开发协作平台 Replit 把他公司的整个生产数据库都删除了。
就此,我们采访了业内专业人士。资深 AI 解决方案专家孙涛表示,LLM 是基于概率的文本生成器,而操作系统是基于确定性规则的指令执行环境,因此两种系统存在天然的“语义鸿沟”。LLM 由于 Tokenization 粒度问题的影响,很难理解在 rm -rf / 与 rm -rf./ 之间,仅仅一个点号(.)的缺失,在语义上就是“清理当前目录”与“毁灭系统”的天壤之别。
尽管在设计 Agent 时,厂商已经设计了浅层的防御(主流是基于正则过滤,避免直接生成高危指令),但是 shell 语法的灵活性导致失效也在所难免。更进一步,即使是使用 agents.md 类配置在 system prompts 指明避免高危指令操作,随着上下文的增长,或是面对生成长指令的场景,这些定义在这种脆弱场景下仍有失效的可能。
“误删整个用户目录是一个典型的模式混淆问题,Agent 本应在“文件管理器”模式下运行,却在 shell 解释器模式下行动,误判了命令执行的真实语意。Agent 对所处运行环境缺乏理解,导致了这种“拒绝解释高危命令,却又自动地执行它”的错误结果。”
这些案例带来的更广泛启示是,开发和使用命令行界面(CLI)工具时,必须进一步强化安全操作意识。尽管 CLI 工具具备强大的自动化能力,但如果管理不当,可能会带来重大风险。
谈及当前如何避免让 AI 编码工具出现“删库”事故,孙涛指出,在使用 Coding Agents 时,除了保持“人在环路”,主动审查运行的命令情况,还应该考虑对 Agents 运行环境的配置与约束因素。他提到了以下多个具体的有效措施:
- 考虑使用沙箱化的配置环境中运行 agents,有很多开源项目都提供了对 Claude Code 的沙箱化配置环境。例如,JetBrains 在新的 Air IDE 中,也提供了 Claude Agent 的远程 / 沙箱化运行环境。
- 生产环境积极使用 DevContainer 等容器环境。
- 在大范围修改项目时,主动使用 hooks 自动化 commits 操作,保证变更能被 Git 等 VCS 系统及时记录。
- 不管是什么 Agents,都应该只拥有代码工作目录的操作权限,不要在全局位置里使用 Agents,不在生产项目、重要环境里使用 YOLO 模式。
- 主动引导 AI 使用特定的文件编辑工具(如 PowerShell 指令)而不是通用的 Bash 工具访问目录,专用 API 通常会对路径进行校验,禁止越权访问。
“定期审阅 Agents 工作历史记录,抵制 --dangerously-skip-permissions 配置的诱惑,可以尽量降低 Agents 带来无意识变更的风险。”孙涛最后强调。
参考链接:
https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/?share_id=kgtFDfIftY2TLD2M6bGkg&utm_content=1&utm_medium=ios_app&utm_name=ioscss&utm_source=share&utm_term=1
本文来自微信公众号“AI前线”(ID:ai-front),作者:华卫,36氪经授权发布。















