最近,开发者 Sebastien Guillemot 经历了一场惊险事故:
他原本只是想让 Claude 写一个脚本,自动清理 AI Agent 留在 /tmp 目录中的垃圾文件,结果 AI 在“安全审查”之后,亲手把他的整个主目录(Home Directory)给端了——700GB 数据,一周的工作成果,说没就没。

更讽刺的是,那个最初他想要清理的 /tmp 目录,最后被 Claude“完美地”保留了下来。
身为隐私性区块链项目 Midnight 基金会的 CTO,日常中 Guillemot 是一名重度 AI Agent 用户,经常在开发中频繁调用各种 AI 编程助手。但他发现,这些 Agent 有一个共同毛病:
干活很积极,收尾很随缘——大量临时文件会被堆积在 /tmp 目录中,时间一长,不仅占用磁盘空间,也让整个开发环境变得越来越混乱。
于是,他让 Claude Fable 5 帮忙写一个自动清理脚本:给每个 Agent 分配一个独立的 /tmp 目录,任务完成后,就把属于它的临时文件一起删除。
听起来很简单,但真正的难点在于:不能误删仍在使用的文件。
Fable 最初给出的方案是,检测Agent是否还在运行。如果某个Agent还在工作,就暂时不要清理它对应的目录。不过Guillemot觉得这套代码过于复杂,要求 Claude 进一步简化。
到这里,一切都还很正常,问题出现在随后进行的安全审查。
由于任务涉及真正的文件删除操作,Fable 主动进行了一次“对抗性审查”(adversarial review),也就是让另一个 Claude 实例检查这套代码是否存在安全问题。
也正是这个环节,触发了 Anthropic 内置的安全降级机制:当系统判定任务涉及敏感操作(如文件删除、网络安全等)时,会自动将模型从高级版本降级到更保守的版本——这套机制,本意是为了降低高风险场景下模型“过于激进”的可能性。
于是,模型先是从 Fable 5 降到了 Opus 5,然后又进一步降到了 Opus 4.8。
接下来,Opus 4.8 开始执行安全测试。测试目标其实非常明确:检查删除命令最终指向的路径,如果发现目标是 /tmp 或用户的主目录,就应该拒绝执行。
结果呢?测试成功了,/tmp 和主目录都被正确识别为“危险目标,不可删除”。
从安全测试本身来看,这一步模型没做错。可问题在于,测试结束之后还有一个“清理测试现场”的步骤——而灾难,就藏在这个清理步骤里:
代码在测试阶段使用了一个变量保存删除目标,安全检查发现目标危险后,程序触发退出流程;与此同时,退出流程又会调用清理函数,对测试过程中产生的临时内容执行删除。
关键 Bug 出现了:测试代码和清理代码复用了同一个变量名。
于是,那个原本已被判断为“绝对不能删除”的主目录路径,又被清理函数拿到了。然后,一个熟悉得不能再熟悉的命令出现了:rm -rf —— 结果就是,模型刚确认“这个目录不能删”,下一步却拿着同一个变量把它给删了。
从技术角度看,这其实是一个非常典型的变量复用问题,甚至算不上什么高深 Bug。也就是说,安全检查本身没有问题,真正出问题的是安全检查之后的测试清理逻辑。
Guillemot 很快意识到了问题并试图终止进程,但已经来不及了:大约 700GB 数据被删除,其中包括他整整一周的工作成果;更让他无语的是,那个最初让他头疼、希望 AI 帮忙清理的 /tmp 垃圾文件,反而留了下来。
从Guillemot 公开展示的记录来看,两份相关文件此前已完成写入,随后退出清理流程被触发,最终删除操作发生在大约 05:23—05:24。也就是说,工具调用表面上可能已显示“拒绝”,但相关文件写入和退出清理流程实际上已经发生。
事故发生后,一个问题出现了:如果当时没有从 Fable 5 降级到 Opus 4.8,是不是就不会出事?
对此,Guillemot 的判断是:有可能。按照他的说法,Fable 5 在编码任务上的表现优于 Opus 4.8,更强的模型或许有机会发现测试代码中那个危险的变量复用问题。
不过,这只是他单方面的猜测,目前没有公开的对照实验能够证明:如果换回 Fable 5,它一定会发现这个 Bug。
好消息是,Guillemot 最终通过 Git、Nix、Session Logs(会话日志) 等多个来源,恢复了大部分数据和工作成果。但版本控制系统和日志只能恢复其中一部分已记录或留存的数据,无法替代完整的独立备份——是的,他运行了这么多 AI Agent,居然连一份每日备份都没有。
毕竟,AI 可以帮你写脚本,也可以帮你清理垃圾;但如果它把“垃圾”的定义扩展到了你的整个主目录,最后真正能救你的,可能还是那份没有交给 AI 保管的备份。
参考链接:https://www.tomshardware.com/tech-industry/artificial-intelligence/claude-nukes-a-developers-700-gb-home-directory-while-testing-a-script-to-ensure-it-wouldnt-do-so-automatic-model-downgrade-may-have-contributed-to-the-screw-up
