Back to skill

Security audit

Self-Improving + Proactive Agent

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a local self-improvement memory system, but it also installs persistent agent steering and long-term memory behavior with scope and consent gaps that users should review first.

Install only if you want an agent to keep long-term local learning files and modify workspace guidance so future sessions consult them. Before setup, review the exact edits to AGENTS.md, SOUL.md, and HEARTBEAT.md, decline the optional Proactivity install unless you trust the resolved package, and avoid storing sensitive corrections or secrets in memory.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (3)

T02 · Agent Memory Poisoning

Warning
Location
setup.md:75
Finding
Persistent workspace steering can propagate mutable memory rules across sessions<![CDATA[ ## Vulnerability Details **File Location**: `setup.md:75-85`, `setup.md:108-160`, `setup.md:183-196`; conflicting scope declaration in `SKILL.md:215-226` **Vulnerability Type**: Persistent agent steering and long-term memory poisoning **Risk Level**: Medium ### Vulnerable Code From `setup.md:75-85`: ```markdown ### 4. Add SOUL.md Steering Add this section to your `SOUL.md`: ```markdown **Self-Improving** Compounding execution quality is part of the job. Before non-trivial work, load `~/self-improving/memory.md` and only the smallest relevant domain or project files. After corrections, failed attempts, or reusable lessons, write one concise entry to the correct self-improving file immediately. Prefer learned rules when relevant, but keep self-inferred rules revisable. Do not skip retrieval just because the task feels familiar. ``` ``` From `setup.md:108-112`: ```markdown ### 6. Refine AGENTS.md Memory Section (Non-Destructive) Update `AGENTS.md` by complementing the existing `## Memory` section. Do not replace the whole section and do not remove existing lines. If your `## Memory` block differs from the default template, insert the same additions in equivalent places so existing information is preserved. ``` From `setup.md:147-160`: ```markdown Inside the "Write It Down" bullets, refine the behavior (non-destructive): - Keep existing intent, but route execution-improvement content to `~/self-improving/`. - If the exact bullets exist, replace only these lines; if wording differs, apply equivalent edits without removing unrelated guidance. Use this target wording: ```markdown - When someone says "remember this" → if it's factual context/event, update `memory/YYYY-MM-DD.md`; if it's a correction, preference, workflow/style choice, or performance lesson, log it in `~/self-improving/` - Explicit user correction → append to `~/self-improving/corrections.md` immediately - Reusable global rule or preference → append to `~/self-improving/memory.md` ...[truncated 3877 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Require explicit user confirmation before modifying each of `AGENTS.md`, `SOUL.md`, and `HEARTBEAT.md`. 2. Display the exact proposed diff and affected paths before writing. 3. Keep activation local to the Skill unless the user separately opts into persistent workspace integration. 4. Add a documented uninstall procedure that removes only the inserted blocks and preserves unrelated workspace instructions. 5. Treat stored memory as untrusted data: - Reject instructions that attempt to override system or safety constraints. - Prevent learned entries from authorizing tool use or expanding file access. - Preserve provenance, confirmation status, scope, and creation date. 6. Require confirmation before promoting any learned entry to a cross-session global rule. 7. Correct the `SKILL.md` scope declaration so it accurately discloses setup-time reads and modifications outside `~/self-improving/`. 8. Add tests ensuring setup cannot silently duplicate, replace, or broaden existing workspace steering. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
boundaries.md:44
Finding
Full-memory deletion workflow can retain an exported copy after a forget request<![CDATA[ ## Vulnerability Details **File Location**: `boundaries.md:44-50`; inconsistent operational description at `operations.md:6-14` **Vulnerability Type**: Incomplete deletion and unsafe retention of exported data **Risk Level**: Medium ### Vulnerable Code From `boundaries.md:44-50`: ```markdown ## Kill Switch User says "forget everything": 1. Export current memory to file (so they can review) 2. Wipe all learned data 3. Confirm: "Memory cleared. Starting fresh." 4. Do not retain "ghost patterns" in behavior ``` From `operations.md:6-14`: ```markdown | Command | Action | |---------|--------| | "What do you know about X?" | Search all tiers, return matches with sources | | "Show my memory" | Display memory.md contents | | "Show [project] patterns" | Load and display specific namespace | | "Forget X" | Remove from all tiers, confirm deletion | | "Forget everything" | Full wipe with export option | | "What changed recently?" | Show last 20 corrections | | "Export memory" | Generate downloadable archive | | "Memory status" | Show tier sizes, last compaction, health | ``` ### Technical Analysis The kill-switch procedure mandates exporting all memory before wiping it, while the operations table describes export as an option. A complete export preserves the same data that the user requested the Skill to forget. The documentation does not define the archive location, file permissions, retention period, cleanup behavior, or whether the user must separately consent to creating it. As a result, the Skill may report that memory was cleared even though a complete copy remains elsewhere. This conflicts with the stated requirement not to retain learned data or ghost patterns after a full deletion request. The pre-scan phrases “Forget everything” and “Full wipe” are not prompt-injection attempts and do not direct the agent to ignore safety constraints. The confirmed issue is the retention behavior performed before deletion. ### Attack Path 1. The memory store ...[truncated 1055 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Make export a separate, explicit opt-in operation; default “forget everything” to deletion without export. 2. Ask: “Would you like to export a copy before deletion?” and proceed without an export if the user declines. 3. Disclose the exact export path, included files, format, and expected retention before creation. 4. Apply restrictive filesystem permissions to any archive and avoid shared or predictable temporary paths. 5. If a temporary archive is used for transfer, delete it immediately after successful delivery. 6. Verify deletion across `memory.md`, `corrections.md`, `projects/`, `domains/`, `archive/`, indexes, heartbeat notes containing learned data, and previously generated exports under Skill control. 7. Report any locations that could not be removed rather than unconditionally claiming that memory is cleared. 8. Reconcile `boundaries.md` and `operations.md` so both specify the same consent-based behavior. ]]>

T08 · Insecure Dependencies

Note
Location
setup.md:87
Finding
Optional Proactivity Skill is installed from an unpinned mutable dependency reference<![CDATA[ ## Vulnerability Details **File Location**: `setup.md:87-105` **Vulnerability Type**: Unpinned third-party Skill dependency **Risk Level**: Low ### Vulnerable Code ```markdown ### 5. Add the Proactivity Companion as Part of Setup At the end of setup, briefly tell the user that you are going to add characteristics so the agent is more proactive: - noticing missing next steps - verifying outcomes instead of assuming they landed - recovering context better after long or interrupted threads - keeping the right level of initiative Then say that, for this, you are going to install the `Proactivity` skill. Only install it after the user explicitly agrees. If the user agrees: 1. Run `clawhub install proactivity` 2. Read the installed `proactivity` skill 3. Continue into its setup flow immediately so the skill is active for this workspace If the user says no, skip it cleanly and continue with self-improving only. ``` ### Technical Analysis The dependency is installed by the mutable slug `proactivity` without a pinned version, publisher identity, or integrity digest. The installation is protected by explicit user consent, which materially reduces the risk. However, consent only covers installation at a descriptive level; the procedure then directs the agent to continue into the newly installed Skill's setup immediately. Reading the installed Skill before executing its setup is not equivalent to validating its provenance, integrity, permissions, or behavior. If the registry entry changes after this Skill was audited, the effective behavior added during setup can also change. No evidence shows that the current project itself downloads or executes a malicious payload. This finding concerns the supply-chain trust model of the optional installation path. ### Attack Path 1. An attacker compromises the registry account, publication pipeline, or mutable package represented by the `proactivity` slug. 2. A user approves the optional installation based on the ...[truncated 914 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the Proactivity Skill to a reviewed version rather than installing only by slug. 2. Verify an integrity hash, signature, or equivalent registry attestation before activation. 3. Identify the expected publisher and reject packages from an unexpected owner. 4. Present the resolved version, publisher, requested capabilities, and relevant setup changes to the user. 5. Separate installation consent from activation consent: - First obtain approval to install. - Audit or summarize the installed content. - Then obtain approval before executing its setup flow. 6. Do not automatically continue into dependency setup if the installed content requests broader permissions than disclosed. 7. Maintain an allowlist of reviewed dependency versions and require re-review when the resolved version changes. ]]>
Vulnerability Patterns
  • 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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (18)

Description-Behavior Mismatch

Medium
Confidence
97% confidence
Finding
The skill claims it only reads within ~/self-improving/, but its documented setup flow references modifying workspace files such as AGENTS.md, SOUL.md, and HEARTBEAT.md. This mismatch weakens user trust and consent boundaries because operators may approve the skill under a narrower filesystem access model than it actually uses.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill describes automatic logging and long-term retention of corrections and preferences, but the user-facing description does not prominently warn that these statements may be stored persistently in local files. This creates a privacy and consent risk because users may reveal preferences, habits, or sensitive workflow details without realizing they will be retained and reused.

Ssd 3

Medium
Confidence
95% confidence
Finding
Automatic logging of free-form user statements into persistent memory can capture sensitive data incidentally, including personal preferences, confidential project details, or secrets phrased as corrections. Even with a stated boundary not to store credentials, plain-language workflows are error-prone and may still preserve sensitive content that can later be surfaced or exposed.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- Pattern used 3x in 7 days → promote to HOT
- Pattern unused 30 days → demote to WARM
- Pattern unused 90 days → archive to COLD
- Never delete without asking

### 4. Namespace Isolation
- Project patterns stay in `projects/{name}.md`
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| Financial | Card numbers, bank accounts, crypto seeds | Fraud risk |
| Medical | Diagnoses, medications, conditions | Privacy, HIPAA |
| Biometric | Voice patterns, behavioral fingerprints | Identity theft |
| Third parties | Info about other people | No consent obtained |
| Location patterns | Home/work addresses, routines | Physical safety |
| Access patterns | What systems user has access to | Privilege escalation |
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The phrase "forget everything" is broad and could plausibly appear in ordinary conversation, quoting, or hypothetical discussion, causing an unintended destructive action. In a self-improving agent with persistent memory, accidental triggering could erase state unexpectedly and disrupt user workflows or destroy user-controlled records.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The kill-switch defines immediate export-and-wipe behavior but does not require an upfront warning in the skill description or a just-in-time confirmation that the operation is destructive. Users may invoke it without understanding that stored memory will be irreversibly removed, which is more risky in a skill explicitly designed for long-term self-learning and memory retention.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill instructs the agent to log and persist user corrections and preferences, but it does not require a clear user-facing disclosure, consent flow, or retention boundary. In a self-improving agent, silent accumulation of behavioral data can create privacy and profiling risk, especially when preferences may span global, domain, and project namespaces.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The documented archival and history behavior preserves prior preferences and reversals over time without an explicit warning to the user that historical preference data remains stored. That increases the risk of unexpected long-term retention of behavioral history, which can expose sensitive inferences or create privacy surprises even after a user changes their mind.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill describes automatic loading, searching, writing, deduplication, and cross-tier memory management of user data without any explicit notice, consent boundary, or privacy control. In a self-improving agent, this is dangerous because the agent may persist sensitive user information, corrections, or project context beyond the user's expectations, creating privacy, retention, and data-minimization risks.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The weekly maintenance workflow automatically scans, moves, archives, and compacts stored memory based on age, but it does not warn users about retention periods or background data lifecycle changes. This can lead to silent long-term preservation or relocation of sensitive information, reducing transparency and increasing the chance of unintended data exposure or noncompliant retention behavior.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The file explicitly recommends an "Aggressive learning, minimal confirmation" strategy for power users without any adjacent safeguards on what may be retained, how long it is stored, or when user consent is required. In a self-improving memory skill, this increases the chance that personal preferences, sensitive workflow details, or project data are persistently captured without sufficiently informed user awareness, making privacy harm more likely in context.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The setup directs creation of multiple files and directories under `~/self-improving/` without an upfront, explicit warning that the skill will modify the user’s filesystem. This is risky because it normalizes persistent writes to the home directory and can lead users to approve setup without understanding that durable local state is being created.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The instructions tell the agent to alter `AGENTS.md`, `SOUL.md`, and later `HEARTBEAT.md`, which are behavior/configuration files that can materially change future agent conduct, but they do not prominently warn the user about those modifications. Silent or under-disclosed edits to steering files are especially sensitive because they persistently influence later sessions and may be difficult for users to notice or audit.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The skill’s setup flow expands scope by instructing installation and activation of an additional `Proactivity` skill, creating a transitive trust problem: the user asked for one skill, but setup attempts to bring in another with its own behavior and permissions. Even though it asks for user agreement first, this coupling increases attack surface and can surprise users by changing agent behavior beyond the advertised self-improving function.

Intent-Code Divergence

Low
Confidence
88% confidence
Finding
L223 states this skill 'NEVER' makes network requests, but L240-L250 instructs installation, starring, and syncing via `clawhub`, and L051 notes optional installation of another skill may require network access. Even if these are user-confirmed auxiliary actions, the absolute 'never' wording conflicts with the rest of the file's operational guidance.

Missing User Warnings

Low
Confidence
95% confidence
Finding
The template explicitly instructs creation of directories and files under `~/self-improving` on first activation, which is a real filesystem side effect without any embedded warning, consent check, or scoping guidance. In the context of a proactive self-improving agent, this is more concerning because the agent may autonomously decide to activate the skill and persist data, increasing the chance of unexpected writes to the user's home directory and long-term storage of potentially sensitive content.

Missing User Warnings

Low
Confidence
94% confidence
Finding
The skill explicitly instructs the agent to read and use files under the user's home directory, including persistent state in `~/self-improving/heartbeat-state.md`, without any notice, consent, or scope limitation. In an agent skill, this creates a privacy and data-boundary risk because the model may access local user data or persistent memory outside the immediate task context, and the self-improving/proactive framing makes such background access more likely to be normalized.

Static analysis

No suspicious patterns detected.