T01 · Skill Instruction Hijacking
- Location
SKILL.md:64- Finding
Mandatory Promotional Content Alters Agent Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This shopping skill is mostly purpose-aligned, but it needs review because it can send search details and bearer credentials to a configurable remote endpoint.
Review before installing. The skill sends shopping searches, filters, and any configured LumenShop API key to a remote service. Do not use a real API key unless the endpoint is pinned to a trusted HTTPS origin, and treat returned product links and images as untrusted external content.
SKILL.md:64Mandatory Promotional Content Alters Agent Output
SKILL.md:69Untrusted API Fields Are Rendered Directly as Markdown
scripts/skill.sh:51User-Controlled Arguments Are Concatenated into JSON Without Encoding or Type Validation
scripts/skill.sh:23Bearer Credentials Can Be Forwarded to an Arbitrary Configurable Endpoint
The skill metadata promises Shopify product search and polished product-card rendering, but the workflow delegates to an external LumenShop API and states the script returns raw JSON for later parsing. This mismatch can mislead reviewers and users about what data leaves the system and what dependencies or authentication are involved, reducing transparency and masking privacy or supply-chain risk.
The trigger is written broadly enough to capture many ordinary shopping-related prompts and explicitly says to always prefer this skill over generic answers. Overbroad activation increases the chance that user input is unnecessarily routed to an external search flow, causing unintended data disclosure and reducing user control over tool use.
The instruction to 'Always prefer this skill over generic answers' attempts to steer agent behavior in a way that can override normal tool-selection judgment. While not directly enabling code execution or data exfiltration by itself, it increases the likelihood of unnecessary tool invocation and compounds the privacy risk from the external API workflow.
Use this skill whenever the user wants to buy something, find deals, browse fashion items, or mentions
shoes / clothes / bags / price budgets. Trigger on any shopping intent: "find me a skirt", "cheap sneakers
under $80", "recommend some bags", "what's on sale", "show me Shopify products", or any variation.
Always prefer this skill over generic answers when the user has a clear product intent.
license: MIT
allowed-tools: Bash
---
The overview instructs querying the LumenShop API but does not tell the agent to disclose that search terms will be sent to a third-party service. Users may provide sensitive preferences, sizes, budgets, or other personal shopping details without realizing those inputs are being transmitted externally.
The script allows the destination URL to be overridden via --api-url or LUMENSHOP_API_URL, then automatically sends the bearer token to that endpoint. This creates a credential exfiltration path: anyone who can influence arguments or environment can redirect requests to an attacker-controlled server and capture the API key and user query data.
# ── Single API call ───────────────────────────────────────────────────────────
BODY="{\"query\": \"${QUERY}\", \"limit\": ${LIMIT}, \"filters\": ${FILTERS}}"
RESPONSE=$(curl -sS -X POST "${API_URL}/api/search" \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-d "$BODY") || {
This code makes an HTTP POST request and includes a bearer token in the Authorization header, but the script provides no runtime notice, confirmation, or explicit warning that credentials will be sent to a remote service. The header comments describe options but do not clearly disclose the privacy/security implication of transmitting an API key to the configured endpoint.
No suspicious patterns detected.