T09 · Insecure Skill Coding Practices
- Location
setup.md:7- Finding
Persistent Plaintext Storage of Sensitive Travel and Booking Data
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Portugal travel guide is coherent, but it automatically creates and reuses a local plaintext trip memory that can include sensitive booking, family, dietary, mobility, and itinerary details without clear opt-in controls.
Review this skill before installing if you do not want a local trip profile. Do not store booking confirmation numbers, passport/payment details, exact home-away dates, or sensitive family/accessibility information in ~/portugal/memory.md unless you are comfortable with a plaintext file on disk. Consider creating the directory/file with owner-only permissions and periodically reviewing or deleting the memory file.
setup.md:7Persistent Plaintext Storage of Sensitive Travel and Booking Data
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
2. **No sunscreen because "not tropical"** — UV index high, especially Algarve
3. **Driving to Arrábida after 11:00 in summer** — Park closes when full
4. **Beach restaurant at 14:00** — Packed. Go 12:30 or after 15:00.
5. **Sintra coast without checking conditions** — Rough, dangerous currents
6. **Underestimating Nazaré waves** — Only watch from shore. Never swim in big wave conditions.
The trigger condition, 'When user mentions Portugal travel for the first time,' is broad and ambiguous, which can cause the skill to activate and begin data collection in situations where the user did not clearly request persistent setup. In this file, that matters because activation leads directly to filesystem writes and profile creation.
The skill directs creation of a local memory file and repeated updates containing user preferences without warning the user that their data will be stored on disk. Lack of disclosure and consent around persistent storage increases privacy risk and can surprise users who believe the interaction is ephemeral.
The instruction to 'Read it silently' means previously stored personal data is accessed without notifying the user at the time of access. Silent retrieval of historical profile data reduces transparency and can expose or reuse personal information in ways the user does not expect.
The phrase "Espresso. Always." is a natural-language instruction that imposes a specific consumption norm rather than offering user choice. This can be interpreted as forcing a behavior preference without opt-in, which fits the policy concern about mandatory language or locale-style constraints.
For markdown files, policy violations include language or locale constraints expressed in natural language. This content implicitly fixes the skill output to English without any opt-in or alternative language option, which can be a locale/language policy concern if users are not given a choice.
The skill explicitly instructs creating a persistent local directory and saving user trip preferences across sessions, which goes beyond what is strictly necessary for a one-off travel-guide interaction. While the data requested is not highly sensitive, it still creates retained personal profiling data without clear necessity, retention limits, or user consent.
The setup encourages ongoing storage and reuse of traveler preferences and prior trip details, enabling persistent profiling that is only loosely tied to the travel-guide purpose. In context this is not overtly malicious, but it expands data collection beyond immediate response generation and can accumulate personal behavioral data over time.
No suspicious patterns detected.