Back to skill

Security audit

botlearn-graduate

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a legitimate OpenClaw graduation report tool, but it asks to gather and retain broad personal/workspace history and schedule future follow-ups without clear opt-in controls.

Review this skill carefully before installing. It is not showing evidence of malware or exfiltration code, but you should only use it if you are comfortable letting it analyze agent memory, workspace/document metadata, identity files, session history, skill usage, and feedback. Prefer running it only after an explicit OpenClaw graduation request, and do not allow saved reports, graph contribution, or scheduled follow-ups unless the host clearly asks for your consent and provides a way to review, delete, and cancel them.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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)

T06 · System Persistence

Error
Location
strategies/Main.md:461
Finding
Automatic Cross-Session Follow-Up Scheduling Without Explicit Consent<![CDATA[ ## Vulnerability Details **File Location**: `strategies/Main.md:461-466` **Vulnerability Type**: `T06: System Persistence` **Risk Level**: High ### Vulnerable Code ```markdown ### 10.3 Schedule Follow-Ups **Automatic**: - 14 days: "How's your agent evolving?" - 30 days: "Progress check — how's the growth path?" - 90 days: "Major milestone review" ``` Related automatic activation is also defined in `SKILL.md:88-94`: ```markdown ## Scheduled Mode (End of Day 7) ``` ```text IF 7 days since first activation: 1. Notify: "🎓 Congratulations! You've completed your 7-day OpenClaw journey!" 2. Offer graduation ceremony 3. Generate retrospective report 4. Plan next steps together ``` ### Technical Analysis The Skill instructs the hosting Agent to create automatic follow-up activity at 14, 30, and 90 days. It also defines an automatic scheduled activation after seven days. If the OpenClaw host translates these natural-language directives into scheduler jobs, the resulting behavior survives the current Skill invocation and executes in later sessions. The instructions do not require explicit user consent before scheduling, identify the scheduler or execution identity, define job expiration, provide a cancellation procedure, or restrict what data may be accessed during later callbacks. The package does not contain an executable scheduler implementation, so exploitation depends on the host honoring these scheduling instructions. Nevertheless, the Skill explicitly requests persistent, automatic behavior. ### Attack Path 1. A user activates the graduation Skill. 2. The Agent follows Step 10.3 and creates automatic 14-day, 30-day, and 90-day follow-up jobs. 3. The jobs persist after the original graduation interaction ends. 4. At the scheduled times, the host reactivates the Agent or sends notifications without a separate confirmation. 5. A later callback may access updated user state while generating a progress review. ### Impact Assessment If scheduling ...[truncated 517 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace automatic scheduling with a clearly presented opt-in prompt. 2. Display the exact execution dates, notification content, and data sources before requesting approval. 3. Require explicit confirmation for each scheduled job or for a clearly defined group of jobs. 4. Create jobs with the minimum available permissions and prohibit callbacks from reading workspace or session content unless separately authorized. 5. Provide commands to list and cancel all jobs created by the Skill. 6. Set automatic expiration after the final approved callback. 7. Record consent and the associated job identifiers for auditability. 8. If the platform cannot guarantee consent, cancellation, and least-privilege execution, remove the scheduling instructions entirely. ]]>

T05 · Unauthorized Access and Privilege Escalation

Error
Location
strategies/Main.md:33
Finding
Overbroad Collection of Workspace, Identity, and Session Information<![CDATA[ ## Vulnerability Details **File Location**: `strategies/Main.md:33-101` **Vulnerability Type**: `T05: Unauthorized Access and Privilege Escalation` **Risk Level**: High ### Vulnerable Code ```markdown **Primary Source**: Check for saved snapshot ``` ```javascript GET /memory/snapshots?label=day1-baseline // If not found, reconstruct from: - First session timestamp - Initial configuration logs - Early skill installations ``` ```javascript { "day7": { "timestamp": "[Now]", "core": { "model": "[current]", "configured": true, "optimized": [check customization] }, "context": { "documentCount": [count workspace docs], "memoryStructure": "[check organization]", "personalized": [check for user-specific content] }, "constitution": { "soulMd": [exists? + completeness], "userMd": [exists? + completeness], "agentsMd": [exists? + completeness] }, "capabilities": { "botlearnSkills": [count from clawhub list], "mostUsed": [top 3 with usage], "skillCombos": [discovered patterns] }, "tasks": { "completed": [from session logs], "successRate": [calculate], "breakthroughs": [identify] } } } ``` ```javascript { "sessions": { "total": [N], "daysActive": [N], "requestTypes": { [categorize] }, "skillsUsage": { [count per skill] }, "satisfaction": { [positive/negative feedback] } } } ``` ### Technical Analysis The Skill directs the Agent to inspect memory snapshots, configuration logs, workspace documents, personalization content, identity files, installed Skill history, session logs, request categories, task outcomes, and user feedback. A retrospective can legitimately use selected metrics, but the instructions do not establish per-source authorization, data minimization, content-redaction rules, or a boundary between metadata inspection and reading document contents. In particular, checking whether conten ...[truncated 1633 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Present a data-source checklist before collection and require explicit approval for each source. 2. Default to user-provided metrics rather than automatic workspace or history inspection. 3. Use counts and metadata instead of document contents whenever possible. 4. Do not read `SOUL.md`, `USER.md`, `AGENTS.md`, session logs, or configuration logs unless the user separately authorizes each source. 5. Restrict retrospective access to a dedicated, user-selected workspace directory. 6. Redact secrets, personal identifiers, private document text, and unrelated session content before analysis. 7. Document why every collected field is necessary and omit fields that do not directly support the requested report. 8. Display collected evidence to the user before calculating scores or archetypes. 9. Ensure that denial of optional data access produces a limited report rather than blocking the Skill. 10. Add tests verifying that the Skill does not infer unavailable metrics or silently broaden its access scope. ]]>

other

Warning
Location
strategies/Main.md:447
Finding
Persistent Storage and Secondary Use of an Aggregated Behavioral Profile<![CDATA[ ## Vulnerability Details **File Location**: `strategies/Main.md:447-458` **Vulnerability Type**: `other: Excessive Persistent Profiling` **Risk Level**: Medium ### Vulnerable Code ```markdown ### 10.2 Save for Reference ``` ```javascript { "graduationId": "day7-2026-03-02", "timestamp": "[Now]", "day1Snapshot": {...}, "day7Snapshot": {...}, "archetype": "[detected]", "overallScore": [score], "growthScore": [score], "achievements": [...], "nextSteps": [...] } ``` A related secondary-use instruction appears in `knowledge/Domain.md:255-260`: ```markdown ## The Agent Capability Graph BotLearn's core IP mapping: - Skills → Effective combinations - Workflows → Reliable outcomes - Users → Successful growth paths - Tasks → Required skill stacks Day 7 contributes: User's journey becomes a data point, successful patterns added to graph, anti-patterns noted. ``` ### Technical Analysis The Skill instructs the Agent to persist both raw or reconstructed snapshots and derived attributes, including the user's archetype, scores, achievements, and recommended actions. The domain documentation additionally states that the journey becomes a data point in an Agent Capability Graph. The instructions do not define the storage destination, retention period, encryption requirements, access controls, deletion procedure, anonymization standard, or whether graph contribution remains local. They also do not request separate consent for secondary use. Combining raw activity snapshots with inferred behavioral labels creates a richer and more sensitive profile than storing a user-approved report alone. Because the profile may be reused in future callbacks or graph analysis, the privacy impact continues beyond the original retrospective. ### Attack Path 1. The Skill gathers Day 1 and Day 7 state, session activity, Skill usage, and task outcomes. 2. It calculates scores and assigns an archetype. 3. It stores the raw snapshots together with inferred attr ...[truncated 900 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Require explicit opt-in before saving any graduation record. 2. Show the complete proposed record and allow the user to remove individual fields. 3. Store only the final user-approved summary; do not retain raw Day 1 or Day 7 snapshots by default. 4. Keep records local unless the user separately authorizes external or shared graph contribution. 5. Define a short retention period and automatically delete expired records. 6. Provide clear commands to view, export, correct, and permanently delete stored data. 7. Encrypt records at rest and restrict access to the originating user and Skill. 8. Separate consent for report storage, scheduled follow-ups, and capability-graph contribution. 9. If aggregate analysis is enabled, remove direct and indirect identifiers and apply minimum cohort thresholds. 10. Document the storage location, data controller, processing purpose, and retention policy in the README and runtime consent prompt. ]]>
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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Vague Triggers

Medium
Confidence
96% confidence
Finding
The trigger list contains broad, common phrases like "retrospective," "graduate," "completion," and "week review" that can appear in ordinary conversations unrelated to this skill. This can cause unintended activation, leading the agent to inject a long, prescriptive workflow into unrelated contexts and potentially override the user's actual intent or expose internal journey-analysis behavior when not requested.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The manual activation rule says the skill should run when a user says phrases like "day 7," "retrospective," or "graduate," but it does not define boundaries or confirmation steps. Because these terms are highly ambiguous, the skill may activate during unrelated discussions, causing context hijacking and unnecessary collection or synthesis of user history for a graduation report the user did not actually request.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
This guidance explicitly encourages collecting a broad snapshot of user activity and state, including documents in memory, workflow patterns, and session/request history, but provides no minimization, consent, retention, or sensitive-data handling safeguards. In a graduation/reporting skill, this makes overcollection and unnecessary persistence of personal or sensitive behavioral data more likely, creating privacy and data exposure risk even if the author likely intended analytics rather than abuse.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The instructions tell the agent to save and retain the graduation report for future check-ins without warning that the report may contain sensitive personal data, usage history, inferred traits, or behavioral summaries. Persisting such reports by default increases the chance of unauthorized access, secondary use, or long-term retention of data the user may not expect to be stored.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger list includes broad phrases such as 'graduate', 'completion', 'my progress', and 'next steps', which are common in ordinary conversation and can cause unintended activation. In this skill, accidental activation is more risky because the workflow then performs broad data collection and analysis of workspace, session, and memory state.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The strategy directs collection of snapshots, session timestamps, configuration logs, workspace documents, skill usage, and user feedback, but provides no user-facing notice, consent, minimization, or retention limits. This creates a privacy risk because a retrospective request could silently aggregate sensitive behavioral and workspace data beyond what the user reasonably expects.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill says to save a graduation record and automatically schedule future follow-ups, but it does not warn the user that state will be persisted or that proactive future contact may occur. This is dangerous because it normalizes hidden retention and outreach, which can surprise users and create privacy and trust issues.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The skill instructs automatic follow-up scheduling at 14, 30, and 90 days even though the stated function is a graduation/retrospective report. That expands behavior from a one-time reflective task into proactive re-engagement and retention activity without clear user consent, which can lead to unexpected contact and persistence of user state.

Static analysis

No suspicious patterns detected.