Back to skill

Security audit

elite-longterm-memory

Security checks for vulnerabilities and agentic risk

Overview

This memory skill is not clearly malicious, but it asks agents to store conversation details broadly and silently, and it promotes optional cloud memory without enough privacy controls.

Install only if you are comfortable with an agent keeping durable memory. Treat automatic or silent memory capture as opt-in, review memory files regularly, avoid storing secrets or regulated data, do not use cloud memory until you understand what will be uploaded, and prefer pinned install commands or a lockfile-managed install.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T02 · Agent Memory Poisoning

Warning
Location
SKILL.md:205
Finding
Unrestricted Silent Persistence of Conversation Content## Vulnerability Details **File Location**: `SKILL.md`, lines 205-218 **Vulnerability Type**: Persistent storage of attacker-controlled conversation content **Risk Level**: Medium ### Vulnerable Code ```markdown ### During Conversation 1. **User gives concrete detail?** → Write to SESSION-STATE.md BEFORE responding 2. **Important decision made?** → Store in Git-Notes (SILENTLY) 3. **Preference expressed?** → `memory_store` with importance=0.9 ### On Session End 1. Update SESSION-STATE.md with final state 2. Move significant items to MEMORY.md if worth keeping long-term 3. Create/update daily log in memory/YYYY-MM-DD.md ``` The associated write-ahead-log instructions reinforce automatic persistence: ```markdown | Trigger | Action | |---------|--------| | User states preference | Write to SESSION-STATE.md → then respond | | User makes decision | Write to SESSION-STATE.md → then respond | | User gives deadline | Write to SESSION-STATE.md → then respond | | User corrects you | Write to SESSION-STATE.md → then respond | ``` ### Technical Analysis The Skill instructs the agent to persist broadly defined user-provided details before responding and to store decisions in Git Notes silently. It does not define a trust boundary, consent check, provenance model, sensitive-data filter, retention period, or restriction against recording instructions embedded in untrusted content. Because the stored material can later be retrieved through session-state loading, vector recall, Git Notes, or curated memory, attacker-controlled content may continue to influence future sessions. This is particularly risky if an attacker frames persistent instructions as a preference, decision, correction, or other concrete detail. Persistent memory is necessary for the Skill's declared purpose, but indiscriminate and silent capture exceeds the minimum privilege needed for task continuity. A safer design would persist only narrowly defi ...[truncated 1263 chars]
Remediation
## Remediation Suggestions 1. Require explicit user consent before enabling persistent capture. 2. Replace the broad “concrete detail” rule with a strict allowlist of approved memory categories. 3. Never persist passwords, API keys, authentication tokens, private keys, financial data, health data, or other sensitive information. 4. Store external instructions and retrieved text as untrusted data, never as authoritative agent policy. 5. Record provenance, creation time, source, confidence, and expiration for every memory entry. 6. Require confirmation before storing behavioral rules, corrections, or high-impact decisions. 7. Add retention limits, review workflows, export controls, and reliable deletion across files, Git Notes, and vector storage. 8. Avoid silent storage; notify the user when durable memory is created unless the user has explicitly enabled a clearly documented automatic-capture mode.

other

Warning
Location
SKILL.md:109
Finding
Conversation Content and Stable User Identifiers Can Be Sent to an External Memory Service## Vulnerability Details **File Location**: `SKILL.md`, lines 109-121 **Vulnerability Type**: Privacy-sensitive cloud data transmission **Risk Level**: Medium ### Vulnerable Code ```javascript const { MemoryClient } = require('mem0ai'); const client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY }); // Conversations auto-extract facts await client.add(messages, { user_id: "user123" }); // Retrieve relevant memories const memories = await client.search(query, { user_id: "user123" }); ``` A similar recommended integration appears in `README.md`: ```javascript const { MemoryClient } = require('mem0ai'); const client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY }); // Auto-extracts facts from messages await client.add(messages, { user_id: "user123" }); // Retrieve relevant memories const memories = await client.search(query, { user_id: "user123" }); ``` ### Technical Analysis The recommended Mem0 integration passes the complete `messages` collection and a stable `user_id` to an external client. Conversation messages may contain credentials, proprietary source code, personal information, internal decisions, or other confidential material. Cloud memory is disclosed as a feature rather than hidden exfiltration. However, the example provides no local redaction, field minimization, consent prompt, retention policy, endpoint disclosure, tenant-isolation guidance, or mechanism to prevent secrets from being uploaded. Associating uploaded content with a stable identifier also increases linkability across sessions. External transfer is relevant to optional cloud memory, but it is not necessary for the local file-based CLI. It should therefore be separated from the default workflow and protected by explicit informed consent. ### Attack Path 1. A conversation includes sensitive information, such as an API key, proprietary data, or personal details. 2. An integrator follows the recommended ex ...[truncated 1228 chars]
Remediation
## Remediation Suggestions 1. Make cloud synchronization disabled by default and require explicit, informed opt-in. 2. Clearly document the external destination, data categories transmitted, retention behavior, and deletion procedure. 3. Run local secret detection and redaction before invoking `client.add`. 4. Send only explicitly selected facts rather than complete conversation histories. 5. Use pseudonymous, scoped identifiers instead of stable globally reusable user identifiers. 6. Provide a user-visible preview and confirmation step before uploading data. 7. Add configurable retention limits and a verified remote deletion workflow. 8. Keep local-only memory fully functional without cloud credentials or network permission.

