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>:token@127.0.0.1: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>:token@127.0.0.1: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?
- Configure Graylog MCP server in Codex:
codex mcp add graylog --url "http://<REDACTED_TOKEN>:token@127.0.0.1:9000/api/mcp"
- Confirm elicitation feature is disabled:
codex features disable tool_call_mcp_elicitation
codex features list | rg tool_call_mcp_elicitation
--> expected: false
- Start a new Codex session (or force at launch):
codex -c features.tool_call_mcp_elicitation=false
- 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:
- Codex still sends elicitation form despite the feature flag being disabled, or
- the flag is not applied to MCP startup handshake payload generation.
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:
Then Codex shows:
⚠ MCP startup incomplete (failed: graylog)
Reproduction details
Direct request to Graylog MCP endpoint with elicitation.form reproduces the server-side failure:
Response:
Control check (no elicitation.form) succeeds:
Response:
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
Also tested launch override:
Result is unchanged: same MCP startup handshake failure with elicitation.form.
Environment
What steps can reproduce the bug?
--> expected: false
Actual result
Codex still fails MCP handshake for Graylog with:
Control check (server behavior)
What is the expected behavior?
When
tool_call_mcp_elicitationis 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:
Additional information