GPT-5.6 Sol Responses Lite hides custom MCP tools; disabling Responses Lite restores them

Open 💬 4 comments Opened Jul 16, 2026 by tracework-ai
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What version of the Codex App are you using (From “About Codex” dialog)?

Powered by Codex & OWL Version 26.707.91948 Released Jul 16, 2026

What subscription do you have?

pro

What platform is your computer?

macOS 26.5.2, Apple Silicon (arm64)

What issue are you seeing?

With gpt-5.6-sol, a healthy custom stdio MCP server is discovered and its
resources and resource templates can be listed, but its callable tools are
absent or unreachable in Codex Desktop and codex exec.

The server exposes multiple tools. A standalone MCP client successfully:

  1. Initializes the same server process.
  2. Receives all registered tools from tools/list.
  3. Calls a read-only status tool and receives the expected response.

In Codex, the model may call list_mcp_resources, but it cannot invoke the
server's registered tools. It instead reports that the requested MCP tool is
unavailable.

This appears to be specific to the Responses Lite request path. I copied the
current gpt-5.6-sol model catalog entry and changed only:

"use_responses_lite": false

With that single change, the same MCP tool call succeeds with both Codex
0.144.5 and 0.145.0-alpha.18. Removing the override makes the tool
unavailable again. GPT-5.4 can also call the same MCP tool with the same MCP
configuration.

What steps can reproduce the bug?

  1. Configure a working custom stdio MCP server that exposes at least one

resource and one read-only tool:

``toml
[mcp_servers.example_server]
command = "<MCP_SERVER_EXECUTABLE>"
args = ["<OPTIONAL_ARGUMENTS>"]
``

  1. Confirm independently that the server is healthy:
  • initialize succeeds.
  • tools/list includes the read-only tool.
  • Calling that tool through a standalone MCP client succeeds.
  1. Start a fresh Codex Desktop task using gpt-5.6-sol.
  1. Ask Codex to call the tool directly:

``text
Call the example_server MCP tool health_check exactly once.
Do not inspect files, do not use the shell, and do not modify anything.
Return only whether the MCP call succeeded and its status.
``

  1. Observe that Codex may discover the server's resources, but does not call

health_check and reports that the tool is unavailable.

  1. The CLI behavior can be reproduced with an equivalent command:

``shell
codex exec --ephemeral --json \
-m gpt-5.6-sol \
-s read-only \
-C "<TRUSTED_DIRECTORY>" \
'Call the example_server MCP tool health_check exactly once. Do not inspect files, do not use the shell, and do not modify anything. Return only whether the MCP call succeeded and its status.'
``

  1. Copy the current gpt-5.6-sol model entry to a local model catalog,

changing only use_responses_lite to false, and configure Codex to use
it:

``toml
model_catalog_json = "<MODEL_CATALOG_FILE>"
``

  1. Repeat the same prompt. The MCP tool now succeeds.

The results observed were:

| Codex version or configuration | Result |
| --- | --- |
| 0.144.0-alpha.4, default Sol metadata | MCP tool unavailable |
| 0.144.2, default Sol metadata | Only resource listing reached; MCP tool unavailable |
| 0.144.4, default Sol metadata | MCP tool unavailable |
| 0.144.5, default Sol metadata | MCP tool unavailable |
| 0.145.0-alpha.13, default Sol metadata | MCP tool unavailable |
| 0.145.0-alpha.18, default Sol metadata | MCP tool unavailable |
| 0.144.5, identical Sol catalog except use_responses_lite=false | MCP tool succeeds |
| 0.145.0-alpha.18, identical Sol catalog except use_responses_lite=false | MCP tool succeeds |
| GPT-5.4 with the same MCP configuration | MCP tool succeeds |

All server names, tool names, paths, and arguments in this report are
anonymized placeholders.

What is the expected behavior?

Every tool returned by an enabled MCP server's tools/list response should be
callable by the selected model.

Enabling Responses Lite must not make custom MCP tools unreachable. A request
for the read-only tool should execute normally, just as it does through a
standalone MCP client, with GPT-5.4, and with the otherwise identical
gpt-5.6-sol model catalog entry using use_responses_lite=false.

Additional information

This looks consistent with the Responses Lite tool-exposure problems reported
in:

Those issues describe tools or the tool-search mechanism being moved into
additional_tools while the top-level tools field is absent, leaving the
tools unreachable to the model. In this reproduction, resources remain
discoverable while the custom MCP tool namespace cannot be invoked.

It may also overlap with the Codex Desktop MCP symptom reported in:

There was a working gpt-5.6-sol Desktop task before a Desktop update.
However, isolated reruns with older Codex binaries under the current model
metadata still fail. This suggests that the regression is connected to the
current Sol metadata or request path rather than solely to one client binary.

The strongest A/B evidence is:

  • Same model slug
  • Same prompt
  • Same MCP process and configuration
  • Same authentication and sandbox
  • Same working directory
  • Only use_responses_lite changed from true to false
  • MCP tool unavailable with Responses Lite
  • MCP tool succeeds without Responses Lite

A possible fix is to preserve a callable route to custom MCP tools when
Responses Lite is enabled—for example, by retaining the required MCP tool or
tool-search schema in the top-level tools collection, or otherwise ensuring
that the model can invoke the MCP namespace advertised through
additional_tools.

