Back to skill

Security audit

ClawCompany

Security checks for vulnerabilities and agentic risk

Overview

This skill is not clearly malicious, but it needs review because it can launch coding agents that modify project files with broad triggers and weak safeguards.

Install only in a disposable or version-controlled project directory, not your home folder or a sensitive repository. Use dry-run first, avoid verbose mode with real API keys, review all generated changes yourself, and assume prompts and task details may be sent to external agent/model services unless the publisher documents otherwise.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
src/index.ts:52
Finding

API Credential Exposed Through Verbose Configuration Logging

Content
View full analysis
0 && !config.dryRun) { throw new ClawCompanyError( '配置验证失败', 'CONFIG_ERROR', { errors } ) } // Initialize logging logger = new Logger('ClawCompany', config.verbose ? LogLevel.DEBUG : LogLevel.INFO) logger.info('🦞 开始工作...') logger.debug('配置:', config) ``` The generated implementation contains the same vulnerable behavior at `dist/index.js:28`. ### Technical Analysis `loadConfig` copies `GLM_API_KEY` from the process environment into the `config.glmApiKey` property. When verbose mode is enabled, the application passes the entire configuration object to `logger.debug`. The logger ultimately sends all additional arguments to `console.log`, without redacting secret-bearing fields. Consequently, the API key is printed in plaintext. This violates the principle that credentials should not be included in diagnostic output, even when debug logging is explicitly enabled. Potential exposure locations include: - Interactive terminal history or captured terminal sessions - CI/CD job logs - Container logs - Centralized log aggregation platforms - Debug bundles supplied to support personnel - Process output captured by a parent application ### Attack Path 1. A valid `GLM_API_KEY` is supplied through the process environment. 2. The user, automation pipeline, or wrapper invokes the application with verbose logging enabled. 3. `loadConfig` stores the credential in `config.glmApiKey`. 4. `logger.debug('配置:', config)` serializes or displays the complete configuration object. 5. The plaintext key is retained in terminal, CI, container, or centralized log ...[truncated 544 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
src/index.ts:186
Finding

Untrusted Task Instructions Reach a Write-Capable Coding Agent Without Workspace Enforcement

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/index.ts:218
Finding

Security Review Examines Only Filenames and Fails Open

