Troubleshooting
Find what you see, then what to change. For a failed run, start with Debug a failed run, and for many at once, Recover failed runs. This page explains the messages and codes you meet along the way.
In the editor
Section titled “In the editor”Publish is dimmed
Section titled “Publish is dimmed”The tooltip says “Fix validation issues before publishing.” Some block has a missing required value or a mapping that no longer resolves. Click Publish anyway: the editor shows every missing value and opens the first block that needs work. A banner such as “2 fields have unresolved mappings” has Jump to field to take you there.
Run draft is unavailable
Section titled “Run draft is unavailable”The tooltip says “Pin a sample on the trigger or run the automation once to run the draft.” Fill in the example values on the trigger’s Samples tab, or run the automation once. See Pin a sample.
If it starts and then fails, the dialog says why. “The draft changed while starting. Start again.” means someone edited at the same moment. “5 draft runs are already running for this automation.” means you have to wait for one to finish.
A draft run did something for real
Section titled “A draft run did something for real”A draft run holds blocks that write, send or delete, and nothing reaches the other system. Reads, computation and model calls always run, except a prompt with tools, which is held, and an Approval block raises a real escalation. See What runs for real.
A draft run stopped early
Section titled “A draft run stopped early”The run bar says “stopped at” a block: “write held, no pinned or last real output”. A held write had no pinned output, last real output or plan to pass on, so its branch ended there, and nothing failed. Give the block example values on its Samples tab, or run it once for real. Run draft lists the blocks this may happen at before you start. See Held writes.
Run from here is unavailable
Section titled “Run from here is unavailable”The tooltip says why. It needs the run to be finished and within its retention period, a draft with no validation issues, and a block outside a loop: “A run cannot start inside a loop. Start at the loop step, or before or after it.” The button does not show on a block the run never reached. See Run from here.
Capture from last run is unavailable
Section titled “Capture from last run is unavailable”It copies data from the automation’s latest run, or the viewed run in run view, so it needs one that fits:
| Message | Do this |
|---|---|
| “Run this automation once to capture a sample.” | Start one run, then capture. |
| “The latest run didn’t fire through this trigger.” | Start a run through this trigger, or fill in the fields yourself. |
| “This block wasn’t reached in the latest run.” | Run a case that takes this block’s path, or fill in the fields yourself. |
The Run state switch will not turn on
Section titled “The Run state switch will not turn on”The tooltip says “Publish before activating” or “Publish your changes to activate”. Only a published, up-to-date automation can be active. Click Publish, which also makes it active.
Failed runs
Section titled “Failed runs”A failed run shows only a short label
Section titled “A failed run shows only a short label”Labels such as “Network error” or “Provider error” mean Lainstack knows the kind of failure but holds nothing more it can show, because what other systems write is never recorded. See Failure messages.
A warning says part of the record could not be saved
Section titled “A warning says part of the record could not be saved”The run is not affected, only the account of it. See Incomplete records.
Two failure groups look the same
Section titled “Two failure groups look the same”Two groups can show the same label when the hidden text behind it differed. If they share a cause, ask your agent to merge them.
A dismissed group came back
Section titled “A dismissed group came back”A new failure with the same cause reopens a group, and it notifies again. See A new failure reopens a group.
A run cannot be resumed
Section titled “A run cannot be resumed”The confirm step lists each run it refuses, with the reason. See Runs that cannot resume.
A test says “Passes on stand-in outputs”
Section titled “A test says “Passes on stand-in outputs””The fix works on that data, but a held write’s response was a stand-in, so the real call is not tested. See What “passes on stand-ins” means.
Triggers that do not start runs
Section titled “Triggers that do not start runs”Check these first, for every trigger:
- The automation is published, and its run state is Active, not Paused.
- The trigger is in the published version. A trigger added after the last publish is only in the draft.
Then the trigger itself:
- Webhook: Webhook enabled is on, and the caller uses the current URL and secret. A changed endpoint key changes the URL; a regenerated secret stops the old one. The caller must send the body the input schema expects. A
429answer means it is sending too much too fast. See Start runs from another system. - Schedule: the time zone is the one you meant. A time skipped by a daylight-saving change does not fire, and by default a tick is skipped while the previous run is still going.
- Email received: the mailbox connection is Connected, not Expired or Authorization revoked. New mail is checked about once a minute.
- Operation: the form is listed under Operations only while the automation is published and active.
Block error codes
Section titled “Block error codes”A failed step shows an error code. These are the common ones; each block’s reference page lists all of its own.
| Code | Block | Means | Do this |
|---|---|---|---|
redirect_not_followed |
HTTP Request | The server answered with a redirect. Redirects are not followed, so use the final URL. | |
comparison_invalid |
Condition, Switch | A compared value has no value, often because it maps a block that did not run on this path. | Map from a block every path passes through, or branch earlier. See Branch, loop and reuse. |
assertion_failed |
Assert | The condition the block requires did not hold. This is the block doing its job. | Fix the data upstream, or use a Condition if the run should branch instead of stop. |
json_syntax_invalid |
Parse JSON | The text is not valid JSON. The error gives the line and column. | Check what the previous step produced in its output. |
value_shape_invalid |
Apply Shape | The value does not match the shape. The error lists up to 16 issues. | Fix the source data or the shape. |
xml_invalid |
Validate XML | The document does not match its schema, and the block is set to fail on invalid input. | Read the listed errors, or route invalid documents to the invalid exit instead. |
callee_contract_changed |
Run automation | The called automation’s inputs or returns changed in a way that breaks this caller. | Add the block again from the Automations group to take the current contract, and map it again. |
call_depth_exceeded, call_limit_exceeded |
Run automation | Calls nest more than 3 deep, or one run made more than 100 calls. | Flatten the chain, or split the work across runs. |
return_unresolved |
Called by an automation | A required return has no value on the path this run took. | Map it on every path, or make that return optional. |
provider_response_invalid |
AI Prompt | Response format is JSON, and the model’s reply is not valid JSON. | Ask for JSON more firmly in the prompt, or use AI Agent with an answer shape. |
ai_classification_invalid_response |
AI Classify | The model answered with something that is not one of your classes. | Make the criteria clearer and add a catch-all class. |
incomplete_answer |
AI Agent | The agent left a required output field empty, so it took its Stopped exit. | Raise Maximum steps, simplify the task, or make the field optional. |
pinned_output_invalid |
Any block held in a draft run | The block’s example values on its Samples tab do not match its outputs. | Edit the values or click Clear. |
HTTP Request failed
Section titled “HTTP Request failed”HTTP Request fails on any status outside 200 to 299, on a timeout (5 seconds by default), and on a response that does not match its Response fields. The step shows the status. A 401 or 403 usually means the connection needs replacing or signing in again. To handle errors in the automation instead, see Call an outside API.
A reference table step failed with 409
Section titled “A reference table step failed with 409”- Read Reference Table fails on an archived table. Restore the table, or pick an active one.
- Find Required Reference Record fails when more than one row matches. Match on a column whose values are unique.
- Write Reference Table fails when the table’s columns changed after the block was set up. Pick the table again in the block.
Object storage says outcome_unknown
Section titled “Object storage says outcome_unknown”Write S3 object and Delete S3 object can succeed with the outcome outcome_unknown: the storage service did not confirm. The object may or may not have changed. Read it back before relying on it.
Agents
Section titled “Agents”The agent will not take messages
Section titled “The agent will not take messages”The chat says “Unpublished. Publish a definition before sending messages.” Publish the agent’s automation. See Build your first agent.
The agent says it cannot make a change
Section titled “The agent says it cannot make a change”Its Write access is Off, so it can only read. Set it to Ask or Smart on the AI Agent block and publish again.
The agent stops before it is done
Section titled “The agent stops before it is done”It hit Maximum steps or the Expense guardrail (USD). Raise the limit, or give it a narrower task.
Still stuck
Section titled “Still stuck”Lainstack is in private beta, with assisted onboarding. Contact the Lainstack team with the run’s reference from its page.