Skip to content

Allow users to cancel or remove enqueued messages before they are executed #1857

Description

@dorlugasigal

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 /queue command 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+C for active operations, Escape for 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

  1. 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.
  2. Multiple queued commands — User queues several slash commands with Ctrl+Q while the agent is working, then decides the third one is no longer needed. They run /queue to see the list and /queue cancel 3 to drop it.
  3. 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.
  4. 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 to Ctrl+Q / Ctrl+Enter in v0.0.407.
  • Auto-queueing during /compact was added in v0.0.389.
  • Existing cancel mechanisms (Ctrl+C, Escape) only affect the currently running operation, not messages waiting in the queue.

Activity

  1. Slyceth commented on Mar 6, 2026

    @Slyceth

    Does enqueing cost credits?

  2. jmoseley commented on Mar 6, 2026

    @jmoseley
    Contributor

    This should be possible with esc. Does that not work for you?

  3. dorlugasigal commented on Mar 6, 2026

    @dorlugasigal
    Author

    This should be possible with esc. Does that not work for you?

    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
  4. nagilson commented on Mar 23, 2026

    @nagilson

    This should be possible with esc. Does that not work for you?

    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'...

  5. kmahyyg commented on Apr 11, 2026

    @kmahyyg

    Better to have a /queue command to manage queued message and requests.

  6. donaldthegreat120-gif commented on Apr 11, 2026

    @donaldthegreat120-gif

    I agree. We need a /queue command.

  7. Omzig commented on Apr 12, 2026

    @Omzig

    Yes in the GUI you can click the [x] on a steer or que item. we need to /steer cancel or /queue cancel

  8. added
    area:input-keyboardKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text input
    and removed on Apr 16, 2026
  9. added theissue type on Apr 16, 2026
  10. petrroll commented on Jul 19, 2026

    @petrroll

    +1 also #4179

  11. Stanzilla commented on Aug 9, 2026

    @Stanzilla

    Was very surprised to learn that this is not a thing yet

  12. kasai2210 commented on Sep 5, 2026

    @kasai2210

    You can use Ctrl + C to cancel the queued messages

  13. rishidevcli54-mcp commented on Sep 5, 2026

    @rishidevcli54-mcp
  14. kvnloo commented on Sep 27, 2026

    @kvnloo

    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, clear

    The 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, and executing; once admitted, normal active-turn cancellation rules apply instead of queue cancellation.

    That removes ambiguity around what Esc/Ctrl+C are actually cancelling.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:input-keyboardKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text input

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions