{"verdict":{"headline":"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.","can_start_today":true,"difficulty":{"score":1,"label":"self_serve","factors":{"review_required":"none","business_verification":"no","security_assessment":"no","paid_plan_or_fee_required":"no","partner_or_sales_gated":"no","domain_or_policy_pages_required":"unknown","user_cap_before_approval":null},"rationale":["Review: none (base score 1)."]},"recommended_path_id":"installable","composio_managed_app_available":"unknown","claim_ids":["c3","c4","c5","c6","c18","c32","c33","c34","c45","c46","c47","c48"],"difficulty_range":{"easiest":1,"hardest":1},"overall_confidence":"medium"},"effort":{"hands_on":{"min":15,"max":45,"unit":"minutes","basis":"Estimate: one form at the app creation page (name, developer name, client URI, description, redirect URIs, distribution, optional client credentials toggle) plus copying the generated client id and secret; no review or verification steps in the claims.","claim_ids":["c3","c4","c10","c18","c32","c33","c34","c35"]},"approval_wait":{"min":0.0,"max":0.0,"unit":"minutes","partial":false,"basis":"Across routes, from the easiest to the hardest published figure.","claim_ids":["c45"]},"ongoing_maintenance":"Access tokens expire after 24 hours and must be refreshed; client credentials tokens last 30 days with no refresh token, so the server must fetch a new one after a 401; rotating the client secret invalidates existing client credentials tokens but not already-granted access/refresh tokens.","total_calendar_estimate":{"min":15,"max":45,"unit":"minutes","basis":"Estimate: hands-on form work only; the docs we read describe no approval wait.","claim_ids":["c21","c25","c26","c29","c30","c45"]}},"paths":[{"id":"private","name":"Private app (current workspace only)","who_its_for":"Agents and internal tools used only inside your own Linear workspace.","effort":{"hands_on":{"min":10,"max":30,"unit":"minutes","basis":"Estimate: single app creation form with redirect URIs; distribution stays at its private default.","claim_ids":["c3","c4","c6"]},"approval_wait":{"min":0,"max":0,"unit":"minutes","basis":"No review step found in the documentation read (inferred)","claim_ids":["c45"]}},"requirements":[{"text":"A Linear account with admin access to the workspace where the app is created (each admin user gets access to the app).","kind":"account","blocking":true,"claim_ids":["c2"]},{"text":"At least one redirect URI, absolute HTTP or HTTPS (maximum 32).","kind":"technical","blocking":true,"claim_ids":["c18","c19"]},{"text":"Client name of 2-80 characters that does not contain \"Linear\" or http:// or https://.","kind":"other","blocking":true,"claim_ids":["c32"]},{"text":"Developer name of 2-80 characters.","kind":"other","blocking":true,"claim_ids":["c33"]},{"text":"Client URI that is an absolute HTTP or HTTPS URL.","kind":"other","blocking":true,"claim_ids":["c34"]}],"limits":["App is available only in the workspace where it was created (distribution defaults to private).","Display description is capped at 1000 characters."],"factors":{"review_required":"none","business_verification":"no","security_assessment":"no","paid_plan_or_fee_required":"no","partner_or_sales_gated":"no","domain_or_policy_pages_required":"unknown","user_cap_before_approval":null},"claim_ids":["c2","c5","c6","c18","c19","c32","c33","c34","c35","c45","c46","c47","c48"],"difficulty":{"score":1,"label":"self_serve","rationale":["Review: none (base score 1)."]},"step_ids":["s1","s2","s3","s4","s5","s6","s7"]},{"id":"installable","name":"Installable app (other workspaces can install it)","who_its_for":"A public product where users in other Linear workspaces connect their own account.","effort":{"hands_on":{"min":15,"max":45,"unit":"minutes","basis":"Estimate: same creation form as the private route plus switching distribution away from the private default and, if needed, enabling client credentials tokens.","claim_ids":["c3","c4","c5","c6","c10"]},"approval_wait":{"min":0,"max":0,"unit":"minutes","basis":"No review step found in the documentation read (inferred)","claim_ids":["c45"]}},"requirements":[{"text":"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.","kind":"account","blocking":true,"claim_ids":["c2"]},{"text":"Change the distribution setting from its private default so other workspaces can install the app.","kind":"other","blocking":true,"claim_ids":["c5","c6"]},{"text":"At least one redirect URI, absolute HTTP or HTTPS (maximum 32).","kind":"technical","blocking":true,"claim_ids":["c18","c19"]},{"text":"Client name of 2-80 characters that does not contain \"Linear\" or http:// or https://.","kind":"other","blocking":true,"claim_ids":["c32"]},{"text":"Developer name of 2-80 characters.","kind":"other","blocking":true,"claim_ids":["c33"]},{"text":"Client URI that is an absolute HTTP or HTTPS URL.","kind":"other","blocking":true,"claim_ids":["c34"]},{"text":"If you need server-to-server tokens, toggle client credentials tokens on for the app when creating or editing it.","kind":"technical","blocking":false,"claim_ids":["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."],"factors":{"review_required":"none","business_verification":"no","security_assessment":"no","paid_plan_or_fee_required":"no","partner_or_sales_gated":"no","domain_or_policy_pages_required":"unknown","user_cap_before_approval":null},"claim_ids":["c2","c5","c6","c10","c18","c19","c27","c28","c32","c33","c34","c35","c45","c46","c47","c48"],"difficulty":{"score":1,"label":"self_serve","rationale":["Review: none (base score 1)."]},"step_ids":["s1","s2","s3","s4","s5","s6","s7","s8"]}],"conflicts":[],"open_questions":[{"question":"Does Linear review or approve an app before other workspaces can install it? The pages we read describe no review process, but that is absence of evidence.","how_to_resolve":"Check the Linear developer docs for an app listing or review page, or ask Linear support."},{"question":"Are there requirements on the client URI or redirect URIs beyond being absolute HTTP/HTTPS URLs, such as verified domains or published privacy/terms pages?","how_to_resolve":"Read the full OAuth app settings reference in Linear's developer docs."},{"question":"Is a paid Linear plan needed to create or distribute an OAuth app? No fee or plan requirement appears in the pages read.","how_to_resolve":"Try creating an app on a free workspace, or check Linear's pricing and developer docs."},{"question":"What exactly does the developer console show when signed out? A signed-out request returned HTTP 200 without a clear sign-in wall.","how_to_resolve":"Open https://linear.app/settings/api/applications/new in a private browser window and observe the redirect or sign-in prompt."},{"question":"Do the console steps match what the developer console actually shows today?","how_to_resolve":"This guide came from documentation and unauthenticated endpoint checks. Nobody signed in or created an app, so click-by-click steps are documented, not observed."}],"steps":[{"id":"s1","order":1,"title":"Create a dedicated workspace for the OAuth app","actor":"human","human_required_because":"developer_decision","instructions":["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_result":"A workspace you are willing to give admin access to for the app.","estimated_minutes":10,"agent_status":"not_attempted","claim_ids":["c2"],"applies_to":[]},{"id":"s2","order":2,"title":"Sign in to Linear and open the app creation form","actor":"human","human_required_because":"login_or_mfa","instructions":["Sign in to the workspace from step 1.","Open the new OAuth application form."],"url":"https://linear.app/settings/api/applications/new","expected_result":"The OAuth application creation form is shown.","estimated_minutes":5,"agent_status":"not_attempted","claim_ids":["c4","c3"],"applies_to":[]},{"id":"s3","order":3,"title":"Fill in app identity fields","actor":"either","instructions":["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."],"copy_paste":[{"label":"Client name","value":"YOUR-APP-NAME"},{"label":"Client URI","value":"https://YOUR-APP.example"},{"label":"Display description","value":"Short description of what your agent does in Linear (max 1000 chars)."}],"expected_result":"Identity fields accepted by the form.","estimated_minutes":10,"agent_status":"not_attempted","claim_ids":["c32","c33","c34","c35"],"human_required_because":"none","applies_to":[]},{"id":"s4","order":4,"title":"Add redirect callback URLs","actor":"either","instructions":["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."],"copy_paste":[{"label":"Redirect URI","value":"https://YOUR-APP.example/oauth/callback"}],"expected_result":"Redirect URIs saved on the app.","estimated_minutes":10,"agent_status":"not_attempted","claim_ids":["c18","c19","c20"],"human_required_because":"none","applies_to":[]},{"id":"s5","order":5,"title":"Choose the distribution setting","actor":"human","human_required_because":"developer_decision","instructions":["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_result":"Distribution set to private or installable to match your product.","estimated_minutes":5,"agent_status":"not_attempted","claim_ids":["c5","c6"],"applies_to":[]},{"id":"s6","order":6,"title":"Decide on client credentials tokens","actor":"human","human_required_because":"developer_decision","instructions":["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_result":"Client credentials toggle set as intended.","estimated_minutes":5,"agent_status":"not_attempted","claim_ids":["c9","c10","c7"],"applies_to":[]},{"id":"s7","order":7,"title":"Save the app and copy the client ID and secret","actor":"either","instructions":["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_result":"An OAuth2 app exists with credentials you can use.","estimated_minutes":5,"agent_status":"not_attempted","claim_ids":["c3","c31"],"human_required_because":"none","applies_to":[]},{"id":"s8","order":8,"title":"Make the app installable by other workspaces","actor":"human","human_required_because":"developer_decision","instructions":["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_result":"App can be installed from other workspaces.","estimated_minutes":5,"agent_status":"not_attempted","applies_to":["installable"],"claim_ids":["c5","c45"]}],"blockers":[{"id":"b1","symptom":"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.","claim_ids":["c52","c29","c31"]},{"id":"b2","symptom":"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.","claim_ids":["c20","c18"]},{"id":"b3","symptom":"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.","claim_ids":["c32"]},{"id":"b4","symptom":"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.","claim_ids":["c36"]},{"id":"b5","symptom":"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.","claim_ids":["c28","c29"]}],"review_process":null,"gotchas":[{"text":"Access tokens last 24 hours and must be refreshed; the token response includes a refresh token.","claim_ids":["c21","c22"]},{"text":"Refresh requests have a 30-minute grace period, so a failed refresh can be replayed.","claim_ids":["c23"]},{"text":"Client credentials tokens are app actor tokens valid 30 days, cover all public teams, and have no refresh token; fetch a new one after a 401.","claim_ids":["c25","c26"]},{"text":"Up to 1000 client credentials tokens can be active in parallel only if they use the same scopes.","claim_ids":["c27"]},{"text":"Rotating the client secret kills client credentials tokens but does not revoke access or refresh tokens already granted to workspaces.","claim_ids":["c29","c30"]},{"text":"read is the default scope and always present; prefer targeted scopes and request admin only when necessary.","claim_ids":["c13","c14","c15"]},{"text":"Scopes go in the authorization request as a comma-separated list.","claim_ids":["c16"]},{"text":"actor=app makes token actions come from the app itself, which suits agents; actor=application is deprecated.","claim_ids":["c11","c12"]},{"text":"Agent scopes such as app:assignable and app:mentionable are documented under App authentication.","claim_ids":["c17"]},{"text":"The authorization request needs code_challenge_method plain or S256; send state to guard against CSRF.","claim_ids":["c41","c40"]},{"text":"prompt=consent forces the consent screen every time.","claim_ids":["c42"]},{"text":"App creation can be pre-filled with URL parameters or a JSON manifest (schema 1.0.0); the manifest wins if both are given.","claim_ids":["c37","c38","c39"]},{"text":"No OAuth metadata is published at /.well-known/oauth-authorization-server or /.well-known/openid-configuration on linear.app.","claim_ids":["c49","c50"]}],"oauth_config":{"app_types":["OAuth2 application (Linear recommends OAuth2 for integrations)"],"grant_types":["authorization_code","client_credentials"],"client_auth_methods":["unknown"],"pkce":"required","redirect_uri_rules":["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"],"scopes":[{"name":"read","purpose":"Default scope, always present","sensitivity":"basic","triggers_review":"unknown"},{"name":"issues:create","purpose":"Targeted scope for creating issues/comments","sensitivity":"basic","triggers_review":"unknown"},{"name":"admin","purpose":"Full access to admin-level endpoints; request only when needed","sensitivity":"restricted","triggers_review":"unknown"},{"name":"app:assignable","purpose":"Agent scope, documented under App authentication","sensitivity":"unknown","triggers_review":"unknown"},{"name":"app:mentionable","purpose":"Agent scope, documented under App authentication","sensitivity":"unknown","triggers_review":"unknown"}],"token_lifetimes":{"access":"24 hours (authorization_code); 30 days (client_credentials)","refresh":"unknown","notes":"Refresh requests have a 30-minute grace period; client credentials tokens have no refresh token."},"authorization_url":"https://linear.app/oauth/authorize","token_url":"https://api.linear.app/oauth/token","claim_ids":["c1","c13","c14","c15","c16","c17","c18","c19","c20","c21","c22","c23","c25","c26","c41","c51","c52","c7","c8"]},"meta":{"slug":"linear","app_name":"Linear","provider_url":"https://linear.app","developer_console_url":"https://linear.app/settings/api/applications","origin":"live_generated","generated_at":"2026-10-27T18:25:01Z","schema_version":"0.1","generator":"deepseek-chat / pipeline v0.1"},"claims":[{"id":"c1","text":"Linear recommends OAuth2 authentication for applications built to integrate with Linear.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"Linear supports OAuth2 authentication, which is recommended if you’re building applications to integrate with Linear."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_creation"},{"id":"c2","text":"Linear highly recommends creating a dedicated workspace for managing the OAuth2 application, because each admin user will have access to it.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"It is \nhighly recommended\n you create a workspace for the purpose of managing the OAuth2 Application, as each admin user will have access."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_creation"},{"id":"c3","text":"Creating a Linear OAuth2 application is done by creating a new OAuth2 Application and configuring its redirect callback URLs.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"Create a new \nOAuth2 Application\n and configure the redirect callback URLs to your application."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_creation"},{"id":"c4","text":"Linear's OAuth app creation form is at https://linear.app/settings/api/applications/new.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"https://linear.app/settings/api/applications/new"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_creation"},{"id":"c5","text":"A Linear OAuth app's distribution setting determines whether it is available only in the current workspace or installable by other workspaces.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"Whether the app should be available only in the current workspace or installable by other workspaces."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_types"},{"id":"c6","text":"The Linear OAuth app distribution setting defaults to private.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"Allowed values: \nprivate\n, \npublic\nDefault: \nprivate"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_types"},{"id":"c7","text":"Linear OAuth apps support two grant types: authorization_code and client_credentials.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"Allowed values: \nauthorization_code\n, \nclient_credentials"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_types"},{"id":"c8","text":"For Linear OAuth apps, the authorization_code grant type is always required.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"authorization_code\n is always required"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_types"},{"id":"c9","text":"Client credentials tokens are intended for OAuth2 apps doing server-to-server communication that cannot support a user-initiated OAuth flow with refresh tokens.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"grant type for OAuth2 apps that use tokens for server-to-server communication and cannot support a user-initiated OAuth flow involving refresh tokens."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_types"},{"id":"c10","text":"To use client credentials tokens, the developer must first toggle on client credentials tokens for the OAuth2 app when creating or editing it in Linear.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"You must first toggle on client credentials tokens for your OAuth2 app when creating or editing the app in Linear"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c11","text":"Adding actor=app to the Linear OAuth authorization URL makes actions performed with the token come from the app itself, which is useful for agents and service accounts.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-actor-authorization","title":"OAuth actor authorization – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"To enable the actor authorization, add \nactor=app\n parameter to your \nOAuth authorization URL"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_types"},{"id":"c12","text":"Linear's actor=application mode was deprecated in favor of actor=app, though apps already using it can continue to do so.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-actor-authorization","title":"OAuth actor authorization – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"we previously supported a similar \nactor=application\n as a mode – this was deprecated in favor of the behavior in \nactor=app\n. If your app already uses this option then you can continue to do so."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_types"},{"id":"c13","text":"The read scope is the default Linear OAuth scope and is always present.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"read - (Default) Read access for the user’s account. This scope will always be present."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"scopes"},{"id":"c14","text":"Linear advises using a more targeted scope such as issues:create if the application only needs to create comments.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"If your application only needs to create comments, use a more targeted scope issues:create"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"scopes"},{"id":"c15","text":"Linear's admin scope grants full access to admin-level endpoints and should only be requested when absolutely needed.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"admin - Full access to admin level endpoints. You should never ask for this permission unless it’s absolutely needed"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"scopes"},{"id":"c16","text":"Linear OAuth scopes are passed as a comma-separated list in the authorization request.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"scope | (required) Comma separated list of scopes"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"scopes"},{"id":"c17","text":"Agent-specific Linear scopes such as app:assignable or app:mentionable are documented under App authentication.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"See App authentication for agent-specific scopes such as app:assignable or app:mentionable ."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"scopes"},{"id":"c18","text":"A Linear OAuth app must have at least one redirect URI and can have at most 32.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"oauth.redirect_uris\nType: \nstring[]\nRequired: yes\nMinimum items: 1\nMaximum items: 32\nValues must be unique"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"redirect_uris"},{"id":"c19","text":"Linear OAuth redirect URIs must be absolute HTTP or HTTPS URLs.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"A redirect URI registered for the OAuth app. Repeat this parameter to provide multiple values.\nFormat: absolute HTTP or HTTPS URL"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"redirect_uris"},{"id":"c20","text":"When exchanging a Linear authorization code for a token, the redirect_uri must be the same one used in the authorization step.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"redirect_uri | (required) Same redirect URI which you used in the previous step"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"redirect_uris"},{"id":"c21","text":"Linear OAuth access tokens are valid for 24 hours and must be refreshed when they expire.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"The access token is valid for 24 hours and will need to be refreshed when it expires."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c22","text":"A successful Linear token exchange returns both an access token and a refresh token.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"After a successful request, a valid access token and refresh token will be returned in the response."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c23","text":"Linear refresh token requests have a 30-minute grace period so the original request can be replayed to retrieve the new refresh token after network errors.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"Requests to consume a refresh token and obtain a new one have a 30-minute grace period to allow for network errors."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c24","text":"All Linear OAuth2 applications were migrated to the new refresh token system on April 1, 2026.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"All OAuth2 applications were migrated to the new refresh token system on April 1, 2026."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c25","text":"A Linear client credentials token is an app actor token with access to all public teams in the workspace and is valid for 30 days.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"The token generated using this grant type will be an \n actor token that has access to all public teams in the workspace and is valid for 30 days."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c26","text":"Client credentials tokens have no refresh token, so the server is expected to fetch a new token after a 401 error.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"Since there is no refresh token paired with this access token, your server is expected to fetch a new token if it receives a 401 error when making a request with the previous token."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c27","text":"A Linear OAuth2 app can hold up to 1000 active client credentials tokens in parallel, provided each token uses the same scopes.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"OAuth2 apps can have up to 1000 active client credentials tokens in parallel, provided each token uses the same scopes."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"fees_or_limits"},{"id":"c28","text":"Requesting a Linear client credentials token with different scopes revokes all existing app actor tokens and replaces them with the new token.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"If you request a client credentials token with different scopes, all existing \n actor tokens for the app are revoked and replaced with the new token carrying the updated scopes."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"fees_or_limits"},{"id":"c29","text":"Rotating a Linear OAuth app's client secret immediately invalidates any client credentials tokens issued for the application.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"Rotating your client secret immediately invalidates any client credentials tokens issued for your application."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c30","text":"Rotating a Linear client secret does not revoke access or refresh tokens already granted to individual workspaces.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"It does not revoke access or refresh tokens already granted to individual workspaces — those keep working, and will use your new secret the next time they’re refreshed."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c31","text":"A Linear OAuth app's client secret can be rotated without re-registering the application.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"you can generate a new client secret or webhook signing secret without re-registering your application."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c32","text":"Linear OAuth app client names must be 2 to 80 characters and must not contain \"Linear\" or http:// or https://.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"oauth.client_name\nType: \nstring\nRequired: yes\nMin length: 2\nMax length: 80\nMust not contain \nLinear\nMust not contain \nhttp://\n or \nhttps://"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c33","text":"A Linear OAuth app requires a developer name of 2 to 80 characters.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"developer.name\nType: \nstring\nRequired: yes\nMin length: 2\nMax length: 80"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c34","text":"A Linear OAuth app requires a client URI that is an absolute HTTP or HTTPS URL.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"oauth.client_uri\nType: \nstring\nRequired: yes\nFormat: absolute HTTP or HTTPS URL"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c35","text":"A Linear OAuth app's display description has a maximum length of 1000 characters.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"display.description\nType: \nstring\nMax length: 1000 characters"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c36","text":"Linear webhook URLs for OAuth apps must use https:// and must not point to a loopback host, private-network host, or linear.app.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"Must use \nhttps://\nThe host must not be a loopback host, private-network host, or \nlinear.app"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c37","text":"Linear OAuth app configuration can be pre-populated via URL parameters on the app creation page or via a JSON manifest.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"OAuth app manifests let developers define a Linear OAuth app as structured data instead of filling the form manually."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_creation"},{"id":"c38","text":"If both dot-notation URL parameters and a manifest query parameter are supplied to Linear's app creation page, the JSON manifest takes precedence.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"If both dot-notation parameters and a \nmanifest\n query parameter are provided, the JSON manifest takes precedence."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"app_creation"},{"id":"c39","text":"Linear's OAuth app manifest schema version is currently 1.0.0.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":"schemaVersion\n⁠\nThe version of the OAuth app manifest format.\nType: \nstring\nRequired: yes\nCurrent value: \n1.0.0"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c40","text":"Linear recommends supplying the optional state parameter to prevent CSRF attacks.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"state | (optional, recommended ) Prevents CSRF attacks and should always be supplied."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c41","text":"Linear's authorization request requires a code_challenge_method of either plain or S256.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"code_challenge_method | (required) Either plain or S256 , depending on whether the challenge is the plain verifier string or the SHA256 hash of the string"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"requirements"},{"id":"c42","text":"Linear's prompt=consent parameter makes the consent screen display every time, even if all scopes were previously granted.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":"prompt=consent | (optional) The consent screen is displayed every time, even if all scopes were previously granted."}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"scopes"},{"id":"c43","text":"Linear documents OAuth 2.0 and personal API keys as the two ways to authenticate requests to the Linear API.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers","title":"Linear Developers","retrieved_at":"2026-10-27T18:24:02Z","excerpt":"Use OAuth 2.0 or personal API keys to authenticate your requests to the Linear API"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"other"},{"id":"c44","text":"Linear's developer documentation lists an Agents guide for integrating an AI agent into Linear.","evidence_level":"official_docs","confidence":"high","sources":[{"url":"https://linear.app/developers","title":"Linear Developers","retrieved_at":"2026-10-27T18:24:02Z","excerpt":"Agents\nHow to best integrate an AI agent into Linear"}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"other"},{"id":"c45","text":"None of the 6 official pages read mentions an app review, approval or listing-review process. This is absence of evidence in the pages we read, not confirmation that no such requirement exists.","evidence_level":"inferred","confidence":"medium","sources":[{"url":"https://linear.app/developers","title":"Linear Developers","retrieved_at":"2026-10-27T18:24:02Z","excerpt":""},{"url":"https://linear.app/","title":"Linear – The system for product development","retrieved_at":"2026-10-27T18:24:05Z","excerpt":""},{"url":"https://linear.app/ai","title":"Linear – Agents that follow work from conversation to code","retrieved_at":"2026-10-27T18:24:03Z","excerpt":""},{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":""},{"url":"https://linear.app/developers/oauth-actor-authorization","title":"OAuth actor authorization – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""},{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"absence"},{"id":"c46","text":"None of the 6 official pages read mentions business, identity or publisher verification. This is absence of evidence in the pages we read, not confirmation that no such requirement exists.","evidence_level":"inferred","confidence":"medium","sources":[{"url":"https://linear.app/developers","title":"Linear Developers","retrieved_at":"2026-10-27T18:24:02Z","excerpt":""},{"url":"https://linear.app/","title":"Linear – The system for product development","retrieved_at":"2026-10-27T18:24:05Z","excerpt":""},{"url":"https://linear.app/ai","title":"Linear – Agents that follow work from conversation to code","retrieved_at":"2026-10-27T18:24:03Z","excerpt":""},{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":""},{"url":"https://linear.app/developers/oauth-actor-authorization","title":"OAuth actor authorization – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""},{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"absence"},{"id":"c47","text":"None of the 6 official pages read mentions a security assessment or audit. This is absence of evidence in the pages we read, not confirmation that no such requirement exists.","evidence_level":"inferred","confidence":"medium","sources":[{"url":"https://linear.app/developers","title":"Linear Developers","retrieved_at":"2026-10-27T18:24:02Z","excerpt":""},{"url":"https://linear.app/","title":"Linear – The system for product development","retrieved_at":"2026-10-27T18:24:05Z","excerpt":""},{"url":"https://linear.app/ai","title":"Linear – Agents that follow work from conversation to code","retrieved_at":"2026-10-27T18:24:03Z","excerpt":""},{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":""},{"url":"https://linear.app/developers/oauth-actor-authorization","title":"OAuth actor authorization – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""},{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"absence"},{"id":"c48","text":"None of the 6 official pages read mentions a paid plan, fee or subscription requirement. This is absence of evidence in the pages we read, not confirmation that no such requirement exists.","evidence_level":"inferred","confidence":"medium","sources":[{"url":"https://linear.app/developers","title":"Linear Developers","retrieved_at":"2026-10-27T18:24:02Z","excerpt":""},{"url":"https://linear.app/","title":"Linear – The system for product development","retrieved_at":"2026-10-27T18:24:05Z","excerpt":""},{"url":"https://linear.app/ai","title":"Linear – Agents that follow work from conversation to code","retrieved_at":"2026-10-27T18:24:03Z","excerpt":""},{"url":"https://linear.app/developers/oauth-2-0-authentication","title":"OAuth 2.0 authentication – Linear Developers","retrieved_at":"2026-10-27T18:24:09Z","excerpt":""},{"url":"https://linear.app/developers/oauth-actor-authorization","title":"OAuth actor authorization – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""},{"url":"https://linear.app/developers/oauth-app-manifests","title":"OAuth application manifests – Linear Developers","retrieved_at":"2026-10-27T18:24:07Z","excerpt":""}],"test_ref":null,"conflicts_with":[],"corrected_from":null,"topic":"absence"},{"id":"c49","text":"GET /.well-known/oauth-authorization-server on linear.app returned HTTP 404, so no OAuth metadata is published at this path","evidence_level":"tested","confidence":"high","sources":[{"url":"https://linear.app/.well-known/oauth-authorization-server","title":"Direct request by the agent","retrieved_at":"2026-10-27T18:24:20Z","excerpt":""}],"test_ref":"a17","conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c50","text":"GET /.well-known/openid-configuration on linear.app returned HTTP 404, so no OAuth metadata is published at this path","evidence_level":"tested","confidence":"high","sources":[{"url":"https://linear.app/.well-known/openid-configuration","title":"Direct request by the agent","retrieved_at":"2026-10-27T18:24:20Z","excerpt":""}],"test_ref":"a18","conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c51","text":"Calling the authorization endpoint with an unregistered client_id returned HTTP 200, page title 'Linear'.","evidence_level":"tested","confidence":"high","sources":[{"url":"https://linear.app/oauth/authorize","title":"Direct request by the agent","retrieved_at":"2026-10-27T18:24:20Z","excerpt":""}],"test_ref":"a19","conflicts_with":[],"corrected_from":null,"topic":"redirect_uris"},{"id":"c52","text":"Posting fake client credentials to the token endpoint returned HTTP 400, error code 'invalid_client'.","evidence_level":"tested","confidence":"high","sources":[{"url":"https://api.linear.app/oauth/token","title":"Direct request by the agent","retrieved_at":"2026-10-27T18:24:20Z","excerpt":""}],"test_ref":"a20","conflicts_with":[],"corrected_from":null,"topic":"tokens"},{"id":"c53","text":"Opening the developer console URL while signed out returned HTTP 200, which does not clearly show a sign-in wall.","evidence_level":"tested","confidence":"medium","sources":[{"url":"https://linear.app/settings/api/applications","title":"Direct request by the agent","retrieved_at":"2026-10-27T18:24:20Z","excerpt":""}],"test_ref":"a21","conflicts_with":[],"corrected_from":null,"topic":"app_creation"}],"agent_attempt":{"depth":"endpoint_probes","actions":[{"id":"a1","kind":"search","summary":"Searched: site:linear.app OAuth 2.0 authentication create application","target":"duckduckgo","outcome":"success","observed":"6 results","screenshot":null,"timestamp":"2026-10-27T18:23:58Z"},{"id":"a2","kind":"search","summary":"Searched: site:linear.app developers API OAuth scopes","target":"duckduckgo","outcome":"success","observed":"6 results","screenshot":null,"timestamp":"2026-10-27T18:23:58Z"},{"id":"a3","kind":"search","summary":"Searched: Linear linear.app OAuth app review approval verification requirements","target":"duckduckgo","outcome":"success","observed":"6 results","screenshot":null,"timestamp":"2026-10-27T18:23:58Z"},{"id":"a4","kind":"search","summary":"Searched: Linear linear.app API OAuth scopes redirect URI token expiration","target":"duckduckgo","outcome":"success","observed":"6 results","screenshot":null,"timestamp":"2026-10-27T18:23:59Z"},{"id":"a5","kind":"fetch_doc","summary":"Read https://developers.linear.app/docs/graphql/working-with-the-graphql-api","target":"https://developers.linear.app/docs/graphql/working-with-the-graphql-api","outcome":"success","observed":"HTTP 200, 790 chars","screenshot":null,"timestamp":"2026-10-27T18:24:00Z"},{"id":"a6","kind":"fetch_doc","summary":"Read https://developers.linear.app/docs/oauth/oauth-actor-authorization","target":"https://developers.linear.app/docs/oauth/oauth-actor-authorization","outcome":"success","observed":"HTTP 200, 790 chars","screenshot":null,"timestamp":"2026-10-27T18:24:01Z"},{"id":"a7","kind":"fetch_doc","summary":"Read https://developers.linear.app/docs/oauth/oauth-2-0-authentication","target":"https://developers.linear.app/docs/oauth/oauth-2-0-authentication","outcome":"success","observed":"HTTP 200, 790 chars","screenshot":null,"timestamp":"2026-10-27T18:24:02Z"},{"id":"a8","kind":"fetch_doc","summary":"Read https://developers.linear.app/docs/oauth/authentication","target":"https://developers.linear.app/docs/oauth/authentication","outcome":"success","observed":"HTTP 200, 790 chars","screenshot":null,"timestamp":"2026-10-27T18:24:02Z"},{"id":"a9","kind":"fetch_doc","summary":"Read https://auth0.com/intro-to-iam/what-is-oauth-2","target":"https://auth0.com/intro-to-iam/what-is-oauth-2","outcome":"failed","observed":"not about Linear","screenshot":null,"timestamp":"2026-10-27T18:24:02Z"},{"id":"a10","kind":"fetch_doc","summary":"Read https://oauth.net/2/","target":"https://oauth.net/2/","outcome":"failed","observed":"not about Linear","screenshot":null,"timestamp":"2026-10-27T18:24:03Z"},{"id":"a11","kind":"fetch_doc","summary":"Read https://linear.app/ai","target":"https://linear.app/ai","outcome":"success","observed":"HTTP 200, 4729 chars","screenshot":null,"timestamp":"2026-10-27T18:24:03Z"},{"id":"a12","kind":"fetch_doc","summary":"Read https://linear.app/","target":"https://linear.app/","outcome":"success","observed":"HTTP 200, 9541 chars","screenshot":null,"timestamp":"2026-10-27T18:24:05Z"},{"id":"a13","kind":"fetch_doc","summary":"Read https://www.geeksforgeeks.org/ethical-hacking/what-is-oauth-open-authorization/","target":"https://www.geeksforgeeks.org/ethical-hacking/what-is-oauth-open-authorization/","outcome":"failed","observed":"not about Linear","screenshot":null,"timestamp":"2026-10-27T18:24:05Z"},{"id":"a14","kind":"fetch_doc","summary":"Read https://linear.app/developers/oauth-actor-authorization","target":"https://linear.app/developers/oauth-actor-authorization","outcome":"success","observed":"HTTP 200, 1837 chars","screenshot":null,"timestamp":"2026-10-27T18:24:07Z"},{"id":"a15","kind":"fetch_doc","summary":"Read https://linear.app/developers/oauth-app-manifests","target":"https://linear.app/developers/oauth-app-manifests","outcome":"success","observed":"HTTP 200, 7979 chars","screenshot":null,"timestamp":"2026-10-27T18:24:07Z"},{"id":"a16","kind":"fetch_doc","summary":"Read https://linear.app/developers/oauth-2-0-authentication","target":"https://linear.app/developers/oauth-2-0-authentication","outcome":"success","observed":"HTTP 200, 12396 chars, kept the 9286 most relevant","screenshot":null,"timestamp":"2026-10-27T18:24:09Z"},{"id":"a17","kind":"probe_endpoint","summary":"GET /.well-known/oauth-authorization-server","target":"https://linear.app/.well-known/oauth-authorization-server","outcome":"success","observed":"HTTP 404","screenshot":null,"timestamp":"2026-10-27T18:24:21Z"},{"id":"a18","kind":"probe_endpoint","summary":"GET /.well-known/openid-configuration","target":"https://linear.app/.well-known/openid-configuration","outcome":"success","observed":"HTTP 404","screenshot":null,"timestamp":"2026-10-27T18:24:23Z"},{"id":"a19","kind":"probe_endpoint","summary":"Authorization endpoint with an unregistered client_id","target":"https://linear.app/oauth/authorize","outcome":"success","observed":"HTTP 200, page title 'Linear'","screenshot":null,"timestamp":"2026-10-27T18:24:23Z"},{"id":"a20","kind":"probe_endpoint","summary":"Token endpoint with fake credentials","target":"https://api.linear.app/oauth/token","outcome":"success","observed":"HTTP 400, error code 'invalid_client'","screenshot":null,"timestamp":"2026-10-27T18:24:23Z"},{"id":"a21","kind":"probe_endpoint","summary":"Developer console without signing in","target":"https://linear.app/settings/api/applications","outcome":"success","observed":"HTTP 200","screenshot":null,"timestamp":"2026-10-27T18:24:23Z"}],"stopped_reason":"Live generation reads public documentation and sends unauthenticated requests only. It does not sign in, create an app, or submit anything.","not_attempted":["Signing in to the developer console","Creating a test app","Submitting an app for review"]},"freshness":{"last_verified":"2026-10-27","recheck_after":"2027-01-25","changelog":[]}}