Codex 权限与沙箱排查:读写、联网和审批为什么被拦
了解 Codex 的 sandbox 和 approval 组合,学习如何判断命令为什么被拦、什么时候该请求审批,以及为什么不建议直接 Full Access。
适用场景
这篇手册适合遇到权限提示、命令被拦、不能联网、不能写文件、不能访问工作区外路径的用户。
OpenAI 官方文档说明,Codex 通过 sandbox 和 approval policy 控制自主程度。常见默认组合允许 Codex 在工作区内读写和运行命令,但访问网络或工作区外路径时需要审批。
步骤 1:先查看当前状态
在 Codex CLI 中可以使用:
/status
重点看:
- sandbox 模式。
- approval policy。
- 当前 workspace 和 writable roots。
- 网络访问是否允许。
不要只看错误信息,要先确认当前安全边界。
步骤 2:理解常见模式
常见组合可以这样理解:
read-only:只能读文件,写文件和运行很多命令都会受限。workspace-write:可以在工作区内读写,访问工作区外或网络通常需要审批。danger-full-access:权限很高,不推荐作为日常默认模式。
审批策略也会影响体验:
on-request:需要时请求用户批准。never:不请求批准,做不到就失败。untrusted:只自动运行已知安全操作,其他命令要求审批。
步骤 3:判断被拦原因
看到失败时,先问三个问题:
- 目标路径是否在 workspace 内?
- 命令是否需要网络?
- 命令是否会写文件、删除文件、移动文件或产生外部副作用?
例如:
pnpm install
通常需要网络,可能会修改 lockfile 和 node_modules,所以在受限模式下可能被拦。
步骤 4:只为必要操作请求审批
不要为了省事直接打开 Full Access。更稳的做法是让 Codex 说明它要做什么:
请说明这个命令为什么需要审批、会读取或写入哪些路径、是否需要网络。
如果有更小权限的替代方案,请先给出。
明确后再批准单次操作。
步骤 5:用更窄命令替代高权限
如果只是查看文件,不需要写权限。
如果只是验证构建,不需要访问工作区外目录。
如果只是读取官方文档,可以优先使用已经授权的文档来源,而不是让命令随意联网。
把任务拆小,权限需求通常也会变小。
常见错误
不要把 --dangerously-bypass-approvals-and-sandbox 当成常规启动方式。
不要在不知道命令作用时批准联网或工作区外写入。
不要让 Codex 删除或移动不确定来源的文件,尤其是 Git 未提交改动。
不要把审批失败理解成 Codex 坏了。很多时候是安全边界在正常工作。
小结
权限问题的排查顺序是:看 /status,确认 sandbox 和 approval,判断路径、网络和副作用,再决定是否批准。日常开发优先使用 workspace-write + on-request 这类可控组合。
相关教程
常见问题
为什么 Codex 能读文件但不能写文件?
通常是当前 sandbox 是 read-only,或目标路径不在可写工作区内。需要检查当前 sandbox 模式和 writable roots。
为什么联网命令会被拦?
workspace-write 模式下网络访问通常需要额外允许。联网、写出工作区、外部副作用等操作一般都需要审批。