T02 · Agent Memory Poisoning
- Location
scripts/memory-onboarding-wizard.py:77- Finding
Default heartbeat template persistently directs access to private services
- Content
View full analysis
str: return """# HEARTBEAT.md — Periodic Checklist > The agent reads this file on every heartbeat poll. > Keep it SHORT — tokens are precious. Remove completed items. > Add time-sensitive reminders or recurring checks here. ## Active Checks (rotate through these 2-4x/day) - [ ] Email — any urgent unread messages? - [ ] Calendar — upcoming events in the next 24-48h? - [ ] Weather — relevant if your human might go out? ## Reminders *(Add one-off reminders here, remove once done)* ## Rules - If nothing needs attention → reply `HEARTBEAT_OK` - Don't check the same thing twice within 30 minutes - Late night (23:00–08:00): stay quiet unless urgent --- *Tip: Edit this file anytime to add reminders or tasks.* """ ``` ### Technical Analysis The Skill is presented primarily as a memory-system initializer, but its generated `HEARTBEAT.md` also contains persistent operational instructions directing the agent to inspect email, calendar, and weather services multiple times per day. The documentation states that the agent reads this file on every heartbeat poll. Consequently, these instructions survive the wizard process and can continue influencing later sessions. Email and calendar inspection are not necessary to create the memory files and can involve private information or external integrations. The template does not obtain explicit consent for these individual checks, define which accounts may be accessed, or constrain the permitted operations to read-only access. Whether the checks succeed depends on the tools and credentials available to the host agent. ### Attack Path 1. A user runs the memory onboarding wizard. 2. The wizard creates `HEARTBEAT.md` from the embedded template. 3. OpenClaw loads ...[truncated 831 chars]- Remediation
View remediation
