6 审批、沙箱与安全边界:让 Codex 能干活但不越界

Codex 能读文件、改文件、运行命令。能力越强,越要先理解安全边界。
官方安全文档把安全控制拆成两层:sandbox mode 和 approval policy。中文可以理解为:沙箱决定它技术上能碰哪里,审批策略决定它什么时候必须停下来问你。
新手先用默认权限
本地 CLI、IDE extension、Codex App 默认会把写权限限制在当前 workspace,网络通常也是关闭的。官方文档也建议新手从默认权限开始。等你知道某个项目确实需要更大权限,再有目的地放开。
常见安全组合:
codex --sandbox workspace-write --ask-for-approval on-request
它允许在当前 workspace 内读写并运行命令,但遇到需要越界的操作会询问。
如果你只想让 Codex 读项目、解释代码,不让它改文件:
codex --sandbox read-only --ask-for-approval on-request
这很适合陌生仓库的第一轮调研。
什么命令要小心
低风险:
git statusgit diffrgls- 项目已有的 build、lint、test
中风险:
- 安装依赖
- 改配置
- 改迁移文件
- 访问网络
- 操作远程仓库
高风险:
- 删除目录
- 重置 Git 历史
- 读取或打印密钥
- 操作生产数据库
- SSH 到生产服务器执行脚本
- 修改支付、鉴权、额度、回调逻辑
高风险命令不是永远不能做,而是必须先有计划、备份、确认和验证。
网络默认关闭不是坏事
官方文档说明,Codex 本地 agent 默认网络访问关闭。原因很简单:网络内容可能包含不可信指令,依赖安装脚本也可能读取环境变量。需要网络时,再按项目开启,并尽量设置域名范围。
如果你只是让 Codex 修一个本地样式问题,根本不需要网络。
如果你要查最新文档,最好明确让它只看官方文档或指定来源。
不要一上来用全权限
--dangerously-bypass-approvals-and-sandbox 或 --sandbox danger-full-access 这类模式只适合外部已经加固的环境。普通本地项目不要为了省几次确认就开全权限。
你真正需要的是“高频低风险自动跑,低频高风险先确认”。这样 Codex 能省时间,又不会把电脑和服务器变成无边界实验场。
写进项目规则
把安全边界写进 AGENTS.md:
## Safety
- Do not read .env, private keys, certificates, or database dumps.
- Do not run destructive Git commands unless explicitly asked.
- Ask before changing deployment scripts or production configs.
- Run build before reporting completion.
安全不是靠每次提醒,而是靠规则和工具共同兜住。
参考资料:
Continue