reticle restart is reticle kill followed by a daemon start that waits for a real bind.
Flags
The two halves are reported separately
A restart that killed the old daemon and then could not start a new one leaves you somewhere quite different from one that could not kill anything at all, and a singleok: false cannot tell you which happened. So each half prints its own line.
Real capture, restarting over a running daemon:
The start half is
serve’s, which waits for the daemon to answer before claiming it started
and exits non-zero when it does not. A restart never reports success for a daemon that never
bound.Exit codes
Worked example
Why not lsof
The pipeline everyone reaches for kills the agent’s own MCP proxy along with the daemon.