Back to skill

Security audit

Daily Self Improvement

Security checks for vulnerabilities and agentic risk

Overview

This skill has a coherent daily reporting purpose, but it ships unsafe defaults that can send local operational summaries to a preset Discord destination using an embedded gateway credential.

Review this skill before installing or scheduling it. Remove the embedded gateway token, disable Discord by default, replace the bundled channel ID with your own confirmed destination, and inspect the exact outgoing report payload. Treat failure logs, daily notes, and memory files as potentially sensitive, and do not blindly run the recommended skill install commands without separately reviewing those packages.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
scripts/run.cjs:369
Finding

Hardcoded OpenClaw Gateway Bearer Token

Content
View full analysis
`. 5. If the token remains valid and has sufficient authorization, the attacker invokes gateway operations under the token owner's ...[truncated 563 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
config/settings.json:4
Finding

Outbound Discord Reporting Enabled with a Preset Recipient

Content
View full analysis
{ if (!config.notifications.discord) { console.log('⏭️ Discord 通知已禁用'); resolve(false); return; } const token = process.env.OPENCLAW_GATEWAY_TOKEN || 'b8cb95b2fb220c2896a44dc6514f47ef4efed792bcd07c3f'; const postData = JSON.stringify({ action: 'send', channel: 'discord', channelId: config.discordChannel, message: message }); const options = { hostname: '127.0.0.1', port: 18789, path: '/api/message', method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}`, 'Content-Length': Buffer.byteLength(postData) } }; const req = http.request(options, (res) => { ``` ### Technical Analysis The shipped configuration contains an account-specific Discord channel identifier and enables transmission by default. This conflicts with the documentation examples, which use the placeholder `YOUR_DISCORD_CHANNEL_ID`. When the script r ...[truncated 1754 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
scripts/run.cjs:187
Finding

Unpinned Third-Party Skill Installation Recommendations

Content
View full analysis
0) { suggestions.push({ name: 'auto-retry', desc: '自动重试失败的任务', install: 'clawhub install auto-retry', relevance: 'high' }); } ``` ### Technical Analysis The generated report recommends installation commands that identify third-party skills only by mutable package name. No reviewed version, publisher identity, integrity hash, signature, or immutable source revision is specified. Consequently, the code installed when a user later follows a recommendation may differ from the code that existed when this skill was audited. A registry compromise, malicious package update, ownership transfer, or naming ambiguity could cause a recommended command to install an unsafe component. The current script only prints these commands in generated reports; it does not execute them automatically. Exploitation therefore requires separate user action. ### Attack Path 1. An attacker compromises a recommended registry package, obtains control of its publisher account, or publishes a package resolved by one of the unqualified names. 2. The daily report presents the corresponding unversioned `clawhub install` command as a recommended remediation. 3. The user ...[truncated 887 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (15)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script embeds a fallback bearer token directly in source code and uses it automatically when the environment variable is absent. Hardcoded credentials can be extracted by anyone with code access and may permit unauthorized use of the local gateway or connected messaging functions, especially in an automated skill that sends outbound messages.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

A hardcoded fallback credential is used silently for Authorization, creating a secret exposure and unsafe default authentication path. If the token is valid, an attacker or unintended user could reuse it to send messages or interact with the gateway without proper secret management or user awareness.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documented workflow collects user corrections and daily notes, stores derived content in memory, searches for improvements, and pushes generated reports to Discord. This creates a clear natural-language exfiltration path: sensitive information from user interactions or internal logs can be summarized and transmitted externally, and summarization does not reliably remove secrets or private data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README explicitly describes updating memory files, generating reports from failures/corrections/notes, and delivering the result to Discord, but it provides no warning, minimization guidance, or redaction requirements. In this skill context, those sources are likely to contain sensitive user content, operational details, or prompts, so exporting summaries to an external channel creates a realistic privacy and data-leakage risk.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill advertises behavior that reads local files, searches external resources, and pushes reports to Discord, but it does not declare any explicit tool scope or permission boundaries. In a skill system, missing scope declarations can allow broader-than-expected access to environment data or execution capabilities, reducing user visibility into what the skill may touch.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill description and usage flow state that it reads failure logs, daily notes, and corrections, then generates and sends a report to Discord, but there is no prominent privacy warning or consent language. This creates a real risk of unintentionally exfiltrating sensitive user content, including personal notes, correction history, or operational details, to a third-party service.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The package description is written entirely in Chinese and presents the skill behavior in that locale without any indication that users can choose another language. Under the policy, language or locale constraints should be optional or clearly justified; this manifest provides neither.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Natural-language strings and date formatting are hardcoded to Chinese, including use of zh-CN locale and Chinese-only console/report text. This creates a language policy concern because the skill does not offer a language choice or explain why the locale is fixed.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest and file header describe searching ClawHub for improvement ideas, which implies querying an external catalog or dynamic source. In the implementation, the 'search' step is a static in-code array of suggestions with minor local conditional additions, so the advertised behavior is not actually carried out.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The section header and log output explicitly describe a ClawHub search operation. The code beneath it performs no network request, subprocess call, or catalog query, so the documentation actively misrepresents what the code does.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The stated purpose focuses on collecting issues, analyzing patterns, generating a report, and pushing it to Discord. Appending content into the existing daily note is an additional write-side behavior that changes user workspace content and is not disclosed in the manifest description.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script collects workspace-derived issue summaries and transmits them to Discord via a local messaging gateway without any explicit consent flow, sanitization policy, or clear user warning at send time. In the context of a self-improvement skill that reads failure logs and notes, this can leak sensitive operational details, task names, and error content to an external channel.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The README presents the skill description and usage in Chinese and even hard-codes the scheduled message in Chinese, but does not indicate that the skill is intentionally region-specific or provide an alternative language option. This can violate a language/locale policy when users are not given a choice or informed of the restriction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The manifest description and the rest of the skill instructions are written entirely in Chinese, and the scheduled invocation message is also fixed in Chinese. There is no indication that the skill is region-specific or that users can opt into another language, which may violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The setting "timezone": "Asia/Shanghai" imposes a specific locale preference in configuration, which can amount to a language/locale policy constraint when not paired with user choice or clear region-specific justification. In this file, there is no indication that the timezone is optional, user-selected, or required for a region-specific compliance purpose.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access, suspicious.potential_exfiltration

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/run.cjs:14

File read combined with network send (possible exfiltration).

Warn
Code
suspicious.potential_exfiltration
Location
scripts/run.cjs:38