Concept
Delegation
The on-behalf-of chain that binds an agent to a principal for a scoped task.
Definition
A delegation says which principal an agent acts for and what it may do. It is written as an on-behalf-of chain, for example seat:ada > agent:meridian, and recorded in the receipt's delegation field. A chain that does not bind the agent to the seat is denied.
Shape
// DecideContext
act?: string; // "seat:ada > agent:meridian"
actBound?: boolean; // false when the chain does not bind the agent to the seat
// ReceiptBody
delegation: string | null;
Invariants
| Invariant | Checked by |
|---|---|
| An unbound on-behalf-of chain is denied with rule deny.delegation_chain. | packages/engine/src/decide.ts (actBound === false) |
| An unverified delegation claim does not allow. | packages/detect/src/session-handoff.test.ts: "an unverified delegation claim does not allow" |
| A delegated tool call emits one event with its receipt and the delegated user. | packages/connectors/src/mcp.test.ts: "allowed call emits one event with a receipt and delegated user" |
Out of scope
- Consent the principal gave somewhere else. Silvector records the chain it was shown.
- Payment authorization. A delegation to browse is not a delegation to pay.