Here is a question that should be easy: which AI agent made this API call? In most organizations, the answer is "we don't know." Not because nobody is logging. But because every agent uses the same API key.

This is the identity problem for AI agents, and it's more consequential than it sounds. Without individual identity, you cannot scope permissions per agent. You cannot revoke one agent's access without revoking all of them. You cannot attribute actions in an audit trail. You cannot enforce least privilege. You cannot do anything that requires knowing who is making the request.

How agents authenticate today

The dominant pattern is simple and broken. A developer creates an API key from their model provider. They put it in an environment variable. Every agent on the team reads from the same variable. Every agent sends the same key with every request.

From the model provider's perspective, all these agents are one entity. From the governance layer's perspective, all these agents are indistinguishable. From the audit trail's perspective, every action was performed by "OPENAI_API_KEY ending in ...x7f2."

This works for development. It does not work for production. And it creates specific problems that compound as the number of agents grows.

Problem 1: No per-agent policy enforcement

If you want the claims agent to have a EUR 100 budget and the analytics agent to have a EUR 1,000 budget, you need to tell them apart. With a shared key, the budget applies to the key, not the agent. Either all agents share the budget (and the analytics agent can starve the claims agent) or there's no budget at all.

The same applies to tool restrictions, data access policies, model allowlists, and temporal controls. Every governance mechanism that operates per-agent requires per-agent identity. Without it, governance is either all-or-nothing or nonexistent.

Problem 2: No selective revocation

When an agent is compromised, you need to revoke its credentials immediately. With shared keys, revoking the key affects every agent that uses it. You've stopped the compromised agent, but you've also stopped the claims agent, the reporting agent, the customer service agent, and everything else that shares the key.

In practice, this means compromised agents often aren't revoked quickly because the blast radius of revocation is too large. The security team hesitates because they know that rotating the key will break production. The compromised agent continues to operate while the team scrambles to distribute a new key to the legitimate agents.

Problem 3: No meaningful audit trail

An audit trail that says "API key ...x7f2 made 10,000 calls last Tuesday" is not useful. Which agent? Which agent instance? Which session? These questions cannot be answered from the key alone.

For GDPR Article 30, you need to document which processing activities access personal data. For EU AI Act Article 12, you need automatic recording of events that enables traceability. For DORA, you need to identify which ICT assets accessed which systems. None of these requirements can be satisfied with "we have one API key."

What real agent identity looks like

The infrastructure world solved this problem years ago with SPIFFE: the Secure Production Identity Framework for Everyone. It's a CNCF graduated project used by Netflix, Uber, Square, and others to provide cryptographic identity to workloads.

The core idea is simple: every workload gets its own identity. The identity is a short-lived X.509 certificate or JWT that attests to what the workload is, not who deployed it. The identity is issued by a trusted authority (SPIRE, the SPIFFE Runtime Environment), rotated automatically, and revocable instantly.

Applied to AI agents, the same model works:

Each agent gets a unique identity. Not an API key. A cryptographic credential that identifies the specific agent, its owning team, its environment, and its deployment context. Two instances of the same agent get different identities if they're running in different environments.

The identity maps to permissions. The claims agent's identity maps to: allowed models (GPT-4), allowed tools (claims database, policy lookup), budget (EUR 100/session), data scope (claimant data only). The analytics agent's identity maps to different permissions. The mapping is maintained centrally, not in the agent's code.

The identity is verified on every request. When the agent makes a request to the governance proxy, the proxy verifies the identity before processing the request. No valid identity, no access. Expired identity, no access. Identity valid but not authorized for this action, no access.

The identity can be revoked individually. If the claims agent is compromised, revoke its identity. The analytics agent continues to operate. The revocation takes effect immediately because the proxy checks identity on every request.

The identity is short-lived. Credentials expire after hours, not months. Even if a credential is stolen, it stops working soon. Automatic rotation means the agent always has a fresh credential without developer intervention.

Why API keys survive

If cryptographic identity is better than API keys in every dimension, why do API keys persist? I think there are three honest reasons.

Simplicity. An API key is a string. You put it in an environment variable and it works. Setting up SPIFFE/SPIRE requires deploying infrastructure. For a developer building a prototype, the API key gets them from zero to working in minutes. The cryptographic identity gets them there in hours or days.

Ecosystem support. Model providers authenticate with API keys. Agent frameworks pass API keys. The entire toolchain is built around keys. Introducing cryptographic identity requires a translation layer that converts the identity into the format the downstream system expects.

Organizational inertia. The team has been using API keys. The keys are in the CI/CD pipeline, in the secrets manager, in the deployment scripts. Changing the authentication model is a migration project. Migration projects compete with feature work for engineering time.

These are practical obstacles, not principled ones. The right architecture for production is clear. The path to getting there passes through organizational reality. This is normal for security improvements. Multi-factor authentication was the right answer for user accounts long before most organizations adopted it. The same adoption curve will play out for agent identity.

The transition path

The practical transition doesn't require replacing API keys overnight. It requires inserting a governance layer between the agent and the model provider that can associate agent identity with API key usage.

The agent authenticates to the governance layer with its own identity (a unique API key, a JWT, or an X.509 certificate). The governance layer authenticates to the model provider with the shared API key. From the agent's perspective, it has its own identity. From the model provider's perspective, it's the same key. The governance layer bridges the gap.

This is a proxy pattern. It's how most security controls are introduced: insert a layer that adds capability without requiring changes to the layers above and below. Over time, as model providers add support for workload identity and agent frameworks add support for per-agent credentials, the proxy becomes thinner. But the agent identity persists.

The important thing is that the identity exists at the governance layer, even if it doesn't exist yet at the model provider layer. You can enforce per-agent policies, maintain per-agent audit trails, and revoke individual agents, all from the proxy, without waiting for the rest of the ecosystem to catch up.


Agent identity is not a new concept. It's workload identity applied to a new kind of workload. The infrastructure patterns exist. The standards exist. What's needed is the recognition that AI agents in production deserve the same identity rigor as any other system that processes sensitive data and makes consequential decisions. An API key is how you build a demo. An identity is how you run in production.

Give your agents real identity

TapPass provides per-agent identity, per-agent policy, and per-agent audit trails. Works with any framework.

Book a demo