Sandbox 与审批机制

审批模式

Codex 在你电脑上的默认工作方式是 Auto。在这种审批模式下,Codex 可以自动读取文件、进行修改并在工作目录中运行命令。但如果要在工作目录外操作或访问网络,Codex 需要你的审批。

当你只是想聊天,或者想先做规划再执行时,可以用 /approvals 命令切换到 Read Only 模式。

如果你需要 Codex 在无需审批的情况下读取文件、修改内容、运行命令并访问网络,可以使用 Full Access 模式。但在这样做之前要谨慎。

默认设置与推荐做法

  • Codex 默认在 sandbox 中运行,并带有严格保护措施:禁止修改工作区外的文件,阻止网络访问(除非启用)。
  • 启动时,Codex 会检测当前文件夹是否受版本控制,并给出推荐:

    • 版本控制目录:Auto(工作区写入 + 按需审批)
    • 非版本控制目录:Read Only
  • 工作区包括当前目录和临时目录(如 /tmp)。可以用 /status 命令查看工作区范围。
  • 你也可以手动设置:

    • codex --sandbox workspace-write --ask-for-approval on-request
    • codex --sandbox read-only --ask-for-approval on-request

可以完全不需要审批吗?

可以。你可以使用 --ask-for-approval never 来关闭所有审批提示。这个选项适用于所有 --sandbox 模式,因此你仍然可以控制 Codex 的自主程度。Codex 会在你提供的限制条件下尽力完成任务。

常见的 sandbox + 审批组合

意图 参数 效果
安全的只读浏览 --sandbox read-only --ask-for-approval on-request Codex 可以读取文件并回答问题,但修改、运行命令或访问网络都需要审批。
只读非交互(CI) --sandbox read-only --ask-for-approval never 只读,不会升级权限。
允许修改仓库,遇到风险才询问 --sandbox workspace-write --ask-for-approval on-request Codex 可以在工作区读取文件、修改和运行命令。对工作区外或网络访问需要审批。
Auto(预设) --full-auto(等价于 --sandbox workspace-write + --ask-for-approval on-failure Codex 可以在工作区读取文件、修改和运行命令。命令失败或需要升级时才请求审批。
YOLO(不推荐) --dangerously-bypass-approvals-and-sandbox(别名:--yolo 无 sandbox,无提示。

注意:在 workspace-write 模式下,网络默认是关闭的,除非在配置中启用([sandbox_workspace_write].network_access = true)。

config.toml 中微调

  1. # 审批模式
  2. approval_policy = "untrusted"
  3. sandbox_mode = "read-only"
  4. # full-auto 模式
  5. approval_policy = "on-request"
  6. sandbox_mode = "workspace-write"
  7. # 可选:允许在 workspace-write 模式下访问网络
  8. [sandbox_workspace_write]
  9. network_access = true

你也可以保存为 profiles 预设:

  1. [profiles.full_auto]
  2. approval_policy = "on-request"
  3. sandbox_mode = "workspace-write"
  4. [profiles.readonly_quiet]
  5. approval_policy = "never"
  6. sandbox_mode = "read-only"

试验 Codex Sandbox

要测试命令在 Codex 提供的 sandbox 下运行的效果,可以使用 Codex CLI 的以下子命令:

  1. # macOS
  2. codex debug seatbelt [--full-auto] [COMMAND]...
  3. # Linux
  4. codex debug landlock [--full-auto] [COMMAND]...

平台 sandbox 细节

Codex 使用的 sandbox 机制取决于操作系统:

  • macOS 12+ 使用 Apple Seatbelt,通过 sandbox-exec 并结合配置文件(-p 参数)来对应指定的 --sandbox
  • Linux 使用 Landlock 和 seccomp API 的组合来强制执行 sandbox 配置。

注意:在 Linux 容器环境(如 Docker)中运行时,如果宿主机/容器配置不支持所需的 Landlock/seccomp API,sandbox 可能无法生效。在这种情况下,建议你配置 Docker 容器以提供所需的 sandbox 保障,然后在容器中运行 codex --sandbox danger-full-access(或简写为 --dangerously-bypass-approvals-and-sandbox)。