Day 03 / 共 20 天 · 第 1 周 · 会用 + 建立心智
沙箱与审批(必读)
SandboxMode / AskForApproval 两层防护、常用 flag、源码枚举对照。
📍 你在整门课的位置 · 第 1 周 · 会用 + 建立心智
D01 项目全景与目录地图→D02 安装、登录与第一次对话→D03 沙箱与审批→D04 CLI 子命令全家桶→D05 TUI 交互与 Slash 命令
L01
Sandbox + Approval 两层防护
🍼 大白话Sandbox = 技术上能碰哪(读/写/网);Approval = 什么时候必须停下来问你。
| Sandbox | 含义 |
|---|---|
read-only | 默认倾向:只读工作区 |
workspace-write | 可写当前工作区 |
danger-full-access | 几乎不限——慎用 |
| Approval | 含义 |
|---|---|
untrusted | 只有「已知安全只读」自动过 |
on-request | 默认:模型请求时再问你 |
never | 不问人,失败直接回模型 |
L02
常用命令行开关
codex -s read-only -a on-request
codex -s workspace-write
# 危险:跳过审批 + 沙箱(仅隔离 CI 等极端场景)
codex --dangerously-bypass-approvals-and-sandbox
# 别名
codex --yolo
官方级警告本地开发别习惯性
--yolo。优先用 Rules / 精准放行,而不是全局放开。TUI 内也可用 /permissions、/setup-default-sandbox 调整。
L03
源码对照
codex-rs/protocol/src/config_types.rs ≈ L86:
pub enum SandboxMode {
#[serde(rename = "read-only")]
ReadOnly, // default
#[serde(rename = "workspace-write")]
WorkspaceWrite,
#[serde(rename = "danger-full-access")]
DangerFullAccess,
}
codex-rs/protocol/src/protocol.rs ≈ L911:
pub enum AskForApproval {
UnlessTrusted, // "untrusted"
OnRequest, // default
Granular(...),
Never,
}
执行门禁在 codex-rs/core/src/tools/sandboxing.rs + OS 实现(macOS Seatbelt、Linux bwrap/Landlock、Windows sandbox)。
L04
今日小结
✅ 能解释两层防护;能默写出三个 sandbox 值;知道默认 approval 是 on-request。