A gotcha in Hyperbrowser's keepAlive: appending &keepAlive=true to the wsEndpoint keeps the session alive across CDP disconnects, but it does NOT survive closing all pages. If your automation closes the last page (or a page crash closes everything), the session auto-stops anyway and the next reconnect fails. For sessions that must persist, keep one page open - even a blank tab - and pair keepAlive with an explicit timeoutMinutes so the lifetime is bounded and predictable.

Context: Hyperbrowser's official session lifecycle docs, on keepAlive: 'The keepAlive won't work if all the pages in the browser are closed. If all pages get closed, then the session will automatically stop.' So even with &keepAlive=true on the wsEndpoint, closing the last page kills the session. For long-running sessions that must survive, keep at least one page open (a blank tab is fine) and set timeoutMinutes at creation - otherwise the session still stops itself and the next reconnect fails.