Skip to content

Commands

alter providers

Configure OAuth providers per app and browse the provider catalog.

Each app configures the OAuth providers its users can connect. These commands manage those per-app provider configs.

alter providers list-catalog
alter providers list
alter providers create --provider <id> --scopes <list> --client-id ... --client-secret ... --redirect-uri ...
alter providers show --provider <id>
alter providers update --provider <id> [--scopes ...] [--status ...] [...]
alter providers delete --provider <id> [--force] [--yes]

App-scoped commands take --app <id>, or link a workspace / set ALTER_APP_ID. Reads (list / show) need dashboard_providers:read; create / update need dashboard_providers:write; delete needs dashboard_providers:admin (list-catalog is unauthenticated). create also accepts the alias configure.

List the catalog of supported OAuth providers — the set that can be configured for any app. This is the global catalog, not the per-app config, so it needs no --app.

Terminal window
alter providers list-catalog

List the providers configured for an app, with grant counts and status.

Terminal window
alter providers list

Configure a provider for the app.

FlagRequiredDescription
--provider <id>yesProvider ID (e.g. google, slack, github).
--scopes <list>yesComma-separated provider scopes (e.g. email,profile). At least one is required.
--credential-source <source>nocustom (default) or shared_dev.
--client-id <id>when --credential-source custom (the default)OAuth client ID.
--client-secret <value>when --credential-source custom (the default)OAuth client secret. Use - to read from stdin or @/path/to/file — preferred over passing it inline.
--redirect-uri <uri>when --credential-source custom (the default) — at least oneAdd a redirect URI. Repeatable, or comma-separated; both forms accumulate.
--input <path>noJSON body from a file (@path) or stdin (-); replaces the per-field flags.
Terminal window
alter providers create \
--provider google \
--scopes openid,email,https://www.googleapis.com/auth/calendar.readonly \
--client-id <google-client-id> \
--client-secret @/run/secrets/google \
--redirect-uri https://app.example.com/oauth/callback

Shows the provider config. The client secret is never returned.

Terminal window
alter providers show --provider google

Patch a provider config. Every field is optional; only what you pass changes. Narrowing the scope set is a breaking change, and the response lists any breaking changes it detected.

FlagDescription
--credential-source <source>custom or shared_dev.
--client-id <id>New client ID.
--client-secret <value>New client secret (- for stdin, @file for a file).
--scopes <list>New provider scopes (comma-separated).
--redirect-uri <uri>Replace redirect URIs (repeatable or comma-separated).
--status <status>active or disabled.
--input <path>JSON body from a file (@path) or stdin (-); replaces the per-field flags.
Terminal window
alter providers update --provider google --status disabled

Remove a provider config. The cascade is recoverable — reconfiguring the same provider restores the integration, though existing grants are orphaned and users must reconnect. The prompt is a simple y/N (skip with --yes).

--force deletes even when active grants exist (orphaning them).

Terminal window
alter providers delete --provider google

Configure a provider with the secret read from a file (CI-safe)

Terminal window
alter providers create \
--provider google \
--scopes openid,email \
--client-id <google-client-id> \
--client-secret @/run/secrets/google \
--redirect-uri https://app.example.com/oauth/callback

Temporarily disable a provider, then re-enable it

Terminal window
alter providers update --provider google --status disabled
# ...later...
alter providers update --provider google --status active