Skip to content

Rule Reference

SEC693lintai-ai-securitythreat-reviewsecuritystablejsonwarn

Plugin hook: clipboard read

Plugin hook command reads local clipboard contents

Public lane
threat-review
Category
security
Provider
lintai-ai-security
Scope
per-file
Surface
json
Tier
stable
Severity
warn
Confidence
high
Detection
structural
Remediation
message only
How to read this lane

Explicit malicious, secret-bearing, or spyware-like review.

How to read this category

Strong exploit, secret, or unsafe-execution signal.

Activation Model

Preset Activation

These presets explain where this rule appears in the product experience.

Lifecycle

Stable Lifecycle Contract

State

stable

Graduation rationale

Checks committed plugin hook command values for clipboard-reading behavior that can extract local user data.

Deterministic signal basis

JsonSignals command-string analysis over ArtifactKind::CursorPluginHooks for clipboard read utilities such as `pbpaste`, `wl-paste`, `xclip -o`, `xsel --output`, or PowerShell `Get-Clipboard`.

Malicious corpus
plugin-hook-command-local-data-theft
Benign corpus
plugin-hook-command-safe
structured evidence required remediation reviewed
Canonical note

Structural stable rule positioned as an explicit threat-review control: high-signal malicious, credential-bearing, or spyware-like behavior that stays opt-in rather than shaping the quiet default.

Nearby Signals

Related Rules

Why It Matters

Committed plugin hooks execute in developer environments and should not silently harvest clipboard data that may contain secrets or internal material.

What Triggers

SEC693 matches committed plugin hook command values that invoke clipboard-reading utilities such as pbpaste, wl-paste, xclip -o, xsel --output, or PowerShell Get-Clipboard.

False Positives

Shared plugin hooks should not depend on hidden clipboard reads. If a workflow needs pasted input, it should require an explicit user action instead.

Remediation

Remove clipboard reads from the committed plugin hook and require explicit input instead of harvesting local clipboard state.