Skip to main content

OAuth Integrations

OAuth integrations use a popup-based authorization flow. Tokens are encrypted in the vault and refreshed automatically.

Flow

  1. User clicks “Connect” on the Integrations page
  2. Backend returns an auth_url for the OAuth provider
  3. Frontend opens a popup to that URL
  4. User authorizes in the popup
  5. Provider redirects back with an auth code
  6. Backend exchanges code for tokens, stores encrypted
  7. Integration marked as connected

Supported Providers

ProviderScopes
Gmailgmail.modify (read, send, search, label)
Google Calendarcalendar (events, availability)
Google Drivedrive (files, docs, sheets)
Slackchat:write, channels:read, files:write
NotionFull access (pages, databases)
GitHubrepo, read:org
Shopifyproducts, orders, inventory
Discordbot, messages.read
Linearread, write
Jiraread:jira-work, write:jira-work
Airtabledata.records:read/write
Figmafiles:read

Token Security

  • Encrypted at rest with per-user keys
  • Refresh tokens rotated on every use
  • Auto-expire and re-authorize if refresh fails
  • Immediate revocation on disconnect
  • Never logged or exposed to agents directly