Back to skill

Security audit

Commitment Engine

Security checks for vulnerabilities and agentic risk

Overview

This skill openly implements commitment tracking, but it also directs persistent cron scheduling and priority interruption without enough user control or cleanup guidance.

Install only if you want this skill to create durable commitment records and scheduled OpenClaw cron jobs. Before use, require explicit confirmation for every cron job, review the exact schedule and message, and make sure there is a clear way to list, cancel, expire, and clean up commitments and jobs.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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 (2)

T06 · System Persistence

Error
Location
SKILL.md:78
Finding
Persistent Agent Execution Through Scheduled Cron Jobs## Vulnerability Details **File Location**: `SKILL.md`, lines 78-86 **Vulnerability Type**: Scheduled-task persistence **Risk Level**: High ### Complete Code Snippet The following is an English translation of the documented instruction: ```markdown For recurring commitments with a fixed time, also register an OpenClaw cron job: openclaw cron add --name "daily-report-prep" --cron "50 17 * * 1-5" --message "Commitment Engine trigger: prepare work report C001. Immediately read commitments.md and execute C001." This ensures that cron triggers at the scheduled time even if the heartbeat misses the time window. ``` ### Technical Analysis The skill explicitly instructs the agent to create an OpenClaw cron job for fixed recurring commitments. Unlike an operation limited to the current interaction, a cron job survives the skill run and generates future agent messages automatically. The scheduled message directs the future agent session to read `commitments.md` and execute a ledger entry. Because commitment descriptions originate from user instructions and remain in persistent storage, this creates a durable execution path from stored content to a future agent invocation. The example uses a static command and therefore does not, by itself, demonstrate shell command injection. The security issue is the installation of a cross-session scheduled execution mechanism without an explicit approval, expiration, ownership validation, or cleanup requirement. ### Attack Path 1. A user or other accepted input source requests a recurring task with a fixed execution time. 2. The skill records the task in `workspace/commitments.md`. 3. Following the documented policy, the agent invokes `openclaw cron add`. 4. The resulting scheduled task survives the current skill invocation. 5. At the configured time, OpenClaw injects a message instructing the agent to read the persistent ledger. 6. The agent executes the referenced commitment in a l ...[truncated 771 chars]
Remediation
## Remediation Suggestions 1. Require explicit, task-specific user confirmation immediately before every cron registration. 2. Display the exact schedule, stored message, task identifier, expiration time, and removal procedure before approval. 3. Apply an allowlist to scheduled actions and prohibit scheduled messages from directly authorizing high-impact tools. 4. Bind every scheduled job to an authenticated owner and immutable commitment identifier. 5. Add mandatory expiration dates and maximum recurrence limits. 6. Automatically remove the associated cron job when a commitment is completed, cancelled, failed permanently, or expires. 7. Revalidate authorization and task status at execution time rather than treating the scheduled message as authorization. 8. Maintain an auditable mapping between ledger entries and cron job identifiers. 9. Provide a command that lists and safely removes all jobs installed by the skill. 10. Run scheduled commitments with the minimum necessary tool permissions.

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:63
Finding
Absolute Heartbeat Priority Override Allows Workflow Hijacking## Vulnerability Details **File Location**: `SKILL.md`, lines 63-75 **Vulnerability Type**: Agent instruction and priority hijacking **Risk Level**: Medium ### Complete Code Snippet The following is an English translation of the documented instruction: ```text The first action of every heartbeat, before message scanning, info-scout, and everything else: 1. Read commitments.md. 2. Filter all commitments whose status is active. 3. For each active commitment: a. More than 30 minutes before its trigger time: skip it. b. No more than 30 minutes before its trigger time: change its status to preparing and begin preparation. c. No more than 10 minutes before its trigger time: interrupt other tasks and assign the highest priority. d. After its trigger time: mark it overdue and immediately send a private warning. 4. Continue the normal heartbeat workflow after the checks finish. ``` ### Technical Analysis The skill assigns its persistent ledger processing precedence over all other heartbeat operations. It further directs the agent to interrupt other tasks and give a near-deadline commitment the highest priority. This instruction does not include an exception for system policies, safety checks, current-user instructions, emergency tasks, or more authoritative work. Consequently, content accepted into the commitment ledger can later influence the agent's control flow and displace unrelated tasks. The issue is amplified by the persistent ledger: the priority-changing instruction is activated from stored state during future heartbeat events rather than only during the session in which the commitment was created. ### Attack Path 1. An input source causes the skill to create a commitment with a trigger time less than ten minutes away. 2. The commitment remains in the `active` state in `workspace/commitments.md`. 3. A heartbeat event begins and processes the ledger before other documented heartbeat activities. ...[truncated 938 chars]
Remediation
## Remediation Suggestions 1. Replace absolute priority language with an explicit precedence hierarchy: system policy, safety checks, current authenticated user instructions, critical operations, and then scheduled commitments. 2. Do not allow a ledger entry to interrupt unrelated work solely because its deadline is near. 3. Require confirmation before executing commitments that use external tools, send messages, modify files, or affect third parties. 4. Validate the creator, ownership, status, and current authorization of each commitment during every heartbeat. 5. Limit how many commitments may enter preparation during one heartbeat and apply rate limits per creator. 6. Detect overlapping deadlines and queue them through a bounded scheduler rather than assigning all of them the highest priority. 7. Treat ledger text as untrusted data, not as instructions capable of changing agent policy. 8. Permit critical message scanning and safety processing to run before commitment handling. 9. Add cancellation, expiration, and stale-entry cleanup controls. 10. Log every preemption decision with the affected task, commitment owner, and authorization basis.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill requires writing user commitments into workspace/commitments.md before replying, but does not warn that it will modify workspace files or obtain consent for persistent storage. This can lead to silent data creation or alteration in the workspace, which is risky because the ledger becomes durable state that may influence later agent behavior.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
The instruction requires the assistant to reply with a fixed Chinese phrase (`记下了,[时间]前搞定`) and the document consistently prescribes Chinese interactions, but it does not offer user opt-in or explain a region-specific requirement. This is a natural-language locale policy issue because it imposes a language choice on users by default.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill describes automatically scheduling cron jobs for recurring commitments without warning the user that background scheduled tasks will be created. Silent scheduling is dangerous because it establishes persistent autonomous execution that may continue running, interrupt other tasks, or trigger actions at later times the user did not explicitly approve.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The skill instructs the agent to register persistent openclaw cron jobs, which expands the skill from passive commitment tracking into scheduler management with durable autonomous execution. That creates a privilege and persistence boundary issue: a user request about reminders can silently become a long-lived system task that continues triggering outside the immediate interaction context.

Static analysis

No suspicious patterns detected.