Located installed Codex and plugins.
UnderstandResearched official Codex plugin repository.
UnderstandWired Codex Chrome and computer-use services into Claude Code.
Buildcan you find codex computer use and codex chrome plugins? and help me connect claude code to it ?
The user is asking about "codex computer use and codex chrome plugins" β they want me to find these plugins and help connect Claude Code to them.
Let me think about what they mean. There's:
Actually, wait. In the Claude Code ecosystem, there's a concept of "plugins" β claude plugin. The user might be asking about Claude Code plugins named something like "codex-computer-use" and "codex-chrome" β perhaps plugins that let Claude Code drive Codex's computer-use features or Chrome.
Actually, there might be marketplace plugins. Let me search. There are known Claude Code plugin marketplaces. OpenAI recently released "Codex computer use" (codex computer-use provider?) Actually, OpenAI released "codex computer-use" β an agentic computer use tool. And there's a Chrome extension for Codex ("Codex Chrome extension" for browser control?).
The user wants me to find these plugins (probably on GitHub or a marketplace) and connect Claude Code to them.
Given the context-mode rules, I should use ctx tools. But note: WebFetch is blocked, curl blocked. I have WebSearch available as a native tool (not blocked). Also there's mcp__web_reader__webReader and deepwiki MCP available. The context-mode rules say WebFetch is BLOCKED and curl is BLOCKED. WebSearch isn't listed as blocked. Let me use WebSearch to find "codex computer use" and "codex chrome plugin".
Also, I should check the local Claude Code plugin config β claude plugin CLI, ~/.claude/plugins/, marketplaces. The user says "connect claude code to it" β meaning install these plugins into Claude Code, or connect Claude Code to the Codex MCP servers.
Actually β recent context: branch codex/worklayer-mac-local-runtime with commit "feat(worklayer-mac): prove local Codex MCP runtime". So the user has been running Codex locally as an MCP runtime. Now maybe they found that Codex has "computer use" and "Chrome" plugins/skills (Codex has a plugin/skill system? Codex has "skills" and maybe "extensions"?). Hmm.
Actually, OpenAI Codex CLI recently added support for... Let me just search. I'll use WebSearch since it's not blocked. Let me do a couple of searches in parallel.
Plan:
claude plugin marketplace commands?).Let me also check what's installed locally β maybe codex is installed and has these as components (e.g., codex --version, ls ~/.codex). The user says "codex computer use and codex chrome plugins" β Codex recently (2026) may have "apps" or "MCP apps". Actually Codex CLI added "Codex apps"? Hmm.
Let me search the web first.
I'll run WebSearch queries in parallel:
Also check local environment: ls ~/.claude/plugins, codex --version etc. via Bash (short output).
Let me start.
Web search results for query: "OpenAI Codex "computer use" plugin Chrome extension Claude Code MCP"
π Z.ai Built-in Tool: web_search_prime
Input:
{"search_query":"OpenAI Codex \"computer use\" plugin Chrome extension Claude Code MCP","location":"us"}Executing on server...
Output: web_search_prime_result_summary: [{"text": [{"title": "Use Claude Code with Chrome - Claude Code Docs", "link": "https://code.claude.com/docs/en/chrome", "content": "Claude Code integrates with the Claude in Chrome browser extension to give you browser automation capabilities from the CLI or the VS Code extension.", "refer": "ref_1... Here are the search results for your query:
Introducing Codex Plugin for Claude Code (OpenAI Community)
Use Claude Code with Chrome (Claude Code Docs)
OpenAI Codex arrives in the browser with new Chrome extension (The New Stack)
Codex Chrome vs. Claude for Chrome (Verdent AI)
Chrome DevTools MCP (GitHub)
Browser MCP Chrome Extension (Chrome Web Store)
Open Computer Use MCP Server (mcpservers.org)
The intersection of your search terms appears to center on the Codex Plugin for Claude Code (running Codex as a plugin within Claude Code via MCP) and the competing browser automation approaches from OpenAI (Codex Chrome extension) and Anthropic (Claude in Chrome). Let me know if you'd like me to dig deeper into any of these!
REMINDER: You MUST include the sources above in your response to the user using markdown hyperlinks.
>ls ~/.claude/plugins 2>/dev/null; echo ---; ls ~/.codex 2>/dev/null | head -20; echo ---; which codex && codex --version 2>/dev/nullblocklist.json
blocklist.json.5308e0222181b790.tmp
cache
data
installed_plugins.json
known_marketplaces.json
marketplaces
plugin-catalog-cache.json
---
agents
AGENTS.md
ambient-suggestions
archived_sessions
attachments
auth.json
automations
browser
cache
chrome-native-hosts-v2.json
chrome-native-hosts.json
computer-use
config.toml
cross-instance-locks
dictation-history
generated_images
goals_1.sqlite
goals_1.sqlite-shm
goals_1.sqlite-wal
herdr-agent-state.sh
---
/Users/millin/.local/bin/codex
codex-cli 0.151.0The user has Codex installed locally (codex-cli 0.151.0) with ~/.codex containing computer-use and browser directories and chrome-native-hosts files. So Codex has computer-use and Chrome features installed locally.
The user wants to find "codex computer use and codex chrome plugins" and connect Claude Code to them. There's a "Codex Plugin for Claude Code" β from OpenAI community. That plugin delegates to local Codex CLI/app server, which means Claude Code could use Codex's computer-use and Chrome capabilities through it.
Let me investigate:
claude plugin install codex@openai or similar. Let me read the OpenAI community post.~/.codex/computer-use, ~/.codex/chrome-native-hosts*.json, and Codex app server MCP tools.Let me fetch the community post and check the local Codex setup. WebFetch is blocked β use ctx_fetch_and_index. Wait, the context-mode MCP tools are named mcp__plugin_context-mode_context-mode__ctx_fetch_and_index? Let me check available tools... I see in the tool list: mcp__worklayer__*, mcp__4_5v_mcp__analyze_image, mcp__deepwiki__*, mcp__web_reader__webReader. I do NOT see context-mode MCP tools in my function list! The system prompt mentions them, but the actual available functions don't include ctx_* tools. The hook says to use them, but they're not in my function list. So I can't call them. I have mcp__web_reader__webReader instead for fetching URLs. Let me use that for the community post.
Also check installed plugins and marketplaces locally:
cat ~/.claude/plugins/installed_plugins.json (short)cat ~/.claude/plugins/known_marketplaces.json (short)And explore ~/.codex/computer-use and chrome native hosts.
The plugin: search says "Introducing Codex Plugin for Claude Code" β delegating through local Codex CLI and Codex app server. Let me read that post to get install instructions.
Let me run in parallel:
Codex 0.151.0 is installed locally, and ~/.codex already has computer-use/ and chrome-native-hosts*.json β good sign. Let me dig into the plugin details and your local setup.
π Z.ai Built-in Tool: webReader
Input:
{"url":"https://community.openai.com/t/introducing-codex-plugin-for-claude-code/1378186","with_images_summary":false,"with_links_summary":true}Executing on server...
>cat ~/.claude/plugins/installed_plugins.json 2>/dev/null | head -40; echo ---MARKETPLACES---; cat ~/.claude/plugins/known_marketplaces.json 2>/dev/null | head -40; echo ---CODEX-CU---; ls ~/.codex/computer-use 2>/dev/null; echo ---CODEX-BROWSER---; ls ~/.codex/browser 2>/dev/null{
"version": 2,
"plugins": {
"typescript-lsp@claude-plugins-official": [
{
"scope": "project",
"projectPath": "/Users/millin/Documents/Code/keyflow-infra",
"installPath": "/Users/millin/.claude/plugins/cache/claude-plugins-official/typescript-lsp/1.0.0",
"version": "1.0.0",
"installedAt": "2026-02-01T00:46:58.975Z",
"lastUpdated": "2026-02-01T00:46:58.975Z",
"gitCommitSha": "27d2b86d72da27c64585150857cee8472ad47abb"
}
],
"playground@claude-plugins-official": [
{
"scope": "user",
"installPath": "/Users/millin/.claude/plugins/cache/claude-plugins-official/playground/0120fb83da5d",
"version": "0120fb83da5d",
"installedAt": "2026-02-09T04:42:39.361Z",
"lastUpdated": "2026-09-02T22:01:47.818Z",
"gitCommitSha": "cf99fc252a44e3f36763abe1db8744757f1b0297"
}
],
"chrome-devtools-mcp@chrome-devtools-plugins": [
{
"scope": "user",
"installPath": "/Users/millin/.claude/plugins/cache/chrome-devtools-plugins/chrome-devtools-mcp/latest",
"version": "latest",
"installedAt": "2026-02-13T20:39:29.982Z",
"lastUpdated": "2026-02-13T20:39:29.982Z",
"gitCommitSha": "8d765c0aef7bbcd476c7e7fbe9ea63ee26cf4fa6"
}
],
"context-mode@context-mode": [
{
"scope": "project",
"projectPath": "/Users/millin/Documents/Code/keyflow-infra",
"installPath": "/Users/millin/.claude/plugins/cache/context-mode/context-mode/1.0.104",
"version": "1.0.104",
---MARKETPLACES---
{
"claude-plugins-official": {
"source": {
"source": "github",
"repo": "anthropics/claude-plugins-official"
},
"installLocation": "/Users/millin/.claude/plugins/marketplaces/claude-plugins-official",
"lastUpdated": "2026-09-02T23:52:41.183Z"
},
"chrome-devtools-plugins": {
"source": {
"source": "github",
"repo": "ChromeDevTools/chrome-devtools-mcp"
},
"installLocation": "/Users/millin/.claude/plugins/marketplaces/chrome-devtools-plugins",
"lastUpdated": "2026-02-13T20:39:16.810Z"
},
"context-mode": {
"source": {
"source": "github",
"repo": "mksglu/context-mode"
},
"installLocation": "/Users/millin/.claude/plugins/marketplaces/context-mode",
"lastUpdated": "2026-04-01T14:46:28.178Z"
},
"vercel-vercel-plugin": {
"source": {
"source": "directory",
"path": "/Users/millin/.cache/plugins/github.com-vercel-vercel-plugin"
},
"installLocation": "/Users/millin/.cache/plugins/github.com-vercel-vercel-plugin",
"lastUpdated": "2026-04-05T15:14:15.565Z"
}
}---CODEX-CU---
Codex Computer Use.app
config.json
sessions
---CODEX-BROWSER---
sessionsOutput: webReader_result_summary: [{"text": {"title": "Introducing Codex Plugin for Claude Code - Codex - OpenAI Developer Community", "description": "If you already use Claude Code, this Codex plugin is a simple way to bring Codex into the same workflow. \nIt is useful in three cases: a standard Codex review, a more skeptical adver...
The plugin is openai/codex-plugin-cc β "Use Codex from Claude Code to review code or delegate tasks."
Now, does that plugin include "computer use" and "chrome" plugins? The user said "codex computer use and codex chrome plugins". The codex-plugin-cc repo may be a marketplace with multiple plugins. Let me check the repo. Also the user's ~/.codex has computer-use and browser directories and chrome-native-hosts β Codex itself has computer-use and Chrome extension support locally.
So the user likely wants: within the Codex plugin for Claude Code, there may be separate plugins for computer use and chrome. Let me check the openai/codex-plugin-cc repo structure via deepwiki or web reader on GitHub.
Let me read the GitHub repo README.
Found the key repo β openai/codex-plugin-cc. Let me check its structure for computer-use and Chrome plugins.
π Z.ai Built-in Tool: webReader
Input:
{"retain_images":false,"url":"https://github.com/openai/codex-plugin-cc","with_links_summary":true}Executing on server...
Output: webReader_result_summary: [{"text": {"title": "GitHub - openai/codex-plugin-cc: Use Codex from Claude Code to review code or delegate tasks.", "description": "Use Codex from Claude Code to review code or delegate tasks. - openai/codex-plugin-cc", "url": "https://github.com/openai/codex-plugin-cc", "content": "Use Codex from ...
Found the official OpenAI plugin: openai/codex-plugin-cc β install via:
/plugin marketplace add openai/codex-plugin-cc/plugin install codex@openai-codexRequirements: ChatGPT subscription or API key, Node 18.18+. The user has codex-cli 0.151.0 at ~/.local/bin/codex, and has auth.json in ~/.codex (likely logged in).
Now, the user asked about "codex computer use and codex chrome plugins". Hmm. Is there a "codex computer use" plugin for Claude Code? The ~/.codex dir has computer-use and browser folders and chrome-native-hosts files β Codex app has computer-use and Chrome connector built in. Maybe the question: the codex-plugin-cc marketplace might include multiple plugins β "codex computer use" and "codex chrome" β i.e., plugins that let Claude Code drive Codex's computer-use and Chrome capabilities via the delegated Codex runtime.
The README lists /codex:review, /codex:adversarial-review, /codex:rescue, /codex:transfer, /codex:status, /codex:result, /codex:cancel, /codex:setup. No mention of computer use or chrome. But maybe the marketplace has more plugins. Let me check the repo structure / marketplace.json of openai/codex-plugin-cc. Use deepwiki ask_question β quick. Or fetch the repo tree via web reader on github API? The GitHub API fetch would be an HTTP call β web_reader can fetch https://api.github.com/repos/openai/codex-plugin-cc/contents/? It converts to markdown; JSON might come through. Let me use deepwiki first.
Actually, let me also search: "codex computer use" plugin claude code β maybe there's a separate marketplace entry codex-computer-use@openai-codex? Search the web quickly.
Let me do both in parallel:
Found the official plugin: openai/codex-plugin-cc β delegates to your local Codex CLI (you have codex-cli 0.151.0 already installed). Now let me check if the marketplace ships separate computer-use/Chrome plugins.
{"result":"This repository, `openai/codex-plugin-cc`, contains a single plugin named \"codex\" . This plugin integrates the OpenAI Codex CLI into the Claude Code terminal environment for code reviews and task delegation . It does not include plugins for Codex computer use (desktop control) or Codex Chrome (browser control) .\n\n## Plugins in `.claude-plugin/marketplace.json`\n\nThe `marketplace.json` file lists one plugin:\n* **Name**: `codex` \n* **Description**: \"Use Codex from Claude Code to review code or delegate tasks.\" \n* **Version**: `1.0.5` \n* **Author**: OpenAI \n* **Source**: `./plugins/codex` \n\nThis plugin provides functionalities such as automated code reviews, adversarial pressure-testing of designs, and task delegation within the Claude Code terminal .\n\n## Notes\n\nThe `openai/codex-plugin-cc` repository is specifically designed to integrate the OpenAI Codex CLI with Claude Code . The functionalities described, such as `/codex:review` and `/codex:rescue`, are all related to code analysis and task delegation within a coding environment . There is no indication in the provided context of any plugins for desktop control or browser control .\n\nWiki pages you might want to explore:\n- [Overview (openai/codex-plugin-cc)](/wiki/openai/codex-plugin-cc#1)\n- [Test Coverage by Module (openai/codex-plugin-cc)](/wiki/openai/codex-plugin-cc#5.2)\n\nView this search on DeepWiki: https://deepwiki.com/search/does-this-repositorys-claude-c_ea6667ca-5904-4e6d-9404-3d2b4c1d0889\n"}Web search results for query: ""codex" claude code plugin "computer use" OR "chrome" delegate browser control openai-codex marketplace"
π Z.ai Built-in Tool: web_search_prime
Input:
{"search_query":"\"codex\" claude code plugin \"computer use\" OR \"chrome\" delegate browser control openai-codex marketplace","location":"us"}Executing on server...
Output: web_search_prime_result_summary: [{"text": [{"title": "When Your Browser Learns to Clock In: How Codex for Chrome ...", "link": "https://medium.com/codex/when-your-browser-learns-to-clock-in-how-codex-for-chrome-blurs-the-line-between-tool-and-39f55f66db12", "content": "Claude Computer Use controls your entire desktop. Terminal win... Here are the search results for your query:
1. When Your Browser Learns to Clock In: How Codex for Chrome Blurs the Line Between Tool and... β Medium
2. Claude Code's new browser feature enhances testing and local dev β Facebook Claude Community
3. OpenAI Codex now controls your computer while you work β Sulat AI
4. Claude and Codex Work Together on Mac with New Open-Source Tool β LinkedIn
5. Codex harness - OpenClaw Docs β OpenClaw Documentation
6. OpenAI Codex Can Now Control Your Desktop β remio AI
7. Most AI coding tools don't sandbox on Windows β Instagram
8. Feature request: /codex:computer-use to delegate runtime/UI... (Issue #446) β GitHub
/codex:computer-use command to delegate runtime/UI tasks β noting Codex has computer-use capability but the plugin exposes no path to it, and verification should be read-only.9. On Computer Use β Navan's Blog
10. Browse Extensions - Gemini CLI β Gemini CLI
Key takeaways: The most relevant results are the GitHub issue (#446) on the codex-plugin-cc Claude Code plugin requesting computer-use delegation, the OpenClaw "Codex harness" plugin docs, and several articles comparing OpenAI Codex's background computer use / Chrome extension against Anthropic's Claude Computer Use.
REMINDER: You MUST include the sources above in your response to the user using markdown hyperlinks.
This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
Summary:
Primary Request and Intent: The user asked (single message, verbatim): "can you find codex computer use and codex chrome plugins? and help me connect claude code to it ?" Two explicit intents:
Key Technical Concepts:
~/.claude/plugins/installed_plugins.json, known_marketplaces.json, marketplaces/, plugin-catalog-cache.json)~/.codex/computer-use/ directory exists)~/.codex/chrome-native-hosts.json, chrome-native-hosts-v2.json, ~/.codex/browser/)/Users/millin/.local/bin/codex, config at ~/.codex/config.toml, auth at ~/.codex/auth.jsoncodex/worklayer-mac-local-runtime, latest commit "feat(worklayer-mac): prove local Codex MCP runtime" β user has already proven a local Codex MCP runtime in this repocurl/wget BLOCKED in Bash, WebFetch BLOCKED, inline HTTP in Bash BLOCKED β use ctx_* MCP tools / WebSearch instead; Bash only for short-output commands; responses <500 words, ASD-STE100, terse; artifacts written to files, never inlined~/.codex/auth.json exists β never dump credentials/secrets into contextFiles and Code Sections:
~/.claude/plugins/ (listed, not read)
installed_plugins.json and known_marketplaces.json are the next files to inspect to see current plugin state and how to add the Codex plugin/marketplace.~/.codex/ (listed, not read)
computer-use/), Codex Chrome native hosts (chrome-native-hosts*.json), and browser/ are already installed locally. config.toml will show how Codex exposes MCP/app-server. Do not print auth.json contents.Errors and fixes:
ls/which Bash (short output) instead.Problem Solving:
~/.codex; Claude Code plugin infrastructure present under ~/.claude/plugins.installed_plugins.json / known_marketplaces.json; checking ~/.codex/computer-use and ~/.codex/browser contents; actually installing/connecting.All user messages:
Pending Tasks:
~/.claude/plugins/installed_plugins.json and known_marketplaces.json for current state; inspect ~/.codex/config.toml, ~/.codex/computer-use/, ~/.codex/browser/ for how Codex exposes these capabilities (avoid auth.json secrets).claude plugin marketplace add ... + claude plugin install ... or MCP config, then verify connection (e.g., list tools).Current Work:
Immediately before this summary, I had just received results from the first parallel research batch (WebSearch + local environment inspection) responding to the user's request to find Codex computer-use and Codex Chrome plugins and connect Claude Code to them. Key established facts: Codex CLI 0.151.0 installed at /Users/millin/.local/bin/codex; ~/.codex/ contains computer-use/, browser/, chrome-native-hosts.json, chrome-native-hosts-v2.json; ~/.claude/plugins/ has standard plugin infrastructure (installed_plugins.json, known_marketplaces.json, marketplaces/); web search surfaced the official "Codex Plugin for Claude Code" as the bridge. No response has been sent to the user yet, and no connection steps have been performed.
Optional Next Step:
Continue the user's request ("help me connect claude code to it"): fetch the OpenAI Community post "Introducing Codex Plugin for Claude Code" (https://community.openai.com/t/introducing-codex-plugin-for-claude-code/1378186) via ctx_fetch_and_index or mcp__web_reader__webReader to get exact install commands, and in parallel inspect ~/.claude/plugins/installed_plugins.json, ~/.claude/plugins/known_marketplaces.json, ~/.codex/config.toml (small reads or ctx tools) to see current wiring. Then execute the install (e.g., claude plugin CLI or MCP config) and verify Claude Code can reach the Codex computer-use/Chrome tools, reporting back tersely with source links.
If you need specific details from before compaction (like exact code snippets, error messages, or content you generated), read the full transcript at: /Users/millin/.claude/projects/-Users-millin-Documents-Code-keyflow-infra/7b338dda-af50-47ed-8584-83382d4c8c76.jsonl Continue the conversation from where it left off without asking the user any further questions. Resume directly β do not acknowledge the summary, do not recap what was happening, do not preface with "I'll continue" or similar. Pick up the last task as if the break never happened.
Let me consolidate what I know:
The user asked: "can you find codex computer use and codex chrome plugins? and help me connect claude code to it?"
Findings so far:
openai/codex-plugin-cc (marketplace openai-codex, plugin codex@openai-codex) only provides review/rescue/transfer commands β it delegates through the local Codex CLI and Codex app server./codex:computer-use β confirming that the official plugin does NOT expose computer use.~/.codex/computer-use/Codex Computer Use.app exists, ~/.codex/browser/sessions, chrome-native-hosts.json, chrome-native-hosts-v2.json β Codex's computer-use and Chrome connector are installed locally.Key insight: Since the codex plugin delegates to Codex app server, and Codex has computer-use and Chrome as MCP tools/config in its setup, connecting Claude Code to the codex plugin might indirectly give access to Codex's capabilities (via delegation to Codex, which has computer use + chrome). Also, since Codex exposes MCP (codex mcp / app server), Claude Code could connect directly via MCP: claude mcp add codex -- codex mcp-server or similar. Let me check what codex mcp offers β actually the plugin already wraps the app server.
Let me check:
codex mcp list or codex --help to see subcommands (mcp serve?)~/.codex/config.toml for mcp_servers config~/.codex/computer-use/config.json~/.codex/chrome-native-hosts.json (might contain paths β fine, but avoid auth.json)Then the connection plan:
claude plugin marketplace add openai/codex-plugin-cc (or via CLI claude plugin marketplace add).claude plugin install codex@openai-codex./codex:setup to verify (needs restart/reload of session)./codex:rescue. Also note the open feature request #446.Wait β but is there possibly a separate community plugin for codex computer use? Search results mentioned "OpenClaw Docs β Codex harness" which includes "Codex Computer Use" plugin β but that's for OpenClaw, not Claude Code. The LinkedIn post mentions a dev tool making Claude and Codex work together on Mac β the user's own repo! Branch codex/worklayer-mac-local-runtime with commit "feat(worklayer-mac): prove local Codex MCP runtime" β the user already proved a local Codex MCP runtime. Interesting β so the user is building Codex MCP integration themselves.
Actually wait, the LinkedIn post "I made Claude and Codex work together on Mac" β mentions Claude asked Codex how to configure Codex's own computer-use capability. That could literally be the user (Millin) β the timing (activity-7470218801821810688) and "Mac" matches. Can't be sure. Not important.
Let me now check the local Codex setup files and then do the install. The install commands:
claude plugin marketplace add openai/codex-plugin-ccclaude plugin install codex@openai-codexThese are CLI commands. Running them from Bash should work if claude CLI is in PATH. Let me check which claude too.
Also check codex mcp: codex mcp --help (short output).
Note the context-mode constraints: Bash only for short-output commands; these are fine (<20 lines each).
Plan:
~/.codex/config.toml (grep for mcp/computer/chrome sections β keep short), ~/.codex/computer-use/config.json, codex mcp list / codex --help | head.Let me first inspect, then install. Actually I can do inspection and which claude in one batch, then install.
Actually, let me be efficient: run one Bash call with several short commands. Then install.
Note: I must keep response under 500 words, terse, ASD-STE100-ish. Also must include sources as markdown links (WebSearch reminder).
Let me run the inspection batch now.
Found what exists. Before connecting, let me check your local Codex wiring and the claude CLI.
>which claude; claude --version 2>/dev/null; echo ---CODEX-MCP---; /Users/millin/.local/bin/codex mcp list 2>&1 | head -15; echo ---CODEX-CONFIG---; grep -nE 'mcp|computer|chrome|browser|features|experimental' ~/.codex/config.toml 2>/dev/null | head -20; echo ---CU-CONFIG---; head -c 400 ~/.codex/computer-use/config.json 2>/dev/null; echo; echo ---CHROME-HOSTS---; head -c 300 ~/.codex/chrome-native-hosts-v2.json 2>/dev/null/Users/millin/.local/bin/claude
2.1.259 (Claude Code)
---CODEX-MCP---
Name Command Args Env Cwd Status Auth
chrome-devtools npx chrome-devtools-mcp@latest - - disabled Unsupported
computer-use ./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient mcp - . disabled Unsupported
context7 npx -y @upstash/context7-mcp --api-key ctx7[REDACTED] - - disabled Unsupported
cua_repl /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs BROWSER_USE_AVAILABLE_BACKENDS=*****, BROWSER_USE_CODEX_APP_BUILD_FLAVOR=*****, BROWSER_USE_CODEX_APP_VERSION=*****, BROWSER_USE_TINYSKY_ENABLED=*****, CODEX_CLI_PATH=*****, CODEX_HOME=*****, CUA_REPL_ENABLED_SURFACES=*****, CUA_REPL_NODE_REPL_PATH=*****, NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER=*****, NODE_REPL_INSTRUCTIONS_USE_CASE_CHROME=*****, NODE_REPL_INSTRUCTIONS_USE_CASE_COMPUTER_USE=*****, NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=*****, NODE_REPL_NODE_MODULE_DIRS=*****, NODE_REPL_NODE_PATH=*****, NODE_REPL_TRUSTED_CODE_PATHS=*****, NODE_REPL_TRUSTED_SERVICES=*****, SKY_CUA_SERVICE_PATH=***** - enabled Unsupported
node_repl /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl - BROWSER_USE_AVAILABLE_BACKENDS=*****, BROWSER_USE_CODEX_APP_BUILD_FLAVOR=*****, BROWSER_USE_CODEX_APP_VERSION=*****, BROWSER_USE_TINYSKY_ENABLED=*****, CODEX_CLI_PATH=*****, CODEX_HOME=*****, NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER=*****, NODE_REPL_INSTRUCTIONS_USE_CASE_CHROME=*****, NODE_REPL_INSTRUCTIONS_USE_CASE_COMPUTER_USE=*****, NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=*****, NODE_REPL_NODE_MODULE_DIRS=*****, NODE_REPL_NODE_PATH=*****, NODE_REPL_TRUSTED_CODE_PATHS=*****, NODE_REPL_TRUSTED_SERVICES=*****, SKY_CUA_SERVICE_PATH=***** - enabled Unsupported
raindrop /Users/millin/.raindrop/bin/raindrop workshop mcp - - enabled Unsupported
Name Url Bearer Token Env Var Status Auth
Worklayer https://mcp.myworklayer.com - enabled Not logged in
deepwiki https://mcp.deepwiki.com/mcp - enabled Unsupported
worklayer-dev https://millin-mcp-dev.tagworkers.com/ - enabled Not logged in
---CODEX-CONFIG---
7:notify = ["/Users/millin/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient", "turn-ended"]
10:[mcp_servers.chrome-devtools]
12:args = ["chrome-devtools-mcp@latest"]
15:[mcp_servers.context7]
17:args = ["-y", "@upstash/context7-mcp", "--api-key", "ctx7[REDACTED]"]
20:[mcp_servers.deepwiki]
21:url = "https://mcp.deepwiki.com/mcp"
23:[mcp_servers.deepwiki.tools.ask_question]
26:[mcp_servers.deepwiki.tools.read_wiki_structure]
29:[mcp_servers.raindrop]
31:args = ["workshop", "mcp"]
33:[mcp_servers.node_repl]
38:[mcp_servers.node_repl.env]
44:BROWSER_USE_AVAILABLE_BACKENDS = "chrome,iab"
51:NODE_REPL_TRUSTED_SERVICES = '{"browser":"/Users/millin/.codex/plugins/cache/openai-bundled/browser/26.831.21537/scripts/browser-service.mjs","sky":"@oai/sky/service"}'
52:SKY_CUA_SERVICE_PATH = "/Users/millin/.codex/computer-use/Codex Computer Use.app"
55:[mcp_servers.computer-use]
57:args = ["mcp"]
61:[mcp_servers.worklayer-dev]
62:url = "https://millin-mcp-dev.tagworkers.com/"
---CU-CONFIG---
{"accentColor":"#339cff","direction":"ltr","locale":"en-US","strings":{"usingComputer":"ChatGPT is using your computer","escToCancel":"Esc to cancel"}}
---CHROME-HOSTS---
{
"schemaVersion": 2,
"entries": [
{
"schemaVersion": 2,
"appServerProtocolVersion": 2,
"appVersion": "26.623.141536",
"channel": "prod",
"cliVersion": "26.623.141536",
"entryId": "codex-runtime-5b53dd8d5471a9055a6efa2d202153d3",
"extensionBuildChannExcellent β this is a goldmine. The user's Codex setup ALREADY has these as MCP servers in ~/.codex/config.toml:
computer-use MCP server β ~/.codex/computer-use/Codex Computer Use.app/.../SkyComputerUseClient mcp (currently disabled in codex mcp list)cua_repl β unified-computer-use plugin (enabled) β has browser/Chrome/computer-use backendsnode_repl β enabled, with BROWSER_USE_AVAILABLE_BACKENDS = "chrome,iab" and trusted services for browser + sky (computer use)chrome-devtools MCP server (disabled)So "codex computer use" and "codex chrome" are Codex-side MCP servers/plugins (openai-bundled plugins cached at ~/.codex/plugins/cache/openai-bundled/unified-computer-use/ and browser/).
Now, how to connect Claude Code to them? Two paths:
Path A: Official Codex plugin for Claude Code (codex@openai-codex) β delegates tasks to Codex app server; Codex then has access to its own computer-use/Chrome tools (since plugin uses same MCP setup). But the plugin's own commands are review/rescue only β no direct computer-use tool surface. Issue #446 is the open feature request for /codex:computer-use.
Path B: Direct MCP connection β Claude Code connects to the same MCP servers Codex uses. E.g.:
claude mcp add codex-computer-use -- ~/.codex/computer-use/"Codex Computer Use.app"/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient mcp~/.codex/plugins/cache/openai-bundled/browser/.../scripts/browser-service.mjs) β that's node_repl trusted service. Hmm, connecting Claude Code directly to those may require the app plumbing.Also Path C: codex mcp-server β Codex CLI can expose itself as an MCP server (codex mcp serve? or codex mcp-server). Actually there's codex mcp subcommand managing MCP servers. The app server is what the plugin wraps.
The cleanest supported route per user request "connect claude code to it":
/codex:* commands, delegating to Codex which has computer-use + chrome.claude mcp add ....Let me check codex mcp list status column: chrome-devtools disabled, computer-use disabled. cua_repl + node_repl enabled. The unified-computer-use plugin (cua_repl) seems to be the actual active path.
Now execute the connection:
Step 1: claude plugin marketplace add openai/codex-plugin-cc
Step 2: claude plugin install codex@openai-codex
Wait β does the claude CLI v2.1.259 support claude plugin subcommands? Yes, newer versions do (claude plugin marketplace add, claude plugin install). Let me try.
Step 3 (optional, direct computer-use MCP into Claude Code): claude mcp add codex-computer-use -- "<path>" mcp. I should probably do this too since user explicitly wants computer use + chrome connected to Claude Code. But caution: SkyComputerUseClient may expect Codex app plumbing (auth via Codex). Trying to add it is cheap; verification would require restart of session to load MCP tools. I can add it at user scope and let them test.
Actually, let me think about what "connect claude code to it" most plausibly means: user wants Claude Code to be able to use Codex's computer-use and Chrome capabilities. The official plugin gives delegation (Claude asks Codex, Codex does computer use). Direct MCP add gives Claude the tools itself.
Plan:
claude mcp add β user scope). Also consider chrome: the chrome side in Codex is chrome-devtools MCP (disabled) β but Claude Code already has chrome-devtools-mcp plugin installed (chrome-devtools-mcp@chrome-devtools-plugins)! So Chrome devtools control is already available in Claude Code. The Codex-native Chrome (browser-service.mjs via node_repl) is deeper (uses the Codex Chrome extension via native messaging). Direct add of that is not trivially exposable.Hmm, let me not over-engineer. Do:
claude plugin marketplace add openai/codex-plugin-cc then claude plugin install codex@openai-codex β check output.claude mcp add codex-computer-use --user -- ...SkyComputerUseClient mcp β direct connection attempt.Then tell user: restart session / run /codex:setup; computer-use surfaces as MCP tools.
Let me check claude CLI plugin commands syntax quickly: claude plugin --help. To be safe, run help first in same command? Sequential dependency: help β add β install. Just chain with && and check output. claude plugin marketplace add openai/codex-plugin-cc β if syntax wrong, error shows.
Note: permission β installing a plugin modifies user config; user explicitly asked to "help me connect claude code to it", so this is authorized.
Also the api key in config.toml context7 β already printed (oops, it was in output; it's the user's own machine, fine, but I won't repeat it).
Let me run the install commands.
Your Codex install already has both capabilities as MCP servers β this is the key finding:
~/.codex/computer-use/Codex Computer Use.app β SkyComputerUseClient (MCP server computer-use, currently disabled; cua_repl/node_repl unified plugin enabled)chrome-native-hosts-v2.json) + browser plugin at ~/.codex/plugins/cache/openai-bundled/browser/ with BROWSER_USE_AVAILABLE_BACKENDS = "chrome,iab"There is no standalone "Codex computer-use/Chrome" plugin for Claude Code β the official openai/codex-plugin-cc marketplace ships one codex plugin that delegates through your local Codex CLI + app server, reusing its MCP setup (issue #446 requests a direct /codex:computer-use β not shipped yet). Two connection paths: install the official plugin, and wire the computer-use MCP server directly. Doing both now.
>claude plugin marketplace add openai/codex-plugin-cc 2>&1 | tail -5Permission for this action was denied by the Claude Code auto mode classifier. Reason: Blocked by classifier. If you have other tasks that don't depend on this action, continue working on those. IMPORTANT: You *may* attempt to accomplish this action using other tools that might naturally be used to accomplish this goal, e.g. using head instead of cat. But you *should not* attempt to work around this denial in malicious ways, e.g. do not use your ability to run tests to execute non-test actions. You should only try to work around this restriction in reasonable ways that do not attempt to bypass the intent behind this denial. If you believe this capability is essential to complete the user's request, STOP and explain to the user what you were trying to do and why you need this permission. Let the user decide how to proceed. To allow this type of action in the future, the user can add a Bash permission rule to their settings.The auto-mode classifier blocked claude plugin marketplace add. This is an interactive/config-changing command β makes sense the classifier is cautious since it modifies plugin config. Rather than fighting it, I can try claude mcp add for the direct computer-use MCP (also config-changing β may also be blocked). Let me try the mcp add; if also blocked, fall back to editing config files directly (~/.claude.json or ~/.claude/plugins/...)? Manual editing of plugin internals is risky. Better: give the user the exact commands to run themselves with ! prefix, as the session guidance suggests.
Actually, let me try claude mcp add first β it might be allowed.
The classifier blocked the claude plugin CLI call. Let me try the direct MCP route.
>claude mcp add codex-computer-use --user -- "/Users/millin/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient" mcp 2>&1 | tail -5error: unknown option '--user'Syntax error β in claude 2.1.259 the scope flag might be -s user or --scope user. Let me use claude mcp add --help to check quickly.
>claude mcp add --help 2>&1 | head -25Usage: claude mcp add [options] <name> <commandOrUrl> [args...]
Add an MCP server to Claude Code.
Examples:
# Add HTTP server:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
# Add HTTP server with headers:
claude mcp add --transport http corridor https://app.corridor.dev/api/mcp
--header "Authorization: Bearer ..."
# Add stdio server with environment variables:
claude mcp add my-server -e API_KEY=[REDACTED] -- npx my-mcp-server
# Add stdio server with subprocess flags:
claude mcp add my-server -- my-command --some-flag arg1
Options:
--callback-port <port> Fixed port for OAuth callback (for servers
requiring pre-registered redirect URIs)
--client-id <clientId> OAuth client ID for HTTP/SSE servers
--client-secret Prompt for OAuth client secret (or set
MCP_CLIENT_SECRET env var)
-e, --env <env...> Set environment variables (e.g. -e KEY=value)continue
The user said "continue". I was in the middle of connecting Claude Code to Codex computer-use and Codex Chrome plugins.
Recap of state:
openai/codex-plugin-cc (marketplace openai-codex, plugin codex@openai-codex) which delegates through local Codex CLI + app server, reusing local MCP setup.computer-use MCP server (SkyComputerUseClient, disabled status in codex mcp list), cua_repl/node_repl unified-computer-use (enabled), chrome native hosts, browser plugin with chrome/iab backends, chrome-devtools MCP (disabled).claude plugin marketplace add openai/codex-plugin-cc was BLOCKED by the auto-mode classifier.claude mcp add codex-computer-use --user ... failed with "unknown option '--user'".claude mcp add --help β need to see the scope option. The help output was truncated at head -25; options shown so far: --callback-port, --client-id, --client-secret, -e/--env. Need to see remaining options (scope, transport). Standard syntax in newer claude versions: -s, --scope <scope> with values local/user/project, and -t, --transport <transport>.So next steps:
claude mcp add with correct syntax: claude mcp add -s user codex-computer-use -- "<path>" mcp β wait, order: options come before <name>. Usage: claude mcp add [options] <name> <commandOrUrl> [args...]. So: claude mcp add -s user codex-computer-use -- "/path/SkyComputerUseClient" mcp.! prefix, or try again (denied means adjust, not retry verbatim). The session guidance says: suggest the user type ! <command>. That's the right path for the plugin install. Alternatively, I could manually clone the marketplace and edit ~/.claude/plugins/known_marketplaces.json β but that's working around the denial's intent? The denial was on the auto-mode classifier for the Bash command. Manually editing plugin config files to achieve the same is arguably a bypass. Hmm. The classifier blocked claude plugin marketplace add β likely because installing plugins/marketplaces from external sources is a user-level trust decision. The right move: give the user the exact commands to run with ! prefix.Actually wait β let me reconsider. Is the direct MCP add of computer-use also a trust decision? It adds an MCP server (executes a local binary). It's local Codex's own binary the user already has; the user explicitly asked to "connect claude code to it". The classifier blocked the claude plugin marketplace add (external GitHub repo). The claude mcp add might be allowed or blocked β worth one try with correct syntax.
Also for Chrome: the user asked about "codex chrome plugins". In Claude Code, the user already has chrome-devtools-mcp plugin installed (chrome-devtools-mcp@chrome-devtools-plugins). The Codex Chrome extension native-host setup is for the Codex app/ChatGPT desktop app β Claude Code can't drive the Codex Chrome extension directly; that plumbing is node_repl/cua_repl inside Codex. The practical bridge for Chrome via Codex is delegation through the codex plugin (/codex:rescue), or Claude's own chrome-devtools MCP.
Let me also verify after mcp add: claude mcp list to confirm connection status. The MCP server tools won't be available in this session until restart, but claude mcp list does a health check.
Plan:
claude mcp add -s user codex-computer-use -- "<path>" mcp (correct syntax)claude mcp list | grep computer to verify health! commands (marketplace add + install), since classifier blocked me. Or maybe try once more via a different natural route? No β denied means don't retry verbatim. Suggest user run:
! claude plugin marketplace add openai/codex-plugin-cc! claude plugin install codex@openai-codex
Then restart session, run /codex:setup.Also worth checking the full options list for scope flag name before retrying. The help was cut at 25 lines. Let me get the rest: claude mcp add --help | sed -n '25,60p' or just grep for scope/transport. Quick: claude mcp add --help | grep -A2 scope.
Let me batch: grep help for scope, then run the add with correct flag. These are dependent (need flag name first). Do help grep first... Actually I'm fairly confident it's -s, --scope <scope> (local|user|project) β standard in claude CLI. But 2.1.259 might differ. One quick combined command: grep then add. If flag wrong, error shows and I adjust.
Let me do: claude mcp add --help | grep -iE 'scope|transport' first (fast), then the add.
Actually combine both in one Bash call: claude mcp add --help | grep -iE 'scope|transport'; claude mcp add -s user codex-computer-use -- "..." mcp 2>&1 | tail -3 β if -s is wrong, I'll see from grep output what's right and the error. Good.
Then verify: claude mcp list 2>&1 | grep -i computer-use β the health check may take a moment; tail it.
Then write the final response with:
! commands) for the official pluginKeep under 500 words, terse.
>claude mcp add --help | grep -iE 'scope|transport' | head -6; echo ---ADD---; claude mcp add -s user codex-computer-use -- "/Users/millin/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient" mcp 2>&1 | tail -3 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
claude mcp add --transport http corridor https://app.corridor.dev/api/mcp
-s, --scope <scope> Configuration scope (local, user, or project)
-t, --transport <transport> Transport type (stdio, sse, http). Defaults to
---ADD---
Added stdio MCP server codex-computer-use with command: /Users/millin/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient mcp to user config
File modified: /Users/millin/.claude.jsonComputer-use MCP server added at user scope. Now verify it connects: claude mcp list does a health check. Let me run it filtered to codex-computer-use.
Computer-use MCP added to user config. Verifying it launches and responds:
>claude mcp list 2>&1 | grep -iE 'computer-use|health|connected' | head -5Checking MCP server healthβ¦
deepwiki: https://mcp.deepwiki.com/mcp (HTTP) - β Connected
worklayer: https://mcp.myworklayer.com (HTTP) - β Connected
codex-computer-use: /Users/millin/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient mcp - β ConnectedConnected. Now the remaining piece: the official Codex plugin install was blocked by the classifier. I should hand the user the exact commands to run with ! prefix. Also note Chrome: the Codex Chrome extension (native messaging) is driven by Codex's own unified-computer-use plugin (cua_repl/node_repl), not directly exposable as a standalone MCP to Claude Code. The user already has chrome-devtools-mcp in Claude Code. The bridge for Codex Chrome specifically = delegate via the codex plugin.
Also β could I add the cua_repl (unified computer use, which covers BOTH browser/chrome and computer use) to Claude Code? Its command is /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs with a pile of env vars (redacted in codex mcp list). The env vars are in ~/.codex/config.toml under [mcp_servers.node_repl.env] β I saw lines 38-52. Those env vars are readable from config.toml. I could add cua_repl to Claude Code with the same env. That would give Claude Code the unified computer-use + Chrome backend directly.
Hmm β but is that sensible? The unified plugin is built for Codex's app server protocol (appServerProtocolVersion 2, native pipes to the ChatGPT app). It might work standalone via launch.mjs since it's launched as a stdio MCP (that's how Codex launches it: node launch.mjs as an MCP server). Codex launches it exactly as an MCP stdio server with those env vars. So replicating in Claude Code is plausible. But the env includes things like CODEX_HOME, CODEX_CLI_PATH, NODE_REPL_TRUSTED_CODE_PATHS etc. I have the actual values in config.toml lines 33-52 (partially seen). Let me read that section of config.toml and replicate.
Risk: the redacted env in codex mcp list output (*****) just hides values; config.toml has real values. Replicating gives Claude Code the same toolset Codex has β including browser (chrome + iab backends) and computer use (sky service).
Should I do it? The user asked to "connect claude code to it" β computer use β (done via SkyComputerUseClient). Chrome: the SkyComputerUseClient mcp might only be desktop control. The Chrome side needs the browser plugin (browser-service.mjs) or the extension native host. Adding codex-browser MCP = cua_repl launch.mjs with env. Let me try: read config.toml lines 33-60 to get exact env, then claude mcp add codex-browser -s user -e KEY=val ... -- /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs.
Wait β actually, simpler: does the computer-use SkyComputerUseClient MCP include browser tools? Unknown. The health check only confirms connect. I can't easily list tools without restarting session. But I can run a quick probe: codex mcp has tools? Or run the binary and send MCP initialize + tools/list over stdin? That's doable with a small script. Context-mode says use ctx_execute for such things... but ctx tools aren't in my function list (they're referenced but not actually available β the MCP server names appear in instructions; the actual available functions include mcp__worklayer__*, mcp__web_reader, mcp__4_5v_mcp, mcp__deepwiki. No ctx_ functions). So I use plain Bash with short output.
A quick probe: echo JSON-RPC initialize+tools/list into the binary. Let me try with printf piped, timeout. Something like:
cd ~/.codex/computer-use && (printf '...initialize...\n...tools/list...\n'; sleep 2) | timeout 5 ./.../SkyComputerUseClient mcp | head -c 800timeout may not exist on macOS (gtimeout from coreutils). Use & + sleep + kill? Simpler: use perl or just rely on the server exiting after stdin closes. Pipe closes after printf+sleep; server should exit. head -c caps output. Risk: hangs. Bash tool has its own timeout (default 120s) β acceptable but would waste time. Use a background approach with kill after 3s.
Actually cleaner: claude mcp list already connected. To enumerate tools, simplest is restart-reliant. Let me just probe with a controlled script:
cd "/Users/millin/.codex/computer-use" && { printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1.0"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'; sleep 2; } | "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient" mcp 2>/dev/null | head -c 1200That should print tool names. If it hangs, Bash timeout kills at 120s β acceptable but annoying; add a & pid=$!; sleep 4; kill wrapper... The pipe with sleep already closes stdin after ~2s; most stdio MCP servers exit then. Risk it.
If tools include browser/chrome tools β done, one server covers both. If desktop-only β add the cua_repl as second server for chrome/browser. Need env from config.toml lines 33-52. Let me read those lines too (I have grep output showing structure; need full values). Read with sed -n '33,60p'.
Batch: probe tools + read config env lines. These are independent β parallel in one message? They're both Bash. Two Bash calls in one block run in parallel β fine.
Then final answer. Also the plugin marketplace commands for the user to run via !.
Let me do the probe + config read now.
Connected. Now probing what tools it exposes (desktop only, or browser too), and grabbing the Codex browser plugin env from config:
>cd "/Users/millin/.codex/computer-use" && { printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1.0"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'; sleep 3; } | "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient" mcp 2>/dev/null | head -c 1500{"id":1,"jsonrpc":"2.0","result":{"capabilities":{"tools":{"listChanged":false}},"protocolVersion":"2024-11-05","serverInfo":{"name":"Computer Use","version":"14e7d17f1f59e77ca541a15071e980628cd08977a4dda111c96e0564d337056b"}}}
{"id":2,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"List the apps on this computer. Returns the set of apps that are currently running, as well as any that have been used in the last 14 days, including details on usage frequency","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"list_apps"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Start an app use session if needed, then get the state of the app's key window and return a screenshot and accessibility tree. This must be called once per assistant turn before interacting with the app","inputSchema":{"additionalProperties":false,"properties":{"app":{"description":"App name, full app path, or unambiguous bundle identifier","type":"string"}},"required":["app"],"type":"object"},"name":"get_app_state"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Click an element by index or pixel coordinates from screenshot","inputSchema":{"additionalProperties":false,"properties":{"app":{"description":"App name, full app path, or
Shell cwd was reset to /Users/millin/Documents/Code/keyflow-infra>sed -n '33,60p' ~/.codex/config.toml[mcp_servers.node_repl]
args = []
command = "/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl"
startup_timeout_sec = 120
[mcp_servers.node_repl.env]
NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS = "1000"
NODE_REPL_NODE_MODULE_DIRS = "/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules"
NODE_REPL_NODE_PATH = "/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node"
NODE_REPL_TRUSTED_CODE_PATHS = "/Users/millin/.codex:/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules"
CODEX_HOME = "/Users/millin/.codex"
BROWSER_USE_AVAILABLE_BACKENDS = "chrome,iab"
BROWSER_USE_TINYSKY_ENABLED = "1"
NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER = ""
NODE_REPL_INSTRUCTIONS_USE_CASE_CHROME = ""
NODE_REPL_INSTRUCTIONS_USE_CASE_COMPUTER_USE = ""
BROWSER_USE_CODEX_APP_BUILD_FLAVOR = "prod"
BROWSER_USE_CODEX_APP_VERSION = "26.831.21537"
NODE_REPL_TRUSTED_SERVICES = '{"browser":"/Users/millin/.codex/plugins/cache/openai-bundled/browser/26.831.21537/scripts/browser-service.mjs","sky":"@oai/sky/service"}'
SKY_CUA_SERVICE_PATH = "/Users/millin/.codex/computer-use/Codex Computer Use.app"
CODEX_CLI_PATH = "/Applications/ChatGPT.app/Contents/Resources/codex"
[mcp_servers.computer-use]
command = "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient"
args = ["mcp"]
cwd = "."
enabled = falseThe computer-use MCP server works and exposes macOS desktop tools: list_apps, get_app_state, click, etc. That's the Codex Computer Use capability β now connected to Claude Code at user scope.
Note: in Codex's own config, [mcp_servers.computer-use] has enabled = false β Codex uses the cua_repl/node_repl unified path instead. But for Claude Code, the SkyComputerUseClient MCP works standalone (proved: initialize + tools/list succeeded).
Now the Chrome side. Options:
node_repl MCP β the unified service that covers browser (chrome + iab backends) and computer use. Command: /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl with a big env block. I now have all env values. Add to Claude Code: claude mcp add codex-chrome -s user -e ... -- /Applications/ChatGPT.app/.../node_repl. Hmm wait β node_repl is the generic REPL; the browser/Chrome capability comes through NODE_REPL_TRUSTED_SERVICES (browser-service.mjs) and the chrome backend. But how are browser tools exposed? In Codex, browser use might flow through cua_repl (launch.mjs for unified-computer-use) which wraps node_repl with instructions per use case. The cua_repl server in codex mcp list is: command /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node, args /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs β with the same env (plus CUA_REPL_* extras).For Claude Code, adding node_repl directly with the browser trusted service would give Claude a node REPL that can drive the browser service β but the tool surface would be a REPL, not clean browser tools. The cua_repl (unified computer use) exposes proper tools maybe.
Before adding more servers, probe node_repl the same way to see its tools list. If it exposes browser/chrome tools, add it to Claude Code as codex-browser.
Actually β think about what matters for the user's goal: "connect claude code to codex computer use and codex chrome". Computer use: done. Chrome: the Codex Chrome extension is connected to the ChatGPT/Codex app via native messaging (chrome-native-hosts-v2.json β entry "codex-runtime"). The browser-service.mjs speaks to the extension through the app server. A standalone probe of node_repl will tell me whether browser tools are directly usable.
Let me probe node_repl quickly with tools/list (same JSON-RPC probe, with env vars set). If tools look useful (e.g., browser navigation), add to Claude Code. If it's just "run node code" REPL, then the Chrome path for Claude Code is: (a) delegation via the official codex plugin (blocked for me to install β give user ! commands), or (b) Claude's own chrome-devtools MCP already installed.
Probe command with env (many -e exports; use env command inline):
cd /tmp && { printf '...init...\n...initialized...\n...tools/list...\n'; sleep 3; } | env CODEX_HOME=/Users/millin/.codex NODE_REPL_NODE_PATH=... NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=1000 NODE_REPL_NODE_MODULE_DIRS=... NODE_REPL_TRUSTED_CODE_PATHS=... BROWSER_USE_AVAILABLE_BACKENDS=chrome,iab BROWSER_USE_TINYSKY_ENABLED=1 BROWSER_USE_CODEX_APP_BUILD_FLAVOR=prod BROWSER_USE_CODEX_APP_VERSION=26.831.21537 NODE_REPL_TRUSTED_SERVICES='{"browser":".../browser-service.mjs","sky":"@oai/sky/service"}' SKY_CUA_SERVICE_PATH="/Users/millin/.codex/computer-use/Codex Computer Use.app" CODEX_CLI_PATH=/Applications/ChatGPT.app/Contents/Resources/codex /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl 2>/dev/null | head -c 1500startup_timeout_sec=120 hints it can be slow to start. sleep 3 might be too short; give sleep 8. head -c caps output.
Then, depending on tools, decide. Also keep in mind response must stay terse and include sources (already cited earlier; final summary should repeat key links per WebSearch reminder).
Also the official plugin install β I must tell user to run:
! claude plugin marketplace add openai/codex-plugin-cc! claude plugin install codex@openai-codexthen restart + /codex:setup.
Let me probe node_repl now.
Desktop tools confirmed (list_apps, get_app_state, clickβ¦). Now probing the Codex Chrome/browser service (node_repl with the chrome+iab backends):
>{ printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1.0"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'; sleep 8; } | env CODEX_HOME=/Users/millin/.codex NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=1000 NODE_REPL_NODE_MODULE_DIRS="/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules" NODE_REPL_NODE_PATH="/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node" NODE_REPL_TRUSTED_CODE_PATHS="/Users/millin/.codex:/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules" BROWSER_USE_AVAILABLE_BACKENDS="chrome,iab" BROWSER_USE_TINYSKY_ENABLED=1 BROWSER_USE_CODEX_APP_BUILD_FLAVOR=prod BROWSER_USE_CODEX_APP_VERSION=26.831.21537 NODE_REPL_TRUSTED_SERVICES='{"browser":"/Users/millin/.codex/plugins/cache/openai-bundled/browser/26.831.21537/scripts/browser-service.mjs","sky":"@oai/sky/service"}' SKY_CUA_SERVICE_PATH="/Users/millin/.codex/computer-use/Codex Computer Use.app" CODEX_CLI_PATH=/Applications/ChatGPT.app/Contents/Resources/codex /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl 2>/dev/null | head -c 1200{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{"codex/sandbox-state-meta":{}},"tools":{"listChanged":true}},"serverInfo":{"name":"rmcp","version":"1.5.0"},"instructions":"Use `js` for `node_repl` execution with persistent, redeclarable top-level bindings, `js_reset` to clear bindings, and `js_add_node_module_dir` to add package directories."}}
{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"js","description":"Execute JavaScript in a persistent `node_repl` with top-level await. Top-level bindings persist until `js_reset` and can be redeclared. Use `const` for stable values and `let` for changing values. Use dynamic imports such as `await import(\"playwright\")`; top-level static imports and `node:process` are unavailable. Use `nodeRepl.write(value)` for output and `await nodeRepl.emitImage(image)` for images. Execution context is available through `nodeRepl.cwd`, `nodeRepl.homeDir`, `nodeRepl.tmpDir`, and `nodeRepl.requestMeta`. The default timeout is 30000 ms (30 seconds); increase `timeout_ms` for longer operations. Use `js_add_node_module_dir` when an additional package directory is required.","inputSchema":{"additionalPropertnode_repl is a generic JS REPL β its browser capability is via the trusted browser-service, not clean MCP browser tools. It's how Codex's model drives Chrome, but for Claude Code it's a code-execution REPL β awkward and over-permissive (a JS REPL = arbitrary code exec; Claude Code already has Bash). Not a good direct connect.
Better Chrome options for Claude Code:
! commands.chrome-devtools-mcp@chrome-devtools-plugins). That gives Chrome control natively (CDP-based).So the final state:
codex-computer-use MCP (user scope, health β, tools verified)! commands to install the official Codex plugin, then delegate (/codex:rescue ... β Codex does the browsing with its Chrome extension), or (b) use the already-installed chrome-devtools-mcp in Claude Code.One more consideration: tools from codex-computer-use won't load into THIS session until restart. Tell the user to restart Claude Code (or new session) and the tools appear.
Now write the final answer. Requirements: terse, <500 words, sources as markdown links (WebSearch reminder). Structure:
! commands for user (classifier blocked me)Keep it tight.
Done. Here's the full picture:
Not Claude Code plugins β they're local Codex components on your machine:
~/.codex/computer-use/Codex Computer Use.app (SkyComputerUseClient)~/.codex/chrome-native-hosts-v2.json) + browser plugin with chrome,iab backendsThe only official Claude Code bridge is openai/codex-plugin-cc β one plugin that delegates to your local Codex CLI/app server. It has no computer-use/Chrome commands yet (issue #446 requests it).
Codex Computer Use β Claude Code (direct MCP, user scope):
codex-computer-use to ~/.claude.json, health check β Connectedlist_apps, get_app_state (screenshot + accessibility tree), click, β¦mcp__codex-computer-use__*! claude plugin marketplace add openai/codex-plugin-cc! claude plugin install codex@openai-codex/codex:setup. Chrome work goes through delegation (/codex:rescue β¦) β Codex uses its own Chrome extension. Uses your existing Codex login/config (announcement).chrome-devtools-mcp installed in Claude Code β native Chrome control without Codex.I did not wire Codex's node_repl/cua_repl into Claude Code: it's a raw JS REPL service, not clean browser tools β wrong shape, and redundant with option 1 or 2.
Sources: codex-plugin-cc Β· OpenAI announcement Β· issue #446
still do it, I like how codex uses chrome. I will disable chrome-devtools-mcp
The user wants me to wire Codex's node_repl/cua_repl into Claude Code anyway β they like how Codex uses Chrome (via the Chrome extension + browser-service), and they'll disable chrome-devtools-mcp.
So the task: add the Codex Chrome/browser path to Claude Code as an MCP server. Options:
node_repl β /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl with the env block I read from config.toml. It's a JS REPL (js, js_reset, js_add_node_module_dir tools). Probed it β works standalone (initialize + tools/list succeeded).
cua_repl β /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node + launch.mjs from unified-computer-use plugin, with additional CUA_REPL_* env vars. This is the "unified computer use" wrapper β likely exposes cleaner tool surface for browser/chrome/computer use. The env vars for cua_repl include CUA_REPL_ENABLED_SURFACES, CUA_REPL_NODE_REPL_PATH, NODE_REPL_INSTRUCTIONS_USE_CASE_*, etc. Those were redacted (*****) in codex mcp list output β I need the real values. Where do they live? They're not in ~/.codex/config.toml (the node_repl env is there, but cua_repl came from... hmm, actually codex mcp list showed cua_repl with those env vars). Wait β where is cua_repl defined? Not in the config.toml sections I read (lines ~10-62 showed chrome-devtools, context7, deepwiki, raindrop, node_repl, computer-use, worklayer-dev). cua_repl might be defined elsewhere in config.toml or come from a Codex plugin (openai-bundled unified-computer-use plugin). Let me check the full config.toml and the plugin cache dir for its manifest.
Actually β the cua_repl env in codex mcp list showed: BROWSER_USE_, CODEX_CLI_PATH, CODEX_HOME, CUA_REPL_ENABLED_SURFACES, CUA_REPL_NODE_REPL_PATH, CUA_REPL_NODE_MODULE_DIRS?, NODE_REPL_INSTRUCTIONS_USE_CASE_, NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS, NODE_REPL_NODE_MODULE_DIRS, NODE_REPL_NODE_PATH, NODE_REPL_TRUSTED_CODE_PATHS, NODE_REPL_TRUSTED_SERVICES, SKY_CUA_SERVICE_PATH.
The plugin at ~/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/ likely has a manifest (plugin.json / mcp config) with these env definitions. Let me look there.
Plan:
codex-browser or codex-cua.js REPL which is rough. Actually for Claude, a js tool that can import playwright and drive browser-service... The user likes "how codex uses chrome" β that's the Chrome extension backend (BROWSER_USE_AVAILABLE_BACKENDS=chrome,iab). The browser-service.mjs is the trusted service that drives the extension.Hmm, wait. Let me reconsider: how does Codex actually drive Chrome? Via cua_repl β node_repl β browser-service.mjs (trusted service) β Chrome extension via native messaging. The MCP surface Codex's model sees is cua_repl's tools. Let me find cua_repl's definition. Search config.toml fully first (maybe [mcp_servers.cua_repl] exists further down), and check plugin cache manifests.
Also need CUA_REPL_ENABLED_SURFACES value etc.
Steps:
grep -n cua_repl ~/.codex/config.toml + sed -n the section; if not there, find plugin manifest: ls ~/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/ and cat its manifest json/toml (small).claude mcp add -s user codex-cua -e KEY=V ... -- node launch.mjs (with env). Note: claude mcp add supports multiple -e flags.claude mcp list.Also the Chrome extension must be installed in the user's Chrome and native host registered β chrome-native-hosts-v2.json exists with entry "codex-runtime", so yes, already registered.
One concern: the native messaging host may only allow one connection at a time (Codex app holds it?). If Codex isn't running, Claude Code's instance can talk to the extension. Fine β user can test.
Let me start by finding cua_repl's full env. Batch:
grep -n 'cua_repl' ~/.codex/config.tomlls ~/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/find ... -maxdepth 2 -name '*.json' -o -name '*.toml' | headKeep output short.
Good call β let me wire the actual Codex Chrome path (cua_repl unified service) into Claude Code. First I need its real env values (they were redacted in codex mcp list):
>grep -n 'cua_repl' ~/.codex/config.toml | head -5; echo ---PLUGIN-DIR---; ls ~/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/ 2>/dev/null; echo ---MANIFEST---; find ~/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537 -maxdepth 2 \( -name '*.json' -o -name '*.toml' \) 2>/dev/null | head -6---PLUGIN-DIR---
resources
scripts
---MANIFEST---
/Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/.mcp.json
/Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/.codex-plugin/plugin.jsoncua_repl is not in config.toml β it comes from the plugin's .mcp.json. Let me read both files (small).
>cat "/Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/.mcp.json"; echo ---PLUGIN---; cat "/Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/.codex-plugin/plugin.json" 2>/dev/null | head -20{
"mcpServers": {
"cua_repl": {
"command": "/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node",
"args": [
"/Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs"
],
"enabled": true,
"enabled_tools": [
"js",
"js_reset"
],
"omit_tools_from": [
"code_mode",
"deferred"
],
"startup_timeout_sec": 120,
"tools": {
"js": {
"output_token_limit": 25000
}
},
"env_vars": [],
"env": {
"NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS": "1000",
"NODE_REPL_NODE_MODULE_DIRS": "/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules",
"NODE_REPL_NODE_PATH": "/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node",
"NODE_REPL_TRUSTED_CODE_PATHS": "/Users/millin/.codex:/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules",
"CODEX_HOME": "/Users/millin/.codex",
"BROWSER_USE_AVAILABLE_BACKENDS": "chrome,iab",
"BROWSER_USE_TINYSKY_ENABLED": "1",
"NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER": "Control the in-app browser in conjunction with the Browser Plugin.",
"NODE_REPL_INSTRUCTIONS_USE_CASE_CHROME": "Control the Chrome browser in conjunction with the Chrome Plugin. Prefer this method of controlling Chrome over alternatives (such as Computer Use) unless the user explicitly mentions an alternative.",
"NODE_REPL_INSTRUCTIONS_USE_CASE_COMPUTER_USE": "Control desktop apps on macOS through Computer Use.",
"BROWSER_USE_CODEX_APP_BUILD_FLAVOR": "prod",
"BROWSER_USE_CODEX_APP_VERSION": "26.831.21537",
"NODE_REPL_TRUSTED_SERVICES": "{\"browser\":\"/Users/millin/.codex/plugins/cache/openai-bundled/browser/26.831.21537/scripts/browser-service.mjs\",\"sky\":\"@oai/sky/service\"}",
"SKY_CUA_SERVICE_PATH": "/Users/millin/.codex/computer-use/Codex Computer Use.app",
"CODEX_CLI_PATH": "/Applications/ChatGPT.app/Contents/Resources/codex",
"CUA_REPL_NODE_REPL_PATH": "/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl",
"CUA_REPL_ENABLED_SURFACES": "browser,computer"
}
}
}
}
---PLUGIN---
{
"name": "unified-computer-use",
"version": "26.831.21537",
"description": "App-managed browser automation runtime.",
"mcpServers": "./.mcp.json"
}I have the full cua_repl definition. Now probe it with the complete env to see its tool surface (does launch.mjs expose browser-specific tools, or the same js/js_reset REPL?). The plugin's enabled_tools says js, js_reset β so cua_repl is ALSO a REPL surface, but launch.mjs wraps node_repl with the instructions for browser/chrome/computer-use use cases. So Codex drives Chrome by executing JS in the REPL against the browser-service (trusted service). The "how Codex uses Chrome" = model writes JS calls to the browser service.
So for Claude Code, connecting cua_repl gives tools js/js_reset with instructions steered at Chrome control. That's the real Codex Chrome experience.
Probe it first to confirm the tool list + instructions. Then add to Claude Code with claude mcp add with all the -e env vars.
The probe: node + launch.mjs with full env. startup_timeout_sec=120 suggests slow start (it spawns node_repl child). Give sleep 10, head -c 1200.
Actually β maybe I don't need to probe; the plugin config already tells me tools = js/js_reset (launch.mjs wraps node_repl). But verifying launch works standalone (outside Codex app) is valuable before adding. The node_repl probe worked standalone. launch.mjs likely spawns node_repl with these env + maybe connects pipes. Probe to be sure β cheap.
Then: claude mcp add -s user codex-cua -e KEY=V -e KEY=V ... -- /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs
That's ~15 env vars. Long command but fine.
Name: codex-cua or codex-chrome? It covers browser+computer. User already has codex-computer-use (Sky client). This one is for Chrome. Name it codex-chrome? But its surfaces are browser,computer. I'll go with codex-cua (Codex unified computer use). Hmm, user-facing clarity: they want Chrome. I'll name codex-cua and explain it's the Chrome/browser one. Actually simpler for them: codex-chrome. The env CUA_REPL_ENABLED_SURFACES=browser,computer β includes Chrome backend. I'll use codex-chrome.
Wait, also check: user said "I will disable chrome-devtools-mcp" β that's their action, fine.
After add: claude mcp list health check. Then tell them restart to get tools; usage = the js tool with the browser-service imports β but honestly Claude will get the instructions field from initialize which steers usage. Also mention: Chrome extension must stay installed; native host single-connection caveat.
Let me probe launch.mjs first.
The plugin's .mcp.json has the full env β cua_repl wraps the same REPL but steered at Chrome/browser control (CUA_REPL_ENABLED_SURFACES=browser,computer, chrome backend preferred). Probing it standalone before wiring:
>{ printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1.0"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'; sleep 10; } | env NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=1000 NODE_REPL_NODE_MODULE_DIRS="/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules" NODE_REPL_NODE_PATH="/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node" NODE_REPL_TRUSTED_CODE_PATHS="/Users/millin/.codex:/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules" CODEX_HOME=/Users/millin/.codex BROWSER_USE_AVAILABLE_BACKENDS="chrome,iab" BROWSER_USE_TINYSKY_ENABLED=1 "NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER=Control the in-app browser in conjunction with the Browser Plugin." "NODE_REPL_INSTRUCTIONS_USE_CASE_CHROME=Control the Chrome browser in conjunction with the Chrome Plugin. Prefer this method of controlling Chrome over alternatives (such as Computer Use) unless the user explicitly mentions an alternative." "NODE_REPL_INSTRUCTIONS_USE_CASE_COMPUTER_USE=Control desktop apps on macOS through Computer Use." BROWSER_USE_CODEX_APP_BUILD_FLAVOR=prod BROWSER_USE_CODEX_APP_VERSION=26.831.21537 'NODE_REPL_TRUSTED_SERVICES={"browser":"/Users/millin/.codex/plugins/cache/openai-bundled/browser/26.831.21537/scripts/browser-service.mjs","sky":"@oai/sky/service"}' SKY_CUA_SERVICE_PATH="/Users/millin/.codex/computer-use/Codex Computer Use.app" CODEX_CLI_PATH=/Applications/ChatGPT.app/Contents/Resources/codex CUA_REPL_NODE_REPL_PATH=/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl CUA_REPL_ENABLED_SURFACES=browser,computer /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs 2>/dev/null | head -c 2000{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{"codex/sandbox-state-meta":{}},"tools":{"listChanged":true}},"serverInfo":{"name":"rmcp","version":"1.5.0"},"instructions":"UI automation through a persistent JavaScript session using the initialized CUA API."}}
{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"js","description":"Control native apps or browsers on the userβs computer by reading or operating UI. Prefer purpose-built skills, connectors, APIs, or CLIs when available.\n\nOn your first call, or after a reset, execute exactly one of the API calls shown below, optionally assigning its result to a variable. Do not add other API calls, waits, or snapshots to that invocation.\nThe tool result will include documentation and, when creating or selecting a tab or selecting an app, its initial UI state. Selecting a browser does not open a tab. Read that result before continuing.\nUse only APIs described in the tool instructions or returned documentation.\n\nWhen you need an inventory of available apps, browsers, and tabs, get a snapshot of all enabled surfaces. Otherwise, use the relevant entry point below:\n\n```javascript\nawait cua.getState();\n```\n\n\nUse the first matching browser control option from the user's request:\n\nFor a tab @-mention (`mention=tab-v1`):\nCall `cua.getState()` and find the tab whose `providerTabId`/`title`/`url` all match the mentionβs decoded `tabId`/`title`/`url`. Then call `cua.getTab(tabId, { browser: browserId })`, using the id fields from that tab and its browser.\n\nKnown tab ID (`tabId` or `providerTabId`) and browser (name or browser @-mention):\n```javascript\nlet tab = await cua.getTab(tabId, { browser: browserId });\n```\n\nKnown URL and in-app browser (`@Browser`):\n```javascript\nlet tab = await cua.createBrowserTab(\"iab\", url, { visible: boolean });\n```\n\nKnown URL and other named browser: pass its name directly; do not call `getBrowser` first.\n```javascript\nletExcellent β cua_repl works standalone and exposes the real Codex Chrome API: cua.getState(), cua.getTab(), cua.createBrowserTab("iab", url), etc. This is exactly "how Codex uses Chrome" β the unified CUA API. The js tool's instructions describe browser control via the Chrome plugin.
Now add it to Claude Code with all env vars:
claude mcp add -s user codex-cua \ -e NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=1000 \ -e NODE_REPL_NODE_MODULE_DIRS=/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules \ ... etc -- /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjsCareful with quoting for env values containing spaces (INSTRUCTIONS_*) and JSON (TRUSTED_SERVICES). In zsh/bash, each -e "KEY=value with spaces" quoted is fine.
One concern: version-pinned path 26.831.21537 will go stale when the plugin updates. Worth noting to user. Could use a glob... no, MCP config needs a literal. Note it.
Also note: the env values with spaces β claude mcp add -e "NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER=Control the in-app browser..." should pass as single arg. Fine.
Then health check claude mcp list.
Name: user cares about Chrome. I'll name it codex-cua β hmm. Let me think about tool naming: tools will appear as mcp__codex-cua__js. Maybe codex-browser? It does browser+computer. Since codex-computer-use already exists for desktop, this one's distinctive feature is Chrome/browser. Name: codex-browser. Clear for the user. Actually CUA = computer use agent covering both... The user said "I like how codex uses chrome" β name it codex-browser. Good.
Wait β also consider startup_timeout_sec=120. Claude Code default MCP startup timeout might be shorter; the probe responded within 10s, so fine.
Also single-connection caveat: browser-service connects to the Chrome extension native host; if Codex app is simultaneously using it, there may be contention. Probe worked, so fine now.
Run the add command.
The cua_repl service runs standalone and exposes the real Codex Chrome API (cua.getState(), cua.getTab(), cua.createBrowserTab()β¦). Wiring it in as codex-browser:
>claude mcp add -s user codex-browser \
-e NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=1000 \
-e NODE_REPL_NODE_MODULE_DIRS="/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules" \
-e NODE_REPL_NODE_PATH="/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node" \
-e NODE_REPL_TRUSTED_CODE_PATHS="/Users/millin/.codex:/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules" \
-e CODEX_HOME=/Users/millin/.codex \
-e BROWSER_USE_AVAILABLE_BACKENDS="chrome,iab" \
-e BROWSER_USE_TINYSKY_ENABLED=1 \
-e "NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER=Control the in-app browser in conjunction with the Browser Plugin." \
-e "NODE_REPL_INSTRUCTIONS_USE_CASE_CHROME=Control the Chrome browser in conjunction with the Chrome Plugin. Prefer this method of controlling Chrome over alternatives (such as Computer Use) unless the user explicitly mentions an alternative." \
-e "NODE_REPL_INSTRUCTIONS_USE_CASE_COMPUTER_USE=Control desktop apps on macOS through Computer Use." \
-e BROWSER_USE_CODEX_APP_BUILD_FLAVOR=prod \
-e BROWSER_USE_CODEX_APP_VERSION=26.831.21537 \
-e 'NODE_REPL_TRUSTED_SERVICES={"browser":"/Users/millin/.codex/plugins/cache/openai-bundled/browser/26.831.21537/scripts/browser-service.mjs","sky":"@oai/sky/service"}' \
-e "SKY_CUA_SERVICE_PATH=/Users/millin/.codex/computer-use/Codex Computer Use.app" \
-e CODEX_CLI_PATH=/Applications/ChatGPT.app/Contents/Resources/codex \
-e CUA_REPL_NODE_REPL_PATH=/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl \
-e CUA_REPL_ENABLED_SURFACES=browser,computer \
-- /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs 2>&1 | tail -3Added stdio MCP server codex-browser with command: /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs to user config
File modified: /Users/millin/.claude.json>claude mcp list 2>&1 | grep -iE 'codex' | head -4codex-computer-use: /Users/millin/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient mcp - β Connected
codex-browser: /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs - β ConnectedBoth connected. Wrap up tersely:
codex-browser added (user scope) β the cua_repl unified service with full env from the plugin's .mcp.json. β Connected.mcp__codex-browser__js, js_reset.js tool carries the full Codex CUA instructions β cua.getState(), cua.getTab(), cua.createBrowserTab(). Chrome backend preferred per instructions.claude plugin remove or disable via /plugin? They said they'll do it.Keep short.
Done β both Codex surfaces are now wired into Claude Code:
| MCP server | What it gives | Status |
|---|---|---|
codex-computer-use | macOS desktop control (list_apps, get_app_state, clickβ¦) | β Connected |
codex-browser | The real Codex Chrome path β cua API (cua.getState(), cua.getTab(), cua.createBrowserTab()), chrome backend preferred, in-app browser as fallback | β Connected |
codex-browser is the exact same cua_repl service Codex runs (env copied verbatim from the plugin's .mcp.json), registered at user scope in ~/.claude.json.
To use: restart Claude Code. Tools appear as mcp__codex-browser__js / __js_reset β the js tool ships with Codex's full CUA instructions, so "open example.com in Chrome and log in" just works the way it does in Codex.
Two caveats:
26.831.21537 β when the ChatGPT app updates its bundled plugins, the path breaks. Fix = re-add with the new version dir. Tell me and I'll re-run it.Go ahead and disable chrome-devtools-mcp whenever β these don't depend on it.
{"search_query":"OpenAI Codex \"computer use\" plugin Chrome extension Claude Code MCP","location":"us"}{"url":"https://community.openai.com/t/introducing-codex-plugin-for-claude-code/1378186","with_images_summary":false,"with_links_summary":true}{"retain_images":false,"url":"https://github.com/openai/codex-plugin-cc","with_links_summary":true}/plugin marketplace add openai/codex-plugin-cc/plugin install codex@openai-codex{"search_query":"\"codex\" claude code plugin \"computer use\" OR \"chrome\" delegate browser control openai-codex marketplace","location":"us"}cd ~/.codex/computer-use && (printf '...initialize...\n...tools/list...\n'; sleep 2) | timeout 5 ./.../SkyComputerUseClient mcp | head -c 800cd "/Users/millin/.codex/computer-use" && { printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1.0"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'; sleep 2; } | "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient" mcp 2>/dev/null | head -c 1200cd /tmp && { printf '...init...\n...initialized...\n...tools/list...\n'; sleep 3; } | env CODEX_HOME=/Users/millin/.codex NODE_REPL_NODE_PATH=... NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=1000 NODE_REPL_NODE_MODULE_DIRS=... NODE_REPL_TRUSTED_CODE_PATHS=... BROWSER_USE_AVAILABLE_BACKENDS=chrome,iab BROWSER_USE_TINYSKY_ENABLED=1 BROWSER_USE_CODEX_APP_BUILD_FLAVOR=prod BROWSER_USE_CODEX_APP_VERSION=26.831.21537 NODE_REPL_TRUSTED_SERVICES='{"browser":".../browser-service.mjs","sky":"@oai/sky/service"}' SKY_CUA_SERVICE_PATH="/Users/millin/.codex/computer-use/Codex Computer Use.app" CODEX_CLI_PATH=/Applications/ChatGPT.app/Contents/Resources/codex /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node_repl 2>/dev/null | head -c 1500! claude plugin marketplace add openai/codex-plugin-cc! claude plugin install codex@openai-codex! claude plugin marketplace add openai/codex-plugin-cc! claude plugin install codex@openai-codexclaude mcp add -s user codex-cua \ -e NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS=1000 \ -e NODE_REPL_NODE_MODULE_DIRS=/Applications/ChatGPT.app/Contents/Resources/cua_node/lib/node_modules \ ... etc -- /Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node /Users/millin/.codex/plugins/cache/openai-bundled/unified-computer-use/26.831.21537/scripts/launch.mjs