Loop Engine

Ai And Automation

Human Approval Gates

When to require human approval

Use human gates for:

  • high-value financial commitments
  • irreversible actions
  • regulated or compliance-heavy decisions

Pattern A: exclude ai-agent from allowedActors

1- id: settle_invoice
2 from: MATCHED
3 to: SETTLED
4 allowedActors: [human, automation]

If an AI actor attempts this transition, authorization returns requiresApproval: true.

Pattern B: AI constraints in authorization

AIActorConstraints in @loop-engine/actors:

1{
2 canRecommendTransitions: true
3 canExecuteTransitions: boolean
4 requiresHumanApprovalFor: TransitionId[]
5 maxConsecutiveAITransitions: number
6 currentConsecutiveAITransitions?: number
7}

When limits are exceeded, canActorExecuteTransition() returns unauthorized with approval required.

Pending approval sequence

1const aiAuth = canActorExecuteTransition(aiActor, transition, constraints)
2if (!aiAuth.authorized && aiAuth.requiresApproval) {
3 "cmt">// Create human review task using ai evidence
4}
5 
6"cmt">// Later, human executes same transition:
7await engine.transition({
8 aggregateId,
9 transitionId,
10 actor: { type: 'human', id: 'approver@acme.com' },
11 evidence: { approved: true, approval_ticket: 'APR-123' }
12})