AI News HubLIVE
站内改写2 分钟阅读

Claude Code和OpenAI Codex中的数据丢失:当AI删除用户文件时

分析了多起AI编程代理因对系统状态、环境变量或工具行为理解错误而意外删除用户文件的事件。文章列举了五个真实案例,识别出常见模式(状态混淆),并提出了包括备份、工作流隔离和更好防护措施的缓解方案。

来源Hacker News AI作者: firasd

本文探讨了AI代理在操作过程中如何意外删除用户数据的问题。作者借用了《蒙提·派森》中关于一个干净但无奶酪的奶酪店故事,比喻AI代理可能过于“清洁”用户数据。

OpenAI的Codex团队成员Thibault Sottiaux报告称,他们调查了多起GPT-5.6意外删除文件的案例。最常见的情况是:启用了完全访问模式且没有沙箱保护,模型尝试覆盖$HOME环境变量以定义临时目录,但错误地删除了$HOME本身。

尽管安全讨论多集中在通过提示注入窃取数据上,但实际中因笨拙导致的数据丢失事件更为频繁。以下是一些典型例子:

例1:因$HOME错误导致文件删除。用户报告GPT-5.6-Sol意外删除了Mac上的几乎所有文件。截图显示,一个清理子代理的脚本错误地展开了$HOME变量,执行了rm -rf /Users/mattsdevbox。另一用户则因PowerShell的-Include参数处理不当导致编译文件被误删。

例2:针对生产环境的测试导致数据库删除。用户报告GPT-5.6 Sol删除了整个生产数据库。原因是仓库中的.env文件包含了Neon生产数据库URL,而测试要求TEST_DATABASE_URL与之匹配,导致测试脚本对生产数据库执行了破坏性操作(如TRUNCATE TABLE users CASCADE)。

例3:Git Checkout导致暂存工作丢失。Claude Code在尝试将修改移到新分支时,先执行了git stash,然后git checkout,再git stash pop,但弹出的更改被立即覆盖,导致一小时的工作丢失。

例4:删除‘Photos’文件夹同时删除了小写‘photos’文件夹。用户请求Claude Cowork整理桌面,代理在合并文件夹时未考虑macOS不区分大小写的文件系统,误删了包含15年照片的文件夹。幸好iCloud的30天恢复功能救了回来。

例5:不精确的正则表达式吞噬代码。作者本人遭遇代理使用Python脚本进行正则替换时,因匹配边界不正确,导致数百行代码被误删。

这些案例的共同模式是对状态的混淆:环境变量指向错误目录、数据库URL指向错误实例、Git操作未按预期执行、文件系统特性未被考虑、正则表达式边界不准确。代理倾向于使用高级方法(如链式命令、直接操作$HOME、正则替换),但这些方法需要精确跟踪隐含状态。

缓解措施包括:

  • 防护工具:如destructive_command_guard,可在破坏性命令执行前拦截并给出安全替代方案。
  • 工作流隔离:使用Git工作树将不同任务隔离到独立目录。
  • 备份:最简单有效的万能药,建议按时间组织文档(如Documents/work/2026-01/)。
  • 改进工作流:为代理提供更安全的操作原语,如键值存储管理临时文件、数据库分支用于测试、以及基于字符范围的剪切粘贴工具。

AI代理在计算机使用领域仍处于早期阶段,标准命令行工具可能不完全适合代理工作流。通过提供更安全、范围更明确的操作,可以减少用户意图与破坏性操作之间的差距,从而降低数据丢失风险。