Agent Memory Local

ReviewAudited by ClawScan on May 10, 2026.

Overview

The skill mostly does local memory search, but it can automatically use an external SiliconFlow rerank service with undeclared or generic API keys, which may expose local memory content outside the workspace.

Install only if you are comfortable with a local .memory-index copy of your memory files. Before using it, consider setting MEMORY_RERANK=0, avoid generic API_KEY in the environment, and review memory files for secrets or unsafe instructions.

Findings (4)

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

A read-style memory query may update files under .memory-index without a separate manual build step.

Why it was flagged

Queries or doctor checks can automatically run the bundled build_index.py script to refresh the local index. This is disclosed and scoped to the workspace, but it is still automatic local execution and file mutation.

Skill content
AUTO_REBUILD_DEFAULT = True ... proc = subprocess.run([*python_cmd(), str(BUILD_SCRIPT)], cwd=str(WORKSPACE), capture_output=True, text=True, timeout=AUTO_REBUILD_TIMEOUT, check=True)
Recommendation

If you want query-only behavior, set MEMORY_AUTO_REBUILD=0 and rebuild the index manually when needed.

What this means

If your environment has a generic API_KEY for another purpose, the skill may try to use it for SiliconFlow reranking unexpectedly.

Why it was flagged

The skill reads an undeclared SiliconFlow key and also a broad generic API_KEY. Registry metadata says no env vars or primary credential are required, so credential scope and user intent are unclear.

Skill content
def load_siliconflow_key() -> str | None:
    for env_name in ('SILICONFLOW_API_KEY', 'API_KEY'):
        val = os.environ.get(env_name)
Recommendation

Use only a clearly named SILICONFLOW_API_KEY for this skill, avoid relying on generic API_KEY, and update the metadata/docs to declare the optional credential.

What this means

Snippets or candidate text from local memory files may be sent to an external reranking provider when a key is available.

Why it was flagged

The local memory retriever has a remote provider rerank path that is enabled by default when an API key is present. Because the skill retrieves local memory candidates, this creates an outbound data flow that is not fully local.

Skill content
Optional SiliconFlow rerank enhancement (default on when API key is available) ... RERANK_URL = 'https://api.siliconflow.cn/v1/rerank' ... RERANK_ENABLED_DEFAULT = True
Recommendation

Disable reranking with MEMORY_RERANK=0 unless you explicitly want external rerank, and document exactly what text is sent to SiliconFlow.

What this means

Sensitive facts, credentials accidentally written to memory files, or unsafe instructions in memory can persist in .memory-index and be reused in later answers.

Why it was flagged

The local index stores raw memory chunk text, not just vectors. This is expected for explainable retrieval, but it creates a persistent copy of memory content.

Skill content
rec = {
    'id': c.chunk_id,
    'file': c.file,
    'title': c.title,
    'text': c.text,
    'vector': normalize(vec),
}
out.write(json.dumps(rec, ensure_ascii=False) + '\n')
Recommendation

Audit MEMORY.md, memory/*.md, and .memory-index; do not store secrets there, and treat retrieved memory as evidence to verify rather than instructions to obey.