Back to skill

Security audit

Memory Dreaming

Security checks for vulnerabilities and agentic risk

Overview

This skill is a real memory and archive tool, but it needs Review because it can bulk-copy chat history, send transcripts to third-party LLMs, and preserve credentials in plaintext memory.

Install only if you are comfortable with this agent keeping readable local archives of conversations and memory files. Do not let it store raw passwords, API keys, tokens, or secrets; use a secret manager reference instead. Avoid `--all` and the silent cron templates until you have an explicit allowlist of channels/groups and have decided whether transcripts may be sent to OpenRouter/OpenAI or another LLM provider.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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 (4)

T02 · Agent Memory Poisoning

Error
Location
scripts/conversation-summarise.js:176
Finding

Untrusted Conversation Content Can Poison Persistent Agent Memory

Content
View full analysis
150000) { prompt = prompt.slice(0, 150000) + '\n\n[...truncated for length]'; } const summary = await callLLM(prompt, SUMMARY_SYSTEM_PROMPT); const titleMatch = rawContent.match(/^# .+ — (.+)$/m); const topicName = titleMatch ? titleMatch[1] : path.basename(rawFile, '.md'); const output = `# ${topicName} — Summary\n\n*Last updated: ${new Date().toISOString()}*\n\n${summary}\n`; fs.writeFileSync(summaryFile, output); ``` The generated content is subsequently treated as agent context: ```markdown When receiving a message from a group/topic, load context before responding: 1. Check `archives///summaries/topic-.md` for topic context 2. For cross-topic awareness, skim `DIGEST.md` 3. If summary seems stale, re-run archive + summarise for that group ``` The architecture also directs the agent to promote summary content into core memory: ```markdown 1. Review topic summaries for significant new information 2. Integrate important decisions, contacts, or facts into MEMORY.md 3. The next `memory-bootstrap.js` run picks them up as new meta entries This creates a natural flow: conver ...[truncated 2547 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/dream-cycle.md:174
Finding

Plaintext Credentials Are Intentionally Retained as Non-Expiring Memory

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/conversation-summarise.js:114
Finding

Regex-Only Redaction Can Leak Secrets and Private Data to External LLM Providers

Content
View full analysis
l.trim()).length < 10) { return { skipped: true, reason: 'too few messages' }; } // Redact secrets before send ...[truncated 2750 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/conversation-archive.js:61
Finding

Archive-All Workflow Collects and Duplicates Every Discoverable Group Transcript

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (44)

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Treating passwords and similar secrets as structural memories that never fully decay encourages long-term storage of credentials in human-readable local files. This materially increases the blast radius of compromise because any workspace access, backup leak, or accidental sync could expose durable secrets.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The quick-start workflow instructs users to archive everything from available channels and then summarize it, normalizing bulk ingestion of potentially sensitive conversations. This creates both over-collection risk and onward disclosure risk, especially because summarization may later transmit collected content elsewhere.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README clearly states that chat transcripts are sent to a third-party LLM API for summarization, which is a direct data egress path for potentially sensitive conversations. Built-in redaction of common secret patterns is insufficient because personal, proprietary, or novel sensitive content can still be transmitted unredacted.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a comprehensive memory framework with multiple advanced memory-management features. The supplied code chunk only implements one subset capability: channel-agnostic conversation archiving from OpenClaw session files into markdown archives. It reads local session metadata and transcript files, filters/cleans messages, and writes archive files and indexes. While this partially aligns with the archiving portion of the description, the primary declared functionality is much broader and includes decay, recall boosting, temporal fact chains, supersession, dream cycles, and AI-generated summaries—none of which are present in this code. Therefore the description materially overstates what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The description presents a comprehensive persistent memory system with several advanced memory-management behaviors and explicitly states that no external service is required. The supplied code chunk instead performs a narrower task: summarizing archived conversations and generating digests. It reads local archive files and state, but critically it calls external LLM endpoints (OpenRouter/OpenAI-compatible) over HTTPS, which directly conflicts with the 'no external service required' claim. While conversation archiving/summarization is mentioned in the description and is partially aligned, the primary behavior in this chunk is external-AI-powered summarization rather than the declared long-term memory framework features such as decay, recall boosting, temporal fact chains, dream cycles, or supersession tracking. Therefore this chunk materially underdelivers relative to the declared purpose and includes an inconsistent external-service dependency.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 44)May include surrounding context.

