Step Error Messages
Match the error text or code from a Step’s Executions tab to find its cause and fix. Quoted headings identify validation messages; the Code editor section covers symptoms whose exact error text depends on the failure.
- Use it to
- Match an error message or error code from Execution Log to its root cause and fix
- Find it
- Canvas → Execution Log or Step drawer → Executions tab
Flow and list Step validation errors
| Exact validation message | Step | Cause and fix |
|---|---|---|
| “Combine needs exactly two incoming branches” | Combine | Combine requires one list from each of two connected branches. Connect the missing second branch or remove a third branch. |
| “Combine must wait for both incoming branches. Set its branch wait mode to AND.” | Combine | Combine waits for both incoming branches (await: "all"). Set the Step’s wait mode to all (or replace the Combine Step and reconnect both branches). |
| “First list and Second list must refer to different connected branches” | Combine | Both fields reference the same incoming branch. Pick Second list from the other connected branch. |
| “Sort needs at least one ‘Sort by’ row” | Sort | No sort rule is configured. Add a Sort by row (leave the field blank to sort a list of scalar values). |
| “Limit needs a number of items to keep” / “…must be a whole number of zero or more” | Limit | Number of items is empty or not an integer (0 is allowed and returns an empty list). |
| “The list was empty, so this loop ran no passes” | Repeater | Informational notice when the input list has zero items; execution continues from When finished. Check upstream Filter or fetch Steps if the list should not be empty. |
| “This Repeat has no path back from ‘Each time’, so it ran only the first pass” | Repeater | The loop body’s last Step is not wired back into the Repeater. Connect the final Step in the loop body back to the Repeater to run all passes. |
| “can work on at most 100,000 items at once” | Sort, Limit, Remove duplicates, Filter | Input list exceeds the 100,000-item ceiling. Fetch smaller pages from the source before passing the list to the Step. |
| “approverEmail is required but was not provided” | Human Review | Approver address is missing or resolved to empty. Supply one valid email address (lists of addresses are not accepted). |
Code editor failures and truncated output
For a Code editor failure, read the error reason and captured output in the Step’s Executions tab. Do not infer a timeout, memory limit, or network policy from a generic execution failure.
Code exceeded its time limit
Symptom: The error reports that the program exceeded its time limit. A timeout reason can include “the program exceeded the 150-second limit and was stopped”.
The Cause: The script did not finish within the execution limit. Check for infinite loops, recursion over large inputs, or expensive computations.
The Fix: Reduce the input with a Limit Step, improve the algorithm, or split the transformation into smaller units of work.
Python exited with an error
Symptom: The error reports an unsuccessful exit or a signal that stopped the program.
The Cause: Read the captured output for the specific exception. An unsuccessful exit alone does not establish that the script ran out of memory.
The Fix: Fix the reported exception first. If the failure depends on input size, test with a smaller list and avoid holding unnecessary copies of large data structures.
Printed output was truncated
{{ N.result.executionOutput }} includes … [truncated: the program printed more than a step result keeps] when output exceeds the Step retention limits:
| Stream or output field | Limit | Behavior when exceeded |
|---|---|---|
| Per-stream capture cap | 256 KiB (stdout or stderr default) | Cuts off the program’s final lines before they reach the Step result |
Retained stdout / stderr in executionOutput | Last 100,000 stdout chars and 20,000 stderr chars | Retains only the tail of each stream for inspection (not a JSON contract) |
Structured JSON in {{ N.result.output }} | Parsed from the last non-empty stdout line | Omitted with a warning if the final line is cut off or is not valid JSON |
Remove debug prints and end the script with print(json.dumps(result)) within the 100,000-character and 256 KiB limits. Map {{ N.result.output }} only after confirming it exists.
The script needs external data
Use an HTTP Request Step to fetch or post external data, then pass its output into the Code editor with variable placeholders. Keep Python focused on the transformation. For an import failure, check the libraries supported by the Code editor.
Runtime and validation error codes
When a Step or validation check fails in the Executions tab, Execution Log, or over MCP, Glow records a machine code or message alongside the human headline:
| Code or message | Where it appears | Retried? | Meaning and fix |
|---|---|---|---|
AGENT_LIMIT_REACHED | AI Agent | No | The AI Agent hit a run limit (iterations, model calls, tool calls, time, or credits). Partial findings are kept in partialOutput. Raise the limit under Advanced runtime limits. |
dangling_connection | Validation | — | A connection points to a Step that no longer exists on the canvas (or an unconfigured placeholder). Remove the connection and connect the intended Steps. |
reference_output_unknown | Validation (warning) | — | A reference names a field that no test has returned yet. Run the upstream Step once, then pick the field from Workflow data. |
"Placeholder 99.nothing didn't find data" | Runtime reference resolution | No | A reference names a Step number or field that does not exist in the upstream output. Pick the reference from Workflow data (or add | default:"..." for optional fields). |
SECRET_IN_UNSAFE_SINK | AI, Data Store, Webhook, File | No | A secret ({{ $secret.* }} or {{ $key.* }}) is used where Glow refuses it (AI Step, Data Store, Convert to File, or Respond to Webhook). Move the secret into an HTTP header or app. |
GLOW_AI_TOKEN_LIMIT | AI Agent, AI Prompt | No | The workspace’s Glow AI token allowance is exhausted (out_of_credits). Check Billing & Usage or increase the workspace’s token allocation. |
out_of_credits | Any billable Step | No | The workspace reached its Step-credit or shared-credit cap before the Step started. Check Usage Controls & Recovery. |
TOOL_AUTH_FAILED | AI Agent, App Steps | No | The connected account’s credential expired or was revoked. Click Reconnect on the Step or in Connections. |
MCP_PAUSED | MCP tools | No | A workspace Admin paused MCP in Team settings → MCP, or the connection owner paused their MCP connections in Your account → MCP. Resume MCP before retrying. |
MCP_SCOPE_INSUFFICIENT | MCP test_step / run / etc | No | The MCP connection level or workspace ceiling does not include this tool. Update the connection in Your account → MCP or check Team settings → MCP. |
MCP_TEST_SECRETS_REFUSED | MCP test_step / run | No | An MCP test referenced a workspace secret without Allow tests to use workspace secrets (or per-secret test approval). Enable the grant in Your account → MCP or remove the secret. |
CODE_SANDBOX_BUSY | Code editor | Yes (transient) | Concurrent Python sandbox capacity is in use. Glow queues and retries automatically for up to 15 minutes at 0 credits; for large batches, set Item concurrency between 1 and 4. |
CODE_OUTPUT_TOO_LARGE | Code editor | No | Printed stdout exceeded the 256 KiB capture cap and cut off the final JSON line. Remove debug prints and return only the required fields. |
- Run
- Open a failed Step in Execution Log and match its error code or message against the tables above
- You should see
- You can identify whether the failure happened before or after billable work started and apply the listed fix.
What’s Next?
- Find the failing step and its input with Debug a Run.
- Check list and field references in Data and Mapping Problems.
- Review platform-wide ceilings in System Limits & Quotas.