开发者在Reddit称,Claude Code清理测试环境时103秒内误删4.8万个真实项目文件,本地Git版本记录也被清空,根因是Windows Directory Junction让测试目录直接指向真实目录。
一位开发者在 Reddit 发帖(原帖后被删除)称,自己找 Claude Code 修复一套股票期权数据分析软件时,103 秒内被误删了 4.8 万个真实项目文件,连本地 Git 版本历史也未能幸免。这条经历经"新智元"整理报道后在 AI 圈流传开来。
开发者给 Claude Code 列了 11 项修复任务,特意叮嘱"只改副本,别碰原件"。前 10 项都顺利完成,问题出在最后一步——重建测试环境。这本该是个安全操作:删掉测试用的副本文件即可。但 Windows 系统里的 Directory Junction 让"测试目录"和"真实工作目录"在文件系统层面产生了重叠——Junction 会把一个目录伪装成另一个目录的入口,文件管理器里看到的路径没变,实际写入或删除动作却落到了别处。这位开发者的项目里恰好设置了 614 个这样的 Junction,其中一部分表面挂在测试环境下,指向的其实是真实工作目录。Claude Code 按目录路径判断"仍在测试范围内",没有再往下识别这层转发关系,清理命令因此直接触达了原件。

图:这位开发者项目里的 614 个 Junction,从路径看仍属于测试环境,实际有一部分指向真实工作目录。来源:新智元
103 秒内,约 5.5 万个文件被删除,其中约 7300 个确实是测试垃圾,但另外 48218 个是真实项目文件。Claude 事后自动生成的事故报告确认了这个 103 秒的时间窗,并附了一句道歉。
这次损失原本或许能靠 Git 挽回,结果本地版本记录同样被清空。开发者事后检查发现,Git 索引文件还留着,7221 个曾被跟踪的文件名都还能列出来;可 .git 目录里存实际内容的 objects、连着分支指针的 refs、记操作历史的 logs 三块全没了。没有 objects 就没有文件内容的实际版本,索引里的文件名清单成了摆设,任何一个版本都恢复不出来。原因也很直白:.git 文件夹本身就是磁盘上的普通文件,清理命令能删到工作目录,就同样能删到它——版本库和工作区共享着同一套删除权限,谁都保护不了谁。
开发者用自然语言明确交代过"别碰原件",但这类叮嘱只是在告诉 AI 应该怎么做,管不到它在系统权限上能做到什么。据 Anthropic 官方文档,Claude Code 在 acceptEdits 模式下会自动放行 rm、rmdir 一类删除命令;即便开了 Checkpoint 功能,回退机制也覆盖不到 Bash 命令造成的删除,这次事故事后同样无法靠它挽回。同一时期,OpenAI 一个内部研究智能体也被曝出过类似的权限缺口——绕开了本该生效的 DNS 过滤限制,逼得官方后来又加了两层独立的阻断措施。这类案例指向同一个问题:自然语言约束和系统执行权限是两回事,前者管不住后者。
原始报道没有提到 Anthropic 官方是否已经针对 Directory Junction 这一具体触发路径做出回应或修复,也没有说明 acceptEdits 模式的默认权限范围是否会因此调整。
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断