openai / openai/codex

Codex Desktop does not dismiss server-originated MCP elicitation after notifications/cancelled

Open
#40,390 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug mcp
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

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

codex-mcp-client/0.149.0-alpha.4.3

What subscription do you have?

A valid one

What platform is your computer?

MacOS 26.5.2

What issue are you seeing?

Environment

  • Codex MCP client: codex-mcp-client/0.149.0-alpha.4.3
  • MCP protocol: 2025-06-18
  • Transport: Streamable HTTP

Upstream is unable to cancel created elicitation by sending a cancel notification.

  • The elicitation remains open.
  • The completed tool result is not surfaced.
  • Manually clicking Cancel dismisses the stale form and immediately reveals the already-completed result.
What steps can reproduce the bug?
  1. A tools/call triggers a server-originated elicitation/create.
  2. Codex displays the elicitation form.
  3. The user approves the action through an external dashboard or upstream decides to abort.
  4. The MCP server sends notifications/cancelled with requestId exactly matching the pending elicitation/create JSON-RPC string ID.
  5. The server continues execution and returns the tools/call result.
What is the expected behavior?
  • Codex dismisses the cancelled elicitation.
  • The parent tool call continues and displays its result.
Additional information
  • The same server behavior dismisses the elicitation correctly in Claude Code.
  • Normal upstream elicitation submission works correctly in Codex, the issue happens only when upstream decided to withdraw the elicitation request by sending a cancellation.
  • Logged frames indicate that requestID matches the ID in the elicitation/create frame.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing handling of MCP tools/call, elicitation/create, and notifications/cancelled request IDs in the Rust client, then reproduce the Streamable HTTP sequence described in the issue. Done means a matching cancellation dismisses the elicitation and the parent tools/call result becomes visible without manual interaction.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop-dev, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.