Overview
OAuth integrations require platform-level credentials that you (the admin) configure once in your deployment. After that, all users can connect their accounts with a single click. Without OAuth configured: Integration shows “Coming Soon” (disabled)With OAuth configured: Users click “Connect” → OAuth flow → Done!
Quick Start
For each OAuth integration you want to enable:- Create OAuth app with the provider
- Copy Client ID and Client Secret
- Go to
/admin/integrationsin your deployment - Find the integration → Click “Configure”
- Paste credentials → Save
Provider Setup Guides
GitHub
1
Create OAuth App
- Go to GitHub Developer Settings
- Click New OAuth App
- Fill in:
- Application name: Your app name (e.g., “Comp AI at Acme Corp”)
- Homepage URL:
https://yourapp.com - Authorization callback URL:
https://yourapp.com/v1/integrations/oauth/callback
- Click Register application
- Copy the Client ID
- Click Generate a new client secret → Copy it
2
Add to Platform
- Go to
/admin/integrationsin your deployment - Find GitHub in the list
- Click Configure OAuth
- Paste Client ID and Client Secret
- Click Save
3
Test
- Go to
/integrations - Find GitHub
- Click Connect (should no longer say “Coming Soon”)
- Authorize with your GitHub account
- Connection successful!
Google (Workspace & Cloud Platform)
1
Create Google Cloud Project
- Go to Google Cloud Console
- Create a new project (or select existing)
- Name it something like “Comp AI OAuth”
2
Configure OAuth Consent Screen
- Go to APIs & Services → OAuth consent screen
- Select Internal (if using Google Workspace) or External
- Fill in:
- App name: Your app name
- User support email: Your email
- Developer contact: Your email
- Don’t add scopes manually - we request them dynamically
- Save and continue
3
Create OAuth Credentials
- Go to APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- Select Web application
- Name: “Comp AI Web”
- Authorized redirect URIs:
https://yourapp.com/v1/integrations/oauth/callback - Click Create
- Copy Client ID and Client Secret
4
Enable Required APIs
In the same GCP project, enable these APIs:
- Admin SDK API (for Google Workspace)
- Cloud Resource Manager API (for GCP)
- Security Command Center API (for GCP)
5
Add to Platform (Google Workspace)
- Go to
/admin/integrations - Find Google Workspace
- Click Configure OAuth
- Paste Client ID and Client Secret
- Save
6
Add to Platform (GCP) - Optional
- In the same admin page
- Find Google Cloud Platform
- Click Configure OAuth
- Paste the same Client ID and Client Secret
- Save
- Google Workspace: User must be a Workspace admin
- GCP: User must have Viewer + Security Center Findings Viewer roles at org level
Linear
1
Create OAuth App
- Go to Linear API Settings
- Click Create new OAuth application
- Fill in:
- Name: Your app name
- Callback URLs:
https://yourapp.com/v1/integrations/oauth/callback
- Click Create
- Copy Client ID and Client Secret
2
Add to Platform
- Go to
/admin/integrations - Find Linear → Configure OAuth
- Paste credentials → Save
Vercel
1
Create Integration
- Go to Vercel Integrations Console
- Click Create Integration
- Fill in:
- Name: Your app name
- Redirect URL:
https://yourapp.com/v1/integrations/oauth/callback
- Create → Copy Client ID, Client Secret, and Integration Slug
2
Add to Platform
- Go to
/admin/integrations - Find Vercel → Configure OAuth
- Paste Client ID and Client Secret
- In Custom Settings, add the Integration Slug
- Save
Rippling
1
Request Marketplace App
- Contact Rippling support or your account manager
- Request a marketplace integration
- Provide:
- App name
- Callback URL:
https://yourapp.com/v1/integrations/oauth/callback - App description
- Wait for approval (1-2 weeks)
2
Receive Credentials
Rippling will provide:
- Client ID
- Client Secret
- App Name (your marketplace app identifier)
3
Add to Platform
- Go to
/admin/integrations - Find Rippling → Configure OAuth
- Paste Client ID and Client Secret
- In Custom Settings, add the App Name provided by Rippling
- Save
Non-OAuth Integrations
These integrations don’t require platform-level OAuth setup:AWS, Azure, GCP (Service Accounts)
No platform configuration needed! Users provide their own:- AWS: IAM Role ARN, External ID
- Azure: Service Principal credentials
- GCP: OAuth (but users connect with their own Google account)
Troubleshooting
Integration Shows “Coming Soon”
Cause: OAuth credentials not configuredFix: Go to
/admin/integrations → Configure Client ID/Secret
OAuth Callback Error
Cause: Callback URL mismatchFix: Ensure the URL in the OAuth app exactly matches your deployment:
- OAuth app:
https://yourapp.com/v1/integrations/oauth/callback - Your deployment URL:
https://yourapp.com
”Invalid Client” Error
Cause: Wrong Client ID or SecretFix: Double-check you copied both correctly, no extra spaces
Users Can’t Authorize (Google)
Cause: APIs not enabled in your GCP projectFix: Enable Admin SDK API (Workspace) or Cloud APIs (GCP)
“Access Denied” After Connecting
Cause: User lacks required permissions in their accountFix: User needs to grant IAM roles in the provider (check integration docs for required roles)
Security Notes
Where Credentials are Stored
OAuth Client IDs and Secrets are stored in the database, encrypted at rest using AES-256-GCM. Not in environment variables - This allows:- Multiple deployments with different credentials
- Easy credential rotation via UI
- Secure encryption
- Multi-tenancy support
Callback URL Security
Always use HTTPS in production:https://yourapp.com/v1/integrations/oauth/callbackhttp://yourapp.com/...(insecure, OAuth will reject)
http://localhost:3000/v1/integrations/oauth/callbackhttp://127.0.0.1:3000/v1/integrations/oauth/callback
OAuth Scopes
We request the minimum scopes needed for each integration:- GitHub:
repo,read:org,read:user - Google Workspace:
admin.directory.user.readonly, etc. - GCP:
cloud-platform(required for Security Command Center - no read-only alternative available)
User Data
We never store user passwords. OAuth flow:- User authorizes → Provider gives us an access token
- We store the token (encrypted)
- We use token to call APIs
- User can revoke access anytime in the provider’s settings
Production Considerations
Google OAuth Verification
If using Google integrations (Workspace, GCP) in production with external users, you’ll need to submit your app for Google’s verification process. Required for:- External user consent screen
- Requesting sensitive scopes (like
cloud-platform)
- Complete OAuth consent screen configuration
- Submit for verification at https://support.google.com/code/contact/oauth_app_verification
- Provide privacy policy, terms of service
- May take 2-6 weeks
Rate Limiting
OAuth providers have rate limits. The integration platform handles this by:- Caching API responses where appropriate
- Running checks via background jobs (Trigger.dev)
- Implementing exponential backoff on retries
Token Refresh
OAuth tokens expire. The platform automatically:- Stores refresh tokens (when provider supports it)
- Refreshes access tokens before they expire
- Re-prompts user to reconnect if refresh fails

