Desktop Codex does not refresh MCP tools after notifications/tools/list_changed

Open 💬 0 comments Opened Jul 27, 2026 by Run-Nathan

Summary

Codex Desktop does not expose MCP tools added at runtime after the server sends a valid notifications/tools/list_changed notification.

Environment

  • Codex Desktop: Microsoft Store package 26.721.4979.0
  • Codex CLI: 0.145.0
  • OS: Windows 11
  • MCP transport: stdio
  • Server: Konnect 0.2.0

Reproduction

  1. Start a new Codex Desktop task with the Konnect MCP server configured over stdio.
  2. Confirm the initial tool list contains only the server's starter tools.
  3. Call load_toolset({ name: "pcb_board" }).
  4. The server reports success and its active tool count increases from 13 to 24.
  5. Attempt to use newly added tools such as get_board_info, get_layer_list, or set_board_size.

Expected behavior

After receiving notifications/tools/list_changed, Codex should refresh tools/list and make the newly returned tools available to the current task.

Actual behavior

The dynamic tools are not added to Codex's callable tool registry. They remain unavailable even after restarting the Codex Desktop application and creating a new task.

Independent protocol verification

Using the same installed Konnect stdio binary directly:

  1. initialize returns capabilities.tools.listChanged: true.
  2. Initial tools/list does not contain the PCB tools.
  3. tools/call for load_toolset("pcb_board") succeeds.
  4. The server emits exactly:
{"jsonrpc":"2.0","method":"notifications/tools/list_changed"}
  1. A subsequent tools/list request returns get_board_info, get_layer_list, and the other PCB tools.

This matches the MCP tool-list change flow described in the MCP specification:
https://modelcontextprotocol.io/specification/2024-11-05/server/tools

Could you confirm whether dynamic MCP tool-list refresh is supported in Codex Desktop? If it is intended to be supported, please treat this as a client-side refresh/registration defect.

View original on GitHub ↗