md
node scripts/conversation-archive.js --discover # see available channels

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 64)May include surrounding context.

md
node scripts/conversation-archive.js --discover # see available channels

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 135)May include surrounding context.

md
node scripts/conversation-archive.js --discover # see available channels

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 147)May include surrounding context.

md
node scripts/conversation-archive.js --discover # see available channels

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 148)May include surrounding context.

md
node scripts/conversation-archive.js --discover # see available channels

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 149)May include surrounding context.

md
node scripts/conversation-archive.js --discover # see available channels

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 127)May include surrounding context.

md
| `memory-decay.js` | Recalculate scores, tier transitions | Start of dream cycle |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 142)May include surrounding context.

md
| `memory-decay.js` | Recalculate scores, tier transitions | Start of dream cycle |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 179)May include surrounding context.

md
| `memory-decay.js` | Recalculate scores, tier transitions | Start of dream cycle |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 128)May include surrounding context.

md
| `memory-recall-logger.js` | Log recall events, boost scores | After every memory search |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 143)May include surrounding context.

md
| `memory-recall-logger.js` | Log recall events, boost scores | After every memory search |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 162)May include surrounding context.

md
| `memory-recall-logger.js` | Log recall events, boost scores | After every memory search |

Ssd 3

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly states that raw conversation text is sent to a third-party LLM provider for summarization, including any sensitive information contained in transcripts. This is dangerous because it can exfiltrate confidential data outside the local environment, potentially violating privacy, contractual, or regulatory requirements.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The archive workflow explicitly directs discovery of all sessions across all channels and then archiving and summarizing everything, including scheduled recurring runs. In context, this is more dangerous because the skill is designed for persistent long-term memory, so indiscriminate collection can aggregate sensitive cross-channel history at scale and create a durable surveillance-style dataset.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This template schedules archival of all channel conversations and then summarizes them, including a note that summarization may involve external API-backed LLM calls, but it does not present a prominent warning about the breadth of collection or potential disclosure to third-party providers. That creates a meaningful privacy and data-governance risk because users may unknowingly enable bulk capture and transmission of sensitive conversations.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill explicitly recommends preserving credentials and sensitive configuration details in persistent memory without any warning, scoping, encryption, or redaction guidance. In a long-term memory framework, this materially increases the chance that secrets will be retained, surfaced in later contexts, leaked through prompts, logs, archives, backups, or unauthorized access to memory files.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Directing an agent to retain credentials and configuration details in long-term memory is a sensitive-data retention flaw. Persistent agent memory is especially risky because stored secrets can later be recalled out of context, exposed to other users or channels, copied into summaries, or survive far beyond their operational need.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The example daily-note guidance tells the agent to write an API key in plaintext, normalizing unsafe secret handling as part of routine note-taking. This creates a direct path for credential disclosure through repository commits, conversation recall, prompt injection-induced exfiltration, local compromise, or accidental inclusion in archives and summaries.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The daily-note instructions encourage recording exact secret values and detailed infrastructure data, which compounds exposure risk by placing sensitive information into raw notes that later feed consolidation, archival, and recall workflows. Even if the intent is operational convenience, combining long-term persistence with exact secrets and host details meaningfully raises the blast radius of compromise and accidental disclosure.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/conversation-summarise.js (reported line 42)May include surrounding context.

js
const envFiles = [
    path.join(WORKSPACE, '.env.openrouter'),
    path.join(WORKSPACE, '.env.openai'),
    path.join(WORKSPACE, '.env'),
  ];
  
  for (const envFile of envFiles) {

Static analysis

No suspicious patterns detected.