status. It is the same value whether you read it from the Run API, a webhook, the SDKs, or the CLI.
Final and non-final statuses
Only three statuses are final. Once a run reports one of them, it does not change on its own. The one exception is a manual re-run of the same session by CloudCruise support, which moves it back toexecution.requeued.
Some webhook events describe progress and are not statuses:
execution.step, execution.input_required and execution.password_updated. A run that has sent one of them is not final. execution.input_required means the run is waiting for corrected input. The event’s timeout_seconds field is how long the server waits. The wait also ends when that time runs out, when the run is interrupted, or when the server hits an error, so stop showing an input prompt once the run reports a different status.
If a stop request arrives for a run that has already failed, the run reports execution.failed.
Lifecycle
start → requeued → start several times. The number of automatic retries is capped by the workflow’s max_retries, and each retry waits longer than the last.
What to expect
- A run that is going to be retried never reports
execution.failed. When an attempt fails and a retry is scheduled, the status goes straight fromexecution.starttoexecution.requeued. execution.failedis reported once, and only when the run is final. Its webhook is sent at that point and not for intermediate attempts.execution.requeuedis not a failure result. Treat it as “still in progress, retrying”. The webhook payload carriesretry_attempt,max_retriesandnext_execution_time.- A requeued run can end in any final status. After one or more
execution.requeuedevents the run may finish asexecution.success,execution.failed(retries exhausted) orexecution.stopped. - Statuses follow the lifecycle above. A final status is not replaced by another status unless CloudCruise support manually re-runs the session.
What is not expected
If you see any of these, it is a bug in CloudCruise. Report it with thesession_id.
- A run reads
execution.failedand later readsexecution.requeued,execution.start, orexecution.success, with no manual re-run from CloudCruise support. - An
execution.failedwebhook for a run that was then retried. - A final status that changes to a different final status without a manual re-run by CloudCruise support.
Consuming statuses
1
Prefer webhooks or the SDK stream over polling
Webhooks and the SDK server-sent events deliver most status changes as they happen, but not every one: pausing or unpausing a queued run changes the status without sending an event. If you need the current status, read it from the Run API. See Rate limits.
2
If you poll, stop only on a final status
Keep polling while the status is
execution.queued, execution.paused, execution.start or execution.requeued. Stop when it is execution.success, execution.failed or execution.stopped.3
Allow for long gaps while requeued
A requeued run waits before its next attempt, and the wait grows with each retry. Do not apply a short overall timeout to runs on workflows with retries enabled.

