Back to skill

Security audit

Agent Autonomy Kit Zc

Security checks for vulnerabilities and agentic risk

Overview

The skill openly builds an autonomous agent workflow, but its recommended cron jobs and mutable task queue can keep agents working across sessions without clear approval boundaries.

Install only in a workspace where autonomous scheduled work is intended. Before enabling the cron examples, restrict the agent's permissions, use isolated sessions where possible, approve or review queue items before execution, cap runtime and token use, avoid sensitive credentials, and document how to list and remove the scheduled 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
README.md:279
Finding

Recurring Scheduled Jobs Enable Persistent Unattended Agent Execution

Content
View full analysis

Vulnerability Details

File Location: README.md:279-313
Vulnerability Type: T06: System Persistence
Risk Level: High

Vulnerable Code

bash
### Daily Progress Report (10 PM)
openclaw cron add \
  --name "Daily Progress Report" \
  --cron "0 22 * * *" \
  --tz "America/Vancouver" \
  --session isolated \
  --message "Generate daily progress report. Read tasks/QUEUE.md for completed tasks. Summarize: completed, in progress, blockers, tomorrow's plan."

### Morning Kickoff (7 AM)
openclaw cron add \
  --name "Morning Kickoff" \
  --cron "0 7 * * *" \
  --tz "America/Vancouver" \
  --session main \
  --system-event "Morning kickoff: Review task queue, pick top priorities, spawn team members for parallel work." \
  --wake now

### Overnight Work Check (3 AM)
openclaw cron add \
  --name "Overnight Work" \
  --cron "0 3 * * *" \
  --tz "America/Vancouver" \
  --session isolated \
  --message "Overnight work session. Pull tasks from queue that don't need human input. Do research, writing, or analysis. Log progress."

Technical Analysis

The documented installation process creates recurring scheduled jobs that survive the session in which the skill is configured. These jobs automatically wake an agent and direct it to perform work without contemporaneous user authorization.

The morning job is especially sensitive because it targets the main session and instructs the agent to spawn additional agents. The overnight job reads work from a mutable task queue. The scheduled payload is therefore not limited to a fixed, reviewed operation: its effective behavior can change whenever queue contents change.

Although these commands are presented as setup instructions rather than automatically executed package code, following the documented workflow establishes cross-session persistence and repeated autonomous execution.

Attack Path

  1. A user follows the README and installs t ...[truncated 1186 chars]
Remediation
View remediation

Remediation Suggestions

  • Remove the recurring cron setup from the default or recommended installation path.
  • Require explicit, per-run user authorization before performing queue tasks.
  • If scheduling is necessary, ship all jobs disabled by default and require informed opt-in.
  • Restrict scheduled sessions to isolated, least-privileged environments with no unnecessary credentials, shell access, or write access.
  • Use a strict allowlist of fixed, read-only scheduled operations rather than executing arbitrary queue content.
  • Validate queue entries against task and tool policies before execution.
  • Prohibit scheduled jobs from spawning additional agents without explicit approval.
  • Apply limits for runtime, token consumption, tool calls, and the number of tasks processed per event.
  • Document commands to list, disable, and remove every installed cron entry.
  • Maintain an audit log and notify the user before and after every scheduled execution.

T01 · Skill Instruction Hijacking

Error
Location
templates/HEARTBEAT.md:9
Finding

Mutable Task Queue Hijacks Heartbeat Goals and Drives Continuous Autonomous Work

Content
View full analysis

Vulnerability Details

File Location: templates/HEARTBEAT.md:9-21
Additional Locations: README.md:41-48, README.md:72-89, SKILL.md:14-23
Vulnerability Type: T01: Skill Instruction Hijacking
Risk Level: High

Vulnerable Code

markdown
## 2. Work Mode (use your time)

1. Read `tasks/QUEUE.md`
2. Pick highest-priority Ready task you can do
3. Do meaningful work on it
4. Update the queue (move to Done or note progress)
5. If time/tokens remain, pick another task

## 3. Before Finishing

