---
title: Timeouts and Limits
slug: timeouts-and-limits
docTags: 
createdAt: 2026-06-08T09:44:31.445Z
---

Canvas playbooks and components share the same automation limits and timeout model. Use this topic when you need to know how many actions you can add, how long a run can execute, or what you can configure in the UI versus the platform.

## Choose Your Path

| I want to…                                                | Go to                                                                                                                    |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Know whether there is a maximum number of actions         | [Action Count Limits](https://docs.swimlane.com/timeouts-and-limits#action-count-limits)                                 |
| Understand playbook or component run timeouts             | [Playbook and Component Run Timeouts](https://docs.swimlane.com/timeouts-and-limits#playbook-and-component-run-timeouts) |
| Understand individual action timeouts                     | [Action Timeouts](https://docs.swimlane.com/timeouts-and-limits#action-timeouts)                                         |
| See related structural limits (loops, nesting, data size) | [Related Structural Limits](https://docs.swimlane.com/timeouts-and-limits#related-structural-limits)                     |
| Change timeout values                                     | [How Timeouts Are Configured](https://docs.swimlane.com/timeouts-and-limits#how-timeouts-are-configured)                 |

## Action Count Limits

Turbine does **not** enforce a fixed maximum number of actions on a canvas playbook or component. You can add as many actions as your workflow requires.

:::hint{type="info"}
Large playbooks with many actions can affect editor performance and run duration. Split complex workflows into reusable components or sub-playbooks when practical. See [Swimlane Top Tips - System Performance](docId\:J3k2YcExTq4Odeyge29Jt).
:::

The canvas editor keeps an undo/redo history of up to **30** changes. This limit applies only to editor history, not to how many actions a saved playbook or component can contain.

## Playbook and Component Run Timeouts

A **playbook run** or **component run** is the full execution from the entrypoint through all connected actions. Timeouts apply at this level separately from individual action timeouts.

### Default Behavior

When you do not set a custom `timeout` value in the playbook or component definition, the platform applies these defaults:

| Setting                                         | Default | Maximum  |
| ----------------------------------------------- | ------- | -------- |
| Total run time from start                       | 4 hours | 24 hours |
| Inactivity extension per period of job activity | 1 hour  | —        |

**How this works in practice:**

1. When a run starts, Turbine sets an initial timeout window based on platform defaults.
2. As actions execute, the run timeout extends by up to **1 hour** from the last job activity.
3. The run cannot exceed **4 hours** total from the start time unless you set a higher value in the playbook or component definition (up to the platform maximum of **24 hours**).

Components invoked from a playbook use the same run-timeout model when they execute.

### Custom Playbook or Component Timeout

The playbook and component manifest supports a top-level `timeout` field. You can set a human-readable duration (for example, `10 minutes`, `2 hours`) or a value in milliseconds.

- A value of `0` or an unset field uses platform defaults.
- A custom value is capped at the platform maximum of **24 hours**.

:::hint{type="info"}
The canvas editor does not expose a playbook-level or component-level timeout field. To set a custom run timeout, update the playbook or component YAML source through the API or an export/edit workflow. See [How Timeouts Are Configured](https://docs.swimlane.com/timeouts-and-limits#how-timeouts-are-configured).
:::

## Action Timeouts

Each action in a playbook or component runs as a **job**. Job timeouts are separate from the overall playbook or component run timeout.

| Action type                               | Default timeout                                               | Maximum timeout      |
| ----------------------------------------- | ------------------------------------------------------------- | -------------------- |
| Connector actions and most native actions | 15 minutes                                                    | 15 minutes           |
| Python script actions                     | 1 minute                                                      | 1 minute             |
| Sub-playbook or component invocation      | Inherits playbook run timeout (default 4 hours, max 24 hours) | Same as playbook run |

:::hint{type="info"}
Action retries automatically stop after **15 minutes** from the first retry attempt. This duration is fixed and aligns with the action job timeout. See [Retries](docId\:bT9q2le7OcWBWeZKzc-lS).
:::

Individual actions support a `timeout` field in the manifest (human-readable or milliseconds). The canvas editor does not expose a general action timeout control for most action types. Connector and native actions use the **15-minute** platform default unless overridden in the manifest.

## Related Structural Limits

These limits are not a cap on total action count, but they constrain how you structure playbooks and components on the canvas.

| Limit                                            | Playbooks         | Components             |
| ------------------------------------------------ | ----------------- | ---------------------- |
| Loop nesting depth                               | 5 levels          | 5 levels               |
| Component or sub-playbook nesting depth          | 10 levels         | 10 levels              |
| Sub-playbook or component stack during execution | 10 levels         | 10 levels              |
| While loop maximum iterations                    | 5,000             | 5,000                  |
| Parallel loop maximum concurrency                | 5                 | 5                      |
| Action input and output size                     | 20 MiB per action | 20 MiB per action      |
| Component name length                            | —                 | 50 characters maximum  |
| Component description length                     | —                 | 255 characters maximum |

For loop details, see [Using the Loop Native Action](docId\:TRKGyutXuRwSsVaMfHs2c). For component naming limits, see [Components](docId\:c7ipCS5NdR9sGu4z6Pjs0).

## How Timeouts Are Configured

| What you want to change           | Canvas UI                            | Playbook or component YAML / API        | Platform configuration (operations)                      |
| --------------------------------- | ------------------------------------ | --------------------------------------- | -------------------------------------------------------- |
| Playbook or component run timeout | Not available                        | Set top-level `timeout` in manifest     | `ENGINE_PLAYBOOK_TIMEOUT`, `ENGINE_PLAYBOOK_MAX_TIMEOUT` |
| Individual action timeout         | Not available for most actions       | Set `timeout` on the action in manifest | `ENGINE_JOB_TIMEOUT`, `ENGINE_JOB_MAX_TIMEOUT`           |
| Action retries                    | **Additional Options** on the action | `retryUntil` in manifest                | —                                                        |

:::hint{type="warning"}
Platform configuration changes affect all tenants on that deployment. Coordinate with your Swimlane administrator before changing engine timeout environment variables.
:::

## See Also

- [How to Create a Playbook](docId:0-KvG5p4LTHw75ItmpUWp)
- [Playbooks Overview](docId\:Dp-AGNnnE2MJJFGtV2LZ5)
- [Components](docId\:c7ipCS5NdR9sGu4z6Pjs0)
- [Retries](docId\:bT9q2le7OcWBWeZKzc-lS)
- [Swimlane Top Tips - System Performance](docId\:J3k2YcExTq4Odeyge29Jt)
