[FEATURE] Setting to hold queued messages until the turn completes instead of folding them mid-turn

Status Open
Reported on v2.1.234
Maintainer reply None cached
Activity 0 comments · opened Aug 18, 2026

Feature request

Add a setting that makes a message typed while Claude is working wait until the current turn finishes, instead of being injected into the running turn.

Current behavior

Two separate paths deliver typed input into a turn that is already in progress, and neither is configurable:

  1. Mid-turn fold. At each tool-result boundary the main loop pulls every queued command with priority <= next and injects it into the running turn as a queued_command attachment. Typed input always enqueues at next, so it is always folded. The only suppressor is isMidTurnFoldSuspended(), which is set solely by end_session.
  2. Interrupt on submit. When every currently executing tool reports interruptBehavior() === "cancel", the engine emits interruptible_tool_in_progress: true, and a fresh submit aborts the running turn outright (interrupt_on_submit) rather than queuing.

Checked against 2.1.234 on darwin-arm64: there is no settings key and no CLAUDE_CODE_* environment variable that controls either path.

Desired behavior

A setting, with the current behavior as the default, that holds human-typed input below the next priority (or otherwise excludes it from the mid-turn fold) and suppresses interrupt-on-submit, so the message lands only once the turn completes.

Why this matters

Mid-turn injection changes what the model is doing halfway through work I already asked for. When the follow-up is a next task rather than a correction, folding it in mixes the two: the model re-plans against a goal that arrived after it started, and the original turn never reaches a clean finish. Steering is the right default for corrections. It is the wrong default for stacking work. Ctrl-C already covers the case where I do want to stop it now.

The workaround today is to leave the text sitting in the input box and not press Enter, which means staying at the session instead of queueing work and stepping away.

Suggested shape

{ "queuedMessages": { "delivery": "steer" } }

with "turn-end" as the opt-in alternative.

Related issues

  • #65452 — the same request, closed by the stale bot with "open a new issue if this is still relevant".
  • #73661 (open) — sequential vs merged delivery of queued messages. Complementary: it assumes queueing already defers to turn end.
  • #50246, #36817 — closed, covering queue-vs-interrupt in earlier versions.

Environment

  • Version: 2.1.234 (Claude Code)
  • Platform: darwin-arm64, macOS 25.5.0
  • Install: npm global, native binary

View original on GitHub ↗