Back to skill

Security audit

X Engagement

Security checks for vulnerabilities and agentic risk

Overview

This X/Twitter assistant is coherent, but it needs review because it uses authenticated browser control, unpinned third-party commands, and long-lived personal memory.

Review before installing. Pin and verify browser-relay-cli instead of running bare npx commands, use a dedicated browser profile for X, require explicit confirmation for every like/follow/comment and every Playbook update, and periodically inspect or delete the memory directory because some personal facts are designed to persist indefinitely.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (3)

T08 · Insecure Dependencies

Error
Location
docs/browser-operations.md:18
Finding

Unpinned Third-Party Package Executes with Authenticated Browser Access

Content
View full analysis
,\"method\":\"Runtime.evaluate\",\"params\":{\"expression\":\"(() => { const tweets = [...document.querySelectorAll('[data-testid=\\\"tweet\\\"]')]; return tweets.slice(0, 5).map((tweet) => ({ author: tweet.querySelector('[data-testid=\\\"User-Name\\\"]')?.innerText || '', content: tweet.querySelector('[data-testid=\\\"tweetText\\\"]')?.innerText || '', link: tweet.querySelector('a[href*=\\\"/status/\\\"]')?.href || '' })); })()\",\"returnByValue\":true}}" ``` ### Technical Analysis The documentation repeatedly invokes `browser-relay-cli` through `npx` without an exact package version, lockfile, integrity hash, or verified local installation requirement. If the package is not already installed locally, `npx` may resolve and execute the current package version from the configured npm registry. This creates a mutable supply-chain execution path: the code ultimately executed on the user's system can differ from the code that was reviewed with this Skill. The dependency is particularly sensitive because it is expected to control a Chrome or Chromium instance that is already authenticated to X. The documented `raw CDP.send` interface further demonstrates that the dependency operates with broad browser automation c ...[truncated 1711 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
docs/memory-system.md:148
Finding

Automatic Permanent Storage of Broad User Statements and Inferred Personal Facts

Content
View full analysis
Remediation
View remediation

T02 · Agent Memory Poisoning

Warning
Location
SKILL.md:220
Finding

Persistent Strategy Self-Modification Lacks an Untrusted-Content Boundary

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (69)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description presents a Twitter/X engagement assistant with onboarding, persona learning, browser relay control, memory features, reminders, and suggestion workflows. The supplied code does not implement any of those user-facing Twitter-assistance behaviors. Instead, it is a local housekeeping script that scans a specific memory subtree and optionally deletes files older than 7 or 30 days. While this may be tangentially related to a 'memory system,' the actual capability here is storage cleanup and deletion, which is not disclosed in the description. That is a materially different primary purpose and an undeclared file-system modification capability, so this is a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The declared description presents a broad X/Twitter operations skill with multiple major capabilities: onboarding, persona learning, browser control, memory, reminder templates, and recommendation functions. The supplied code chunk does not implement those features. Instead, it is a narrow daily review/reporting script that analyzes existing local engagement/comment data and prints a recap with references to playbook files. This is materially different in primary purpose and lacks the central declared capabilities, so the description does not accurately represent the actual behavior of this code chunk.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The document explicitly instructs persistent collection of comment history, user statements, and preferences, but provides no consent, notice, minimization, or user-control mechanism. In the context of a social-media engagement skill, this enables silent profiling and long-term retention of potentially sensitive behavioral data, increasing privacy, compliance, and misuse risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This section directs the system to infer and permanently store user facts and preferences from free-form messages, including dislikes, interests, activity patterns, and interpersonal sensitivities. Permanent profiling from conversational content is dangerous because it creates a durable dossier that can be leaked, repurposed, or used in manipulative targeting without the user's awareness.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This section goes beyond logging and instructs semantic extraction of durable user facts and preferences from messages, creating a structured profile from plain-language conversation. In a social-media engagement tool, that substantially increases the risk of privacy invasion, data leakage, manipulative personalization, and retention of inaccurate inferences as if they were facts.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The cleanup table states that user facts, major events, and personas are retained forever, which creates indefinite retention of personal and inferred data without justification or safeguards. Indefinite retention materially increases breach impact, profiling harm, and regulatory exposure because information accumulates over time and is never aged out.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The README instructs users to run npx browser-relay-cli without pinning an exact package version or integrity source. Because npx may fetch the latest published package at execution time, a compromised upstream package, typosquat, or malicious update could result in arbitrary code execution on the user's machine.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This command again relies on unpinned npx execution of browser-relay-cli, which can download and run whatever version is current at the time of use. In a skill centered around browser control and account automation, executing an unexpected package version is especially risky because it could gain access to browser sessions, tokens, or local data.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

npx browser-relay-cli relay-start is particularly sensitive because it starts a browser relay runtime, likely with elevated access to browser automation surfaces. If the package resolved by npx is malicious or tampered with, it could establish unauthorized browser control, harvest credentials, or manipulate user sessions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrase 刷推 is extremely broad and overlaps with normal conversational language, increasing the chance the skill activates when the user is merely talking about Twitter usage rather than intending automation. In this skill's context, accidental activation is more dangerous because the skill can initiate browser-connected onboarding and social-media actions with account access.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

刷推半小时 still lacks explicit boundaries and could match many natural-language variants, creating ambiguity about when the skill should start a semi-automated workflow. Because this skill includes browser relay control, persona learning, and interaction suggestions, mistaken activation could expose browsing context or prompt unintended account operations.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The troubleshooting section repeats the same unsafe practice by telling users to run an unpinned npx browser-relay-cli relay-start. Repetition in multiple workflow stages increases the chance users will execute a mutable third-party package, expanding supply-chain risk.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

Although status seems less privileged than relay-start, it still requires invoking an unpinned package via npx, which can execute arbitrary code before performing any status check. Any remote package execution in user environments presents supply-chain risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill description is written as a Chinese-only operational interface description, and the trigger examples and usage flows throughout the file are also exclusively in Chinese. There is no indication that users may choose another language or that the locale restriction is required for a justified region-specific purpose, which matches the language/locale policy violation category.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill explicitly instructs the agent to persist user-provided personal details and commentary history in local memory for future use. Storing personal information without clear minimization, retention limits, consent controls, and protection requirements creates privacy and data exposure risk, especially because these memory files become a durable local record that could be accessed, leaked, or misused.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill states that it only provides manual reminder templates and does not automatically install cron jobs, but later describes a scheduled daily review at 22:00 and pushing reports to the user. This inconsistency can mislead operators about the degree of automation and may normalize adding background or scheduled behavior beyond the user's explicit expectations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file contains operational instructions exclusively in Chinese, which can force a specific language on users or operators without opt-in. The policy allows locale constraints only when they are explicitly offered as a choice or clearly justified as region-specific, neither of which appears here.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The documentation repeatedly instructs operators to invoke browser-relay-cli via npx without pinning a specific version. That allows execution of whatever package version is currently resolved from the registry, creating a supply-chain risk where a compromised, typosquatted, or newly published malicious version could gain code execution on the operator's machine and browser environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

Using unpinned npx browser-relay-cli for extension-path discovery still causes arbitrary package resolution and execution before the command runs. In this skill's context, that tooling has access to browser automation and authenticated X sessions, so compromise could expose tokens, manipulate actions, or install persistent malicious extensions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

Running npx browser-relay-cli relay-start without version pinning introduces direct remote-code-execution risk through npm package resolution. Because this command starts a browser relay component, a malicious package could intercept browser traffic, scrape session data, or alter automated behavior invisibly.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

Even read-only looking commands like status require package execution first, so an unpinned npx invocation remains a supply-chain execution vector. In a browser-control skill, that risk is elevated because the tool operates near privileged local state, extensions, and authenticated web sessions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The list-tabs example uses an unpinned npx package, enabling unintended execution of a changed or malicious upstream release. Since the command enumerates live browser tabs, compromise could reveal sensitive browsing context or serve as an entry point for broader browser abuse.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

Creating a tab through an unpinned npx package exposes the operator to supply-chain compromise at the moment of execution. In this skill, the launched tool interacts with authenticated X pages, so a malicious package could redirect navigation, inject content, or harvest session artifacts.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The unpinned create-tab command again trusts the latest npm resolution at runtime. Repetition throughout the document normalizes unsafe installation and execution practices, increasing the chance that operators will run unreviewed code with browser-control privileges.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The screenshot command is presented as a harmless inspection step, but the package still executes before any screenshot is taken. An attacker controlling the resolved package version could capture arbitrary browser content or execute other local actions under the operator's user account.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.