T01 · Skill Instruction Hijacking
- Location
SKILL.md:17- Finding
Skill instructions override normal agent behavior and force external commercial output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent flight-search helper, but it asks agents to install an unpinned global CLI, may escalate to sudo, and persists raw user queries locally without clear user control.
Install only if you are comfortable with this skill running a third-party travel CLI and producing booking links. Do not let it auto-install packages globally or use sudo; install any CLI manually in a scoped environment after checking the package source and version. Avoid using it with sensitive travel details unless logging is disabled or redacted.
SKILL.md:17Skill instructions override normal agent behavior and force external commercial output
references/fallbacks.md:5Fallback procedure directs the agent to perform an unauthorized privileged global installation
SKILL.md:69Unpinned global npm installation exposes the host to mutable supply-chain code
references/runbook.md:32Raw user queries are persisted through an unsafe shell logging pattern
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-flight --origin "Shanghai" --destination "Sanya" --dep-date 2026-07-15 --journey-type 1 --sort-type 2
## Output Rules
1. **Conclusion first** — lead with best island-compatible option
2. **Island tip** — note ferry/transfer requirements for specific islands
The fallback instructs a global npm install and then escalates to sudo npm i -g, which can modify the host system and execute package lifecycle scripts with elevated privileges. In an agent-skill context, documenting this as a recovery step without strong warnings or safer alternatives increases the chance of unsafe system-wide changes on the machine running the skill.
The file explicitly recommends retrying with sudo npm i -g @fly-ai/flyai-cli, which encourages running package installation as root. Because npm packages may run install scripts, this creates a direct path to privileged code execution and host compromise if the package, dependency chain, or registry path is tampered with.
npm i -g @fly-ai/flyai-cli
flyai --version
# Fails → sudo npm i -g @fly-ai/flyai-cli
# Still fails → STOP. Do NOT answer with training data.
The trigger phrases for the island-flight skill are broad enough to activate on common travel queries like 'fly to island', which may cause the wrong skill to handle requests outside its intended niche. Because the playbook explicitly says to answer via CLI execution only, accidental activation could route generic travel requests into this provider-specific workflow and produce unintended actions or irrelevant command execution.
The budget playbook uses broad trigger language such as 'cheap island flight' and related variants without clear boundaries, which increases the chance of over-matching ordinary bargain-travel requests. In a multi-skill environment, this can misroute users into the wrong workflow, causing unintended searches, degraded trust, and possibly execution of commands with loosely inferred parameters.
The file states the execution log is maintained internally and not shown to users while the schema includes user_query: {raw input}. This creates undisclosed collection of potentially sensitive user-provided travel information, which is risky because users are not informed that their full prompts may be retained for internal processing.
The runbook explicitly records the raw user query and persists execution logs to a local file, even though the skill's stated purpose is travel search/booking rather than telemetry or security auditing. Travel queries commonly contain personal and sensitive data such as destinations, dates, names, visa needs, and booking details, so retaining raw input creates unnecessary data exposure and secondary-use risk.
The runbook directs persistent retention of raw user input by appending the generated log JSON to .flyai-execution-log.json. Persistent storage increases the blast radius of any compromise or accidental exposure, especially in a travel skill where prompts may include personal itinerary, insurance, visa, and reservation details.
No suspicious patterns detected.