Pause state is persisted to the workflow’s database. When the user resolves the requirement, call
workflow.continue_run(run_output) to resume from where it left off.
Pick a Level
Step-Level vs Executor-Level
Supported Primitives
User input is currently supported on
Step (to collect parameters) and Router (to select routes). Steps and Condition support confirmation only; Loop adds iteration review.Requirements
HITL workflows need a database to persist state between pauses.Run Output Properties
When a workflow pauses, inspectWorkflowRunOutput:
For nested HITL, always read the last entry in
step_requirements to determine the current pause type. Earlier entries are history. See Nested HITL.
For the full structure of every pause object (WorkflowRunOutput, StepRequirement, and executor requirements) and the methods that resolve each, see Pause Anatomy.
OnReject Behavior
on_reject controls what happens when a user rejects a step.
Timeout
Every HITL pause can have a deadline. If the user does not respond in time,on_timeout decides what happens.
Streaming
HITL works with streaming. Watch for pause events; read the paused run from the session.WorkflowRunOutput (including step_requirements) is persisted to the database, not yielded as a stream event.
The @pause Decorator
Mark custom function steps with HITL configuration.Guides
HumanReview Config
All HITL settings in a single config object
Step HITL
Confirmation, user input, and output review on steps
Executor HITL
Tool-level HITL inside agents and teams
Nested HITL
Combine step-level and executor-level on the same step
Pause Anatomy
The objects a paused run exposes and how to resolve them
Output Review
Review, edit, or reject output after a step runs
Router HITL
Route selection, confirmation, and output review
Condition HITL
User-controlled branching decisions
Loop HITL
Start confirmation and per-iteration review
Steps HITL
Confirm before executing a pipeline
Timeout
Auto-resolve HITL pauses after a deadline
Error Handling
Retry or skip failed steps