Back to skill

Security audit

Heartbeats

Security checks for vulnerabilities and agentic risk

Overview

This skill openly enables proactive heartbeat behavior, but it gives the agent broad autonomous access to private data, persistent memory, and repository publishing without clear approval gates.

Review this carefully before installing. It may be useful for a deliberately proactive assistant, but you should only use it where the agent is allowed to read connected personal sources and modify workspace memory. Require explicit approval before commits, pushes, external messages, HEARTBEAT.md edits, and MEMORY.md deletions or rewrites.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (3)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:30
Finding
Excessive Autonomous Access and Unapproved Repository Modification## Vulnerability Details **File Location**: `SKILL.md`, lines 30-34 and 57-63 **Vulnerability Type**: `T05: Unauthorized Access and Privilege Escalation` **Risk Level**: High **Vulnerable Code Snippet**: ```markdown **Things to check (rotate through these, 2-4 times per day):** - **Emails** - Any urgent unread messages? - **Calendar** - Upcoming events in next 24-48h? - **Mentions** - Twitter/social notifications? - **Weather** - Relevant if your human might go out? ``` ```markdown **Proactive work you can do without asking:** - Read and organize memory files - Check on projects (git status, etc.) - Update documentation - Commit and push your own changes - **Review and update MEMORY.md** ``` ### Technical Analysis The Skill authorizes an agent to access private communications, calendars, social notifications, project repositories, and persistent memory without requiring explicit approval for each operation. It also permits the agent to modify documentation and commit and push changes autonomously. These instructions violate least-privilege principles by combining broad read access to sensitive resources with write access to local and remote repositories. No resource allowlist, repository scope, branch restriction, confirmation requirement, or validation process is specified. The ability to push changes is particularly sensitive because it allows a heartbeat-triggered workflow to affect shared remote systems. ### Attack Path 1. A heartbeat poll activates the Skill. 2. The agent follows the periodic-check instructions and accesses connected email, calendar, social, memory, or repository resources. 3. Untrusted or misleading content in one of those resources influences the agent's decisions. 4. The agent updates documentation or other project content based on that information. 5. Under the authorization to act “without asking,” the agent commits and pushes the changes. 6. Unreviewed changes consequent ...[truncated 586 chars]
Remediation
## Remediation Suggestions - Make access to email, calendars, social accounts, memory, and repositories individually opt-in. - Define explicit resource, account, repository, and branch allowlists. - Default periodic checks to read-only access and request confirmation before accessing newly connected resources. - Require explicit user approval before modifying project files, committing changes, pushing branches, opening pull requests, or sending external communications. - Prohibit direct pushes to protected or shared branches. - Use a staged workflow in which the agent presents a diff and justification for review before any commit. - Apply least-privilege credentials, short-lived authorization, and comprehensive logging for all accesses and repository mutations. - Treat content retrieved from external communications as untrusted data and prevent it from becoming operational instructions.

T02 · Agent Memory Poisoning

Error
Location
SKILL.md:13
Finding
Autonomous Modification of Persistent Instructions and Long-Term Memory## Vulnerability Details **File Location**: `SKILL.md`, lines 13-14, 36-44, and 65-76 **Vulnerability Type**: `T02: Agent Memory Poisoning` **Risk Level**: High **Vulnerable Code Snippet**: ```markdown You are free to edit `HEARTBEAT.md` with a short checklist or reminders. Keep it small to limit token burn. ``` ```markdown **Track your checks** in `memory/heartbeat-state.json`: ```json { "lastChecks": { "email": 1703275200, "calendar": 1703260800, "weather": null } } ``` ``` ```markdown ### 🔄 Memory Maintenance (During Heartbeats) Periodically (every few days), use a heartbeat to: 1. Read through recent `memory/YYYY-MM-DD.md` files 2. Identify significant events, lessons, or insights worth keeping long-term 3. Update `MEMORY.md` with distilled learnings 4. Remove outdated info from MEMORY.md that's no longer relevant Think of it like a human reviewing their journal and updating their mental model. Daily files are raw notes; MEMORY.md is curated wisdom. ``` ### Technical Analysis The Skill permits the agent to edit `HEARTBEAT.md`, write heartbeat state, update long-term memory, and remove existing memory entries without user review. `HEARTBEAT.md` is especially sensitive because it contains instructions consumed by future heartbeat executions, while `MEMORY.md` can influence behavior across later sessions. The Skill does not define provenance checks, trust boundaries, schema validation, integrity controls, approval requirements, or separation between external data and persistent instructions. Consequently, information obtained from email, social notifications, repositories, or daily memory files can be persisted as future behavioral guidance. ### Attack Path 1. The agent retrieves untrusted content during an email, social, project, or other heartbeat check. 2. The content contains misleading statements or instruction-like text intended to influence the agent. 3. Dur ...[truncated 1085 chars]
Remediation
## Remediation Suggestions - Require explicit user approval before modifying `HEARTBEAT.md` or deleting and rewriting entries in `MEMORY.md`. - Treat email, social notifications, web content, repository text, and other externally obtained material as untrusted data. - Prohibit copying external instructions or instruction-like content into persistent memory. - Separate operational instructions from factual memory using distinct files, schemas, and access controls. - Record source provenance, creation time, confidence, and author for every proposed long-term memory entry. - Present memory changes as a reviewable diff before applying them. - Preserve version history and backups so unauthorized or inaccurate changes can be reverted. - Restrict automated state writes to a validated data-only schema such as timestamp fields in `heartbeat-state.json`. - Prevent state files from containing free-form instructions. - Use integrity checks and size limits for persistent instruction files.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:46
Finding
Unsolicited Time-Triggered Agent Outreach## Vulnerability Details **File Location**: `SKILL.md`, lines 46-51 **Vulnerability Type**: `T09: Insecure Skill Coding Practices` **Risk Level**: Medium **Vulnerable Code Snippet**: ```markdown **When to reach out:** - Important email arrived - Calendar event coming up (<2h) - Something interesting you found - It's been >8h since you said anything ``` ### Technical Analysis The Skill authorizes proactive communication based on broad and subjective conditions. In particular, the passage of eight hours is treated as sufficient justification for outreach, even when there is no user request, urgent event, or new information. No explicit consent check, approved-recipient list, destination allowlist, rate limit, message-preview requirement, or per-channel restriction is defined. The criterion “Something interesting you found” is also subjective and could cause externally supplied content to trigger unnecessary communication. ### Attack Path 1. A heartbeat executes after the agent has been silent for more than eight hours, or the agent encounters content it considers interesting. 2. The agent interprets the condition as authorization to initiate contact. 3. If a connected delivery channel is available, the agent sends a message without obtaining contemporaneous user approval. 4. Repeated heartbeat executions or manipulated external content may cause additional unwanted outreach. ### Impact Assessment The behavior may generate unsolicited messages, expose activity patterns, disturb users during unintended periods, or create spam and reputational risk through connected channels. If message content incorporates sensitive context from email, calendars, repositories, or memory, unintended disclosure may also occur. The scope depends on the communication channels and recipients accessible to the agent. The Skill does not itself establish channel or recipient restrictions.
Remediation
## Remediation Suggestions - Remove silence duration as an independent trigger for communication. - Require explicit opt-in for proactive outreach and configure approved channels and recipients. - Restrict automatic notifications to clearly defined, high-confidence events. - Replace subjective triggers such as “something interesting” with narrowly scoped, user-configured criteria. - Apply per-channel rate limits, quiet hours, deduplication, and notification cooldowns. - Require message previews and confirmation before sending content externally unless the user has explicitly authorized a specific automated notification. - Minimize included sensitive context and redact private data from proactive messages. - Log notification triggers, recipients, channels, and delivery outcomes for review.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill authorizes proactive work `without asking`, including checking projects, updating documentation, committing/pushing changes, and updating memory files. Granting autonomous write and publication actions without an approval gate creates a strong risk of unintended repository modification, data leakage, persistence, and user-surprising behavior.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The heartbeat activation condition relies on a message matching a configured prompt and then instructs the agent to read and follow `HEARTBEAT.md` strictly, but the matching and trust boundaries are underspecified. Ambiguity in when the skill activates and what content it must obey can let untrusted workspace content steer autonomous behavior in unexpected ways.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill says the agent is free to edit `HEARTBEAT.md` without requiring a user-visible notice or approval. Silent modification of control files can change future agent behavior, create persistence, and make it harder for users to understand why the agent is acting differently over time.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill encourages recurring background access to emails, calendar, social mentions, and weather without any privacy warning, consent workflow, or data-minimization rule. Because these are personal data sources, periodic autonomous reads can expose sensitive information and normalize surveillance-like behavior beyond the user's expectations.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- Nothing new since last check
- You just checked <30 minutes ago

**Proactive work you can do without asking:**
- Read and organize memory files
- Check on projects (git status, etc.)
- Update documentation
Confidence
90% confidence
Finding
The phrase `without asking` signals autonomous decision-making for project and memory maintenance tasks. In this context, autonomy is risky because the skill also includes file edits and repository operations, allowing the agent to take consequential actions without contemporaneous human review.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The skill explicitly authorizes `Commit and push your own changes` during heartbeat-driven proactive work, which expands a maintenance/checking skill into autonomous source-control publication. This is dangerous because heartbeat triggers are periodic and loosely scoped, so the agent could publish unintended, sensitive, or unreviewed modifications without a clear user approval step.

Static analysis

No suspicious patterns detected.