Desktop app silently fails to attach node_repl MCP tools to new tasks — breaks Browser (in-app), Chrome, and Computer Use; CLI with the same config works

Open 💬 5 comments Opened Jul 16, 2026 by colindotfun

What version of the Codex App are you using (From "About Codex" dialog)?

26.707.91948

What subscription do you have?

Pro

What platform is your computer?

macOS 27 (pre-release), Apple Silicon

What issue are you seeing?

New Desktop tasks never get the node_repl js tool (or the Computer Use tools) injected, so every plugin that depends on it fails with "control connection / runtime isn't available in this task." The failure is silent — nothing is logged. Every layer beneath task tool-injection is verifiably healthy, and the terminal CLI reading the same ~/.codex/config.toml injects the tool fine.

This looks like the same family as #25361 / #24297 / #21301 / #20579, but those are framed around the Chrome plugin or extension chain. This reproduction uses the in-app Browser plugin with no Chrome extension installed at all, which narrows the defect to Desktop task tool-injection itself.

Reproduces on a fully clean install: complete wipe of ~/.codex, all app state (com.openai.chat, com.openai.codex, Application Support, caches, HTTPStorages, preferences), CUA helper containers, and native-messaging manifests → reboot → reinstall via Homebrew → sign in → let the app re-provision plugins from scratch → identical failure on the first test. Restarts, plugin reinstalls, and fresh tasks do not help.

User-visible failure

Desktop task, prompt @Browser open google:

I couldn't open Google because the Browser plugin's control connection isn't available in this task. Please retry after reconnecting the Browser plugin.

Failing thread id 019f6b0d-ec16-7993-b412-66b520793db2 (2026-07-16T13:11Z), in case it helps telemetry. The Computer Use plugin fails the same way in tasks ("its UI-control tool isn't exposed in this task").

Isolation — every layer below Desktop task tool-injection works

  1. Session rollout (~/.codex/sessions/.../rollout-*.jsonl): the model read the Browser SKILL.md, ran tool discovery (list_mcp_resources, list_mcp_resource_templates), and got only account-side codex_apps entries back. The node_repl js tool was never present in the task, so no browser call was ever attempted.
  2. The node_repl server itself is healthy: launching /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl manually over stdio, with the exact command and env from the app-written [mcp_servers.node_repl] block in ~/.codex/config.toml, answers initialize and lists js, js_add_node_module_dir, js_reset; js executes code normally.
  3. The browser client stack works: driving browser-client.mjs through that manual server (setupBrowserRuntimeagent.browsers.get("iab")), with _meta["x-codex-turn-metadata"] = {session_id, turn_id} supplied, passes the turn-metadata gate and fails only with Browser is not available: iab — expected for a session the Desktop app doesn't own, since the app binds in-app-browser hosts per conversation (browser-session-registry / IAB_LIFECYCLE captured session route conversationId=… in the Desktop logs).
  4. The CLI injects the tool; the Desktop app doesn't: a terminal codex session (CLI 0.144.5) reading the same ~/.codex/config.toml shows node_repl with js / js_add_node_module_dir / js_reset in /mcp. (From the terminal the in-app browser is still unavailable, which looks expected — no app-owned conversation to bind a host to — but tool injection itself works there.)
  5. The failure is silent: for the failing task, ~/Library/Logs/com.openai.codex shows BrowserUseThreadConfig browser_use_runtime_paths_selected with correct bundled paths, then IAB_LIFECYCLE captured session route, then nothing — node_repl is never spawned or attached for the task, and no error, warning, or timeout is logged anywhere.

Possibly related: the app writes its [mcp_servers.computer-use] entry with enabled = false even while the Computer plugin itself is enabled and its helper (com.openai.sky.CUAService) is installed and validly signed.

Related issues

  • #25361 — Chrome plugin: extension-host not running, node_repl MCP tool unavailable in session (includes a 2026-07-16 repro on these exact builds)
  • #24297 — direct MCP tools/list/tools/call work, but the runtime doesn't expose/route the tool
  • #21301 — Browser tooling appears in one task, disappears in another
  • #20579 — broader open Browser/node_repl issue with multiple macOS reproductions

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