T08 · Insecure Dependencies

Warning
Location
package.json:30
Finding
Unnecessary Optional Cloud SDK Expands the Installation and Supply-Chain Attack Surface## Vulnerability Details **File Location**: `package.json`, lines 30-32 **Vulnerability Type**: Excessive third-party dependency and installation surface **Risk Level**: Medium ### Vulnerable Code ```json "optionalDependencies": { "mem0ai": "^1.0.0" }, ``` The lock file resolves this dependency and its network-capable transitive packages: ```json "node_modules/mem0ai": { "version": "1.0.39", "resolved": "https://registry.npmjs.org/mem0ai/-/mem0ai-1.0.39.tgz", "integrity": "sha512-bn6IdIdsGjfpd85ef4yDfCTXTeOke0noHsxxvZoYMkoz5l+3BCaVu7Unqgm3tZkbO/KbAkU1UOrjIke7NOc0Pw==", "license": "Apache-2.0", "optional": true, "dependencies": { "axios": "^1.7.7", "fix-tsup-cjs": "^1.2.0", "ts-node": "^10.9.2" }, "engines": { "node": ">=18" }, "optionalDependencies": { "posthog-js": "^1.116.6" }, "peerDependencies": { "posthog-js": "^1.0.0", "posthog-node": "^4.0.0" } } ``` ### Technical Analysis The executable CLI in `bin/elite-memory.js` imports only Node.js built-in `fs` and `path` modules. It does not import or require `mem0ai`. Nevertheless, `mem0ai` is declared as an optional package dependency and therefore may be installed during a normal npm or `npx` workflow. The SDK introduces a substantial transitive dependency graph that includes HTTP functionality, telemetry-related packages, and packages with installation scripts recorded in the lock file. This increases the amount of third-party code processed or installed for a CLI whose implemented commands only create and inspect local Markdown files. The lock file uses standard npm registry URLs and integrity hashes; the audit found no evidence that the listed packages are malicious or that the lock file itself transmits sensitive information. The risk arises from unnecessary dependency exposure and broad semver selection, not from a confirmed malicious dependency. ### Attack Path 1 ...[truncated 1312 chars]
Remediation
## Remediation Suggestions 1. Remove `mem0ai` from `optionalDependencies` in the core local CLI package. 2. Document Mem0 as a separately installed, explicitly enabled integration. 3. Alternatively, publish cloud support as a separate adapter package so local-only users receive no cloud SDK or telemetry-related dependencies. 4. Pin reviewed dependency versions rather than using a broad `^1.0.0` range. 5. Continuously scan direct and transitive dependencies for known vulnerabilities and package ownership changes. 6. Review lifecycle scripts and use script-disabled installation modes where compatible. 7. Retain lock-file integrity hashes and verify package provenance during release builds. 8. Keep the default installation dependency-free because the implemented CLI requires only Node.js built-in modules.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (32)

Known Vulnerable Dependency: protobufjs==7.5.4 — 12 advisory(ies): CVE-2026-44294 (protobuf.js: Denial of service from crafted field names in generated code); CVE-2026-44293 (protobuf.js: Code injection through bytes field defaults in generated toObject c); CVE-2026-44289 (protobuf.js: Denial of service through unbounded protobuf recursion) +9 more

