Back to skill

Security audit

Robinhood for Agents

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for Robinhood trading, but it gives an unpinned third-party package access to OAuth tokens, sensitive account data, and live trade execution.

Install only if you trust the robinhood-for-agents package and its publisher. Treat outputs as sensitive financial records, avoid logging raw account JSON, require explicit human confirmation for every order or cancel action, and revoke the Robinhood session if package integrity or machine access is uncertain.

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

Error
Location
SKILL.md:6
Finding

Unpinned Third-Party Package Executes with Access to Financial Credentials and Trading Functions

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:6-9; related execution and authentication workflow at setup.md:14-22
Vulnerability Type: Unpinned third-party dependency with access to sensitive OAuth tokens and financial operations
Risk Level: High

Vulnerable Code

SKILL.md:6-9:

yaml
install:
  - kind: node
    package: robinhood-for-agents
    bins: [robinhood-for-agents]

setup.md:14-22:

bash
### Step 2: Browser Login
```bash
bunx robinhood-for-agents login

This opens Chrome to the real Robinhood website:

  1. Chrome opens to robinhood.com/login
  2. User enters email and password
  3. Robinhood handles MFA natively (push notification, SMS, etc.)
  4. Token captured automatically and saved securely
  5. Chrome closes when login is complete
text

### Technical Analysis

The Skill installs and executes `robinhood-for-agents` without specifying an exact package version or integrity hash. The `bunx` authentication command may therefore resolve and execute whichever package version the registry currently serves.

This dependency occupies a highly privileged trust position. According to the documented workflow, it intercepts Robinhood OAuth traffic, captures an authenticated token, stores or restores that token through the operating-system keychain, reads sensitive financial information, and exposes methods capable of placing or cancelling stock, option, and cryptocurrency orders.

The audited project contains only Markdown instructions and API documentation; it does not include the dependency source, a lockfile, package integrity metadata, or a reproducible build record. Consequently, the dependency's implementation, outbound destinations, token handling, and enforcement of order safeguards cannot be verified from the audited artifact. A malicious or compromised future release could execute before any reviewed version boundary protects the user.

Network access and possession o
...[truncated 2470 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin robinhood-for-agents to an exact, reviewed version rather than resolving the latest registry release.
  2. Commit a lockfile containing cryptographic integrity values and require frozen-lockfile installation so dependency resolution cannot drift.
  3. Prefer a vendored or otherwise locally reviewable implementation for the authentication and trading client, especially the browser interception and keychain code.
  4. Publish signed release artifacts, package provenance, and reproducible build instructions. Verify signatures and integrity before execution.
  5. Audit all transitive dependencies and use automated dependency monitoring for publisher changes, known vulnerabilities, and unexpected release activity.
  6. Restrict outbound network access to explicitly documented Robinhood domains during authentication and API use. Deny arbitrary third-party destinations where the execution environment supports egress controls.
  7. Separate authentication, read-only portfolio access, and trade execution into distinct capabilities. Do not expose order methods to workflows that only require research or portfolio retrieval.
  8. Enforce confirmation and account-selection requirements in a trusted wrapper outside the third-party dependency, rather than relying only on Markdown instructions.
  9. Avoid printing complete account-profile, account-number, or portfolio responses unless specifically required. Redact sensitive fields before presenting results or retaining logs.
  10. Document token revocation procedures and advise users to revoke the Robinhood session immediately if dependency integrity is uncertain.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · setup.md (reported line 40)May include surrounding context.

md
## Security Warning
After successful login, **always** remind the user:

> **Robinhood OAuth tokens are stored in the OS keychain (macOS Keychain Services, Linux libsecret, Windows Credential Manager) via Bun.secrets. No tokens are written to disk. Tokens expire after ~24 hours. Anyone with access to this machine's keychain can read them.**

## Notes
- No credentials (username/password) pass through the tool layer — login happens on the real Robinhood website

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The example retrieves highly sensitive financial data, including holdings, account details, cash, and crypto positions, and immediately prints the full JSON payload to stdout. In an agent setting, stdout is often logged, surfaced to users, stored in transcripts, or forwarded to other tools, which can expose account numbers and portfolio information without any privacy warning, minimization, or redaction guidance.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The browser login tool explicitly states that it opens Chrome and captures OAuth tokens automatically, but provides no warning about sensitive credential material, token scope, storage, logging, or handling requirements. In an agent ecosystem, undocumented automatic token capture is dangerous because integrators may expose or persist tokens insecurely, enabling account takeover and unauthorized access to brokerage and personal financial data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This reference documents live order placement and cancellation capabilities for stocks, options, and crypto without any explicit warning that these actions can trigger real financial transactions, losses, tax consequences, or partially irreversible market effects. In an agent skill, exposing trading primitives without prominent safety and confirmation guidance increases the risk that an LLM or downstream integrator invokes them casually, misunderstands them as simulation-only, or executes harmful trades on behalf of a user.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The workflow and example show retrieving holdings and open option positions from a Robinhood session, which exposes sensitive financial account data. The markdown describes how to do this but does not include any explicit warning or privacy disclosure around accessing brokerage holdings/positions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This markdown file includes executable code that restores a Robinhood session and makes multiple API requests, which implies use of authenticated account context and network transmission. The surrounding skill description does not warn the user that running the snippet will access their broker session and fetch remote data.

Content

No source excerpt is available for this finding.