Back to skill

Security audit

Period Tracker

Security checks for vulnerabilities and agentic risk

Overview

This period-tracking skill is purpose-aligned but should be reviewed because it persists and migrates highly sensitive reproductive-health data by default without clear upfront consent or storage hardening.

Review this skill before installing if you are not comfortable with a local agent reading, creating, moving, and exporting plaintext period, fertility, contraception, mood, and symptom records. Prefer using it only after confirming where files will live, whether legacy data should be migrated, and how your system protects or backs up that directory.

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:11
Finding

Plaintext Persistence of Highly Sensitive Health Data Without Explicit Consent or Access-Control Requirements

Content
View full analysis

Vulnerability Details

File Location: setup.md:3,11-15; related storage schemas and export behavior appear in log-template.md:3-23,32-70 and privacy.md:3-8,18-20
Vulnerability Type: Plaintext sensitive-data storage and insufficient local access controls
Risk Level: Medium

Vulnerable Code Snippets

setup.md:3

markdown
Read this on first use to load user data. Do not interview the user.

setup.md:11-15

markdown
1. Read `~/Clawic/data/period/config.yaml` if it exists. Apply its values.
2. For anything absent, use the defaults in the Configuration table of `SKILL.md` — do not ask.
   - `fertility_tracking: off`, `contraception: none`, `prediction_window: 6`, `temperature_unit: celsius`, `heads_up_days: 0`.
3. Read `~/Clawic/data/period/cycles.md` (the log) and `memory.md` (observed context). Absence is fine; start logging from what she shares now, and say once where the data lives and that export/deletion are always available (`privacy.md`).
4. If files exist at an old location (`~/period/` or `~/clawic/period/`), move them to `~/Clawic/data/period/` before reading.

log-template.md:3-23

markdown
All files live in `~/Clawic/data/period/`. Three files, three jobs: `config.yaml` = declared, `cycles.md` = the data, `memory.md` = observed.

## cycles.md — the canonical log

```markdown
# Cycle Log

## Cycle 14
start: 2026-03-27          # Day 1 = first day of full flow (never spotting)
end: 2026-04-01            # last bleeding day
length: 29                 # this Day 1 to next Day 1; fill in when the next cycle starts
flow: [d1 medium, d2 heavy, d3 medium, d4 light, d5 light, d6 spotting]   # her scale
symptoms:
  - d1 cramps moderate (ibuprofen helped)
  - d2 headache mild
  - d25 mood-low mild
notes: travel days 8-12
fertility:                 # ONLY when fertility_tracking is not off
  - d13 opk positive
  - d15 bbt-shift confirmed
text


...[truncated 3064 chars]
Remediation
View remediation

Remediation Suggestions

  1. Require explicit persistence consent. Before the first write, clearly distinguish session-only processing from durable local storage. Default to session-only operation until the user affirmatively enables persistence.
  2. Enforce restrictive permissions. Create ~/Clawic/data/period/ with mode 0700 and data files with mode 0600. Verify and repair permissions on every existing file before reading or writing.
  3. Use secure file operations. Reject symbolic links, avoid following links outside the designated directory, use atomic replacement, and validate canonical paths before migration, export, deletion, or update operations.
  4. Provide encryption at rest. Prefer an operating-system-protected secret or encrypted storage facility. If plaintext fallback is necessary, clearly disclose that limitation before enabling persistence.
  5. Minimize retained data. Allow users to disable memory.md, omit selected sensitive fields, configure retention periods, and store only information required for requested features.
  6. Harden exports. Show exports in-session by default. Before writing an export to disk, warn that it contains sensitive plaintext, require an explicit destination, and enforce owner-only permissions.
  7. Secure legacy migration. Validate ownership, permissions, and canonical paths for ~/period/ and ~/clawic/period/ before moving data. Do not overwrite existing destination files without confirmation.
  8. Document the threat model. Explain that “local” does not necessarily mean private from other accounts, malware, backups, search indexers, or synchronization software outside the Skill's control.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · log-template.md (reported line 64)May include surrounding context.

md
typical_flow: medium

## Patterns Worth Watching
<!-- e.g. "headache d1-d2 in 4 of last 5 cycles" — surface per proactivity preference -->

## Context
<!-- life-stage notes she has shared: postpartum, perimenopause markers, method changes -->

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill repeatedly frames the user as "she/her" in a highly sensitive reproductive-health context, which can misgender users and disclose incorrect assumptions about identity. In a medical-adjacent tracking skill, this can reduce trust, discourage disclosure of relevant symptoms, and create privacy/safety harms for trans, nonbinary, or other users who do not use that language.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This file gives medical triage-style guidance about contraception-related bleeding, red flags, emergency scenarios, and pregnancy-test timing, but does not explicitly warn that it is informational only and not a substitute for professional medical care. In a health-tracking skill, users may over-rely on the guidance and delay seeking urgent evaluation, especially around severe bleeding, pelvic pain, or possible pregnancy complications.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill hard-codes feminine pronouns and frames the user as 'her,' which can exclude or misgender users who menstruate but do not identify that way. In a reproductive-health context, this can reduce trust, cause distress, and lead users to disengage from important health guidance, making the issue more sensitive than in a generic lifestyle skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The section continues an exclusive gendered framing for cycle-related guidance, reinforcing the assumption that all relevant users are female. Because the skill handles intimate medical information, repeated non-optional gendered language increases the likelihood of alienation, privacy discomfort, and reduced willingness to rely on the tool for health decisions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file provides specific medication guidance, including timing, comparative efficacy, and examples of NSAIDs, while only briefly mentioning contraindications in passing and without a clear directive to consult a clinician or pharmacist before use. In a health skill, this can lead users with ulcers, asthma, kidney disease, pregnancy, anticoagulant use, or other risk factors to self-medicate unsafely or to miss urgent care escalation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This setup instructs the agent to automatically read, consolidate, and migrate highly sensitive reproductive-health data from multiple filesystem locations without first obtaining explicit user consent at runtime or providing a clear upfront disclosure before access. In a period-tracking skill, that data can reveal intimate health status, sexual activity, fertility intent, contraception use, and possible pregnancy-related inferences, so silent loading and migration materially increases privacy and confidentiality risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

Natural-language policy violations apply to all file types, including markdown. This file consistently frames the user as 'she/her' rather than using neutral language or indicating that wording can be adapted to user preference, which may conflict with organizational language-choice policies.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The content repeatedly uses 'she' and 'women,' which can force a gendered framing onto users who menstruate but do not identify that way. While not a classic exploit vector, it can reduce trust, cause user alienation, and increase the chance that some users disengage from medically relevant guidance.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.