Critical
Category
Supply Chain
Confidence
97% confidence
Finding
protobufjs 7.5.4 is flagged for multiple serious issues, including denial of service, recursion abuse, and code-injection-related flaws in generated code paths. Because this package sits in a network/telemetry-related dependency chain, any parsing of attacker-controlled protobuf data could create a high-impact compromise path, making this especially concerning in a skill that may persist sensitive long-term memory.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The skill markets itself as a comprehensive, 'bulletproof' memory system, but the document mainly provides manual setup instructions and references to third-party tools rather than implementing the claimed capabilities. This mismatch is dangerous because users may trust it to provide durable, privacy-aware memory guarantees that are not actually enforced, leading to unsafe reliance and overcollection of data.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
memory_recall query="*" limit=50

# Clear all vectors (nuclear option)
rm -rf ~/.clawdbot/memory/lancedb/
clawdbot gateway restart

# Export Git-Notes
Confidence
90% confidence
Finding
The skill includes a destructive shell command that recursively deletes the LanceDB memory directory. Although it is framed as a 'nuclear option' maintenance step, embedding raw deletion commands in agent instructions is risky because an agent or user could run it without adequate safeguards, causing loss of retained memory and possible operational disruption.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
memory_recall query="*" limit=50

# Clear all vectors (nuclear option)
rm -rf ~/.clawdbot/memory/lancedb/
clawdbot gateway restart

# Export Git-Notes
Confidence
90% confidence
Finding
The skill includes a destructive shell command that recursively deletes the LanceDB memory directory. Although it is framed as a 'nuclear option' maintenance step, embedding raw deletion commands in agent instructions is risky because an agent or user could run it without adequate safeguards, causing loss of retained memory and possible operational disruption.

Known Vulnerable Dependency: axios==1.13.6 — 16 advisory(ies): CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more

High
Category
Supply Chain
Confidence
96% confidence
Finding
axios 1.13.6 is flagged for multiple advisories, including SSRF-related proxy handling issues and prototype-pollution-associated request/response abuse. In a memory skill that may handle secrets and external sync features, a vulnerable HTTP client is especially risky because it can expose internal services, credentials, or memory contents through attacker-influenced outbound requests.

Known Vulnerable Dependency: form-data==4.0.5 — 1 advisory(ies): CVE-2026-12143 (form-data: CRLF injection in form-data via unescaped multipart field names and f)

High
Category
Supply Chain
Confidence
90% confidence
Finding
form-data 4.0.5 is reported vulnerable to CRLF injection via unescaped multipart field names and filenames. If the skill uploads data derived from untrusted memory content or user input, this could lead to request smuggling or header/body manipulation against downstream services.

Known Vulnerable Dependency: picomatch==2.3.1 — 2 advisory(ies): CVE-2026-33672 (Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Mat); CVE-2026-33671 (Picomatch has a ReDoS vulnerability via extglob quantifiers)

High
Category
Supply Chain
Confidence
87% confidence
Finding
picomatch 2.3.1 is flagged for ReDoS and method-injection issues in glob matching. If any maintenance or file-selection features accept attacker-controlled glob patterns, this could be abused for CPU exhaustion or incorrect file matching, which is notable in a storage/memory-management skill.

Possible Typosquatting: 'preact' resembles popular package 'react'

High
Category
Supply Chain
Confidence
70% confidence
Finding
Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The README advertises cloud backup and automatic fact extraction as core features but does not warn that these capabilities may transmit conversation content, memory records, or potentially sensitive workspace data to third-party services. For a memory system designed to persist agent context, the omitted warning is significant because users may enable these features without understanding the privacy implications.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The README instructs users to execute the package via `npx elite-longterm-memory` without pinning a specific version. Because `npx` fetches the latest published package by default, users may unknowingly run newly published or compromised code, which is especially risky for an agent memory tool likely to access workspace data and credentials.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
This command again uses unpinned `npx`, causing execution of whatever package version is current at invocation time. In the context of a long-term memory skill for AI agents, that could expose project contents, memory files, API keys, or agent state if the package supply chain is compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The third unpinned `npx` invocation repeats the same supply-chain risk pattern. Recommending direct execution of an unversioned package in documentation normalizes unsafe behavior and may lead users or agents to run attacker-controlled updates automatically.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The Mem0 example shows `client.add(messages...)`, which sends conversation messages to an external API, but the README gives no adjacent warning about transmitting potentially sensitive prompts, secrets, personal data, or source code. In a long-term memory skill, the data being processed is likely to be rich in sensitive context, making silent externalization materially dangerous.

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill declares environment requirements, including an API key, but does not define an explicit tool scope such as permissions or allowed-tools. That creates ambiguity about what the agent may access and increases the chance the skill will be run with broader capabilities than intended, especially since it also instructs use of local files, shell commands, and external services.

