Skip to content

ChatGPT Desktop startup rewrites bundled computer-use MCP to enabled=false while plugin stays enabled #34807

Closed

Description

@jjoanna2-debug

Summary

Launching ChatGPT Desktop on macOS rewrites the shared ~/.codex/config.toml entry for the bundled computer-use MCP server to enabled = false, while leaving computer-use@openai-bundled itself enabled. The next CLI read confirms that the MCP is disabled.

This is a persistence/reconciliation defect, not a missing or unsigned helper. The official Computer Use setup documentation exposes two separate controls and instructs users to turn on both the Computer Use server and skill toggles. It does not document a launch-time reset of either control.

Reproduction

  1. Install and enable the bundled Computer Use plugin.

  2. Enable its MCP server and verify both persisted states:

    [plugins."computer-use@openai-bundled"]
    enabled = true
    
    [mcp_servers.computer-use]
    command = "<absolute path to signed bundled helper>"
    args = ["mcp"]
    cwd = "<absolute plugin directory>"
    enabled = true
  3. Fully launch ChatGPT Desktop.

  4. Read only the two relevant sections of ~/.codex/config.toml, then run codex mcp get computer-use.

Expected behavior

ChatGPT Desktop should preserve the user's enabled MCP state while reconciling the first-party bundled plugin. If path normalization is required, it should not change the enablement decision.

Actual behavior

The plugin remains enabled:

[plugins."computer-use@openai-bundled"]
enabled = true

But the MCP entry is rewritten to:

[mcp_servers.computer-use]
command = "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient"
args = ["mcp"]
cwd = "."
enabled = false

codex mcp get computer-use then reports:

computer-use (disabled)

Timestamped before/after evidence

All timestamps below are from the same Mac in Europe/Lisbon time on July 22, 2026:

Time Observed state
17:41:01 WEST Known-good config backup contains the valid absolute bundled-helper path and enabled = true; the plugin is also enabled.
19:16:48 WEST /Applications/ChatGPT.app/Contents/MacOS/ChatGPT starts.
19:16:49 WEST ChatGPT's embedded codex ... app-server starts.
19:16:58 WEST ~/.codex/config.toml mtime changes; the MCP stanza now has the relative command/cwd shown above and enabled = false.

This establishes a launch-correlated write to the shared config. It does not identify which internal ChatGPT reconciliation component performed the write.

Bundled manifest and signature evidence

The first-party plugin manifest supplies command resolution but no enablement policy:

{"mcpServers":{"computer-use":{"command":"./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient","args":["mcp"],"cwd":"."}}}

Byte-identical copies of this manifest are present in the ChatGPT app bundle, the user plugin cache, and the generated bundled-marketplace snapshot. None contains an enabled field.

The corresponding helper app in each of those three locations passes strict/deep code-signature verification with:

Identifier=com.openai.sky.CUAService
Authority=Developer ID Application: OpenAI OpCo, LLC (2DC432GLL2)
TeamIdentifier=2DC432GLL2

There is therefore no evidence here of a corrupt, modified, or unsigned Computer Use bundle.

Environment

  • macOS 26.5.2 (25F84), Apple Silicon (arm64)
  • ChatGPT Desktop 26.715.72359, bundle build 5718
  • Embedded CLI: codex-cli 0.145.0-alpha.30
  • PATH CLI: codex-cli 0.145.0
  • Computer Use helper 26.715.1000451, build 1000451

Non-duplication and scope boundary

Requested fix

Please make first-party plugin/MCP reconciliation preserve the user's persisted Computer Use server enablement, or establish one authoritative persisted setting that keeps the plugin and MCP controls synchronized. Rewriting command/cwd fields must not silently reset enabled to false.

The supported fix should live in the first-party reconciliation path. Users should not need to patch signed app/plugin bundles, run a config watchdog, or maintain a persistent override merely to retain the documented enabled state across launch.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    mcpIssues related to the use of model context protocol (MCP) servers
    configIssues involving config.toml, config keys, config merging, or config updates
    on Jul 22, 2026
  2. jjoanna2-debug commented on Jul 22, 2026

    @jjoanna2-debug
    Author

    @ax-openai, could you route this to the owner of Desktop bundled-plugin/MCP reconciliation? You triaged the closest earlier Computer Use report (#25813) into #25758; that report was later closed after its reporter confirmed the older failure was fixed. This is a current-build regression with a narrower persisted-state failure: the plugin remains enabled, but ChatGPT Desktop launch rewrites the MCP server from enabled = true to enabled = false nine seconds after startup. The timestamped before/after state, manifest boundary, and signature verification are in the issue body. A maintainer determination of whether this rewrite is intended policy or a reconciliation defect would resolve the immediate ambiguity; the requested fix is first-party persistence, not signed-bundle patching or a user watchdog.

  3. PaulRBerg commented on Aug 12, 2026

    @PaulRBerg

    Please make first-party plugin/MCP reconciliation preserve the user's persisted Computer Use server enablement, or establish one authoritative persisted setting that keeps the plugin and MCP controls synchronized

    Or better yet, define a bespoke config file for the Desktop app, separate from the main ~/.codex/config.toml file!

    See #38193

  4. PaulRBerg commented on Aug 12, 2026

    @PaulRBerg

    @ax-openai can we please get an official answer from the Codex team here? This looks like a bug. I'm noticing the same behavior as @jjoanna2-debug, the MCP servers is automatically disabled:

    [mcp_servers.computer-use]
      args = ["mcp"]
      command = "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient"
      cwd = "."
      enabled = false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingcomputer-useconfigIssues involving config.toml, config keys, config merging, or config updatesmcpIssues related to the use of model context protocol (MCP) servers

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions