Back to skill

Security audit

Goal Achiever: Self-Evolving Agent System

Security checks for vulnerabilities and agentic risk

Overview

This skill can automate logged-in publishing, create and run scripts, change future prompts, and install scheduled background jobs without enough user control.

Install only if you intentionally want a highly automated publishing system and can enforce external controls: per-post approval, platform/account allowlists, no internal-API or anti-automation bypass, sandboxed script execution, no LaunchAgent registration unless explicitly requested, and human review before prompt or registry changes.

Vulnerability Patterns
  • 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
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (5)

T06 · System Persistence

Error
Location
references/cron-design-reference.md:157
Finding

Mandatory Installation of a Persistent macOS LaunchAgent

Content
View full analysis
.plist ``` ```xml ProgramArguments /usr/bin/python3 StartCalendarInterval Hour 9 Minute 0 ``` ```bash launchctl load ~/Library/LaunchAgents/.plist launchctl list | grep launchctl start # 手动触发 launchctl unload ~/Library/LaunchAgents/.plist ``` The mandatory development process subsequently requires: ```text 6. 创建 plist,直接调用 python3 脚本(非 bash 包装) 7. launchctl load + launchctl start 验证 ``` ### Technical Analysis The reference instructs the Agent to create a plist in the user's `~/Library/LaunchAgents` directory and register it with `launchctl`. A loaded LaunchAgent persists beyond the immediate Skill invocation and can execute the generated Python program according to a schedule. Scheduled execution may be legitimate when the user explicitly requests recurring automation. However, the documented process treats registration and immediate execution as mandatory parts of cron-script development and does not require explicit approval before creating or loading the service. It also does not constrain the generated program's filesystem access, network destinations, or available environment. This exceeds minimum privilege for ordinary content collection, report generation, or one-shot publishing tasks. Those tasks can be completed without creating cross-session system state. ### Attack Path 1. A task is interpreted as requiring scheduled or cron-style execution. 2. ...[truncated 994 chars]
Remediation
View remediation
.plist rm ~/Library/LaunchAgents/.plist ``` 9. Record installation and removal in an auditable log. 10. Never make `launchctl load` or `launchctl start` mandatory merely because a cron-related script was developed. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:331
Finding

Generated Scripts Are Executed After Syntax-Only Validation

Content
View full analysis
│ 返回码 = 0 → 通过,写入 task_script,进入 Step 4 │ 返回码 ≠ 0 → 截获 stderr,进入局部自愈循环 │ └── Shell 脚本 → exec: bash -n 返回码 = 0 → 通过 返回码 ≠ 0 → 进入局部自愈循环 ``` ```text 1. 将原脚本内容 + stderr 报错信息 提交给 LLM(当前 AI 上下文)进行修复 2. 重新写入脚本文件 3. 再次执行静态检查 4. 通过 → 写入 task_script,进入 Step 4 ``` ```text 5. 按技术方案进行开发,生成可执行脚本(Python/Bash 等) 6. 自检:确认脚本逻辑与技术方案一致 7. 将脚本写入脚本注册表 ``` ### Technical Analysis `python3 -m py_compile` and `bash -n` only verify syntax. They do not establish that a script is safe to execute. A syntactically valid script may still: - Run arbitrary subprocesses. - Read credentials or private files. - Modify files outside the project. - Install persistence. - Connect to arbitrary network destinations. - Use authenticated browser or messaging sessions. - Construct commands from untrusted task data. - Exhaust system resources. The process describes this check as a sandbox precheck and then allows the script to enter real execution. No actual operating-system sandbox, capability restriction, command allowlist, network policy, or security review is specified. Successfully executed scripts can also be registered for future reuse, extending the scope of a single unsafe generation event. ### Attack Path 1. External platform content, historical logs, user feedback, or task context introduces hostile instructions or malicious data. 2. The LLM incorporates those instructions into a newly generated Python or shell script. 3. The resulting script is syntactically valid. 4. `py_compile` or `bash -n` returns success. 5. The Skill records the script in `task_script`. 6. Step 4 executes the script with the Agent's available user permissions. 7. A successful or decept ...[truncated 576 chars]
Remediation
View remediation

T02 · Agent Memory Poisoning

Error
Location
SKILL.md:588
Finding

Untrusted Retrospective Data Can Persistently Rewrite Future Operational Prompts

Content
View full analysis
Remediation
View remediation

T01 · Skill Instruction Hijacking

