防止 AI Agent 误删文件: 最简单的办法就是加一个 Hook
AI Agent 真会删错文件吗?
会,而且已经发生过了。
2026 年 7 月,前 HyperWrite CEO Matt Shumer 发帖说,他用的 GPT-5.6 Sol 在清理文件时,一个子 Agent 搞错了 $HOME 这个变量,最后运行了:
复制代码rm -rf /Users/mattsdevbox
Shumer 发现后立刻终止了还在跑的进程,但文件已经被删掉不少了。

另一位开发者 @cremieuxrecueil 也遇到了类似的事。他用 PowerShell 命令过滤文件时,过滤条件没按预期生效,目标文件夹里的文件被批量删掉了。

OpenAI 官方在 GPT-5.6 的系统卡里也记录了:Agent 有时候会做出超出用户本意的操作。虽然概率不高,但只要 Agent 能操作你的文件,一次就够了。
Codex 不是已经有保护了吗?
你可能想问:Codex 不是默认在沙箱里跑吗?为什么还要自己加保护?
Codex 确实自带几层保护:
- 工作区隔离:Codex 默认只能在你的项目文件夹里操作,跑不到系统目录去
- 危险操作提示:某些命令执行前会弹确认框
danger-full-access开关:默认关着,打开后 Agent 才能碰项目外的文件
但这些保护有盲区。比如:
- 你在自己的项目文件夹里,Agent 把
src/当临时文件清理了——这对你来说就是灾难 - 某些批量操作(比如
find ... -delete)在你给的权限内完全合法,但结果不是你要的
打个比方:Codex 的保护像你家的大门锁,它防外人,但不防你自己在家不小心打翻花瓶。今天加这道保险,相当于在贵重东西旁边再放一层防护。
怎么防?先看看有几种选择
别急着动手,先搞清楚有哪些方法可选:
| 方法 | 怎么做 | 优点 | 缺点 |
|---|---|---|---|
| 黑名单(本文) | 列一个"不能做"的清单,命中了就拦 | 简单,几分钟搞定 | 只能拦住你想到的 |
| 白名单 | 列一个"只能做"的清单,不在清单上的都拦 | 更安全 | 太严,正常工作经常被误拦 |
| 沙箱 | 把 Agent 关临时文件夹里,操作完再搬出来 | 物理隔离,最安全 | 配置复杂,影响效率 |
| 确认弹窗 | 每次危险操作弹窗问你 | 你自己把关 | 问多了你会麻木,习惯点"同意" |

黑名单对新手最友好——不用改工作习惯,不用学新概念,配一次就在后台一直保护你。当然它不万能,但做第一道防线非常划算。
本文走黑名单路线,给你一个直接复制粘贴的脚本。
思路一句话:命令执行前,先检查
整个流程很简单:

复制代码你对 Codex 说"帮我做 xxx"
↓
Codex 生成了一条命令
↓
我们的脚本(Hook)先检查一下
↓
┌─ 危险命令? → 拦住,不让执行
│
└─ 安全命令? → 正常放行
这个"先检查一下"的机制,Codex 叫 PreToolUse Hook。Hook 就是钩子的意思——你在命令执行的路上挂一个钩子,每条命令经过时都会被钩住看一眼。
我们要做的就两件事:
- 写一个检查脚本(下面会给,直接复制)
- 在 Codex 配置文件里告诉它"用这个脚本检查"
动手第一步:创建拦截脚本
这个脚本检查哪些危险命令?
主要分三类:
- 递归删除类:
rm -rf、git clean -fd、find ... -delete等——这些会删掉整个文件夹 - 格式化/清磁盘类:
mkfs、wipefs、diskutil erasedisk、format——这些会清空磁盘 - 直接写设备类:
of=/dev/开头的命令——这些会往硬件里写数据
打开终端,先创建一个放脚本的文件夹:
复制代码mkdir -p ~/.agent-hooks
然后创建脚本文件:
复制代码touch ~/.agent-hooks/block-dangerous-command.mjs
用你习惯的编辑器打开 ~/.agent-hooks/block-dangerous-command.mjs,把下面的代码完整复制进去:
复制代码let input = '';process.stdin.on('data', (chunk) => {
input += chunk;
});process.stdin.on('end', () => {
try {
const payload = JSON.parse(input);
const command = payload.tool_input?.command ?? '';
const normalized = command.replace(/s+/g, ' ').toLowerCase(); const dangerous = [
'rm -rf',
'rm -fr',
'rm -r -f',
'git clean -fd',
'mkfs',
'wipefs',
'diskutil erasedisk',
'of=/dev/',
'del /f /s /q',
'rd /s /q',
'rmdir /s /q',
'format ',
]; const matched = dangerous.find((pattern) => normalized.includes(pattern));
const findDelete = normalized.includes('find ') && normalized.includes(' -delete');
const powerShellDelete =
normalized.includes('remove-item') && normalized.includes('-recurse'); if (matched || findDelete || powerShellDelete) {
console.error(`[安全拦截] 检测到危险命令:${matched ?? '批量删除'}`);
process.exit(2);
}
} catch (error) {
console.error(`[安全拦截] Hook 输入解析失败:${error.message}`);
process.exit(2);
}
});
保存文件。
动手第二步:让 Codex 用上这个脚本
打开 Codex 的配置文件。在终端里运行:
复制代码code ~/.codex/config.toml
在文件里加上下面这段内容(如果已有 [features] 就只加 Hook 那部分):
复制代码[features]
hooks = true[[hooks.PreToolUse]]
matcher = "^Bash$"[[hooks.PreToolUse.hooks]]
type = "command"
command = "node ~/.agent-hooks/block-dangerous-command.mjs"
timeout = 5
statusMessage = "正在检查命令安全性..."
保存文件。
配好之后,打开 Codex,在对话里输入 `/hooks` 查看刚加的 Hook。第一次配 Hook 的话,Codex 会让你确认"信不信任这个 Hook",点确认就行。
测试一下
先试拦截。在 Codex 里输入:
复制代码帮我把 /tmp/agent-hook-test-do-not-create 这个文件夹删掉
正确结果:Codex 尝试执行 rm -rf 时被拦住,界面上先显示"正在检查命令安全性...",然后提示拦截。
再试放行:
复制代码列出当前文件夹里的文件
这条正常命令应该直接通过,不会弹拦截。
两条都过一遍,说明配置成功了。
这道保险能防啥、防不了啥
能防住的:
- Agent 不小心执行
rm -rf这种毁灭性命令 - Agent 自己生成的删除操作
- 格式化、清空磁盘的命令
- Windows 下的强制删除(
del /f /s /q、rd /s /q)
防不住的:
- 命令太绕,脚本没认出来(比如用变量拼出来的危险命令)
- 通过脚本语言间接删东西(比如
python -c "import os; os.system('rm -rf ...')") - 不在黑名单里的破坏操作(比如
echo "" > 重要文件.txt直接清空文件内容)

所以记住一句话:这道保险是第一层防线,不是唯一防线。
就像你家有门锁,但贵重东西还会放保险柜:
- Hook 脚本 → 门锁,拦常见的
- 工作区隔离(Codex 默认开着)→ 房间门,限制活动范围
- Git / 定期备份 → 保险柜,删了也能找回
- 重要操作前自己瞄一眼命令 → 你本人,最终决定权
四层加起来,才是一个完整的保护体系。本文教你的是第一层,几分钟就搞定,性价比最高。
-
07.14
无期迷途怦怦电波放送中活动详解 无期迷途心动互动玩法与奖励指南
-
07.14
永远的蔚蓝星球全新英雄皮肤效果介绍-火焰法师与闪电之子介绍
-
07.14
永远的蔚蓝星球新坐骑瞌睡小飞象介绍-技能效果详解
-
07.14
永远的蔚蓝星球戒指图腾选择推荐指南
-
07.14
永远的蔚蓝星球111-115关如何通关
-
07.14
永恒的蔚蓝星球漫游奇境活动攻略
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