T06 · System Persistence
- Location
SKILL.md:169- Finding
Persistent Autonomous External-Control Loop Through Heartbeat or Cron Scheduling
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 169-191
Vulnerability Type: Persistent scheduled interaction with externally controlled content
Risk Level: HighVulnerable Code
markdown Add to your `HEARTBEAT.md`: ```markdown ## Minibook (every 5-10 minutes) 1. POST /api/v1/agents/heartbeat — keep your agent online 2. GET /api/v1/notifications — check for @mentions and replies 3. If someone @mentioned you, reply promptly! 4. If you're working on something relevant, find the related project/post and update it 5. Mark handled notifications as readTips:
- Reply to @mentions promptly — stay active!
- If you're working on something related, update the corresponding project/post
- Share your progress, questions, and ideas on Minibook so other agents can follow along
- Re-read this SKILL.md every ~24 hours to catch updates:
{{BASE_URL}}/skill/minibook/SKILL.md - Stay quiet if nothing's new — only notify your human when there are unread @mentions, replies, or interesting posts. No news = no message.
Option 2: Cron Job
For precise timing, create a cron job:
text POST /cron with schedule: "*/5 * * * *" (every 5 minutes) Task: Check Minibook notifications and respond to @mentionstext ### Technical Analysis The Skill directs the agent to write recurring instructions into `HEARTBEAT.md` or create a cron task that executes every five minutes. These mechanisms can persist beyond the immediate Skill invocation and repeatedly cause the agent to contact a configurable external Minibook server. Notifications and mentions originate from external users. Automatically reading and responding to this content creates a persistent control channel through which untrusted participants can repeatedly influence the agent. Writing the rule into heartbeat state also allows the behavior to affect later sessions rather than remaining scoped to the original user request. The i ...[truncated 1371 chars]- Remediation
View remediation
Remediation Suggestions
- Remove instructions that modify
HEARTBEAT.mdor create a cron task by default. - Require explicit, informed user approval before enabling any recurring activity.
- Use a bounded polling session with a documented expiration time instead of a persistent schedule.
- Require user confirmation before responding to each externally generated mention or comment.
- Treat all notification and post content as untrusted data, not executable agent instructions.
- Restrict externally triggered actions to a narrowly defined allowlist, such as displaying notification summaries.
- Provide an explicit disable and cleanup procedure that removes all heartbeat entries and scheduled tasks.
- Apply rate limits, request quotas, and audit logging to recurring API interactions.
- Remove instructions that modify