Content
View full analysis
{ return withErrorHandling('Review Agent', async () => { if (config.dryRun) { return true } const session = await sessions_spawn({ runtime: 'subagent', task: `你是 Review Agent (代码审查)。 任务:${task.title} 生成的文件:${files.join(', ')} 你的职责: 1. 检查代码质量 2. 安全性审查 3. 决定是否批准 返回 JSON 格式: { "approved": true/false, "issues": ["问题1", "问题2"], "suggestions": ["建议1", "建议2"] }`, thinking: config.reviewAgentThinking || 'high', mode: 'run' }) const history = await sessions_history({ sessionKey: session.sessionKey }) const lastMessage = history.messages[history.messages.length - 1] try { const result = JSON.parse(lastMessage.content) return result.approved !== false } catch { return true // Default approval } }) } ``` The JavaScript entry point contains equivalent fail-open behavior at `src/index.js:139-189`. ### Technical Analysis The Review Agent receives the task title and a comma-separated list of filenames, but it does not receive the generated source code, file contents, or a patch. It therefore cannot substantively inspect code style, error handling, performance, or security. The approval logic is also fail-open: ```ts return result.approved !== false ``` Any parsed value other than an explicit Boolean `false`, including a missing `approved` property, is treated as approval. If JSON parsing fails, the catch block also returns `true`. In the JavaScript implementation, review errors and timeouts similarly default to approval. As a result, malformed output, absent fields, unavailable review services, and other review failures can all produce an approved result. ### Attack Path 1. The D ...[truncated 1243 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (40)

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README states the skill auto-invokes on broad phrases like 'create/build/implement/develop', which are common in normal conversation and can trigger the skill unexpectedly. Because this skill performs automated software-development actions through multiple agents, unintended invocation can lead to unreviewed code generation or project modification in contexts where the user did not explicitly consent.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

This code chunk does not implement or expose an AI virtual team collaboration system. Its primary purpose is generic error handling: defining error subclasses and wrapping async operations to rethrow standardized errors. While such utilities could support a larger multi-agent development system, this chunk by itself materially differs from the declared purpose and lacks the described collaboration, development, or triggering behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description promises a multi-agent automated software development system, but the provided code chunk contains only a generic logger type definition. Logging is merely a supporting utility and does not implement or demonstrate the claimed agent collaboration, code generation, project building, or development workflow capabilities. This is a materially different primary purpose, so the description does not accurately represent the code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description describes a high-level automated software development system with multiple agents and workflow orchestration. The supplied code chunk only implements a console-based logger with debug/info/warn/error/success/step methods and configurable log levels. While logging could be a supporting utility inside such a system, this chunk by itself does not exhibit the declared primary purpose or capabilities. Therefore the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description describes a high-level autonomous multi-agent software development system, but the supplied code only provides a basic logger class for console output. It does not implement agent coordination, software generation, workflow orchestration, or any trigger handling related to creating or building applications. This is a materially different primary purpose, so the description does not accurately represent the code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied code is only a type definition file describing an external API with methods to spawn sessions, retrieve message history, and send messages. It does not implement or demonstrate an AI virtual team collaboration system, PM/Dev/Review roles, automated software development, or rapid prototyping behavior. While such APIs could support a multi-agent development system, that purpose is not substantiated by this chunk. Therefore the description materially overstates and mischaracterizes the code's actual demonstrated behavior.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger conditions are extremely broad (create, build, implement, develop) and overlap with common user requests, which can cause the skill to activate in many contexts where the user did not intend multi-agent code generation. In this skill's context, over-triggering is more dangerous because activation leads to automated software-development workflows and potential file creation/modification behavior.

Content

No source excerpt is available for this finding.

Ssd 4

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Task title and description produced by the PM agent are inserted verbatim into the Dev agent prompt, creating a classic cross-agent prompt-injection chain. Since the Dev agent is launched with a project cwd and is expected to create files, compromised upstream task content can steer code generation, file operations, or other agent behaviors in ways the original orchestrator did not intend.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: @hono/node-server==1.19.9 — 3 advisory(ies): CVE-2026-39406 (@hono/node-server: Middleware bypass via repeated slashes in serveStatic); GHSA-frvp-7c67-39w9 (Node.js Adapter for Hono: Path traversal in `serve-static` on Windows via encode); CVE-2026-29087 (@hono/node-server has authorization bypass for protected static paths via encode)

High
Category
Supply Chain
Confidence
96% confidence
Finding

@hono/node-server 1.19.9 is flagged for middleware bypass and path traversal issues in static file serving, including Windows-specific encoded-path handling and repeated-slash bypasses. This skill is an agentic development/collaboration system with web/server-related dependencies, so a vulnerable HTTP adapter meaningfully increases risk if any generated or embedded service exposes static assets or protected paths.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: @mariozechner/pi-coding-agent==0.58.0 — 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
95% confidence
Finding

@mariozechner/pi-coding-agent 0.58.0 has multiple reported issues affecting HTML export XSS, predictable temp extension paths, and auth.json credential exposure through race conditions. In a coding-agent skill that automates development workflows and may handle code, sessions, and credentials, these issues are especially relevant because the dependency’s core functionality aligns closely with the skill’s purpose.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: brace-expansion==5.0.4 — 5 advisory(ies): CVE-2026-13149 (brace-expansion: DoS via exponential-time expansion of consecutive non-expanding); CVE-2026-33750 (brace-expansion: Zero-step sequence causes process hang and memory exhaustion); CVE-2026-45149 (brace-expansion: Large numeric range defeats documented `max` DoS protection) +2 more

High
Category
Supply Chain
Confidence
81% confidence
Finding

brace-expansion 5.0.4 is reported vulnerable to multiple denial-of-service conditions involving pathological expansion patterns and numeric ranges. Here it is pulled in transitively by tooling-related glob/minimatch usage, so the main risk is resource exhaustion when processing attacker-controlled patterns, likely in development, automation, or generated workflows rather than direct end-user runtime.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The README requires a GLM API key and describes cloud-backed agent execution, but it does not clearly disclose that user prompts, task details, and possibly project code may be transmitted to an external model provider. In a development skill, this matters because proprietary source code, credentials in context, or sensitive business logic could be sent off-host 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 workflow description says the Dev Agent will generate code and save files, but the README does not prominently warn users that running the skill can modify the current project tree. In a coding assistant context, silent file creation or overwriting is risky because users may invoke it in valuable repositories and not realize changes are being applied automatically.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The README includes a concrete example of sending requests with an Authorization bearer token to an external API endpoint. While this is expected functionality for an API-backed skill, it still represents external transmission of prompts and potentially project-derived data, which is security-relevant in a code-generation tool handling sensitive repositories.

Content

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

echo $GLM_API_KEY

测试 API

curl -X POST https://api.z.ai/api/coding/paas/v4/chat/completions
-H "Authorization: Bearer $GLM_API_KEY"
-d '{"model":"glm-5","messages":[{"role":"user","content":"test"}]}'

text

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The README includes a concrete example of sending requests with an Authorization bearer token to an external API endpoint. While this is expected functionality for an API-backed skill, it still represents external transmission of prompts and potentially project-derived data, which is security-relevant in a code-generation tool handling sensitive repositories.

Content

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

echo $GLM_API_KEY

测试 API

curl -X POST https://api.z.ai/api/coding/paas/v4/chat/completions
-H "Authorization: Bearer $GLM_API_KEY"
-d '{"model":"glm-5","messages":[{"role":"user","content":"test"}]}'

text

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill references environment-based secrets (GLM_API_KEY) and demonstrates code-like operational behavior, but it declares no explicit tool scope or permissions boundary. In a multi-agent code-generation skill, missing scope declarations increase the chance of unintended secret exposure or broader-than-expected capabilities during execution.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill description and operational instructions are presented in Chinese, including agent prompts and usage sections, without indicating that users may choose their preferred language. This can violate language or locale policy where a default language is imposed without explicit user opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill description emphasizes automated development but does not clearly warn users that it may generate outputs intended to create or modify project files. In a code-generation setting, lack of upfront disclosure undermines informed consent and increases the risk of unintended repository changes or acceptance of unsafe generated code.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The usage examples define activation through informal phrases without clear boundaries, which can misclassify ordinary assistance requests as permission to launch autonomous development agents. Because the skill chains PM, Dev, and Review roles, ambiguous triggering can escalate a simple request into unintended automated actions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code contains user-facing natural-language text only in Chinese, including comments and thrown error messages such as '失败' and '任务 ... 失败'. For a general-purpose skill file, forcing a specific language without offering a choice or documenting a justified locale restriction is a natural-language policy violation under the stated rules.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file’s natural-language interface is consistently Chinese, including the product description, help text, and PM/Dev/Review agent instructions. There is no indication that users may choose another language or that the skill is intentionally limited to a Chinese-only regional context, which creates a language-policy issue.

Content

No source excerpt is available for this finding.

Ssd 4

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Untrusted user input is interpolated directly into the PM agent's instruction block without delimiting or structural separation, allowing prompt injection and role-steering. Because the PM agent's output feeds downstream development and review steps, a malicious requirement can manipulate task decomposition and seed harmful instructions into later agent hops.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This TypeScript file contains natural-language comments and a console warning in Chinese (for example at L02, L34, L39, L60, L65, and L67). Because the file does not indicate that the skill is region-specific or provide any user opt-in for language/locale, it appears to enforce a specific language in violation of the stated language/locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code includes natural-language strings in Chinese, beginning with the file comment and continuing in thrown error messages elsewhere in the file. Because the file provides no indication that the skill is region-specific or that users can opt into this locale, it may violate language/locale policy by enforcing a specific language implicitly.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The thrown error string uses Chinese text ('失败') as part of the user-visible message format. There is no accompanying code or documentation in this file showing locale selection, fallback behavior, or a justified regional constraint.

Content

No source excerpt is available for this finding.