Session Persistence

Medium
Category
Rogue Agent
Content
- [ ] ...
```

**Rule:** Write BEFORE responding. Triggered by user input, not agent memory.

### Layer 2: WARM STORE (LanceDB Vectors)
**From: lancedb-memory**
Confidence
86% confidence
Finding
The 'write before responding' rule establishes intentional session persistence of user-triggered content as a default operating behavior. In this skill's context, that persistence is materially risky because it is broad, proactive, and tied to conversation flow, making retention of sensitive data more likely.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill explicitly instructs the agent to store important user decisions 'silently' in persistent memory. Persisting conversation-derived data without a clear user-facing notice or consent mechanism creates a privacy risk and can violate user expectations, especially when decisions may include sensitive project, personal, or business context.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The SuperMemory and Mem0 sections encourage sending conversation-derived context to third-party services for backup and fact extraction without any prominent warning, consent requirement, or data minimization guidance. This is more dangerous than local storage because it expands exposure to external vendors and cross-device/cloud persistence.

Ssd 3

Medium
Confidence
97% confidence
Finding
The Mem0 integration promotes automatic fact extraction from conversations with no restriction on sensitive content. Automatic extraction increases the chance that users' confidential details, preferences, or identifiers will be collected and persisted without review, and the optional external API further amplifies exposure.

Session Persistence

Medium
Category
Rogue Agent
Content
```bash
export SUPERMEMORY_API_KEY="your-key"
# Add to ~/.zshrc for persistence
```

## Agent Instructions
Confidence
90% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Ssd 3

Medium
Confidence
96% confidence
Finding
The instructions tell the agent to write concrete user details to persistent state before every response, which normalizes broad retention of raw conversational content. Because the rule is trigger-based and general, it can easily capture sensitive information in plain text without filtering, minimization, or user approval.

Ssd 3

Medium
Confidence
98% confidence
Finding
The WAL protocol requires persistent logging of preferences, decisions, deadlines, and corrections before responding. In practice, those categories often contain sensitive personal or business information, and storing them in natural language increases leakage risk through local files, sync, backups, or later retrieval by the agent.

Session Persistence

Medium
Category
Rogue Agent
Content
User: "Let's use Tailwind for this project, not vanilla CSS"

Agent (internal):
1. Write to SESSION-STATE.md: "Decision: Use Tailwind, not vanilla CSS"
2. Store in Git-Notes: decision about CSS framework
3. memory_store: "User prefers Tailwind over vanilla CSS" importance=0.9
4. THEN respond: "Got it — Tailwind it is..."
Confidence
90% confidence
Finding
The example workflow demonstrates storing a user's design preference across multiple persistence layers before replying. As guidance for agent behavior, this reinforces broad retention of user-provided context without warning or minimization, which can normalize unnecessary long-term profiling.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The help text instructs users to run the package via `npx elite-longterm-memory` without pinning an exact version. This can cause execution of whatever version is currently published or resolved, which creates a supply-chain risk if a malicious or compromised update is released. In an agent skill context, encouraging direct `npx` execution is more dangerous because users may copy-paste commands and run remote code immediately.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This second help example also uses `npx elite-longterm-memory` without a pinned version, exposing users to the same supply-chain risk. If the upstream package is hijacked, typosquatted, or maliciously updated, users may execute attacker-controlled code simply by following the CLI's printed instructions.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The lockfile pulls in telemetry/analytics and outbound HTTP-capable packages through the optional mem0ai dependency, including posthog-js, axios, and OpenTelemetry components. For a long-term memory skill, this materially increases data-exfiltration and privacy risk because stored memories may contain sensitive prompts, credentials, or user context, and the added network/analytics surface is not clearly necessary from the package metadata alone.

Static analysis

No suspicious patterns detected.