You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have verified this feature I'm about to request hasn't been suggested before.
Describe the enhancement you want to request
Right now If I queue message there is no way to "unqueue" it. Sometimes I overcorrect the agent and It invents the fix simualteniously with me so I end up wasting its attention by parroting the solution. I want to be able unqueue the message. e.g. by clicking on it
This issue might be a duplicate of an existing feature request. Please check:
[FEATURE] Clone / Branch a Session #3000: [FEATURE] Clone / Branch a Session - mentions using /undo on branched sessions, which is related to the ability to undo or revert messages
Feel free to ignore if this addresses a different specific case.
It would be nice to do something similar to Claude Code where if you hit UP if the latest message is in queue then it pulls it out of queue and into your prompt. Gives you a chance to modify it or simply CTRL+C to clear it out.
Reacted by ormandj, lenstr, Adam Spiers, Ajay Krishnan, Levi Figueira, Nico Zessoules, Wahlburg, Dobes Vandermeer, Hadrien, Drewry Pope and 15 more
Reacted by Joscha Götzer, David Torbeck, Ajay Krishnan, Nico Zessoules, Arsalankhan315, Dobes Vandermeer, 7heMech, Matthew Kernes and Dulanga Jayawardena
I like the way Codex implements this. When you hit up arrow it dequeues and allows you to edit. It's not idea, but it is better than not being able to dequeue or edit the queued messages.
Reacted by Dobes Vandermeer, bbeaupain2, Evatt Harvey-Salinger, Sergey Kostrukov, pry, Denis K, BrianAguilarWasco, Alexey Shevchenko, Amanpreet Singh, Drewry Pope and 11 more
I nearly opened a new issue for this issue again, but when looking through the backlog I found a jungle of issues and PR's and I ran a research task to aggregate everything I could find, because I don't think this encourages anyone to pick any of this up again, this issue has been open since Nov 27, 2025. In that time, four contributors independently built implementations — all auto-closed without maintainer review. Before a fifth attempt starts, it's worth knowing what already exists, or if one of these could be actually used.
There also seems to be misunderstanding about what /undo is supposed to do (revert actual code or only undo the last queued message?)
Anyway, I'm sorry if this comment seems belittling or something, I genuinely wanted to get an overview of what's hanging and preventing this from getting fixed.
What was previously built, but never really merged:
PR #6271 (@anntnzrb, Jan 2026) — most architecturally complete TUI implementation:
<leader>i to edit last queued message, <leader>d to discard
New API endpoints: GET/DELETE /session/:id/queue/:msgID
File and image attachment preservation on edit
Visual EDITING badge in prompt
Closed by author after 3 rebases. Zero maintainer feedback.
PR #24471 (@mortenfc, May 2026) — most complete cross-surface implementation:
Edit and cancel queued messages (X button + UP arrow)
steer mode: inject queued message into current LLM turn immediately
wrap mode: finish current step then halt
Works in TUI and desktop/web
38 commits. Author confirmed still working on it when bot auto-closed it. Community asked for reopen in June 2026.
PR #27399 (@veenified, Jun 2026) — Cancel button via SDK in message dialog. Auto-closed 2 weeks before this comment.
PR #5415 (@sachnun) — UP arrow to pull queued msg back into composer. Auto-closed.
Can PR #6271 or #24471 get maintainer eyes before being rebuilt a fifth time? If the approach is wrong, a rejection comment would save the next contributor significant effort. If the approach is right, both implementations are close to mergeable.
@rekram1-node — you're assigned to both this issue (#4821, unqueue) and the /undo revert bugs (#5474, #7196, #7282). A question on the intended contract: should /undo ever operate on queued messages, or is it strictly for completed turns? Right now, /undo with a queued message in the buffer kills the active operation instead of dequeuing (#7196) — which seems like an accident rather than a design decision. Clarifying this would unblock both tracks: contributors building queue controls would know not to wire through /undo, and contributors fixing the revert behavior would have a clear scope. What's the intended behavior?
Reacted by pomp, caedium, Adam Spiers, stanley, Doncho N. Gunchev, Avinash Thakur, sleepless, Krish Chowdhary, Jordan Christensen, Yuri Zoel Brasil and 5 more
Reacted by Brett VanderVeen, Cameron Gagnon, stanley, Chris Lasher, Doncho N. Gunchev, Herko Lategan, Yuri Zoel Brasil and 7heMech
Any update? I think this is something a lot of people want as a feature.
Reacted by Krish Chowdhary, gio, Jordan Christensen, Dan Berry, Pedro Cardoso da Silva, Yuri Zoel Brasil, Aleksandr Voronkov, Eibar Ibanez, 7heMech, Joscha Götzer and 3 more
It would be nice to do something similar to Claude Code where if you hit UP if the latest message is in queue then it pulls it out of queue and into your prompt. Gives you a chance to modify it or simply CTRL+C to clear it out.
This is a critical feature to have, and one of the main reasons I avoid OC at the moment. There have been 4-5 PRs implementing this already, all closed?
I agree. Hitting "undo previous message" fully stops whatever process was going, even though you're only stopping the queued message. Then you have to tell the model to "proceed" or whatever to get it to pick up where it left off (if it can).
Queued messages can now be cancelled in OpenCode v2. A prompt you send while the agent is busy waits in the session inbox until it's delivered, and you can remove it before then: select the pending message in the TUI and choose Delete, or call the session.inbox.cancel API.
Added in #42109; the first version came in #40922.
Closing as completed. If something doesn't work on v2, please open a new issue.
Activity
github-actions commentedon Nov 27, 2025
This issue might be a duplicate of an existing feature request. Please check:
Feel free to ignore if this addresses a different specific case.
rekram1-node commentedon Dec 1, 2025
@Mishkun would the ability to /undo a queued message be good?
Mishkun commentedon Dec 1, 2025
@rekram1-node I guess so
JosXa commentedon Dec 1, 2025
Yes, I second that. Clicking on it and "revert"ing it was my first instinct - principle of least surprise.
rekram1-node commentedon Dec 1, 2025
i guess i didnt see the note about clicking yeah rhat should be fine too
thedaneeffect commentedon Dec 5, 2025
It would be nice to do something similar to Claude Code where if you hit UP if the latest message is in queue then it pulls it out of queue and into your prompt. Gives you a chance to modify it or simply CTRL+C to clear it out.
rekram1-node commentedon Dec 6, 2025
I think I like that better, very good suggestion!
JosXa commentedon Dec 6, 2025
Me too. But clicking on it should then either be disabled, host fewer options, or the revert should still do something useful.
kostrse commentedon Jan 5, 2026
There could be both scenarious supported: mouse-centric (clicking the message) and keyboard-centric
alexandersumer commentedon Feb 18, 2026
I like the way Codex implements this. When you hit up arrow it dequeues and allows you to edit. It's not idea, but it is better than not being able to dequeue or edit the queued messages.
ayqazi commentedon Apr 17, 2026
This would be so useful, especially in a Github Copilot situation where that queued message is a wasted premium request staring me in the face☹️
Orionblue commentedon Apr 17, 2026
Just throwing my vote in for this being a necessary feature
bangbangsheshotmedown commentedon Apr 30, 2026
in the game of LLM, they can't even implement basic functionality, LE MAO
5 remaining items
e-magon commentedon Jul 1, 2026
@rekram1-node updates?
Baksalyar commentedon Jul 16, 2026
Still not implemented? The absence of such a basic thing is really annoying, guys!
Moti-Velz commentedon Jul 20, 2026
Bumping as this seems like low-lift high QOL changes, pls guys. Happy to implement it if that can help.
ThomasMldr commentedon Jul 23, 2026
I nearly opened a new issue for this issue again, but when looking through the backlog I found a jungle of issues and PR's and I ran a research task to aggregate everything I could find, because I don't think this encourages anyone to pick any of this up again, this issue has been open since Nov 27, 2025. In that time, four contributors independently built implementations — all auto-closed without maintainer review. Before a fifth attempt starts, it's worth knowing what already exists, or if one of these could be actually used.
There also seems to be misunderstanding about what
/undois supposed to do (revert actual code or only undo the last queued message?)Anyway, I'm sorry if this comment seems belittling or something, I genuinely wanted to get an overview of what's hanging and preventing this from getting fixed.
What was previously built, but never really merged:
PR #6271 (@anntnzrb, Jan 2026) — most architecturally complete TUI implementation:
<leader>ito edit last queued message,<leader>dto discardGET/DELETE /session/:id/queue/:msgIDPR #24471 (@mortenfc, May 2026) — most complete cross-surface implementation:
steermode: inject queued message into current LLM turn immediatelywrapmode: finish current step then haltPR #27399 (@veenified, Jun 2026) — Cancel button via SDK in message dialog. Auto-closed 2 weeks before this comment.
PR #5415 (@sachnun) — UP arrow to pull queued msg back into composer. Auto-closed.
Related bugs not fixed:
/compactwhile queued fires the queued message immediately (isBusy()misses compacting state)feat/queued-message-interrupt)/undowith a queued message kills the active operation instead of dequeuing (these need to be separate operations)The ask:
Can PR #6271 or #24471 get maintainer eyes before being rebuilt a fifth time? If the approach is wrong, a rejection comment would save the next contributor significant effort. If the approach is right, both implementations are close to mergeable.
@rekram1-node — you're assigned to both this issue (#4821, unqueue) and the
/undorevert bugs (#5474, #7196, #7282). A question on the intended contract: should/undoever operate on queued messages, or is it strictly for completed turns? Right now,/undowith a queued message in the buffer kills the active operation instead of dequeuing (#7196) — which seems like an accident rather than a design decision. Clarifying this would unblock both tracks: contributors building queue controls would know not to wire through/undo, and contributors fixing the revert behavior would have a clear scope. What's the intended behavior?Full reference map — all related issues and PRs:
katsar0v commentedon Aug 5, 2026
Any update? I think this is something a lot of people want as a feature.
aagrawal207 commentedon Aug 12, 2026
Any updates? Pretty important feature which is available in all the other coding harnesses.
7heMech commentedon Aug 21, 2026
Is this hard to do??? what if I did a PR? but then again looking at how many it's probably gonna be ignored.
7heMech commentedon Aug 21, 2026
This would be good
UQuark commentedon Aug 21, 2026
I feel like it's time to fork this crap anyway
ricardobeat commentedon Aug 26, 2026
This is a critical feature to have, and one of the main reasons I avoid OC at the moment. There have been 4-5 PRs implementing this already, all closed?
crash83k commentedon Aug 27, 2026
I agree. Hitting "undo previous message" fully stops whatever process was going, even though you're only stopping the queued message. Then you have to tell the model to "proceed" or whatever to get it to pick up where it left off (if it can).
pompydev commentedon Aug 28, 2026
Not really a solution but using openchamber allows you to unqueue messages while using opencode under the hood.
feat(core): add V2-native unqueue/edit of pending session inputs
neriousy commentedon Oct 1, 2026
Queued messages can now be cancelled in OpenCode v2. A prompt you send while the agent is busy waits in the session inbox until it's delivered, and you can remove it before then: select the pending message in the TUI and choose Delete, or call the
session.inbox.cancelAPI.Added in #42109; the first version came in #40922.
Closing as completed. If something doesn't work on v2, please open a new issue.