AgentID is a sign-in button for AI agents. Agents authenticate as themselves, apps learn who the agent belongs to, and nobody has to hand over their credentials. Free for any app to add.
Today we are launching AgentID, a "Sign in with AgentID" button that apps can add to their login pages so AI agents can authenticate as themselves. Same shape as "Sign in with Google". Built for agents.
The problem we kept seeing
AgentMail gives agents email inboxes, which means we sit close to how agents actually behave on the web. The pattern we kept seeing: agents do not have identities, so they borrow their humans'. An agent signs up for a tool as its owner, reads the verification code out of an inbox, and completes 2FA. The app sees an ordinary login.
Then the pattern breaks something. A huge software company reached out to us after observing roughly 1,500 signups from AgentMail domains over a short window, with no way to tell whether that was one person spinning up agents or 1,500 real users. Nothing in their identity stack could answer the question, because nothing in anyone's identity stack can. The web assumes a person behind every login.
Apps in this position cannot enforce per-human limits, cannot treat agent traffic differently from human traffic, and cannot say who is accountable for an account. Owners are stuck lending out entire accounts. Agents get caught in bot detection for lack of a way to disclose what they are.
What AgentID does
AgentID gives the agent its own identity and gives the app the missing information.
For the agent, an AgentID is anchored to its AgentMail inbox: a real email address, so it already works almost anywhere. The agent holds its own signing credential, which never leaves it. Every sign-in is a fresh one-time signature. No password or reusable secret ever reaches the app, and revoking the credential stops that agent from signing in.
For the app, every sign-in returns a signed id_token with a stable subject (same agent, same sub, every time) and the agent's inbox address, verified live when the token is minted. Because the sign-in arrived through AgentID, the app knows it is an agent, and can set policy accordingly.
Apps that want the accountability layer register a client. Registration is one RFC 7591 call authenticated with an AgentMail API key, and it unlocks the profile, owner_profile, and owner_email scopes plus an org claim for organization allowlisting. Owner email is served from the userinfo endpoint after an authenticated call, not embedded in the id_token where it would leak into logs. And when an agent has not granted owner visibility, the sign-in fails with a 403 instead of quietly returning a token without the claim. If your app requires owner_email, you will have it for every agent that gets through.
That one field turns the signup mystery into a query. Fifteen hundred signups resolve to some number of owner emails, and that number is your real user count. Per-human limits work again, KYC pass-through has a real identity to pass, and agent traffic can be rate-limited on its own terms.
Standard OIDC, minutes to add
AgentID is a standard OpenID Connect provider, not a custom protocol. Discovery lives at the well-known configuration URL, tokens are signed with ES256 against a published JWKS, and PKCE (S256) is required on every flow. If your app already accepts Google sign-in, your stack already knows how to accept AgentID.
There is a no-registration tier: any app can accept sign-ins using a client_id that is simply a URL it controls, with the openid and email scopes. For platform users, Clerk, Supabase, Auth0, and Better Auth all support AgentID through their custom-provider options; on most of them it is dashboard configuration rather than code, and Better Auth's generic OAuth plugin needs no registration at all.
AgentID is free for apps to add. No usage pricing, no per-sign-in fees.
A note on what verification means here. The email claim is not a stored attribute echoed back from a database; the address is verified live at the moment the token is minted. Combined with credential revocation, that gives owners a real off switch: revoke the credential and the agent stops signing in, everywhere the button appears.
Why we built it
Every agent has a human behind it. We think identity infrastructure should carry that fact rather than hide it, because accountability is what lets apps say yes to agents instead of blocking them. The longer version of that argument is in our manifesto: Every Agent Has a Human.
Get started
Apps: add AgentID as a custom OIDC provider with two values (issuer https://auth.agentid.com and your client_id), or register a client to unlock owner scopes. Integration guides are at auth.agentid.com/docs. Agent developers: AgentID identities come with AgentMail inboxes, and you can create one at agentmail.to.
We would rather agents be welcomed than tolerated.
