codex - 💡(How to fix) Fix tool_call_mcp_elicitation=false does not suppress elicitation.form in MCP initialize (Graylog handshake fails with -32603) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openai/codex#17492Fetched 2026-04-12 13:27:44
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Participants
Timeline (top)
labeled ×3unlabeled ×1

Error Message

MCP client for graylog failed to start: MCP startup failed: handshaking with MCP server failed: JSON-RPC error: -32603: Unrecognized field "form" (class io.modelcontextprotocol.spec.McpSchema$ClientCapabilities$Elicitation), not marked as ignorable (0 known properties: ]) at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain:

io.modelcontextprotocol.spec.McpSchema$InitializeRequest["capabilities"] >io.modelcontextprotocol.spec.McpSchema$ClientCapabilities["elicitation"]->io.modelcontextprotocol.spec.McpSchema$ClientCapabilities$Elicitation["form"])

Fix Action

Fix / Workaround

  • Graylog auth/connectivity are working:
    • POST /api/mcp with valid auth and a minimal initialize payload returns HTTP 200.
  • The failure is specific to capabilities.elicitation.form.
  • Graylog was upgraded from 7.0.5 to 7.0.6; behavior is unchanged.
  • As a temporary workaround, I used a local proxy shim that strips capabilities.elicitation.form from initialize before forwarding to Graylog. With that shim, handshake succeeds and Codex can use Graylog MCP.
  • This strongly suggests either:
    1. Codex still sends elicitation form despite the feature flag being disabled, or
    2. the flag is not applied to MCP startup handshake payload generation.

Code Example

MCP client for `graylog` failed to start: MCP startup failed: handshaking with MCP server failed: JSON-RPC error: -32603: Unrecognized field "form" (class io.modelcontextprotocol.spec.McpSchema$ClientCapabilities$Elicitation), not marked as ignorable (0 known properties: ]) at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain:

io.modelcontextprotocol.spec.McpSchema$InitializeRequest["capabilities"] >io.modelcontextprotocol.spec.McpSchema$ClientCapabilities["elicitation"]->io.modelcontextprotocol.spec.McpSchema$ClientCapabilities$Elicitation["form"])

---

curl -i -X POST \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{"elicitation": {"form":true}},"clientInfo":{"name":"probe","version":"1.0"}}}' \  
"http://<REDACTED_TOKEN>:[email protected]:9000/api/mcp"

---

HTTP/1.1 500 Internal Server Error
  
{"jsonrpc":"2.0","id":1,"error":{"code":-32603,"message":"Unrecognized field \"form\" ..."}}

---

curl -i -X POST \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo": {"name":"probe","version":"1.0"}}}' \
 "http://<REDACTED_TOKEN>:[email protected]:9000/api/mcp"

---

HTTP/1.1 200 OK
 
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18",...}}

---

tool_call_mcp_elicitation        stable             false

---

codex -c features.tool_call_mcp_elicitation=false

---

codex mcp add graylog --url "http://<REDACTED_TOKEN>:[email protected]:9000/api/mcp"

---

codex features disable tool_call_mcp_elicitation
codex features list | rg tool_call_mcp_elicitation

---

codex -c features.tool_call_mcp_elicitation=false

---

JSON-RPC error: -32603: Unrecognized field "form" ... ClientCapabilities$Elicitation["form"]
MCP startup incomplete (failed: graylog)
RAW_BUFFERClick to expand / collapse

What version of Codex CLI is running?

codex-cli 0.120.0

What subscription do you have?

Pro

Which model were you using?

gpt-5.3-codex

What platform is your computer?

Linux 6.8.0-106-generic x86_64 x86_64

What terminal emulator and version are you using (if applicable)?

running in a generic Ubuntu Linux shell environment

What issue are you seeing?

When starting Codex with a configured Graylog MCP server, MCP startup fails during handshake with:

MCP client for `graylog` failed to start: MCP startup failed: handshaking with MCP server failed: JSON-RPC error: -32603: Unrecognized field "form" (class io.modelcontextprotocol.spec.McpSchema$ClientCapabilities$Elicitation), not marked as ignorable (0 known properties: ]) at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain:

io.modelcontextprotocol.spec.McpSchema$InitializeRequest["capabilities"] >io.modelcontextprotocol.spec.McpSchema$ClientCapabilities["elicitation"]->io.modelcontextprotocol.spec.McpSchema$ClientCapabilities$Elicitation["form"])

Then Codex shows:

⚠ MCP startup incomplete (failed: graylog)

