Desktop app: send_message to a busy session waits for the turn to end, while typed messages are picked up mid-turn

Status Open
Maintainer reply None cached
Activity 0 comments · opened Sep 17, 2026

Summary

When a session is busy, a message typed by the user is injected at the next tool call, partway through the turn. A message sent with the ccd_session_mgmt send_message tool returns delivery: queued and waits until the whole turn ends. This matches the tool's own description ("runs when that finishes"), so this is a feature request, not a bug report.

Reproduction (Claude desktop app, Windows, 2026-09-17)

  1. Session B runs 12 separate ~10-second tool calls and logs which messages it sees after each call.
  2. During step 1, session A calls send_message to B → returns delivery: queued.
  3. A few seconds later, the user types a message into B.

| Message | Sent | Seen by B |
|---|---|---|
| send_message from A | first | only after all 12 steps, as a new turn (~2.5 min later) |
| typed by user | second | after step 1, mid-turn |

Why it matters

One session sending another a correction ("stop, the brief is wrong") is the main reason to message a busy session. As things stand, the correction arrives only after the target session has finished acting on the wrong brief. A typed message would have stopped it at the next tool call.

Request

Pick up send_message messages at the next tool call, the same way typed messages are, or add an option for it (e.g. interrupt: "next_tool_call" | "end_of_turn").

Minor note

While the message was waiting, list_events on B showed it as the first entry in the transcript, above the prompt that started the session. After the turn ended it showed in the correct place. Anything that reads the transcript during that window could conclude the message was already delivered.

Related (delivery reliability): anthropics/claude-code#86279

🤖 Generated with Claude Code

View original on GitHub ↗