Back to skill

Security audit

Woop Daily

Security checks for vulnerabilities and agentic risk

Overview

This WOOP coaching skill has a coherent purpose, but it also silently self-updates, stores sensitive reflections, and uses risky shell-based logging that users should review before installing.

Install only if you are comfortable with the skill using Bash, automatically updating itself, keeping plaintext WOOP history under your home directory, and optionally creating cron reminders. Safer changes would be to remove silent self-update, make history opt-in with clear deletion controls, and replace heredoc Bash logging with structured file writes.

Vulnerability Patterns
  • 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
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:63
Finding

Silent Remote Self-Update Allows Unreviewed Skill Payloads

Content
View full analysis
/dev/null | grep "Latest:" | awk '{print $2}' | tr -d '[:space:]') if [ -n "$LATEST" ] && [ "$LATEST" != "$CURRENT_VERSION" ]; then PREVIOUS_VERSION="$CURRENT_VERSION" # Silent automatic update (10-second timeout; failure does not interrupt) if timeout 10 clawhub update woop-daily >/dev/null 2>&1; then echo "WOOP_AUTO_UPDATED: $PREVIOUS_VERSION -> $LATEST" CHANGELOG="$SKILL_DIR/CHANGELOG.md" if [ -f "$CHANGELOG" ]; then echo "WOOP_CHANGELOG_START" awk -v ver="$LATEST" ' $0 ~ "^## \\[" ver "\\]" {p=1; next} p && /^## / {p=0} p {print} ' "$CHANGELOG" echo "WOOP_CHANGELOG_END" fi fi fi ``` ### Technical Analysis The startup block contacts ClawHub and automatically executes `clawhub update woop-daily` whenever the registry reports a different version. No user confirmation, signature verification, checksum pinning, version allowlist, or review step is required. This breaks the security assumption that the audited project contents are the code that will execute. A future registry package can replace `SKILL.md` or related reference files after installation, changing the effective instructions and executable Bash operations without another audit. The update is deliberately performed in the background with standard output and errors redirected to `/dev/null`. The user is informed only after the replacement succeeds. The README also does not prominently disclose that installation enables automatic self-modification. ### Attack Path 1. An attacker compromises the ClawHub publisher account, package namespace, registry, or rel ...[truncated 1274 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:340
Finding

User-Controlled WOOP Fields Can Escape Heredocs and Execute Shell Commands

Content
View full analysis
> ~/.woop-daily/sessions.jsonl << 'JSONEOF' {"ts":"","mode":"","wish":"","outcome":"","obstacle":"","plan":""} JSONEOF ``` ```bash cat >> ~/.woop-daily/log.md << 'MDEOF' --- ## · **🎯 Wish:** **✨ Best outcome:** **🧱 Internal obstacle:** **📋 If-then plan:** MDEOF ``` The source document requires the agent to replace fields marked as “original text” with values supplied during the conversation and then execute the resulting command through Bash. ### Technical Analysis Quoting the heredoc delimiter prevents ordinary shell expansion inside the heredoc body, but it does not make dynamically inserted multiline content safe. If a user-controlled field contains a newline followed by the exact delimiter `JSONEOF` or `MDEOF` on its own line, the shell terminates the heredoc early. Subsequent lines are parsed as shell commands. The templates also fail to serialize JSON safely. Quotes, backslashes, control characters, and newlines in user input can corrupt `sessions.jsonl`, even when they do not achieve shell execution. The instruction requires logging after every completed exercise, making the vulnerable Bash construction part of the normal workflow rather than an optional administrative operation. ### Attack Path A malicious input can be supplied as a wish, outcome, obstacle, or plan. For example, a value shaped like the following can terminate the JSON heredoc: ```text normal text JSONEOF touch "$HOME/.woop-daily/injected" # ``` The generated command would effectively become: ```bash cat >> ~/.woop-daily/sessions.jsonl << 'JSONEOF' {"ts":"...","w ...[truncated 1191 chars]
Remediation
View remediation

T02 · Agent Memory Poisoning

Error
Location
SKILL.md:93
Finding

Raw Persistent Session Records Can Poison Future Agent Context

