You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Remote session lifetime (#648) refuses HALT too: a keel serve --external-host console can't halt after 12h until restarted #983
Before #977, serve() dropped external_hosts and started_at (#971), so the #648 remote session lifetime was never enforced. #977 restores it as designed: on a server started with --external-host, ServeConfig.session_expired_at = start + REMOTE_SESSION_MAX_AGE_SECONDS, and the admission check in keel/web/server.py refuses EVERY request after that with 403 "Session expired". That includes POST /api/gates/halt, and it includes loopback clients.
Why it matters
keel/web/gates.py: "stopping must never be slower than starting". A console left running past the lifetime shows the expired-session refusal instead of Pulse, so HALT is unreachable from the browser until someone restarts keel serve at a terminal (keel halt at the CLI still works).
Exempt the halt route from the lifetime (still requiring the halt token): a leaked token could then halt, which is recoverable by keel resume, never release.
Add a re-mint flow so a long-running remote console can renew without a restart.
Cost of leaving it: an operator using a tunnel can lose the browser HALT after 12 h without noticing until they need it.
Owner decision (2026-10-12): option 2. HALT is exempt from the remote session lifetime on keel serve --external-host, and still requires the halt token in X-Keel-Halt. Releases, setup writes and reads keep the 12 h lifetime. A leaked halt token can at worst halt, which keel resume at a terminal undoes. Folded into the #981/#982 PR.
Activity
eaitbrahim commentedon Oct 12, 2026
Owner decision (2026-10-12): option 2. HALT is exempt from the remote session lifetime on
keel serve --external-host, and still requires the halt token inX-Keel-Halt. Releases, setup writes and reads keep the 12 h lifetime. A leaked halt token can at worst halt, whichkeel resumeat a terminal undoes. Folded into the #981/#982 PR.Make the #983 halt-exemption prose true and name keel kill in the exp…
keel serve: socket timeout, GET drain, halt never creates a DB, halt …
Console: a reloaded console keeps its HALT after the remote lifetime (#…