anthropics / anthropics/claude-code
[FEATURE] Debounce consecutive short messages into one turn (chat-style input in claude.ai/code and mobile)
- Dominant language
- Python
- Stars
- 145k
- Forks
- 23.1k
- PR merge metrics
- PR metrics pending
Description
### 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
People who chat from a phone write the way they do on WhatsApp: one thought split across several short bubbles sent a few seconds apart. Claude Code treats every bubble as a complete turn and starts a full reply to each one. A fragment like "stay here and" gets answered on its own, the next fragment "tell me as it goes" gets a second, unrelated answer, and the conversation derails. It also burns a full model run on every fragment, so it is both worse and more expensive than waiting.
Related but distinct from #92482 (quote-reply): that one is about pointing at an earlier message; this one is about how consecutive new messages are grouped.
### Proposed Solution
A short input debounce in claude.ai/code and the mobile app (and optionally in Remote Control sessions generally):
- when a new message arrives within a small window after the previous one (for example 2 to 3 seconds, configurable), hold the turn and merge the messages into one user turn, in order;
- if the composer shows the user is still typing, keep holding until they stop or until a hard cap (for example 10 seconds) is reached;
- render the merged bubbles as they were sent, but pass them to the model as one turn;
- a per-session setting to turn it off for users who want strict one-message-one-reply behavior.
The existing behavior in Remote Control (prompts sent mid-turn are queued and delivered together) already does something close to this when a reply is in flight; the request is to apply the same grouping before a reply starts.
### Alternative Solutions
- Writing the whole thought in one bubble (works, but it is not how people type on a phone).
- Teaching the model to treat a short follow-up as a continuation of the previous message (helps, but it cannot recover once a separate reply has already been generated).
- Every mainstream chat client (WhatsApp, Telegram, Slack) lets the recipient answer a burst of messages as one unit; here the recipient is forced to answer each bubble.
### Priority
Medium - Would be very helpful
### Feature Category
Other (claude.ai/code web client and mobile app; Remote Control)
### Use Case Example
1. Long session on the desktop app, continued from the phone through Remote Control.
2. I type "ok, I think I get it, let's see how it goes" and send, then two seconds later "stay here and tell me as we go".
3. Today: the first bubble gets a closing reply, the second gets "what do you want me to tell you?", because it was read as a new request.
4. With a debounce: both bubbles reach the model as one turn and get one answer that reads them together.
### Additional Context
Claude Code 2.1.241, desktop app (Code tab) plus Remote Control from the mobile app. Observed repeatedly in a conversational (non-coding) session, where fragmented input is the norm.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing message delivery in claude.ai/code, the mobile app, and Remote Control, focusing on pre-reply grouping and the existing mid-turn queueing behavior. Confirm how debounce timing, typing detection, a hard cap, merged model turns, preserved bubble rendering, and a per-session opt-out would fit; done means consecutive messages receive one reply without changing their displayed bubbles.
Written by the indexing model from the issue text.
Assessment
- Domain
- backend, frontend, mobile
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100