Codex MCP 工具提示 does not exist in this session's available toolset
如果 codex mcp list 显示 enabled,日志也记录了 tool_count,但当前会话仍说工具不存在,问题在 MCP 工具没有进入该会话的可调用工具集。重新认证、扩大文件权限或反复改提示词通常无效。
错误摘要
Codex 提示 MCP tool does not exist in this session's available toolset 时,先核对服务和工具发现状态,再用全新会话、codex doctor、官方 provider 与版本 A/B 判断是缓存、客户端回归还是自定义 provider 没有暴露工具。
你已经配置了 MCP,codex mcp list 也显示 enabled,但 Codex 回答:
The callable <server> <tool> tool does not exist in this session's available toolset.
或者表现为:Codex 知道 MCP server 的名字,却坚持说当前 session 没有对应工具。
这个错误是什么意思
它表示目标 MCP 工具没有进入当前会话交给模型的可调用工具集。问题可能发生在四个阶段:服务没有真正启动、tools/list 没返回工具、客户端没有缓存工具,或者工具已被发现却没有暴露给当前会话。
所以 codex mcp list 的 enabled 不是最终验证。它只能证明配置项打开了,不能证明某个工具现在可调用。
先确认是不是同一个问题
先运行:
codex mcp list
codex doctor --json
然后核对三件事:
- 目标 MCP server 是否 enabled,启动有没有报错。
- 日志里是否出现该 server 的
tool_count,数量是否大于 0。 - 你明确要求调用一个已知工具时,Codex 是说“工具不存在”,还是调用后返回
Unexpected response type。
如果已经发起工具调用,随后报 Unexpected response type,那是结果解析问题,应按另一条错误排查;本文只处理“工具根本不在当前 session 工具集”。
怎么解决
- 新建一个干净会话复测。 MCP 配置变化后,旧会话不一定会重新装载工具。重新启动 Codex,再创建新会话,明确点名一个已知工具。
- 确认 MCP 本身能列出工具。 日志没有
tool_count或数量为 0 时,优先检查 MCP 命令、URL、环境变量和启动错误。 - 保留一组最小对照。 只启用一个 MCP server,只测试一个稳定工具,避免几十个 server 和 tool search 同时干扰判断。
- 比较 Codex 版本。 GitHub #33547 报告从
0.144.4更新到0.144.5后出现问题,但后续用户表示降回0.144.4仍然复现。因此版本回退只能用于 A/B,不能承诺修复。 - 自定义 provider 做官方路径对照。 如果官方 OpenAI provider 能暴露工具、自定义 Responses provider 不能,重点检查 provider 是否完整传递工具声明,而不是修改 MCP server。
- 提交诊断信息。 附上
codex --version、codex doctor --json的脱敏结果、server 名、预期 tool 名,以及日志中的tool_count。
不要先删除整个 ~/.codex。这会混掉配置、认证和会话三个变量,也可能损失本地状态。更不要为找不到 MCP 工具开启 Full Access;本机文件权限和会话工具暴露不是一回事。
哪些操作通常无效
- 反复换一种提示词:工具没有进入 toolset 时,模型无法靠措辞把它变出来。
- 只看
codex mcp list:enabled 不等于已缓存、已暴露、可调用。 - 没有认证错误却反复 OAuth 登录:公开案例中重新认证后仍然缺工具。
- 直接认定是
0.144.5:目前有更新后开始复现的证据,也有降级后仍复现的反馈,根因尚未收敛。
一句话结论
tool does not exist in this session's available toolset 的核心不是 MCP 配置有没有写,而是工具有没有真正进入当前会话;按启动、发现、缓存、会话暴露四层逐一对照,别靠放大权限或重装碰运气。