# Codex Windows 桌面端一直提示“设置智能体沙盒以继续”的排查与解决记录

## 1. 问题现象

在 Windows 本地使用 Codex 桌面 App 时,进入会话后一直提示:

```text
无法发送消息
设置智能体沙盒以继续

点击“设置智能体沙盒”后,Codex 会自动修改 C:\Users\dell\.codex\config.toml,把 Windows sandbox 设置为:

[windows]
sandbox = "elevated"

但是设置完成后仍然无法进入会话,继续提示需要设置智能体沙盒,形成循环。

同时,VS Code 里的 Codex 插件一开始可以正常使用,说明账号、项目目录和基础网络并不是主要问题。


2. 环境信息

本次问题环境大致如下:

系统:Windows 家庭版
Codex CLI:codex-cli 0.128.0
Codex 路径:
C:\Users\dell\AppData\Roaming\npm\codex
C:\Users\dell\AppData\Roaming\npm\codex.cmd
配置文件:
C:\Users\dell\.codex\config.toml

通过 PowerShell 检查 Codex 版本:

codex --version
where.exe codex

输出类似:

codex-cli 0.128.0
C:\Users\dell\AppData\Roaming\npm\codex
C:\Users\dell\AppData\Roaming\npm\codex.cmd

3. 一开始的误区:以为 Windows 家庭版没有 Windows Sandbox 就完全不能用

执行:

Get-WindowsOptionalFeature -Online -FeatureName "Containers-DisposableClientVM"

没有任何输出。

一开始容易误以为这是因为 Windows 家庭版没有微软 Windows Sandbox 功能,所以 Codex 桌面端必然不能用。

但后来查阅资料后发现,Codex 的 Windows sandbox 并不等同于微软那个 Windows Sandbox 虚拟机功能。OpenAI 官方文章说明,Codex Windows sandbox 是为编码代理设计的 Windows 原生隔离方案,而不是直接依赖微软 Windows Sandbox 虚拟机。OpenAI 官方也说明,Windows 原生 Codex sandbox 支持 elevatedunelevated 两种模式。(OpenAI)

所以,Windows 家庭版没有 Containers-DisposableClientVM,并不代表 Codex 一定不能运行;它只能说明微软 Windows Sandbox 这个可选功能不可用。


4. 官方 Windows sandbox 模式说明

Codex 在 Windows 原生模式下可以在 config.toml 中配置:

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

官方文档中说明,unelevated 是 Windows 原生 sandbox 的 fallback 模式。它使用当前用户派生出的受限 Windows token,并通过 ACL 做文件系统边界控制;相比 elevated 更弱,但在管理员设置、本地策略或企业策略阻止 elevated setup 时仍然有用。(OpenAI 开发者)

官方安全文档也提到,Windows 原生模式可以通过 config.toml 配置:

[windows]
sandbox = "unelevated" # or "elevated"
# sandbox_private_desktop = true  # default; set false only for compatibility

其中 sandbox_private_desktop = false 可以作为兼容性选项。(OpenAI 开发者)


5. 关键排查命令

为了判断是桌面 App UI 问题,还是 Windows sandbox 本身启动失败,可以直接在 PowerShell 中测试 Codex sandbox:

codex sandbox windows echo test

最初报错:

windows sandbox failed: CreateProcessAsUserW failed: 2

这里的 CreateProcessAsUserW failed: 2 是关键线索。Windows 错误码 2 通常表示找不到文件或路径。

不过需要注意:在 Windows 中,echo 并不是独立的 echo.exe,而是 cmd.exe 的内置命令。因此更稳妥的测试方式应该是:

codex sandbox windows cmd /c echo test

后续修复后,该命令成功输出:

test

这说明 Windows sandbox 本身已经可以创建进程,问题不是 Windows 家庭版完全不支持,而是 Codex 当前配置下的命令执行后端有兼容性问题。


6. 最终解决方法

编辑 Codex 配置文件:

notepad $env:USERPROFILE\.codex\config.toml

将配置改为:

sandbox_mode = "workspace-write"
approval_policy = "on-request"

[windows]
sandbox = "unelevated"
sandbox_private_desktop = false

[features]
unified_exec = false
shell_snapshot = true

保存后,重新打开 Codex 桌面 App。

然后在 PowerShell 中验证:

codex sandbox windows cmd /c echo test

如果输出:

test

说明 Windows sandbox 已经能正常启动。

也可以继续测试 PowerShell:

codex sandbox windows powershell -NoProfile -Command "Get-Location; Write-Output ok"

如果能正常输出路径和 ok,说明 Codex sandbox 的命令执行已经恢复。


7. 为什么这样能解决?

本次问题并不是 .codex 目录没有删除干净,也不是 VS Code 插件、桌面 App、项目目录本身的问题,而是几个因素叠加:

Codex CLI 0.128.0
+ Windows 原生 sandbox
+ 桌面 App 默认/强制尝试 elevated setup
+ 当前 Windows 环境下 elevated setup 没有成功
+ unified_exec 执行路径在 Windows 下出现兼容性问题
+ 最终触发 CreateProcessAsUserW failed: 2

CreateProcessAsUserW failed: 2 的核心含义是:Codex sandbox 在创建子进程时找不到要启动的程序或路径。

关闭:

[features]
unified_exec = false

可以绕开当前版本中较新的统一执行路径。

打开:

shell_snapshot = true

可以让 Codex 更稳定地获取当前 shell 环境。

同时使用:

[windows]
sandbox = "unelevated"
sandbox_private_desktop = false

可以避免 Windows 家庭版或无管理员权限环境下 elevated setup 失败后卡住,并关闭 private desktop 相关兼容性风险。

GitHub 上也有多个 Windows sandbox 相关 issue,涉及 CreateProcessAsUserW failedunified_execunelevated fallback 等问题,说明这是 Codex Windows 原生 sandbox 近期仍在快速迭代中的兼容性问题。(GitHub)


8. 另一个常见坑:duplicate key 导致 VS Code 插件也不能用

修复过程中还遇到过:

failed to load configuration: C:\Users\dell\.codex\config.toml:37:11: duplicate key

这个不是 sandbox 问题,而是 config.toml 写重复了。

例如下面这种是错误写法:

[features]
unified_exec = false

[features]
shell_snapshot = true

应该合并成:

[features]
unified_exec = false
shell_snapshot = true

下面这种也是错误写法:

[windows]
sandbox = "unelevated"

[windows]
sandbox_private_desktop = false

应该合并成:

[windows]
sandbox = "unelevated"
sandbox_private_desktop = false

如果配置文件解析失败,Codex CLI、VS Code 插件、桌面 App 都可能无法正常启动,因为它们都会读取用户目录下的:

C:\Users\dell\.codex\config.toml

官方配置文档也说明,Codex 的默认配置保存在本地 config.toml 中,相关 sandbox 和 approval 配置都从这里读取。(OpenAI 开发者)


9. 推荐最终配置

如果你是 Windows 家庭版,或者点击 Codex 桌面 App 的“设置智能体沙盒”后反复失败,可以先使用下面这份配置:

sandbox_mode = "workspace-write"
approval_policy = "on-request"

[windows]
sandbox = "unelevated"
sandbox_private_desktop = false

[features]
unified_exec = false
shell_snapshot = true

如果需要信任某个具体项目目录,可以只信任项目目录,不要直接信任整个用户目录:

[projects.'f:\os\codex']
trust_level = "trusted"

不建议这样写:

[projects.'c:\users\dell']
trust_level = "trusted"

[projects.'c:\users\dell\appdata\roaming\npm']
trust_level = "trusted"

原因是 C:\Users\dell 范围太大,包含桌面、下载、文档、配置、缓存等大量内容;AppData\Roaming\npm 是 npm 全局命令目录,不是普通项目目录。


10. 如果 Codex 还拉取插件失败

修复 sandbox 后,可能还会遇到:

git fetch failed: fatal: unable to access 'https://github.com/openai/skills.git/':
Failed to connect to github.com port 443

这个和 sandbox 不是同一个问题,而是 GitHub 网络不可达。

可以检查:

Test-NetConnection github.com -Port 443
git config --global --get https.proxy
git ls-remote https://github.com/openai/skills.git

如果 GitHub 443 不通,需要给 Git 配置代理,例如代理端口是 7890

git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

取消代理:

git config --global --unset http.proxy
git config --global --unset https.proxy

11. 总结

这次问题的核心不是 Windows 家庭版完全不能用 Codex,也不是 .codex 目录删除不干净。

真正原因更可能是:

Codex Windows 原生 sandbox 在当前版本下的执行后端兼容问题
+ 桌面 App 默认尝试 elevated setup
+ 当前环境 elevated setup 不成功
+ unified_exec 导致命令启动路径异常
+ 最终报 CreateProcessAsUserW failed: 2

最终可行解决方案是:

sandbox_mode = "workspace-write"
approval_policy = "on-request"

[windows]
sandbox = "unelevated"
sandbox_private_desktop = false

[features]
unified_exec = false
shell_snapshot = true

修复后,用下面命令验证:

codex sandbox windows cmd /c echo test

输出:

test

即可说明 Windows sandbox 已经能正常启动。


参考资料

  1. OpenAI Codex Windows 官方文档:说明 Windows 原生 sandbox 支持 elevatedunelevated,其中 unelevated 是 fallback 模式。(OpenAI 开发者)
  2. OpenAI Codex Agent approvals & security:说明 Windows 原生模式可以在 config.toml 中配置 [windows] sandbox = "unelevated""elevated",并提到 sandbox_private_desktop 兼容性配置。(OpenAI 开发者)
  3. OpenAI 官方文章《Building a safe, effective sandbox to enable Codex on Windows》:介绍 Codex Windows sandbox 的设计目标和实现思路。(OpenAI)
  4. OpenAI Codex Sandbox 概念文档:说明 Codex 使用 config.toml 保存 sandbox 和 approval 等默认配置。(OpenAI 开发者)
  5. OpenAI Codex Configuration Reference:Codex config.toml 配置参考。(OpenAI 开发者)
  6. GitHub Issue:unified_exec = true 在 Windows 上导致命令执行后端不可用的相关反馈。(GitHub)
  7. GitHub Issue:Windows 下 unified_exec 与 sandbox 相关问题。(GitHub)
  8. GitHub Issue:Windows sandbox 中 CreateProcessAsUserW failed 相关错误反馈。(GitHub)
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