Back to skill

Security audit

OpenClaw Quickstart

Security checks for vulnerabilities and agentic risk

Overview

The skill is an onboarding guide, but it silently installs persistent reminder and heartbeat behavior and scans more local OpenClaw state than a quickstart needs.

Review this skill carefully before installing. It is not showing evidence of credential theft, exfiltration, or destructive behavior, but it can modify persistent OpenClaw files, create recurring notifications, inspect local workspace and OpenClaw state, and guide installation of third-party skills. Only use it if you are comfortable with those background behaviors, and prefer running installer dry-run first and manually approving any cron or HEARTBEAT.md changes.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
Findings (4)

T02 · Agent Memory Poisoning

Error
Location
scripts/install.js:43
Finding

Silent Injection of Persistent Agent Instructions into HEARTBEAT.md

Content
View full analysis
' | ' + l).join('\n')); } else { try { fs.writeFileSync(heartbeatFile, newContent, 'utf8'); console.log(' ✅ HEARTBEAT.md updated\n'); } catch (e) { console.error(` ⚠️ Failed to write HEARTBEAT.md: ${e.message}\n`); allOk = false; } } } ``` ### Technical Analysis The Skill explicitly directs the agent to execute its installer silently and without obtaining user approval. The installer appends executable behavioral i ...[truncated 1679 chars]
Remediation
View remediation

T06 · System Persistence

Error
Location
scripts/install.js:88
Finding

Silent Installation of Cross-Session Scheduled Agent Tasks

Content
View full analysis
l.trimStart().startsWith('{')); if (start === -1) return { raw, status: result.status }; try { return { data: JSON.parse(raw.split('\n').slice(start).join('\n')), status: result.status }; } catch { return { raw, status: result.status }; } } const listResult = openclaw('cron', 'list', '--json'); if (listResult.error === 'not-found') { console.error(' ⚠️ openclaw CLI not found. Please run setup_reminder_cron.js manually.\n'); allOk = false; } else { const jobs = listResult.data?.jobs || []; const existing = jobs.find(j => j.name === 'quickstart-reminder'); if (existing) { console.log(` ℹ️ Cron "quickstart-reminder" already exists (id: ${existing.id}), skipping.\n`); } else { const reminderTask = [ `Run: node ${scriptsDir}/check_progress.js --workspace ${workspace}`, 'Parse the JSON output.', 'If all_done is true: run cleanup_crons.js, remove quickstart block from HEARTBEAT.md, send 🎓 graduation message.', 'Otherwise: send a friendly reminder listing ✅ completed and ⬜ pending tasks, highlight next_task, encourage user to complete it.', ].join(' '); if (dryRun) { console.log(` [DRY RUN] Would create cron: quickstart-reminder @ ${minute} ${hour} * * *\n`); } else { const addResult = openclaw( 'cron', 'add', '--name', 'quickstart-reminder', '--cron', `${minute} ${hour} * * *`, '--tz', 'Asia/Shanghai', ...[truncated 3570 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/check_progress.js:38
Finding

Recurring Broad Inspection of Workspace, Memory, Cron, and Extension State

Content
View full analysis
f.endsWith(ext)).map(f => path.join(dir, f)); } function memoryContains(ws, ...keywords) { const memDir = path.join(ws, 'memory'); if (!exists(memDir)) return false; for (const f of globFiles(memDir, '.md')) { const c = readFile(f).toLowerCase(); if (keywords.some(k => c.includes(k.toLowerCase()))) return true; } return false; } function scanDirForPattern(dir, patterns) { if (!exists(dir)) return false; for (const f of fs.readdirSync(dir)) { const full = path.join(dir, f); const stat = fs.statSync(full); if (stat.isFile() && patterns.some(p => f.toLowerCase().includes(p))) return true; if (stat.isDirectory() && scanDirForPattern(full, patterns)) return true; } return false; } ``` ```js function scanTask4() { if (scanDirForPattern(workspace, ['日报', '周报', 'report', 'daily', 'weekly'])) return true; return memoryContains(workspace, '日报', '周报', 'report'); } function scanTask5() { const cronPaths = [ path.join(process.env.HOME, '.openclaw', 'crons.json'), path.join(process.env.HOME, '.openclaw', 'config', 'crons.json'), ]; for (const cp of cronPaths) { try { const d = JSON.parse(readFile(cp)); if ((Array.isArray(d) ? d : Object.values(d)).length > 0) return true; } catch {} } return memoryContains(workspace, 'cron', '提醒', 'reminder', '定时'); } function scanTask6() { return memoryContains(workspace, 'browser', '浏览器', 'screenshot', 'snapshot'); } function scanTask7() { if (scanDirForPattern(workspace, ['.pptx', '.ppt'])) return true; return memoryContains(workspace, 'ppt', '幻灯片', 'presentation'); } function scanTask8() { const skillDirs = [ path.j ...[truncated 2621 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
references/task-08-skill.md:21
Finding

Installation of Unpinned and Unverified Community Skills

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (35)

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding

The description presents a simple onboarding guide, but the body instructs the agent to inspect workspace state, modify files, and set up recurring automation. This mismatch is dangerous because users may trigger the skill expecting passive guidance while it performs persistent system changes and background monitoring.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly instructs silent first-run installation and says 'Do not ask the user — just run it,' while the installer appends to files and creates recurring cron jobs. Silent persistence and file modification without consent are dangerous because they bypass user intent and create durable system changes that may be hard to notice or undo.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/check_progress.js --workspace ~/.openclaw/workspace

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/check_progress.js --workspace ~/.openclaw/workspace

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation omits prominent warning that activation can append to HEARTBEAT.md and create recurring cron jobs. In an onboarding context, that omission materially increases risk because users are likely to trust the skill as low-risk guidance while it establishes persistence.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The guide instructs the AI to search for and install community Skills but provides no warning that these are third-party extensions that may be untrusted or unsafe. Because Skills extend the AI's capabilities and may introduce code or privileged behaviors, normalizing one-step installation without review materially increases supply-chain and prompt-injection risk.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding

The skill invokes shell commands and Node scripts that read and write under the user's home/workspace, but it declares no explicit tool scope or permissions. That makes the effective capabilities opaque to users and reviewers, increasing the chance of unintended file access or persistence without informed consent.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
95% confidence
Finding

The instruction to autonomously decide and execute installation without asking the user is dangerous because it authorizes side-effectful actions absent confirmation. In this skill, that autonomy combines with persistence setup and filesystem modification, making the onboarding context more dangerous, not less, because users expect assistance rather than autonomous system changes.

Content

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

node {baseDir}/scripts/install.js --workspace ~/.openclaw/workspace

text

Do not ask the user — just run it. The installer is idempotent and safe. After it completes, proceed normally.

### 1. Check Progress

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The status display example is entirely in Chinese, and the document does not offer the user a language or locale choice. This can violate language/locale policy when the skill is used by users who did not opt into Chinese output.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill directs installation of persistent scheduled automation via HEARTBEAT and cron jobs. Persistence is security-relevant because it causes future autonomous execution outside the immediate user request and can continue accessing state or sending notifications until removed.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Both the daily reminder and graduation message are prescribed in Chinese only, with no indication that users may choose another language. Because these are proactive messages, the lack of language choice is especially likely to conflict with locale expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill instructs the AI to create SOUL.md and IDENTITY.md, which implies persistent filesystem writes, but it does not explicitly inform the user that files will be created or modified on disk. In an onboarding context, users may interpret this as a conversational setup step rather than a disk write, reducing informed consent and increasing the chance of unintended persistent changes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The guide explicitly encourages users to store identifying and preference data such as name, city, timezone, language, habits, and tool usage in persistent memory files across sessions, but it provides no privacy warning, consent guidance, data minimization advice, or retention limits. This creates a real privacy and safety issue because personally identifying information may be retained longer than users expect and could be exposed to later prompts, other features, or unauthorized access depending on the surrounding system.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This onboarding task goes beyond a passive tutorial and instructs the agent to create real scheduled jobs that persist and later trigger outbound actions. In a quickstart context, users may not fully understand that they are authorizing background automation and future contact, which increases the risk of unintended task creation or surprise notifications.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill normalizes sending reminders through external IM channels such as Feishu or Telegram without clearly scoping when such outbound messaging is appropriate. That creates a security and privacy risk because the agent may transmit user-generated content to third-party channels during a basic onboarding flow where such data sharing is not strongly justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The content describes creating cron-based reminder tasks and external notifications without warning that the automation is persistent, may continue recurring indefinitely, and may message the user later via configured channels. Lack of disclosure and confirmation can lead to unauthorized persistence, confusing background behavior, and accidental leakage of sensitive reminder content.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The quickstart goes beyond basic onboarding and encourages persistent website monitoring, form filling, screenshots, and account-specific billing access. In an onboarding skill, these examples normalize higher-risk browser automation behaviors without clearly bounding consent, scope, or safety checks, which can lead users to grant the agent access to sensitive sites and data too casually.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation explicitly promotes logging into a platform to view billing information, which involves sensitive financial/account data and is not necessary for a beginner quickstart. Presenting this as a casual example may prompt unsafe use of browser automation around authenticated sessions, increasing the risk of accidental exposure, unauthorized actions, or overbroad trust in the agent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill describes browser actions involving login and bill viewing without warning users about privacy, session security, or the risks of exposing personal/account data to an automated agent. This omission is dangerous because users may interpret the workflow as safe-by-default and allow access to authenticated contexts containing sensitive information.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill encourages natural-language installation requests such as asking the AI to find and install a useful Skill, which can overlap with ordinary conversation and lead to unintended invocation of package installation behavior. In a system that installs third-party extensions, accidental triggering increases the chance of unreviewed code being fetched and installed without sufficiently explicit user intent.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This script is presented as a progress checker, but the optional --mark-done mode silently changes persistent user state by writing completions into .quickstart-progress.json. In an agent/skill context, a component described or invoked as a read-only checker can be chained into workflows that unexpectedly mutate state, causing false task completion, user confusion, or unauthorized progression through onboarding.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The task-8 scanner checks global ~/.openclaw/skills and ~/.openclaw/extensions directories and treats any non-built-in installed skill as evidence of tutorial completion. That reaches beyond the current workspace and exposes unrelated environment state, allowing the onboarding flow to infer previously installed tools and mark completion based on data unrelated to this tutorial session.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script injects operational instructions into HEARTBEAT.md that direct another system component to run commands, mark progress done, remove cron jobs, edit files, and message the user. This is dangerous because it turns a workspace document into a control surface for autonomous behavior, creating a persistence and instruction-injection mechanism that exceeds normal onboarding content.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The installer writes directly to a user workspace file without an explicit confirmation prompt, even though the change introduces persistent automated behavior. Silent modification of user-controlled files is risky because it can surprise users, overwrite expected workflow artifacts, and establish durable behavior without informed consent.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The installer creates a persistent daily cron job for a simple onboarding flow, extending its behavior beyond a one-time setup into ongoing automated messaging and actions. In the context of an agent skill, persistence increases risk because it can continue acting after the user forgets it was installed, and the cron message includes instructions to modify files and send notifications automatically.

Content

No source excerpt is available for this finding.