[macOS 26.908.40834] New sessions fail to initialize unified-computer-use due to stale CUA plugin cache
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.908.40834 (bundle build 8881)
What subscription do you have?
ChatGPT Pro
What platform is your computer?
Darwin 25.5.0 arm64 arm
What issue are you seeing?
New Codex Desktop sessions expose the bundled unified-computer-use / cua_repl tool, but the tool cannot initialize browser control.
The initial call:
await cua.getState();
fails with:
CUA_REPL_ENABLED_SURFACES is required
After locally forwarding and allowlisting that variable, initialization proceeds further but fails with:
setupCUA is not a function
The materialized plugin cache is version 26.901.51231, while Codex Desktop is 26.908.40834. The cached launcher and bootstrap banners are older than, and incompatible with, the CUA/NodeREPL runtime bundled with the current app.
This is a Codex Desktop bundled-plugin materialization/runtime compatibility issue, not a page-specific browser failure. An older or forked session whose CUA process was already initialized can still access the browser, while newly created sessions fail during bootstrap.
What steps can reproduce the bug?
-
Enable the bundled Browser, Chrome, Computer Use, and Unified Computer Use plugins.
-
Fully quit and reopen Codex Desktop.
-
Create a new session.
-
Enter a prompt such as:
Connect to the browser and list the open tabs. -
The session invokes:
await cua.getState(); -
The call fails with:
CUA_REPL_ENABLED_SURFACES is required -
Call
js_reset, then retryawait cua.getState(). -
The same error remains because
js_resetdoes not restart the MCP process or change its startup environment. -
If
CUA_REPL_ENABLED_SURFACESis locally added toNODE_REPL_UNTRUSTED_ENV_ALLOWLIST, restart Codex and repeat the test. -
Initialization then reaches the stale bootstrap banner and fails with:
setupCUA is not a function
The materialized .mcp.json already contains:
"CUA_REPL_ENABLED_SURFACES": "browser,computer"
However, the cached scripts/launch.mjs does not expose it through the filtered globalThis.nodeRepl.env snapshot. The cached resources/banner*.js files also call the removed API:
(await import("@oai/cua/tinyskyAlt")).setupCUA(...)
The launcher and banner bundled with the current @oai/cua-repl runtime instead forward/allowlist the environment variable and use:
await import("@oai/cua/tinyskyAlt");
Session ID is intentionally redacted from the public report and can be provided privately if required. Token-limit and context-window usage do not appear relevant because the failure occurs inside CUA bootstrap before browser interaction.
What is the expected behavior?
Codex Desktop should materialize unified-computer-use launcher and bootstrap resources that match the CUA/NodeREPL runtime bundled with the same application version.
In a newly created session, this call should initialize successfully:
await cua.getState();
It should return the available browsers, tabs, and computer surfaces without requiring users to patch plugin cache files. js_reset should also be able to rerun a compatible bootstrap banner.
Additional information
Environment:
- macOS on Apple Silicon (
arm64) - Codex Desktop
26.908.40834, bundle build8881 - Materialized
unified-computer-use@openai-bundledcache:26.901.51231 - Node
24.20.0 @oai/cua0.2.4@oai/cua-repl0.1.0- The first failure was observed in sessions using Codex CLI
0.153.4and0.154.0-alpha.6.2
Verified not to be the cause:
- Browser, Chrome, Computer Use, and Unified Computer Use plugins are enabled.
- The materialized
.mcp.jsoncontainsCUA_REPL_ENABLED_SURFACES="browser,computer". - The Chrome native-host configuration exists.
- Browser access and permissions work in an older/forked session whose CUA process was already initialized.
- Multiple newly created sessions reproduced the failure.
- The failure occurs before any page-specific browser action.
Local workaround that resolved both initialization errors:
-
Forward
CUA_REPL_ENABLED_SURFACESto the NodeREPL child and append it toNODE_REPL_UNTRUSTED_ENV_ALLOWLIST. -
Replace all three materialized
banner*.jsfiles with the current runtime banner:await import("@oai/cua/tinyskyAlt"); -
Apply the same changes to the bundled-marketplace source so cache rematerialization does not immediately restore the stale files.
-
Fully restart Codex Desktop and test from a new session.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing unified-computer-use materialization and compare the cached scripts/launch.mjs and resources/banner*.js with the current @oai/cua-repl runtime. Check the generated .mcp.json and the NodeREPL environment handling first. Done means a newly created session can run cua.getState() successfully after cache rematerialization without editing plugin files.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js, rust
- Domain
- desktop, devtools, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100