Overview
A Personal Access Token (PAT) is a long-lived bearer token that lets scripts, CI pipelines, and external integrations call the Genesis REST API without going through an interactive sign-in. Each PAT is scoped to one user: any request authenticated with the PAT runs as that user, with the user’s existing roles, RBAC permissions, and per-agent access. PATs are the recommended credential for:- CI / build pipelines (automation, deploy, smoke tests),
- local development scripts and
curlcalls, - server-to-server integrations that drive Genesis agents,
- scheduled jobs that call the REST API on your behalf,
- the
/api/tool_callendpoint for headless tool execution.
- Browser dashboard access — that uses your normal Auth0 / OIDC session.
- Snowflake SPCS deployments calling from external apps with Snowflake key-pair auth — those use the JWT → OAuth flow scoped to the SPCS ingress.
- Genesis Apps — those run server-side and use the signed
X-Genesis-App-Tokenautomatically.
PAT values look like
gp_<random> and are checked by the Genesis auth
middleware. They are stored hashed (SHA-256), never logged, and shown in
plaintext exactly once at creation time. There is no recovery path —
if you lose a PAT, revoke it and create a new one.Create a PAT in the dashboard
- Open the Genesis dashboard.
- Click your avatar in the top-right and choose API Keys.
- In Create a new key:
- Enter a Name (anything human-readable, for example
ci-pipeline,local-dev-laptop,airflow-prod). This is for your reference only. - Pick an Expires window (
30,90, or365days). Pick the shortest window that works for you.
- Enter a Name (anything human-readable, for example
- Click Create.
- Copy the displayed token immediately. It is shown in a one-time reveal box and disappears as soon as you close the modal.
Use a PAT to call the API
Send the token as aBearer credential in the Authorization header on
every request:
Identity, RBAC, and audit
Requests authenticated by a PAT run as the user that owns the PAT:- The user’s roles and
Permissionchecks apply normally — for example, creating or deleting a document index requiresmanage_document_indexes, and managing other users’ PATs requiresmanage_users. - Per-agent RBAC applies, so the user must have access to a bot before they can chat with it via PAT.
- Audit logs and
last_used_atreflect the owning user. - A Prover approval can be made with your own PAT when your account has
view_connectionsand is recorded as your decision, labelledvia personal access token; disposition packages and bundles mark approval of your own proposal asself_approved, and so does a view test case approval made with the sign-in that asked for it. An MCP client calling the Prover API with your PAT carries the same owner attribution. An agent’s own tool call, a system identity, and an app-only machine token cannot approve Prover decisions. See Prover roles and approvals.
List, revoke, and admin operations
Most users only need the dashboard. The same operations are also available over REST — see the PAT endpoints section of the API reference for the full schemas.last_used_at is updated by the auth layer at most once every few
minutes per token, so it can trail real usage by a short window. Revocation
is immediate and propagates within seconds.
Security guidance
- Use short expirations for PATs (30 or 90 days) and rotate them. Use longer expirations only when an established owner-rotation process governs the token.
- Store PATs in a secret manager, not in
.envfiles committed to Git, not in chat messages, not in screenshots. - Scope by user, not by capability. Today PATs use a wildcard scope; the effective privileges come from the owning user’s roles. Give service accounts the minimum roles they need.
- Revoke on suspicion of compromise. Use the dashboard or
DELETE /api/auth/pats/{pat_id}to invalidate a token immediately.

