跳到主要内容
AI News HubLIVE
站内改写2 分钟阅读

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

文章摘要

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

来源Hacker News AI作者: firasd
Claude Code和OpenAI Codex中的数据丢失:当AI删除用户文件时
报告错误

纠错通道尚未开通,可先复制下方文章信息留存。

查看更正说明
直接读正文

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

展开要点与分析

文章情报

工程师中级

要点

  • AI代理(如Claude Code和OpenAI Codex)因误解环境变量和文件系统行为导致了意外的数据丢失。
  • 案例包括删除整个家目录、生产数据库和Git暂存内容。
  • 根本原因通常是代理对状态的不准确理解。
  • 缓解措施包括使用破坏性命令防护工具、通过Git工作树进行工作流隔离以及定期备份。

要点与分析由自动化流程生成,可能有误,请结合原始来源核实。