/v1 request carries a bearer token:
Only an
abs_… agent session can read or mount secret values via the
/v1/access/* endpoints. Operator sessions and personal API keys manage the
control plane but can never reveal a secret.Human operators
The authentication system handles operator identity at/api/auth/*. Sign in to obtain a session token (or browser cookie), then use
it as the bearer for /v1 management endpoints. See
Human authentication for the route list and the CLI device
flow.
Personal API keys
A personal API key (abu_…) lets a user script the management surface without
a browser. Each key is bound to a (user, org) pair and is created, listed,
and revoked from the dashboard’s org Settings page or via the
POST /v1/api-keys endpoint.
Agents
Agents authenticate with short-lived Ed25519 keypair sessions. The session token (abs_…) is opaque, hashed at rest, and expires after 15 minutes. It is
the only credential that reaches /v1/access/*.
Session lifecycle
1
Register
An operator registers the agent (
POST /v1/agents) with a public key, or
requests a one-time abe_… bootstrap token.2
Enroll
A bootstrapped agent redeems its token and uploads its public key
(
POST /v1/agents/enroll).3
Challenge
The agent requests a signing challenge
(
POST /v1/agents/{agentId}/sessions/challenge, abc_…, 60-second TTL).4
Exchange
The agent signs the challenge and exchanges it for an
abs_… session token
(POST /v1/agents/{agentId}/sessions/exchange, 15-minute TTL).5
Refresh
The SDK re-runs the exchange at T-2 minutes before expiry; no long-lived
secret is ever stored on disk.
Token defaults
Authorization header examples
Auth audit events
Every auth lifecycle event is recorded in the audit log:auth.login, auth.logout, agent.bootstrap_issue, agent.enroll,
agent.session_issue, agent.session_reject, agent.session_revoke.
See Audit log for the full catalog.