You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
exec: non-required MCP servers let the first turn start with no tools #26
codex exec (0.162.0+fork.ca04973b4) starts a turn while a stdio MCP server that is not marked required is still handshaking. The first request of the turn carries none of that server's tools. Each exec / exec resume restarts the servers, so the first one or two calls of every turn are affected.
A model that names tools it read in instructions (for example Claude Haiku 5.5) then emits mcp__<server>__<tool> or a bare tool name with no namespace. Codex answers function_call_output: "unsupported call: <name>" and the call never reaches the server. Models that poll list_mcp_resources until tools appear hide the problem, so behaviour depends on timing.
Reproduction
A fake stdio MCP server that sleeps 25s before answering initialize, not marked required: the first request lists only the other servers' tools, and the model reports the tool unavailable. With required = true the same run succeeds.
Requested changes
exec should wait for every enabled server's startup (bounded by startup_timeout_sec), not only required ones.
Resolve mcp__<server>__<tool> names, and bare tool names that are unique across servers, when they arrive without a namespace.
Return "server still starting" instead of "unsupported call" when the named server has not finished its handshake.
Downstream workaround: msp-agent renders required = true on every [mcp_servers.*] (Versent/msp-agent#33). Tracked as Vogt WI-1514.
Activity
thedancingdeveloper commentedon Oct 14, 2026
Fix in PR #27 (#27), head 2dbd27c, targeting integrate/codex-next.
Gates: fmt clean; clippy -D warnings clean (core, exec, codex-mcp, rmcp-client); the targeted core integration tests pass 8/8, core registry 44/44, exec 64/64, codex-mcp 255/255. The full core suite was not run.
exec: wait for every MCP server's startup and resolve un-namespaced M…