Skip to main content
Output review pauses the workflow after a step executes, letting a human inspect the output before it continues to the next step. This complements pre-execution confirmation, which pauses before a step runs. Configure it with human_review=HumanReview(...) on the primitive. Flat parameters on Step (for example requires_output_review=True) still work for backward compatibility. Supported on Step, Router, and Loop (via requires_iteration_review on HumanReview).
The step executes, then the workflow pauses with the full output available in req.step_output. The reviewer calls confirm(), reject(), or edit() before resuming.

Parameters

Pass these fields inside HumanReview. See HumanReview Config for the full field list, defaults, and validation rules.

Reviewer Actions

Reject with Retry

Set on_reject=OnReject.retry to re-execute the step when a reviewer rejects. Pair with reject(feedback=...) to send the reviewer’s feedback to the agent on the next attempt.
The feedback string is injected into the agent’s message as "Feedback from reviewer: ..." on the next execution. Without feedback, the step simply re-runs with the same input.

Retry Behavior

Edit Output

Accept with modifications. The edited content replaces the original step output before it flows to the next step. Use this when the fix is minor and a full retry would be wasteful.
edit() sets confirmed=True and stores the edited content. On resume, the edited output replaces the original in collected outputs.

Conditional Review

Pass a callable to requires_output_review inside HumanReview to evaluate at runtime whether review is needed. The predicate receives the StepOutput and returns True to pause or False to auto-approve.
This avoids the all-or-nothing problem: review every output (expensive) or review none (risky). Common predicates:

Full Review Loop

The complete pattern with all three reviewer actions:

StepRequirement Properties

When a step pauses for output review, the StepRequirement includes:

Developer Resources