沙箱与批准
Codex 被允许做什么是由沙箱模式(Codex 被允许在没有监督的情况下做什么)和批准策略(您何时必须确认操作)的组合控制的。本页解释了选项、它们如何相互作用,以及沙箱在每个平台上的行为。
批准策略
Codex 保守地启动。在您明确告诉它工作目录是受信任的之前,CLI 默认为只读。Codex 可以检查文件并回答问题,但每个编辑或命令都需要批准。
当您将工作目录标记为受信任时(例如通过入职提示或 /approvals → "Trust this directory"),Codex 将默认预设升级到代理,这允许在工作区内进行写入。Codex 仅在需要离开工作区或在沙箱外重新运行时打断您。注意工作区包括工作目录加上 /tmp 等临时目录。使用 /status 确认确切的可写入根目录。
如果您想对受信任的存储库获得最大的护栏,请从 /approvals 选择器切换回只读。如果您真的需要无人值守的自动化,请使用 Full Access——但要有意,因为这会跳过沙箱和批准。
我可以在没有任何批准的情况下运行吗?
可以,您可以使用 --ask-for-approval never 禁用所有批准提示。此选项与所有 --sandbox 模式一起工作,因此您仍然可以完全控制 Codex 的自主级别。它将使用您提供的任何约束来尽力而为。
常见沙箱+批准组合
| 意图 | 标志 | 效果 |
|---|---|---|
| 安全只读浏览 | --sandbox read-only --ask-for-approval on-request | Codex 可以读取文件并回答问题。Codex 需要批准才能进行编辑、运行命令或访问网络。 |
| 只读非交互(CI) | --sandbox read-only --ask-for-approval never | 仅读取;永不升级 |
| 让它编辑存储库,如果有风险则询问 | --sandbox workspace-write --ask-for-approval on-request | Codex 可以读取文件、进行编辑,并在工作区中运行命令。Codex 需要批准工作区外的操作或网络访问。 |
| 自动(预设;受信任的存储库) | --full-auto(等同于 --sandbox workspace-write + --ask-for-approval on-request) | Codex 运行可以在工作区内进行写入的沙箱命令,无需提示。仅在必须离开沙箱时升级。 |
| YOLO(不推荐) | --dangerously-bypass-approvals-and-sandbox(别名:--yolo) | 没有沙箱;没有提示 |
注意:在
workspace-write中,网络默认禁用,除非在配置中启用([sandbox_workspace_write].network_access = true)。
在 config.toml 中进行微调
# 批准模式
approval_policy = "untrusted"
sandbox_mode = "read-only"
# 全自动模式
approval_policy = "on-request"
sandbox_mode = "workspace-write"
# 可选:在 workspace-write 模式下允许网络
[sandbox_workspace_write]
network_access = true您也可以将预设保存为配置文件:
[profiles.full_auto]
approval_policy = "on-request"
sandbox_mode = "workspace-write"
[profiles.readonly_quiet]
approval_policy = "never"
sandbox_mode = "read-only"按平台的沙箱机制
Codex 用于强制沙箱策略的机制取决于您的操作系统:
macOS 12+
使用 Apple Seatbelt。Codex 用与所选 --sandbox 模式对应的配置文件调用 sandbox-exec,在操作系统级别约束文件系统和网络访问。
Linux
结合 Landlock 和 seccomp API 来近似相同的保证。需要内核支持;较旧的内核可能不会公开必要的功能。
在容器化的 Linux 环境中(例如 Docker),当主机或容器配置不公开 Landlock/seccomp 时,沙箱可能不会工作。在这些情况下,配置容器以提供您需要的隔离,并在该容器内使用 --sandbox danger-full-access(或简写 --dangerously-bypass-approvals-and-sandbox)运行 Codex。
Windows
Windows 沙箱支持仍处于实验阶段。工作方式:
- 在从 AppContainer 配置文件派生的受限令牌内启动命令。
- 通过将能力 SID 附加到该配置文件来授予仅特别请求的文件系统能力。
- 通过覆盖与代理相关的环境变量并为常见网络工具插入存根可执行文件来禁用出站网络访问。
其主要限制是它不能防止在 Everyone SID 已具有写入权限的任何目录中进行文件写入、删除或创建(例如,全局可写入的文件夹)。 有关更多讨论和限制,请参见 Windows 沙箱安全详情。
用 Codex 沙箱进行实验
要测试命令在 Codex 沙箱下的行为,请使用 CLI 帮助程序:
# macOS
codex sandbox macos [--full-auto] [COMMAND]...
# Linux
codex sandbox linux [--full-auto] [COMMAND]...
# 旧别名
codex debug seatbelt [--full-auto] [COMMAND]...
codex debug landlock [--full-auto] [COMMAND]...