Skip to content

Delegation Constraints

Typed constraints make delegated authority explicit. They are stored on delegation edges and evaluated by policy, SDK context, and resource-server verification.

ConstraintUse it to limit
ResourceWhich protected target can be reached.
ScopesWhich actions can be requested.
TTLHow long the delegated edge remains useful.
Hop countHow deep the delegation chain may become.
BudgetHow much work, calls, or scope count a child can consume.
ApprovalWhether policy or a reviewer has approved a sensitive edge.
Chain membershipWhich applications must appear in the delegation path.
{
"resource": "https://api.example.com/tickets",
"scopes": ["tickets:read", "tickets:comment"],
"max_hops": 2,
"budget": 5,
"expires_at": "2026-06-01T12:00:00Z",
"policy_approved": true
}

The exact constraint object can vary by policy design, but it should stay typed, stable, and auditable.

flowchart TD
  SDK["SDK creates edge"] --> Coordinator["Coordinator stores constraints"]
  Coordinator --> STS["STS includes edge in policy input"]
  STS --> Policy["Policy evaluates constraints"]
  Policy --> Mandate["Mandate carries delegation claims"]
  Mandate --> Connector["Gateway or connector checks claims"]
  • Put durable business rules in policy.
  • Put per-edge runtime limits in constraints.
  • Prefer positive allowlists over open-ended deny lists.
  • Keep constraints small enough to review in audit traces.
  • Use consistent field names across agents so policies stay readable.

Read Sessions and Revocation to understand how active authority ends.