- [ ] Log what you did to `memory/YYYY-MM-DD.md`
- [ ] Update task queue with new tasks discovered
- [ ] Post update to team if significant

Related instructions in SKILL.md include:

markdown
1. Create `tasks/QUEUE.md` with Ready/In Progress/Blocked/Done sections
2. Update `HEARTBEAT.md` to pull from queue and do work
3. Set up cron jobs for overnight work and daily reports
4. Watch work happen without prompting

Technical Analysis

The skill intentionally replaces passive heartbeat behavior with autonomous execution of instructions drawn from tasks/QUEUE.md. The queue is mutable and the skill provides no trust-boundary checks, approval gate, task allowlist, tool restrictions, or prohibited-operation policy.

As a result, queue text can alter the effective objective of later heartbeat sessions. Any party or integration able to write to the queue may supply tasks unrelated to the user's current request. The directive to pick another task while time or tokens remain expands the issue from a single operation into continuous execution.

Logging results into daily memory and adding newly discovered tasks can also carry queue-derived content into persistent state. The reviewed text does not explicitly instruct the agent to install attacker-controlled rules into memory, so this finding is classified as instruction hijacking rather than confirmed memory poisoning.

Attack Pa

...[truncated 1352 chars]

Remediation
View remediation

Remediation Suggestions

  • Treat all queue entries as untrusted data rather than automatically authorized instructions.
  • Require explicit user confirmation before a heartbeat executes any queued task.
  • Record task provenance, author identity, creation time, and approval status.
  • Enforce an allowlist of permitted task types and tools.
  • Reject tasks requesting credential access, external communication, code execution, privilege changes, security-control modification, or work outside approved workspace boundaries.
  • Limit each heartbeat to reviewing the queue or proposing a plan; execution should occur only after approval.
  • If autonomous operation is retained, limit each heartbeat to one bounded task with strict runtime, token, file-system, and network budgets.
  • Keep human requests and platform safety requirements authoritative over queue instructions.
  • Prevent queue content from being copied into long-term memory as instructions; store it only as clearly labeled, untrusted task data.
  • Use least-privileged isolated sessions and maintain an auditable record of queue changes and resulting tool calls.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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 (7)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description 'Stop waiting for prompts. Keep working.' promotes agent behavior without clear user-trigger or scope boundaries. In an agent skill, this can normalize autonomous action beyond explicit authorization, increasing the risk of unintended operations, resource consumption, or unsafe task execution.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The phrase 'Transform your agent from reactive to proactive' is marketing language, but in this context it implies broad autonomous initiation of work without specifying policy checks or approval gates. That ambiguity is dangerous because operators may deploy the skill assuming unattended initiative is acceptable in all contexts.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The quick-start guidance explicitly recommends cron-driven overnight work and 'Watch work happen without prompting,' which encourages continuous unattended execution without clarifying safeguards. In agent environments, this can lead to uncontrolled task execution, repeated side effects, policy violations, and difficulty detecting harmful or erroneous behavior in real time.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The template explicitly instructs the agent to continue selecting tasks and doing meaningful work whenever no urgent human input is present. This broad autonomous loop can cause unintended continued operation, including acting on stale priorities or taking actions the user did not explicitly authorize in the current session. In a skill whose stated purpose is to 'keep working,' this behavior is more dangerous because the autonomy is intentional and persistent rather than incidental.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The template directs the agent to update task queues, write memory logs, and add newly discovered tasks, all of which modify project state, but it provides no warning, approval gate, or change-control boundary. This can lead to unauthorized or noisy repository changes, accidental corruption of planning artifacts, or persistence of incorrect agent-generated state across future sessions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The cron examples explicitly set --tz "America/Vancouver" for automated runs, which imposes a specific locale/timezone in natural-language usage guidance. The README does not present this as an example to customize or offer users a choice, so it can conflict with organizational language/locale policies requiring user opt-in.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Triggers like 'Critical blockers?' and 'Team needs coordination?' are undefined and subjective, which lets the agent self-justify acting or escalating without clear user intent. Ambiguous urgency language increases the chance of overreach, especially in an autonomy-focused skill where the default is to keep taking initiative.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.