macOS Computer Use bootstrap lacks Node REPL privileged bridge
Summary
Computer Use is installed and enabled on macOS, but the Node REPL runtime exposed to a Codex Desktop task lacks the privileged Computer Use bridge. The bundled Computer Use wrapper therefore fails before it can load @oai/sky.
This is not an Accessibility or Screen Recording permission problem: the failure happens before the macOS helper receives a request.
Environment
- macOS 26.5.2 (25F84), Apple Silicon (arm64)
- Computer Use helper:
26.727.1000550(build1000550) - Codex CLI:
0.146.0-alpha.9.2
Expected behavior
With the bundled computer-use@openai-bundled plugin enabled, a fresh Codex Desktop task should expose the privileged Node REPL capabilities required by the Computer Use wrapper. sky.list_apps() should load the bundled client and proceed to the normal app-policy / consent flow.
Actual behavior
Bootstrap consistently fails in a fresh task with:
Computer Use could not load @oai/sky from the cua_node runtime
The configuration is present and points at the installed CUA runtime:
NODE_REPL_NODE_MODULE_DIRS = "/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules"
SKY_CUA_SERVICE_PATH = "/Users/<user>/.codex/computer-use/Codex Computer Use.app"
The expected @oai/sky macOS entrypoint exists at:
/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules/@oai/sky/dist/project/cua/sky_js/src/targets/mac/create_client.js
The local Computer Use installer reports installed. The standalone bundled MCP client also starts and advertises the normal tools (list_apps, get_app_state, click, keyboard/text actions, etc.).
However, from mcp__node_repl__js in the Codex Desktop task, the injected runtime is:
{
"exposedEnv": {},
"envFrozen": true,
"hasSky": false,
"nativePipe": "undefined",
"launchServices": "undefined",
"createElicitation": "undefined",
"withSuspendedTimeout": "undefined"
}
The Computer Use wrapper reads globalThis.nodeRepl.env.NODE_REPL_NODE_MODULE_DIRS; because that object is empty and immutable, it has no search roots and throws before importing the existing @oai/sky entrypoint.
Even if that first failure were bypassed, the missing nativePipe, launchServices, createElicitation, and withSuspendedTimeout capabilities would prevent the client from starting the service, connecting to its Unix socket, and presenting the consent flow.
Reproduction
- Install/enable the bundled Computer Use plugin on macOS.
- Confirm the local Computer Use installer reports
installed. - In a fresh Codex Desktop task, run the documented plugin bootstrap and call
sky.list_apps(). - Observe the bootstrap error above and the missing Node REPL capabilities.
Why this seems like a host/runtime wiring issue
The plugin files, CUA Node package, and macOS helper are all present. The failure is the gap between the configured MCP server environment and the Node REPL object made available to the task. It resembles the macOS host/backend-discovery failure in #20579, but this report is specific to Computer Use and includes the empty, frozen environment plus all missing privileged bridge APIs.
1 Comment
I can reproduce this on a newer macOS/Codex build. The failure still occurs before Computer Use reaches the target application.
Environment:
26.814.41407(bundle6720)codex-cli 0.148.0Darwin 25.5.0 arm64 arm1.0.1000633@oai/sky:0.6.1601a019b2-550b-70d3-b3dc-1fe43df7008aFollowing the bundled skill's documented bootstrap:
first fails with:
After supplying a temporary
globalThis.processshim solely to expose the next failure, the import succeeds, but a read-only call:fails with:
The injected object currently exposes only:
Both
nodeRepl.createElicitationandnodeRepl.withSuspendedTimeout, which the bundled@oai/skypolicy wrapper expects, are absent.nodeReplis non-extensible, so the missing hooks cannot be supplied by task code. This supports the original diagnosis: the bundled skill/runtime and the Node REPL host surface are version-skewed or incompletely wired.