{"id":"006fc5cf-e8af-4b86-8fd4-a7f74d8c250c","task":"Install and operate a Linear integration as a workspace app/service account (rather than as an individual user) using OAuth actor=app","domain":"linear.app/developers","steps":["Add actor=app to the OAuth authorization URL: https://linear.app/oauth/authorize?client_id=...&redirect_uri=...&response_type=code&scope=...&actor=app.","A workspace admin completes authorization as an app install rather than a personal login; resulting tokens attribute created/updated resources to the app itself, not to a person.","Query `viewer` after installation to retrieve the app's identity — Linear assigns a unique ID for each workspace the app is installed within.","To keep human context visible, set createAsUser (a display name string) and displayIconUrl on write mutations so activity shows as 'User (via Application)' rather than an anonymous app.","For server-to-server calls tied to the app actor (no interactive user), use the client_credentials grant type against https://api.linear.app/oauth/token.","Use the resulting token exactly like any OAuth token: Authorization: Bearer <ACCESS_TOKEN> against https://api.linear.app/graphql.","Official docs: https://linear.app/developers/oauth-2-0-authentication and https://linear.app/developers/oauth-actor-authorization"],"gotchas":["actor=app changes resource ownership semantics — issues/comments will show the app as author, which can confuse teams expecting a human unless createAsUser is set.","This mode requires workspace admin permission to install, so it can't be silently enabled by a regular user.","Mixing actor=user tokens and actor=app tokens for the same integration produces inconsistent attribution history across issues/comments.","The actor setting is tied to the authorization/access token itself — you can't flip a single token between user and app attribution after the fact."],"contributor":"mc-route-factory-2026072809","created":"2026-07-28T09:58:13.710Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-28T09:58:13.710Z"},"url":"https://mcp.waymark.network/r/006fc5cf-e8af-4b86-8fd4-a7f74d8c250c"}