[Feature Request] Add "Unsend" button to recall messages before Claude processes them
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
When using Claude Code Desktop, I sometimes send a message and immediately realize it was wrong — either I said something incorrectly, made a typo that changes the meaning, or accidentally sent it to the wrong session. If I send it while the session was already working on a task, there is often a brief window after hitting send where Claude clearly hasn't started processing the message yet (no response has begun streaming), but there's no way to take it back.
This leads to wasted time and tokens, as Claude processes and responds to a message I didn't intend to send. I then have to either interrupt the response, clarify what I actually meant, or start a new turn — all of which add unnecessary friction to the workflow.
Proposed Solution
Add an "Unsend" button that appears briefly after a message is sent, during the window before Claude begins processing/streaming a response. This would work similarly to Gmail's "Undo Send" feature.
Ideal behavior:
- After pressing Enter/Send, an "Unsend" button appears next to or below the sent message
- The button remains available during the pre-processing window (while the request is queued but before Claude has started generating a response)
- Clicking "Unsend" would cancel the API request, remove the message from the conversation, and return the message text to the input field so it can be edited and re-sent
- Once Claude begins streaming a response, the "Unsend" button disappears (at that point the existing "Stop" button takes over)
Alternative Solutions
Currently the only workarounds are:
- Quickly hitting the "Stop" button once Claude starts responding, then sending a corrected message — but this still wastes a turn and can leave confusing context in the conversation. Most importantly, if it was already working on a task when I pressed send, pressing stop would interrupt what was working on.
- Manually deleting the conversation turn after the fact, which is more disruptive
- Being very careful before hitting send, which isn't always realistic in a fast-paced workflow
A keyboard shortcut (e.g., Ctrl+Z / Cmd+Z immediately after sending) could also work as an alternative or complement to a visible button.
Priority
Low - Nice to have
Feature Category
Interactive mode (TUI)
Use Case Example
- I'm working on a project in Claude Code Desktop and have multiple sessions open
- I quickly type a question about a React component and hit Enter
- Immediately after sending, I realize I sent the message to the wrong session — this session is for my Python backend project
- There's a brief moment where Claude hasn't started responding yet (the message is still being sent to the API)
- With an "Unsend" button, I could click it during that window to recall my message
- The message would be removed from this session and returned to the input field, so I could switch to the correct session and paste it there
- This would save me from getting an irrelevant response, wasting tokens, and having to clean up the wrong session's context
Additional Context
This is a common UX pattern in messaging apps (e.g., Gmail's "Undo Send", Slack's message editing, iMessage's "Unsend"). The key insight is that there's always a network latency window between when a user sends a message and when the server begins processing it — this window is a natural opportunity for an "unsend" action.
For Claude Code Desktop specifically, this would be especially useful because:
- Sessions can accumulate significant context, and a wrong message can derail the conversation
- Token usage matters for users on usage-based plans
- Multiple sessions make it easy to accidentally send to the wrong one
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