Warning
Location
references/prompts/meta_prompt.md:165
Finding

Meta-Prompt Performs Role Reassignment and Mandates Unrelated Exact Output

Content
View full analysis
Remediation
View remediation

other

Error
Location
references/external-publishing-design-reference.md:4
Finding

Authenticated Publishing Workflow Explicitly Bypasses Anti-Automation Controls

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (51)

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The document claims to be 'process-only, no scripts,' yet later instructs creating, validating, executing, and registering scripts. This contradiction is dangerous because it obscures the skill’s real capabilities from reviewers and users, undermining informed consent and making risky automation appear lower privilege than it actually is.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill mandates browser automation and external-platform publishing via an attached Chrome session, but provides no account-safety, privacy, or authorization safeguards. In context, this is especially dangerous because the skill also forbids requesting user confirmation, increasing the chance of unauthorized posting, account misuse, or exposure of authenticated session data.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The prompt content is fundamentally misaligned with the skill's declared purpose: instead of executing or supporting end-to-end target-platform task workflows, it acts as a Claude prompt-optimization assistant. In an agentic system, this kind of specification drift can cause the wrong capability to be invoked, leading to task misexecution, policy bypass through role confusion, or failure to perform required write-back and validation steps.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

These lines explicitly instruct the model not to generate workflows or orchestration plans, directly conflicting with a skill advertised as an end-to-end workflow engine. This contradiction can disable required control steps, causing the agent to omit decomposition, execution sequencing, or safety checks that the surrounding platform expects.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The prompt rules globally forbid workflow-style outputs, which again conflicts with the skill's stated purpose of handling a complete process for target-platform task execution. In practice, this can cause silent failure modes where the agent returns a single prompt artifact instead of performing structured task handling, reducing reliability and potentially bypassing required review or reporting stages.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

文件名、描述和全文均以中文编写,且技能名称在 L002 直接固定为中文“赢得目标”,未见允许根据用户偏好切换语言或输出语言选择的说明。按规则,若技能强制特定语言而无用户选择或明确合理场景限定,构成语言/地区策略风险。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

L003 将触发词定义为“修改目标、赢得目标、触发目标实现、触发{网站名称}任务实现”,其中“修改目标”“赢得目标”等表述较宽泛,缺少边界条件或排除示例,容易与普通交流中的常见说法混淆。文档也未说明哪些相似表述不应触发该技能,因此存在非预期唤起风险。

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest description at L003 limits the skill to reading task JSON and goal prompts, decomposing tasks, executing them, self-checking, and writing back results/scores for goal-platform publishing. However, Step 0.0 introduces an alternate 'Prompt 生产' mode that diverts the skill into generating prompts instead of executing publishing tasks, which is a distinct capability beyond the described workflow.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

L138-L139 使用“撰写/生成/写/创建 + Prompt + 平台名”以及“帮我写 {goal_web} 的复盘Prompt / 任务拆解Prompt”作为触发描述,其中“写”“帮我写”等属于高频自然语言表达。虽然有“Prompt + 平台名”限制,但仍缺少明确的格式约束和负例,容易与普通协助写作请求发生重叠。

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The workflow directs the agent to automatically write and update multiple local files, including task state, logs, retrospectives, registries, and prompts, without requiring user acknowledgement of persistence or system mutation. This creates integrity and audit risks because users may unknowingly authorize durable state changes that influence future runs.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill includes instructions to generate scripts and run shell/Python validation commands, which materially increases capability beyond documentation or publishing orchestration. In context, this means a content-publishing skill can become a code-authoring and code-executing agent, creating risk of arbitrary local command execution, unsafe script registration, and lateral impact on the host environment.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill persists all user feedback into retro files and requires future batches to convert that feedback into high-priority constraints or tasks. This creates a memory-poisoning channel where sensitive user content, adversarial instructions, or unsafe preferences can persist across runs and steer future behavior without re-validation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill is described as reading task JSON and prompts, but later grants itself authority to rewrite Prompt files and mutate the prompt registry through an automated meta-learning loop. This creates a self-modifying control plane where untrusted historical task data can indirectly alter future agent behavior, enabling prompt poisoning, persistence, and escalation of unsafe workflows across runs.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The prompt-production flow automatically reads historical retro files and injects lessons/patterns into newly generated prompts. This allows prior untrusted or poisoned workflow content to influence future system prompts, creating a persistence mechanism for prompt injection and potentially amplifying earlier mistakes into long-term behavior changes.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file title and all operational guidance are written exclusively in Chinese, and the document frames its instructions as mandatory for all new cron-script development. Under the policy, forcing a specific language without opt-in is a natural-language locale violation unless the locale restriction is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The reference design expands the skill from a stated content-publishing workflow into unattended external data collection and outbound messaging. That scope creep creates an unjustified data-ingestion and exfiltration path, increasing the chance the skill is used for unreviewed surveillance, spam, or leakage of task/user data.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

