An idle terminal can be taken over
This is the ordinary case and it is allowed. The terminal is asked to release, it writes its transcript tail, and the browser continues the same chat with nothing lost.
Any engine fix: The chat will not take input because something holds it
Two writers on one transcript forks it, so a chat attached to a live process refuses input rather than interleaving. What happens next depends entirely on what is holding it.
not a terminal, refusing takeover
Printed by Termdeck.
Diagnosis
This is the ordinary case and it is allowed. The terminal is asked to release, it writes its transcript tail, and the browser continues the same chat with nothing lost.
Taking the session away mid-turn would cut the work in half. The refusal says so, and the wait is usually seconds rather than minutes.
A desktop app or an SDK process holding the session gets no takeover, because nothing can promise it will write a clean tail the way a CLI does.
A process that died without releasing keeps the session attached until that is noticed. This is the one case the forced override exists for.
Check
| Run this | What a good answer looks like |
|---|---|
ps -eo pid,etime,cmd | grep "[c]laude" | Every Claude Code process with its age. The holder is usually the oldest, and its start time says which window it belongs to. |
ps -eo pid,etime,cmd | grep "[c]odex" | The same question for Codex, whose app-server can outlive the terminal that started it and hold on quietly. |
Every command here has been run on a real machine. Termdeck answers the same questions for every machine you have connected, without opening a terminal on any of them.
Fix
Take over from the machine card. The CLI is asked to stop, it writes its tail, and the chat continues in the browser.
A mid-turn refusal clears by itself when the turn ends. Forcing it there is how a transcript ends mid-sentence.
The override is for a lock with nothing behind it. It is recorded when used, because it is the one action on this page that can lose work.
Not this
The lock is a live process rather than a field in a file. Editing the transcript risks the history and leaves the holder exactly where it was.
FAQ
A CLI is asked to release and writes a clean tail. Another client offers no such guarantee, so it is refused instead of evicted.
From an idle terminal, no. The session continues with the same history in the browser.
That is what the forced takeover is for, and it is logged because a mistake there costs work.
Claude Code, Codex and Grok in one browser console