Skip to main content

linear-security-basics

Provides best practices for secure API key management and OAuth implementation for Linear integrations.

Install this skill

or
48/100

Security score

The linear-security-basics skill was audited on Feb 28, 2026 and we found 32 security issues across 3 threat categories. Review the findings below before installing.

Categories Tested

Security Issues

low line 120

Fetch to external URL

SourceSKILL.md
120const response = await fetch("https://api.linear.app/oauth/token", {
low line 152

Fetch to external URL

SourceSKILL.md
152const response = await fetch("https://api.linear.app/oauth/token", {
medium line 178

Webhook reference - potential data exfiltration

SourceSKILL.md
178### Step 4: Webhook Signature Verification
low line 182

Webhook reference - potential data exfiltration

SourceSKILL.md
182function verifyWebhookSignature(
low line 200

Webhook reference - potential data exfiltration

SourceSKILL.md
200app.post("/webhooks/linear", express.raw({ type: "*/*" }), (req, res) => {
low line 204

Webhook reference - potential data exfiltration

SourceSKILL.md
204if (!verifyWebhookSignature(payload, signature, process.env.LINEAR_WEBHOOK_SECRET!)) {
low line 209

Webhook reference - potential data exfiltration

SourceSKILL.md
209// Process verified webhook...
medium line 242

Webhook reference - potential data exfiltration

SourceSKILL.md
242- [ ] Webhook signatures verified
medium line 250

Webhook reference - potential data exfiltration

SourceSKILL.md
250| `Invalid signature` | Webhook secret mismatch | Verify secret matches Linear settings |
medium line 256

Webhook reference - potential data exfiltration

SourceSKILL.md
256- [Webhook Security](https://developers.linear.app/docs/graphql/webhooks)
low line 38

Access to .env file

SourceSKILL.md
38apiKey: process.env.LINEAR_API_KEY!
low line 44

Access to .env file

SourceSKILL.md
44# .env (never commit this file)
low line 48

Access to .env file

SourceSKILL.md
48.env
low line 49

Access to .env file

SourceSKILL.md
49.env.*
low line 50

Access to .env file

SourceSKILL.md
50!.env.example
low line 52

Access to .env file

SourceSKILL.md
52# .env.example (commit this for documentation)
low line 60

Access to .env file

SourceSKILL.md
60const apiKey = process.env.LINEAR_API_KEY;
low line 89

Access to .env file

SourceSKILL.md
89clientId: process.env.LINEAR_CLIENT_ID!,
low line 90

Access to .env file

SourceSKILL.md
90clientSecret: process.env.LINEAR_CLIENT_SECRET!,
low line 91

Access to .env file

SourceSKILL.md
91redirectUri: process.env.LINEAR_REDIRECT_URI!,
low line 158

Access to .env file

SourceSKILL.md
158client_id: process.env.LINEAR_CLIENT_ID!,
low line 159

Access to .env file

SourceSKILL.md
159client_secret: process.env.LINEAR_CLIENT_SECRET!,
low line 204

Access to .env file

SourceSKILL.md
204if (!verifyWebhookSignature(payload, signature, process.env.LINEAR_WEBHOOK_SECRET!)) {
low line 218

Access to .env file

SourceSKILL.md
218process.env.LINEAR_API_KEY_NEW,
low line 219

Access to .env file

SourceSKILL.md
219process.env.LINEAR_API_KEY_OLD,
medium line 238

Access to .env file

SourceSKILL.md
238- [ ] .env files in .gitignore
low line 100

External URL reference

SourceSKILL.md
100const authUrl = new URL("https://linear.app/oauth/authorize");
low line 120

External URL reference

SourceSKILL.md
120const response = await fetch("https://api.linear.app/oauth/token", {
low line 152

External URL reference

SourceSKILL.md
152const response = await fetch("https://api.linear.app/oauth/token", {
low line 255

External URL reference

SourceSKILL.md
255- [Linear OAuth Documentation](https://developers.linear.app/docs/oauth)
low line 256

External URL reference

SourceSKILL.md
256- [Webhook Security](https://developers.linear.app/docs/graphql/webhooks)
low line 257

External URL reference

SourceSKILL.md
257- [API Authentication](https://developers.linear.app/docs/graphql/authentication)
Scanned on Feb 28, 2026
View Security Dashboard
Installation guide →