View original on GitHub ↗

4 Comments

github-actions[bot] contributor · 1 month ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #33609
  • #33608
  • #33575
  • #33547
  • #33587

Powered by Codex Action

CaliLuke · 1 month ago

please contribute to the discussion https://github.com/openai/codex/discussions/33682 to raise visibility with the team. The MCP bug reports are very clearly being ignored right now.

LittleMonsterFr · 1 month ago

I can independently reproduce this with Apple's Xcode MCP bridge. The symptoms and A/B results match this issue very closely.

Environment:

  • Codex App: 26.707.91948
  • Codex CLI: 0.144.5
  • Model exhibiting the problem: gpt-5.6-sol
  • macOS: 26.5.2, Apple Silicon
  • Xcode: 27.0 beta (27A5218g)
  • MCP server:

``toml
[mcp_servers.xcode]
enabled = true
command = "xcrun"
args = ["mcpbridge"]
``

The bridge resolves to:

/Applications/Xcode-beta.app/Contents/Developer/usr/bin/mcpbridge

Evidence that the MCP connection and server are healthy:

  • codex mcp list reports the Xcode server enabled.
  • xcrun mcpbridge --help runs successfully.
  • Codex's own SQLite logs show the server initialized and repeatedly report:

``text
listed MCP server tools while building tool list server_name=xcode tool_count=47
``

  • The discovered set includes XcodeListWindows, BuildProject, RunAllTests, RenderPreview, and the other expected Xcode tools.
  • Therefore, this is not a failure to start mcpbridge, initialize MCP, or receive tools/list.

Reproduction with the current client:

codex exec \
  --model gpt-5.6-sol \
  --sandbox read-only \
  --json \
  "Use the XcodeListWindows MCP tool. Do not use shell commands. Report only whether the call succeeded and the number of windows."

With gpt-5.6-sol, no mcp_tool_call event is emitted. The model simply reports that the call failed or that the tool is unavailable, despite Codex having discovered all 47 tools.

I also tried narrowing the server to the requested tool:

-c 'mcp_servers.xcode.enabled_tools=["XcodeListWindows"]'

That did not restore the tool call.

The current client reports these feature states:

tool_search                          removed  false
tool_search_always_defer_mcp_tools   removed  true
tool_suggest                         stable   true

Passing --disable tool_search_always_defer_mcp_tools did not change the behavior. codex doctor still reported the feature enabled and reported no feature override, which is consistent with the flag being non-configurable in this release.

Most importantly, the model A/B test succeeds on the same current Codex installation, MCP process, config, workspace, sandbox, and open Xcode instance:

codex exec \
  --model gpt-5.4 \
  --sandbox read-only \
  --json \
  "Use the XcodeListWindows MCP tool. Do not use shell commands. Report only whether the call succeeded and the number of windows."

This emitted an actual MCP tool call:

server: xcode
tool: XcodeListWindows
status: completed

and returned:

tabIdentifier: windowtab1
workspacePath: /Users/littlemonster/dev/ddp1plus-controller/Rheon/Rheon.xcodeproj

I additionally tested locally cached older clients:

  • Codex 0.142.0 with GPT-5.5 successfully called XcodeListWindows.
  • Codex 0.141.0 with GPT-5.5 successfully called XcodeListWindows.
  • The current gpt-5.6-sol model refuses those older clients, so this older-client result alone cannot isolate the client version from the model/request path.

My initial suspicion was a client regression caused by forced MCP-tool deferral. After comparing the model A/B result and the evidence in this report, the more precise conclusion is that the decisive trigger is the current gpt-5.6-sol Responses Lite request path: the MCP tools are discovered internally but never become callable/model-visible. GPT-5.4 is a confirmed temporary workaround; no Xcode MCP reconfiguration is required.

Written and posted by Codex on behalf of LittleMonsterFr.

waltersilene-ops · 3 days ago

Thank goodness I'm a complete coding newbie. Luckily, I had DeepSeekHarness help me find the discussion about this issue and then got it to fix Codex for me.
Great! 🎉 Here’s a quick summary of the complete fix:

The Issue Chain

  1. Root cause: When the gpt-5.6-sol model uses the Responses Lite request path, it hides all custom MCP tools (including the command‑execution tools from codex-app-tools) — this is a known bug confirmed by the community (Issue #33679).
  2. Fix: Override models.json locally, set use_responses_lite to false, forcing the old request logic.
  3. Two minor pitfalls (both fixed):
  • models.json had a UTF‑8 BOM causing parsing failures → removed.
  • The path escape in config.toml was broken → switched to single‑quote literals.

Current Status

  • ✅ codex-app-tools MCP server is enabled (enabled: true).
  • ✅ models.json is BOM‑free, strictly valid JSON, and use_responses_lite = false.
  • ✅ config.toml loads correctly, with model_catalog_json pointing to a valid file.
  • ✅ Codex has been restarted (PID 27100), the VM Asaki-Analysis-Lab remains running, and isolation is intact.

All backups are stored under C:\Users\Administrator\.codex\JS备份\ (models.json.original, config.toml.bak, codex-app-tools-mcp-backup) so you can roll back at any time.

If a future Codex update overwrites the local models.json or resets the configuration, causing the tools to disappear again, just apply the same fix. Feel free to reach out if you run into any other issues!