OAuth Setup Guides

← All guides

Linear

1/5
self serve

Self-serve: register the OAuth app in your Linear workspace and set redirect URIs in minutes; the docs we read describe no review, fee or verification step, so the main work is deciding private vs. installable distribution and getting the app details right. c3c4c5c6c18c32c33c34c45c46c47c48

Can start today
Yes
Hands-on time
15–45 minutes (estimate)
Approval wait
0 minutes
Confidence
medium
Composio managed app
unknown
How this score was computed

Score comes from fixed rules applied to the factors below, for the route to public production use.

review required: nonebusiness verification: nosecurity assessment: nopaid plan or fee required: nopartner or sales gated: nodomain or policy pages required: unknownuser cap before approval: n/a

Routes

Private app (current workspace only) 1/5 · self serve

Agents and internal tools used only inside your own Linear workspace.

Hands-on 10–30 minutes · Wait 0 minutes

  • A Linear account with admin access to the workspace where the app is created (each admin user gets access to the app). c2
  • At least one redirect URI, absolute HTTP or HTTPS (maximum 32). c18c19
  • Client name of 2-80 characters that does not contain "Linear" or http:// or https://. c32
  • Developer name of 2-80 characters. c33
  • Client URI that is an absolute HTTP or HTTPS URL. c34

Limits

  • App is available only in the workspace where it was created (distribution defaults to private).
  • Display description is capped at 1000 characters.
c2c5c6c18c19c32c33c34c35c45c46c47c48
Installable app (other workspaces can install it) 1/5 · self serve

Hardest route a public product may need

A public product where users in other Linear workspaces connect their own account.

Hands-on 15–45 minutes · Wait 0 minutes

  • A Linear account with admin access to the workspace where the app is created; Linear recommends a dedicated workspace for this because every admin user gets access to the app. c2
  • Change the distribution setting from its private default so other workspaces can install the app. c5c6
  • At least one redirect URI, absolute HTTP or HTTPS (maximum 32). c18c19
  • Client name of 2-80 characters that does not contain "Linear" or http:// or https://. c32
  • Developer name of 2-80 characters. c33
  • Client URI that is an absolute HTTP or HTTPS URL. c34
  • If you need server-to-server tokens, toggle client credentials tokens on for the app when creating or editing it. c10

Limits

  • Display description is capped at 1000 characters.
  • Up to 32 redirect URIs.
  • Up to 1000 active client credentials tokens in parallel if they share the same scopes; requesting a token with different scopes revokes all existing app actor tokens.
c2c5c6c10c18c19c27c28c32c33c34c35c45c46c47c48

Steps — who does what

  1. Create a dedicated workspace for the OAuth app You

    Needs you because: developer decision

    • Linear recommends a dedicated workspace because every admin user of it gets access to the OAuth app.
    • Decide which workspace will own the app before you register anything.

    Expected: A workspace you are willing to give admin access to for the app.

    ~10 min · Agent has not attempted this step c2

  2. Sign in to Linear and open the app creation form You

    Needs you because: login or mfa

    • Sign in to the workspace from step 1.
    • Open the new OAuth application form.

    https://linear.app/settings/api/applications/new

    Expected: The OAuth application creation form is shown.

    ~5 min · Agent has not attempted this step c4c3

  3. Fill in app identity fields Agent or you
    • Client name: 2-80 characters, must not contain "Linear", http:// or https://.
    • Developer name: 2-80 characters.
    • Client URI: absolute http or https URL.
    • Display description: up to 1000 characters.

    Client nameYOUR-APP-NAME

    Client URIhttps://YOUR-APP.example

    Display descriptionShort description of what your agent does in Linear (max 1000 chars).

    Expected: Identity fields accepted by the form.

    ~10 min · Agent has not attempted this step c32c33c34c35

  4. Add redirect callback URLs Agent or you
    • Add at least one and at most 32 redirect URIs.
    • Each must be an absolute http or https URL.
    • Keep the exact string you register; the token exchange must send the same redirect_uri.

    Redirect URIhttps://YOUR-APP.example/oauth/callback

    Expected: Redirect URIs saved on the app.

    ~10 min · Agent has not attempted this step c18c19c20

  5. Choose the distribution setting You

    Needs you because: developer decision

    • Distribution controls whether the app works only in the current workspace or can be installed by other workspaces.
    • It defaults to private; switch it to installable only if users in other workspaces must connect.

    Expected: Distribution set to private or installable to match your product.

    ~5 min · Agent has not attempted this step c5c6

  6. Decide on client credentials tokens You

    Needs you because: developer decision

    • Client credentials tokens are for server-to-server apps that cannot run a user-initiated flow with refresh tokens.
    • They must be toggled on for the app when creating or editing it.
    • Skip this if your agent always acts on behalf of a signed-in user.

    Expected: Client credentials toggle set as intended.

    ~5 min · Agent has not attempted this step c9c10c7

  7. Save the app and copy the client ID and secret Agent or you
    • Submit the form to create the OAuth2 application.
    • Store the client ID and client secret in your secret manager; the secret can be rotated later without re-registering the app.

    Expected: An OAuth2 app exists with credentials you can use.

    ~5 min · Agent has not attempted this step c3c31

  8. Make the app installable by other workspaces You

    Only for: Installable app (other workspaces can install it)

    Needs you because: developer decision

    • Set distribution so the app is available to workspaces other than the one that created it.
    • The docs we read describe no review, listing or approval step for this; treat that as unconfirmed.

    Expected: App can be installed from other workspaces.

    ~5 min · Agent has not attempted this step c5c45

