T01 · Skill Instruction Hijacking
- Location
agent-loop.md:92- Finding
Untrusted Peer Results Are Propagated as Executable Agent Context
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a coherent multi-agent workflow protocol, but it gives agents broad delegation, message logging, and context-forwarding behavior without enough containment or data-sharing safeguards.
Install only if you are comfortable with agents delegating work to other configured agents, storing message/task history in the workspace, and forwarding prior results between agents. Avoid using it for secrets or regulated data unless you add redaction, retention, sender-authentication, and explicit approval rules for delegation.
agent-loop.md:92Untrusted Peer Results Are Propagated as Executable Agent Context
agent-loop.md:75Unauthenticated Sender Claims Permit Forged Tasks and Replies
The skill instructs the agent to use shell commands and write persistent workspace files, but it does not declare any explicit tool scope or permissions boundaries. In a multi-agent orchestration skill, that omission is dangerous because it can cause the agent to invoke powerful capabilities implicitly, including dispatching messages to other agents and persisting task data, without clear least-privilege constraints or operator awareness.
The activation guidance is very broad and tells the system to use this skill for generic multi-agent, planning, dispatch, delegation, or collaboration requests. That over-triggering increases the chance that the skill activates in contexts where message passing, delegation, shell invocation, and persistent logging are unnecessary, expanding attack surface and causing unintended data propagation across agents.
The skill explicitly defines durable mailbox logging for all incoming and outgoing messages plus per-task state persisted in workspace files, but it provides no user-facing warning, retention limit, or data minimization guidance. In a multi-agent protocol, these logs can accumulate sensitive prompts, intermediate results, identifiers, and cross-agent communications, creating privacy, compliance, and secondary disclosure risks if the workspace is later accessed or reused.
The skill explicitly instructs coordinators to include upstream subtask results in downstream dispatch messages, which can propagate potentially sensitive user data across multiple agents without any consent, minimization, or visibility controls. In a multi-agent orchestration skill, this increases the blast radius of any sensitive content provided to one agent and can expose data to peers that do not strictly need full upstream outputs.
The guidance explicitly tells coordinators to include prior results and to err on the side of sending more context, but it provides no minimization, redaction, or sensitivity checks before sharing data with peer agents. In a multi-agent orchestration skill, this materially increases the chance of oversharing secrets, personal data, proprietary information, or tenant-scoped data to other agents that may not need it, especially under recursive delegation.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
def discover_workspace() -> Path | None:
"""Try to get the default workspace from openclaw config."""
try:
result = subprocess.run(
["openclaw", "config", "get", "agents.defaults.workspace"],
capture_output=True, text=True, timeout=5,
)
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
def list_agents() -> list[dict] | None:
"""Try to list configured agents via openclaw CLI."""
try:
result = subprocess.run(
["openclaw", "agents", "list", "--json"],
capture_output=True, text=True, timeout=5,
)
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
def init_clawflow(workspace: Path):
"""Create the tasks/ directory inside an OpenClaw workspace."""
# Create workspace dir if missing (with warning)
if not workspace.exists():
print(f" Warning: Workspace not found at {workspace}")
No suspicious patterns detected.