Back to skill

Security audit

stock-terminal

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent read-only market research integration with optional user-requested app-building guidance and no evidence of hidden, destructive, or exfiltrating behavior.

Before installing, be comfortable with the skill using a SentiSense API key for read-only market-data calls. In a built terminal, short ticker-like inputs may fetch market data, and explicit build mode may install local app dependencies and save thread history, but the artifacts disclose these behaviors and keep them user-directed.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 336)May include surrounding context.

md
home action, and `internal` is the company-resolution preflight. A recipe is not automatically
a public command merely because it appears in the budget table.

<!-- terminal-help:start -->
<!-- Generated from the versioned command contract. -->
| Command | What it opens |
|---|---|

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/commands-and-data.md (reported line 46)May include surrounding context.

md
home action, and `internal` is the company-resolution preflight. A recipe is not automatically
a public command merely because it appears in the budget table.

<!-- terminal-help:start -->
<!-- Generated from the versioned command contract. -->
| Command | What it opens |
|---|---|

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 387)May include surrounding context.

md
adds one request. Local tools add zero API requests.

<!-- terminal-budgets:start -->
<!-- Generated from the versioned command contract. -->
| Command or view | Cold | Warm | Optional | Retry max | Warm assumption |
|---|---:|---:|---:|---:|---|
| `resolve <COMPANY>` | 1 | 0 | +0 | +0 | same normalized company query cached |

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/commands-and-data.md (reported line 72)May include surrounding context.

md
adds one request. Local tools add zero API requests.

<!-- terminal-budgets:start -->
<!-- Generated from the versioned command contract. -->
| Command or view | Cold | Warm | Optional | Retry max | Warm assumption |
|---|---:|---:|---:|---:|---|
| `resolve <COMPANY>` | 1 | 0 | +0 | +0 | same normalized company query cached |

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/commands-and-data.md (reported line 94)May include surrounding context.

md
## Per-view call chains

<!-- terminal-callchains:start -->
<!-- Generated from the versioned command contract. -->
| View | Baseline chain | Optional |
|---|---|---|

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This markdown file explicitly states that natural language routes to commands, then maps broad phrases such as "What's hot today," "market today," "smart money," and especially "What's the story today" to concrete actions. These examples lack clear exclusion conditions or trigger constraints, so they could match common chat phrasing outside a deliberate stock-terminal invocation context.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The navigate recipe exposes a bare single-token command form, <TICKER>, which is likely to collide with ordinary user messages consisting of one word or acronym-like text. In a chat environment, that can cause unintended command execution and automatic market-data retrieval when the user did not explicitly intend to invoke the skill, creating prompt-routing confusion and potentially displacing the user's actual request.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · references/commands-and-data.md (reported line 22)May include surrounding context.

md
the response supplies one, separate from the host fetch time. Also retain preview and error state.
Coalesce identical in-flight requests so a tool and a widget do not pay for the same snapshot twice.
Snapshot inputs include bound selector values, including fixed query inputs such as the chart's
`timeframe: "1M"`. They are not limited to arguments typed by the user; the binding validator needs
the actual ticker and period that produced the data.

Before binding a default relative window, use [request-cache.mjs](runtime/request-cache.mjs).

Static analysis

No suspicious patterns detected.