当前位置: 首页 > news >正文

Codex Windows Sandbox 启动失败:CreateProcessAsUserW failed: 2 的原因与修复

一、问题背景

在 Windows 上使用 Codex CLI / Codex Desktop 时,我遇到了两个看起来相关、但实际属于不同层级的问题。

最开始执行:

codex sandbox windows cmd /c echo test

报错:

windows sandbox failed: runner error: CreateProcessAsUserW failed: 2

后来在让 Codex 往文件里写内容时,又弹出 Windows 错误窗口,路径类似:

C:\Program Files\WindowsApps\OpenAI.Codex_...\app\resources\codex-windows-sandbox-setup.exe

错误内容:

找不到指定的模块。

一开始我以为是 Codex sandbox 本身坏了,但完整排查后发现,这是两个不同问题:

  1. 第一个问题是 Codex CLI 新版本的 sandbox 命令格式变了。
  2. 第二个问题是 Windows 原生 sandbox 的elevated模式在本机 setup 阶段失败。

二、环境信息

当前 Codex 版本:

codex --version

输出:

codex-cli 0.142.5

当前机器上实际存在两套 Codex 来源:

C:\Users\Amber\AppData\Roaming\npm\... C:\Program Files\WindowsApps\OpenAI.Codex_...\app\resources\...

其中 npm 版 Codex CLI 路径大致是:

C:\Users\Amber\AppData\Roaming\npm\node_modules\@openai\codex

Codex Desktop 自带资源路径大致是:

C:\Program Files\WindowsApps\OpenAI.Codex_...\app\resources

三、第一个问题:codex sandbox windows已经不是新版写法

原命令:

codex sandbox windows cmd /c echo test

报错:

windows sandbox failed: runner error: CreateProcessAsUserW failed: 2

查看新版帮助:

codex sandbox --help

可以看到当前版本的格式是:

Usage: codex sandbox [OPTIONS] [COMMAND]...

也就是说,sandbox后面直接跟要执行的命令。

新版正确写法是:

codex sandbox cmd /c echo test

输出:

test

根因

在 Codex CLI0.142.5中,windows已经不是sandbox的子命令。

所以这条旧命令:

codex sandbox windows cmd /c echo test

会被新版 CLI 理解成:

在 sandbox 里运行一个叫 windows 的程序,并传入 cmd /c echo test

但 Windows 上没有名为windows的可执行文件,于是底层CreateProcessAsUserW返回错误码2,也就是文件找不到。

解决方式

推荐直接改用新版写法:

codex sandbox cmd /c echo test

如果仍想兼容旧写法,可以在 npm 版入口脚本中做兼容处理,把:

codex sandbox windows ...

自动转换为:

codex sandbox ...

我当时修改的位置是:

C:\Users\Amber\AppData\Roaming\npm\node_modules\@openai\codex\bin\codex.js

加入的逻辑大致如下:

const childArgs = process.argv.slice(2); if ( process.platform === "win32" && childArgs[0] === "sandbox" && childArgs[1] === "windows" ) { childArgs.splice(1, 1); } const child = spawn(binaryPath, childArgs, { stdio: "inherit", env, });

这一步解决的是旧命令格式兼容问题。

但是,它并没有解决后面那个“找不到指定模块”的弹窗。


四、第二个问题:写文件时codex-windows-sandbox-setup.exe报错

后面在让 Codex 往 workspace 文件里写内容时,又出现了新的错误窗口:

C:\Program Files\WindowsApps\OpenAI.Codex_...\app\resources\codex-windows-sandbox-setup.exe 找不到指定的模块。

这个问题和codex sandbox windows的命令格式无关。

这里出问题的是 Codex Desktop 自带的 Windows sandbox setup 程序。


五、进一步排查

先验证基础 sandbox 是否能运行:

codex sandbox cmd /c echo test

结果:

test

说明 sandbox 基础命令执行能力是正常的。

再测试 workspace 写入:

codex sandbox -c 'sandbox_mode="workspace-write"' cmd /d /c "echo final-write-ok>codex_final_write_test.txt"

然后读取文件:

Get-Content .\codex_final_write_test.txt

结果:

final-write-ok

说明在正确的 workspace-write 配置下,sandbox 也能正常写文件。

也就是说,真正的问题集中在 Windows sandbox 的 setup 模式上。


六、elevatedunelevated的区别

Codex Windows 原生 sandbox 支持两种模式:

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

elevated

elevated是官方推荐的首选模式。

它会使用:

专门的低权限 sandbox 用户 文件系统 ACL 边界 防火墙规则 本地安全策略调整

优点是隔离更完整、安全边界更强。

但缺点是它需要运行:

codex-windows-sandbox-setup.exe

来做系统级准备。

如果 WindowsApps 权限、MSIX 包隔离、管理员权限、本地安全策略、企业安全软件或系统依赖有问题,就可能在 setup 阶段报错。

我这里看到的弹窗就是这一类问题。

unelevated

unelevated是 fallback 模式。

它不会走完整的 elevated setup,而是基于当前用户派生一个受限 Windows token,并用 ACL 做文件访问限制。

优点是兼容性更好,更容易启动。

缺点是隔离强度弱于elevated,尤其是防火墙和专用低权限用户这部分不如 elevated 完整。

