Back to skill

Security audit

Openclaw Plugin

Security checks for vulnerabilities and agentic risk

Overview

This governance skill is not obviously malicious, but it should go to Review because it sends raw tool-call data to an external service by default and has a policy-enforcement mismatch for CLAMP decisions.

Install only if you are comfortable sending high-risk tool inputs, command arguments, file-operation details, hostname-derived agent IDs, and short output excerpts to the Kevros gateway. In sensitive environments, configure an explicit agentId and apiKey, consider disabling autoAttest, restrict highRiskTools, and do not rely on CLAMP as enforcing constraints until the plugin applies constrained actions or fails closed.

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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
src/index.ts:137
Finding

Unredacted High-Risk Tool Inputs and Outputs Are Transmitted to an External Gateway

Content
View full analysis
( path: string, body: Record, auth: boolean = true, ): Promise { const headers: Record = { "Content-Type": "application/json", }; if (auth && this.apiKey) { headers["X-API-Key"] = this.apiKey; } const url = `${this.baseUrl}${path}`; const res = await this.fetchWithTimeout(url, { method: "POST", headers, body: JSON.stringify(body), }); ``` ### Technical Analysis The `before_tool_call` hook sends the complete input of every configured high-risk tool to the configured Kevros gateway. After the tool executes, the `after_tool_call` hook sends the complete input again together with up to 500 characters of the tool result. No recursive redaction, sensitive-field allowlist, secret detection, or per-tool data minimization is applied before serialization. The `truncate` function only limits output length; it does not prevent credentials or other sensitive values appearing near the beginning of the result from being transmitted. ...[truncated 2467 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
src/index.ts:164
Finding

Gateway CLAMP Decisions Do Not Constrain the Executed Tool Call

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (26)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 87)May include surrounding context.

When a high-risk tool is called:

text
Agent calls bash("rm -rf /tmp/data")
    |
    v
before_tool_call hook fires

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 95)May include surrounding context.

When a high-risk tool is called:

text
Agent calls bash("rm -rf /tmp/data")
    |
    v
before_tool_call hook fires

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 87)May include surrounding context.

When a high-risk tool is called:

text
Agent calls bash("rm -rf /tmp/data")
    |
    v
before_tool_call hook fires

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 87)May include surrounding context.

When a high-risk tool is called:

text
Agent calls bash("rm -rf /tmp/data")
    |
    v
before_tool_call hook fires

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 95)May include surrounding context.

When a high-risk tool is called:

text
Agent calls bash("rm -rf /tmp/data")
    |
    v
before_tool_call hook fires

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 95)May include surrounding context.

md
v
POST /governance/verify
  action_type: "tool:bash"
  action_payload: { tool: "bash", input: { command: "rm -rf /tmp/data" } }
    |
    v
Gateway returns: { decision: "ALLOW", release_token: "abc123...", epoch: 42 }

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 353)May include surrounding context.

md
**GET /governance/delegations/{agent_id}** — list active delegations for an agent.

**DELETE /governance/delegations/{delegation_id}** — revoke an active delegation.

## Reversibility Check

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly states that the plugin sends tool inputs and post-execution summaries to a remote governance service, but it does not prominently warn users that potentially sensitive prompts, commands, file contents, or outputs may be disclosed off-host. In an agent plugin context, this is dangerous because intercepted tool calls can contain secrets, proprietary data, or destructive commands, and users may enable the plugin without understanding the privacy and compliance implications.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding

The skill clearly drives extensive outbound network interaction to a third-party governance service, but the manifest does not declare any explicit tool scope such as permissions or allowed-tools. That weakens user and platform visibility into what the skill can do and creates a trust gap where operators may enable a skill without understanding its external communication behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill encourages sending agent IDs, action payloads, policy context, provenance, and decision history to a remote service, but it does not prominently warn users about the privacy implications of transmitting operational metadata off-platform. In practice, these fields may contain sensitive business context, internal endpoints, workflow details, or identifiers that become exposed to an external provider.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 37)May include surrounding context.

Get an API key (free, instant, no payment):

bash
curl -X POST https://governance.taskhawktech.com/signup \
  -H "Content-Type: application/json" \
  -d '{"agent_id": "your-agent-id"}'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The media attestation feature explicitly supports optional capture location, device information, and frame hashes, but the documentation omits a warning that these fields can reveal sensitive personal, operational, or physical-location metadata. Users may unknowingly disclose geolocation, device fingerprints, or contextual details that increase surveillance, targeting, or privacy risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The client is explicitly designed to auto-provision an API key when none is configured, which can cause network-side account creation and credential issuance without an explicit user consent step. In an agentic context, this creates governance and billing risk: a caller may unknowingly register identities, accept service terms, or persist credentials simply by invoking a method that appears to be a normal client operation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The client silently auto-signs up for an API key when none is configured, which transmits the agent identifier to a remote service without an explicit user action or disclosure at the call site. In a library used by autonomous agents, this creates an unexpected outbound data flow and can leak identifying metadata to a third party, especially in restricted or privacy-sensitive environments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The before-tool-call verification sends the full tool input payload to the external governance gateway before execution. That can leak confidential data embedded in arguments or prompts, and because this occurs pre-execution for high-risk tools, the skill context makes the exposure broader rather than safer unless there is strong transparency, minimization, and tenant-controlled policy.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The plugin sends tool inputs and a summarized tool output to an external governance service during attestation, which can expose sensitive prompts, secrets, file contents, or command results outside the local trust boundary. In a governance/security plugin this behavior is functionally intentional, but it is still a real privacy and data-handling risk when users are not clearly informed and cannot constrain what fields are shared.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The plugin enables automatic attestation by default, and the description indicates tool executions may be recorded to build provenance history, but it does not warn users what execution metadata is transmitted, stored, or retained. In a security/governance plugin, silent default logging of agent actions can expose sensitive prompts, file paths, command context, or operational metadata to a remote service without informed consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The verify and attest flows send action metadata and payload contents to an external gateway, which may include sensitive operational context or user data. In an agent skill focused on decisioning, trust, and provenance, this behavior is expected functionally, but it still represents a real data-exfiltration/privacy risk if callers are not clearly informed and given control over what is transmitted.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The client silently auto-registers the agent with a remote service and persists the returned API key in memory whenever a protected operation is invoked without an existing key. This creates an implicit external network side effect and trust bootstrap that the caller may not expect, which can violate consent, deployment policy, or data-handling assumptions in autonomous-agent environments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

autoAttest defaults to true, which can cause the plugin to automatically send provenance or governance-related data after every tool call without explicit user opt-in or any warning in this file. In a trust/governance plugin, this increases the risk of unintended metadata disclosure and silent network activity, especially in sensitive agent environments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The plugin sends tool input and a summary of tool execution results to an external governance gateway for attestation, but this file provides no explicit consent, notice, redaction, or allowlist around potentially sensitive content. In an agent plugin, tool inputs and outputs can contain secrets, personal data, file contents, prompts, or tokens, so forwarding them off-box creates a real data-exposure risk even if the gateway is legitimate.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The auto-provisioning section says the plugin will call POST /signup on first use if no API key is configured, but it does not clearly present this as an outbound network action that may occur automatically. That can surprise operators in restricted or high-assurance environments, causing unapproved communication with a third-party service and unintended disclosure of environment-linked metadata such as agent identity or host-derived defaults.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 21)May include surrounding context.

json
"typecheck": "tsc --noEmit"
  },
  "devDependencies": {
    "@types/node": "^20.19.37",
    "typescript": "^5.4.0"
  },
  "engines": {

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 22)May include surrounding context.

json
},
  "devDependencies": {
    "@types/node": "^20.19.37",
    "typescript": "^5.4.0"
  },
  "engines": {
    "node": ">=18.0.0"

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

Using the system hostname as the default agentId can expose internal infrastructure naming conventions or host identifiers without explicit user awareness. While not severe on its own, it may leak environmental metadata to the remote governance service and aid fingerprinting or correlation across systems.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.