沙盒为智能体设定边界,使其能够自主执行操作, 同时不会让它不受限制地访问您的计算机。当本地聊天在 ChatGPT 桌面应用、 Codex CLI 或 IDE 扩展中运行命令时,这些命令会在 受限环境中运行,而非默认获得完全访问权限。
该环境规定智能体可以自主执行哪些操作,例如可以修改哪些文件、命令能否访问网络。只要任务未超出这些边界,智能体就能持续执行,无需停下来请求确认。当任务需要超出边界时,则进入审批流程。
沙盒与审批是两种相互配合的控制机制。沙盒负责设定技术边界,审批策略则决定智能体何时必须在越过边界前暂停并请求审批。
沙盒的作用
沙盒不仅适用于内置文件操作,
也适用于启动的命令。如果智能体运行 git、软件包管理器或测试运行器等工具,
这些命令也会受到相同的沙盒边界约束。
Codex 在每个操作系统上都采用平台原生的强制执行机制。macOS、Linux、WSL2 和原生 Windows 的实现方式各不相同,但各个界面的核心理念一致:为智能体提供边界明确的工作环境,让常规任务能够在清晰的限制范围内自主运行。
为何重要
沙盒可以减少频繁审批带来的疲劳。智能体无需请求您确认每一条低风险命令,即可在您已批准的边界内读取文件、编辑文件并运行常规项目命令。
沙盒还为智能体执行任务提供了更清晰的信任模型。您不仅信任智能体的意图,也信任约束其操作的强制限制。这让您能够更放心地让智能体独立工作,同时清楚它会在何时暂停并请求帮助。
入门
默认权限模式会自动启用沙盒。
前提条件
在 macOS 上,沙盒使用系统内置的 Seatbelt 框架, 无需额外配置即可使用。
在 Windows 上,如果在 PowerShell 中运行,Codex 会使用原生 Windows 沙盒;如果在 WSL2 中运行,则使用 Linux 沙盒实现。
在 Linux 和 WSL2 上,请先使用软件包管理器安装 bubblewrap:
sudo apt install bubblewrapsudo dnf install bubblewrapCodex 使用在 PATH 中找到的第一个 bwrap 可执行文件。
如果没有可用的 bwrap 可执行文件,Codex 会改用随附的辅助程序,
但该辅助程序要求系统支持非特权用户创建用户命名空间。
安装提供 bwrap 的发行版软件包,可确保此配置可靠运行。
如果缺少 bwrap,或者辅助程序无法创建所需的用户命名空间,
Codex 会在启动时显示警告。对于通过此项 AppArmor 设置施加限制的发行版,
建议优先加载 bwrap 的 AppArmor 配置文件,
使 bwrap 能够继续运行,而无需在全局禁用该限制。
Ubuntu AppArmor 注意事项: 在 Ubuntu 25.04 上,从 Ubuntu 软件包仓库安装 bubblewrap 后,
应无需额外配置 AppArmor 即可正常使用。
bwrap-userns-restrict 配置文件包含在 apparmor 软件包中,位于
/etc/apparmor.d/bwrap-userns-restrict。
在 Ubuntu 24.04 上,即使已安装 bubblewrap,Codex 仍可能警告无法创建所需的用户命名空间。
请复制并加载额外的配置文件:
sudo apt update
sudo apt install apparmor-profiles apparmor-utils
sudo install -m 0644 \
/usr/share/apparmor/extra-profiles/bwrap-userns-restrict \
/etc/apparmor.d/bwrap-userns-restrict
sudo apparmor_parser -r /etc/apparmor.d/bwrap-userns-restrictapparmor_parser -r 会将配置文件加载到内核中,无需重启系统。
您也可以重新加载所有 AppArmor 配置文件:
sudo systemctl reload apparmor.service如果该配置文件不可用或未能解决问题,您可以使用以下命令禁用 AppArmor 对非特权用户创建用户命名空间的限制:
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0权限的工作原理
请使用当前界面的权限控件,调整 Codex 处理本地操作的方式。
审批决定 Codex 何时在执行操作前暂停,沙盒则决定命令可以访问哪些文件和网络资源。如果审批提供不同的授权范围,例如仅批准一次或在整个会话期间有效,请选择能让任务继续进行的最小授权范围。默认应将访问范围限制在项目边界内;请使用单独的项目或工作树,不要将访问范围扩大到无关的代码仓库。
ChatGPT Work 在受管理的隔离环境中运行代码和 Shell 命令。 工作空间策略和各工具的专用控制设置决定哪些能力可用。 如果该设置可用,请通过 设置 > 数据控制 > Work 网络访问 管理代码和 Shell 命令的网络访问权限。 开启允许访问公共互联网 后,这些命令即可访问公共互联网。 关闭后,命令只能访问 受管理的允许列表中列出的必需主机名。
网页搜索、插件和远程浏览器分别有独立的控制设置。更改会在当前代码或 Shell 命令运行结束,并且 Work 刷新其执行环境后生效。ChatGPT 网页版不提供本地 Codex 沙盒或审批模式选择器。
在 ChatGPT 桌面应用中,请使用编辑器下方的权限控件。 根据您的配置,菜单可能包括 请求审批、 替我审批 (适用于符合条件的审批请求)、 完全访问权限,以及 已命名或自定义的权限配置方案。
Ask for approval
Codex can read and edit files in the current workspace and run routine local commands. It asks before using the internet or going beyond the workspace boundary.
- Sandbox
workspace-write- Approvals policy
on-request- Reviewer
user
在 CLI 中,输入
/permissions
即可打开权限选择器,并更改当前生效的权限配置方案。
在 IDE 扩展中,请使用编辑器下方的权限控件。 根据您的配置,菜单可能包括 请求审批、 替我审批 (适用于符合条件的审批请求)、 完全访问权限,以及 已命名或自定义的权限配置方案。
配置默认值
为使每次启动时的行为保持一致,请在 config.toml 中设置默认值。
基础配置介绍了其工作原理,
配置参考资料详细说明了以下配置键:
sandbox_mode、approval_policy、approvals_reviewer 和
sandbox_workspace_write.writable_roots。通过这些设置,您可以决定
智能体默认拥有多少自主权、可以写入哪些目录、
何时需要暂停请求审批,以及由谁审查符合条件的审批请求。
常见的沙盒模式概述如下:
read-only:智能体可以查看文件, 但未经审批,不能编辑文件或运行命令。workspace-write:智能体可以读取文件、在工作空间内编辑文件, 并在该边界内运行常规本地命令。 这是让本地工作更顺畅的默认模式。danger-full-access:智能体运行时不受沙盒限制。 此模式会移除文件系统和网络边界, 仅当您希望智能体以完全访问权限执行操作时,才应使用。
常见的审批策略如下:
on-request:智能体默认在沙盒内工作, 需要超出该边界时会请求审批。never:智能体不会停下来请求审批。
Codex 和 ChatGPT Work 不再支持将 untrusted 选作审批策略。
如果现有配置使用了该值,请参阅从已停用的
untrusted 审批策略
迁移。
使用交互式审批时,您还可以通过
approvals_reviewer 选择由谁审查审批请求:
user:审批请求会显示给用户。这是默认设置。auto_review:符合条件的审批请求会交给审查智能体(请参阅 自动审查)。
完全访问权限意味着同时使用 sandbox_mode = "danger-full-access" 和
approval_policy = "never"。相比之下,风险较低的本地自动化预设
是同时使用 sandbox_mode = "workspace-write" 和
approval_policy = "on-request",或使用对应的 CLI 标志
--sandbox workspace-write --ask-for-approval on-request。在此基础上,您可以保留
approvals_reviewer = "user" 以进行人工审批,或设置
approvals_reviewer = "auto_review" 以自动审查审批请求。
如果您需要智能体在多个目录中工作,可写根目录设置可以扩展它能够修改的位置,而无需完全移除沙盒。如果您需要扩大或缩小信任边界,请调整默认沙盒模式和审批策略,而非依赖一次性的例外。
当工作流程需要特定例外时,请使用规则。 规则可以根据命令前缀,允许、请求审批或禁止在沙盒外执行命令, 这通常比大范围扩大访问权限更合适。有关 IDE 专用设置的入口, 请参阅Codex IDE 扩展设置。
自动审查功能即使可用,也不会改变沙盒边界。
它是用于审查该边界处审批请求的一种 approvals_reviewer 选项,
这些请求包括沙盒权限提升、被阻止的网络访问,
或仍需审批的、会产生副作用的工具调用。沙盒内已获允许的操作
无需额外审查即可运行。有关审查智能体的生命周期、触发类型、
拒绝的语义以及配置详情,请参阅
自动审查。
各平台的详细信息见相应平台的文档。 有关原生 Windows 的设置、行为和故障排除,请参阅 Windows。 有关沙盒和审批的管理员要求及组织级限制,请参阅 智能体审批与安全。