Back to skill

Security audit

Mood Checkin

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent and not malicious, but it automatically stores and packages sensitive emotional check-in data in ways users should review carefully before installing.

Install only if you are comfortable with the skill saving emotional check-ins and derived patterns to a local `mood-checkin-profile.json` file. Use it in a private directory, avoid committing or syncing that file, and treat screenshot-style reports, archetypes, and wrapped summaries as sensitive personal information.

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
SKILL.md:35
Finding

Plaintext Persistence of Sensitive Emotional-Health Data

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 35–64
Vulnerability Type: Plaintext storage of sensitive user data
Risk Level: Medium

Vulnerable Code

markdown
At the **start of every session**, read the file `mood-checkin-profile.json` in the current working directory using the Read tool. If it exists, load the user's profile. If not, treat them as a new user.

At the **end of every session**, write an updated `mood-checkin-profile.json` using the Write tool. Schema:

```json
{
  "sessionsCompleted": 0,
  "currentStreak": 0,
  "longestStreak": 0,
  "lastSessionDate": null,
  "solGrowthStage": 1,
  "moodHistory": [],
  "archetypeHistory": [],
  "currentArchetype": null,
  "weeklyMoods": [],
  "monthlyData": {
    "month": null,
    "checkins": 0,
    "avgMood": null,
    "topEmotions": [],
    "moodByDay": {},
    "patterns": []
  }
}

Profile rules

  • Mood history: Append each check-in: { "date": "2026-03-31", "rating": 3, "emotion": "restless", "weatherReport": "Partly cloudy with scattered overthinking", "mode": "checkin" }. Keep last 30 entries.
  • Streak tracking: Increment if last session was yesterday or today. Reset to 1 if more than one day gap. Update longestStreak if current exceeds it. Streak drives Sol's growth stage (see Sol Growth below).
  • Weekly moods: Track the last 7 check-ins for archetype calculation.
  • Monthly data: Aggregate for the Monthly Wrapped feature. Reset when the month changes.
text

Additional mandatory writes and processing occur at `SKILL.md`, lines 163–164, 354–398, and 555–560.

### Technical Analysis

The skill requires automatic storage of mood ratings, emotions, emotional summaries, inferred patterns, archetypes, and usage history in a predictable plaintext file named `mood-checkin-profile.json` in the current working directory.

This information is sensitive because it can reveal a user's emo
...[truncated 1730 chars]
Remediation
View remediation

Remediation Suggestions

  1. Require explicit, informed opt-in before enabling cross-session persistence.
  2. Support a non-persistent mode and provide commands to inspect, export, disable, and permanently delete stored data.
  3. Store profiles in a dedicated per-user application-data directory rather than the current working directory.
  4. Create storage directories and files with owner-only permissions, such as 0700 for directories and 0600 for files on compatible systems.
  5. Encrypt sensitive profile contents at rest using operating-system credential storage or a properly managed per-user key.
  6. Minimize collection by retaining only fields necessary for requested functionality. Avoid storing free-form emotional text unless the user specifically opts in.
  7. Define and enforce a retention period for mood entries and derived emotional information.
  8. Warn users if the selected storage location is shared, synchronized, or inside a source-control repository.
  9. Validate the profile against a strict schema before loading it. Reject unexpected fields, excessive data, malformed types, and unsupported versions.
  10. Verify file type and ownership where the platform permits, and reject symbolic links or files owned by another user to reduce profile substitution risks.
  11. Use atomic writes and avoid following symbolic links when creating or updating the profile.
  12. Clearly disclose what information is stored, where it is stored, how long it is retained, and who may be able to access it.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (5)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill persistently stores highly sensitive mental-health and emotional data, including mood history, archetypes, and longitudinal patterns, in a local JSON profile without any user-facing privacy notice, consent step, retention disclosure, or minimization. Because this data can reveal crisis states, habits, and intimate reflections over time, silent collection materially increases privacy and safety risk if the file is later accessed by other tools, users, malware, or shared environments.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The profile design normalizes ongoing collection and reuse of sensitive emotional disclosures under a friendly wellness framing, but the stored fields enable profiling of the user's mental state across time. This creates a meaningful surveillance-like risk because repeated check-ins, streaks, archetypes, and mood history can be used to infer vulnerability, stress cycles, and other private traits beyond the user's immediate intent.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill explicitly instructs the agent to generate screenshot-friendly weather reports from the user's emotional state, making private disclosures easy to externalize and reshare. Even if sharing is user-initiated, packaging sensitive mood content into polished, viral artifacts increases the chance of accidental exposure, coercive sharing, or redistribution beyond the original context.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The 'Read Me' mode is designed to solicit intimate information through repeated probing and then transform it into a compact screenshot-ready interpretation. In the context of emotional wellness, this is especially risky because it encourages disclosure of vulnerabilities and reframes them into a portable summary that may expose the user's mental state, avoidance behaviors, and stressors if viewed by others.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The archetype and monthly recap features aggregate multiple sessions of sensitive emotional data into outward-facing summaries and labels, which can reveal long-term patterns about mood, distress, social behavior, and coping style. This increases risk beyond single-session disclosure because summarization and categorization make private attributes easier to interpret, persist, and share with third parties.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.