Authorize

Atlas

Replaces the shared API key an AI agent uses with a scoped, attenuable token bound to its workload identity — verified offline, with no network hop on the authorization path.

★ 40 on GitHub Go · SPIFFE/SPIRE · gRPC · MCP · Railway · Cloudflare Pages

Narrow it. Then try to widen it.

An agent holding a token can hand a weaker one to the next hop without asking anyone. What it cannot do — at all, by construction rather than by policy — is hand out a stronger one. Four clicks to see why that matters.

delegation token generation 0
subject
spiffe://rajpatil.dev/ns/payments/sa/aisre-agent
effective
k8s:* · everywhere · 15m
caveats

none — this token can do anything the issuer could

  • +ns == payments
  • +action == restart
  • +resource == checkout-api
  • +exp <= now + 60s
attenuate
widen

Why not just use an API key

The default way to let an agent call a tool is to give it a key. That key is bearer-authority: whoever holds it has everything it can do, for as long as it lives, from anywhere. When the agent passes work to a sub-agent it passes the whole key, because a key has no smaller version of itself.

Workload identity fixes who the caller is; SPIRE issues an SVID that says this process, on this node, in this namespace. Capabilities fix what it may do. Atlas joins the two: the token names the workload it was minted for, and a verifier checks both without calling anything — which matters, because an authorization check on the network path is a dependency that fails during exactly the incidents you built the agent to handle.

What is actually interesting about it

Scope — what this is not

A working service with a conformance suite and three SDKs, deployed and in use by my own agent pipeline. It has not been through an external security audit or run in production at another organisation.

Elsewhere in the system