Back to skill

Security audit

Agent Autonomy Kit 1.0.0

Security checks for vulnerabilities and agentic risk

Overview

This skill is review-worthy because it intentionally enables unattended agents to keep working from a shared queue and recurring schedules without clear safeguards.

Install only if you want unattended autonomous operation. Before enabling cron jobs or heartbeats, use a dedicated workspace, restrict writable paths and tools, require approval for sensitive or external actions, control who can edit the task queue, limit team-channel posting, and know how to list and remove 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:303
Finding
Persistent Unattended Agent Execution Through Scheduled Jobs## Vulnerability Details **File Location**: `README.md:303-337`; related guidance in `SKILL.md:17-20` and `README.md:127-137` **Vulnerability Type**: Scheduled cross-session autonomous execution **Risk Level**: High ### Vulnerable Code ```markdown ## Cron Jobs for Autonomy Set up automated reporting and work triggers: ### Daily Progress Report (10 PM) ```bash 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) ```bash 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) ```bash 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." ``` These run automatically — no human prompt needed. ``` ### Technical Analysis The Skill instructs users to register recurring OpenClaw cron jobs that survive the original Skill invocation and initiate agent activity without a contemporaneous user request. The morning and overnight jobs are especially broad: they direct the agent to select tasks, spawn team members, and perform research, writing, or analysis without defining an authorization boundary for each operation. Use of an isolated session limits session-context exposure but does not validate queued instructions, constrain available tools, or ensure that a human has approved the task being executed. The ...[truncated 1783 chars]
Remediation
## Remediation Suggestions - Do not enable recurring jobs by default or represent unattended execution as a routine installation step. - Require explicit, informed approval for each schedule, including its frequency, session type, accessible tools, runtime limits, and removal procedure. - Require separate human approval before a scheduled session executes any consequential queued task. - Restrict scheduled sessions to a dedicated least-privilege identity and an explicit allowlist of tools, network destinations, and writable paths. - Apply strict runtime, token, spending, and task-count limits to every scheduled invocation. - Validate queue-entry authorship and integrity, and reject entries created by unknown or unauthorized principals. - Prevent scheduled jobs from executing shell commands, modifying security-sensitive files, accessing credentials, or sending external messages unless individually authorized. - Record immutable audit logs containing the schedule trigger, task source, approvals, tool calls, and resulting changes. - Document commands to list, disable, and permanently remove all installed cron entries. - Prefer notification-only schedules that present proposed work to a human rather than executing it automatically.

T01 · Skill Instruction Hijacking

