[macOS] Chrome and Computer Use tools missing only in project threads after Desktop 26.730.61639 update
Summary
After updating and fully restarting Codex Desktop on macOS on 2026-08-05, the bundled Chrome and Computer Use plugins remain installed and enabled, but their shared node_repl tool is not provisioned consistently into project-backed threads.
The same installation can use Chrome and Computer Use successfully in a projectless thread. In affected project threads, the plugin skills may be visible, but mcp__node_repl__js is either absent from the tool set or advertised but not callable.
This is a regression after the Desktop update, not a Chrome extension installation problem, a macOS app permission problem, or a user project deletion/recreation problem.
Related general report: #30026. This issue adds a current-build macOS reproduction and local root-cause evidence about Desktop's Browser Use configuration reconciliation.
Environment
- Platform: macOS 26.5.2
- Codex Desktop app bundle:
com.openai.codex - Codex Desktop version:
26.730.61639 - Desktop build:
6234 - Update/restart date: 2026-08-05
- Chrome extension version:
1.2.27236.6274_0 - Bundled plugins:
chrome@openai-bundled = enabledcomputer-use@openai-bundled = enabled- Bundled Computer Use plugin version:
1.0.1000621
Opaque affected thread IDs, included only for OpenAI-side correlation:
019fd04d-6a13-7922-a683-ecc67b356b57019fd06e-a1e0-7bb3-8619-14874ffae9ad
Steps to reproduce
- Update Codex Desktop to
26.730.61639on macOS. - Fully restart the application.
- Confirm the bundled Chrome and Computer Use plugins are enabled.
- Open or create a task backed by an existing local project.
- Mention Chrome or Computer Use and ask the task to inspect/use the corresponding app.
- Observe that the skill is present but
mcp__node_repl__jsis missing or unavailable. - Create a projectless task in the same running Desktop installation.
- Repeat the request and observe that Chrome/Computer Use works there.
Expected behavior
If the bundled plugins are enabled and their runtime is healthy, every eligible new task should receive the same callable node_repl capability regardless of whether the task is project-backed or projectless.
Actual behavior
Tool provisioning differs by task type/state:
same macOS user
same Codex Desktop process
same enabled Chrome and Computer Use plugins
same Chrome profile and extension
same node_repl binary and config
projectless task -> Chrome/Computer Use callable
project-backed task -> mcp__node_repl__js absent or unavailable
One affected task incorrectly concluded that macOS had denied access to a user folder and reported that application-control skills were unavailable. The same folder and applications were accessible from a projectless task, so the macOS-wide permission explanation does not fit the observed behavior.
What was verified locally
The following components are present and healthy:
- Chrome is running.
- The ChatGPT Chrome extension is installed and enabled in the active profile.
- The Native Messaging Host exists and its manifest resolves correctly.
- The bundled
browser-client.mjsexists. - Its SHA-256 matches a trusted value in the generated configuration.
- The bundled
node_repland Computer Use executables exist. - Computer Use is correctly signed.
- The required
@oai/skymodule is installed. - The
mcp_servers.node_replconfiguration points to the bundled executable. - The same installation works from a projectless task.
Important finding: features.js_repl = false is generated by Desktop and is not the cause
The user config contains:
[features]
js_repl = false
[mcp_servers.node_repl]
command = "<APP_BUNDLE>/Contents/Resources/cua_node/bin/node_repl"
startup_timeout_sec = 120
Initially this looked causal, but further investigation disproved that hypothesis:
codex features listreports:
``text``
js_repl removed false
- Chrome and Computer Use work in a projectless task while this exact line remains present.
- The installed Desktop application contains a
BrowserUseThreadConfigpath that explicitly defines:
``js``
{"features.js_repl": false}
- That same path builds a
config/batchWriterequest covering:
``text``
features.js_repl
mcp_servers.node_repl
mcp_servers.computer-use
This appears to disable the removed/legacy built-in JS REPL while provisioning the current MCP-based node_repl. Removing the line manually is not a durable workaround because Desktop writes it back.
Configuration-write evidence
The config file was atomically recreated by Codex Desktop. Its birth time and modification time were both:
2026-08-05 08:53:51 +0300
At the matching UTC time, the Desktop log records reads, plugin reconciliation, and successful writes from the primary renderer:
2026-08-05T05:53:51.210Z ... method=config/read ... originWebcontentsId=1
2026-08-05T05:53:51.529Z ... method=plugin/list ... originWebcontentsId=1
2026-08-05T05:53:52.122Z ... method=config/batchWrite ... errorCode=null ... originWebcontentsId=1
The same refresh sequence also produced a version race shortly beforehand:
2026-08-05T05:53:29.747Z ... method=config/batchWrite ... errorCode=-32600
config_write_error_code=configVersionConflict
Configuration was modified since last read. Fetch latest version and retry.
There were multiple successful config/batchWrite calls around plugin/skills refresh. This may be relevant if task capability snapshots are constructed while Browser Use configuration is being reconciled.
Historical confirmation
On 2026-07-19, a Codex task removed features.js_repl = false from the config after explicit user approval. By the next day's new task creation, Codex Desktop had regenerated the config and restored the line. No later agent/session command that manually added the line was found.
This supports that the key is Desktop-managed compatibility configuration rather than a manual user choice.
Likely failing layer
The evidence points to task capability assembly/provisioning after the update:
plugins installed and enabled
-> BrowserUseThreadConfig generates node_repl configuration
-> node_repl runtime is valid
-> task-specific tool set is assembled
-> some project-backed tasks do not receive a callable mcp__node_repl__js
The current evidence does not show that features.js_repl = false disables the MCP server.
Suggested areas to inspect
- Compare capability/tool-set assembly for project-backed and projectless tasks.
- Verify that Browser Use thread config is applied before the task tool snapshot is finalized.
- Check whether plugin/skills refresh and concurrent
config/batchWritecalls can leave a task with a stale capability snapshot. - Retry or serialize Browser Use config writes after
configVersionConflict. - Add a macOS release-gate test:
``text``
update Desktop and restart
Chrome + Computer Use enabled
create project-backed task
create projectless task
both must receive callable mcp__node_repl__js
- Stop persisting
features.js_replonce all supported runtimes treat it as removed, or document that it intentionally disables only the legacy implementation.
Workaround
Creating a new projectless task currently restores Chrome and Computer Use access. Deleting the project, reinstalling the Chrome extension, changing macOS Files & Folders permissions, or manually removing features.js_repl = false should not be required.
Privacy
All usernames, project names, document names, local user paths, account data, and task contents have been omitted. Log excerpts contain only timestamps, method names, renderer identifiers, version information, and configuration error codes needed to diagnose the regression.
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I reviewed #36627. This does not appear to be a duplicate.
In #36627,
mcp__node_repl__jsis available, but its injected runtime lacks the privileged Computer Use bridge and environment.In this issue, the failure occurs earlier: project-backed threads do not receive a callable
mcp__node_repl__jsat all, while a projectless thread in the same Desktop session works. It also affects both Chrome and Computer Use.The issues may share Browser Use/runtime infrastructure, but they describe different failure stages.
Additional experiment after filing this issue:
I manually removed the generated
[mcp_servers.node_repl]entry and created a new project-backed thread (019fd0a3-87cf-7630-8b25-e2e83ea7c9f3).This did not fix the problem.
The thread still received the Chrome and Computer Use skill instructions and initially claimed that both plugins were available. After being asked to perform an actual read-only test, it could neither list Chrome tabs nor list local applications. It then confirmed that no executable
node_replcapability was available.The resulting config contained:
[mcp_servers.node_repl]section;[mcp_servers.computer-use]withenabled = true;features.js_repl = false.This shows that skill visibility can produce a false-positive availability report. A real plugin health check must verify a successful tool call, not merely that the skill instructions are present.
Removing the
node_replMCP configuration is therefore not a workaround.Further reproduction after fully reinstalling both bundled plugins:
computer-use@openai-bundledinstallation completed successfully.chrome@openai-bundledinstallation completed successfully.plugin_install_succeededfor both plugins.config/batchWritealso completed witherrorCode=null.enabled = true.However, the resulting config did not contain either of the expected generated sections:
A new project-backed thread was then created for a real read-only test:
The thread therefore could not list Chrome tabs, list applications, capture app state, or invoke any Chrome/Computer Use operation.
At the same time, the Desktop log reported that the Browser Use backend itself started successfully for this thread:
Observed sequence:
This rules out a corrupt plugin installation as the cause. Reinstalling the plugins is not a workaround. The failure appears to be in Browser Use configuration generation/reconciliation or task capability provisioning after installation.
All local paths and project details are omitted.
Update: project Workspace reset restores both tools
I found a non-destructive workaround that restores Chrome and Computer Use in a project-backed task:
I verified the result with real tool calls in the new project-backed task:
node_replwas provisioned and callable.https://example.com/and returned the titleExample Domain.No project files were deleted.
Important correction
The global
~/.codex/config.tomlremained unchanged after the successful reset:features.js_repl = falseis still present.[mcp_servers.node_repl]block.[mcp_servers.computer-use]block.Therefore, manually restoring those MCP blocks is not required, and
features.js_repl = falseis confirmed not to be the cause.This narrows the failure to stale or incomplete per-Workspace tool provisioning/state after the Desktop update. Reset and install Workspace appears to rebuild that state, while reinstalling the Chrome and Computer Use plugins alone did not.
I am leaving the issue open because the underlying update regression still exists; the reset is a workaround rather than a product fix.