# Guardrails and failures

> Permissions, unattended approvals, limits and recovery after automatic failures.

## Permissions and approvals

| Action or boundary | Rule |
| --- | --- |
| Inspect workflows, nodes and traces | Dashboard viewer, editor or owner. |
| Build, run, change triggers or reveal secrets | Dashboard editor or owner. |
| Assistant proposes a workflow | One approval covers the whole program and branches; credentials, activation and real tests have separate approvals. |
| Agent step | Full auto: tools normally set to Ask execute without asking. Off tools remain blocked. |
| Tool step identity | Account-owned connection or credential profile, selected per step; never a member's personal account. |
| Workspace | Workflows reach the common tree; protection blocks and system-entry rules still apply. |
| App functions | A manager's workflow save authorizes the apps used; callers share that access. See [app access](/en/docs/apps/access). |

> **Rule** — Workflows cannot pause for tool approval. Grant workflow agents only tools you trust to execute unattended.

## Limits

| Limit | Value or behaviour |
| --- | --- |
| Concurrent runs of one workflow | 1; manual or scheduled starts during a run are refused. External deliveries queue. |
| Steps | 20 across the complete workflow. |
| Declared inputs | 20. |
| Nested conditions | 8 levels. |
| Rules in one condition | 10. |
| Prompt output fields | 20. |
| Repeat cap | Required, 1–20 items; exceeding it fails the run. |
| Repeat execution | Reads and prompts parallel; writes and agents sequential. Item failures are collected by default. |
| Minute interval | 5–1,440 minutes. |
| Hour interval | 1–24 hours. |
| Recent deliveries | Latest 50; delivery data retained for 30 days. |
| Sample data | 16,000 bytes. |
| Webhook request body | 256,000 bytes. |
| Webhook rate | 120 requests per minute per webhook. |
| Queued external deliveries | 200 per workflow. |

## Automatic failures

| Situation | Result |
| --- | --- |
| Failed scheduled, webhook or event run | Failure email to the workspace owner. |
| Third consecutive automatic failure | Workflow switches off; a final email reports the disablement. The UI shows **Off after failures**. |
| Failed manual run or user stop | Does not count toward automatic failures. |
| Successful run, including manual | Ends the failure streak. |
| Save or switch the workflow on | Restarts the failure count. |
| Account runs out of Sparks | Scheduled runs are skipped and incoming events dropped, without workflow failure emails. |

For recovery, inspect the failed step in **Runs**, correct the workflow and use **Switch back on**, or enable it in **Settings**. Saving resets the count but does not itself reactivate a disabled workflow.

## Costs and retry safety

| Operation | What to account for |
| --- | --- |
| Prompt or agent work | Uses Sparks; each repeated agent item is a complete agent run. |
| Sample test | Real actions and normal Spark usage. |
| List's daily projection | Enabled schedules on active workflows only; external and manual traffic is excluded. |
| App write with an uncertain result | The change may have happened; inspect the app before retrying. |
| New app publication changes a function contract | Save the workflow again and review arguments and dependent outputs before retrying. |

## Related

- [Run, schedule and trigger](/en/docs/workflows/triggers)
- [Spend limits](/en/docs/billing/spend-limits)
- [Workspace protection](/en/docs/workspace/files)
