What
When you submit a message, Claude Code first reserves a turn (one round of Claude working on your message) and then sends it on. It now tracks whether a reserved turn is heading for a call to the model:
reserve()resets the flag at the start of each turn.markDispatchForModelsets it, but only while the turn is still being dispatched and belongs to the current turn.- A new
isDispatchingForModelgetter reports it, defaulting to false where it is not tracked. sendQueuedNow, used by the send-now key for queued messages, used to look only atisRunning. It now takes its immediate path only when the session is neither running nor dispatching for the model. Otherwise it goes on to its queue-handling path.
Why
A message sent with send-now just after another message was submitted, but before the model call started, is no longer handled as if the session were idle. It goes through the queue instead.