macOS desktop: bundled Computer Use fails when CODEX_HOME path contains @; settings stays unavailable even though direct MCP works

Open 💬 5 comments Opened Apr 19, 2026 by davidjpramsay

Summary

On the macOS desktop app, if the home / CODEX_HOME path contains @ (example: /Users/<user>@<org>/.codex), bundled Computer Use stays unavailable.

The bundled marketplace appears to parse the local marketplace path as if it had a git @ref. If I route around that with a symlinked CODEX_HOME path that removes @, install then hits a second failure (Is a directory (os error 21)). A direct manual MCP entry makes backend Computer Use work, but Settings > Computer use still shows Computer Use plugin unavailable.

This looks related to #18258, but I did not find an existing issue for the @-in-local-path parser failure.

Environment

  • Codex app: 26.415.40636 (1799)
  • macOS: 26.4.1 (25E253)
  • Hardware: Apple Silicon / M1
  • Home / CODEX_HOME path contains @
  • Example path shape: /Users/<user>@<org>/.codex

Visible symptom

  • Settings > Computer use shows Computer Use plugin unavailable

What I found

  1. With normal ~/.codex, the app logs:
  • bundled_plugins_marketplace_add_failed
  • --ref is only supported for git marketplace sources

and the failing marketplaceRoot is a local path containing @:

  • /Users/<user>@<org>/.codex/.tmp/bundled-marketplaces/openai-bundled
  1. If I launch Codex with a symlinked CODEX_HOME path that removes @, that first failure goes away, but the app then logs:
  • bundled_plugins_marketplace_install_failed
  • failed to install plugin: failed to read marketplace file: Is a directory (os error 21)
  1. Separate but related diagnostic reports show repeated SkyComputerUseClient crashes with:
  • SIGKILL (Code Signature Invalid)
  • Termination Reason: Namespace CODESIGNING, Code 4, Launch Constraint Violation

Relevant local evidence

Desktop app logs:

  • bundled_plugins_marketplace_add_failed ... --ref is only supported for git marketplace sources with marketplaceRoot=/Users/<user>@<org>/.codex/.tmp/bundled-marketplaces/openai-bundled
  • bundled_plugins_marketplace_install_failed ... failed to read marketplace file: Is a directory (os error 21) with marketplaceRoot=/tmp/codex-home/.tmp/bundled-marketplaces/openai-bundled

DiagnosticReports for SkyComputerUseClient:

  • SIGKILL (Code Signature Invalid)
  • Launch Constraint Violation

Repro steps

  1. Use the macOS desktop app with a home directory path containing @
  2. Open Codex and go to Settings > Computer use
  3. Observe Computer Use plugin unavailable
  4. Check desktop logs under ~/Library/Logs/com.openai.codex/...
  5. Observe bundled_plugins_marketplace_add_failed with --ref is only supported for git marketplace sources

Optional additional repro:

  1. Launch Codex with a symlinked CODEX_HOME path that removes @
  2. Observe the failure changes to failed to read marketplace file: Is a directory (os error 21)

Local workaround that got backend Computer Use working

I added a direct MCP server entry in ~/.codex/config.toml:

[mcp_servers.computer-use]
command = "/Applications/Codex.app/Contents/Resources/plugins/openai-bundled/plugins/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient"
args = ["mcp"]

I also used a symlink path without @:

  • /Users/Shared/codex-home -> /Users/<user>@<org>/.codex

and pointed the bundled marketplace source at the symlink-backed path instead of the original @ path.

With that setup, actual Computer Use MCP calls work in chat, but the Settings page still shows plugin unavailable.

Why this looks like an app bug

  • The local marketplace source is not a git URL, but the app behaves as if the @ in the path is a git @ref.
  • After routing around that, the installer appears to treat the marketplace directory as a file (Is a directory).
  • The backend can be made to work manually, so this does not look like only bad local config.

Related issues

  • #18258
  • #18523

View original on GitHub ↗

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