A row can now be taken off the column, and a session nobody can reach can be ended.
Requires macOS 14 or later (macOS 26 for dictation). Signed with a Developer ID and notarized by Apple.
Why
A row can outlive what it describes, and nothing on this Mac can tell the difference. Measured: a claude process still loaded nine hours after its chat tab was closed — the extension keeps it so the tab can be reopened with Cmd+Shift+T — and a Codex daemon holding thirty-nine rollouts open, including conversations closed long before. The panel is right that those conversations exist; you are right that they are gone. The existence of a tab is published nowhere, so no probe can settle it and no timeout can guess it.
Two entries in a conversation's menu
Remove this row takes it off, with no confirmation: it costs nothing to undo. The row comes back the moment that session says anything, and a row discovered on disk comes back as soon as its evidence is newer than the click. The removals are remembered across restarts, and forgotten after twelve hours — past that the row would have gone by itself.
End this session… asks first, naming the process, when it started and the folder. It is offered only where the process can be proved: Claude Code writes a file per session naming its own process id, and Codex does not — its conversations are served by one shared daemon, so ending it would end all of them. Process ids get reused, so the recorded start time has to match what the system reports, checked again after you confirm. SIGTERM, never SIGKILL: the session is asked to stop and gets to save what it was holding.
Also fixed
Renaming a conversation from the chat window now reaches the column immediately, and Codex rows no longer blink amber for permission requests that Codex approves by itself.