[FEATURE] Queued messages should reach the model while a long tool call is running

Status Open
Reported on v2.1.284
Maintainer reply None cached
Activity 0 comments · opened Sep 28, 2026

Problem

A message typed while Claude is working (queued with plain Enter) is only delivered to the model after the currently running tool call finishes. If that tool call is long (a build, a test suite, a long codex exec, a subagent), the message sits in the queue for its whole duration. The model cannot see it, react to it, or stop the work.

The only alternative today is Ctrl+Enter / Esc, which interrupts the whole turn. There is nothing in between.

Repro

  1. Ask Claude to run sleep 10 six times, one Bash call each.
  2. While run 2 or 3 is executing, type stop and press Enter.
  3. The message reaches the model only when that sleep returns. Replace sleep 10 with a 15-minute command and the message waits 15 minutes.

Observed on Claude Code 2.1.284, macOS.

Requested

When a queued message arrives while a tool call is running, give the user or the model a way to act on it before the tool returns. Options, any of which would help:

  • Deliver the queued message to the model immediately and let it decide to cancel the running tool (the tool keeps running unless the model cancels it).
  • Or a keybinding that cancels only the running tool call and delivers the queued message, without discarding the turn.
  • Or automatically move a long-running foreground Bash call to the background when a message is queued, so the turn is free to read it.

Workaround in use

A PreToolUse hook that forces known long commands into run_in_background, so the turn is never blocked on them. It works, but it has to guess which commands are long.

View original on GitHub ↗