Surviving a restart
Until now, a macOS restart, shutdown or logout ended the session-persistence
promise: zmx sessions died with everything else, so every pane came back as an
empty shell and any agent that was mid-conversation was simply gone.
Zetty now notices that kind of quit and prepares for it before the sessions die:
- Your screens come back. Each preserved pane's scrollback, colours intact,
is replayed into the pane on relaunch, under a dimrestored after restart
divider so you can tell it from the fresh shell beneath. - Your agents come back. Zetty remembers which Claude Code or Codex session
each pane was running and resumes it in that pane, in the directory the agent
was working in and under the same agent account. Panes in background tabs are
brought up for you a couple of seconds apart rather than waiting to be clicked. - Launch at login (Settings → Sessions) brings Zetty back by itself, so the
whole thing happens while you are still typing your password.
Which session a pane was running is learned from the harness's status hooks
where they have fired, and otherwise from the harness's own session store on
disk — so an agent that has been running untouched for days is still resumed.
Where two panes share one directory, the newest sessions for it are handed out
one per pane.
Zetty never blocks a shutdown to do this: it works inside a five second budget
and always lets the restart proceed. A restart that gets cancelled after Zetty
has quit is handled too — the relaunch notices each agent is still running and
types nothing into it. ⌘Q and zetty quit behave exactly as before.
Set zetty-restart-recovery = false to turn it off. zetty quit --simulate-restart exercises the whole path without rebooting.
Also in this release
- Agent status dots are now per pane. Hook events name the exact pane they
came from, so two panes in the same directory no longer light up together. - CLI-created panes start immediately. A pane made by
add-project,
new-tab,split,break,scratchor a clone is running by the time the
command returns, without changing the project you are looking at — so one
session can add, drive and remove panes across many projects andsendor
capturethem straight away. - Claude Code gains a
SessionStarthook, so a pane's session is known as soon
as it opens and stays current across/clearand--resume.