中文

Windows

Windows 沙箱

配置 Windows 上的原生 Codex 沙箱并排查其问题

通过原生 ChatGPT 桌面应用CLIIDE 扩展,在 Windows 上使用 Codex。

Windows 版 ChatGPT 桌面应用支持并行聊天、 工作树、计划任务、Git 功能、内置浏览器、文件预览、 插件和技能等核心工作流。

该应用可以在 PowerShell 中使用 Windows 沙箱原生运行,无需 WSL 或虚拟机。这样既能让 Codex 保持 Windows 原生 工作流,又能实施有边界的文件系统和网络权限。 消息编辑器上方的 ChatGPT 桌面应用 Windows 沙箱设置提示 在 Windows 上使用 ChatGPT 桌面应用:通过原生 Windows 应用,在一处跨项目工作、并行运行聊天并审查结果。

原生 Windows 沙箱有两种模式:

  • 使用更强的 elevated 沙箱在 Windows 上原生运行,
  • 使用备用 unelevated 沙箱在 Windows 上原生运行。

配置 Windows 沙箱

在 Windows 上原生运行 Codex 时,代理模式使用 Windows 沙箱, 阻止向工作文件夹之外的文件系统写入,并在未经你明确批准时 阻止网络访问。

原生 Windows 沙箱支持两种模式,你可以在 config.toml 中配置:

[windows]
sandbox = "elevated" # or "unelevated"

elevated 是首选的原生 Windows 沙箱。它使用专用的 低权限沙箱用户、文件系统权限边界、防火墙 规则,以及在沙箱中运行命令所需的本地策略更改。

unelevated 是备用的原生 Windows 沙箱。它使用从当前用户派生的 受限 Windows 令牌运行命令,应用基于 ACL 的 文件系统边界,并使用环境级离线控制来取代 专用离线用户防火墙规则。它比 elevated 弱,但在本地或 企业策略阻止需管理员批准的设置时,仍然很有用。

如果两种模式都可用,请使用 elevated。如果默认原生沙箱 无法在你的环境中运行,请在排查设置问题期间使用 unelevated 作为备用方案。

企业管理员可以通过 requirements.toml,限制 Codex 可以使用哪些原生沙箱实现:

[windows]
allowed_sandbox_implementations = ["elevated"]

此示例要求使用 elevated 沙箱,并阻止用户回退到 unelevated。要允许任一实现,请同时包含两个值; 未选择模式时,Codex 优先使用 elevated。有关 支持的值,请参阅 requirements.toml 参考

默认情况下,两种沙箱模式还会使用专用桌面,以增强 UI 隔离。仅当兼容性需要较旧的 Winsta0\\Default 行为时, 才设置 windows.sandbox_private_desktop = false

沙箱权限

Windows 版本矩阵

Windows 版本 支持级别 说明
Windows 11 推荐 Windows 上运行 Codex 的最佳基准。如果要标准化企业部署,请使用此版本。
近期且已完全更新的 Windows 10 尽力支持 可以运行,但可靠性低于 Windows 11。在 Windows 10 上,Codex 依赖包括 ConPTY 在内的现代控制台支持。实际需要 Windows 10 版本 1809 或更高版本。
较旧的 Windows 10 版本 不推荐 更可能缺少 ConPTY 等必需的控制台组件,也更可能在企业环境中失败。

其他环境前提:

  • winget 应当可用。如果缺失,请更新 Windows 或安装 Windows Package Manager,再设置 Codex。
  • 推荐的原生沙箱依赖经管理员批准的设置。
  • 即使操作系统版本本身符合要求,某些企业托管设备也会阻止所需的设置步骤。

授予沙箱读取权限

当命令因 Windows 沙箱无法读取某个目录而失败时,请使用:

/sandbox-add-read-dir C:\absolute\directory\path

路径必须是现有的绝对目录。命令成功后,之后在沙箱中运行的命令可在当前会话期间读取该目录。

默认使用原生 Windows 沙箱。当你需要 Linux 原生工具、工作流已位于 WSL2 中,或 两种原生 Windows 沙箱模式都无法满足需求时,请选择 WSL

故障排除和常见问题

排查受管理 Windows 计算机的问题时,请先检查原生 沙箱模式、Windows 版本以及 Codex 显示的任何策略错误。大多数原生 Windows 支持问题源自沙箱设置、登录权限或文件系统 权限,而非编辑器本身。

我的原生沙箱设置失败

如果 Codex 无法完成 elevated 沙箱设置,最常见的原因 包括:

  • Windows UAC 或管理员提示被拒绝,
  • 计算机不允许创建本地用户或组,
  • 计算机不允许更改防火墙规则,
  • 计算机阻止沙箱用户所需的登录权限,
  • 或其他企业策略阻止了部分设置流程。

可尝试以下操作:

  1. 再次尝试设置 elevated 沙箱;如果环境允许, 请批准管理员提示。
  2. 如果公司笔记本电脑阻止此操作,请询问 IT 团队,该计算机 是否允许由管理员批准本地用户/组创建、防火墙 配置以及必需的沙箱用户登录权限设置。
  3. 如果默认设置仍然失败,请使用 unelevated 沙箱,以便在 调查问题期间继续工作。

Codex 将我切换到了非提升权限沙箱

这意味着 Codex 无法在你的计算机上完成更强的 elevated 沙箱 设置。

  • Codex 仍可在沙箱模式下运行。
  • 它仍会应用基于 ACL 的文件系统边界,但不会使用 elevated 的独立沙箱用户边界,网络 隔离也较弱。
  • 这是一个实用的备用方案,但不是首选的长期企业 配置。

如果你使用的是受管理的企业笔记本电脑,最佳长期解决方案通常是 在 IT 团队的协助下让 elevated 沙箱正常工作。

我看到了 Windows 错误 1385

如果沙箱命令因错误 1385 而失败,说明 Windows 拒绝了沙箱用户 启动命令所需的登录类型。

实际上,这通常意味着 Codex 已成功创建沙箱用户, 但 Windows 策略仍阻止这些用户启动沙箱 命令。

处理方法:

  1. 询问 IT 团队,设备策略是否向 Codex 创建的沙箱用户 授予了所需的登录权限。
  2. 如果问题仅影响部分计算机或团队,请比较组策略或 OU 差异。
  3. 如果需要立即继续工作,请在调查策略问题期间 使用 unelevated 沙箱。
  4. 发送 CODEX_HOME/.sandbox/sandbox.log,并附上你的 Windows 版本和 简短的故障说明。

Codex 警告某些文件夹可由 Everyone 写入

Codex 可能会警告某些文件夹可由 Everyone 写入。

如果看到此警告,则这些文件夹的 Windows 权限过于宽泛, 沙箱无法对其提供完整保护。

处理方法:

  1. 检查 Codex 在警告中列出的文件夹。
  2. 如果适合你的环境,请移除这些文件夹的 Everyone 写入 权限。
  3. 修正这些权限后,重启 Codex 或重新运行沙箱设置。

如果不确定如何更改这些权限,请向 IT 团队寻求帮助。

沙箱命令无法访问网络

根据所用权限模式,某些 Codex 聊天会被有意设置为 无法访问出站网络。

如果任务因无法访问网络而失败:

  1. 检查该任务是否本应在禁用网络的情况下运行。
  2. 如果你原本需要网络访问,请重启 Codex 并重试。
  3. 如果问题持续出现,请收集沙箱日志,以便团队检查 计算机是否处于不完整或损坏的沙箱状态。

沙箱之前可以正常工作,后来停止了

以下情况可能导致此问题:

  • 移动仓库或工作区,
  • 更改计算机权限,
  • 更改 Windows 策略,
  • 或更改其他系统配置。

可尝试以下操作:

  1. 重启 Codex。
  2. 再次尝试设置 elevated 沙箱。
  3. 如果仍未解决,请暂时使用 unelevated 沙箱作为 备用方案。
  4. 收集沙箱日志以供审查。

我需要向 OpenAI 发送诊断信息

如果问题仍然存在,请发送:

  • CODEX_HOME/.sandbox/sandbox.log

同时附上以下信息也会有所帮助:

  • 对你尝试执行的操作作简短说明,
  • elevated 沙箱是否失败,或是否使用了 unelevated 沙箱,
  • 应用中显示的任何错误消息,
  • 是否看到 1385 或其他 Windows 或 PowerShell 错误,
  • 以及使用的是 Windows 11 还是 Windows 10。

请勿发送:

  • CODEX_HOME/.sandbox-secrets/ 的内容

IDE 扩展已安装但无响应

你的系统可能缺少某些原生依赖项所需的 C++ 开发工具:

  • Visual Studio Build Tools(C++ 工作负载)
  • Microsoft Visual C++ Redistributable (x64)
  • 使用 winget 时,运行 winget install --id Microsoft.VisualStudio.2022.BuildTools -e

安装后,请完全重启 VS Code。