Timeouts & Retries
Timeouts & Retries
Workflows talk to outside services, and outside services sometimes hang, hiccup, or fail. Rather than let a single slow step leave a run stuck forever, every step has built-in limits on how long it may take and how often it may try again. You do not configure these; they are chosen for each type of step so it behaves sensibly on its own.
Every step has a time limit
Each step is given a deadline to finish its work. Most steps are expected to finish within about a minute. Steps that do heavier work, like moving files or downloading large amounts of data, are allowed several minutes. If a step runs past its deadline, it is treated as a failure and handled by the retry rules below.
Steps retry a few times
If a step fails, it does not give up immediately. It waits a moment and tries again, usually up to three attempts in total. This smooths over brief, temporary problems like a service being momentarily unavailable. If every attempt fails, the run stops with an error so you can see what went wrong.
Some steps run only once
A few steps have an effect you would not want repeated, such as placing a phone call, uploading a file, submitting a form, or adding a batch of contacts. To avoid duplicates, these steps run a single time and do not retry. If one of them fails, the run stops rather than risk doing the action twice.
Steps that are designed to report a result rather than stop the run, like the Check node deciding on an outcome, are not affected by these rules. They finish successfully and hand their result to the next step even when that result is a “no match” or a failure outcome you planned for.
Cancelling a run
If you cancel a running workflow, in-flight work is stopped promptly rather than being left to run out its full deadline. The run ends in a cancelled state and no further steps execute.
Long-running AI steps
The AI steps work differently from ordinary steps because the thinking they do can take longer. They have their own generous time limit and will report a timeout if the work does not finish within it, so a run never waits indefinitely on them either.