Repository navigation
[Codex app][Windows] Chrome control fails without TUN; verified cua_repl launch.mjs proxy workaround #44364
Description
What version of the Codex App are you using?
Windows package version observed during diagnosis: 26.903.8094.0.
Bundled unified-computer-use / browser plugin version: 26.903.61454.
Bundled CUA Node runtime: v24.20.0.
What subscription do you have?
Not included; this report concerns local browser-control proxy handling.
What platform is your computer?
Windows 10 Pro for Workstations, x64, build 10.0.19045.
Chrome with the official Codex Chrome extension.
Local HTTP/mixed proxy: http://127.0.0.1:7890, provided by Clash Nyanpasu / mihomo.
What issue are you seeing?
Chrome control fails with TUN disabled even though the local proxy is running and Windows system proxy is configured. Turning TUN on restores browser operations. Turning it off reproduces the failure.
Before the workaround:
- Browser discovery can identify Chrome and its connected extension.
- Listing tabs, reading overall browser state, and opening a controlled tab fail with
nodeRepl.fetch/request failed. - The extension/native-host built-in diagnostics pass.
- Direct command-line HTTPS access to the browser identity endpoint fails with a connection reset, while access through the local HTTP proxy receives an HTTP response. This establishes transport reachability, not successful authentication.
The user reports that Chrome control previously worked without TUN, but we have not established the exact last working app version.
This overlaps with #42454 and #44135. The additional evidence here is a verified Windows workaround in the actual managed cua_repl process, followed by successful Chrome page operations after restarting the desktop app.
What steps can reproduce the bug?
- Use a Windows network where the relevant OpenAI endpoints require the local HTTP proxy.
- Keep the proxy running and Windows system proxy enabled; disable the proxy client's TUN mode.
- Start Codex Desktop with the official Chrome plugin and a connected Chrome extension.
- Ask Codex to inspect Chrome tabs or open and read a page.
- Observe
nodeRepl.fetch/request failed, despite successful browser discovery. - Enable TUN and repeat: browser operations work.
- Disable TUN and repeat: the failure returns.
What is the expected behavior?
Browser-control backend requests should be able to use an explicitly configured HTTP proxy without requiring TUN.
Please provide a documented, stable proxy/environment override for the generated plugin runtime that survives app restarts and plugin updates. The app should retain ownership of versioned executable paths while preserving explicit user proxy settings.
Additional information: verified temporary workaround
The installed plugin manifest starts node.exe with:
%USERPROFILE%\.codex\plugins\cache\openai-bundled\unified-computer-use\26.903.61454\scripts\launch.mjs
That script then spawns the executable named by CUA_REPL_NODE_REPL_PATH (the browser-control backend). This is a plugin backend launcher, not the desktop application's main executable.
At inspection time, the plugin's .mcp.json entry for cua_repl had env_vars: [] and no explicit proxy variables. This is an observation; the exact environment filtering/inheritance layer responsible has not been conclusively identified.
After backing up launch.mjs, we inserted these seven variables immediately after ...process.env, in the child spawn(..., { env: { ... } }) block, around line 52:
const child = spawn(executable, [], {
env: {
...process.env,
+ NODE_USE_ENV_PROXY: "1",
+ HTTP_PROXY: "http://127.0.0.1:7890",
+ HTTPS_PROXY: "http://127.0.0.1:7890",
+ http_proxy: "http://127.0.0.1:7890",
+ https_proxy: "http://127.0.0.1:7890",
+ NO_PROXY: "localhost,127.0.0.1,::1",
+ no_proxy: "localhost,127.0.0.1,::1",
NODE_REPL_TRUSTED_SERVICES: JSON.stringify({Then we fully exited and restarted Codex, keeping the local proxy running and TUN disabled.
Actual post-restart verification on September 10, 2026:
- The official Chrome tool successfully listed existing tabs.
- It opened
https://example.com/and read the page's accessibility content. - It clicked the visible “Learn more” link.
- It reached
https://www.iana.org/help/example-domainsand read the destination content. - It successfully closed the test tab.
This verifies actual Chrome control, beyond a standalone subprocess/environment probe. The patch also remained present after the app restart, and the bundled Node syntax check passed.
The proxy-only patch preserves the existing trusted-service configuration and does not change security/approval controls.
Limitations: This is a local workaround, not a proposed hardcoded upstream proxy. The port must match the user's running HTTP proxy. Plugin updates may overwrite the file or select a new version directory. If reapplying, back up the new version and add only the environment settings; do not replace the new launcher with an entire older file. To undo, remove the added settings or restore the matching-version backup.
An earlier edit to the legacy [mcp_servers.node_repl.env] configuration did not fix the current plugin runtime, and those additions were later absent after startup. We have not verified a durable config-only solution for this desktop build.
Related reports and workaround attribution
- [Codex app] Allow stable cua_repl env overrides instead of replacing generated config on startup #42454 — stable environment overrides for generated
cua_repl - Windows: Chrome control fails with nodeRepl.fetch request failed #44135 — Windows
nodeRepl.fetchfailure - Node helper fetch does not honor proxy settings #22623 — proxy/TUN-related browser helper failures
- The launcher-environment approach was adapted from the community workaround in Node helper fetch does not honor proxy settings #22623 (comment) and verified here on Windows.
If this belongs under an existing issue, this report's Windows reproduction and verification details can be consolidated there.
Activity
github-actions commentedon Sep 10, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
KNaiFen commentedon Sep 10, 2026
The same.
FanJw66 commentedon Sep 11, 2026
I found a working workaround for the same Windows problem.
The Chrome extension and native host were installed correctly. Codex could detect Chrome, but every real browser action failed with nodeRepl.fetch request failed.
The cause was that Codex’s browser-control process was not using my Clash Verge proxy (127.0.0.1:7897).
I fixed it by adding the proxy environment variables (NODE_USE_ENV_PROXY=1, HTTP_PROXY, HTTPS_PROXY, and NO_PROXY) to the active unified-computer-use .mcp.json file, then fully restarting Codex.
After that, Codex successfully listed tabs, read pages, clicked links, and entered text in Chrome.
This is a temporary workaround, not an official fix. Make sure to edit the configuration for the currently installed Codex version, because updates may replace the file. Do not treat an HTTP 403 connectivity response as proof that authentication succeeded.
JackHuang90 commentedon Sep 12, 2026
Update (September 12, 2026): launcher moved into the bundled runtime; adapted workaround verified
After another desktop update, the previous workaround stopped applying because the active launcher path changed, not just the plugin version directory.
In the installation inspected today:
unified-computer-useplugin directory is26.908.40834..mcp.jsonnow starts the bundlednode.exewith this entry point:unified-computer-use/<version>/scripts/launch.mjsfile is no longer present in this installation.env_vars: []and no explicitly configured proxy variables.v24.20.0;@oai/cua-replreports0.1.0, and@oai/browser-desktopreports0.1.1.Follow the entry point in the active manifest instead of assuming the old launcher path still applies. The plugin directory version alone was insufficient to identify the launcher layout here.
Reproduced before the new patch
Chrome discovery succeeded, but listing tabs failed with
nodeRepl.fetch request failed. The local mihomo proxy was listening on port 7890 and Windows system proxy was enabled.Using the same bundled Node runtime, a direct HTTPS probe failed with
ECONNRESET; the explicit-proxy probe received HTTP 403. The latter only establishes transport reachability, not successful authentication. The browser service also performs an identity request before completing browser initialization. These observations point to the backend proxy path, although the exact environment inheritance/filtering layer has not been conclusively identified.Adapted temporary workaround
Back up the actual
bin/cua-repl.mjsentry point named in the manifest. In this build, it imports@oai/cua-repland callsawait cua_repl.launch(). Insert the proxy environment settings after the import and before that launch call:The inspected
launch()implementation copiesprocess.envinto the spawned backend's environment. This places the proxy variables into the child process at startup, includingNODE_USE_ENV_PROXY. No trusted-service, approval, certificate-validation, or other security settings were changed.After applying the patch, fully exit and reopen Codex, keeping the local proxy running.
Verification
The syntax check passed. A separate launcher test confirmed that all seven settings reached a spawned child process; that test alone was not treated as proof of a browser fix.
After restarting Codex, actual operations through the official Chrome plugin also passed:
https://example.com/and read its accessibility content.https://www.iana.org/help/example-domainsand read its content.The earlier
nodeRepl.fetch request faileddid not recur during these checks.This is still a local workaround. Runtime/plugin updates can replace the patched file or select another runtime directory. Preserve the new version's launcher and add only the small environment block after checking its structure; do not copy an entire older launcher over a newer one. To undo, remove the added block or restore the matching backup.
A stable, documented user proxy/environment override would avoid repeated edits to either plugin-generated configuration or bundled runtime files after updates.
yizhaozhang11 commentedon Sep 14, 2026
Adding an independent Windows in-app browser verification of the September 12 workaround, tested September 14.
Environment: Windows MSIX
26.908.4834.0,unified-computer-use26.908.40834, bundled Nodev24.20.0.Before the change, a signed-in website worked manually in the in-app browser, but
cua.getState()repeatedly returned empty browser lists andnodeRepl.fetch request failedafter about 21 seconds. The GUI was explicitly configured to use a local HTTP proxy; a connection snapshot during reproduction showed the CUA backend making direct external port-443 connections/attempts instead.A separate, unauthenticated probe to the browser identity endpoint using the same bundled Node produced:
NODE_USE_ENV_PROXY=1The 403 establishes transport reachability only, not successful authentication.
After backing up the actual
bin/cua-repl.mjsentry point referenced by the active manifest, we applied the same seven environment settings from the linked comment, using the existing local proxy, and fully restarted the app.Actual post-restart verification: a connection snapshot showed 15 established TCP connections from the new CUA backend, all to the local proxy. Through the official CUA tool, browser discovery succeeded, an in-app tab opened the signed-in site, and its accessibility content was read successfully. The login session was preserved.
One remaining observation: the first post-restart attempt reported
Unable to load browser request-header policy. Retry the browser command.; retrying succeeded. No policy, trusted-service, or certificate checks were bypassed.This confirms the workaround for in-app-browser discovery/navigation/reading on this installation, beyond the Chrome verification above. A supported proxy/environment setting that survives runtime updates would help avoid patching bundled launchers.
Yy-9519 commentedon Sep 16, 2026
Windows Codex 无法控制 Chrome:代理修复记录
故障现象
Chrome 和 ChatGPT 扩展已安装,但 Codex 读取浏览器状态或列出标签页时,约 21 秒后报错:
本机定位结果
读取运行中进程的实际环境后发现:
.codex/.env已配置 HTTP/HTTPS 代理。node_repl没有收到。node_repl出现公网 443 连接持续处于SYN_SENT的情况。因此,本机问题定位在浏览器控制进程的代理环境传递上;具体是哪一层过滤或未传递变量,尚未完全确认。
修复方式
先备份当前版本实际使用的 CUA 启动文件,再在启动
node_repl的spawn(..., { env: ... })中加入:注意:
7897是本机 HTTP/mixed 代理端口,其他电脑应按实际端口调整。本机修改文件为:
不同版本的路径和文件名可能不同,不能直接照抄。
完成修改和语法检查后,完全退出并重启 Codex。
修复验证
重启后实际验证通过:
listTabs成功,耗时约 0.66 秒。https://example.com/成功。这验证了真实浏览器操作,不只是代理端口或独立网络探测通过。
为什么只在
.codex/.env加NODE_USE_ENV_PROXY=1没用?做过排除补丁干扰的对照测试:
.env中加入NODE_USE_ENV_PROXY=1。launch.js恢复原版。结果:
1浏览器再次在约 21.98 秒后报 fetch 错误。
所以,不能简单说这个变量“无效”:本机测试表明,它没有通过
.env传入需要它的浏览器控制进程。直接在启动子进程时注入代理环境,才是本次验证有效的方式。失败后已恢复之前有效的启动补丁和测试前的
.env。恢复后的文件仍需重启 Codex 才能生效。Codex 更新后的注意事项
这是临时绕过方案,不是官方持久配置接口。
Codex 更新可能覆盖补丁,或改用新的运行时目录,导致修复失效;不是每次更新都一定失效。
更新后若问题复现:
回滚时,恢复同版本的原文件备份,再重启 Codex。
参考
#44364 (comment)
该 issue 使用旧版本
launch.mjs;本机使用的是运行时包内的launch.js,应以实际启动链路为准。zxq520921-maker commentedon Sep 16, 2026
2026-9-26 The issue has been successfully resolved.
arthurx188-eng commentedon Sep 18, 2026
Additional confirmed Windows case (anonymized):
Environment:
Observed failure with TUN disabled:
nodeRepl.fetch request failedThere was also an initial Native Messaging registration problem:
%LOCALAPPDATA%\OpenAI\extension\com.openai.codexextension.jsonextension-host.exeexisted at the path referenced by the manifestHKCU\Software\Google\Chrome\NativeMessagingHosts\com.openai.codexextensionwas missingnodeRepl.fetch request failedFinal working result:
@chromesuccessfully listed all currently open Chrome tabsTurning on TUN was the decisive step for restoring the browser-control transport in this case. This provides another reproduction with v2rayN (not Clash) and shows that both the in-app browser and Chrome-backed browser control can be affected by the same proxy-routing issue.
railgun20001 commentedon Sep 18, 2026
Additional Windows recurrence after a desktop/runtime update, reported on September 18, 2026 with the user's authorization.
Environment:
Observed behavior:
nodeRepl.fetch request failedafter approximately 21 seconds.@oai/cua-repl/bin/cua-repl.mjsentry point has no proxy block.Recovery performed so far:
The update selected a new unpatched runtime, making the prior local workaround ineffective. Could maintainers provide a supported proxy/environment overlay that is merged before the managed CUA process starts and survives desktop/plugin/runtime updates? A version-specific source patch requires repeated manual maintenance. The configuration-watcher workaround discussed in #42454 also has a startup race and is not equivalent to a supported persistent override.
No credentials, private URLs, browser contents, account/task identifiers, raw logs, or user-specific filesystem paths are included.
Thymos2027 commentedon Sep 19, 2026
I can reproduce the same proxy-handling failure on a newer Windows build and Codex package.
Environment
10.0.2620026.915.3509.00.155.0-alpha.9127.0.0.1:7890(listener confirmed active)127.0.0.1:7890HTTP_PROXY,HTTPS_PROXY, andALL_PROXY: set tohttp://127.0.0.1:7890NO_PROXY: includeslocalhost,127.0.0.1,::1Reproduction
A minimal browser inventory call fails before any website navigation:
After approximately 21–22 seconds:
The stack ends in
Pipe.onStreamRead.The failure persisted after:
WinHTTP was reset to
Direct access (no proxy server)after the test. The first post-restartcua.getState()call failed identically from a newly created runtime temp directory, so this was not an old Node REPL process or stale kernel.This does not prove that the runtime is necessarily making a direct external connection—the failure happens during browser discovery, before navigation—but it does show that the standard Windows proxy paths and proxy environment variables did not resolve the Browser Use control-path failure in this configuration.
No private URLs, credentials, account identifiers, proxy node details, or session logs are included.
Hello-QM commentedon Sep 20, 2026
Verified Linux reproduction and proxy-only workaround (2026-09-20)
Adding a Linux case to this issue because the proxy-inheritance failure and successful workaround closely match the Windows reports above. This is a local workaround, not an official fix or a claim that every
nodeRepl.fetchfailure has the same cause.Environment
chatgpt 26.915.31945.codex-cli 0.155.0-alpha.9.2.v24.21.0.Failure and evidence
Chrome discovery could succeed, but tab enumeration and
cua.getState()failed after approximately 30 seconds withnodeRepl.fetch request failed. An empty browser list accompanied by this error was an inventory failure, not evidence that Chrome was closed.Read-only inspection of the running processes showed:
node_replbackend did not haveHTTP_PROXY,HTTPS_PROXY, orNODE_USE_ENV_PROXY.ETIMEDOUT; explicit use of the existing HTTP proxy returned HTTP 403 in about 1.3 seconds. The 403 proves transport reachability only, not successful authentication or browser control.Important failed attempt: generated plugin configuration
Adding proxy variables to the cached
unified-computer-use/<version>/.mcp.jsonwas not durable on this installation. After the desktop app restarted, the file matched its original contents again, and the new CUA backend still had no proxy environment. Editing that generated file alone did not fix the issue.Workaround that was actually verified
Resolve the active CUA entry point from the current plugin manifest/process arguments rather than assuming an old
scripts/launch.mjspath. On this Linux installation it was:Back up that exact current-version file first. Before its existing
await cua_repl.launch()call, add proxy defaults matching the already-running local HTTP proxy. The defaults below preserve explicitly supplied settings;7890is an example and must match the machine's actual proxy port.Keep the original imports, launch call, error handling, trusted-service configuration, surface selection, and permissions unchanged. This installation required administrator authorization to edit the system-owned entry point; file ownership/permissions were not loosened.
Then fully exit and reopen the desktop application. Closing a window or installing the patch while leaving the old background process alive is insufficient: we explicitly observed an older backend remaining alive without the new environment until the full restart.
Verification after the full restart
node_replbackend had both HTTP(S) proxy variables andNODE_USE_ENV_PROXY=1.cua.getState()call returned the real Chrome extension browser and its existing tab, without the previous fetch error.cua.listTabs({ browser: currentChromeId })returned the existing tab and title successfully in 581 ms. The browser ID was obtained from the live inventory, not hardcoded.This verifies recovery of browser discovery and tab/title reads on this machine. Navigation, clicking, form submission, and native desktop control were not tested in the final verification. It is not a claimed fix for every unrelated trusted-Node crash.
No extension reinstall, browser-profile reset, cookie deletion, sandbox disabling, certificate bypass, identity/request-header-policy patch, or permission expansion was needed. No new TUN/network-wide setting was introduced for this repair.
Limitations and upstream request
cua_replthat survives startup regeneration and updates, and diagnostics that distinguish backend proxy/identity-request failure from extension installation problems.This report intentionally omits account identifiers, private tab titles/URLs, local usernames/home paths, task IDs, credentials, screenshots, and raw logs. Related same-version symptom report: #46609; environment-overlay discussion: #42454.
zhenronghua commentedon Sep 22, 2026
After trying the above method, the problem still persists. Have any users successfully resolved the issue of nodeRepl.wait request failure
vaeccc commentedon Sep 28, 2026
Confirmed workaround on Windows with FlClash / Codex Desktop 26.924.2738.0.
Environment:
Symptoms:
chrome.tabs.list()with:I also confirmed that proxy environment variables added manually were not a durable fix in this build: the Desktop startup reconciliation rewrote the relevant Node REPL proxy allowlist, so the Browser Use/CUA child process did not reliably inherit the proxy settings.
What fixed it:
After enabling FlClash's virtual network adapter / TUN mode and restarting Chrome + Codex, Chrome Browser Use started working and the
nodeRepl.fetch request failederror disappeared.This suggests that, at least on this setup, TUN works because Browser Use traffic is routed at the system/network layer instead of depending on the CUA/node_repl child process inheriting
HTTP_PROXY/HTTPS_PROXY.This does not imply every
nodeRepl.fetch request failedhas the same cause, but for Windows users running Clash/FlClash it is worth testing TUN before modifying the MSIX/app.asar or reinstalling Windows.kyee179 commentedon Sep 29, 2026
Verified follow-up: newer Windows builds use
cua-repl.mjs, notlaunch.mjsI reproduced and fixed the same proxy-handling failure on a newer Codex Desktop/browser-plugin layout. This follow-up documents the changed launcher structure and a minimal workaround without publishing machine-specific configuration.
Symptom
Before modification, the live controller returned:
Browser inventory/control was unavailable even though Codex, Chrome, the official extension, and an existing local HTTP/mixed proxy were running.
Evidence and root cause
The diagnostic chain was:
fetch()using Codex's bundled Node runtime failed withTypeError.nodeRepl.fetch request failed.This isolates the failure to proxy configuration for the managed Node/NodeREPL transport, rather than Chrome discovery or the native extension connection.
Packaging difference in the newer build
This build no longer contains the earlier versioned
scripts/launch.mjs.The generated plugin manifest launches the bundled Node executable with:
The installed
@oai/cua-replimplementation subsequently spawns the executable fromCUA_REPL_NODE_REPL_PATHand copiesprocess.envinto the child's environment.Minimal workaround for this launcher layout
First, create a matching-version backup beside
cua-repl.mjs. Then add the following immediately after the import and beforecua_repl.launch(), replacing the placeholder with the existing local HTTP/mixed proxy URL:Why this works: the wrapper sets the variables before spawning
node_repl.exe, so the new child seesNODE_USE_ENV_PROXY=1at process startup. Setting that variable later inside an already-running Node process did not make that process's globalfetch()begin using the proxy.I restored the generated plugin
.mcp.jsonto its original bytes afterward, leaving only the small launcher addition. This avoids relying on edits to generated manifest data.End-to-end validation
After the controller reloaded:
nodeRepl.fetch.node --check cua-repl.mjspassed.This verifies actual Codex-to-Chrome control, not merely a standalone network probe.
Rollback and limitations
Suggested upstream fix
Please provide one of:
Original prompt used for the investigation
JackHuang90 commentedon Sep 30, 2026
Update (September 30, 2026): project-scoped proxy configuration verified on the native
node_repl.exelayoutOn my current Windows installation, Chrome control now works after a full Codex restart using a project-level configuration override, without patching the active launcher/runtime source for this repair. This supersedes my earlier launcher-edit instructions for the specific layout described below.
Versions actually tested
OpenAI.Codex26.928.1915.0BROWSER_USE_CODEX_APP_VERSION26.928.20755v24.21.0node_repl, directly launching the bundlednode_repl.exeThe desktop package version and Browser plugin version are different identifiers. I have verified this combination only, not an entire version range.
Why the older workaround stopped applying
In this installation, the active MCP definition launches:
The old
launch.mjs/cua-repl.mjswrapper is no longer the active entry point for this server, so editing that older wrapper does not affect the current browser-control process.Adding the proxy entries directly under
[mcp_servers.node_repl.env]in the user-level%USERPROFILE%\.codex\config.tomlwas also insufficient here: they were absent after desktop startup regenerated the managed server configuration, and browser control still failed.Configuration-only workaround
In the trusted project/task directory used by the Codex conversation, create or edit:
Merge this section into the existing file; do not replace unrelated project settings or create a duplicate TOML table:
Replace
7890with the actual port of your running HTTP/mixed proxy. Keep the existing project trust and MCP security settings.The project override contains only environment settings. It leaves the executable path, Node path, and browser-service paths under desktop management, so it does not pin the server to an older runtime/plugin version.
Keep the proxy running, fully exit Codex including background processes, then reopen the conversation in that same project directory.
Verification after restart
codex mcp get node_repl --jsonfrom the project directory showed the merged proxy settings alongside the current desktop-managed executable/browser settings. This verifies effective configuration, not an independent inspection of the live process environment.https://example.com/, and read its accessibility content.https://www.iana.org/help/example-domains, and read the destination content.Scope, updates, and rollback
node_replconfiguration from the same project directory and repeat real Chrome navigation/reading/clicking. If the server name or startup architecture changes, reassess the active configuration instead of copying an older launcher over new files.Please document whether project-scoped environment overrides for this managed server are supported, and provide a persistent user-level proxy override that desktop startup preserves for conversations across projects.
hardstuding commentedon Sep 30, 2026
Additional root-cause details from a Windows repro (Codex desktop 26.928.1915.0, cua-node runtime 0.0.27, unified-computer-use 26.928.20755; same behavior on 26.924):
node_repl.exeitself (authenticated_fetch.rs, reqwest).codex.exeincludes a Windows system-proxy fallback (it readsInternet Settings\ProxyServer; its logs showsystem_proxy_fallback: true), butnode_repl.execontains no Windows system-proxy lookup, so it only honorsHTTP(S)_PROXYenvironment variables.cua_repl's env in the plugin's.mcp.jsonon every launch, and writesmcp_servers.node_replwith mergeStrategyreplace. Plugin MCP overrides inconfig.tomlaccept only enabled/tools-style fields, so a user cannot addenvorenv_varspersistently.nodeRepl.fetch request failed. The in-app browser keeps working.curl --noproxy '*' https://chatgpt.comtimes out at 21.05 s; through the local proxy it responds in under 1 s.cua_repldirectly over MCP stdio withcua.getState(): without proxy variables it always fails withnodeRepl.fetch request failed(every Chrome attempt in my session logs since 2026-09-09 failed this way). WithHTTPS_PROXYset, Chrome (extension) was discovered in 7 of 12 fresh sessions; every remaining failure was the Statsig timeout in item 5. Setting the variables in%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\<hash>\bin\node_modules\@oai\cua-repl\bin\cua-repl.mjsworks, but the runtime directory is replaced on update (here on 2026-09-27 and again on 2026-09-30), so the fix is lost.ab.chatgpt.com/v1/initialize(uncompressed even withAccept-Encoding: gzip) with a 10 s timeout. On slower links it fails withUnable to load browser request-header policy. Timed-out requests do not appear to be aborted on the host side (connections kept downloading for 30–48 s after the timeout), so retries in the same kernel compete for bandwidth and keep failing.Suggested fixes: give
node_replthe same proxy resolution ascodex.exe(environment variables plus the Windows system proxy), or forwardHTTP(S)_PROXY/NO_PROXYinto MCP server environments; allow a persistent user override for plugin MCP env; and make the Statsig initialization timeout and abort behavior tolerant of slow links.Related: #22623, #23504, #46386.
swei99386-alt commentedon Sep 30, 2026
Confirming on Windows 11, Codex desktop
26.928.1915.0/unified-computer-use26.928.20755, Clash Verge on127.0.0.1:7897, TUN off — same root cause as @hardstuding describes above. On this machine the active Chrome path is stillcua_repl(the generatednode_replentry has its browser/Chrome instructions blanked), so a project-level[mcp_servers.node_repl.env]override does not reach it.Two additions that may help whoever fixes this:
code-reviewplugin's MCP env includesHTTP_PROXY,HTTPS_PROXY,ALL_PROXY,NO_PROXY,SSL_CERT_FILE,NODE_EXTRA_CA_CERTS. Doing the same for the generatednode_repl/cua_replenv_vars(currently only["CODEX_WINDOWS_REGISTERED_CORE"]) would fix this.node_repl.exewith a minimal trusted service callingnodeRepl.fetch("https://chatgpt.com/backend-api/aura/identity")fails withnodeRepl.fetch request failedafter 21.27 s without the variables, and returns 200 in 0.57 s with them.Config-only workaround that doesn't touch runtime files (lost on every desktop restart; re-apply, then open a new chat): append
"HTTP_PROXY", "HTTPS_PROXY", "ALL_PROXY", "NO_PROXY"toenv_varsofcua_replin%USERPROFILE%\.codex\plugins\cache\openai-bundled\unified-computer-use\<version>\.mcp.json. Don't put anenvtable under[mcp_servers.cua_repl]inconfig.tomlinstead — Codex then fails to load its config (invalid transport).Hyacehila commentedon Oct 1, 2026
Confirmed another Windows recurrence and recovery on October 1, 2026: desktop AppX
26.928.3736.0, unified-computer-use26.928.31416, bundled Nodev24.21.0, with the existing HTTP proxy running and Clash TUN disabled.The update selected a new runtime whose active
@oai/cua-repl/bin/cua-repl.mjsentry lacked the previous proxy workaround. Before repair, official browser inventory failed withnodeRepl.fetch request failedafter 21.53 seconds. After backing up that matching-version entry, reapplying only the proxy environment block, and a user-reported desktop restart, Chrome inventory succeeded. We then opened the public Example Domain page through the official Chrome extension, read its accessibility content, and successfully closed the test tab.This installation still uses the
cua_replwrapper path; we have not tested the project-level override reported for the directnode_repl.exelayout. Recovery here was after patch plus restart; a stock-entry restart control has not been performed, so restart alone has not been ruled out.Full measurements, three-repeat launcher controls, and limitations are in the evidence comment on #42454. The launcher controls show that the stock launcher can forward proxy settings when explicitly supplied, so they do not prove that
launch()itself discards them.A supported proxy configuration that survives runtime updates is still needed.
JackHuang90 commentedon Oct 3, 2026
Update — October 3, 2026: recovery confirmed; proxy settings must cover both browser MCP paths
Chrome control is usable again after applying the workaround below. The post-repair recovery was confirmed by the affected user. This installation exposes both the newer direct
node_replBrowser tool and the legacycua_repltool; configuring only one leaves conversations using the other path failing.Versions inspected
26.930.3748.026.930.314280.160.0v24.21.032a57e0f41f3a96ahttp://127.0.0.1:7890These findings apply to the inspected installation; the runtime directory is not a stable path across updates.
Why some conversations still failed
The legacy tool reproduced:
Chrome discovery worked, but tab retrieval failed. The active unified-computer-use manifest started
node.exewith@oai/cua-repl/bin/cua-repl.mjs. Itsenv_varscontained onlyCODEX_WINDOWS_REGISTERED_CORE, and its explicit environment had no proxy settings. The current launcher also lacked the proxy block.Meanwhile, the newer direct
node_replBrowser tool successfully opened a page, read its accessibility content, clicked a link, reached the destination, and closed the test tab. Both outcomes occurred in the same diagnostic conversation. A global[mcp_servers.node_repl.env]override therefore did not cover the separately launched legacycua_replbackend.The inspected legacy
launch()implementation copiesprocess.envinto its child backend environment. This is an omitted proxy configuration on that startup path, not evidence thatlaunch()itself strips proxy variables.Workaround A: direct
node_replpath, shared across projectsOn this installation, the bundled CLI reads system configuration from:
With administrator privileges, merge the following into that file, preserving existing configuration:
The system-config path was checked against the matching CLI release's configuration loader. Effective
node_replconfiguration included these settings from six registered project directories and a directory with no project override. This checks configuration merging; it does not independently prove real browser operations in every project. The diagnostic project also retained its earlier project-level override.This leaves executable/runtime/browser-service paths under Desktop management. It does not require copying those versioned paths into the system configuration.
Workaround B: legacy
cua_replpathFollow the entry point in the active unified-computer-use
.mcp.json, then back up that matching-version launcher. In the inspected build, it is:Insert only this block after
import * as cua_repl from "@oai/cua-repl";and before the existingtry/await cua_repl.launch():Keep the original launch and error-handling code. The syntax check passed, a child-process probe verified inheritance of all seven settings, and comparison with the backup confirmed that only this block was added. The affected user subsequently confirmed Chrome control works.
Use your own running HTTP/mixed proxy port. Fully exit and restart Codex so existing MCP processes pick up the changes; resetting just the JavaScript tool session does not restart the launcher.
Scope and updates
A supported persistent proxy override for both managed backend paths would avoid repeated runtime edits and differences between conversations.