T09 · Insecure Skill Coding Practices
- Location
scripts/reminders.sh:61- Finding
Reminder Content Exposed Through Child Process Environment Variables
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a real macOS Reminders helper, but it needs review because it can read and create reminders while retaining reminder titles and list names in local logs with weak privacy controls.
Install only if you are comfortable letting the skill read and create Apple Reminders and keep a local plaintext action log containing reminder titles and list names. Review or disable logging, tighten file permissions, and require confirmation for ambiguous write requests before using it with sensitive personal, work, health, or financial reminders.
scripts/reminders.sh:61Reminder Content Exposed Through Child Process Environment Variables
scripts/reminders.sh:22Sensitive Plaintext Logging Without Enforced File Permissions or Symlink Protection
The skill invokes shell commands and relies on environment-derived paths like $SKILL_DIR, but it does not declare any explicit tool scope or allowed-tools boundary. That weakens least-privilege controls and makes accidental or unauthorized command execution harder to govern, especially for a skill that creates and queries user data.
The trigger language is broad enough to match ordinary conversational phrases like 'make a task' or 'flag this as important,' which can cause the skill to activate when the user did not intend to modify Reminders. In this context, mistaken activation directly creates or changes data in the user's Apple Reminders account, making the overbroad scope materially risky.
The skill documentation explains how to create and manage reminders but does not clearly warn that it will create, modify, and potentially expose user task data in their Apple Reminders account. Missing this notice increases the chance of unintended writes and weak informed consent for an action-oriented skill operating on personal productivity data.
Line L134 states that all actions are logged to logs/reminders.log with specific fields, presenting this as an implemented behavior. In this file, there is no corresponding implementation—only command examples and operational guidance—so the documentation actively overstates what the file itself does.
The instruction to log reminder actions with fields including list and name implies storing potentially sensitive user task content in plain-language logs. Reminder titles and notes often contain personal, health, financial, or work information, so routine logging creates unnecessary retention and disclosure risk if the log file is readable, backed up, or exfiltrated.
The script persistently logs reminder metadata, including reminder names and list names, to a local file without disclosing that behavior in the skill description. Reminder titles and list names often contain sensitive personal information, so this creates an unnecessary data-retention channel and increases privacy risk if local files are later accessed by other users, processes, backups, or support tooling.
Before handling any command, the script checks for the Reminders process and opens the Reminders.app GUI if it is not running. While interacting with Reminders is in scope, forcibly launching the desktop app is an extra user-visible capability beyond simple reminder creation/listing and is not disclosed in the manifest.