User input attached to tool permission prompt is silently discarded when tool call fails
The Ghost Message
You know that moment when you lean into the mic, deliver the perfect one-liner... and realize it was muted the whole time?
That's what happens here. When a tool permission prompt appears, the user approves with Yes → Tab → types additional context → Enter. If the tool then fails (MCP error, network issue, whatever), the user's typed message is silently discarded. The model never sees it. The user thinks they said something profound. The model carries on, blissfully unaware.
Cue the "I literally just told you" frustration loop.
Repro
1. Create a dummy MCP server that always fails:
{
"mcpServers": {
"always-fails": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-http", "--url", "http://localhost:99999/nonexistent"]
}
}
}
Or simpler — any MCP tool pointing at a dead endpoint will do.
2. Trigger a tool call that hits this server
3. On the permission prompt:
- Press Yes
- Press Tab to open the input field
- Type something meaningful:
"Hey, this endpoint moved to port 3000 btw" - Press Enter
4. Tool fails (connection refused, 405, 500, whatever)
5. Observe: The model receives the tool error. The user's message "Hey, this endpoint moved to port 3000 btw" is gone. Vanished. The model proceeds without it.
Expected
User input attached to the permission prompt should be delivered to the model regardless of tool outcome. The input is user intent — it's a message, not a side effect of the tool succeeding.
Actual
Input is coupled to tool success. Tool fails → input evaporates. User talks to the void.
Why This Stings
In MCP-heavy workflows, server errors aren't rare — they're Tuesday. The natural reflex is to approve the call and add guidance ("try this other endpoint", "the auth token changed", "skip this and do X instead"). Exactly the moment the user is most communicative is when their words get eaten.
The result: a user who gave clear direction, a model that received none, and a conversation that drifts apart for reasons neither side can see.
Environment
- Claude Code CLI (latest)
- Any MCP server that returns an error after permission is granted
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