If you get stuck

Token endpoint returns HTTP 400 with error 'invalid_client'.

Likely cause: Wrong or rotated client ID/secret, or credentials sent for an app that does not exist.

Fix: Re-copy the client ID and secret from the app settings; if you rotated the secret, update your config.

c52c29c31

Token exchange fails because redirect_uri does not match.

Likely cause: The redirect_uri sent at exchange differs from the one used in the authorization request or registered on the app.

Fix: Send the identical registered URI string in both steps.

c20c18

App creation form rejects the client name.

Likely cause: Name is outside 2-80 characters or contains "Linear", http:// or https://.

Fix: Rename the app without the reserved word or URL fragments.

c32

Webhook URL rejected when configuring the app.

Likely cause: URL is not https, or points to a loopback host, private-network host, or linear.app.

Fix: Use a public https endpoint on your own domain.

c36

Client credentials token stops working after a scope change or secret rotation.

Likely cause: Requesting different scopes revokes existing app actor tokens; rotating the secret invalidates client credentials tokens.

Fix: Re-request the token with the final scope set and update the stored secret.

c28c29

Gotchas

OAuth configuration

Authorization URL
https://linear.app/oauth/authorize
Token URL
https://api.linear.app/oauth/token
Grant types
authorization_code, client_credentials
PKCE
required
Redirect URIs
  • At least 1 and at most 32 redirect URIs
  • Must be absolute http or https URLs
  • redirect_uri at token exchange must match the one used in authorization
Token lifetimes
Access: 24 hours (authorization_code); 30 days (client_credentials); refresh: unknown. Refresh requests have a 30-minute grace period; client credentials tokens have no refresh token.
App types
  • OAuth2 application (Linear recommends OAuth2 for integrations)
ScopePurposeSensitivityTriggers review
readDefault scope, always presentbasicunknown
issues:createTargeted scope for creating issues/commentsbasicunknown
adminFull access to admin-level endpoints; request only when neededrestrictedunknown
app:assignableAgent scope, documented under App authenticationunknownunknown
app:mentionableAgent scope, documented under App authenticationunknownunknown

What we tested, and what we couldn't

Depth reached: endpoint probes

Live generation reads public documentation and sends unauthenticated requests only. It does not sign in, create an app, or submit anything.

Not attempted

Agent action log (21 actions)
#ActionOutcomeObserved
a1Searched: site:linear.app OAuth 2.0 authentication create applicationsuccess6 results
a2Searched: site:linear.app developers API OAuth scopessuccess6 results
a3Searched: Linear linear.app OAuth app review approval verification requirementssuccess6 results
a4Searched: Linear linear.app API OAuth scopes redirect URI token expirationsuccess6 results
a5Read https://developers.linear.app/docs/graphql/working-with-the-graphql-apisuccessHTTP 200, 790 chars
a6Read https://developers.linear.app/docs/oauth/oauth-actor-authorizationsuccessHTTP 200, 790 chars
a7Read https://developers.linear.app/docs/oauth/oauth-2-0-authenticationsuccessHTTP 200, 790 chars
a8Read https://developers.linear.app/docs/oauth/authenticationsuccessHTTP 200, 790 chars
a9Read https://auth0.com/intro-to-iam/what-is-oauth-2failednot about Linear
a10Read https://oauth.net/2/failednot about Linear
a11Read https://linear.app/aisuccessHTTP 200, 4729 chars
a12Read https://linear.app/successHTTP 200, 9541 chars
a13Read https://www.geeksforgeeks.org/ethical-hacking/what-is-oauth-open-authorization/failednot about Linear
a14Read https://linear.app/developers/oauth-actor-authorizationsuccessHTTP 200, 1837 chars
a15Read https://linear.app/developers/oauth-app-manifestssuccessHTTP 200, 7979 chars
a16Read https://linear.app/developers/oauth-2-0-authenticationsuccessHTTP 200, 12396 chars, kept the 9286 most relevant
a17GET /.well-known/oauth-authorization-serversuccessHTTP 404
a18GET /.well-known/openid-configurationsuccessHTTP 404
a19Authorization endpoint with an unregistered client_idsuccessHTTP 200, page title 'Linear'
a20Token endpoint with fake credentialssuccessHTTP 400, error code 'invalid_client'
a21Developer console without signing insuccessHTTP 200

Open questions

Evidence

53 claims behind this guide.

Last verified 2026-10-27; recheck after 2027-01-25. Generated by deepseek-chat / pipeline v0.1 · raw JSON