exec 里可选 MCP 默认只等 1 秒,握手成功也可能没进工具表
可选服务器超时后静默从第一轮目录丢掉。桌面能用是因为后面还会刷新。exec 要 required,或把宽限改成 0。
codex exec 在会话一开始就拍下工具表,后面不再等。可选 MCP(没写 required = true)只享有顶层宽限,默认 1000 毫秒。网络 HTTP 服务器经常在握手完成后才返回 tools/list,那时第一轮目录已经定了,模型看不到工具。桌面长会话会在后续轮刷新,所以同一份 config 在 TUI 里「能用」、exec 里像没装。
exec 必须用到的服务器直接标必达:
[mcp_servers.docs]
url = "https://mcp.example.com/mcp"
required = true
startup_timeout_sec = 20
或者取消共享宽限,改等各服务器自己的 startup_timeout_sec:
mcp_optional_startup_grace_ms = 0
高延迟链路也可以把宽限抬到 3000–5000。required = true 的服务器本来就不走这段宽限,失败会让启动失败,这是有意的。
核对:codex mcp list 连得上不等于 exec 第一轮带了工具。用一条只读探测:
codex exec --sandbox read-only "列出已连接 MCP 工具名,不要调用写操作。"
省略日志里出现 omitting pending optional MCP server 时,先改宽限或 required,不要先开 --yolo。