Codex 把我电脑文件都删了

8 月 9 日
 kneo

昨天为了赶在额度重置前把额度用完,出门前交代 codex 自己去远程验证整个项目脚本和文档的正确性,开了 full access ,回来一看悲剧了,把我 C 盘和 D 盘文件全删了……估计删了我两三百 G 的数据,上百万个文件……

用的模型是 gpt-5.6-sol xhigh fast 。真他妈快啊,除了少数被进程占用的文件,全给我删了。

让 Claude Code 分析了下 codex 的记录:

  wsl.exe bash -lc 'set -e; d=$(mktemp -d); cd "$d";
    apt-get download sshpass >/dev/null;
    dpkg-deb -x sshpass_*.deb extracted;
    cp extracted/usr/bin/sshpass /tmp/xxx-semantic-bin/sshpass;
    chmod 700 /tmp/xxx-semantic-bin/sshpass;
    cd /; find "$d" -depth -delete;          # ← 这一句
    /tmp/xxx-semantic-bin/sshpass -V'

它的本意只是:下个 sshpass 二进制,然后把 mktemp -d 建的临时目录删掉。目标本该是 /tmp/tmp.XXXXXX 。

关键证据在 file:4249 —— Win32_Process 记录的操作系统层面真实命令行里,$d 两侧的双引号已经没了( PowerShell 把参数传给原生 exe 时没有转义内层的 ")。

我极少在 Windows 上原生执行 claude/codex ,更从来没给过 full access ,没想到第一次给它 full access 就翻船了……

太倒霉了。有一万个如果可以让这件事不要发生。如果不是我有云备份,我大概已经去自首了。

13155 次点击
所在节点    OpenAI
77 条回复
cskeleton
8 月 9 日
我的所有 agent 都是 full access ,算了我还是不立 flag ,我觉得我这习惯得改改。
dfly0603
8 月 9 日
自带的 powershell 害人不浅(
mmdsun
8 月 9 日
claude code 我也是最大权限,windows 感觉是 codex 非要在 wsl 执行命令的问题。
lianyue
8 月 9 日
为什么要开 full 啊 自动审批就好了
几乎每天我都会遇见越权问题


我 AGENTS.override.md 是这样的

........

## 脚本和命令范围

- 修改项目文件必须直接编辑目标文件本身,每处改动可见、可逐条核对、可回溯。
- 禁止用临时脚本、heredoc 、解释器内联代码、`sed`/`awk`/`perl` 就地改写、重定向覆盖或批量替换命令间接修改项目文件;多文件同类修改也逐个直接编辑。
- 命令行只用于读取、检查、构建、测试等不改写项目文件的用途。代码生成、格式化等本来就会写入项目文件的既有流程按目标目录已有约定执行,并说明产物范围。
- 确有无法直接编辑的场景时,先说明原因、影响范围和验证方式并取得用户确认,不得先执行再补充说明。
- 执行脚本、解释器或 shell 命令前,必须检查脚本内容、最终参数、工作目录和所有路径展开范围。
- 搜索内容、文档文本或用户原话包含 shell 元字符时,必须使用固定字符串、正确引用、参数化或文件输入,禁止让展示文本进入可执行位置。
- 默认读写范围限于当前任务相关目录以及系统、用户或项目的临时目录和常规缓存;工具链、可执行文件和依赖缓存可按需读取。范围外访问必须先取得用户明确确认。
- 禁止列出或递归扫描与任务无关的宽泛系统路径或用户目录。
- 优先使用工具默认缓存和项目既有约定;只有出现权限、污染或隔离需求时才指定任务内稳定缓存,并说明原因。
- 路径、通配符、符号链接、环境变量或相对路径可能越界时,必须先停止并等待确认。

## 额外问题和高风险修改

- 发现可能影响安全、权限、隐私、数据完整性、可用性、资源、并发或线上兼容的问题时,先说明证据和影响。
- 判断并发问题前必须确认公开并发契约和真实可达调用路径;没有实际并发入口或证据时只能记录为待验证假设。
- 与当前任务直接相关的问题,说明原因后再一起修;与当前任务无关的问题,不要擅自修复,只说明位置、影响和建议。
- 安全、资产、数据删除或迁移、存储或通信契约、加密与凭据、并发与事务、外部服务和生产环境相关修改属于高风险;必须明确影响范围,补充相称验证,不做无关重构,不擅自改变默认安全或兼容语义。

.........
john1024
8 月 9 日
太吓人了。我后面装了个钩子,叫 dcg ,删除前都会让我确认
xubeiyou
8 月 9 日
全靠 ai 肯定不行的除非是新的东西 我觉得很适合 纯 vibe coding
cellsyx
8 月 9 日
开个虚拟机, full access + 及时提交 + 定期快照
Ryanzlab
8 月 9 日
换 claude 就好了,听到最多被删文件 删盘的,一看都在用 GPT 模型,口碑就是如此
fanhed
8 月 9 日
@Ryanzlab claude 一样有删了别人文件的案例, 自己不设防中招是迟早的
kneo
8 月 9 日
@john1024 >太吓人了。我后面装了个钩子,叫 dcg ,删除前都会让我确认

其实确认也很难避免这类问题。

现在 AI 执行的命令都超级长,人很难看出来这是在干嘛。我执行一次长任务经常会半个小时就让我确认几十个命令执行。鬼能看出来是干嘛的。毕竟 AI 都看不出来问题,更别说人了。光看这几十个命令,半个小时都不够你看的。

另外像这个 find "$d",他这个命令让你确认前好像是有引号的,但他真正执行的时候引号在哪一步就掉了。
taotaodaddy
8 月 9 日
不管是 claude 还是 codex 都有删文件删盘发生的
关键是不要 yolo ,不要给 full
如果非要 Yolo ,非要给 full->虚拟机
否则->为我审批
还可以加个 Hook 来人工阻拦高危操作
signal
8 月 9 日
所以我 windows 下都是自己用的自己修改过打包的 codex cli 哪个 EXE,强制让它默认就用 git bash 然后 AGENTS.md 里带上这一句:
# 终端只能使用 git bash,我的工具环境已经是 Bash 不要用 PowerShell 包裹命令
aloxaf
8 月 9 日
这种问题确实防不胜防,就算人来 review 也未必能发现问题,只能说做好备份/快照

不过说起来,我觉得对于 vibe coding 来说,set -ue 应该是执行 shell 命令时的默认值……
wesker1999
8 月 9 日
备份是唯一后悔药。这钱省不得。
xuejianxianzun
8 月 9 日
我是指定 codex 使用 PS7 ,这样误删文件的可能性会小一些吧(心虚
john1024
8 月 9 日
@kneo #30 唉,只能说尽人事吧,我把重要东西都做备份
syh2
8 月 9 日
想问下到底是执行什么命令。。
我现在都是让 AI 先备份,再执行操作,确保操作可恢复
我试过一次用阶跃星辰的 API ,让他帮我移动文件,结果告诉我东西删了没办法恢复,气死我
davidqw
8 月 9 日
windows 下 vibe coding 经常出这种符号问题
kneo
8 月 9 日
@syh2 >想问下到底是执行什么命令。。

原帖有啊。

cd /; find "$d" -depth -delete; # ← 这一句

>我现在都是让 AI 先备份,再执行操作

我觉得让 AI 备份没啥用……它要真知道备份啥就不会删错了……除非是沙盒或者 time machine 那种全局备份。
tiezlk443
8 月 9 日
甲级战犯 powershell

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1233011

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX