Problem
MCP servers that perform write operations (e.g., updating a CRM, creating records in Dataverse, posting to external APIs) use MCP elicitation to get human approval before executing destructive or irreversible changes. This is a security-critical pattern -- the agent builds a preview of the change and the MCP server pauses until the human explicitly approves or rejects it.
Currently, the GitHub Copilot app (desktop) does not advertise the elicitation capability to MCP servers. This means any MCP tool that requires human-in-the-loop confirmation silently fails with an error like:
dataverse_write requires a client that supports MCP elicitation so a human can approve the change before it executes -- this MCP client does not advertise the elicitation capability.
This affects both chat sessions and project sessions.
Expected Behavior
When an MCP server requests elicitation, the app should present an inline approval UI (similar to how ask_user works for the agent) showing:
- A preview of the proposed action (provided by the MCP server)
- Accept / Reject buttons
- The MCP server response is held until the user decides
This is the same pattern GitHub Copilot CLI supports in its interactive terminal mode.
Use Case
Any MCP server that writes to external systems benefits from this:
- CRM/Dataverse writes (creating tasks, updating records)
- Database mutations
- Cloud resource provisioning
- File system writes on remote systems
- Any action where "undo" is expensive or impossible
Suggested Implementation
The MCP spec defines elicitation as a client capability. The app would need to:
- Advertise
elicitation in its MCP client capabilities during initialization
- Render the elicitation request (typically a JSON schema form or a confirmation dialog) in the chat/session UI
- Return the user's response to the MCP server so it can proceed or abort
References
- MCP Elicitation Spec
- GitHub Copilot CLI already supports this in interactive terminal mode (issues #1863, #1872, #1873 were UX fixes for it)
Problem
MCP servers that perform write operations (e.g., updating a CRM, creating records in Dataverse, posting to external APIs) use MCP elicitation to get human approval before executing destructive or irreversible changes. This is a security-critical pattern -- the agent builds a preview of the change and the MCP server pauses until the human explicitly approves or rejects it.
Currently, the GitHub Copilot app (desktop) does not advertise the
elicitationcapability to MCP servers. This means any MCP tool that requires human-in-the-loop confirmation silently fails with an error like:This affects both chat sessions and project sessions.
Expected Behavior
When an MCP server requests elicitation, the app should present an inline approval UI (similar to how
ask_userworks for the agent) showing:This is the same pattern GitHub Copilot CLI supports in its interactive terminal mode.
Use Case
Any MCP server that writes to external systems benefits from this:
Suggested Implementation
The MCP spec defines elicitation as a client capability. The app would need to:
elicitationin its MCP client capabilities during initializationReferences