Gates & reviews
Human-in-the-loop by default: approvals, rework loops, and who's allowed to approve.
Between phases, a run stops at a gate and waits for a human. That's the core safety property: the agent never advances past a phase you haven't seen. A parked run holds nothing — no process, no container — so it can wait for your review for an hour or a week.
Approve or request changes
At a gate you see the phase's full output: the transcript, the diffs, check results, published artifacts. Then two buttons:
- Approve — the run advances to the next phase.
- Request changes — your note goes back as feedback and the agent reworks the same phase on the same branch, then returns to the gate.
The same review works everywhere: the editor's live session, the run's dashboard page, the desktop app, and the phone — with a push notification ("Waiting for your review") the moment a run parks. A failed phase parks at its gate too: Approve retries it, Request changes sends it back with instructions.
Who may approve
By default, any signed-in member of your organization. A phase can restrict that — in the workflow editor's Reviewers section, or in YAML:
phases:
- id: coding
gate: true
approvers: # any-of: match one rule and you may approve
- admin # Peractor org admins
- codeowners # owners from the repo's CODEOWNERS
- { github: [alice, org/reviewers] }
- { repo: write } # collaborators at write or above
- { tracker: assignee } # the issue's assignee
self: deny # four-eyes: authors can't approve their own work
Rules exist for GitHub, GitLab, Linear, Jira, and Notion identities, repo collaborator permission levels, and the tracker's assignee or team. Approval reuses the reviewer's external identity — the account they signed in with — so policies name people you already know, and a reviewer only matches rules from their own provider.
Peractor's gate advances the workflow. A
merge step still goes through your VCS, so branch
protection and required PR reviews keep applying on top.
Never miss one
Notifiers announce every gate in
your team's channels, phones get push, and on a self-hosted control
plane PERACTOR_GATE_TIMEOUT_MS re-sends a reminder for gates
left waiting.
Related: Code review · Mid-run questions