Skip to content

[Bug]: Codex 26.715.10079.0 owl runtime 移除了 --remote-debugging-port 支持,CDP 注入完全失效 #235

Description

@liumiantang

Platform / 平台

Windows

OS version / 系统版本

Windows 11

CPU / 架构

Windows x64

Codex Desktop version / source / Codex 桌面版版本或来源

Codex 桌面应用版本 | 26.715.10079.0

Dream Skin version / 皮肤工具版本

1.3.3

Problem category / 问题类型

Skin not applied / 启动后无皮肤

Self-check / 自检

  • Ran Verify / doctor (or Windows verify script) / 已运行 Verify 或 doctor
  • Tried Restore, then re-apply / 已尝试完全恢复后再应用
  • Official Codex still opens without the skin tools / 不用皮肤工具时官方 Codex 仍可正常打开
  • Searched existing issues / 已搜索现有 Issue

Steps to reproduce / 复现步骤

问题描述

Codex 从 26.715.9757.0 自动更新到 26.715.10079.0 后,Dream Skin 彻底失效。

现象:

  • 点击 Dream Skin 快捷方式能启动 Codex 窗口
  • 但系统托盘显示 Dream Skin 状态为"未运行"
  • 端口 9335 从未被监听
  • injector.log 显示注入器从未启动
  • injector-error.log 显示 original CDP browser identity closed; watcher is stopping instead of reconnecting

根因分析

1. 旧版本 vs 新版本的行为变化

旧版本 (26.715.9757.0):
IApplicationActivationManager::ActivateApplication 传入的 --remote-debugging-port=9335 能正确传递给 ChatGPT.exe 的 Chromium/Electron 进程,端口正常打开,CDP 注入成功。

新版本 (26.715.10079.0):
同样的 COM 调用,参数被 owl runtime 转换成了 Codex 自定义协议 URL:

"C:\Program Files\WindowsApps\OpenAI.Codex_26.715.10079.0_x64__2p2nqsd0c76g0\app\ChatGPT.exe"
  codex://threads/new?path=--remote-debugging-port%3D9335

可以看到 --remote-debugging-port=9335 被 URL 编码后(%3D)塞进了 codex:// 协议处理器的 path 参数里,而不再作为 Chromium 命令行 flag 传递给底层进程。因此 owl runtime 永远不会开启 CDP 调试端口。

2. 已尝试的所有绕过方案(全部失败)

方法 命令/操作 结果
COM 激活传参 IApplicationActivationManager + --remote-debugging-port=9335 参数被 URL 编码到 codex:// 协议,忽略
CLI 直接传参 codex app -- --remote-debugging-port=9335 --remote-debugging-port 被当作工作区路径,而非 flag
CLI feature flag codex app --enable devtools Error: Unknown feature flag: devtools
CLI feature flag codex app --enable debug Error: Unknown feature flag: debug
环境变量 ELECTRON_REMOTE_DEBUGGING_PORT=9335 codex app owl runtime 不读取此环境变量
Pipe 调试 codex app -- --remote-debugging-pipe 同样被当作工作区路径
修改偏好文件 尝试修改 owl runtime 的 Preferences 文件 AppData\Roaming\Codex\web\Codex\ 目录在进程外不可访问(沙箱隔离)
重新安装 Codex 通过 Windows Store 重装 Store 只提供最新版 26.715.10079.0,无法降级

3. owl runtime 的 feature flags

从运行中进程的命令行可以提取到 owl runtime 的 feature 列表:

启用的 features:

OwlAuth, OwlAutofillAndPasswords, OwlDownloads, OwlPermissions,
OwlPrinting, OwlWebViewEnhancements

禁用的 features:

DropInputEventsWhilePaintHolding, OwlExtensions, OwlHistory, OwlOpenAIGoLinks

其中没有与 CDP、DevTools、或远程调试相关的 feature flag。这意味着 CDP 支持可能在编译时就被完全移除了,而不是通过 feature flag 动态控制。

Expected behavior / 期望结果

主题应用成功

Actual behavior / 实际结果

显示主题根本未运行,codex界面无变化

Modified official Codex install? / 是否改过官方 Codex 安装?

No — official app only / 否,仅官方安装

Logs / Verify / doctor output(recommended)/ 日志与校验输出(强烈建议)

日志输出

%LOCALAPPDATA%\CodexDreamSkin\injector.log