Reproduction details

Direct request to Graylog MCP endpoint with elicitation.form reproduces the server-side failure:

curl -i -X POST \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{"elicitation": {"form":true}},"clientInfo":{"name":"probe","version":"1.0"}}}' \  
"http://<REDACTED_TOKEN>:[email protected]:9000/api/mcp"

Response:

HTTP/1.1 500 Internal Server Error
  
{"jsonrpc":"2.0","id":1,"error":{"code":-32603,"message":"Unrecognized field \"form\" ..."}}

Control check (no elicitation.form) succeeds:

curl -i -X POST \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo": {"name":"probe","version":"1.0"}}}' \
 "http://<REDACTED_TOKEN>:[email protected]:9000/api/mcp"

Response:

HTTP/1.1 200 OK
 
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18",...}}

Why this looks like a Codex bug

I disabled the feature flag but Codex still appears to send elicitation.form during startup:

codex features list | rg tool_call_mcp_elicitation

tool_call_mcp_elicitation        stable             false

Also tested launch override:

codex -c features.tool_call_mcp_elicitation=false

Result is unchanged: same MCP startup handshake failure with elicitation.form.

Environment

  • Codex CLI: @openai/codex 0.120.0
  • OS: Ubuntu Linux shell
  • Graylog: 7.0.6+711d207 (MCP endpoint at /api/mcp)

What steps can reproduce the bug?

  1. Configure Graylog MCP server in Codex:
codex mcp add graylog --url "http://<REDACTED_TOKEN>:[email protected]:9000/api/mcp"
  1. Confirm elicitation feature is disabled:
codex features disable tool_call_mcp_elicitation
codex features list | rg tool_call_mcp_elicitation

--> expected: false

  1. Start a new Codex session (or force at launch):
codex -c features.tool_call_mcp_elicitation=false
  1. Observe startup output.

Actual result

Codex still fails MCP handshake for Graylog with:

JSON-RPC error: -32603: Unrecognized field "form" ... ClientCapabilities$Elicitation["form"]
⚠ MCP startup incomplete (failed: graylog)

Control check (server behavior)

  • initialize without capabilities.elicitation.form succeeds (HTTP 200).
  • initialize with capabilities.elicitation.form fails (HTTP 500, -32603).

What is the expected behavior?

When tool_call_mcp_elicitation is disabled (either in config or via -c features.tool_call_mcp_elicitation=false), Codex should not include capabilities.elicitation.form in MCP initialize requests.

As a result:

  • Graylog MCP handshake should complete successfully.
  • Codex should start without:
    • MCP client for 'graylog' failed to start
    • ⚠ MCP startup incomplete (failed: graylog)

Additional information

  • Graylog auth/connectivity are working:
    • POST /api/mcp with valid auth and a minimal initialize payload returns HTTP 200.
  • The failure is specific to capabilities.elicitation.form.
  • Graylog was upgraded from 7.0.5 to 7.0.6; behavior is unchanged.
  • As a temporary workaround, I used a local proxy shim that strips capabilities.elicitation.form from initialize before forwarding to Graylog. With that shim, handshake succeeds and Codex can use Graylog MCP.
  • This strongly suggests either:
    1. Codex still sends elicitation form despite the feature flag being disabled, or
    2. the flag is not applied to MCP startup handshake payload generation.

extent analysis

TL;DR

The issue can be resolved by ensuring that the tool_call_mcp_elicitation feature flag is properly applied to prevent Codex from sending capabilities.elicitation.form in the MCP initialize request.

Guidance

  • Verify that the tool_call_mcp_elicitation feature flag is correctly disabled in the Codex configuration.
  • Check the Codex code to ensure that the feature flag is applied to the MCP startup handshake payload generation.
  • Use a debugging tool or log output to confirm that the capabilities.elicitation.form field is not being sent in the MCP initialize request when the feature flag is disabled.
  • Consider using a temporary workaround, such as a local proxy shim, to strip the capabilities.elicitation.form field from the initialize request until a permanent fix is implemented.

Example

No code snippet is provided as the issue is related to the Codex configuration and feature flag application.

Notes

The issue seems to be specific to the interaction between Codex and the Graylog MCP server, and the provided information suggests that the problem is related to the tool_call_mcp_elicitation feature flag not being properly applied.

Recommendation

Apply workaround: Use a local proxy shim to strip the capabilities.elicitation.form field from the MCP initialize request until a permanent fix is implemented, as this has been shown to resolve the issue in the short term.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING