User claimed
The agent registers without a provider-attested identity; the user claims it by signing in to your service and confirming a code the agent shows them. No agent-provider participation — just the app and the user.
When to use it
- Your users run agents on platforms that can't mint ID-JAGs — MCP servers, custom scripts, bare LLM API integrations.
- You want to support self-serve agent registration without curating a provider trust list.
- You're comfortable owning the claim ceremony and the registration state machine.
Two entrypoints
The user claimed flow has two starting shapes — your app picks which one (or both) to allow.
Agent self-registers without identity and gets a pre-claim
identity_assertion immediately, which it exchanges for an access_token
scoped to pre-claim permissions you define. The agent can run the claim
ceremony at any point before the registration expires to bind the
registration to a real user and upgrade to full scopes.
Best when uninterrupted setup matters more than upfront identity — the agent can start doing useful work right away.
Agent supplies a user email at registration as a login_hint. Your
service returns the ceremony materials but withholds the assertion
until the user completes the claim.
Best when pre-claim usage is unacceptable — no credential exists until a verified user is bound to the registration.
How the claim ceremony works
The ceremony borrows the RFC 8628 device-authorization shape. Your service never emails the code — the code travels from the agent to the user, and the user confirms it on a page you own.
- Your service mints a 6-digit
user_codeand averification_uri(returned in the registration response forservice_auth, or from/agent/identity/claimfor anonymous start). - The agent surfaces the
user_codeand link to the user in one message. - The user opens the link, signs in (or signs up) at your service, and lands on a page you own that displays the registration.
- The user types the
user_codeinto that page and submits. Your service matches them to an account and marks the claim complete. - The agent — which has been polling
/oauth2/tokenwith the claim grant — receives an access_token and a service-signedidentity_assertion. Anonymous start upgrades the registration's scopes in place;service_authgets its first assertion here.
What you get
- Self-serve agent onboarding that works without any provider integration.
- A real user binding once the claim completes, with a revoke surface the user controls.
- The user authenticates through your own sign-in flow, so whatever you enforce there — SSO, MFA, bot detection — applies to the claim with no agent-auth-specific exceptions.
- Optionally: agents can be productive from second one (anonymous start) instead of waiting for the human to confirm.
Trade-offs
- More state to manage than agent verified — a pre-claim registration, a
claim state machine, a
user_codestore, a scope swap. - You own a user-facing claim page where the signed-in user types the
user_code. - Anonymous-start credentials exist before a user is bound; key material captured pre-claim retains access post-claim with the new scopes unless you force-rotate.
Implement it
App side: For apps → user claimed flow. No agent-provider integration needed.