Back to skill

Security audit

Expat Companion

Security checks for vulnerabilities and agentic risk

Overview

This relocation-planning skill is coherent and non-executable, but it under-discloses that it stores sensitive move, visa, family, and document-location details in local plaintext files.

Review this before installing if you are comfortable with the agent keeping local Markdown notes about your international move. Avoid storing passport numbers, visa identifiers, scans, exact document locations, or highly personal family details unless you intentionally want them saved; periodically inspect and delete ~/expat/ files you no longer need.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
setup.md:59
Finding
Plaintext Persistence of Sensitive Relocation and Identity-Document Metadata## Vulnerability Details **File Location**: `setup.md:59-70`; `memory-template.md:13-29`; `memory-template.md:51-57`; `SKILL.md:151-158` **Vulnerability Type**: Plaintext sensitive-data storage and inaccurate privacy assurances **Risk Level**: Medium ### Vulnerable Code `setup.md:59-70`: ```markdown ## What You're Saving (internally) After the conversation, create `~/expat/memory.md` with: - Move status and phase - Origin and destination countries - Target timeline and key dates - Visa status and type - Family/logistics situation - Their main concerns - Reminder preferences Also create `~/expat/documents.md` if they mentioned any document status. ``` `memory-template.md:13-29`: ```markdown ## The Move origin: destination: target_date: visa_type: visa_status: exploring | applied | approved | denied ## Situation solo: yes | no family: pets: belongings: minimal | moderate | full household ## Key Dates <!-- Add dates as they're established --> - Visa application deadline: - Lease end date (origin): - Flight booked: - Registration deadline (destination): ``` `memory-template.md:51-57`: ```markdown ## Personal Documents | Document | Status | Expiry | Location | Notes | |----------|--------|--------|----------|-------| | Passport | | | | | | Birth certificate | | | | | | Marriage certificate | | | | | ``` `SKILL.md:151-158`: ```markdown **Data that stays local:** - All personal documents and notes in ~/expat/ - No external services or APIs used **This skill does NOT:** - Store passport numbers or sensitive data in plain text - Access files outside ~/expat/ - Share any information externally ``` ### Technical Analysis The skill directs the agent to collect and persist a detailed relocation profile in ordinary Markdown files under `~/expat/`. Stored fields include origin and destination countries, target travel dates, visa t ...[truncated 2691 chars]
Remediation
## Remediation Suggestions 1. Obtain explicit user consent before persisting relocation, visa, family, or document metadata. 2. Apply data minimization. Do not store physical document locations, exact travel dates, family details, or document expiry dates unless required and explicitly requested. 3. Create files with restrictive owner-only permissions and verify that the `~/expat/` directory is not readable by other local users. 4. Offer encrypted storage or integration with an operating-system-backed secure storage mechanism for sensitive fields. 5. Separate general planning notes from sensitive identity-document metadata and protect the latter more strongly. 6. Add configurable retention periods, secure deletion controls, and a command that lets users inspect and erase all stored information. 7. Redact or generalize values where exact data is unnecessary, such as storing only the month of travel or a warning that a document expires soon. 8. Do not record passport numbers, visa identifiers, national identification numbers, financial account details, authentication secrets, or document scans in Markdown. 9. Update the privacy documentation so it accurately states which sensitive metadata may be stored, where it is stored, how it is protected, and who may be able to access it. 10. Warn users that “stored locally” does not mean encrypted or inaccessible to other software running under their account.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Hidden Instructions

High
Category
Prompt Injection
Content
belongings: minimal | moderate | full household

## Key Dates
<!-- Add dates as they're established -->
- Visa application deadline: 
- Lease end date (origin): 
- Flight booked:
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The 'When to Use' section describes the skill broadly as applying whenever a user is planning or executing an international move, but it does not define concrete trigger phrases, scope boundaries, or exclusion examples. This could cause unintended invocation for general travel, visa, or document discussions that only partially overlap with relocation planning.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The setup instructs the skill to persist sensitive relocation data such as origin/destination countries, visa status, family situation, concerns, and document status into local files without directing the agent to obtain explicit user consent or clearly disclose retention behavior. This creates a real privacy and data-handling risk because highly personal information may be stored longer than the user expects and could later be exposed to other tools, users on the same system, or future sessions.

Static analysis

No suspicious patterns detected.