When an AI agent commits code, calls an API, or moves money, the audit log should answer three questions: which agent did this, on whose authority, and with what permissions. Too often today it cannot, because the agent acted with a borrowed human login or a shared service account. ZeroID is open source identity infrastructure built for exactly that gap. It gives every agent its own cryptographically verifiable identity, lets agents delegate a narrowed slice of their authority to sub-agents, and revokes an entire delegation chain in real time when something goes wrong.
Key Takeaways
ZeroID is identity infrastructure for autonomous agents, not a human login system and not a general workload identity platform.
Each agent gets a stable WIMSE/SPIFFE identity URI, and delegation uses RFC 8693 token exchange with automatic scope attenuation.
Revoking a parent credential invalidates the whole downstream chain immediately, instead of waiting for tokens to expire.
It is built on OAuth 2.1, WIMSE/SPIFFE, RFC 8693, DPoP, CIBA, and the OpenID Shared Signals Framework, with SDKs for Python, TypeScript, and Rust.
At the time of writing it has 209 stars, 24 forks, and 329 commits, is Apache 2.0 licensed, and was created on 2026-03-17.
It runs as a Go service backed by PostgreSQL, locally with Docker Compose or hosted at auth.highflame.ai, so trying it is a small setup, not a platform migration.
Watch the 30-second repo signal
What ZeroID Actually Is
ZeroID, by Highflame, describes itself as "Identity Infrastructure for Autonomous Agents" and as an Autonomous Agent Identity Management System (AAIMS). In plain terms, it is the server that issues short-lived, scoped credentials to agents, records who authorized them, and can take them away again.
The distinction the project insists on matters. ZeroID says it is not a human identity system such as Okta, Entra, or Clerk, and not a general workload or non-human identity platform such as SPIFFE/SPIRE, cloud IAM, or a secret manager. Those ecosystems are mature, and ZeroID builds on their primitives, including WIMSE/SPIFFE URIs, OIDC, and RFC 8693, and federates with them. What it adds is the agent-shaped layer they do not model: per-agent identity, attenuated delegation across agent chains, a trust tier derived from attestation, the on-behalf-of act chain, and real-time revocation with cascade.
That framing lines up with the problem statement in the OpenID Foundation whitepaper on Identity Management for Agentic AI, published in October 2025, which ZeroID quotes directly: "User impersonation by agents should be replaced by delegated authority. True delegation requires explicit 'on-behalf-of' flows where agents prove their delegated scope while remaining identifiable as distinct from the user they represent." When an agent impersonates a user, the log shows the user. When it acts under delegation, the log shows both the user and the agent, and that difference is the whole product.
The project is also already in production use by its own maker. The README says Highflame has used ZeroID to power its Agent Control and Governance Platform for several months and contributed it to open source to advance the field. Independent coverage agrees on the basics: Help Net Security reported on 2026-04-13 that ZeroID is an open source identity platform for autonomous agents and multi-agent systems, built around RFC 8693 delegation chains and real-time revocation through the OpenID Shared Signals Framework. Business Wire covered the April 2026 launch on the same terms, noting the Apache 2.0 license and the hosted option at auth.highflame.ai.
Why Service Accounts and Plain OAuth Break Down
The README's comparison table is blunt, and it is the fastest way to see the argument.
Capability | Service accounts | OAuth/OIDC | ZeroID |
|---|---|---|---|
Per-agent identity | Shared, no | Yes | Yes |
Agent-specific metadata (type, framework, version) | No | No | Yes |
On-behalf-of delegation chain | No | No | Yes, RFC 8693 |
Scope attenuation at each delegation step | No | No | Yes |
Delegation depth enforcement | No | No | Yes |
Real-time revocation with cascade | No | No | Yes, CAE and SSF signals |
Autonomous workflows, no human in the loop | No | No | Yes |
Open source, standards-based | No | Partial | Yes |
Service accounts are the worst case: shared, opaque, and with no delegation trail at all. If five agents share one service account, revoking one agent means rotating a credential the other four still need, and the audit trail cannot tell them apart. OAuth and OIDC work well for a human signing in, and partially for a single agent inside one trust domain, but the model breaks when agents operate asynchronously, spawn sub-agents, or cross organizational boundaries. A token minted for a human does not naturally carry "this agent, acting for that human, at delegation depth 2, with only these tools".
ZeroID's answer is to make the agent a first-class principal. Every agent gets a stable, globally unique identity URI in the form spiffe://{domain}/{account}/{project}/{type}/{id}. Every token carries that URI, plus the full on-behalf-of chain: who authorized it, what scope was granted, and how deep the delegation goes. Any system the agent calls can verify that chain cryptographically instead of trusting a shared secret.
How Delegation Works, Step by Step
The core flow is a chain, and each hop narrows what the next agent can do.
Step | What happens |
|---|---|
Register | An agent is registered with a role, metadata, and trust level, and gets a WIMSE identity URI plus an API key |
Authorize | A root authority, a human, an org policy, or an orchestrator agent, authorizes the first agent with a scoped credential |
Delegate | The orchestrator delegates a subset of its scope to a sub-agent using RFC 8693 token exchange |
Attenuate | The sub-agent can only receive permissions the orchestrator already holds, capped by the sub-agent's own policy |
Verify | Every downstream system can verify the full chain cryptographically from the token |
Revoke | Revoking any credential in the chain invalidates it and everything downstream, in real time |
Two enforcement details make this more than a naming scheme. First, scope ceilings: an identity's allowed_scopes is the absolute ceiling of what its tokens can carry, credential policies only narrow within it, and a grant whose layers leave nothing is refused rather than minted without scopes. Second, depth caps: a credential policy sets a maximum delegation depth, and the default token profile caps the nested act chain at 16 agents, so a runaway chain cannot grow without bound.
The project also covers the flows around that core. A fully autonomous agent can use an API key with no human in the loop. A human can authorize once, and the agent then runs autonomously. A long-running agent can refresh its token without re-authenticating. For the moments that genuinely need a person, OpenID CIBA lets an agent request out-of-band approval, with the user approving or denying through email, Slack, or mobile push, and the agent collecting the token by poll, ping, or push. For high-risk agents, DPoP sender-constrained tokens bind a token to the client's key, so a stolen token alone is not enough to use it.
For coding agents specifically, ZeroID ships a scope vocabulary that keeps teams consistent: tools:read, tools:write, tools:execute, tools:network, tools:agent, and tools:vcs, plus personas such as a read-only reviewer with depth 1, a code editor with depth 2, and a full-autonomy agent with depth 5. That vocabulary is also what an MCP server can check at the tool boundary, which is where a prompt-injected instruction meets a credential that cannot authorize the write.
What You Get Beyond the Token
ZeroID is a fuller server than a token minter, and the feature list shows it.
Feature | What it does |
|---|---|
Agent identity registry | Registers agents, MCP servers, services, and applications, with lifecycle from register to de-provision |
OAuth 2.1 issuance | Client credentials, JWT bearer, token exchange, API key, authorization code with PKCE, refresh token, and CIBA grants |
DPoP tokens | Sender-constrained tokens under RFC 9449, with replay protection on proof identifiers |
Dynamic client registration | Self-service client registration under RFC 7591, gated by an initial access token |
Scope ceilings | Policies that narrow, never widen, what a token can carry |
Attestation | Pluggable verifiers that raise an agent's trust level before credentials are issued |
Continuous access evaluation | Real-time revocation through OpenID Shared Signals Framework signals |
Delegation explorer | Read-only endpoints for the delegation graph, lineage by token id, and chain summaries |
SDKs | Python, TypeScript, and Rust, plus integrations listed for LangGraph, CrewAI, and Strands |
The attestation piece deserves a note, because it is how trust becomes earned rather than asserted. Verifiers for software, platform, and hardware attestation sit behind a fail-closed contract, and the shipped OIDC verifier covers GitHub Actions, GCP Workload Identity, and Kubernetes projected service account tokens, with per-tenant attestation policies for issuer allowlisting and claim binding. An agent that cannot prove what it is does not get the higher trust tier, whatever it claims.
Running It: Small Setup, Real Dependencies
Trying ZeroID does not require adopting Highflame's commercial platform. The open source server is a Go service backed by PostgreSQL.
Requirement | Detail |
|---|---|
Runtime | Go service, started with Docker Compose alongside PostgreSQL |
Local start | Generate signing keys, then docker compose up -d, and check http://localhost:8899/health |
Hosted option | auth.highflame.ai, with free sign-up through Highflame Studio |
SDKs | pip install highflame for Python, npm install @highflame/sdk for TypeScript, plus Rust |
Register an agent | One SDK call with a name, external id, role, and trust level returns a WIMSE URI and a zid_sk_... API key, shown once |
Admin surface | Admin endpoints are meant to be protected at the network layer, not exposed publicly |
That last row is the operational caveat to respect. The README's API reference marks admin endpoints as "protect at network layer", which means a careless deployment that exposes them is a deployment mistake, not a product feature. The same applies to the signing keys the local setup generates and to the API keys issued at registration: they are the root of the whole chain, so they belong in a secret store, not in a repo or a chat log.
The Standards Stack, and Where It Is Still Emerging
ZeroID's pitch is that it implements existing standards rather than inventing a proprietary protocol, and the README's standards table is unusually complete.
Standard | Used for |
|---|---|
OAuth 2.1 | Foundational authorization framework |
RFC 8693 | Agent-to-agent delegation and the act claim |
RFC 7523 | Agent JWT assertions |
RFC 7662 and RFC 7009 | Token introspection and revocation |
RFC 7636 | PKCE for the authorization code flow |
WIMSE and SPIFFE | Agent workload identity URIs |
OpenID SSF and CAEP | Real-time revocation event propagation |
OpenID CIBA Core 1.0 | Out-of-band user approval |
RFC 9396 | Typed authorization details for per-action approval |
RFC 9449 | DPoP sender-constrained tokens |
RFC 7591 and RFC 7592 | Dynamic client registration and management |
Honesty requires the other half of that table. WIMSE is an IETF draft, not a finished standard, and the README itself maps ZeroID against the CoSAI and OASIS ODIS draft and lists requirements it does not yet meet. Agent identity standards are being written right now, which is both the opportunity and the risk: adopting ZeroID means adopting a stack that may shift as WIMSE, ODIS, and the OpenID agentic work finalize. The counterweight is that the stack is built from widely deployed pieces, OAuth 2.1, JWT, and token exchange, so the bet is on composition, not on a single new protocol.
The Limits to Keep in View
ZeroID solves identity, delegation, and revocation. It does not solve everything around agents, and the project is clear about its scope. It is not a human identity provider, so it does not replace your existing login system. It is not a general workload identity platform, so teams already running SPIFFE/SPIRE or cloud IAM will use it alongside those systems, federated, not instead of them. It also does not, by itself, make an agent's actions safe: a correctly identified agent with a properly scoped token can still do something foolish inside its scope, which is why scope ceilings, tool vocabularies, and MCP boundary checks matter as much as the token.
Scale is another honest limit. At 209 stars and 24 forks, ZeroID is a focused project with real traction for its age, not a mainstream identity platform with a decade of operational history. The 329 commits and 106 releases show active development, but a team adopting it should expect to read the docs, run it in staging first, and watch the standards it tracks. The planned work, a human-in-the-loop approvals API, a dedicated CLI, and a GitHub Actions OIDC upstream validator, also shows which pieces are still coming.
If you run agents that already touch production systems, the related question is what those agents are allowed to find and report. For a specialist security angle on giving an AI tool a defined job, see CVE MCP Server: Turn Claude Into an Automated CVE Analyst. Identity tells you who acted; a scoped security tool tells you what it was allowed to look at.
Who Should Try It, and Who Should Wait
ZeroID makes the most sense for teams already running multi-agent systems where the audit question has started to hurt: orchestrators spawning sub-agents, agents crossing team or organizational boundaries, or long-running agents that outlive any single human session. If your agents still run as one service account behind one API key, and you have ever struggled to say which agent did what, this is the tool that makes that question answerable.
It is also a good fit if you like the design constraints: short-lived tokens instead of long-lived shared secrets, scope that only narrows down a chain, depth caps, and a revocation path that does not wait for expiry. Those are the properties that turn "we have an agent problem" into "we have an agent identity system".
You should probably wait, or run it only in staging, if your agents are still single, short-lived, and internal, if you have no delegation chains to audit, or if your organization requires finished, ratified standards before adopting identity infrastructure. In that case, keep the concepts, per-agent identity, delegated authority instead of impersonation, and cascade revocation, and revisit ZeroID as WIMSE and ODIS mature.
The shift it represents is simple to state and hard to retrofit later. Stop asking agents to borrow a human's identity. Give each agent its own name, a credential that proves it, a chain that shows who authorized it, and a kill switch that works in real time. Everything else in agent security gets easier once that is true.
Frequently Asked Questions
Is ZeroID a replacement for Okta, Entra, or Clerk?
No. ZeroID says explicitly that it is not a human identity system. It builds on human identity primitives and federates with them, but its subject is the agent, not the person signing in.
Does ZeroID replace SPIFFE/SPIRE or cloud IAM?
No. Those are general workload identity systems, and ZeroID says it is not one. It uses WIMSE/SPIFFE URIs and federates with workload identity, while adding the agent-specific delegation and attestation layer on top.
What happens when an orchestrator's credential is revoked?
The whole downstream chain is invalidated immediately through cascade revocation, with no waiting for token expiry. Continuous access evaluation signals through the OpenID Shared Signals Framework can trigger the same revocation when risk signals fire.
Can a sub-agent get more permission than its orchestrator?
No. Delegation uses RFC 8693 token exchange with automatic scope attenuation, and scope ceilings cap what any identity's tokens can carry. A grant that would leave no scope is refused rather than minted empty.
Do I need Highflame's commercial platform to use ZeroID?
No. ZeroID is Apache 2.0 licensed and runs as a Go service with PostgreSQL, locally via Docker Compose or hosted at auth.highflame.ai. Highflame's commercial platform adds enforcement, observability, and policy management on top of the same identity layer.
Is ZeroID production-ready?
It is in production use inside Highflame's own platform, and its standards stack is largely established, but WIMSE and ODIS are still drafts and some features, including a dedicated CLI and an approvals API, are planned. Run it in staging first and track the standards it implements.
