T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Agent Role and Commercial Output Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel skill is mostly aligned with Tibet trip planning, but it asks the agent to install a global package automatically and persist raw user queries in a local log without clear user notice or safeguards.
Review before installing. The travel-search behavior and booking links are expected for this skill, but installation should not auto-run a global npm package without approval, and any logging should be disabled or changed to redact raw travel details and use a safe file-writing method.
SKILL.md:8Agent Role and Commercial Output Hijacking
SKILL.md:125Automatic Installation of an Unpinned Global npm Package
references/runbook.md:1Undisclosed Plaintext Persistence of Raw User Queries
references/runbook.md:35Shell Command Injection Through Interpolated JSON Logging
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-flight --origin "Chengdu" --destination "Lhasa" --dep-date 2026-06-01 --sort-type 3
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The skill's 'CRITICAL EXECUTION RULES' push the agent to install a global npm package automatically, without user confirmation or warning that this changes the host environment. Installing and executing a package from a registry expands the trust boundary to third-party code and can lead to unintended code execution or persistent system modification.
The prerequisites section instructs a global install (npm i -g) without warning that it alters the system and runs untrusted package lifecycle code. In an agentic context, this can cause silent environment changes and expose users to supply-chain risk if the package or one of its dependencies is compromised.
The workflow explicitly directs the agent to run a global npm installation automatically when flyai is missing, then immediately execute the newly installed binary. This creates a clear path for unreviewed remote code execution and persistent host modification without user approval, which is especially risky in autonomous or semi-autonomous agent environments.
The trigger phrase "Tibet trip" is broad enough to match many ordinary travel queries without clear user intent to invoke this exact playbook. In an agent setting, ambiguous activation can cause the system to run the wrong booking/planning flow, leading to unintended actions, incorrect parameter mapping, or overcollection of travel preferences.
The trigger phrase "complete Tibet" lacks clear activation boundaries and may be interpreted inconsistently across similar travel-planning requests. This increases the risk that the full multi-day itinerary flow is selected when the user intended a narrower query, which is especially problematic in a skill tied to flights, hotels, tickets, and itinerary generation.
The runbook explicitly records user_query as raw input in an internal execution log, which can capture sensitive personal, financial, travel, or identity data users may provide while booking flights, hotels, visas, or insurance. Because the log is described as internal and not shown to users, this creates undisclosed data retention and privacy risk, especially in a travel-booking context where sensitive information is likely.
The runbook combines retention of raw user_query with instructions to persist the execution log, creating a durable record of potentially sensitive travel and booking conversations. In this skill's context, users may submit passport, visa, itinerary, payment-adjacent, or insurance details, so storing full inputs materially increases privacy, compliance, and secondary exposure risks.
The runbook instructs persistent appending of execution logs to a local file, which can accumulate operational metadata and user-derived content over time without any notice, retention policy, or protection requirements. Persistent local storage increases the blast radius of compromise because sensitive queries, commands, and recovery actions may be exposed to other processes, operators, or future exfiltration.
The skill repeatedly requires every result to include a booking link derived from detailUrl (for example L014 and L186), but L203 says both 'Use detailUrl for booking links' and 'Never use detailUrl' in the same rule. This is an active contradiction in the documentation that can mislead an agent about the intended output behavior.
No suspicious patterns detected.