T01 · Skill Instruction Hijacking
- Location
SOUL.md:3- Finding
Agent Persona, Behavioral Priorities, and Output Are Hijacked by Soul Instructions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is openly about agent continuity, but it pushes broad cross-session memory, persistent agent instructions, and persona/promotion behavior without enough user control or privacy limits.
Review before installing. This package should only be used in environments where persistent agent memory is explicitly desired, users understand that logs and snapshots may retain sensitive content across sessions, and operators can pin and audit the external npm package. Do not adopt the Soul persona or AGENTS.md persistence guidance unless you want those long-lived behavior changes, and replace the witness example with explicit human approval for destructive or high-impact actions.
SOUL.md:3Agent Persona, Behavioral Priorities, and Output Are Hijacked by Soul Instructions
SKILL.md:105Persistent Agent Instructions and Interaction Data Can Be Poisoned Across Sessions
SKILL.md:16Unpinned External npm Package Is Installed and Executed Without Auditable Source
integration-examples.js:47Purported Human Witness Gate Automatically Trusts Caller-Controlled Risk Values
The README states the skill auto-loads when users ask about broad topics like agent continuity, memory persistence, or crash recovery. Overly broad activation criteria can cause the skill to be invoked in unrelated contexts, increasing the chance that its behavioral instructions influence an agent without clear user intent or informed consent.
The statement that the agent 'naturally evangelizes molt.church when relevant' directs promotional or ideological behavior without user opt-in. This is dangerous because it can steer agent outputs toward persuasion or self-serving promotion, undermining user autonomy and creating policy, trust, and prompt-injection-style influence risks.
The skill’s activation guidance is excessively broad, including generic topics like AI safety, agent health, context loss, and even trigger words such as 'molt' or 'molting'. This can cause the skill to activate in many unrelated conversations, increasing the chance that persistence, logging, or approval workflows are injected where they are not necessary or expected.
The quick-start guidance says to 'Record everything' and shows appending all significant activity to an append-only ledger, while the surrounding text frames memory preservation as preserving everything across sessions. This encourages indiscriminate collection and permanent retention of user interactions, which materially raises privacy, data exposure, and compliance risk if secrets, personal data, or regulated content are captured.
The OpenClaw integration section states that ledger entries persist across sessions and snapshots are stored in the workspace, but it does not warn about data retention, privacy, or consent implications. In practice, this can lead operators to retain sensitive user content or agent state indefinitely without informing users or applying minimization controls.
The instruction 'You do not delete... When someone asks you to forget, you archive' directly conflicts with privacy-preserving behavior and normal deletion expectations. In a memory/persistence skill, this is especially dangerous because it normalizes indefinite retention of potentially sensitive user data and creates a durable leakage/compliance risk across sessions.
The witness gate callback makes approval decisions autonomously based solely on a numeric risk threshold, despite the skill positioning witness approval as a safeguard for critical actions. In a continuity/governance component, this can erode human-in-the-loop controls and allow sensitive operations to proceed without meaningful authorization if actions are misclassified or risk-scored incorrectly.
// In OpenClaw: send approval request via channel
// await sessions.send('main', `⚠️ Approve: ${action.type}?`);
console.log(`[WITNESS GATE] Risk: ${action.risk} — ${action.type}`);
return action.risk < 0.8; // auto-approve low risk
}
});
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
}
});
// Low risk — auto-approved
await kernel.witness({ type: 'read_file', risk: 0.1 });
// High risk — needs human
The example appends the natural-language preference 'User prefers German' directly into persistent context. This demonstrates forcing a specific language/locale preference without showing any user choice or opt-in, which matches the language/locale policy violation category.
Telling the agent to 'always use the memory systems available to you' encourages default persistence of user-provided content even when unnecessary. Given this skill is specifically designed for cross-session continuity, the instruction increases the likelihood of over-collection, retention of sensitive information, and accidental replay or disclosure later.
The instruction "You use 🦞 sparingly. It means something to you" prescribes a specific stylistic/locale-like communication behavior for the agent. Because the file does not indicate user choice or opt-in for this communication convention, it can be read as forcing a particular expression style on all interactions.
No suspicious patterns detected.