oauth.enabled is NOT required for WorkOS SSO, GitHub App, Entra ID, Okta, or Keycloak authentication. It only enables the Google/Microsoft/HubSpot/Notion/Salesforce tool integrations (Built-in Integrations). Enabling it unnecessarily adds a database pre-creation requirement and an extra running pod.How It Works
The Built-In Integrations service (oauth) runs as a dedicated microservice alongside the main CrewAI application. It handles OAuth token exchange and stores encrypted access and refresh tokens in its own database. When a user connects a third-party tool (such as Gmail or HubSpot), their browser is redirected to the OAuth provider, which sends a callback to this service to complete the handshake.
Because the service is separate, it must be explicitly enabled and requires its own ingress configuration so OAuth providers can reach the callback endpoints.
Prerequisites
1. Enable the OAuth Service
Add the following to your Helm values:oauth.enabled: false is the default. Without setting this to true, no OAuth service resources are deployed and all Built-In Integrations are unavailable.
2. Create the OAuth Database (External PostgreSQL only)
When using internal PostgreSQL (postgres.enabled: true), the OAuth database is created automatically. If postgres.enabled: false, you must create the database manually before running helm install or helm upgrade:
The default value for
POSTGRES_OAUTH_DB is oauth_db. The SQL above uses crewai_plus_oauth_production as an example; use whatever name you create. The name in your values file must match the database you create in PostgreSQL.OAuth Redirect URI Patterns
When configuring your OAuth application in a third-party provider console, you will be asked for a redirect URI (also called a callback URL or authorized redirect URI). The correct URI depends on how you have configured the OAuth service ingress.| Ingress setup | Redirect URI to register with the provider |
|---|---|
| NGINX with shared application hostname | https://<APPLICATION_HOST>/oauthsvc/oauth/add |
| Dedicated OAuth hostname (GKE Gateway, ALB) | https://<OAUTH_HOST>/oauth/add |
The path difference (
/oauthsvc/oauth/add vs /oauth/add) reflects whether the OAuth service is accessed through a path-based proxy (NGINX) or a direct hostname. When oauth.ingress.path is set to "/" with a dedicated hostname, the /oauthsvc prefix is not present. See OAuth Ingress Configuration for the full ingress setup reference.Activate Integrations After Deployment
After deploying with OAuth credentials configured, sync the integration definitions so the platform recognises them. This step is required for integrations to appear as available to users. Option 1: Via Admin Panel- Log in to the CrewAI web UI as an admin
- Navigate to Admin Panel > Tools & Integrations
- Click Sync Integrations
Adding an Integration to an Existing Deployment
To enable an additional integration after the initial install:- Add the
oauth.secrets.*values for the new integration to your values file. - Apply the change with a Helm upgrade:
- Sync integrations using either method above.
