T02 · Agent Memory Poisoning
- Location
SKILL.md:91- Finding
Untrusted Remote Content Can Poison Persistent Agent Configuration
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is disclosed as a best-practices sync tool, but it gives a recurring workflow permission to ingest third-party content and make some persistent agent-behavior changes without explicit approval.
Install only if you are comfortable with a daily networked sync that can write local state and learning logs and may update skill metadata. Before enabling it, require explicit approval for every persistent write, disable silent cron behavior, pin or review upstream content, and replace fixed /tmp paths with private temporary files.
SKILL.md:91Untrusted Remote Content Can Poison Persistent Agent Configuration
SKILL.md:149Scheduled Synchronization Creates a Recurring External Instruction Channel
SKILL.md:36Predictable Shared Temporary Files Permit Symlink and Content-Replacement Attacks
The skill description frames behavior as fetching updates and applying lessons, but the body authorizes local modifications to agent configuration files and logs. This mismatch can cause the agent or owner to underestimate the scope of side effects, leading to unintended persistence or policy drift from externally sourced content.
The skill says it 'applies relevant lessons to this agent's own SOUL.md / AGENTS.md / HOT.md,' but later says SOUL.md and HOT.md changes always require approval. This inconsistency creates unsafe ambiguity in execution, making it more likely an agent will modify sensitive governance files based on remote content without proper consent.
The skill performs network access to external domains to retrieve content that is later used to recommend or drive local configuration changes. While outbound fetches are core to the skill's purpose, the danger comes from trusting externally hosted material as an input to governance and skill-management decisions.
curl -s "$LEARN_URL" -o /tmp/heleni-learn-current.html
curl -s "https://api.github.com/repos/netanel-abergel/pa-skills/contents/skills"
| python3 -c "import sys,json; [print(i['name']) for i in json.load(sys.stdin) if i['type']=='dir']" \
/tmp/heleni-skills-current.txt
The skill writes a persistent state file on first run and on subsequent updates without an explicit warning at invocation time. This creates unannounced local state that can affect future behavior and makes the skill more dangerous because remote content is being used to drive ongoing autonomous decisions.
The skill explicitly permits autonomous actions such as logging lessons and updating skill descriptions without asking the owner. Autonomous modification of local artifacts based on remote content expands the blast radius of bad parsing, poisoned upstream content, or accidental activation.
- Adding to HOT.md (owner should approve)
- Installing a new skill
**Can apply without asking:**
- Logging the lesson to `.learnings/heleni-sync/YYYY-MM-DD.md`
- Updating skill descriptions in skill-master
The skill allows silent logging to .learnings/heleni-sync/YYYY-MM-DD.md without clearly surfacing that persistent local data will be created. Hidden persistence is risky because it can accumulate externally derived content, metadata, or operational history without informed approval or retention controls.
The trigger phrase 'sync skills' is broad and can plausibly match unrelated maintenance requests. Overbroad activation increases the chance this networked, state-writing skill runs unexpectedly and performs external fetches or local writes outside the user's intended task.
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
RAW_BASE="https://raw.githubusercontent.com/netanel-abergel/pa-skills/main/skills"
# Fetch learn page
curl -s "$LEARN_URL" -o /tmp/heleni-learn-current.html
# Get list of active skills from GitHub
curl -s "https://api.github.com/repos/netanel-abergel/pa-skills/contents/skills" \
No suspicious patterns detected.