Force deploys for urgent fixes
October 16, 2026 · release
Force mode used to behave like Drain, so a call that started on a bad build could keep running for up to 9 minutes after you shipped the fix. It now does what the name says.
When you deploy with Force, new calls go to the new version, and every call still on an older version ends within 15 seconds of the new version being ready. That includes calls still finishing from an earlier Drain deploy, so if you shipped a bad build with Drain and only noticed later, a forced fix clears it out. Billing stops when each call ends.
Drain is unchanged and stays the default. Calls in progress finish on the previous version, for up to 9 minutes, which is what you want for an ordinary release. Reach for Force when waiting costs more than dropping the calls, for instance when the old build answers wrongly or crashes.
Only one older version can be finishing calls at a time. While a Drain deploy is still waiting on the previous version, another deploy is refused with a message that says so (PREVIOUS_VERSION_DRAINING), unless it uses Force, which ends the calls on both older versions. Once a Force deploy has started, further deploys have to wait a few seconds until only the forced version is left. Refused and forced deploys both appear in the audit log.
A call that Force ends has the end reason force_rollout, shown as "Ended by a forced deploy" in the sessions list and the metrics. @voicethere/client reports a non-recoverable session_error with the code WEBRTC_CONNECTION_CLOSED and does not reconnect, so your app has to start a new session for the caller.
Try it
- Dashboard: open Project → Cloud rollout, set Rollout mode to Force, then choose Deploy to cloud.
- CLI: run
voicethere deploy --mode force --wait. - Guides: Rollout modes and the CLI command reference.