Checkpoint Docs
Govern (KYA-OS)

Authentication Methods

Choose how users authenticate when authorizing AI agents

Overview

When an AI agent requests access to a user's resources, the user must authenticate and consent. Checkpoint supports multiple authentication methods that determine how the user proves their identity before granting a delegation.

Prerequisites

  • A Checkpoint project. See Credentials for how to find your Project ID and API key in Installations.
  • Access to the dashboard's Policy → Auth page (/dashboard/{orgId}/{projectId}/policy/auth), where every method below is configured.

Method Comparison

MethodUser ExperienceIdentity VerificationBest For
Consent OnlyClick "Allow"None (trust-based)First-party agents, low-risk actions
OAuthSign in with GitHub, Google, etc.External providerThird-party agents, user-facing apps
Custom ProviderSign in with your own auth systemYour backendEnterprise SSO, internal tools
CredentialsUsername and password formYour backendLegacy systems, API key auth

The simplest method. Users see a consent page showing the agent's identity and requested permissions, then click Allow or Deny. No external authentication is required.

How It Works

1. Agent requests delegation
2. User sees consent page with:
   - Agent name and identity
   - Requested permissions (scopes)
   - Terms acceptance
   - Expiration notice
3. User clicks "Allow"
4. Delegation is created

When to Use

  • Internal or first-party agents where trust is already established
  • Low-risk operations (read-only, informational queries)
  • Prototyping and development
  • Situations where adding OAuth would be unnecessary friction

Configuration

In the dashboard, open Policy → Auth (/dashboard/{orgId}/{projectId}/policy/auth) and add the Consent only method. No provider configuration is needed.

Even with Consent Only, every delegation is still cryptographically signed and verifiable. The "consent only" label refers to the user authentication step, not the security of the delegation itself.


OAuth

Users authenticate via a third-party OAuth provider (GitHub, Google, etc.) before granting the delegation. This verifies the user's identity through a trusted external service.

How It Works

1. Agent requests delegation
2. User is redirected to OAuth provider (e.g., GitHub)
3. User signs in and authorizes
4. Provider returns authorization code
5. Checkpoint creates delegation with verified user identity
6. Agent receives the delegation token

Supported Providers

Checkpoint runs each provider in one of two modes, based on whether the provider's token exchange requires a client secret:

Direct Mode (No Client Secret)

These providers support PKCE (Proof Key for Code Exchange) and don't require a client secret, so the OAuth flow runs directly against the provider. This is more secure for client-side applications.

ProviderDefault Scopes
GitHubrepo:read, user:email
Googleopenid, email, profile
MicrosoftUser.Read
Linearread
Auth0openid, profile, email

Proxy Mode (Client Secret Required)

These providers require a client_secret for the token exchange. Checkpoint acts as a secure proxy, keeping the secret server-side so it's never exposed to the browser or the agent. Apple and Discord support PKCE but still require a client secret, which is why they run in proxy mode.

ProviderDefault Scopes
Applename, email
Discordidentify, email
LinkedInr_liteprofile, r_emailaddress
Slackchannels:read
Notionread
Striperead_only
Shopifyread_products

For proxy mode providers, you must provide a client secret in the dashboard configuration. The secret stays server-side and is never returned by any API — provider reads carry only a hasClientSecret flag. Checkpoint performs the token exchange itself (proxy mode), or syncs the secret to your gateway worker as a Cloudflare secret at deploy time.

Setup

  1. Register an OAuth application with your chosen provider
  2. In the dashboard, open Policy → Auth (/dashboard/{orgId}/{projectId}/policy/auth) and add an OAuth method
  3. Enter the Client ID, Client secret, Redirect URI, and the provider's authorization and token endpoints
  4. Save the configuration

Per-tool OAuth scope display and scope refresh for already-connected tools still live on the legacy Control Access surface (legacy surface: /dashboard/{orgId}/{projectId}/control-access).

See OAuth Integration for the full OAuth flow details, including authorization endpoints, token exchange, and refresh tokens.


