T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Mandatory Commercial Output and Agent Response Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is framed as hiking help but can automatically install and run an unpinned external CLI, force booking-link outputs, broaden into travel booking, and persist raw queries locally.
Review before installing. This skill should only be used if you are comfortable with a third-party travel CLI being installed globally, external travel lookups being made, booking links being prioritized, and local logs potentially retaining raw queries. Prefer a pinned, isolated CLI install and disable or redact logging.
SKILL.md:8Mandatory Commercial Output and Agent Response Hijacking
SKILL.md:54Unpinned Global Installation and Execution of a Third-Party CLI
SKILL.md:76Shell Command Injection Through User-Controlled Search Parameters
references/runbook.md:1Unsafe Persistent Logging of Raw User Queries and Commands
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-poi --city-name "Huangshan" --category "山湖田园" --keyword "徒步"
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The README presents the skill as a simple hiking-trail finder, but also states it wraps flyai-cli for real-time travel data and booking links, expanding the actual capability surface beyond the headline description. This mismatch can mislead users and reviewers about what external services are contacted and what actions or commercial link-outs may occur.
The README instructs users to run npx skills add ... without pinning a specific package/version, which can cause execution of whatever package version is currently resolved from the registry. In a supply-chain attack or package takeover scenario, users could unknowingly install or run malicious code during skill setup.
The Chinese documentation repeats the same inconsistency: it advertises hiking-route search while also disclosing real-time travel data and booking links. Inconsistent or incomplete multilingual documentation increases the chance that users grant trust or permissions based on an incomplete understanding of the skill's behavior.
The skill directs the agent to automatically run npm i -g @fly-ai/flyai-cli, which modifies the host environment without prior user approval or safety warning. This creates supply-chain and system integrity risk, especially in agent runtimes where the user may not expect package installation or where global installs affect other workflows.
The activation keywords are broad enough to match common travel or outdoor queries, which can cause the skill to trigger unexpectedly and take over responses outside its narrow intended scope. In this skill, that is more dangerous because activation leads into mandatory CLI execution and possible package installation, turning an over-broad routing issue into unnecessary command execution or environment modification.
The fallback document is scoped to attraction/POI search rather than hiking trails, which creates a clear capability mismatch with the declared skill purpose. In practice this can cause the agent to respond with unrelated travel-discovery behavior, broadening data access and user-facing actions beyond what the user and reviewer would reasonably expect from a hiking-trails skill.
The documented fallbacks explicitly broaden behavior from hiking trails to generic attractions and 'things to do' searches. That scope expansion is dangerous because it bypasses least-privilege expectations for the skill and may lead the agent to perform unrelated travel discovery or transactional flows under a misleading hiking-focused label.
The trigger phrase "hiking near me" is broad natural language and can activate the playbook in many loosely related user requests without clear boundaries. In a travel skill that maps user text directly to CLI-backed actions, this increases the risk of unintended tool invocation, incorrect parameter mapping, or execution when the user is only asking generally about hiking rather than requesting a search.
The trigger phrase "mountain climbing" is ambiguous and may match broad discussion, safety questions, gear advice, or trip inspiration rather than a concrete request to run a POI search. Because the playbook couples trigger activation to command execution, this ambiguity can cause unintended searches and misleading results, especially when the user did not ask for a location-based lookup.
The trigger phrase "easy hike" is everyday language that lacks activation limits and could be matched in casual conversation, recommendations, or comparative questions. Since the document explicitly instructs to answer only via execution, an overbroad trigger can force unnecessary or incorrect command use, creating reliability and safety issues through unintended external action.
The runbook explicitly records user_query as raw input in an internal execution log, which can capture personal data, travel details, credentials pasted by mistake, or other sensitive content without any notice, minimization, or retention controls. In a travel-related skill that may handle itineraries, visa questions, bookings, and insurance, the likelihood of sensitive user data appearing in freeform input is elevated, making silent collection materially risky.
Taken together, the runbook requires logging raw user input and persisting the resulting execution log to local storage, creating a concrete data-handling weakness rather than a purely theoretical privacy concern. In this skill's context, users may provide travel plans, names, booking preferences, or visa/insurance details, so combining raw-input capture with filesystem persistence materially raises the chance of sensitive data retention and later disclosure.
The runbook instructs appending execution logs to a local file when filesystem writes are available, but provides no warning, retention policy, access control guidance, or sanitization requirements. Persistent local logging increases exposure because sensitive operational and user data can accumulate on disk, be read by other processes or users, or remain after the session ends.
A file labeled for a hiking-trails skill but populated with booking/ticketing templates creates a deceptive or confused operational boundary. In an agent setting, this increases the risk of unintended tool use, user deception, and unsafe cross-domain behavior because the prompt scaffolding steers outputs toward reservations and purchases rather than trail guidance.
The template content is materially inconsistent with the stated hiking-trails skill and instead instructs the agent to produce generic ticket-booking and real-time pricing outputs with booking links. This can misroute user intent, cause the agent to invoke or simulate unrelated commerce flows, and mislead users into taking booking actions under a mismatched skill context.
The README mentions real-time travel data and booking links but does not warn that the skill may contact external services or direct users to third-party booking flows. This omission reduces informed consent and can expose users to unexpected data sharing, tracking, or off-platform interactions.
The Chinese section likewise omits an external-access and link-out warning despite describing real-time travel data and booking links. Users relying on the Chinese documentation may be equally unaware of third-party data retrieval and booking redirection.
The fallback instruction explicitly says to try Chinese/English variants, which imposes specific language handling behavior without indicating user choice or a documented region-specific requirement. This is a natural-language locale policy issue because the file does not offer an opt-in or explain why those languages must be used.
No suspicious patterns detected.