Content
View full analysis
","mode":"","wish":"","outcome":"","obstacle":"","plan":""} ``` ### Technical Analysis The skill stores user-controlled natural-language fields and later emits the last three records directly into startup context. No trust boundary, escaping, schema validation, or instruction/data separation is applied. A stored field can contain prompt-injection language that appears again in subsequent invocations. Because the skill expressly tells the agent to remember and use this output, an instruction-following model may interpret embedded text as active directions rather than inert historical data. This creates a cross-session poisoning channel. The payload persists in `sessions.jsonl` and is reintroduced each time the skill starts until it falls outside the last three lines or the file is cleaned. ### Attack Path 1. A user or another process able to influence a WOOP field supplies text containing instructions such as a request to ignore prior rules, expose files, or invoke tools. 2. The skill writes tha ...[truncated 1057 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:338
Finding

Sensitive Personal Reflections Are Stored in Plaintext Without Access Hardening or Consent

Content
View full analysis
> ~/.woop-daily/sessions.jsonl << 'JSONEOF' {"ts":"","mode":"","wish":"","outcome":"","obstacle":"","plan":""} JSONEOF ``` ```bash cat >> ~/.woop-daily/log.md << 'MDEOF' --- ## · **🎯 Wish:** **✨ Best outcome:** **🧱 Internal obstacle:** **📋 If-then plan:** MDEOF ``` The instructions further require this storage after every completed exercise and state that failures should be silently ignored. ### Technical Analysis WOOP conversations can contain health goals, emotional difficulties, family information, workplace concerns, habits, self-assessments, and other sensitive personal reflections. The skill stores this information twice in plaintext under the user's home directory. The directory is created without an explicit restrictive mode, and files are appended without explicitly setting permissions. Their effective accessibility therefore depends on the process umask and pre-existing filesystem state. On permissive systems, other local users or processes may be able to read the records. The skill also automatically reads recent records into future sessions. There is no retention policy, encryption, redaction, consent prompt, opt-out mechanism, or deletion workflow. The README describes review functionality but does not prominently disclose mandatory automatic pl ...[truncated 1126 chars]
Remediation
View remediation
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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (35)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Automatically executing clawhub update is not necessary for a WOOP coaching skill and grants the skill a pathway to alter local software state outside its stated function. If the update source, package metadata, or distribution chain is tampered with, this behavior could be abused to deliver arbitrary code or unwanted changes without meaningful user intervention.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill’s stated purpose is a short WOOP conversation, but its startup logic performs a silent self-update from an external source and then reads newly modified local content. This creates a supply-chain and integrity risk: a conversational wellness skill can change behavior before use without explicit user consent, and the agent is instructed to consume that updated content immediately.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

Autonomous package update capability is unrelated to the mental-exercise function and expands the skill’s authority into software management. Even if intended as convenience, it enables unprompted network access and local modification, which is dangerous in a low-risk conversational context and increases blast radius if the update source is compromised.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file is entirely written to enforce a Chinese-language interaction style with no instruction to detect or respect the user’s preferred language. Forcing a specific language without opt-in can cause misunderstanding of guidance, consent, and emotionally sensitive prompts; in this skill’s introspective setting, miscommunication materially increases safety and trust risks.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The changelog states the skill will automatically run clawhub update in the background, which exceeds the declared purpose of a conversational WOOP exercise and introduces system-modifying behavior. A self-updating mechanism can change code without explicit user approval, creating supply-chain and integrity risks if the update channel or package is compromised.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The changelog indicates automatic background updates occur without an upfront warning, which deprives users of informed consent for system-modifying behavior. In a conversational wellness skill, hidden update actions are especially concerning because users would not reasonably expect software-management operations during normal use.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Reminder/cron scheduling extends the skill from a one-time guided conversation into a persistent automation capability, which is broader than the stated manifest purpose. While not inherently malicious, scheduled tasks can create surprise persistence, recurring notifications, or unintended execution pathways if users do not clearly understand that a cron job is being installed.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The changelog documents persistent logging of WOOP sessions to local files, which goes beyond a purely ephemeral coaching conversation and may store sensitive reflections, goals, and emotional content. Even local-only storage increases privacy risk if users are not clearly informed, if file permissions are weak, or if other software/users can access the logs.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