Custom Provider

Connect your own authentication backend. This lets users sign in with your existing auth system — useful for enterprise SSO, internal identity providers, or any custom authentication flow.

How It Works

1. Agent requests delegation
2. User sees consent page with your custom login form
3. User enters credentials
4. Checkpoint sends credentials to your auth endpoint
5. Your backend validates and returns a session token
6. Checkpoint creates delegation with verified identity

Requirements

To integrate a custom provider, you need a backend endpoint that:

  1. Accepts a POST request with user credentials
  2. Validates the credentials
  3. Returns a session token and user information

Configuration

In the dashboard under Policy → Auth, add a Credentials method (this is the custom-provider configuration) and configure:

FieldRequiredDescription
Provider IDYesUnique identifier (e.g., my-company-auth)
Display nameNoName shown on the consent screen
Auth endpointYesYour backend URL that handles login
Identity fieldYesRequest field that carries the username/identifier
Password fieldYesRequest field that carries the password
Session tokenYesHow Checkpoint reads your session: Session cookies (cookie name) or JSON path into your response

Response Field Mapping

Map your auth endpoint's response fields to Checkpoint's expected format:

Checkpoint FieldYour Response FieldPurpose
Session tokenConfigurable (e.g., data.token)Used for subsequent API calls
User IDConfigurable (e.g., data.user.id)Linked to delegation
User emailConfigurable (e.g., data.user.email)Display in dashboard
User display nameConfigurable (e.g., data.user.name)Display in consent
Token expirationConfigurable (e.g., data.expiresAt)Token refresh timing

Token Usage

Configure how the session token is used in subsequent requests:

  • Cookie — Token stored as a browser cookie
  • Bearer token — Sent in the Authorization header
  • Custom header — Sent in a custom header of your choice

PKCE Auto-Discovery

If your custom provider supports OAuth 2.0, Checkpoint can check for PKCE support by querying the provider's discovery metadata — /.well-known/openid-configuration first, then /.well-known/oauth-authorization-server — and looking for S256 in code_challenge_methods_supported. If PKCE is supported, the more secure direct mode is used automatically.


Credentials

A straightforward username/password form for cases where OAuth isn't suitable. The credentials are sent to your configured authentication endpoint for validation.

How It Works

1. Agent requests delegation
2. User sees a login form (username + password)
3. User enters credentials and submits
4. Checkpoint validates against your auth endpoint
5. Delegation is created on successful authentication

When to Use

  • Legacy systems without OAuth support
  • API key-based authentication
  • Internal tools with simple auth requirements
  • Environments where redirect-based OAuth isn't practical

Configuration

This method uses the same custom provider configuration as above — you define an auth endpoint, request template, and response mapping. The difference is in the UI: users see a traditional login form instead of an OAuth button.

Additional UI options:

OptionDefaultDescription
Username label"Username"Custom label for the username field
Password label"Password"Custom label for the password field
Show "Remember me"falseAdds a remember-me checkbox
Show "Forgot password"falseAdds a forgot password link
Forgot password URLLink destination for forgot password

How Authorization Mode Is Determined

Checkpoint selects the authentication method based on this priority:

  1. Tool-specific configuration — If the tool has an explicit authorization.type set, that takes precedence
  2. Active provider type — The provider configured for the tool (OAuth, credential, custom)
  3. Project default — Falls back to the project's default consent configuration
  4. Consent Only — If no providers are configured, defaults to consent-only

This means different tools in the same project can use different authentication methods. For example:

  • A read-files tool might use Consent Only (low risk)
  • A process-payment tool might require OAuth with GitHub (high risk)
  • An internal admin-audit tool might use Credentials (enterprise SSO)

Customizing the Experience

Regardless of which authentication method you choose, you can customize the consent page appearance:

  • Application name and logo
  • Primary and secondary brand colors
  • Title and description text
  • Permission descriptions for each scope
  • Terms of service and privacy policy links
  • Button text and success screen messaging

See Consent Flows for the full customization guide.

Next Steps