Error
Location
templates/HEARTBEAT.md:10
Finding
Untrusted Task Queue Can Hijack Persistent Agent Goals## Vulnerability Details **File Location**: `templates/HEARTBEAT.md:10-16`; related instructions in `SKILL.md:12-20` and `README.md:45-68` **Vulnerability Type**: Persistent instruction and goal hijacking through queue content **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 ``` The Skill's primary instructions reinforce this behavior: ```markdown # Agent Autonomy Kit Transform your agent from reactive to proactive. ## Quick Start 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 heartbeat template changes the agent's ongoing behavior from responding to current user requests into repeatedly selecting and executing instructions from a persistent Markdown queue. It does not require queue-entry provenance checks, a trusted-author policy, task-schema validation, scope restrictions, or human approval before tool use. Consequently, queue content functions as an indirect instruction channel. A party that can modify `tasks/QUEUE.md` can influence the agent's goals by placing an entry in the Ready section and assigning it high priority. The instruction to select another task whenever resources remain compounds the issue by encouraging continued execution rather than stopping for review. The vulnerability is not that Markdown itself executes code. Exploitation occurs when the agent treats attacker-controlled natural-language content as authorized instructions and carries those instructions out using its legitimate tools. ### Attack Path 1. The user replaces the normal heartb ...[truncated 1369 chars]
Remediation
## Remediation Suggestions - Treat all queue entries as untrusted data rather than authoritative instructions. - Require authenticated authorship and integrity protection for every queue modification. - Define an explicit allowlist of permitted task types and reject free-form requests for shell execution, credential access, security-setting changes, external publication, or destructive operations. - Require human approval before any task that reads sensitive data, writes outside a dedicated workspace, contacts external services, sends messages, creates schedules, or invokes additional agents. - Add an instruction-precedence rule stating that queue entries cannot override system, developer, safety, or current user instructions. - Parse tasks into a constrained schema with fields for author, requested capability, approved paths, approved destinations, expiration time, and approval status. - Execute approved tasks in a sandbox with least-privilege filesystem and network access. - Limit each heartbeat to one bounded task and require reauthorization before continuing to another. - Reject expired, ambiguous, nested, or instruction-like queue entries that attempt to redefine the agent's role or operating rules. - Maintain an audit trail of queue changes, task selection, approvals, tool calls, and completion status.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The README explicitly instructs the agent to update local files such as the task queue and daily memory during autonomous operation, but it does not warn users that enabling this skill grants ongoing write behavior without a fresh prompt. In an autonomy-focused skill, silent file modification is materially riskier because the whole purpose is to keep acting between human messages, increasing the chance of unintended edits, corruption, or persistence of incorrect data.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The skill recommends posting updates to Discord/Slack as part of routine autonomous work, but it does not include a privacy/disclosure warning about sending potentially sensitive task content to external services. Because this kit is designed for continuous unattended operation, agents may repeatedly disclose internal progress, blockers, or derived information to team channels without the user fully appreciating the data-sharing implications.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The description 'Stop waiting for prompts. Keep working.' is broad and behavior-oriented without clear scope, which can encourage invocation in contexts beyond the user's intended task boundaries. In an agent skill, language that normalizes continued autonomous action raises the risk of overbroad activation and unexpected execution patterns.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The tagline 'Transform your agent from reactive to proactive.' promotes ambiguous autonomous behavior without constraining scope, duration, or approval requirements. In security-sensitive environments, this can prime an agent or operator to accept unsolicited task execution beyond the original request.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The quick-start steps instruct users to set up queue-driven heartbeats and cron jobs for overnight work and daily reports, but they do not include a warning that this enables scheduled autonomous operation. That omission is dangerous because it can lead to unattended execution, persistence, and continued action without contemporaneous user review, increasing the chance of unintended changes or abuse.

Vague Triggers

Medium
Confidence
97% confidence
Finding
The file broadly directs the agent to 'keep working' whenever nothing urgent is pending, to pick tasks from a queue, and to continue iterating while time/tokens remain. This ambiguous activation scope encourages open-ended autonomous operation and repeated self-invocation without a clear stop condition, user approval boundary, or task scope limit, which can lead to unintended actions and compound the damage from any mistaken task selection or file modification.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill explicitly instructs the agent to modify repository files such as `tasks/QUEUE.md` and `memory/YYYY-MM-DD.md` without any user-facing disclosure, confirmation, or guardrail. In an autonomy-oriented skill, this creates a real risk of silent state changes, inaccurate logs, queue corruption, or unauthorized edits occurring without the user realizing the agent is operating in write mode.

Natural-Language Policy Violations

Low
Confidence
94% confidence
Finding
The cron examples force `America/Vancouver` as the timezone for scheduled automation. This is a natural-language/configured locale choice presented as the default behavior without opt-in or explanation, which can violate locale policy expectations for user choice.

Natural-Language Policy Violations

Low
Confidence
94% confidence
Finding
This example again specifies `America/Vancouver` as the timezone for scheduling. Repeating a forced locale across examples reinforces a default regional assumption without user opt-in.

Natural-Language Policy Violations

Low
Confidence
94% confidence
Finding
The overnight cron configuration also fixes the timezone to `America/Vancouver`. Because the file does not explain why this locale is required or present it as user-configurable, it is a policy-relevant locale constraint.

Static analysis

No suspicious patterns detected.