Codex prioritizes MCP server tools over native tools when Claude Code is configured as MCP server

Resolved 💬 3 comments Opened Nov 5, 2025 by adnichols Closed Nov 5, 2025

What version of Codex is running?

codex-cli 0.55.0

What subscription do you have?

Plus

Which model were you using?

gpt-5-codex

What platform is your computer?

Darwin 25.1.0 arm64 arm

What issue are you seeing?

When Claude Code is configured as an MCP server in Codex, Codex preferentially routes tool calls to Claude's MCP-provided tools (e.g., claude.Grep, claude.Glob) instead of using its own native/local equivalents. This creates unnecessary overhead and unexpected behavior, as Codex should prefer its own optimized tools for local filesystem operations.

Ordinarily, I have to specifically tell codex to use claude for actions. The reason claude is configured this way is to provide an easy way to have the two agents work together on issues.

What steps can reproduce the bug?

Config Example:

[mcp_servers.claude]
command = "claude"
args = ["mcp", "serve"]

Example:

➜  fp-vercel git:(main) codex exec "find notes for issue nod-000"
OpenAI Codex v0.55.0 (research preview)
--------
workdir: /Users/anichols/code/fp-vercel
model: gpt-5-codex
provider: openai
approval: never
sandbox: workspace-write [workdir, /tmp, $TMPDIR]
reasoning effort: high
reasoning summaries: auto
session id: 019a54a8-c62f-7942-aa46-b646baf42bbb
--------
user
find notes for issue nod-000
deprecated: `experimental_use_rmcp_client` is deprecated. Use `rmcp_client` instead.
  You can either enable it using the CLI with `--enable rmcp_client` or through the config.toml file with `[features].rmcp_client`

thinking
**Searching for issue nod-000 notes**
tool claude.Grep({"pattern":"nod-000","path":".","output_mode":"content","n":true,"head_limit":20})
claude.Grep({"pattern":"nod-000","path":".","output_mode":"content","n":true,"head_limit":20}) success in 16ms:
{
  "content": [
    {
      "text": "{\"mode\":\"content\",\"numFiles\":0,\"filenames\":[],\"content\":\"\",\"numLines\":0,\"appliedLimit\":20}",
      "type": "text"
    }
  ]
}

thinking
**Checking for case and format variations**
tool claude.Grep({"pattern":"nod[-_]000","path":".","output_mode":"content","i":true,"n":true,"head_limit":20})
claude.Grep({"pattern":"nod[-_]000","path":".","output_mode":"content","i":true,"n":true,"head_limit":20}) success in 36ms:
{
  "content": [
    {
      "text": "{\"mode\":\"content\",\"numFiles\":0,\"filenames\":[],\"content\":\"\",\"numLines\":0,\"appliedLimit\":20}",
      "type": "text"
    }
  ]
}

What is the expected behavior?

Codex uses it's native tools instead of MCP:

➜  fp-vercel git:(main) ✗ codex exec "find notes for issue nod-000"
OpenAI Codex v0.55.0 (research preview)
--------
workdir: /Users/anichols/code/fp-vercel
model: gpt-5-codex
provider: openai
approval: never
sandbox: workspace-write [workdir, /tmp, $TMPDIR]
reasoning effort: high
reasoning summaries: auto
session id: 019a54b0-5631-7f03-81b3-ae66687f5528
--------
user
find notes for issue nod-000
deprecated: `experimental_use_rmcp_client` is deprecated. Use `rmcp_client` instead.
  You can either enable it using the CLI with `--enable rmcp_client` or through the config.toml file with `[features].rmcp_client`

thinking
**Searching repository for nod-000 issue**
exec
bash -lc 'rg -n "nod-000"' in /Users/anichols/code/fp-vercel exited 1 in 182ms:


thinking
**Trying alternative match cases**
exec
bash -lc 'rg -ni "nod-000"' in /Users/anichols/code/fp-vercel exited 1 in 27ms:

Additional information

This has been configured in codex for weeks and was working fine - but just surfaced in the last day or so as a new behavior, so seems related to the 0.54/0.55 release changes.

View original on GitHub ↗

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