Rookie Memory

Security checks across static analysis, malware telemetry, and agentic risk

Overview

The memory skill is mostly coherent, but it under-discloses that it reads local OpenClaw/Zhiyi credentials and sends stored memory text to an external embedding API.

Install only if you trust the publisher and are comfortable with saved conversation memories being persisted locally and sent to the configured Zhiyi/BigModel embedding service. Use a scoped API key, avoid saving sensitive data, review the memory directory regularly, and run cleanup in dry-run mode before deleting anything.

Static analysis

No static analysis findings were reported for this release.

VirusTotal

No VirusTotal findings for this skill version.

Malicious
0
Suspicious
0
Harmless
0
Undetected
64
View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

The skill may use an existing provider API key from the user's OpenClaw configuration without the registry metadata making that dependency clear.

Why it was flagged

The code reads local OpenClaw auth/profile configuration to obtain a Zhiyi API key, while the provided metadata declares no required credentials or config paths.

Skill content
config_path = Path('/root/.openclaw/openclaw.json') ... ZHIYI_API_KEY = profile.get('apiKey', '')
Recommendation

Require explicit credential declaration and user consent, and use a scoped API key intended only for this memory embedding use.

What this means

Conversation memories or other stored text may leave the local workspace and be processed by a third-party model provider.

Why it was flagged

Memory text is sent to an external, environment-configurable embedding API, even though the skill description emphasizes a local ChromaDB vector store.

Skill content
ZHIYI_BASE_URL = os.environ.get('ZHIYI_BASE_URL', 'https://open.bigmodel.cn/api/paas/v4') ... data = {"model": "embedding-3", "input": text} ... requests.post(url, headers=headers, json=data, timeout=30)
Recommendation

Disclose the remote provider call clearly, let users opt out or configure it explicitly, and avoid storing highly sensitive information unless the provider is trusted.

What this means

Incorrect, sensitive, or prompt-like content saved as memory could be reused in later conversations.

Why it was flagged

The skill intentionally persists memories and reloads them into future sessions, which is purpose-aligned but creates persistent context that can affect later agent behavior.

Skill content
新对话开始:执行 `bootstrap` 加载 L0 永久记忆 + L1/L2 记忆,注入相关上下文 ... 对话结束:将重要信息存入长期记忆
Recommendation

Review stored memories periodically, keep sensitive data out of memory, and add safeguards so retrieved memories are treated as context rather than trusted instructions.

What this means

Running cleanup may remove memories the user expected to keep.

Why it was flagged

The cleanup workflow can delete stored memory records, although it is documented, scoped to the memory store, and includes a dry-run option.

Skill content
# 预览模式(不实际删除)
python3 scripts/memory_manager.py cleanup --dry-run

# 执行清理
python3 scripts/memory_manager.py cleanup
Recommendation

Use dry-run first and require explicit user approval before deleting memory records.

What this means

Users have less certainty that the packaged files and registry listing come from the same publisher identity.

Why it was flagged

The embedded metadata differs from the registry metadata shown for owner ID and slug casing, creating a provenance ambiguity for a skill that handles persistent memory and provider credentials.

Skill content
"ownerId": "kn7fdbpcjk5wrh57z27cgemfh1818x21", "slug": "rookie-Memory"
Recommendation

Verify the publisher and prefer a package with consistent registry and embedded metadata before granting it access to memory or credentials.