← primitives
draft-kya-delegation-01

DELEGATION

draft-kya-delegation-01

Authorization chains for AI agents.
Human delegates to agent.
Agent proves authorization.

1. Delegation Model

Human authorizes agent to act on their behalf.
Agent presents proof of delegation.
Services verify the chain.

Human (Alice)
  ↓ delegates to
Agent (Assistant Alpha)
  ↓ invokes
Service (Calendar API)

2. Delegation Token

{
  "iss": "did:key:z6Mk...",      // Human DID
  "sub": "did:key:z6Mk...",      // Agent DID
  "aud": "https://api.example",  // Target service
  "exp": 1735689600,
  "scope": ["calendar:read", "calendar:write"],
  "constraints": {
    "notBefore": 1735603200,
    "ipWhitelist": ["203.0.113.0/24"],
    "maxInvocations": 100
  }
}

3. Proof Format

Agent presents proof containing:
- Agent credential (who I am)
- Delegation token (what I'm authorized to do)
- Invocation proof (this specific request)

{
  "credential": "eyJ...",  // Agent VC-JWT
  "delegation": "eyJ...",  // Delegation JWT
  "proof": {
    "type": "Ed25519Signature2020",
    "created": "2025-01-29T12:00:00Z",
    "verificationMethod": "did:key:z6Mk...#z6Mk...",
    "proofPurpose": "authentication",
    "challenge": "nonce-12345",
    "proofValue": "z58DAdFfa9..."
  }
}

4. Verification

Service verifies the delegation:

1. Verify agent credential signature
2. Verify delegation token signature
3. Check delegation.iss matches credential subject
4. Check delegation.sub matches agent DID
5. Check delegation.aud matches service
6. Validate scope against requested action
7. Enforce constraints (IP, time, rate)

5. Revocation

Humans can revoke delegations at any time.
Services check revocation before honoring requests.
Status List 2021 or API-based revocation registry.

6. Chained Delegation

Agents can further delegate to sub-agents.
Each link in chain must be verified.
Scope narrows at each delegation.

Human → Agent A (scope: calendar:*, email:*)
        ↓
        Agent B (scope: calendar:read)
                ↓
                Service
View Source · GitHub