Under the hoodTier: how much it should matter to you
2Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
Self-Hosted RunnerArea: what it touches
Internal ChangesKind: in v2.1.271,
Internal ChangesSection of the release
What
When a self-hosted session runner shuts down, its deregistration call (deregisterRunner) now carries more detail about how the shutdown happened.
A reason field records why the runner is deregistering: host_drain, shutdown_signal, retire_at, or idle_release.
A drain_hold object records what happened while the runner waited for in-progress work to finish: an outcome (RUNNER_DRAIN_HOLD_OUTCOME_NOT_NEEDED, _CAP_EXPIRED, or _FINISHED), how long the hold was capped at (cap_ms) and actually lasted (held_ms), and a capped list of session IDs that were still busy when the runner was released (busy_session_ids_at_release).
Both fields are sent in the deregisterRunner POST body and logged.
Why
This gives operators visibility into why and how a self-hosted runner drained on shutdown, including whether it had to wait for busy sessions and what was still running when it let go.