Back to skill

Security audit

人格修行系统 Daily Cultivation

Security checks for vulnerabilities and agentic risk

Overview

This daily reflection skill is coherent, but it needs review because it can persistently schedule messages and store or send personal journal content without clear privacy or cleanup controls.

Install only if you intentionally want recurring OpenClaw reminders. Confirm the exact channels, vault path, timezone, and whether auto-save is enabled; use a private destination, avoid group chats for personal reflections, and make sure you know how to disable the cron jobs and delete archived notes.

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

T06 · System Persistence

Warning
Location
SKILL.md:133
Finding

Persistent Scheduled Agent Execution Without Lifecycle Controls

Content
View full analysis

Vulnerability Details

File Locations:

  • SKILL.md:133-148
  • references/config-guide.md:286-302
  • assets/config-yaml.md:79-84

Vulnerability Type: Persistent scheduled-task creation
Risk Level: Medium

Vulnerable Code

SKILL.md:133-148:

yaml
### Step 6: 配置 Cron

根据用户选择,自动配置 OpenClaw Cron 任务:

cron:
  - name: morning-wisdom
    schedule: "0 8 * * *"
    action: "发送晨语"
    skill: daily-cultivation

  - name: evening-reflection
    schedule: "0 21 * * *"
    action: "发送晚复盘"
    skill: daily-cultivation

references/config-guide.md:286-302:

yaml
### OpenClaw Cron 格式

在 OpenClaw 配置中添加:

cron:
  - name: morning-wisdom
    schedule: "0 8 * * *"      # 每天 08:00
    action: "发送晨语"
    skill: daily-cultivation

  - name: evening-reflection
    schedule: "0 22 * * *"     # 每天 22:00
    action: "发送晚复盘"
    skill: daily-cultivation

assets/config-yaml.md:79-84:

yaml
# ===== 定时任务 =====
cron:
  morning:
    schedule: "0 8 * * *"
  evening:
    schedule: "0 22 * * *"

Technical Analysis

The Skill directs the Agent to configure recurring OpenClaw Cron jobs during initialization. These scheduled jobs survive the interaction that created them and repeatedly invoke the Skill at fixed times.

Scheduled execution is consistent with the advertised reminder functionality, but the documented workflow lacks important lifecycle and authorization controls:

  • No explicit confirmation is required immediately before persistent jobs are created.
  • Scheduling is enabled in the example configuration by default.
  • No expiration date, execution limit, or automatic cleanup is defined.
  • No procedure is provided to list, disable, or remove installed jobs.
  • The jobs are not explicitly bound to an immutable, previously approved delivery target.
  • No reauthorization is required if the configured channel or referenced content changes later.

...[truncated 2221 chars]

Remediation
View remediation

Remediation Suggestions

  1. Require explicit approval before persistence

    • Present each proposed job, schedule, timezone, action, and destination.
    • Require a separate affirmative confirmation immediately before modifying OpenClaw configuration.
    • Do not treat general agreement to receive reminders as authorization to install persistent jobs.
  2. Use secure defaults

    • Keep scheduling disabled by default in example configurations.
    • Require users to opt in independently to morning and evening jobs.
    • Prefer session-scoped or one-time reminders when persistent execution is unnecessary.
  3. Implement lifecycle controls

    • Support an expiration date, maximum execution count, or review interval.
    • Document exact procedures for listing, pausing, and deleting every installed job.
    • Assign stable identifiers so jobs can be reliably managed without affecting unrelated tasks.
  4. Bind jobs to approved resources

    • Store and verify the approved channel type and destination when creating the job.
    • Require renewed authorization before changing the destination, vault, template, or other security-sensitive inputs.
    • Restrict file access to a designated Skill workspace and validated Obsidian vault.
  5. Validate configuration

    • Validate schedules and timezones before installation.
    • Canonicalize and constrain all configured paths.
    • Reject path traversal, absolute paths outside approved roots, and symbolic-link escapes.
    • Validate channel identifiers and avoid silently falling back to another destination.
  6. Improve transparency and auditability

    • Notify the user after a job is created, changed, disabled, or removed.
    • Record job creation time, approving user, schedule, destination, and last execution status.
    • Provide a visible indication in each automated message that it originated from a scheduled job.
  7. Apply least privilege

    • Run sch ...[truncated 264 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README promotes automatic local archival of nightly reflections and personal growth logs, which are likely to contain sensitive personal, emotional, and behavioral data, but it does not warn users about privacy, device access, backup exposure, or retention practices. In the context of a journaling/self-reflection skill, silent long-term storage increases the chance of unintended disclosure through shared devices, synced vaults, or insecure local folders.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill explicitly describes automatic sending to external channels and optional local archival to an Obsidian vault, but it does not clearly warn users that personal reflections and behavioral self-assessment data may be transmitted to third-party services or stored persistently on disk. Because the content includes intimate daily reflections, this creates a real privacy and data-handling risk through unintentional disclosure, oversharing, or retention beyond user expectations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The value "Asia/Shanghai" imposes a specific locale setting in the configuration example, and the surrounding natural-language content does not indicate that this is optional or user-selectable. Per policy, forcing a specific language or locale without opt-in can be a natural-language policy violation unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The template explicitly states that morning messages will be sent to external platforms such as Feishu, Discord, and Telegram, but it provides no privacy notice, consent guidance, or warning about data exposure. Because the content can include personalized greetings, schedules, or reflective/self-improvement information, users may unknowingly share personal data into third-party services with different retention, visibility, and compliance properties.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The guide explicitly encourages exporting and sharing archived reflections, which are likely to contain intimate personal journaling, habits, virtue assessments, and behavioral patterns, but provides no privacy warning, minimization guidance, or consent considerations. In the context of a self-reflection skill that stores daily personal content, this omission can lead to unintentional disclosure of sensitive personal data to friends, mentors, groups, or synced platforms.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The README presents the skill's prompts, templates, configuration examples, and expected outputs entirely in Chinese, including user-facing reminder text, without stating that other languages are supported or that Chinese is an intentional region-specific limitation. This can be a language/locale policy issue because it effectively forces one language without user opt-in.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This manifest-style file defines scheduled morning/evening actions, auto-save behavior, and a delivery channel, but it does not describe any trigger boundaries, exclusion conditions, or when the surrounding skill should or should not act beyond cron times. For manifest-like files, missing specificity on trigger scope can lead to unintended invocation or automation in contexts the user did not expect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The template states that reflections will be automatically saved locally, but it does not warn users that the content may include sensitive personal, emotional, health, or behavioral data. In a journaling/self-reflection skill, silent or default persistence increases privacy risk because users may disclose intimate details without realizing they are creating a durable local record.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The guidance encourages exporting or sharing reflections with mentors or friends without cautioning that the content can reveal sensitive personal information, routines, emotional struggles, and self-assessments. In this skill context, users are specifically prompted to record intimate self-reflection, so sharing advice without a privacy warning can lead to unintended disclosure.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The document presents the skill entirely in Chinese, including headings, instructions, and examples, with no indication that users can select another language or that Chinese is a required locale. This can violate a language/locale policy when a skill imposes a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.