Python SDK exception reference

ArcFlow Python exceptions inherit from ArcFlowError. Messages follow the format [ArcFlow] <what happened>. <what to do>. when raised by SDK validation layers. Native runtime errors are mapped into the same hierarchy before they reach your code.

Hierarchy

text
ArcFlowError
├── WorkflowConfigurationError
├── WorkflowExecutionError
│ ├── RetryExhaustedError
│ └── WorkflowTimeoutError
├── ToolConfigurationError
├── ToolExecutionError
├── MemoryConfigurationError
├── MemoryOperationError
├── ProviderConfigurationError
├── ProviderExecutionError
├── InfrastructureUnavailableError
├── TraceNotFoundError
├── TraceStorageWarning
├── HumanRejectedError (arcflow.hitl)
└── WorkflowInterruptedError (arcflow.hitl)

Configuration errors (fix before run)

These indicate invalid workflow, agent, tool, memory, or provider definitions. No run is started or the failure happens before native execution begins.

WorkflowConfigurationError

TriggerRemediation
Empty workflow namePass non-empty Workflow("name")
step() on graph workflowUse node() when graph=True
node() on linear workflowPass graph=True to constructor
Empty run inputPass non-empty string to run()
No steps or nodesAdd at least one step or node
Invalid retry, timeout, recovery configCheck numeric bounds and call order (before run())
run_stream() with remote runtime=Use in-process workflow or non-streaming remote run
resume() without enable_recovery()Call enable_recovery() first
Fallback agent not in prior stepsRegister fallback in an earlier step()

ToolConfigurationError

TriggerRemediation
Empty tool name or descriptionProvide non-empty strings
Invalid input_schemaPass JSON-serializable JSON Schema dict
Non-callable executePass (dict) -> str callable
Invalid timeout_secondsMust be positive

MemoryConfigurationError

TriggerRemediation
Missing namespace for persistent/vectorSet namespace= on MemoryConfig
Invalid retrieval or chunking valuesSee API reference bounds
VectorStore called without namespacePass non-empty namespace to ingest/search

ProviderConfigurationError

TriggerRemediation
Empty model stringe.g. OpenAI(model="gpt-4o")
Temperature outside 0.0 to 1.0Adjust temperature
max_tokens below 1Use positive token limit

Execution errors (during run)

WorkflowExecutionError

A step failed during execution.

AttributeTypeMeaning
run_idstr | NoneRun UUID when available
failed_stepstr | NoneStep id that failed

Check trace via workflow.trace() or CLI arcflow trace <run_id>.

RetryExhaustedError

Subclass of WorkflowExecutionError. All retry attempts exhausted.

AttributeType
attempts_madeint
last_error_codestr | None

Review retry policy on workflow.retry() and upstream provider errors.

WorkflowTimeoutError

Subclass of WorkflowExecutionError. Workflow or step timeout enforced.

AttributeType
timeout_typestr
configured_secondsfloat
elapsed_secondsfloat

Increase timeout() / step_timeout() or reduce work per step.

ToolExecutionError

Tool callable raised or native tool layer failed.

AttributeType
tool_namestr | None
run_idstr | None
failed_stepstr | None

MemoryOperationError

Memory read or write failed at runtime. Verify backend URL, migrations, and namespace.

ProviderExecutionError

LLM provider call failed.

AttributeType
provider_idstr | None
run_idstr | None
failed_stepstr | None

Verify API key env vars and model name.

InfrastructureUnavailableError

Optional backend unreachable or URL unset.

AttributeType
backendstr | None
suggestionstr | None

Common case: Postgres or Qdrant not running. Start Docker stack and export env vars from installation.

Observability errors

TraceNotFoundError

No trace for requested run.

CauseFix
trace() before run()Call run() first
Run evicted from in-process storeRe-run or use CLI with persisted trace

TraceStorageWarning

Trace store dropped events at capacity. Not always fatal; check TraceResult.warnings.

AttributeType
events_droppedint
run_idstr | None

Reduce trace volume or increase store limits in runtime config.

HITL errors

WorkflowInterruptedError

Workflow paused waiting for human approval. Expected control flow for HITL, not necessarily a bug.

AttributeType
run_idstr
approval_keystr
expires_atstr | None

Resume with workflow.resume_with_approval(run_id, approval_key, approved=True).

HumanRejectedError

Human rejected the approval request.

AttributeType
approval_keystr | None

External callback errors

report_outcome() raises standard Python exceptions outside the ArcFlow hierarchy:

ExceptionCause
ValueErrorMissing ARCFLOW_SERVER_API_KEY or ARCFLOW_WEBHOOK_SECRET
RuntimeErrorHTTP error or network failure from callback POST

Quick lookup table

ExceptionPhaseTypical fix
WorkflowConfigurationErrorPre-runFix workflow definition
WorkflowExecutionErrorRunInspect trace, failed step
ToolConfigurationErrorPre-runFix tool schema or callable
ToolExecutionErrorRunFix tool implementation
MemoryConfigurationErrorPre-runFix MemoryConfig
MemoryOperationErrorRunFix backend connectivity
ProviderConfigurationErrorPre-runFix provider constructor args
ProviderExecutionErrorRunFix API key or model
InfrastructureUnavailableErrorRunStart Postgres/Qdrant
TraceNotFoundErrorPost-runRun workflow first
TraceStorageWarningPost-runReduce event volume
RetryExhaustedErrorRunAdjust retry or root cause
WorkflowTimeoutErrorRunIncrease timeout
WorkflowInterruptedErrorRun (HITL)Approve or reject
HumanRejectedErrorRun (HITL)Handle rejection path