简单理解:

elevated = 更安全、更完整,但更依赖系统 setup unelevated = 兼容性更好,隔离稍弱,但仍然是 sandbox

七、最终解决方案

由于本机elevated模式会触发 Codex Desktop 包路径里的 setup 程序错误,所以我把 Codex 配置改成了unelevated

配置文件位置:

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

修改前:

[windows] sandbox = "elevated"

修改后:

[windows] sandbox = "unelevated"

这不是关闭 sandbox,而是切换到 Windows 原生 sandbox 的备用实现。


八、验证结果

修改后验证基础命令:

codex sandbox cmd /c echo test

输出:

test

验证旧写法兼容:

codex sandbox windows cmd /c echo test

输出:

test

验证 workspace 写入:

codex sandbox -c 'sandbox_mode="workspace-write"' cmd /d /c "echo final-write-ok>codex_final_write_test.txt"

读取结果:

final-write-ok

运行诊断:

codex doctor --summary

结果:

17 ok · 1 idle · 1 notes · 0 warn · 0 fail ok

九、最终结论

这次问题不能只归结为“sandbox 坏了”。

完整结论是:

1. codex sandbox windows cmd /c echo test 报错,是因为新版 Codex CLI 不再需要 windows 子命令。 2. 写文件时弹出 codex-windows-sandbox-setup.exe 找不到模块,是 elevated Windows sandbox setup 阶段的问题。 3. sandbox 本身可以运行,workspace-write 模式也可以正常写文件。 4. 当前机器上更稳定的解决方式是把 Windows sandbox 从 elevated 切到 unelevated。

最终推荐配置:

[windows] sandbox = "unelevated"

等以后 Codex Desktop 或本机 WindowsApps / setup 权限问题修复后,可以再切回:

[windows] sandbox = "elevated"

十、补充说明

如果只是手动测试 sandbox 命令,建议使用新版格式:

codex sandbox cmd /c echo test

如果要测试写入,需要显式使用 workspace-write:

codex sandbox -c 'sandbox_mode="workspace-write"' cmd /d /c "echo test>test.txt"

不要用旧格式:

codex sandbox windows cmd /c echo test

除非你自己做了兼容处理。

http://www.cnnetsun.cn/news/3174020.html

相关文章:

  • SnapClick 1.1.1 更新速递:右键秒开 / 多编辑器打开 / 录屏 HUD / 毛玻璃透明度
  • 2-1注释,数据类型,与input的使用方法
  • 新闻项目---项目结构
  • 卡梅德生物技术快报|构建噬菌体肽库:全质粒 PCR 克隆优化、NGS 序列偏倚分析与淘选数据定量解析
  • Windows C++编译 Paddle Inference 3.5.0 GPU 版本完整指南
  • Win10 家庭版启用组策略 gpedit.msc:3步解决本地安全策略缺失问题
  • SQL Server 2022 嵌套查询实战:3类子查询与连接查询性能对比分析
  • MySQL 8.0 连接查询深度解析:5种JOIN执行过程与适用场景图解
  • OTB-2015 与 VOT2023 数据集对比:从 100 个序列到 60 个挑战的 10 年演进分析
  • AI 时代,学会R之后,很多人后悔了
  • Unity AssetBundle 2022.3 内存泄漏排查:3种 Unload 误用场景与 Profiler 取证
  • PointNet++ 与 PointNet 性能对比:3类任务、5个指标下的模型效率与精度分析
  • 构建本地化翻译知识库:使用 Llama 3.1 8B 微调专属教材翻译模型的 5 个步骤
  • Linux Audio 驱动调试:ACDB 文件加载失败 4 种常见原因与排查方法
  • StatefulSet vs Deployment 深度对比:5个关键差异与3个典型选型场景
  • Linux 压缩工具性能对比:tar/gzip/bzip2/xz 在 10GB 文件下的耗时与压缩率
  • Adam 优化器超参数 β1/β2 调优实战:从理论到 5 组实验对比
  • 呼市短视频陪跑服务哪家靠谱?中小企业轻量化 GEO + 短视频方案
  • macOS crontab 与 launchctl 对比:5个关键差异与3个典型场景选择
  • 反向传播 3 大常见问题:梯度消失、爆炸与 ReLU 死区排查
  • ThinkPHP、Log4j2、Spring框架漏洞深度复现与原理剖析实战指南
  • ORB-SLAM2 与 LSD-SLAM 对比:3类场景下前端跟踪算法性能实测分析
  • CHKDSK 与 found.000 深度解析:从文件系统原理到 .chk 文件手动修复
  • Certutil 与 CertMgr.exe:Windows 证书命令行管理的 5 种高效场景
  • 云运维学习笔记——第四周(shell编程)
  • 呼和浩特定制网站还是模板建站?适配 GEO 优化的官网选型攻略
  • Transformer 2017 原理解析:从 RNN 瓶颈到多头注意力 3 大核心优势
  • Dify 从入门到精通:低代码 AI 应用开发平台实战指南
  • Linux打印驱动终极解决方案:foo2zjs让50+打印机品牌在Linux上完美工作
  • 企业微信 JS-SDK 2.4.0 升级实战:从 wx.config 到 ww.register 的 3 步迁移