AI编码工具变“格式化神器”?Claude CLI半年频当“系统杀手”,多位开发者痛斥:心血都没了
2025-12-15 14:55

AI编码工具变“格式化神器”?Claude CLI半年频当“系统杀手”,多位开发者痛斥:心血都没了

本文来自微信公众号: AI前线 ,作者:华卫,原文标题:《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 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运行环境的配置与约束因素。他提到了以下多个具体的有效措施:


  1. 考虑使用沙箱化的配置环境中运行agents,有很多开源项目都提供了对Claude Code的沙箱化配置环境。例如,JetBrains在新的Air IDE中,也提供了Claude Agent的远程/沙箱化运行环境。

  2. 生产环境积极使用DevContainer等容器环境。

  3. 在大范围修改项目时,主动使用hooks自动化commits操作,保证变更能被Git等VCS系统及时记录。

  4. 不管是什么Agents,都应该只拥有代码工作目录的操作权限,不要在全局位置里使用Agents,不在生产项目、重要环境里使用YOLO模式。

  5. 主动引导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原生产品日报频道: 前沿科技
本内容来源于网络 原文链接,观点仅代表作者本人,不代表虎嗅立场。
如涉及版权问题请联系 hezuo@huxiu.com,我们将及时核实并处理。
正在改变与想要改变世界的人,都在 虎嗅APP
赞赏
关闭赞赏 开启赞赏

支持一下   修改

确定