Back to skill

Security audit

Linear

Security checks for vulnerabilities and agentic risk

Overview

This skill transparently provides a local Linear CLI for reading and updating Linear work items using the user's API key.

Install only if you intend to let an agent read and update Linear data. Use a dedicated least-privilege LINEAR_API_KEY, review proposed bulk updates before allowing them, and note that the documentation claims a few Linear resource types that the current CLI does not actually support.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
The code substantially matches the general purpose of managing Linear data via a bundled Node CLI and the official Linear API. It performs legitimate Linear read/write operations for teams, projects, issues, comments, labels, states, and user info. However, the declared description explicitly says it can manage milestones, cycles, and documents, and no corresponding commands or API operations for those resources appear in the supplied code. This is a description-behavior mismatch due to overclaiming unsupported capabilities, though there is no evidence of unrelated or undeclared sensitive behavior.

Memory Manipulation

High
Category
Memory Poisoning
Content
interface:
  display_name: "Linear"
  short_description: "Manage Linear projects and issues with local CLI workflow"
  default_prompt: "Use the Linear skill workflow to triage and update issues and projects with clear state transitions and next actions."
Confidence
80% confidence
Finding
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

External Transmission

Medium
Category
Data Exfiltration
Content
- Runtime: local Node.js script in this repo
- Dependency: `@linear/sdk` (installed under `scripts/`)
- Credential: `LINEAR_API_KEY`
- API scope: Linear GraphQL via official SDK (`https://api.linear.app/graphql`)
- Source: [github.com/MaTriXy/linear-skill](https://github.com/MaTriXy/linear-skill)

## Install
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
- Runtime: local Node.js script in this repo
- Dependency: `@linear/sdk` (installed under `scripts/`)
- Credential: `LINEAR_API_KEY`
- API scope: Linear GraphQL via official SDK (`https://api.linear.app/graphql`)
- Source: [github.com/MaTriXy/linear-skill](https://github.com/MaTriXy/linear-skill)

## Install
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill requires access to a sensitive environment variable (`LINEAR_API_KEY`) and invokes a local Node CLI, but it does not declare an explicit tool/permission scope to constrain that access. In agent environments, missing scope declarations can lead to broader-than-expected credential exposure or execution authority, increasing the risk of misuse if the skill or surrounding tooling is compromised.

Missing User Warnings

Low
Confidence
83% confidence
Finding
This markdown file instructs users to use a personal `LINEAR_API_KEY`, but it does not include any warning about the sensitivity of that credential or caution against exposing it in logs, shell history, or shared files. Because the document describes use of authentication material, a brief user-facing warning about credential handling is expected under the missing user warnings rule for markdown files.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"version": "1.0.0",
  "private": true,
  "dependencies": {
    "@linear/sdk": "^71.0.0"
  }
}
Confidence
92% confidence
Finding
The dependency uses a caret range (^71.0.0), which permits automatic installation of newer minor and patch releases rather than a single fixed version. In a security-sensitive automation skill that manages Linear data, this increases supply-chain risk because a compromised or breaking upstream release could be pulled into the environment without explicit review.

Static analysis

No suspicious patterns detected.