Problem
People may notice that an answer is going in the wrong direction before it finishes. They need to stop it without losing useful text already produced.
Solution
Show a clearly labeled Stop control while the assistant is generating an answer. It can occupy the Send button’s position while sending is unavailable. Provide a keyboard shortcut that does not conflict with other active controls.
Cancel the generation on the server as well as stopping its display. Keep the partial answer and mark it as stopped. Preserve that status when the conversation is shared or used in a follow-up.
If usage is metered, show the amount consumed before cancellation. Prevent repeated send inputs from accidentally activating Stop.
Use when
An answer takes long enough that people may want to interrupt it.
Don’t use when
Generation is short enough that the button would appear and vanish before it could be hit. Below roughly a second the swap is visual noise, and a viewer who lands on a flickering control learns to distrust it.
Trade-offs
Sharing space with Send saves room but can cause accidental stops if input handling is careless. Partial answers need clear labels. Stopping the display alone can leave generation running and consuming usage.
Checklist
- Does stop cancel the generation server-side, or only the client’s stream?
- Does the partial response stay on screen?
- Is the turn marked as stopped, and does the mark survive export and sharing?
- Does the model see that the previous turn was interrupted when it reads the history?
- Is Escape bound to it?
- Does a double-press of enter stop the generation the first press started?
- If usage is metered, does the viewer learn what the stopped response cost?
- Can the viewer edit and resend immediately, or do they have to clear something first?
- What happens to a tool call or a document already in flight when stop is pressed?
- Does the control return to send cleanly, with no intermediate state that accepts neither?
Compare
ChatGPT puts stop in the composer where send was and leaves the partial answer in place, so the next move is a follow-up rather than a recovery. Claude uses the same slot and keeps a document already opened alongside the stopped turn, so interrupting the prose does not discard the artifact it was building. Perplexity has less need for the control, because an answer short enough to read in one pass finishes before the intent to stop it forms. GitHub Copilot Chat inherits the editor’s conventions instead of the composer’s, where Escape already means dismiss, and the in-editor suggestion disappears entirely rather than being kept as partial output.
Related
Streaming response makes an answer visible before it finishes. Regenerate requests another attempt. Composer holds the send and stop controls.
Generation error indicates an unplanned interruption. Usage meter records the usage consumed before stopping.