How-to
How to troubleshoot a failed run
Open the run from Executions and the first thing to ignore is the status. A run status only knows whether something threw an exception, and the interesting failures do not throw. The information you want is one level down, in the step rows.
The run I keep pointing at below is a real logged execution of mine — the one that reported success while telling a customer something it had not checked. I published it in full rather than describing it.
Read the run
- Open Executions and click the run.
- Read the step rows in order. Each one records what it received, what it returned, its tokens, its cost and its duration.
- Find the first step whose input is not what you expected — that is usually where the problem started, and it is rarely the step that looks broken.
- Check every tool call in that step. A refused call shows its status next to the tool name.
- Fix the cause in the agent or workflow, then click 🔁 Replay to re-run with the exact same input.
Replay uses the workflow’s current definition with the original run’s input, so editing and replaying is the fastest way to confirm a fix against the exact input that broke it.
Two things stop a Replay before it starts. The workflow has to be Active — an inactive one is refused rather than queued. And on the free plan only sequential workflows run: parallel, conditional, fan-out and DAG workflows need Pro, so replaying one of those on a free account returns an error rather than a run.
What each status actually means
`FAILED`
A step raised an error and the run stopped. The error message is on the failing step. This is the easy case, because the system is telling you the truth.
`TIMEOUT`
Two different things produce this. A workflow run is stopped at about 61 minutes. Separately, any run still sitting in PENDING or RUNNING after 90 minutes is marked TIMEOUT by a sweeper, so a run can never stay “running” forever if the queue loses it. A run that times out at 90 minutes rather than 61 usually means it never really started.
`COMPLETED`, and still wrong
The one that costs you weeks. Nothing threw, so the run reports success — while having done the wrong thing. Source: a run of mine published in full finished COMPLETED after two http_request calls returned 403 with "ok": true in the tool result, which is precisely why the agent believed it had the data. Read the tool result’s status, not its ok. It cost $0.0204 and took 28.5 seconds.
If a run matters, do not alert on its status. Alert on a count — what it says it processed, against what the source says it handed over.
Common causes
| What you see | Usual cause | Fix |
|---|---|---|
| A tool result shows 403 | The agent reached something the SSRF guard blocks, or an integration is not connected | Connect it under Account → Integrations, or point the call at a public endpoint |
Error: daily limit reached for … | The per-user daily cap for that tool is spent — send_email is 100 a day, http_request 1,000. It comes back as the tool’s result text, not an HTTP status | Wait for the reset, or run the workflow less often |
| The answer is empty | One step received nothing to work with | Read that step’s input; the break is upstream of it |
| Nothing ran at all | Agents and workflows are inactive by default | Open it and set it to Active |
| Provider error with your own key | A bring-your-own LLM key is invalid or out of quota | Re-add it under Account → Integrations |
COMPLETED with no effect | A condition never matched, so every branch was skipped | Check the step rows for skipped steps and their reason |
Before you ask for help
Two things make a problem answerable in one round instead of four: the run’s id, and which step row you think is wrong. Both are on the run page. If you want to see what a fully readable run looks like, including a real failure published on purpose, the source is here: one successful run and one failed run, no account needed.
Next
- Understand what a tool can and cannot reach — see Give agents tools & integrations.
- Stop a scheduled workflow failing silently — see Automate: schedules & webhook triggers.