这是 Codex 最值得先弄懂的一节。弄懂它,你才敢把它放进真实的工作目录。
两组开关,管的是两件事
新手最常见的误解,是把这两件事当成一个滑块:
| 它管什么 | 一句话 | |
|---|---|---|
| 沙箱(sandbox) | 边界在哪 | 它能碰到什么 |
| 审批(approval) | 什么时候停下来问你 | 它碰之前要不要经过你 |
这两组是独立的。 你可以要一个很紧的沙箱配一个从不打扰你的审批(它在小圈子里自由活动),也可以要一个很宽的沙箱配一个事事都问的审批。
沙箱有三档
| 档 | 能干什么 | 什么时候用 |
|---|---|---|
| read-only | 只读文件、执行命令,不能改任何东西 | 头几次用;让它先看懂再动手 |
| workspace-write(默认) | 读写当前目录和临时目录,默认不联网 | 日常。绝大多数活儿用这一档 |
| danger-full-access | 没有任何限制 | 基本上不要用 |
有几个目录即使在可写模式下也保持只读:.git、.agents、.codex。
这是一条好设计。
.git里是你的全部历史版本——那是你出事之后唯一的退路,它不该在「顺手改一下」的射程之内。
审批有三种
| 值 | 行为 |
|---|---|
| on-request(默认) | 要越过沙箱边界时(写到目录外、要联网)停下来问你 |
| never | 不问。在沙箱范围内自主完成,越界的直接放弃 |
| granular | 分类处理:某几类问你,其余的自动拒绝 |
⚠️ 老版本里的
untrusted已经退役了,别照着旧教程写。现在用on-request或者把沙箱压到read-only。
各入口的默认值
| 入口 | 沙箱 | 审批 | 联网 |
|---|---|---|---|
| 命令行 / 编辑器插件 | workspace-write | on-request | 关 |
| 桌面应用 | workspace-write | on-request | 关 |
| 云端 | 隔离容器 | 视情况 | 只在准备阶段开 |
默认值是好的。 大多数人不需要改它。
为什么默认不给联网
这一条值得单独说,因为它防的是一类你很难自己发现的问题。
一个能读你文件、又能联网的程序,等于具备了把你的东西发出去的完整链路。而它读到的内容里,可能包含别人写的、带指令的文字——它分不清哪些是你的要求,哪些是文件里夹带的。
默认断网,等于把这条链路从中间剪断。
要开的话,Codex 支持按域名白名单放行:精确域名、*.example.com(子域)、**.example.com(子域加主域),拒绝规则优先于允许规则。
开就开成白名单,别开成全放。
上手的实际建议
头三次:read-only。 让它先读懂你的东西,把要改什么说清楚,你自己动手改。
摸清脾气之后:默认档。 workspace-write + on-request,不联网。这一档能覆盖九成以上的活儿。
danger-full-access 什么时候用: 想不出正当理由的时候就是不该用的时候。
本节事实查证日期:2026-09-10。 依据:OpenAI 官方文档 Agent approvals & security。