[dream-skin] injected target D3BE468D5DC3D400F61A49EEEA540501
[dream-skin] active theme custom
[dream-skin] paused
[dream-skin] active theme preset-gothic-void-crusade
[dream-skin] paused

说明:第 1-2 行为旧版本上成功注入的自定义主题记录。第 3-5 行为问题发生后尝试切换主题的记录——每次都是 paused,之后再也没有成功注入。

%LOCALAPPDATA%\CodexDreamSkin\injector-error.log

[dream-skin] original CDP browser identity closed; watcher is stopping instead of reconnecting

说明:Codex 自动更新后进程重启,CDP 浏览器身份标识发生变化,watcher 检测到身份不匹配后主动停止(这是 injector.mjs 的安全机制——防止注入到错误的浏览器实例)。但此后由于新版 Codex 不再开启 CDP 端口,watcher 再也无法重新连接,持续处于"未运行"状态。

%LOCALAPPDATA%\CodexDreamSkin\state.json

(文件不存在 —— 故障排查过程中已被删除,但问题与此无关)

Codex 主进程命令行(运行中进程的实际参数)

"C:\Program Files\WindowsApps\OpenAI.Codex_26.715.10079.0_x64__2p2nqsd0c76g0\app\ChatGPT.exe"
  codex://threads/new?path=--remote-debugging-port%3D9335

关键证据:--remote-debugging-port=9335 被 URL 编码后作为 codex:// 协议的 query 参数传递,而非 Chromium 命令行 flag。

Codex CLI doctor 输出(节选)

Codex Doctor v0.145.0-alpha.30 · windows-x86_64
  ✓ runtime      version 0.145.0-alpha.30
  ✓ system       Windows 10.0.26200 (Windows 11 CoreCountrySpecific) [64-bit]
  ✓ config       model: deepseek-v4-pro · custom
  ○ app-server   not running (ephemeral mode)

端口验证

netstat -ano | grep 9335
→ (无任何输出 —— 端口从未被监听)

verify.log(旧版本上最后一次成功验证的快照)

{
  "mode": "verify",
  "port": 9335,
  "targets": [{
    "targetId": "D3BE468D5DC3D400F61A49EEEA540501",
    "result": {
      "installed": true,
      "version": "1.3.3",
      "expectedVersion": "1.3.3",
      "themeId": "preset-gothic-void-crusade",
      "revision": "597663c260909c6e6b5a",
      "styleMode": "adopted",
      "stylePresent": true,
      "pass": true
    }
  }]
}

说明:旧版本上 Dream Skin 1.3.3 运行正常,CSS 注入成功(stylePresent: true),验证通过(pass: true)。

Screenshots / video / 截图或录屏

No response

Extra context / 其他信息

菜单栏 / 系统托盘

已安装 tray-dream-skin.ps1,在桌面和开始菜单均有快捷方式(Codex Dream Skin - Tray.lnk)。旧版本上托盘正常工作,更新后托盘显示主题状态为"未运行"。

暂停状态

是,主题曾两次被暂停。injector.log 完整时间线:

事件 说明
1 injected target D3BE... 旧版本上"德鲁纳"自定义主题成功注入
2 active theme custom 使用自定义主题(德鲁纳)
3 paused 第一次暂停
4 active theme preset-gothic-void-crusade 切回默认 Gothic Void Crusade 预设
5 paused 第二次暂停(此时 Codex 已自动更新)

暂停后尝试恢复时,injector 因 CDP 浏览器身份变更停止(见 injector-error.log),之后再也无法重连。

CDP 端口占用

端口 9335 当前没有任何进程监听,也未被其他程序占用。不是端口冲突问题,而是新版 Codex 根本没有开启 CDP 服务。

补充信息

  • Dream Skin 安装路径:C:\codex\CodexDreamSkin
  • 主题文件完整且配置正确(%LOCALAPPDATA%\CodexDreamSkin\active-theme\theme.json),排除了主题配置问题
  • 在旧版本上 Dream Skin 曾正常工作(injector.log 第 1 行有成功注入记录)
  • Codex 的 config.toml 中无可用于启用调试的配置项

Confirmation / 确认

  • I did not paste API keys or secrets / 我未粘贴 API Key 或其它密钥
  • I understand this is an unofficial theme tool (loopback CDP only) / 我理解这是非官方换肤工具(仅本机 CDP)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions