解决windows版codex内置browser闪退问题
前言
最近用windows版codex时遇到了一个很奇怪的问题
普通的网页预览、看看设计页面一直都没事,但只要让codex开始填写输入框、点击按钮或者提交表单,整个软件就会突然退出
同时打开几个browser标签时更容易复现,基本是一操作就闪退
我用的是自定义base url和api key,任务记录也都在本地,所以一开始没敢直接卸载重装,只能慢慢排查
折腾了一圈,最后发现和网页、api key都没什么关系,真正出问题的是内置chromium的GPU子进程
| 项目 | 当时的环境 |
|---|---|
| 系统 | windows 11 |
| codex桌面版 | 26.721.4979.0 |
| 内置chromium | 150.0.7871.128 |
| 认证方式 | 自定义base url + api key |
问题
最开始只是让codex打开一个本地网页看设计效果,预览一直很正常,所以当时完全没有怀疑内置browser
后来开始让它操作页面,问题才慢慢出现:
- 普通预览正常
- 填写内容时偶尔退出
- 点击提交后更容易退出
- 多标签操作基本稳定复现
更奇怪的是,codex退出以后偶尔还会自动启动
看起来和原来一样,但之前手动加的启动参数不一定还在,中间就出现过一次“好像修好了,重新打开又闪退的情况
普通预览没问题,不代表browser操作也没问题
备份
因为没有使用chatgpt账号同步任务,我最担心的还是本地记录
当时在这台电脑上实际确认到的codex目录是:
C:\Users\Administrator\.codex
里面的sessions、archived_sessions、config.toml和state_5.sqlite都还在,本地任务没有丢
我没有直接重装,而是先完整退出codex,做了一份恢复备份,实际路径是:
C:\Users\Administrator\Documents\Codex\Codex-recovery-20260726-215856
备份里除了.codex,还有OpenAI.Codex-package-data和一份recovery-manifest.json,确认这些内容都存在以后才继续折腾
官方文档也有说明:codex配置和状态位置
缓存问题吗?
第一反应还是比较常见的GPU和缓存问题
我先清理了chromium的GPU缓存和着色器缓存,又关闭了硬件加速
第一次重启实际使用的是下面这些参数:
2026-07-26 22:44:50 Starting Codex with arguments: --disable-gpu --disable-gpu-compositing --disable-software-rasterizer --disable-features=Vulkan
结果普通预览确实稳定了一点,但只要重新开始填表、提交或者多标签操作,codex还是会退出
有用,但不多
后来才知道,关闭硬件加速并不代表chromium不会创建GPU子进程,它还是可能走软件渲染
查看日志
browser后端本身其实启动成功了:
browser_use_iab_backend_startup_ready
继续往后看,真正关键的是下面两段:
Recoverable Chromium child process gone
processType=GPU
reason=crashed
exitCode=101457950
Recoverable Chromium child process gone
processType=GPU
reason=launch-failed
exitCode=18
GPU子进程先崩溃,随后重新启动也失败了
当时它实际使用的是:
--use-gl=angle
--use-angle=d3d11-warp-webgl
d3d11-warp-webgl是windows的D3D11 WARP软件渲染路径
到这里基本能确定,闪退不是网页表单、本地历史、base url或者api key直接造成的,而是内置chromium的GPU子进程,在网页操作和多标签负载下崩了
普通预览负载比较低,所以一直看起来没事。开始填写、点击和提交以后,问题才被真正触发出来
换成swiftshader
确认D3D11 WARP这条路径有问题以后,我把ANGLE后端换成了swiftshader
最后使用的参数:
--disable-gpu
--disable-gpu-compositing
--use-angle=swiftshader
--enable-unsafe-swiftshader
--disable-features=Vulkan
这里还踩了一个小坑
关闭窗口并不一定会结束进程,它可能还留在右下角托盘。旧进程没有完全退出时,新参数实际上不会进入主进程
我当时没有在powershell里逐行输入启动命令,而是在codex弹出的权限确认里点了允许
执行了
$script = 'C:\Users\Administrator\Documents\Codex\2026-07-26\new-chat\outputs\launch-codex-browser-safe.ps1'; Start-Process -FilePath 'powershell.exe' -Verb RunAs -WindowStyle Hidden -ArgumentList @('-NoProfile','-ExecutionPolicy','Bypass','-File',$script)
第一次执行时我没看到提示,不确定有没有运行,所以又手动打开了一次
后来codex退出后确实自动启动了,状态日志里的结果是:
2026-07-26 23:55:36 Starting Codex with arguments: --disable-gpu --disable-gpu-compositing --use-angle=swiftshader --enable-unsafe-swiftshader --disable-features=Vulkan
2026-07-26 23:55:49 Safe browser launcher verified the main process. Activating the Codex window.
2026-07-26 23:55:54 Safe browser launcher completed. Codex is open with verified Chromium flags.
确认参数生效
启动脚本自己检查了主进程和GPU子进程,原来的:
--use-angle=d3d11-warp-webgl
已经变成:
--use-angle=swiftshader
日志里记录的GPU进程是PID 8572,命令行里确实带有--use-angle=swiftshader和--enable-unsafe-swiftshader
到这里才算真的生效,不是只看见codex窗口重新打开而已
实际测试
我先用一个本地表单跑了一遍填写、选择和提交,整个过程正常完成,codex没有退出
随后又同时打开三个内置browser标签,在每个标签里完成填写和提交
最后确认三个标签都提交成功,codex主进程持续存活,GPU子进程继续使用swiftshader,日志里也没有再出现新的GPU crashed和GPU launch-failed
之前最容易触发闪退的操作都能正常完成,问题大概是解决了
两个小插曲
api key模式下的401
排查时还看到过下面这条日志:
desktop_fetch_auth_401
hadToken=false
target=https://chatgpt.com/backend-api/settings/user
一开始还以为是api key或者base url的问题,后来发现api key并不等于chatgpt网页的登录令牌
这次browser后端已经正常启动,换成swiftshader以后网页操作也恢复了,所以这个401只是刚好同时出现,并不是闪退原因
火绒发力了
为了以后启动方便,中间还做过一个隐藏powershell窗口的.lnk快捷方式,结果被火绒识别成了:
HEUR:Trojan/LNK.Agent.b
看了一下隔离记录,被拦下的正是刚创建的桌面和开始菜单快捷方式
被隔离的只是快捷方式,不是codex历史记录,也不是api key,我没有恢复它,最后换成了内容透明的.cmd入口
结尾
这次一开始看起来像是网页操作或者api key的问题,实际上是内置chromium在D3D11 WARP路径下的GPU子进程崩溃
整个过程大概是:
普通网页预览正常
↓
填表和多标签操作触发闪退
↓
清理缓存和关闭硬件加速没有完全解决
↓
日志发现GPU crashed和launch-failed
↓
确认使用d3d11-warp-webgl
↓
完全退出codex并切换到swiftshader
↓
单标签和三标签测试全部正常
解决问题同时也确认了两件事:本地任务主要保存在.codex里,提前备份以后不用急着重装;api key模式下出现chatgpt接口401,也不一定和browser闪退有关