Back to skill

Security audit

Clawflow Free

Security checks for vulnerabilities and agentic risk

Overview

ClawFlow is a coherent productivity skill, but users should understand it can read calendar/task context and save daily summaries locally.

Install only if you are comfortable with a local assistant reading your OpenClaw workspace preferences, optional Todoist and Google Calendar data, current chat context, and file activity to create summaries. Review or delete files under ~/.openclaw/workspace/memory/ if they may contain sensitive information, and prefer an isolated or pinned install method for todoist-cli.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
INSTALL.md:123
Finding

Unpinned and Unverified Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location:

  • INSTALL.md:123-136
  • INSTALL.md:233-236
  • README.md:80-86
  • README.md:174-177

Vulnerability Type: Supply-chain risk caused by an unpinned and unverified Python dependency
Risk Level: Medium

Vulnerable Code Snippets

INSTALL.md:123-136:

markdown
## Step 6: (Optional) Install Integrations

### Todoist Integration

**Why:** See your tasks in morning brief and daily summary.

**How:**
```bash
# Install Todoist CLI
pip install todoist-cli

# Login
todoist login
text

`INSTALL.md:233-236`:

```markdown
If this fails:
```bash
pip install todoist-cli
todoist login
text

`README.md:80-86`:

```markdown
### Step 3: (Optional) Install Integrations

**For Todoist integration:**
```bash
pip install todoist-cli
todoist login
text

`README.md:174-177`:

```markdown
If this fails:
```bash
pip install todoist-cli
todoist login
text

### Technical Analysis

The documentation instructs users to install `todoist-cli` without specifying an exact version, validating package hashes, linking to a verified publisher, or using a reviewed lock file. The resulting package and its transitive dependencies are resolved dynamically from the user's configured Python package index.

Consequently, the code installed when a user follows these instructions can change after the Skill itself has been audited. Risks include a compromised future release, compromised transitive dependency, package-index substitution, or installation from an untrusted index configured in the user's environment.

This finding does not establish that the current `todoist-cli` package is malicious. The vulnerability is the unsafe and non-reproducible dependency installation procedure.

### Attack Path

1. An attacker compromises the referenced package, one of its transitive dependencies, or a package index trusted by the victim.
2. The 
...[truncated 1172 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin todoist-cli to an exact, reviewed version rather than resolving the latest release:

    bash
    python -m pip install "todoist-cli==<reviewed-version>"
    
  2. Publish a dependency lock file containing cryptographic hashes for the package and all transitive dependencies. Require hash verification during installation:

    bash
    python -m pip install --require-hashes -r requirements.txt
    
  3. Document the expected package publisher, canonical source repository, and verified package-index page so users can detect similarly named or substituted packages.

  4. Recommend installation in a dedicated virtual environment or through pipx to limit package conflicts and reduce exposure:

    bash
    pipx install "todoist-cli==<reviewed-version>"
    
  5. Audit the pinned package and its full dependency tree before publishing the selected version and hashes.

  6. Use a controlled package index or explicitly documented trusted index where feasible. Do not recommend bypassing TLS checks or adding unverified package sources.

  7. Add a dependency-update process that reviews new releases, regenerates hashes, runs security scanning, and updates the pinned version only after validation.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (13)

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · INSTALL.md (reported line 43)May include surrounding context.

cp skills/clawflow/templates/HEARTBEAT.md HEARTBEAT.md

text

**⚠️ Warning:** If you already have these files, DON'T overwrite them! Edit manually instead.

---

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guide instructs users to connect Todoist and Google Calendar, both of which expose personal schedule and task data, but it does not provide an explicit privacy warning, data-handling notice, or scope explanation. Users may enable the integrations without understanding what information the skill can access or how that information may be stored or summarized.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The installation guide says the skill should activate on broad phrases like "morning brief" or "daily summary" but does not define clear activation boundaries, exclusions, or consent expectations. In a skill that can read personal agenda and task data, ambiguous triggers increase the chance of unintended activation and unnecessary access to sensitive personal context.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The skill is explicitly designed to generate and save daily summaries, which introduces session persistence of potentially sensitive behavioral and work-history data. In a productivity assistant context this is expected functionality, but it still poses a real security/privacy risk if persistence is not minimized, disclosed, access-controlled, or made optional.

Content

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

md
- Motivational message

### Daily Summary 🌙
Ask: *"Create my daily summary"*

Get:
- What you accomplished today

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README states that daily summaries are saved to memory/<date>.md, but it does not clearly warn users that these files may contain sensitive personal activity data such as tasks, meetings, decisions, and document names. This creates a privacy and data-handling risk because users may enable or share the skill without understanding that persistent local records of their activity are being created.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill reads personal profile and identity files and later uses chat history, but it does not warn the user up front that these local personal data sources will be accessed. This creates a transparency and consent failure: users may invoke a simple productivity feature without realizing personal context and prior conversations will be inspected.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill can call calendar and Todoist integrations that retrieve highly personal schedule and task data from external services, but the description does not warn the user about that access. Without disclosure, a user may not understand that invoking the skill can query connected third-party accounts and surface sensitive appointments or tasks.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill tells the agent to inspect files modified today across the workspace, which can expose unrelated sensitive documents beyond what is necessary for a daily summary. Even if only timestamps are requested, this broad file discovery can reveal filenames, activity patterns, and potentially trigger over-collection of user data.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
90% confidence
Finding

This skill explicitly saves session-derived content into a persistent memory file, creating durable storage of potentially sensitive user activity. Persistence is risky here because the summary aggregates chat history, task data, file activity, and possibly calendar context, which can later be exposed, reused, or retained longer than the user expects.

Content

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

md
Wait for user response (max 2 minutes). If no response or "skip", proceed with auto-summary.

### Step 5: Write Summary

Save to: `~/.openclaw/workspace/memory/<YYYY-MM-DD>.md`.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill persistently writes daily summaries to memory files without clearly warning the user in advance. Because those summaries may contain chat-derived work details, decisions, and pending items, silent persistence increases privacy risk and can create an unintended long-term record of sensitive activity.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The changelog text explicitly narrows language support to English and Dutch as the primary supported languages. Under the policy, locale constraints should either offer user choice/opt-in or be clearly justified as region-specific; this wording presents a limitation without either safeguard.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

This line describes a language policy that prioritizes English and Dutch while relegating other languages to best-effort handling. Because the text does not mention user choice or a justified regional requirement, it can be read as an organizational language constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The template includes a natural-language profile field prepopulated as 'Language: English', which can be interpreted as enforcing a specific language by default. The policy for this audit flags language or locale constraints unless the skill offers user choice or clearly justifies the restriction.

Content

No source excerpt is available for this finding.