T09 · Insecure Skill Coding Practices
- Location
scripts/love.py:49- Finding
Relationship Data Stored and Exposed Without Adequate Privacy Controls
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a coherent holiday and relationship reminder, but it stores intimate relationship details locally and may send reminder content to Feishu without strong privacy controls.
Install only if you are comfortable storing relationship dates and names in a plaintext local file and, if reminders are enabled, potentially sending reminder text through Feishu. Prefer using a private machine/account, review or restrict ~/agent-memory/love.json permissions, and avoid enabling Feishu delivery for sensitive reminders unless the destination is private.
scripts/love.py:49Relationship Data Stored and Exposed Without Adequate Privacy Controls
This second mismatch finding highlights the inverse problem: the document advertises harmless query features while also introducing storage of sensitive relationship information in ~/agent-memory/love.json without clearly declaring that behavior in a permission model. Such discrepancies reduce transparency and can lead to collection or retention of personal data outside user expectations.
This second mismatch finding highlights the inverse problem: the document advertises harmless query features while also introducing storage of sensitive relationship information in ~/agent-memory/love.json without clearly declaring that behavior in a permission model. Such discrepancies reduce transparency and can lead to collection or retention of personal data outside user expectations.
The skill asks the agent to collect and store sensitive relationship data including partner name, anniversary, birthday, and custom milestones, but provides no privacy warning, retention notice, or consent mechanism. Because these are intimate personal details, silent collection and local persistence materially increase privacy risk if the data is mishandled, exposed, or accessed by other components.
The cron reminder section configures delivery via Feishu and may send intimate reminders such as anniversaries and birthdays, yet it does not warn the user that personal relationship information could be transmitted to an external messaging channel. This creates a real confidentiality risk, especially if the Feishu destination is shared, misconfigured, or monitored by others.
The skill instructs the agent to directly read and write local files such as ~/agent-memory/love.json, but it does not declare any explicit tool scope or permissions. This creates a hidden capability gap where the runtime may permit file access without the user or platform clearly understanding that sensitive personal data will be persisted locally.
The trigger wording is very broad, allowing activation on essentially any holiday- or relationship-related question. Overbroad routing increases the chance the skill is invoked in contexts where users did not intend relationship data collection, file persistence, or reminder setup, which can expand exposure of sensitive personal information.
The manifest describes both Chinese holiday functions and a romance assistant module with anniversary countdowns, birthday reminders, custom anniversaries, and romantic festival reminders. This script contains only static holiday calendar data and CLI operations for holiday/workday lookup, next holiday, calendar display, and alerts; there is no code for relationship anniversaries, birthdays, or custom reminder management.
This code hardcodes Chinese-language strings throughout its CLI output and labels the tool specifically as a Chinese holiday helper, with no option for users to select another language or locale. The policy for all file types calls for flagging language/locale constraints when they force a specific language without user opt-in.
The skill's user-facing strings, holiday names, prompts, help text, and tips are predominantly in Chinese, and there is no opt-in or alternative language path. This creates a natural-language policy concern because the skill effectively imposes a specific language/locale on users without explicit choice or justification.
The script stores highly sensitive personal relationship data, including partner name, anniversaries, birthdays, and custom dates, in a predictable plaintext JSON file under the user's home directory without any privacy notice, permission hardening, or encryption. In the context of an agent skill, this increases the risk of unintended disclosure to other local users, backup systems, logs, or other components that can access the same filesystem.
No suspicious patterns detected.