Build Time vs Run Time
Workflows have two distinct phases:Build Time
Design your workflow in the editor. Define steps, configure tools, and set up dependencies.
Run Time
The runner interprets and executes the manifest. Steps run in dependency order as data flows through.
Execution Timeline
When a workflow runs, it follows this timeline:Step Execution Patterns
Sequential
Steps with dependencies run one after another
Parallel
Independent steps run simultaneously
Conditional
Steps run only when
when condition is trueLoop
Steps repeat for each item via
forEachSequential Execution
Steps withneeds wait for their dependencies:
step_a → step_b → step_c
Parallel Execution
Steps without shared dependencies run in parallel:input → (branch_a ∥ branch_b) → merge
Conditional Execution
Usewhen for conditional logic:
Loop Execution (forEach)
Process collections withforEach:
Failure Modes
| Failure Type | Cause | Handling |
|---|---|---|
| Validation Error | Invalid input parameters or manifest | Execution stops immediately |
| Tool Error | External service failure or timeout | Step marked failed |
| Timeout Error | Step exceeds configured time limit | Step terminated |
| Dependency Error | Required step failed | Dependent steps skipped |
| Condition Error | Invalid when expression | Step skipped with warning |
Step Status States
Each step transitions through these states:| Status | Description |
|---|---|
| Pending | Waiting for dependencies to complete |
| Running | Currently executing |
| Success | Completed successfully |
| Failed | Execution failed with error |
| Skipped | Condition not met or dependency failed |
Variable Resolution
Variables are resolved at execution time:| Pattern | Resolved To |
|---|---|
{{inputs.name}} | Input parameter value |
{{steps.step_id.result}} | Full result of completed step |
{{steps.step_id.result.field}} | Specific field from step result |
{{secrets.KEY_NAME}} | Credential from workspace secrets |
{{item}} | Current item in forEach loop |
{{item.field}} | Field from current loop item |
Error Handling Best Practices
- Validate Early: Use INPUT_* tools to validate data at the start
- Check Outputs: Add validation steps after critical operations
- Use Conditions: Handle different outcomes with
whenclauses - Design for Failure: Consider what happens when external services fail
- Review History: Use execution history to analyze failures
Debugging Tips
| Issue | Solution |
|---|---|
| Step not running | Check needs dependencies are satisfied |
| Wrong data | Verify variable reference syntax |
| Condition not working | Test when expression with actual values |
| Loop not iterating | Ensure forEach target is an array |
| Timeout | Increase step timeout or optimize logic |