Back to skill

Security audit

Vincent - Trade Manager

Security checks for vulnerabilities and agentic risk

Overview

This skill openly supports automated Polymarket sell rules, but it combines high-impact trading automation with repeated execution of a mutable npm CLI package.

Review carefully before installing. Use only if you understand that configured rules can automatically sell entire Polymarket positions. Prefer a pinned, reviewed @vincentai/cli version, verify market IDs, token IDs, trigger prices, policy limits, and approval settings, and monitor event logs and worker status.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:26
Finding
Unpinned Remote npm Package Execution via Mutable latest Tag<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 26–30 **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```bash npx @vincentai/cli@latest trade-manager health # Expected: {"status":"ok","version":"0.1.0"} npx @vincentai/cli@latest trade-manager status --key-id <KEY_ID> ``` The same `npx @vincentai/cli@latest` pattern is repeated for trading operations throughout `SKILL.md`, including rule creation, modification, cancellation, position retrieval, event retrieval, and Polymarket betting. ### Technical Analysis The documentation directs users or agents to execute `@vincentai/cli` directly from npm through `npx` while selecting the mutable `latest` distribution tag. The project does not include a lockfile, integrity hash, vendored executable, or exact reviewed package version. Because the npm registry controls which release the `latest` tag resolves to, the effective executable can change after this Skill has been audited. `npx` may download and immediately run that changed package with the privileges and environment of the invoking user. This is particularly sensitive because the CLI receives Vincent key identifiers and trading metadata and is used to configure automated `SELL_ALL` actions. Although the network access and trading authority are consistent with the Skill's declared functionality, retrieving an unpinned executable is not the minimum supply-chain privilege necessary to provide that functionality. A fixed, verified release would be sufficient. No evidence establishes that the current package is malicious. The vulnerability is the unsafe and mutable dependency-execution mechanism. ### Attack Path 1. An attacker compromises the npm package, a package-maintainer account, the publication pipeline, or control of the mutable `latest` tag. 2. The attacker publishes a malicious version and causes `@vincentai/cli@latest` to resolve to it. 3. A user or agent follows th ...[truncated 1373 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace `@vincentai/cli@latest` with an exact, reviewed version, for example: ```bash npx --yes @vincentai/cli@0.1.0 trade-manager health ``` 2. Verify the selected release before recommending it, and update the pinned version only after security review and compatibility testing. 3. Provide an installation workflow backed by a lockfile and npm integrity metadata. In controlled environments, use `npm ci` rather than resolving a mutable package during each invocation. 4. Where feasible, distribute a signed release or publish expected package checksums and verify them before execution. 5. Run the CLI under a dedicated, minimally privileged account with access only to the credentials and files required for trading operations. 6. Keep trading credentials out of command-line arguments when the CLI supports safer alternatives, such as protected environment injection or a restricted credential store. 7. Enforce server-side authorization, transaction limits, explicit approval requirements for high-impact sales, comprehensive audit logging, and credential revocation procedures. 8. Remove all uses of `@latest` from the documented health, status, rule-management, position, event, and betting commands so that every execution resolves to the same reviewed implementation. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (24)

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
# Trade Manager - Automated Stop-Loss, Take-Profit, and Trailing Stops

Use this skill to create automated trading rules (stop-loss, take-profit, trailing stop) for your Polymarket positions. The Trade Manager runs as part of the Vincent backend and automatically executes trades when price conditions are met.

All commands use the `@vincentai/cli` package.
Confidence
90% confidence
Finding
The skill enables autonomous decision-making by monitoring market prices and automatically executing trades when conditions are met. In a financial context, this is inherently sensitive because incorrect parameters, compromised credentials, stale pricing, or edge-case logic can cause unreviewed asset liquidation and significant monetary loss.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill promotes automated trade execution for financial positions but does not present a prominent, explicit warning that triggers may execute irreversible sell actions due to volatility, stale data, configuration errors, or fallback behavior. Because the system can autonomously liquidate positions, insufficient user warning materially increases the chance of unintended financial loss and unsafe reliance on automation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.