[BUG] Claude CLI: URL-mode elicitation/create not supported — server-initiated OAuth flows fails with not supported error
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Claude Code does not support elicitation/create with mode: "url" sent by MCP servers. This blocks server-initiated OAuth authorization flows during session setup (e.g. 3LO flows where the server needs the user to visit an authorization URL).
Setup:
- Server declares
"elicitation": {"url": {}}in initialize response capabilities - Client version .108 version declares
"elicitation": {}in initialize request capabilities -> Note this can also be an issue where url mode is not supported.
Server sends elicitation/create mid/task (not as a response on any mcp api call)
json
{
"jsonrpc": "2.0",
"id": 100000,
"method": "elicitation/create",
"params": {
"mode": "url",
"elicitationId": "uuid",
"url": <AUTH-URL>,
"message": "Please authorize to continue."
}
}
Response from claude --debug (mcp debug logs)
{"jsonrpc": "2.0", "id": 100000, "error": {"code": -32602, "message": "MCP error -32602: Client does not support URL-mode elicitation requests"}}
Testing with version 87
{"method": "initialize", "params": {"protocolVersion": "2025-11-25", "capabilities": {"roots": {}, "elicitation": {"form": {}, "url": {}}}, "clientInfo": {"name": "claude-code", "version": "2.1.87"}}, "jsonrpc": "2.0", "id": 0}
For similar elicitation:
Claude mcp logs provide info on:
MCP server "server name": Elicitation request received during initialization: {"method":"elicitation/create","params":{"mode":"url","message":"Please authorize to continue.","elicitationId":"0f5e7464-72eb-40ce-aa06-511c258b7c9a","url":"<auth_url>"}}
No url shown to user and server received response:
elicitation response (id=100000): {"result": {"action": "cancel"}, "jsonrpc": "2.0", "id": 100000}
What Should Happen?
Elicitation should be supported where:
- elicitation/create request should be handled properly and user should see the url.
- Elicitation capability should clearly reflect url mode. (it was declared in 87 but dropped in 108).
Error Messages/Logs
Version 108
{"jsonrpc": "2.0", "id": 100000, "error": {"code": -32602, "message": "MCP error -32602: Client does not support URL-mode elicitation requests"}}
Version 87 which declares the URL mode drops silently.
MCP server "server name": Elicitation request received during initialization: {"method":"elicitation/create","params":{"mode":"url","message":"Please authorize to continue.","elicitationId":"0f5e7464-72eb-40ce-aa06-511c258b7c9a","url":"<auth_url>"}}
No url shown to user and server received response:
elicitation response (id=100000): {"result": {"action": "cancel"}, "jsonrpc": "2.0", "id": 100000}
Steps to Reproduce
- Create a minimal stdio MCP server that declares elicitation.url capability
and sends elicitation/create with mode: "url":
python
#!/usr/bin/env python3
"""Minimal MCP server that sends URL-mode elicitation after initialize."""
import json, sys
def write(msg):
sys.stdout.write(json.dumps(msg) + "\n")
sys.stdout.flush()
for line in sys.stdin:
msg = json.loads(line.strip())
method = msg.get("method", "")
msg_id = msg.get("id")
if method == "initialize":
write({
"jsonrpc": "2.0", "id": msg_id,
"result": {
"protocolVersion": "2025-11-25",
"capabilities": {"tools": {}, "elicitation": {"url": {}}},
"serverInfo": {"name": "elicitation-test", "version": "1.0.0"},
}
})
elif method == "notifications/initialized":
# Send URL-mode elicitation to client
write({
"jsonrpc": "2.0", "id": 1,
"method": "elicitation/create",
"params": {
"mode": "url",
"elicitationId": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://example.com/authorize",
"message": "Please authorize to continue.",
}
})
elif method == "tools/list":
write({"jsonrpc": "2.0", "id": msg_id, "result": {"tools": []}})
elif "result" in msg or "error" in msg:
# Log client's response to elicitation/create
print(json.dumps(msg), file=sys.stderr)
- Save as
elicitation_test_server.py
- Add to ~/.claude.json:
json
{
"mcpServers": {
"elicitation-test": {
"type": "stdio",
"command": "python3",
"args": ["elicitation_test_server.py"]
}
}
}
- Run
claude --debug
- Check stderr/debug logs for the client's response to elicitation/create
Expected: Claude Code shows the URL to the user with consent controls per MCP
spec.
Actual (v2.1.87): Client declares "elicitation": {"form": {}, "url": {}} in
capabilities but silently returns {"action": "cancel"}. User never sees the URL.
Actual (v2.1.108): Client declares "elicitation": {} and returns
{"code": -32602, "message": "Client does not support URL-mode elicitation requests"}
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.87
Claude Code Version
2.1.108
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 8 comments on GitHub. Read the full discussion on GitHub ↗