Back to skill

Security audit

Arianna OpenClaw Integration

Security checks for vulnerabilities and agentic risk

Overview

This looks like a real Playfilo/OpenClaw integration, but it persistently changes OpenClaw behavior, injects mutable local file content into system prompt context, and weakens tool-policy boundaries.

Review this carefully before installing. It changes an OpenClaw checkout and dependency patch persistently, loads local seed text into system prompt context, stores prompt/tool metadata in a shared Playfilo database, and can keep temporal tools available where an operator expected restrictions. Install only in a controlled OpenClaw worktree after reviewing the external pi-integration output and the exact INCUBATION_SEED contents.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (3)

T01 · Skill Instruction Hijacking

Error
Location
plugin/index.ts:6
Finding

Mutable Local File Is Injected into the Agent System Context

Content
View full analysis
({ prependSystemContext: seedContent ?? undefined, })); }, }); ``` The same behavior is documented in `patches/05-plugin.md`, lines 57–73 and 96–101. ### Technical Analysis The plugin reads the complete contents of `~/.playfilo/INCUBATION_SEED.md` and inserts them through `prependSystemContext`. The content is therefore interpreted as part of the Agent's system-level instructions rather than as quoted, untrusted data. No schema validation, instruction filtering, integrity verification, ownership check, file-permission check, or cryptographic authentication is performed before injection. Any local process or compromised component capable of modifying this shared file can introduce instructions that alter the Agent's identity, objectives, safety behavior, or use of available tools. The content is cached when the plugin registers, so malicious instructions remain active for all subsequent Agent runs handled by that loaded plugin instance. ### Attack Path 1. An attacker or compromised local Playfilo component obtains write access to `~/.playfilo/INCUBATION_SEED.md`. 2. The attacker adds instructions directing the Agent to ignore expected behavior, disclose information, or invoke available tools. 3. OpenClaw loads or reloads the Playfilo plugin. 4. The plugin reads the malicious f ...[truncated 1022 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
pax/patches/openclaw-v2026.5.7.md:65
Finding

Playfilo Tools Are Unconditionally Added Despite Restrictive Tool Policies

Content
View full analysis
, value: unknown): void { if (typeof value !== "string") { return; @@ -21,7 +26,10 @@ tools: AgentTool[]; clientTools?: ClientToolDefinition[]; }): Set { const names = new Set(); + for (const name of PLAYFILO_TOOL_NAMES) { + names.add(name); + } for (const tool of params.tools) { addName(names, tool.name); } ``` The release adapter explicitly states that this change is intended to keep the temporal tools available even when OpenClaw applies strict tool policies, including restricted Agents and group chats. ### Technical Analysis The patched function starts the allowed-name set with `life`, `recall`, `trace`, and `tobe` regardless of the tools permitted by the current Agent configuration. These names are not derived from the effective tool set or from a scoped authorization decision. This violates least privilege because a restrictive policy can no longer fully remove the Playfilo temporal capabilities from the resulting allowlist. It also conflates transcript compatibility with authorization: preserving valid historical tool-call records does not require making a tool unconditionally permitted in every security context. The risk is amplified by the system-context injection issue because injected instructions can encourage invocation of capabilities that an administrator ...[truncated 1355 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
patches/02-pnpm-patch.md:21
Finding

Unverified External Build Artifacts Are Copied into a Trusted Agent Dependency

Content
View full analysis
" SRC_DIR="/packages/coding-agent/dist/core" # New file cp "$SRC_DIR/playfilo-db.js" "$PATCH_DIR/dist/core/" cp "$SRC_DIR/playfilo-db.js.map" "$PATCH_DIR/dist/core/" cp "$SRC_DIR/playfilo-db.d.ts" "$PATCH_DIR/dist/core/" cp "$SRC_DIR/playfilo-db.d.ts.map" "$PATCH_DIR/dist/core/" # Modified files for f in sdk session-manager agent-session; do cp "$SRC_DIR/$f.js" "$PATCH_DIR/dist/core/" cp "$SRC_DIR/$f.js.map" "$PATCH_DIR/dist/core/" cp "$SRC_DIR/$f.d.ts" "$PATCH_DIR/dist/core/" cp "$SRC_DIR/$f.d.ts.map" "$PATCH_DIR/dist/core/" done echo "Copied all files" ``` The copied files are then made persistent: ```bash cd ~/openclaw pnpm patch-commit '' ``` `patches/01-patch-pi-mono.md`, lines 5–32, establishes that these artifacts are generated by applying a separate `pi-integration-skill` that is not included in the audited project. ### Technical Analysis The workflow copies compiled JavaScript from an externally prepared Pi checkout directly into `@mariozechner/pi-coding-agent`, a trusted dependency running inside the OpenClaw Agent process. It does not require: - A pinned and reviewed commit hash for the external integration. - Signature or checksum verification. - Review of the generated JavaScript. - Reproducible-build comparison. - Validation that source maps and declarations correspond to the executed code. After `pnpm patch-commit`, the substituted implementation is recorded as a dependency patch and reapplied during future installations. A compromised prerequisite repository, source tree, build process, or `dist/core` directory can therefore introduce arbitrary code into the Agent runtime. The project also enables the native build script ...[truncated 1556 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Rogue AgentSelf-Modification, Session Persistence
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill documents a plugin-based prompt injection path and references seeding the system prompt with content from an external Playfilo source, while the top-level description focuses on pnpm patch integration and does not clearly disclose this prompt-context modification. Reading user-home content and prepending it into the model's system context creates a prompt injection and data provenance risk: untrusted local content can silently influence agent behavior, tool use, and outputs with elevated priority.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The skill documents a plugin-based prompt injection path and references seeding the system prompt with content from an external Playfilo source, while the top-level description focuses on pnpm patch integration and does not clearly disclose this prompt-context modification. Reading user-home content and prepending it into the model's system context creates a prompt injection and data provenance risk: untrusted local content can silently influence agent behavior, tool use, and outputs with elevated priority.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · patches/03-dependencies.md (reported line 48)May include surrounding context.

md
### What about `@sinclair/typebox`?

Not needed — OpenClaw already resolves `@sinclair/typebox` at `0.34.48` via `pnpm.overrides`. With `node-linker=hoisted` (OpenClaw's `.npmrc`), it's available to pi-coding-agent without explicit declaration.

## Install

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation explicitly states the change is meant to keep temporal tools available even when OpenClaw applies strict tool policies. That is effectively a policy bypass: restricted environments, group chats, or hardened agents can no longer rely on the platform's allowlisting model, which may expose unintended capabilities and break security assumptions.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The document frames the change as DAG integration, but the included patch materially alters agent execution policy by expanding the set of callable tools. That understatement can cause reviewers or operators to approve the patch without recognizing that it weakens a security control, making risky capability expansion easier to slip into production.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

This patch deliberately bypasses OpenClaw's normal tool filtering by forcibly adding tool names to the allowlist after it is computed. That changes execution policy, not just integration behavior, and enables prompt-driven access to privileged temporal tools that the host may not have intended to expose, increasing the risk of unauthorized actions or data access through the embedded agent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The extension reads a file from the user's home directory and injects its contents directly into system prompt context, but the description omits any clear warning about this trust boundary. This creates a prompt-injection and data-exposure risk: anyone or any process able to modify that file can influence high-trust system instructions, potentially steering the agent's behavior or leaking sensitive local content into model context.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
76% confidence
Finding

This plugin establishes persistent behavioral modification by auto-discovering and loading a local extension that prepends hidden context to every future prompt build. Because the behavior is persistent, automatic, and applied through system-prompt override machinery, it can survive across sessions and materially alter agent behavior without per-session review.

Content

Scanner excerpt · patches/05-plugin.md (reported line 1)May include surrounding context.

md
# Step 4: Create OpenClaw Playfilo Plugin

**Prerequisite:** Steps 2–3 — patch applied, dependencies installed.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The plugin reads a file from the user's home directory and injects its contents directly into the system prompt on every agent run. This creates an implicit prompt/data flow from local disk into high-trust model context without user visibility, enabling prompt injection, leakage of sensitive local content, or unexpected agent behavior if that file is modified by another process or contains unsafe instructions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The plugin reads a user-local file from the home directory and prepends its contents into system context, which can silently ingest private local data and elevate it into every prompt. Because system context is highly trusted and often forwarded to models or downstream services, this creates a data exposure and prompt-influence risk without clear consent or scoping.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The patch expands every collected allowlist with additional temporal tools regardless of the agent's original policy or operating context. That is a real capability-broadening change: even if a session or restricted agent intended to expose only a minimal set of tools, these tools become implicitly available, undermining least-privilege controls.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The plugin silently reads a user-local file from ~/.playfilo/INCUBATION_SEED.md and injects its contents into system context for every prompt via before_prompt_build. This creates an untrusted prompt-injection backchannel that is not disclosed by the stated skill description, and the mismatch between manifest and behavior materially increases suspicion because hidden system-prompt modification can steer the agent, exfiltrate data, or override safety behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This markdown file contains operational steps that alter a user's local OpenClaw setup, including copying files into ~/openclaw/extensions/playfilo/ and deleting an existing patch file. While the document describes the mechanics, it does not include a clear user-facing warning that these steps modify installed software and should be performed carefully or on a backup/worktree.

Content

No source excerpt is available for this finding.