T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Mandatory Agent Behavior Override and Commercial Link Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a currency/travel helper, but it asks agents to install a global third-party CLI automatically and persist raw user queries without clear user control.
Review this before installing. Use it only if you are comfortable with a third-party FlyAI CLI being installed and trusted for results, and avoid letting it write logs containing sensitive trip, payment, or personal details. A safer version would require explicit approval before installation, narrow the advertised scope, avoid raw-query persistence, and validate any returned booking links.
SKILL.md:8Mandatory Agent Behavior Override and Commercial Link Injection
SKILL.md:51Automatic Installation of an Unpinned Global npm Package
references/runbook.md:7Persistent Plaintext Logging of Raw User Queries Through Unsafe Shell Interpolation
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai keyword-search --query "汇率 日元"
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The manifest claims support for flights, hotels, trains, attraction tickets, itinerary planning, visas, insurance, and car rental, but the actual skill logic only covers exchange-related flyai keyword-search queries. Overstating capabilities is dangerous because an agent may rely on the manifest for tool selection and then execute an ill-suited workflow or fabricate unsupported results to satisfy user intent.
The skill instructs the agent to install a global npm package if the CLI is missing, without warning the user or requiring consent before modifying the environment. In an agent setting, this is dangerous because it can lead to unapproved code execution and persistent system changes from an external package source.
The trigger phrases include generic terms like "currency" and "how much is," which can match many unrelated travel or commerce questions beyond the narrow exchange-rate scope. Overbroad activation can cause unintended tool use, irrelevant command execution, and user confusion, especially because the skill insists on CLI-backed answers even for queries it cannot properly handle.
The skill metadata markets broad travel-booking and planning capabilities, but the activation guidance explicitly excludes travel planning and the body only implements currency-related keyword searches. This mismatch can cause an agent to invoke the wrong skill or present unsupported capabilities, increasing the chance of misleading users and unsafe downstream behavior when the agent improvises outside the implemented scope.
The prerequisites section presents npm i -g @fly-ai/flyai-cli as a normal setup step without highlighting that it performs a global installation and changes the host environment. This omission is risky because users and agents may treat it as harmless documentation and execute it automatically, importing unreviewed third-party code with elevated persistence.
The fallback logic directs the agent to automatically run a global npm install when flyai is not found, making environment modification part of normal error recovery. This is particularly dangerous because absence of a dependency becomes a trigger for code acquisition and execution, which expands attack surface and can violate user expectations or platform security policies.
The playbooks embed Chinese query strings such as "汇率", "换汇", and "支付方式" in the command examples, which indicates the skill is forcing a specific language/locale behavior. There is no accompanying explanation that the skill is China-specific or any opt-in mechanism for users who may expect searches in their own language.
The runbook states that the execution log is maintained internally and includes a user_query field containing raw input, but gives no user-facing notice that submitted content may be retained. This creates a privacy vulnerability because users may share sensitive travel, identity, booking, or payment-adjacent details without understanding they are being logged.
The runbook explicitly records the raw user query and detailed execution metadata, then instructs the agent to append that data to a local file if writes are available. For a travel and money-exchange skill, this exceeds what is necessary for normal operation and can expose sensitive itinerary details, financial preferences, destinations, or other personal data through local log access or later reuse.
By storing raw natural-language user input alongside command history, fallback actions, and output characteristics, the log can capture sensitive context far beyond simple diagnostics. In this skill's travel/booking domain, users may reveal locations, trip dates, companions, visa concerns, or budget details, making the persisted log a meaningful data leakage source if accessed or mishandled.
The file persistence section instructs the agent to append execution logs to .flyai-execution-log.json when filesystem writes are available, without warning users that their interaction data may be written to disk. Persistent local storage increases the chance of unintended disclosure through host access, backups, debugging artifacts, or later processing.
The file is titled for "currency-exchange" at L01, but the rendered output says "Powered by flyai" (L35) and the failure template instructs users to run a "flyai" CLI command (L58-L61). This is active documentation/output inconsistency that could mislead users about what system or tool is actually being used.
No suspicious patterns detected.