Codex Desktop macOS does not expose node_repl or bundled Chrome tools despite enabled config
Summary
On Codex Desktop for macOS, the active thread tool registry does not expose the enabled node_repl JS tool or bundled Chrome control tools, even though the local config enables node_repl and direct MCP validation succeeds.
This blocks chrome@openai-bundled / browser automation flows that expect a callable JS bridge such as mcp__node_repl__js. computer_use is discoverable in the same thread, so this does not look like a total tool_search failure.
Environment
- App: Codex Desktop on macOS
- Workspace: local project thread
- Shell/runtime state in affected thread:
exec_commandcurrently fails before shell startup with: CreateProcess { message: "Rejected(\"Failed to create unified exec process: No such file or directory (os error 2)\")" }- Codex version: not available from this affected thread because shell creation is failing. In the prior validation flow,
codex doctorreportedly loaded config/MCP successfully and noted that0.143.0was available. - Relevant bundled skills are present in the session skill list, including:
chrome:control-chromebrowser:control-in-app-browsercomputer-use:computer-use
Config / local validation evidence
~/.codex/config.toml has been updated so that node_repl is explicitly enabled:
[features]
js_repl = true
[mcp_servers.node_repl]
enabled = true
enabled_tools = ["js", "js_add_node_module_dir", "js_reset"]
Prior local validation in the same workflow showed:
- TOML parsing OK
codex mcp get node_replshowed the server enabled with the expected JS tools allowed- direct
node_replMCP handshake succeeded - direct MCP
tools/listreturned: jsjs_add_node_module_dirjs_reset
Reproduction steps
- Enable
node_replandjs_replas above. - Start / restart Codex Desktop and open a fresh Desktop thread.
- Ask the thread to run:
tool_search("node_repl js", limit=10)
tool_search("chrome openai-bundled control-chrome", limit=20)
tool_search("computer-use computer-use", limit=20)
Actual result
Observed in the affected Desktop thread:
tool_search("node_repl js", limit=10)did not exposemcp__node_repl__js; it returned only an unrelated Slack tool.tool_search("chrome openai-bundled control-chrome", limit=20)did not expose anymcp__chrome...callable tools; it returned unrelated tools such as OpenAI docs, GitHub, Hugging Face, and Linear.tool_search("computer-use computer-use", limit=20)did exposemcp__computer_usetools such aslist_apps,get_app_state,click,type_text, etc.list_available_plugins_to_installdid not listchrome@openai-bundled, which is consistent with this not being a simple missing-plugin installation issue.
Expected result
If node_repl is enabled and protocol-valid, a fresh Codex Desktop thread should expose a callable JS tool such as mcp__node_repl__js.
If chrome@openai-bundled / chrome:control-chrome is present and enabled, tool_search("chrome openai-bundled control-chrome") should expose the Chrome control namespace, or the app should surface a clear diagnostic explaining why it is unavailable.
Impact
This blocks production browser automation and E2E workflows that require Chrome control or the Node REPL JS bridge. The current fallback is computer_use, but that is much less precise for browser/Supabase/payment verification workflows.
Related issues
This looks related to, but not identical to:
- #30026: similar
node_replnot exposed case, but Windows and originally tied tofeatures.js_repl = false. - #30343 / #26381: broader Desktop MCP/tool registry exposure failures.
This macOS case may be useful because direct node_repl MCP validation succeeds and js_repl = true, but the active Desktop thread still does not expose the callable node_repl or Chrome tools.
7 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Confirmed again on current macOS desktop build after updating today.
Environment:
26.707.91948(build5440)codex-cli 0.144.5browser/26.707.91948Reproduction:
https://duodata.pipedrive.com/settings/pipedrive-mcp).mcp__node_repl__js(and notool_searchcapability to discover it).This reproduces in a fresh task on the latest build and appears to be a regression introduced by the update. The key failure is tool injection/discovery, before browser selection or tab binding. Expected: when
browser:control-in-app-browseris available, the task should also receive or be able to discover the requirednode_replJS tool.Important clarification after comparing local desktop logs: this was working yesterday, so the current occurrence may be a fresh regression that shares #31533’s symptom rather than the same underlying failure.
Timeline/evidence:
2026-07-16 07:55:55 CESTto desktop26.707.91948(build5440).2026-07-15, logs repeatedly showBrowserUseThreadConfig browser_use_runtime_paths_selectedand an IAB tab adoption (IAB_ADOPTION renderer updated adopted webview), consistent with successful browser use.019f69fa-b154-73a2-bee2-d87d787d44fb), the desktop logs show the IAB backend itself starting successfully:browser_use_iab_backend_startup_started ... release=26.707.91948browser_use_iab_backend_startup_ready ... pipePath=/tmp/codex-browser-use/...sockmcp__node_repl__jsortool_search, so the model cannot bootstrapbrowser-client.mjs.This narrows the failure to per-task tool exposure/injection after the July 16 update; it is not an IAB backend startup failure. The fact that browser control worked on July 15 and failed immediately after today’s app update is the strongest regression signal.
Confirmed on macOS — full investigation summary
Same issue confirmed on macOS with identical environment:
26.707.91948(build5440)browser@openai-bundledv26.707.91948Investigation steps and findings
1. MCP server is running and healthy
node_replprocess is active (confirmed viaps)tools/listcorrectly returnsjs,js_add_node_module_dir,js_resettools/callworks (e.g.nodeRepl.write('hello'))2.
mcp__node_repl__jsis NOT in the model's callable tool listexec_command,write_stdin,list_mcp_resources, etc.mcp__node_repl__jsor anymcp__*tool is availablelist_mcp_resources(server="node_repl")returns empty (server registered, no resources exposed)3. Browser runtime can initialize externally, but agent calls require session metadata
setupBrowserRuntime()frombrowser-client.mjssucceeds and creates theagentglobalagent.browsersobject is availableagent.browsers.list()/agent.browsers.get("iab")fail with:Missing required Codex turn metadata: session_id, turn_id4. Direct node execution also fails trust check
browser-client.mjsvia barenodefails with:privileged native pipe bridge is not available; browser-client is not trusted5. Config gets overwritten on restart
~/.codex/config.tomlhasjs_repl = falseand noenabled/enabled_toolsin[mcp_servers.node_repl]js_repl = trueand addingenabled = true+enabled_tools = [...]gets reverted on app restartRoot cause
The ChatGPT app registers the
node_replMCP server and starts the process, but does not expose its tools (js, etc.) to the model's active task tool registry. This is a per-task tool injection failure — the IAB backend itself starts successfully (logs confirmbrowser_use_iab_backend_startup_ready), but the model never receives the callable tool.Regression timeline
BrowserUseThreadConfig browser_use_runtime_paths_selectedandIAB_ADOPTION)26.707.91948, immediately broken in new tasksThis is a clean regression in the
26.707build's tool injection layer, not a config or user-side issue.bump, i believe i facing same issue as everyone, previous version was working.
Confirmed on macOS with the same current Desktop build, including in a newly-created task.
Environment:
Reproduction:
Actual result:
mcp__node_repl__jstool and notool_searchpath to discover it.Checks:
node_replis configured/enabled and its process is running.initialize+tools/listhandshake succeeds and returnsjs,js_add_node_module_dir, andjs_reset.js_repl = falseis not causal; this feature is reported as removed.No screenshots, logs, local paths, task IDs, or private workspace information are included in this public report.
Update after installing ChatGPT/Codex Desktop
26.715.21425(build5488) on macOS:mcp__node_repl__jsis now callable in the previously affected long-running task.The original per-task tool injection failure therefore no longer reproduces on this machine with build 5488.
A separate performance issue remains: Browser/Chrome operations can still be delayed by repeated Statsig timeouts to
ab.chatgpt.com, consistent with #33713.