Anatomy
purp claim is the bit nothing else has. Standard JWTs have identity;
intent tokens add purpose.
TTL
By default, intent tokens live for 5 minutes. The right TTL depends on:- Tool-call workflow — most LLM workflows complete in seconds; 5 min is generous
- Background job — for batch work, declare a longer TTL on the purpose record
- Human approval queue — the token only mints AFTER approval, so the TTL starts when the work begins
Where intent tokens get verified
| System | When |
|---|---|
| Inviolet database proxy | Every SQL query — column allowlist enforced |
| Vault credential broker | Every credential issuance — credential TTL bounded by token TTL |
| Okta token hook (optional) | Standard OIDC token gets a purp claim added |
| Custom resource servers | Verify the JWT signature + check purp.elements |
Verification — code example
What happens when a token expires
The downstream system rejects the request with a structured error. The gateway can either:- Re-mint by re-evaluating the original purpose against current policy (if the agent is still active)
- Re-approve by routing back through the human approval queue
Read next
- Policy engine — how purposes get approved or denied
- Database proxy — column-level enforcement against the active intent token