[Windows] custom remote MCP is discovered, first call says tool disabled, then namespace disappears
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using?
Windows package: OpenAI.Codex_26.901.4073.0_x64__2p2nqsd0c76g0
Bundled CLI: codex-cli 0.153.1
What platform are you using?
Windows x64, OS build 26200.
What issue are you seeing?
A working custom remote MCP app can transiently disappear at the Codex/ChatGPT tool-binding boundary even though the MCP server remains healthy and its tool schema is unchanged.
Observed sequence in a fresh/current desktop chat:
- Connector/tool discovery exposes the custom MCP namespace and its
start_process,read_output, andkill_processtools. - The first real
start_processinvocation is rejected by the client/harness with the exact message:The MCPv3 tool has been disabled. - Immediate connector rediscovery no longer includes the MCP namespace at all.
- The same MCP app later reappears and discovery -> invocation succeeds again, with no app reconfiguration, MCP server restart, OAuth reset, endpoint change, or tool-definition change.
This is not a server-arrived MCP error. For the rejected call, the MCP server's request telemetry has no matching /mcp arrival or process-launch event. During the same interval, other already-active chats continued making successful MCP calls to the same backend, and both local and public health endpoints remained HTTP 200.
Why this does not look like the documented frozen-tool-snapshot case
The exposed MCP tool-definition source had not changed for more than a day before the incident. The tool-definition owner last changed on September 3; the failure reproduced on September 5. Later implementation-only changes did not alter the tool names or schemas. When the namespace returned, the same tool schema worked without an admin refresh.
Expected behavior
If a custom MCP app/action is enabled and its approved tool snapshot is unchanged, discovery and invocation should remain consistent. If a policy or safety layer disables an action, the client should return a stable, attributable reason without transiently removing the entire namespace from subsequent discovery.
Additional boundary evidence
After the incident, the same desktop process generation repeatedly exposed and invoked the MCP successfully. Current production telemetry also shows normal transport health and no corresponding 4xx/5xx server failures. This makes local transport/server recovery an ineffective workaround for the failure mode because the rejected invocation never reaches the MCP server.
Related but apparently distinct Windows issues include plugin disappearance (#27152, #28537) and an OAuth-related permanently disabled MCP connector (#38198). This report is specifically the transient discovered -> invocation says disabled -> namespace disappears -> later returns without local changes sequence.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No file or test is named. Start by tracing the Windows desktop MCP discovery and invocation path around the disabled-tool response, using the supplied sequence and server telemetry to distinguish client-side state from transport failure. Reproduce the discovered-to-disabled-to-absent-to-restored sequence, then add a regression check for stable discovery and invocation.
Written by the indexing model from the issue text.
Assessment
- Domain
- operating-systems, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100