Windows
Windows 沙箱
配置 Windows 上的原生 Codex 沙箱并排查其问题
通过原生 ChatGPT 桌面应用、 CLI 或 IDE 扩展,在 Windows 上使用 Codex。
Windows 版 ChatGPT 桌面应用支持并行聊天、 工作树、计划任务、Git 功能、内置浏览器、文件预览、 插件和技能等核心工作流。
该应用可以在 PowerShell 中使用 Windows 沙箱原生运行,无需
WSL 或虚拟机。这样既能让 Codex 保持 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 或管理员提示被拒绝,
- 计算机不允许创建本地用户或组,
- 计算机不允许更改防火墙规则,
- 计算机阻止沙箱用户所需的登录权限,
- 或其他企业策略阻止了部分设置流程。
可尝试以下操作:
- 再次尝试设置
elevated沙箱;如果环境允许, 请批准管理员提示。 - 如果公司笔记本电脑阻止此操作,请询问 IT 团队,该计算机 是否允许由管理员批准本地用户/组创建、防火墙 配置以及必需的沙箱用户登录权限设置。
- 如果默认设置仍然失败,请使用
unelevated沙箱,以便在 调查问题期间继续工作。
Codex 将我切换到了非提升权限沙箱
这意味着 Codex 无法在你的计算机上完成更强的 elevated 沙箱
设置。
- Codex 仍可在沙箱模式下运行。
- 它仍会应用基于 ACL 的文件系统边界,但不会使用
elevated的独立沙箱用户边界,网络 隔离也较弱。 - 这是一个实用的备用方案,但不是首选的长期企业 配置。
如果你使用的是受管理的企业笔记本电脑,最佳长期解决方案通常是
在 IT 团队的协助下让 elevated 沙箱正常工作。
我看到了 Windows 错误 1385
如果沙箱命令因错误 1385 而失败,说明 Windows 拒绝了沙箱用户
启动命令所需的登录类型。
实际上,这通常意味着 Codex 已成功创建沙箱用户, 但 Windows 策略仍阻止这些用户启动沙箱 命令。
处理方法:
- 询问 IT 团队,设备策略是否向 Codex 创建的沙箱用户 授予了所需的登录权限。
- 如果问题仅影响部分计算机或团队,请比较组策略或 OU 差异。
- 如果需要立即继续工作,请在调查策略问题期间
使用
unelevated沙箱。 - 发送
CODEX_HOME/.sandbox/sandbox.log,并附上你的 Windows 版本和 简短的故障说明。
Codex 警告某些文件夹可由 Everyone 写入
Codex 可能会警告某些文件夹可由 Everyone 写入。
如果看到此警告,则这些文件夹的 Windows 权限过于宽泛, 沙箱无法对其提供完整保护。
处理方法:
- 检查 Codex 在警告中列出的文件夹。
- 如果适合你的环境,请移除这些文件夹的
Everyone写入 权限。 - 修正这些权限后,重启 Codex 或重新运行沙箱设置。
如果不确定如何更改这些权限,请向 IT 团队寻求帮助。
沙箱命令无法访问网络
根据所用权限模式,某些 Codex 聊天会被有意设置为 无法访问出站网络。
如果任务因无法访问网络而失败:
- 检查该任务是否本应在禁用网络的情况下运行。
- 如果你原本需要网络访问,请重启 Codex 并重试。
- 如果问题持续出现,请收集沙箱日志,以便团队检查 计算机是否处于不完整或损坏的沙箱状态。
沙箱之前可以正常工作,后来停止了
以下情况可能导致此问题:
- 移动仓库或工作区,
- 更改计算机权限,
- 更改 Windows 策略,
- 或更改其他系统配置。
可尝试以下操作:
- 重启 Codex。
- 再次尝试设置
elevated沙箱。 - 如果仍未解决,请暂时使用
unelevated沙箱作为 备用方案。 - 收集沙箱日志以供审查。
我需要向 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。