This section prescribes a launchd-based scheduled architecture for recurring execution, which establishes persistence on the host. In the context of an agent skill whose declared purpose is content publishing, embedding OS-level persistence is more dangerous because it enables ongoing unattended actions and repeated outbound communication without clear necessity or user re-authorization.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 35)May include surrounding context.

md
| 层 | 职责 | 文件 |
|---|------|------|
| **调度层** | 定时触发,仅负责启动 Python 脚本 | launchd plist |
| **编排层** | 加载上下文、调用各功能模块、汇总结果、发送报告 | `scripts/auto_{平台名}.py` |
| **数据层** | 采集原始数据(API/抓取) | `scripts/fetch_{平台名}_data.py`(可选独立) |
| **输出层** | 格式化报告 + openclaw message send 发送给用户 | 编排层内调用 |

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The document explicitly recommends subprocess-based execution for curl and OpenClaw messaging, giving the resulting implementation shell-adjacent command execution and external communication capabilities beyond the stated publishing goal. Even if examples are static, this pattern materially raises the risk of command injection, misuse of local binaries, and uncontrolled data transmission in downstream scripts.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

Specifying installation into ~/Library/LaunchAgents directly instructs implementers to persist execution across sessions. That persistence increases risk of long-lived unauthorized automation, especially when paired with data collection and messaging behaviors elsewhere in the file.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 155)May include surrounding context.

3. 定时注册规范(macOS launchd)

3.1 Plist 命名与位置

text
~/Library/LaunchAgents/<LAUNCH_AGENT_NAME>.plist

Session Persistence

Medium
Category
Rogue Agent
Confidence
83% confidence
Finding

The Plist template section continues operational guidance for creating persistent scheduled jobs. In this skill context, that materially increases capability beyond one-off content assistance and supports unattended repeated activity on the user system.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 157)May include surrounding context.

3.1 Plist 命名与位置

text
~/Library/LaunchAgents/<LAUNCH_AGENT_NAME>.plist

3.2 Plist 标准模板

Session Persistence

Medium
Category
Rogue Agent
Confidence
83% confidence
Finding

Providing a concrete XML plist template lowers the barrier to implementing persistent background execution. That is risky in this context because the same document also defines automated data collection and outbound reporting, creating a durable automation channel on the host.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 160)May include surrounding context.

~/Library/LaunchAgents/<LAUNCH_AGENT_NAME>.plist

text

### 3.2 Plist 标准模板

```xml
<?xml version="1.0" encoding="UTF-8"?>

Session Persistence

Medium
Category
Rogue Agent
Confidence
82% confidence
Finding

This duplicate detection at the same line reflects the same underlying issue: concrete instructions for launchd persistence. The danger is not the XML syntax itself, but the normalization of installing a background agent for a workflow that does not clearly require host persistence.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 164)May include surrounding context.

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>

Session Persistence

Medium
Category
Rogue Agent
Confidence
82% confidence
Finding

This duplicate detection at the same line reflects the same underlying issue: concrete instructions for launchd persistence. The danger is not the XML syntax itself, but the normalization of installing a background agent for a workflow that does not clearly require host persistence.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 164)May include surrounding context.

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>

Session Persistence

Medium
Category
Rogue Agent
Confidence
82% confidence
Finding

Including the launch agent label within the plist template further operationalizes persistent registration. This contributes to durable background execution capability that is broader than necessary for a normal content-publishing helper.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 165)May include surrounding context.

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string><LAUNCH_AGENT_NAME></string>

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% confidence
Finding

The note advocating direct Python execution via launchd reinforces deployment of a persistent background process. That increases risk because it optimizes stability and stealth of unattended execution rather than minimizing privilege or duration.

Content

Scanner excerpt · references/cron-design-reference.md (reported line 209)May include surrounding context.

ProcessType Background

text

**直接运行 Python**,不经过 bash 包装层,更简洁稳定。