Setup follows the invoked package's channel. New Codex sessions use npm's normal cache behavior to resolve latest or nightly, without forcing a freshness check at every startup. Publishing alone does not change a running session. To explicitly check for a newer package and hand over active watches, run:
npx --yes --prefer-online t3poll@nightly listUse @latest for stable. The command reports the worker PID and version. updating: true means the current operation is still draining. MCP startup also resumes saved watches and checks every 30 seconds for missing workers. These checks use the installed runtime; they do not query npm.
A candidate starts from a separate installed package and opens the state database before advertising its version. The current worker finishes its watch operation, including any in-flight request and persistence, then releases its lease. The candidate acquires the lease before processing watches. No process signal is needed, including on Windows.
Watch IDs, expiration, snapshots, pending changes, and frozen commands stay in SQLite. An ambiguous dispatch retains exactly the same command and message IDs for retry. This relies on T3's existing command deduplication, just as ordinary network retries do.
The state directory remembers the newest successfully loaded runtime's version and executable paths. Older sessions reuse that runtime even after an idle period. Version ordering follows release triples and nightly timestamps; a stable version follows nightlies with the same base. Switching channels does not downgrade a shared worker. Wait for a later release on the selected channel to advance it. Local builds with the same version do not trigger handoff.
A failed download or candidate that cannot load leaves the current worker alone. An incompatible database version fails before the candidate advertises itself. State schema version 1 is preserved with additive coordination tables, so this release does not rewrite watch records.
If a candidate crashes after advertising readiness, saved watches remain intact. An attached MCP session retries worker startup within 30 seconds, or list retries immediately. Without an attached session, a failed successor may leave monitoring paused until the next command. The detached candidate waits until the old worker drains, even after the initiating CLI call returns. It exits if there is no work left or another candidate has already taken over.
Keep the remembered package files installed while using that state directory. If npm's cache is manually cleared, run the same or a newer package again to restore a usable runtime. A runtime error appears in list; inspect worker.log under T3POLL_HOME for details.