Seal
Concepts

Human in the loop

The vocabulary — approval request, verdict, reviewer, escalation — and how the pieces fit together.

Seal is a human-in-the-loop (HITL) control plane for autonomous agents. This page defines the terms used throughout the docs.

Vocabulary

  • Approval request — a single action an agent wants to take, created by gate.require(). It has a status that starts at pending and settles to approved, rejected, expired, or escalated.
  • Policy — the rules that decide, per request, whether a human is needed and who reviews it. See policy authoring.
  • Verdict — the policy's decision: allow, deny, or require_approval. The final reviewer decision on a request is either approved or rejected.
  • Reviewer — the human who approves or rejects, in Slack, by email magic link, or in the dashboard.
  • Escalation — if the first approvers do not decide in time, the request can move to the next set of approvers instead of failing. Configured per policy.

The lifecycle

agent → gate.require() → policy evaluates

              ┌───────────────┼────────────────┐
           allow        require_approval       deny
              │               │                 │
          approved      notify reviewer      rejected

                  ┌───────────┼───────────┐
               approved   rejected   timeout → deny | escalate

Only these transitions are legal: pending → approved | rejected | expired | escalated, and an escalated request may still resolve to approved | rejected | expired. Nothing else is representable — the transition table is enforced in the database.

Every one of these transitions writes an entry to the audit chain.

On this page