T09 · Insecure Skill Coding Practices
- Location
memory-template.md:8- Finding
Persistent Plaintext Storage of Sensitive Personal and Government Information
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent Valencia guide, but it asks users to store sensitive personal and government details in a persistent plaintext profile without privacy safeguards.
Before installing, treat this as a local Markdown reference, not authoritative legal or tax advice. Do not put full NIE, SIP, Social Security numbers, exact address, third-party contacts, or detailed immigration and income information into ~/valencia/profile.md; use coarse statuses or masked values, restrict file permissions, and verify visa, tax, healthcare, school, and business requirements with official sources or qualified local professionals.
memory-template.md:8Persistent Plaintext Storage of Sensitive Personal and Government Information
Referenced artifact was not completely inspected
| Overview & dining scene | `food-overview.md` |
Referenced artifact was not completely inspected
| Horarios, tipping, reservations | `food-practical.md` |
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
# Valencia — Personal Profile
## Status
<!-- Current stage of your Valencia journey -->
- **Stage**: [Researching | Planning | Moving | Settled]
- **Arrival date**: [Date or planned date]
- **Expected duration**: [Visit | 1-2 years | Long-term | Permanent]
The skill activates on essentially any Valencia-related request, which is overly broad and can cause unintended invocation on generic queries about the city. While this is not a direct code-execution issue, it can route users into the skill when a narrower or more appropriate capability should handle the request, increasing the chance of irrelevant guidance or context leakage across tasks.
The section explicitly frames learning Spanish as the expected path for integration and later tells readers not to 'only speak English' and to learn basic Spanish. This is a natural-language locale preference presented as a normative requirement rather than an optional choice, with no user opt-in or accommodation for language preference.
The homeschooling section presents a legally sensitive topic as a practical option while describing it as 'tolerated' and a 'gray area,' but it does not clearly instruct readers to verify current law or obtain official/legal advice before acting. In a relocation/education guidance skill, users may rely on this as actionable compliance guidance and could expose themselves to truancy, child welfare, or administrative consequences if the information is outdated or incomplete.
The template explicitly solicits sensitive personal and immigration-related data such as nationality, visa status, NIE status, employment details, income range, and family information without any privacy notice, minimization guidance, or safe-handling warning. In an agent memory context, this increases the risk of unnecessary collection, retention, and downstream exposure of personally identifiable and legally sensitive data.
Later sections of the template request contacts, exact address, emergency references, and document identifiers including NIE, SIP, and Social Security numbers, again without warning users about privacy implications. If persisted in memory or logs, these fields could enable identity theft, stalking, profiling, or unauthorized access to personal accounts and services.
This file gives detailed immigration, visa, residency, and tax guidance with specific thresholds, timelines, and eligibility statements, but it does not warn users that these rules can change, vary by consulate, and depend on individual circumstances. A user could rely on outdated or oversimplified information and make costly legal, travel, or tax decisions, especially because the skill presents the material as authoritative and actionable.
This file provides specific legal, tax, payroll, and compliance guidance, including rates, thresholds, deadlines, and procedural steps, without a prominent warning that these rules can change and may vary by circumstance. Users may reasonably rely on outdated or oversimplified information when forming a business, hiring staff, or filing taxes, which can lead to noncompliance, penalties, or liability.
The phrase 'Valencia's biggest draw for northern Europeans' frames the guidance around a specific audience perspective rather than neutrally presenting climate information. This is a natural-language locale/audience preference that is not offered as an opt-in or user choice.
The dedicated heading 'For Northern Europeans' gives preferential treatment to one regional audience and may conflict with language/locale neutrality expectations. While other regions are mentioned later, this sectioning still imposes a specific locale framing rather than inviting user selection.
Lines L039-L040 state that Valencians eat paella at lunch 'never dinner' and that it is 'not served individually,' presenting cultural preferences as hard rules. This is a natural-language policy concern because it dictates behavior in a rigid way rather than offering user choice or clarifying that these are traditional norms.
Lines L103-L115 provide a fixed Spanish phrase set for dietary requests, and similar sections elsewhere assume Spanish usage as the default interaction language. Because the file does not offer an explicit language choice or opt-in, this can be interpreted as a locale/language preference being imposed rather than optional guidance.
The guide highlights 'English-speaking available' as a recommendation, which can embed an implicit language preference rather than offering neutral multilingual options. Under the policy rule, natural-language content that pushes a specific language without user opt-in can be a locale-policy concern.
The guidance tells users to "Learn basic Spanish" for emergencies, which imposes a language expectation without any explicit opt-in or alternative language support. Under the stated policy, locale or language constraints should either be optional or clearly justified with user choice.
Line L299 states 'Not learning Spanish' as a common mistake, which frames use of a specific language as a normative requirement. This can be read as a language-policy preference without user opt-in or acknowledgement of alternatives.
Line L185 states 'LinkedIn profile in English' as a standalone tip, which can be read as a prescriptive language preference rather than an optional suggestion. The policy requires flagging language or locale guidance that forces a specific language without user opt-in, and this line does not offer a choice or explain when another language may be appropriate.
The file contains natural-language guidance about language use and presents Spanish as universally spoken in a way that removes nuance and user choice. Under the policy, locale or language constraints should either offer user opt-in or be clearly justified; this phrasing is overly absolute.
No suspicious patterns detected.