从写代码,到创作下一幕

探索 字节跳动 - 火山方舟 的 AI 编程与视频创作活动。

Agent Plan & Coding Plan

一站体验多款热门模型,为 AI 编程与智能体开发提供更多选择。新用户可联系(微信: goo_lvyouyou)免费体验 9.9 agent plan。

Seedance 2.5

让创意,跃然成片。探索 30 秒视频、多模态参考与局部编辑,把脑海中的画面变成下一支作品。

中文

沙箱

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 bubblewrap

Codex 使用在 PATH 中找到的第一个 bwrap 可执行文件。如果没有可用的 bwrap 可执行文件,Codex 会回退到捆绑的辅助程序,但该辅助程序要求系统支持创建非特权用户命名空间。安装 提供 bwrap 的发行版软件包可确保此设置可靠运行。

当缺少 bwrap,或辅助程序无法创建所需的用户命名空间时,Codex 会显示启动警告。 在限制此 AppArmor 设置的发行版上,建议加载 bwrap AppArmor 配置文件,使 bwrap 无需在全局范围内禁用该限制也能继续工作。

Work Cloud 的本地计算机访问

对于使用 Work Cloud 本地计算机访问功能的任务,OpenAI 云端负责协调对话。沙箱限制取决于每个步骤的运行位置:

  • 云端执行: Work 云容器使用现有的 Work Cloud 策略。桌面浏览器的站点规则不会自动应用于云端浏览器。
  • 本地执行: 受支持的本地执行要求会约束已连接计算机上运行的步骤。

对于具有本地访问权限的 Work 和 dots,启用托管策略后,受支持的 Global 策略会应用于共享的云端编排器。Work 云容器和 dots 云计算机使用各自的执行配置与要求。请分别测试本地和云端执行,以确认每个环境中适用的控制措施。一个环境的策略不会授予对另一个环境的访问权限。

在同一策略内,优先级从高到低依次为:特定操作系统的环境覆盖设置 → 适用于所有操作系统的环境覆盖设置 → Global。优先级较高的策略优先,即使优先级较低的策略更具体。对于本地执行,MDM 和旧版托管设备要求优先于 Agent Security,而 Agent Security 优先于设备的系统要求文件。

请查阅托管配置,了解特定于字段的合并规则和运行时限制,并在 Work 本地安全和 Work 云端安全中查看实际生效的文件和网络限制。

权限的工作原理

使用所在界面的权限控件,调整 Codex 处理本地操作的方式。

审批决定 Codex 在执行操作前何时暂停,而沙箱决定命令可以访问哪些文件和网络资源。 当审批提供不同范围(例如仅批准一次或批准整个会话)时,请选择能让任务继续进行的 最小范围。默认保持项目边界;如需处理不相关的代码仓库,请使用单独的项目或工作树, 而不是扩大访问范围。

在 ChatGPT 桌面应用中,使用输入框下方的权限控件。根据你的配置,菜单可能包括 请求审批、用于符合条件的审批请求的代我审批、完全访问权限,以及命名或 自定义权限配置档案。

向 Codex 询问任何问题。

请求审批

Codex 可以读取和编辑当前工作区中的文件,并运行日常本地命令。使用互联网或越过工作区边界前,它会先询问。

沙箱workspace-write审批策略on-request评审者user

配置默认值

要让每次启动时的行为保持一致,请在 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。有关沙箱和审批的管理员要求及 组织级限制,请参阅智能体审批与安全。