@chat-adapter/linear
Linear adapter for Chat SDK. Respond to @mentions in issue comment threads.
The Linear adapter treats issue comments as messages and issues as threads.
Installation
Usage
The adapter auto-detects credentials from LINEAR_API_KEY (or LINEAR_CLIENT_ID/LINEAR_CLIENT_SECRET), LINEAR_WEBHOOK_SECRET, and LINEAR_BOT_USERNAME environment variables:
Authentication
Option A: Personal API key
Best for personal projects, testing, or single-workspace bots. Actions are attributed to you as an individual.
- Go to Settings > Security & Access
- Under Personal API keys, click Create key
- Select Only select permissions and enable Create issues, Create comments
- Choose team access
- Click Create and set
LINEAR_API_KEY
Option B: OAuth application (recommended)
The bot gets its own identity in Linear. The adapter handles token management internally.
- Go to Settings > API > Applications
- Create an OAuth2 application with your bot's name and icon
- Enable client credentials tokens in the app settings
- Note the Client ID and Client Secret
The adapter uses the client credentials grant to obtain tokens automatically. Tokens are valid for 30 days and auto-refresh when expired.
Making the bot @-mentionable (optional)
To make the bot appear in Linear's @ mention dropdown as an Agent:
- In your OAuth app settings, enable Agent session events under webhooks
- Have a workspace admin install the app with
actor=appand theapp:mentionablescope:
See the Linear Agents docs for full details.
Webhook setup
Note: Webhook management requires workspace admin access. If you don't see the API settings page, ask a workspace admin to create the webhook for you.
- Go to Settings > API and click Create webhook
- Fill in:
- Label: A descriptive name (e.g., "Chat Bot")
- URL:
https://your-domain.com/api/webhooks/linear
- Copy the Signing secret as
LINEAR_WEBHOOK_SECRET - Under Data change events, select:
- Comments (required)
- Issues (recommended)
- Emoji reactions (optional)
- Under Team selection, choose All public teams or a specific team
- Click Create webhook
Thread model
Linear has two levels of comment threading:
When a user writes a comment, the bot replies within the same comment thread.
Reactions
Configuration
All options are auto-detected from environment variables when not provided.
*One of apiKey, clientId/clientSecret, or accessToken is required (via config or env vars).
**webhookSecret is required — either via config or LINEAR_WEBHOOK_SECRET env var.
Environment variables
Features
Messaging
Rich content
Conversations
Message history
Limitations
- No typing indicators — Linear doesn't support typing indicators
- No streaming — Messages posted in full (editing supported for updates)
- No DMs — Linear doesn't have direct messages
- No modals — Linear doesn't support interactive modals
- Action buttons — Rendered as text; use link buttons for clickable actions
- Remove reaction — Requires reaction ID lookup (not directly supported)
Troubleshooting
"Invalid signature" error
- Verify
LINEAR_WEBHOOK_SECRETmatches the secret from your webhook configuration - The webhook secret is shown only once at creation — regenerate if lost
Bot not responding to mentions
- Verify webhook events are configured with Comments resource type
- Check that the webhook URL is correct and accessible
- Ensure the
userNameconfig matches how users mention the bot - Linear may auto-disable webhooks after repeated failures
"Webhook expired" error
- Webhook timestamp is too old (> 5 minutes)
- Usually indicates a delivery delay or clock skew
- Check that your server time is synchronized
License
MIT