[Feature Request] Add config option to always preserve user message on Esc cancel
Bug Description
Add a setting to always keep the user message when Esc cancels a turn
Request: A config option (e.g. preserveInterruptedPrompt: true in settings.json) that makes Esc always truncate-and-keep — the user message stays in the transcript with the [Request interrupted by user] marker — instead of sometimes discarding the whole turn.
Current behavior: Esc cancels the turn in one of two ways, and which one I get is inconsistent:
- Truncate: my message stays in the transcript with the [Request interrupted by user] marker.
- Discard: the whole turn disappears, my message included. The draft is returned to the input box, so nothing is unrecoverable, but the message is no longer in the conversation and the assistant has no record of it.
I hit both outcomes from what looked like the same situation — in both cases the turn had reached the "thinking" indicator when I pressed Esc, but one truncated and one discarded. I don't know what actually determines it; possibly elapsed time or whether some internal output had been committed. From the user side it isn't predictable.
Why I want the option: Cancelling early is the natural moment to cancel — right when I notice I misphrased something. Discarding the message is the wrong default for my workflow: I usually want to edit and resend with the original still visible as context, and I lose whatever reasoning was already spent. I'd rather always truncate-and-keep, regardless of when in the turn I press Esc.
Repro: Send a message, press Esc shortly after while the turn is still in the thinking phase. Sometimes the turn is truncated with the interrupt marker, sometimes it vanishes entirely and the assistant has no record of the message.
Ask: Not necessarily a change to the default — just a setting to opt into consistent truncate-and-keep behavior at any point in the turn.
Environment Info
- Platform: linux
- Terminal: kitty
- Version: 2.1.219
- Feedback ID: cd2ca611-c259-48c4-97ac-773b636cca5b
Errors
[]