Computer Use is unusable in `codex-cli 0.145.0-alpha.18`: `js_repl` removed while `computer_use` still marked `stable`
What version of the Codex App are you using (From “About Codex” dialog)?
26.715.31925
What subscription do you have?
codex app computer use
What platform is your computer?
_No response_
What issue are you seeing?
Computer Use is unusable in codex-cli 0.145.0-alpha.18: js_repl removed while computer_use still marked stable
Summary
In codex-cli 0.145.0-alpha.18, the js_repl feature is reported as stage = removed, while computer_use is reported as stage = stable. The computer-use@openai-bundled plugin's only documented entry point (mcp__node_repl__js + setupComputerUseRuntime) depends on js_repl. Because removed short-circuits before the user-level features.js_repl config is consulted, Computer Use cannot be re-enabled from user config in this build, even though the manifest claims it is enabled.
This produces a manifest-vs-runtime contradiction: a feature marked stable true cannot actually be used in any Codex desktop thread on this version.
Environment
| Component | Version |
| --- | --- |
| Codex CLI | codex-cli 0.145.0-alpha.18 |
| Codex desktop AppX | OpenAI.Codex_26.715.31925.0_x64__2p2nqsd0c76g0 (installed via WindowsApps) |
| Computer-use plugin | computer-use@openai-bundled v26.715.31925 |
| cua_node runtime | cua_node\03b1cdac8af3a530\bin |
| OS | Windows 11 10.0.22631 |
Confirmed configuration in ~/.codex/config.toml:
[plugins."computer-use@openai-bundled"]
enabled = true
[mcp_servers.node_repl]
command = ''C:\Users\DAP\AppData\Local\OpenAI\Codex\runtimes\cua_node\03b1cdac8af3a530\bin\node_repl.exe''
startup_timeout_sec = 120
[mcp_servers.node_repl.env]
SKY_CUA_NATIVE_PIPE = "1"
SKY_CUA_NATIVE_PIPE_DIRECTORY = ''\\.\pipe\codex-computer-use-<session-guid>''
Runtime state:
- 4
node_repl.exeprocesses are running. - The named pipe
\\.\pipe\codex-computer-use-<session-guid>is open. codex-computer-use.exe(cua_node helper) is responsive to direct pipe traffic (verified, see Workaround section).
Steps to reproduce
> codex --version
codex-cli 0.145.0-alpha.18
> codex features list | Select-String -Pattern "js_repl|computer_use"
computer_use stable true
js_repl removed false
js_repl_tools_only removed false
Attempting to re-enable from config has no effect:
> codex features enable js_repl
Enabled feature `js_repl` in config.toml.
> codex features list | Select-String -Pattern "js_repl"
js_repl removed false
js_repl_tools_only removed false
Flipping back (features disable js_repl) and re-enabling produces identical features list output. The flag is a no-op.
In a Codex desktop thread, the agent follows the plugin's documented entry point:
if (!globalThis.sky) {
const { setupComputerUseRuntime } = await import(
"C:/Users/DAP/.codex/plugins/cache/openai-bundled/computer-use/26.715.31925/scripts/computer-use-client.mjs"
);
await setupComputerUseRuntime({ globals: globalThis });
}
Expected
mcp__node_repl__jsis exposed to the agent.setupComputerUseRuntimesucceeds and installsglobalThis.skyfrom the cua_node helper, allowing the agent to drive Windows viasky.click,sky.typeText,sky.screenshot, etc.
Actual
mcp__node_repl__jsreturnsunsupported call: mcp__node_repl__json every invocation, even though it appears in the agent's tool surface.setupComputerUseRuntimecannot run:globalThis.nodeRepl.nativePipeandglobalThis.nodeRepl.env.SKY_CUA_NATIVE_PIPE_DIRECTORYare never injected by the harness.features.js_repl = trueinconfig.tomlis ignored becauseremovedis checked before the user config flag.codex updatedoes not work on this install method:
``powershell``
> codex update
Error: Could not detect the Codex installation method. Please update manually: https://developers.openai.com/codex/cli/
- Other
removedfeatures in this build that may share the same gating logic includeapply_patch_freeform,apps_mcp_path_override,multi_agent_mode,plugin_hooks,remote_control,search_tool,sqlite,tool_search,tui_app_server, etc. (full list available viacodex features list).
Root cause
computer-use@openai-bundled/scripts/computer-use-client.mjs requires two pieces of runtime state that are only injected by Codex's node_repl MCP server:
globalThis.nodeRepl.nativePipe.createConnectionglobalThis.nodeRepl.env.SKY_CUA_NATIVE_PIPE_DIRECTORY
node_repl is only spawned when js_repl is enabled. In 0.145.0-alpha.18, js_repl was moved to stage = removed. The harness's effective-state check appears to short-circuit on removed before reading the user-level features.js_repl config, so the flag in config.toml cannot override it.
The computer_use feature manifest was not updated to reflect this dependency: it is still listed as stable true. Users are told the feature works while the runtime entry point is unreachable. The plugin's SKILL still instructs the agent to load its runtime via mcp__node_repl__js, so every Codex thread on this build fails at step 1.
The downstream components (cua_node helper, @oai/sky runtime, the named pipe) are intact and functional — the gap is only in the Codex harness layer that mediates between the agent and those components.
Suggested fix
Any one of the following would resolve this:
- Restore
js_replin the next alpha build (move it back tounder developmentorstable) so that user config can re-enable it. This is the smallest change. - Demote
computer_usetoremoved(orunder development) until its runtime dependency is restored, socodex features listreports the true effective state and users are not led to debug a feature that cannot run. - Add a non-
js_replentry point for Computer Use — for example a dedicatedmcp__computer_use__*tool surface — so the plugin does not become unusable whenever ajs_repl-adjacent feature is removed. - Detect and warn at thread-init time when a
stablefeature references aremoveddependency, instead of silently failing later inside the agent's tool call.
Workaround (informational; not a request to upstream)
While waiting for a fix, the cua_node helper can be driven directly over its named pipe without going through the Codex harness. The wire protocol is documented in @oai/sky/dist/project/cua/sky_js/src/targets/windows/internal/computer_use_client_base.js:
- 4-byte little-endian length-prefixed JSON-RPC frames.
- Request envelope:
{"jsonrpc":"2.0","id":N,"method":"request","params":{"method":"<sky_op>","params":{...}}}. - Approval handshake: server sends
{"method":"requestComputerUseApproval","id":"computer-use-approval:<uuid>","params":{...}}; client replies{"jsonrpc":"2.0","id":"computer-use-approval:<uuid>","result":{"action":"accept"}}. - Sky ops used:
list_windows,list_apps,activate_window,get_window,get_window_state,click,click_element,scroll,drag,press_key,type_text,set_value,launch_app,perform_secondary_action. - The cua_node helper serializes requests. Concurrent calls return
{"error":{"code":-32000,"message":"Computer Use helper already has an active request"}}. get_window_stateoccasionally returns{"error":{"code":-32000,"message":"foreground window did not report a process id"}}when the Codex desktop window itself has focus. Retrying once afteractivate_windowtypically clears it.
A self-contained ESM reference client, a Notepad typing demo, and a mspaint rectangle-drawing demo are available in this report's attachments:
codex-cua-pipe-client.mjs— reusable client (auto-detects pipe from~/.codex/config.toml, auto-handles approvals, serializes calls).demo.mjs— connects, lists windows, types two lines into Notepad, saves a JPEG screenshot.draw-rectangle.mjs— locates the mspaint rectangle tool via UI Automation tree, then draws viadrag.
End-to-end verification screenshots:
demo-2026-07-18T14-32-34-973Z.jpg— Notepad after typing.paint-after-rect-2026-07-18T14-41-19-216Z.jpg— mspaint after drawing a rectangle.
Impact
Any user on codex-cli 0.145.0-alpha.18 who tries to use computer-use@openai-bundled (or any plugin that depends on mcp__node_repl__js) will hit this. The stable true label on computer_use actively misleads them because the manifest looks correct.
Code pointers (for maintainers)
codex-clifeature registry:js_replandcomputer_userows incodex features list.- Plugin entry point:
~/.codex/plugins/cache/openai-bundled/computer-use/26.715.31925/skills/computer-use/SKILL.md. - Plugin runtime loader:
~/.codex/plugins/cache/openai-bundled/computer-use/26.715.31925/scripts/computer-use-client.mjs. - Sky client surface that depends on
js_repl:@oai/sky/dist/project/cua/sky_js/src/targets/windows/internal/computer_use_client_base.js. - Codex config that declares the
node_replMCP server:~/.codex/config.toml[mcp_servers.node_repl]section.
Environment capture (raw)
$ codex features list (full)
apply_patch_freeform removed false
apps_mcp_path_override removed false
codex_git_commit removed false
collaboration_modes removed true
computer_use stable true
elevated_windows_sandbox removed false
experimental_windows_sandbox removed false
external_migration removed false
image_detail_original removed false
js_repl removed false
js_repl_tools_only removed false
multi_agent_mode removed false
non_prefixed_mcp_tool_names under development false
plugin_hooks removed false
remote_control removed false
remote_models removed false
request_permissions_tool under development false
request_rule removed false
resize_all_images removed true
responses_websockets removed false
responses_websockets_v2 removed false
search_tool removed false
shell_tool stable true
skill_env_var_dependency_prompt removed false
sqlite removed true
steer removed true
terminal_resize_reflow removed true
tool_call_mcp_elicitation stable true
tool_search removed false
tool_search_always_defer_mcp_tools removed true
tool_suggest stable true
tui_app_server removed true
unavailable_dummy_tools removed false
undo removed false
use_linux_sandbox_bwrap removed false
workspace_owner_usage_nudge removed false
What steps can reproduce the bug?
- prepare codex app
- edit `config.toml' to using third-part model.
model = "MiniMax-M3"
model_provider = "minimax"
model_context_window = 1000000
personality = "pragmatic"
[model_providers.minimax]
name = "MiniMax"
base_url = "https://api.minimaxi.com/v1"
experimental_bearer_token = "xxxx"
wire_api = "responses"
- try to do something by 'computer use'
What is the expected behavior?
_No response_
Additional information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