沙箱
沙箱
沙箱在 ChatGPT 和 Codex 各客户端中的工作方式
ChatGPT 桌面应用
沙箱划定了一条边界,让智能体能够自主行动,同时避免赋予它 不受限制的计算机访问权限。当本地聊天在 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
能够继续运行,无须在全局禁用该限制。
权限的工作方式
使用所在界面的权限控件,更改 Codex 处理本地 操作的方式。
审批决定 Codex 何时在执行操作前暂停,而沙箱 决定命令可以访问哪些文件和网络资源。当 审批提供不同的授权范围时,例如仅批准一次或在整个会话中批准, 请选择能够让任务继续进行的最小范围。默认应保留项目 边界;使用独立项目或工作树,而不是 扩大访问范围以涵盖不相关的仓库。
ChatGPT Work 在受管理的隔离环境中运行代码和 shell 命令。 工作区策略和各工具的专属控制项决定哪些功能 可用。如果提供了此设置,可通过设置 > 数据控制 > Work 网络访问 来管理代码和 shell 命令的网络访问权限。开启 允许访问公共互联网,即可让这些命令访问公共 互联网。关闭时,命令只能访问受管理的 允许列表中所需的主机名。
网页搜索、插件和远程浏览器各自有独立的控制项。 更改会在当前代码或 shell 运行结束,且 Work 刷新执行环境后生效。ChatGPT 网页版不提供本地 Codex 沙箱或审批模式选择器。
在 ChatGPT 桌面应用中,使用输入框下方的权限控件。 根据你的配置,菜单可能包含请求审批、 针对符合条件的审批请求提供的代我审批、完全访问权限,以及具名或 自定义权限配置。
在 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。有关沙箱和审批的管理员 要求及组织级约束,请参阅 智能体审批与安全。