Skip to content

Missing OAuth authorization flow — plugin cannot obtain its own bot identity #71

@QiuYi111

Description

@QiuYi111

Problem

The plugin supports OAuth tokens (clientId/clientSecret config, token refresh logic, persistToken to Cyrus config) but has no OAuth callback route. This means there is no way for the plugin to obtain its first OAuth token through an authorization flow.

Current Workarounds (all flawed)

  1. Borrow from Cyrus config (resolveLinearToken 2nd priority) — tight coupling to Cyrus, not a proper standalone solution
  2. Personal API Key — operates as the user identity, not a bot. Comments/status changes appear as the user, not as a dedicated agent. This is a fundamental design issue for any multi-user or team deployment.
  3. Manually paste OAuth token — no UX, token expires, defeats the purpose

Expected Behavior

The plugin should be a Linear bot/integration with its own identity, not impersonating the user. This requires:

  1. An OAuth callback route (/linear-light/oauth/callback) to complete the authorization flow
  2. An init/setup command or page that starts the OAuth flow (redirects to Linear authorize URL)
  3. Proper token storage (plugin-local, not Cyrus config)
  4. Automatic refresh using clientId/clientSecret (already implemented, just needs the first token)

Severity

Critical — this is an architectural issue that affects the core identity model of the plugin. Without OAuth flow, the plugin cannot operate as a proper bot/integration in Linear.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions