Back to skill

Security audit

Agent Workflow

Security checks for vulnerabilities and agentic risk

Overview

This workflow plugin mostly matches its stated purpose, but a real path-handling flaw could let tool callers reach JSON files outside the workflow storage area.

Install only if you are comfortable with a plugin that records workflow names, progress, notes, and outputs on disk. Before broad use, the publisher should fix workflowId validation and path containment in the state store, add retention or cleanup controls, and clarify the review-delivery cleanup wording. Do not expose the agent_workflow tool to untrusted prompts or callers until the path traversal issue is fixed.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
src/state-store.ts:95
Finding

Path Traversal Through Unvalidated Workflow Identifiers

Content
View full analysis
(p); } saveWorkflow(state: WorkflowState, expectedVersion: number): WorkflowState { this.acquireLock(); try { const current = this.loadWorkflow(state.workflowId); if (current && current.stateVersion !== expectedVersion) { throw new Error( `Version conflict: expected ${expectedVersion}, found ${current.stateVersion}. ` + `Re-load the workflow and retry.` ); } const updated: WorkflowState = { ...state, stateVersion: expectedVersion + 1, updatedAt: new Date().toISOString(), }; this.writeJson(this.workflowPath(state.workflowId), updated); this.updateIndex(updated); return updated; } finally { this.releaseLock(); } } ``` The affected identifier is accepted by the public tool interface and passed to the storage layer. For example: ```ts case "status": { result = engine.status(params.workflowId); break; } ``` ### Technical Analysis New workflow identifiers are securely generated with `crypto.randomUUID()`, but identifiers supplied to subsequent actions are not required to use the same UUID format. The tool schema accepts any string, and the entry point generally checks only whether the value is present. `workflowPath()` concatenates the untrusted value with `.json` and passes it to `path.join()`. Path ...[truncated 3521 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (36)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a full workflow-management skill for agents, including staged execution and persistent multi-project support. The actual code chunk contains only type declarations for a loader that reads and parses skill content from files. There is no evidence of workflow orchestration, project state handling, trigger logic, or agent task progression. This is a materially different primary purpose, so the description does not accurately represent the supplied code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied code does not implement a structured workflow system, project state management, brainstorm/plan/execute phases, verification, delivery, or multi-project support. Instead, it is a utility for loading and parsing skill markdown files from the filesystem. This is a materially different primary purpose from the declared description, so it should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description presents a high-level workflow-management plugin for agents, with explicit workflow phases, persistent state, and multi-project support. The provided code does none of that. It only loads markdown skill files from disk, parses frontmatter to extract a description field, exposes summary/body accessors, and caches file contents in memory. This is a materially different primary purpose and introduces an undeclared capability (filesystem skill loading/parsing). There is no evidence in this code chunk of workflow execution logic, state persistence beyond an in-memory cache, project management, or trigger enforcement based on explicit user requests.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The code is broadly aligned with the declared high-level purpose of a structured workflow system: it models stages resembling brainstorm, plan, execute, verify, and finish/deliver, plus helper/context nodes. However, important declared aspects are not reflected in the supplied code chunk. Specifically, there is no implementation of persistent state, no multi-project support, and no trigger gating logic restricting activation to explicit user workflow requests. The actual code is narrower: it is a workflow graph definition and guard utility module, not a full plugin implementing the full declared operational behavior. This is a description-behavior mismatch because several materially stated capabilities are absent from the code provided.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: @mariozechner/pi-coding-agent==0.61.1 — 3 advisory(ies): CVE-2026-54326 (Pi Agent: Potential XSS in HTML session exports via Markdown URL sanitization by); CVE-2026-54328 (Pi Agent: Predictable temporary extension install paths allow local privilege es); CVE-2026-54327 (Pi Agent: Race condition in Pi auth.json writes could expose stored credentials)

High
Category
Supply Chain
Confidence
94% confidence
Finding

@mariozechner/pi-coding-agent 0.61.1 is a real high-risk dependency in this lockfile, with advisories affecting HTML export XSS, predictable temp paths, and credential exposure during auth.json writes. Given this skill is for agent workflow orchestration and depends on the broader OpenClaw agent ecosystem, inclusion of a vulnerable coding-agent package increases risk because developer machines or agent runtimes may actually process sessions, extensions, and stored credentials.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: axios==1.13.6 — 16 advisory(ies): CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more

High
Category
Supply Chain
Confidence
92% confidence
Finding

axios 1.13.6 is included and reportedly affected by numerous advisories including NO_PROXY normalization bypass leading to SSRF and prototype-pollution-related MITM/credential theft scenarios. Even though it is optional/transitive here, this ecosystem includes networked agent components, bot SDKs, and external service clients, making a vulnerable HTTP client materially relevant if enabled in development or runtime.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: basic-ftp==5.2.0 — 4 advisory(ies): GHSA-6v7q-wjvx-w8wg (basic-ftp: Incomplete CRLF Injection Protection Allows Arbitrary FTP Command Exe); CVE-2026-39983 (basic-ftp has FTP Command Injection via CRLF); CVE-2026-41324 (basic-ftp vulnerable to denial of service via unbounded memory consumption in Cl) +1 more

High
Category
Supply Chain
Confidence
88% confidence
Finding

basic-ftp 5.2.0 is present and has advisories for FTP command injection and denial of service. While it is transitive and may not be used by the workflow skill directly, agent/tooling ecosystems often process remote resources, so retaining a vulnerable FTP client can expose developers or automated jobs if an attacker can influence FTP targets or responses.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: brace-expansion==5.0.5 — 4 advisory(ies): CVE-2026-13149 (brace-expansion: DoS via exponential-time expansion of consecutive non-expanding); CVE-2026-45149 (brace-expansion: Large numeric range defeats documented `max` DoS protection); CVE-2026-14257 (brace-expansion: DoS via unbounded expansion length causing an out-of-memory pro) +1 more

High
Category
Supply Chain
Confidence
90% confidence
Finding

brace-expansion 5.0.5 is a real vulnerable transitive dependency with multiple DoS advisories related to expansion complexity and memory blowup. In an agent/tooling environment that may evaluate glob patterns, archive contents, or user-influenced path expressions, this can become more relevant than in a static library because malicious input could trigger excessive CPU or memory use.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · skills/writing-skills/SKILL.md (reported line 37)May include surrounding context.

md
| **Refactor** | Close loopholes while maintaining compliance |
| **Write test first** | Run baseline scenario BEFORE writing skill |
| **Watch it fail** | Document exact rationalizations agent uses |
| **Minimal code** | Write skill addressing those specific violations |
| **Watch it pass** | Verify agent now complies |
| **Refactor cycle** | Find new rationalizations → plug → re-verify |

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · skills/writing-skills/SKILL.md (reported line 94)May include surrounding context.

md
1. **Find new rationalizations** — Run variations of the pressure scenario
2. **Document new violations** — Add to Red Flags section
3. **Plug loopholes** — Update skill, re-verify
4. **Repeat** until no new violations found in 3 consecutive runs

## Skill Structure

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code persistently stores workflow metadata and state to disk under a user directory without any visible consent, notice, retention control, or sensitivity filtering. In an agent workflow context, the stored state can easily contain project names, task history, branch choices, and potentially user-provided content, creating privacy and data-exposure risk if the host is shared, backed up, inspected by other local software, or later exfiltrated.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
91% confidence
Finding

The instruction to always create tasks for each checklist item introduces persistent state for a brainstorming-only skill, which can cause unnecessary retention of user/project context and broaden the skill's operational footprint. In an agent system with shared task memory or cross-project visibility, this can lead to inadvertent exposure, carryover of sensitive context, or unintended actions being resumed later.

Content

Scanner excerpt · skills/brainstorming/SKILL.md (reported line 22)May include surrounding context.

md
## Checklist

You MUST create a task for each of these items and complete them in order:

1. **Explore project context** — check existing files, docs, prior work
2. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

L114 says to wait for explicit user confirmation before invoking any other skill or writing any file, but the checklist and flow earlier explicitly allow writing a design doc once the user requests it after design approval (L028-L030, L054-L057). This is an active documentation contradiction about when file output is permitted, not merely an omitted detail.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill gives conflicting instructions for Option 2: it says to keep the working copy until review is complete, but also says to proceed to workspace cleanup in Step 5. That ambiguity can cause an agent to delete drafts or temporary artifacts earlier than intended, potentially disrupting review, losing evidence, or removing files without the user expecting cleanup at that stage.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Inconsistent cleanup rules around review submission create a realistic path to unannounced deletion: an agent may interpret 'Then: Clean up workspace (Step 5)' as authorization to remove files after submitting, despite the earlier instruction to keep the working copy until review is complete. In a delivery workflow, this can cause loss of rollback material, reviewer follow-up context, or user trust due to surprising destructive behavior.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

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.

Content

Scanner excerpt · skills/finishing-work/SKILL.md (reported line 149)May include surrounding context.

md
- Problem: "What should I do next?" → ambiguous
- Fix: Present exactly 4 structured options

**No confirmation for discard**
- Problem: Accidentally delete work
- Fix: Require typed "discard" confirmation

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

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.

Content

Scanner excerpt · skills/finishing-work/SKILL.md (reported line 157)May include surrounding context.

md
**Never:**
- Deliver without verifying work is complete
- Delete work without confirmation
- Skip the options presentation

**Always:**

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest says this skill should trigger only for concrete, reproducible debugging, but the body broadens usage to 'ANY unexpected situation' and urges use under time pressure. That mismatch can cause the agent to invoke this workflow outside its authorized scope, overriding more appropriate skills or constraining the agent into a rigid process when the user did not request it.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

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.

Content

Scanner excerpt · skills/executing-plans/SKILL.md (reported line 61)May include surrounding context.

md
---
name: verification-before-completion
description: "Use before claiming any work is complete, correct, or passing. Requires running verification steps and confirming output before making success claims. Trigger before wrapping up any task, delivering results, or reporting completion. Do not skip verification even for simple tasks."
---

# Verification Before Completion

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

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.

Content

Scanner excerpt · skills/verification-before-completion/SKILL.md (reported line 3)May include surrounding context.

md
---
name: verification-before-completion
description: "Use before claiming any work is complete, correct, or passing. Requires running verification steps and confirming output before making success claims. Trigger before wrapping up any task, delivering results, or reporting completion. Do not skip verification even for simple tasks."
---

# Verification Before Completion

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger text is overly broad: it says to apply before wrapping up any task, delivering results, or reporting completion, which can match ordinary agent behavior across many unrelated tasks. In a workflow system, this can cause the skill to activate pervasively and steer agent behavior outside explicit user intent, increasing prompt-scope interference and making downstream actions depend on this skill’s rigid rules.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

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.

Content

Scanner excerpt · skills/verification-before-completion/SKILL.md (reported line 10)May include surrounding context.

md
## Overview

Claiming work is complete without verification is dishonesty, not efficiency.

**Core principle:** Evidence before claims, always.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

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.

Content

Scanner excerpt · skills/verification-before-completion/SKILL.md (reported line 55)May include surrounding context.

md
## Overview

Claiming work is complete without verification is dishonesty, not efficiency.

**Core principle:** Evidence before claims, always.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

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.

Content

Scanner excerpt · skills/verification-before-completion/SKILL.md (reported line 103)May include surrounding context.

md
## Overview

Claiming work is complete without verification is dishonesty, not efficiency.

**Core principle:** Evidence before claims, always.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

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.

Content

Scanner excerpt · skills/verification-before-completion/SKILL.md (reported line 56)May include surrounding context.

md
- Using "should", "probably", "seems to"
- Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
- About to deliver/report without verification
- Trusting subagent success reports without checking output
- Relying on partial verification
- Thinking "just this once"
- **ANY wording implying success without having run verification**

Static analysis

No suspicious patterns detected.