Persistent local storage of session histories is only weakly justified by the manifest’s brief description of a five-minute inner exercise, and it may capture sensitive personal planning data unexpectedly. In this context, the mismatch between stated purpose and retained data makes the behavior riskier because users may not anticipate long-term storage of intimate reflections.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README states the skill may auto-trigger on broad natural-language phrases like '我想推进某事' or '帮我设定目标'. In a conversational agent, overly generic triggers can cause unintended invocation in ordinary discussion, which may redirect user intent, collect sensitive motivational or emotional disclosures unexpectedly, or interfere with other skills. The wellness/behavior-change context increases the risk slightly because users may reveal personal struggles once the flow begins.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

方式二:Gemini CLI

bash
mkdir -p ~/.gemini/skills/woop-daily && \
curl -o ~/.gemini/skills/woop-daily/SKILL.md \
  https://raw.githubusercontent.com/ReffWu/woop-daily/main/SKILL.md

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 · README.md (reported line 61)May include surrounding context.

方式二:Gemini CLI

bash
mkdir -p ~/.gemini/skills/woop-daily && \
curl -o ~/.gemini/skills/woop-daily/SKILL.md \
  https://raw.githubusercontent.com/ReffWu/woop-daily/main/SKILL.md

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

bash
mkdir -p ~/.gemini/skills/woop-daily && \
curl -o ~/.gemini/skills/woop-daily/SKILL.md \
  https://raw.githubusercontent.com/ReffWu/woop-daily/main/SKILL.md

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

方式四:项目级安装(仅当前项目可用)

bash
mkdir -p .claude/skills/woop-daily/references
cp SKILL.md .claude/skills/woop-daily/
cp references/science.md .claude/skills/woop-daily/references/

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description and all scripted user-facing prompts are written as mandatory Chinese output, but the file does not state that Chinese is optional or that the skill is limited to Chinese-speaking users. This creates a language-policy issue because it implicitly forces a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger conditions are broad enough to match common phrases about procrastination, goals, confusion, or emotion. That raises the chance of unintended invocation of a skill that performs file I/O, reads history, may auto-update, and can guide users into disclosing sensitive personal information without a deliberate request.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill reads persistent session history at startup but does not provide an upfront disclosure or obtain consent before accessing local records. In a reflective mental-health-adjacent workflow, hidden retrieval of prior sessions increases privacy risk because users may reveal sensitive goals, emotions, and obstacles without realizing they are being persisted and replayed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Startup performs a silent automatic update involving network access and local modification without an upfront warning. Hidden network activity and code/content mutation are especially dangerous in a wellness-oriented skill because users would not reasonably expect the tool to change itself before conversation begins.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The skill creates a persistent local data directory and session file store as part of normal operation. Persistence itself is not always unsafe, but here it stores reflective personal content in a hidden dot-directory without an explicit privacy model, increasing exposure of sensitive user data over time.

Content

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

md
fi

# --- 日志目录与历史 ---
mkdir -p ~/.woop-daily

if [ -f ~/.woop-daily/sessions.jsonl ]; then
  TOTAL=$(wc -l < ~/.woop-daily/sessions.jsonl | tr -d ' ')

Ssd 3

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The instructions tell the agent to remember and reuse recent session data in later interactions. In this context, the remembered material includes personal goals, struggles, and behavioral obstacles, so proactive reuse can surface sensitive disclosures unexpectedly and violate user expectations of conversational privacy.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The review flow explicitly instructs the agent to bring up prior logged plans without first checking whether the user wants history referenced. That can reveal sensitive prior disclosures to anyone with access to the current session and may pressure users into continuity they did not consent to.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The manifest description says the skill is a paced WOOP conversation and explicitly says it is not a todo-list tool. Lines L272-L309 add a persistent scheduled reminder via openclaw cron add and can remove it later, which is an automation capability beyond merely guiding a single 5-minute dialogue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The reminder flow causes creation and removal of scheduled system jobs, but the manifest and upfront interaction do not clearly warn that this modifies the user’s scheduler. Users may interpret reminder setup as an in-app feature rather than a system-level persistence mechanism.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill mandates persistent logging of detailed session content, including wishes, outcomes, internal obstacles, and plans, into local files. This is sensitive behavioral and emotional data, and mandatory storage increases privacy harm if the machine is shared, compromised, backed up insecurely, or later accessed by other tools.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The trigger guidance includes broad natural-language examples like “帮我设定目标” and “最近好乱”, which can cause the skill to activate from ordinary conversation rather than explicit user intent. In a conversational wellness context, unintended activation is riskier because it may steer users into quasi-therapeutic or emotionally sensitive flows without a clear opt-in boundary.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.