大家好,我是R哥。
这几天真不消停啊,《Grok 偷偷上传整个代码库》事件闹得沸沸扬扬,现在又发现几起 GPT-5.6 Sol 删除数据库、Mac 所有文件的事件:


Grok 在偷你的代码,Codex 在删除你的所有文件。。。
有人被删除整个生产数据库,有人被清空 Mac 所有文件,太 TM 恐怖了。。
为了方便,我相信大家一直都是「完全访问」模式的,包括我自己也是,以前觉得没所谓,觉得这类先进的 AI 工具不可能乱搞。
但看完这几个案例,真是让人心惊胆战,让我意识到不能再这样下去了!!!
电脑里面重要资料太多了,权限不能再由 AI 自行决定了,必须要有一个自定义的权限机制,一旦 AI 出现问题乱删文件,后果不堪设想。
Codex 自定义权限指南
其实 Codex 是支持自定义权限的:

官方提供了 forbidden 规则,可以直接禁止指定危险命令,方法如下。
1、启用执行策略
在 ~/.codex/config.toml 中启用执行策略:
[rules]
user_rules = [
"~/.codex/rules/default.rules"
]
指定了一个默认的规则文件 ~/.codex/rules/default.rules,指定自定义权限,下面我们会创建这个规则文件。
2、创建规则文件
然后创建 ~/.codex/rules/default.rules 默认规则文件:
prefix_rule(
pattern = ["rm", "-rf"],
decision = "prompt",
justification = "禁止执行 rm -rf。"
)
decision 支持三种模式:
- allow:在沙箱外部运行命令,无需提示。
- prompt:每次匹配调用前的提示。
- forbidden:阻止请求,不进行提示。
这样下面的删除操作都会要提示授权:
rm -rf /
rm -rf *
rm -rf test
也可以添加更多的 prefix_rule 规则来把危险命令都禁用掉,然后再添加允许的一些常规操作。
3、开启安全沙盒模式
Codex 支持 3 种沙盒模式:
- read-only(只读)
- workspace-write(工作区写入)
- danger-full-access(危险完全访问)
在 ~/.codex/config.toml 中启用执行策略:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
这里主要指定了 sandbox_mode 沙盒模式为 workspace-write,工作区写入模式(默认)允许:
- 随时随地读取文件;
- 将文件写入工作目录(
cwd); - 写入指定的其他目录
--add-dir; - 保护
.git/目录为只读状态; - 网络访问(如果已启用)。
Codex 支持 3 种授权模式:
- on-request(逃离沙箱时发出提示批准)
- untrusted(非信任的提示批准)
- never(从不提示批准)
设置 approval_policy 策略设置为 on-request,表示当代理需要逃离沙箱时发出提示,但会自动批准在沙盒边界内进行的操作,兼顾安全性和生产力。
使用 codex 终端时可以通过命令行指定:
codex –ask-for-approval on-request –sandbox workspace-write
不要再使用完全访问模式了:
sandbox_mode = "danger-full-access"
否则 Codex 将拥有完整的文件系统访问和写入能力,存大巨大风险。
4、效果测试
配置成功后,重新使用 codex 进入终端,尝试执行删除操作:

如图,已经弹出授权操作了。
我再尝试使用「完全访问」模式测试下:

如图,在没有任何批准提示的情况下,Codex 直接删除了我的 test 文件夹,说明我们的自定义权限生效了。
在终端测试下:

终端也生效了,成功弹出了批准提示。
5、漏网之鱼
虽然我已经设置了自定义权限和安全沙盒模式,但测试下来还是会出现目录被删除的情况:

原因就是,如果 Codex 发现 rm -rf 命令不可用,它还会尝试其他命令,比如 rmdir、rm -r 等等类似命令,如果执行了这些命令,还是会删除整个目录。
所以我们需要在规则文件中添加更多的规则,禁止这些危险命令。
我已经总结了一些与「删除目录」有关的危险命令:
# 禁止 rm 的递归删除、强制递归删除以及空目录删除参数。
# 普通的 rm 文件名、rm -f 文件名仍然允许执行。
prefix_rule(
pattern = [
"rm",
[
"-r",
"-R",
"-rf",
"-fr",
"-Rf",
"-fR",
"--recursive",
"-d",
"--dir",
],
],
decision = "prompt",
justification = "禁止使用 rm 删除目录。"
)
# 禁止把强制参数和递归参数分开传入。
prefix_rule(
pattern = [
"rm",
["-f", "--force"],
["-r", "-R", "--recursive", "-d", "--dir"],
],
decision = "prompt",
justification = "禁止使用 rm 删除目录。"
)
# rmdir 只能用于删除目录,所以全部禁止。
prefix_rule(
pattern = ["rmdir"],
decision = "prompt",
justification = "禁止执行 rmdir。"
)
大家可以直接复制到 ~/.codex/rules/default.rules 中,根据自己的需求修改、增强即可。
总结
给 Codex 加了自定义权限,一下让我安心多了,想想这几起案例,真让人后怕。
虽然麻烦一点,但为了安全起见,还是建议大家都开启自定义权限和安全沙盒模式,避免出现删除数据库、清空 Mac 文件的悲剧。
最后,大家千万不要抱有侥幸心理,安全第一,不要等到悲剧发生了才后悔莫及。
未完待续,Claude Code 也有类似的权限控制,等我配置再测试下,再分享给大家,我们下期见。
R哥会继续分享更多 Claude Code、Codex、AI 编程的实战干货,关注「AI技术宅」公众号和我一起学 AI。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。



