Back to skill
v1.0.0

Linear Webhook

ReviewClawScan verdict for this skill. Analyzed May 1, 2026, 4:57 AM.

Analysis

The skill’s Linear-to-agent purpose is coherent, but it should be reviewed because Linear comments can trigger agents and agent-side posting commands that use local Linear credentials with limited scoping.

GuidanceReview before installing. Only use this if you trust the Linear users who can comment in the configured workspace and you are comfortable letting those comments trigger agent work. Declare and scope the Linear API key, remove or document @forge, add webhook source validation and user allowlists, and replace the mandatory shell/node posting command with a safer reviewed tool or an explicit confirmation step.

Findings (7)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

Abnormal behavior control

Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.

Tool Misuse and Exploitation
SeverityHighConfidenceHighStatusConcern
SKILL.md
mappings: [ { name: "linear", match: { path: "/linear", method: "POST" }, action: "agent", transform: { module: "./linear-transform.js", export: "transformLinearWebhook" } } ]

The webhook is configured to turn Linear comment-created POSTs directly into agent actions. The artifacts do not show commenter allowlists, team/label scoping, or a human approval step before dispatching implementation/planning work.

User impactAnyone who can cause a matching Linear comment event and mention a supported agent may be able to start agent work through the configured webhook.
RecommendationAdd explicit allowlists for Linear users, teams, projects, or labels; require confirmation for implementation tasks; and log/review each dispatch before high-impact agents act.
Agent Goal Hijack
SeverityMediumConfidenceHighStatusConcern
linear-transform.js
`**Issue Description:**`, `${issue.description || 'No description provided.'}`, `**Comment/Task:**`, `${comment.body}`,

Raw Linear issue descriptions and comment bodies are inserted into the agent's task prompt without boundaries that mark them as untrusted external content.

User impactA Linear issue or comment can include instructions that steer the agent beyond the intended request, especially because the skill is designed to route work to implementation/planning agents.
RecommendationTreat Linear text as untrusted input, clearly delimit it, ignore instructions outside the explicit @mention command, and require approval before acting on sensitive or broad instructions.
Unexpected Code Execution
SeverityHighConfidenceHighStatusConcern
linear-transform.js
`**⚠️ MANDATORY: After responding, run this command to post back to Linear:**`, ... `LINEAR_API_KEY=$(cat ~/.linear_api_key) node -e "const {postLinearComment} = require('/home/sven/clawd-mason/skills/linear-webhook/linear-transform.js'); postLinearComment('${issue.id}', \`YOUR_RESPONSE_HERE\`, ...);"`

The generated agent task instructs the agent to run a raw shell/Node command that reads a local API key and writes to Linear, rather than using a bounded tool or explicit user approval.

User impactAn agent may execute local code and post externally using the user's Linear credential as part of the default task flow.
RecommendationReplace the mandatory node -e command with a narrowly scoped, reviewed tool; require user confirmation before posting; and avoid embedding credentials or unescaped payload fields in generated commands.
Human-Agent Trust Exploitation
SeverityMediumConfidenceHighStatusConcern
linear-transform.js
const AGENT_MENTIONS = { '@mason': 'mason', '@eureka': 'eureka', '@forge': 'forge', };

The SKILL.md and README describe routing @mason or @eureka, but the code also routes @forge, which broadens agent dispatch beyond the documented behavior.

User impactUsers may not realize an additional agent route exists and could unintentionally allow Linear comments to invoke a different agent.
RecommendationDocument @forge clearly if it is intended, or remove it from the routing table and mention parser.
Agentic Supply Chain Vulnerabilities
SeverityLowConfidenceMediumStatusNote
SKILL.md
`linear-api.js` - Linear GraphQL API client (for posting comments)

SKILL.md references a file that is not present in the supplied manifest, while the actual posting code is in linear-transform.js. This is an artifact coherence/provenance gap rather than evidence of malicious behavior.

User impactUsers may have difficulty understanding which code actually handles Linear API writes.
RecommendationUpdate the documentation and manifest so all referenced helper files and posting behavior match the included code.
Permission boundary

Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.

Identity and Privilege Abuse
SeverityHighConfidenceHighStatusConcern
linear-transform.js
const tokensPath = process.env.HOME + '/.config/clawdbot/linear-agent-tokens.json'; ... personalKey = fs.readFileSync(process.env.HOME + '/.linear_api_key', 'utf8').trim(); ... 'Authorization': apiKey,

The code reads persistent local Linear/OAuth token files and uses the resulting API key in an Authorization header, while the registry metadata lists no required credential or env var.

User impactInstalling or using the skill may let agent workflows post to Linear using a personal or local agent credential that users may not realize is being read.
RecommendationDeclare the Linear credential requirement in metadata, avoid implicit local credential-file reads, prefer scoped environment variables or a secret manager, and document exactly which Linear scopes are required.
Sensitive data protection

Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.

Insecure Inter-Agent Communication
SeverityLowConfidenceHighStatusNote
SKILL.md
Use Cloudflare Tunnel or Tailscale Funnel to make webhook publicly accessible ... Add custom header: `x-clawdbot-token: your-secret-token-here` ... Verify webhook source (Linear's IP ranges if needed)

The public webhook flow is central to the skill and uses a bearer-style hook token, but source verification is presented as optional.

User impactThe endpoint can receive internet traffic, so the hook token and source validation determine who can trigger the agent workflow.
RecommendationUse HTTPS, keep the hook token secret, rotate it regularly, and add Linear source/signature validation or IP allowlisting where available.