Repository navigation
Allow users to cancel or remove enqueued messages before they are executed #1857
Copy link
Copy link
Open
Labels
area:input-keyboardKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text inputKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text input
Description
Describe the feature or problem you'd like to solve
There is no way to cancel or remove a message or slash command that has been queued (via Ctrl+Q / Ctrl+Enter) while the agent is busy or during /compact. Once enqueued, messages are automatically processed in order when the agent finishes — even if the user has changed their mind or made a mistake.
Proposed solution
Add a mechanism to view and selectively cancel queued messages before they are executed. This could take the form of:
- A
/queuecommand to list pending messages, with/queue cancel <n>to remove a specific entry. - An interactive UI overlay (e.g., triggered by a keybinding) showing the queue with the ability to navigate and delete items.
- A keybinding (e.g.,
Ctrl+Shift+Q) to clear the entire queue at once.
This would benefit Copilot CLI users by:
- Preventing accidental or unwanted actions from queued messages the user no longer intends to send.
- Complementing existing cancellation behavior (
Ctrl+Cfor active operations,Escapefor specific commands like/compact) with control over pending operations. - Improving confidence in the queueing workflow, encouraging users to queue more freely knowing they can course-correct.
Example prompts or workflows
- Accidental queue during compaction — User sends a message during
/compact(auto-queued per v0.0.389), then realizes it was wrong. They want to remove it before compaction finishes and the message is sent to the model. - Multiple queued commands — User queues several slash commands with
Ctrl+Qwhile the agent is working, then decides the third one is no longer needed. They run/queueto see the list and/queue cancel 3to drop it. - Clear entire queue — User has queued several messages but the agent's response changes their plan entirely. They press
Ctrl+Shift+Q(or run/queue clear) to discard all pending messages and start fresh. - Review before execution — User wants to double-check what's queued before the agent finishes. They press a keybinding to see a transient overlay of queued items, then dismiss it or remove specific entries.
Additional context
- Current queueing was introduced in v0.0.394 (
Ctrl+D) and the keybinding was later changed toCtrl+Q/Ctrl+Enterin v0.0.407. - Auto-queueing during
/compactwas added in v0.0.389. - Existing cancel mechanisms (
Ctrl+C,Escape) only affect the currently running operation, not messages waiting in the queue.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:input-keyboardKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text inputKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text input
Activity
Slyceth commentedon Mar 6, 2026
Does enqueing cost credits?
jmoseley commentedon Mar 6, 2026
This should be possible with
esc. Does that not work for you?dorlugasigal commentedon Mar 6, 2026
Not exactly, let's say I queue 3 tasks after a current task, and press esc, then all 3 tasks gets cancelled, we might need a better control over the queue list, to be able to reorder or just cancel one of them with a typo
trim.8CD483D7-7755-48EF-88A1-6BD2C4C5F9C6.MOV
nagilson commentedon Mar 23, 2026
This was helpful but I agree with the comment above. Perhaps a simple 'improvement' would be to add the 'Esc to cancel' text on the queued prompts, but this needs to be balanced with the main running task's 'esc to cancel'...
kmahyyg commentedon Apr 11, 2026
Better to have a /queue command to manage queued message and requests.
donaldthegreat120-gif commentedon Apr 11, 2026
I agree. We need a /queue command.
Omzig commentedon Apr 12, 2026
Yes in the GUI you can click the [x] on a steer or que item. we need to /steer cancel or /queue cancel
petrroll commentedon Jul 19, 2026
+1 also #4179
Stanzilla commentedon Aug 9, 2026
Was very surprised to learn that this is not a thing yet
kasai2210 commentedon Sep 5, 2026
You can use Ctrl + C to cancel the queued messages
rishidevcli54-mcp commentedon Sep 5, 2026
kvnloo commentedon Sep 27, 2026
I think queued input needs stable identity rather than being an anonymous FIFO.
Assign every queued message a
queue_id, then expose operations over that identity:list,cancel,move,clearThe important semantic detail: cancellation should happen before admission to a model turn, so a cancelled queue item consumes no request/token budget and produces no side effect.
It would also be useful to distinguish
queued,admitted, andexecuting; once admitted, normal active-turn cancellation rules apply instead of queue cancellation.That removes ambiguity around what
Esc/Ctrl+Care actually cancelling.