Why workload identity fits agents
How an agent gets its identity
1
SPIRE attests the workload
Node attestation proves which machine or node the workload runs on (evidence: a Kubernetes projected service account token, an AWS instance identity document, GCP instance metadata). Workload attestation proves which process is calling (selectors: Kubernetes service account, namespace, container image digest). Only a workload matching a registered policy gets an identity.
2
SPIRE issues an SVID
The attested workload receives a SPIFFE Verifiable Identity Document carrying its SPIFFE ID, for example
spiffe://acme.com/ns/agents/sa/research-agent:SVIDs are rotated by the SPIRE agent before expiry, so the agent never experiences a credential-expiry event.
3
TrueFoundry validates it as an identity provider
SPIRE exposes an OIDC-compliant discovery endpoint. Register it under Platform → Identity Providers (issuer, audiences, JWKS URI), then register the agent with an identity provider-backed identity mapping the SPIFFE ID claim to the agent. The agent presents its JWT-SVID to the gateway exactly like any other identity provider token.
Combining SPIFFE with the other scenarios
SPIFFE identifies the agent workload; it says nothing about the user the agent acts for, and third-party resources don’t accept SVIDs. The layering that works — sometimes called the portable-trust sandwich:- Inbound: the agent authenticates with its SVID; the user’s identity travels alongside it, as in every scenario.
- Outbound: the gateway performs the same token exchange it would for any agent — OBO within a domain, ID-JAG across domains, or per-user OAuth — minting whatever the target trusts. (Per-hop exchange is rolling out — see coming soon.)
- Cross-cloud: because SPIFFE is vendor-neutral, the same agent identity survives a move between clouds — the gateway keeps the policy and audit schema constant while the runtime underneath changes.
Coming soon: first-class SPIFFE binding on the agent registration — attaching the SPIFFE ID directly to the agent spec so per-instance SVIDs are bound to the stable per-agent identity, giving fleet-level policy with instance-level revocation.