代码安全

Codex 的构建重点是保护代码和数据免遭泄露,并防止被滥用。

默认情况下,代理在禁用网络访问的情况下运行,并编辑限制在当前工作区(无论是本地还是云端)的文件。

代理沙盒

根据您运行 Codex 的位置,有不同的沙盒方法:

  • Codex Cloud:在 OpenAI 管理的隔离容器中执行,阻止访问用户主机系统或无关数据。用户可以根据需要有意扩展访问权限(例如,允许安装依赖项或访问特定域);在代理获得访问权限之前的设置阶段,互联网访问始终处于启用状态。
  • Codex CLI / IDE 扩展:macOS 和 Linux 上的 Seatbelt 策略 seccomp + landlock 强制执行本地沙盒。默认设置包括无网络访问权限和仅限于活动工作区的写入权限。用户可以根据自身风险承受能力配置沙盒、审批和网络安全设置。

我们为 Codex 在您的计算机上的工作方式选择了强大的默认设置。在此默认审批模式下,Codex 可以自动读取文件、进行编辑并在工作目录中运行命令。

但是,Codex 需要您的批准才能在工作目录之外工作或通过网络访问运行命令。如果您只是想聊天,或者想在深入研究之前做些计划,您可以Read Only使用该/approvals命令切换到此模式。

网络访问

您可以在我们的Codex Cloud代理互联网访问文档中阅读有关如何启用完整或特定域的允许列表的信息。

或者,如果您使用 Codex CLI / IDE 扩展,默认workspace-write沙盒选项将默认禁用网络,除非在配置中启用如下功能:

[sandbox_workspace_write]
network_access = true

您还可以通过传递标志或设置以下配置来启用Web 搜索工具,而不允许对代理进行不受限制的网络访问:--search

[tools]
web_search = true

由于存在提示注入的风险,我们建议在 Codex 中启用网络访问或启用网络搜索时务必谨慎。

默认设置和建议

  • 启动时,Codex 会检测文件夹是否受版本控制并建议:
    • 版本控制文件夹:(Auto工作区写入 + 按需批准)
    • 非版本控制文件夹:Read Only
  • 工作区包含当前目录和临时目录,例如/tmp。使用/status命令查看工作区中有哪些目录。
  • 我们建议只使用默认值,它可以读取/编辑文件并运行沙盒命令:
    • codex
  • 您可以明确设置这些:
    • codex --sandbox workspace-write --ask-for-approval on-request
    • codex --sandbox read-only --ask-for-approval on-request

我可以在没有任何批准的情况下运行 Codex 吗?

是的,您可以使用以下方式禁用所有批准提示:--ask-for-approval never-a never简写。

此选项适用于所有--sandbox模式,因此您仍然可以完全控制 Codex 的自主性。无论您设置了什么限制,它都会尽力满足您的要求。

如果您需要 Codex 在未经批准的情况下读取文件、进行编辑以及通过网络访问运行命令,则可以使用Full Access请谨慎操作。

常见的沙盒+审批组合

意图旗帜影响
自动(预设)无需标志,默认Codex 可以在工作区中读取文件、进行编辑并运行命令。在沙盒外运行命令需要获得批准。
只读--sandbox read-only --ask-for-approval neverCodex 只能读取文件;从不要求批准。
自动编辑但要求批准运行不受信任的命令--sandbox workspace-write --ask-for-approval untrusted可以读取和编辑文件,但在运行不受信任的命令之前会请求批准。
危险的完全访问权限--dangerously-bypass-approvals-and-sandbox(别名--yolo:)无沙盒;无批准(不推荐)

配置config.toml

# always ask for approval mode
approval_policy = "untrusted"
sandbox_mode    = "read-only"

# Optional: allow network in workspace-write mode
[sandbox_workspace_write]
network_access = true

使用 Codex Sandbox 进行实验

为了测试在 Codex 提供的沙箱下运行命令时会发生什么,我们在 Codex CLI 中提供了以下子命令:

# macOS
codex debug seatbelt [COMMAND]...
# Linux
codex debug landlock [COMMAND]...

操作系统级沙盒

Codex 用于实现沙盒策略的机制取决于您的操作系统:

  • macOS使用 Seatbelt 策略并使用与指定的相对应的配置sandbox-exec文件 ( )运行命令。-p--sandbox
  • Linux使用 Landlock/seccomp API 的组合来强制执行sandbox配置。

对于 Windows 用户,我们建议在Windows Subsystem for Linux (WSL)或 Docker 容器中本地运行 Codex 以提供安全隔离。

请注意,在 Docker 等容器化环境中运行 Linux 时,如果主机/容器配置不支持必要的 Landlock/seccomp API,沙盒可能无法工作。

在这种情况下,我们建议配置您的 Docker 容器,以便它提供您正在寻找的沙盒保证,然后在您的容器内运行(或更简单地说是标志codex--sandbox danger-full-access--dangerously-bypass-approvals-and-sandbox

版本控制

Codex 最适合您的版本控制系统,我们建议:

  • 在功能分支上工作并git status在委托之前保持清洁;这使得 Codex 的补丁易于隔离和恢复。
  • 要求代理生成补丁(git diffgit apply),而不是手动编辑跟踪文件。频繁提交,以便必要时可以小幅回滚。
  • 将 Codex 建议视为任何其他 PR:运行有针对性的验证、审查差异并在提交消息中记录决策以供审核。