openai / openai/codex

Remote plugin keeps removed MCP tools after cache purge and process-dead restart

Open
#41,557 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug mcp skills
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of Codex is running?

  • Bundled Codex CLI: 0.150.0-alpha.8
  • Desktop app: 26.820.80927 (build 7271)
  • Platform: macOS 26.2 (25C56), arm64

What issue are you seeing?

Codex Desktop continues exposing tools that a private remote MCP plugin has removed.

The live Mission Control MCP server now exposes zero GitHub tools. Codex still injects 27 plugin tools, including 16 removed github_* tools, into every new turn.

This is not only a stale sidebar display. The removed tools remain present in the model's active callable tool inventory.

Plugin type: private, user-scoped, created-by-me remote plugin.

Expected behavior

After the plugin's MCP tool surface changes, Codex should refetch the current tool list and remove tools that are no longer returned. New turns after a process-dead restart must not receive removed tool schemas.

In this reproduction, the refreshed inventory should contain zero github_* tools.

Actual behavior

Codex repeatedly restores the same obsolete set of 27 plugin tool names, including these 16 removed GitHub tools:

  • github_issues_list
  • github_milestones_list
  • github_wiki_get_page
  • github_issues_bulk_plan
  • github_wiki_propose_patch
  • github_issues_create
  • github_issues_update
  • github_milestones_create
  • github_milestones_update
  • github_issues_bulk_apply
  • github_wiki_apply_patch
  • github_wiki_create_page
  • github_code_search
  • github_code_get_content
  • github_issues_comments_list
  • github_issues_comments_create

Reproduction and recovery attempts

  1. Update the remote MCP service so its current tools/list contains zero GitHub tools.
  2. Start a new Codex Desktop turn. The 16 removed GitHub tools are still injected.
  3. Remove the generated schema cache under $CODEX_HOME/cache/codex_apps_tools/.
  4. Remove the plugin's local materialized bundle and remote catalog cache.
  5. Delete the persisted mcp-extension-sidebar-catalog atom from the desktop global state and its backup.
  6. Fully quit Codex.
  7. After the process is dead, remove the regenerated tool-schema cache again.
  8. Relaunch Codex and start a new turn.

Observed: Codex regenerates the obsolete 27-tool inventory.

The sorted tool-name set before and after the process-dead purge/restart has the identical SHA-256:

cea4a4b70623a541fb553de351bd9292a05e2ec8281aa6ddce16bd7d851e0db5

The containing cache file is rewritten, but the obsolete plugin tool-name set remains unchanged.

Uninstalling and reinstalling the plugin has historically forced a refresh, but users should not have to uninstall/reinstall a development plugin after every tool-surface update.

Why this appears to be a registry invalidation bug

The local generated schema and persisted sidebar catalog were removed while Codex was not running. The obsolete inventory was nevertheless rebuilt after relaunch, indicating that a higher-level remote app/tool registry or discovery cache is serving the old schemas.

This may be related to #33266, but that report concerns notifications/tools/list_changed for stdio MCP servers. This reproduction affects a private remote ChatGPT/Codex plugin and persists through a full desktop restart plus post-exit cache purge.

Privacy

No application logs, session transcript, repository content, credentials, or account identifiers are attached.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing remote plugin discovery and refresh from the remote MCP tools/list entry point, then inspect regeneration of $CODEX_HOME/cache/codex_apps_tools/ and the mcp-extension-sidebar-catalog state. Done means a changed remote tool surface is reflected in new turns, with removed tools absent after cache purge and process-dead restart.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.