T02 · Agent Memory Poisoning
- Location
SKILL.md:166- Finding
Conversation-Derived Content Can Be Promoted into Persistent Agent Control Files
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a local memory-management skill, but it asks agents to store conversation-derived information and promote it into persistent behavior files without enough user approval, filtering, or rollback controls.
Install only if you want a Chinese-language local memory system that stores and searches prior work. Do not enable the cron jobs or promote lessons into SOUL.md, AGENTS.md, or TOOLS.md unless you first review the exact files touched, exclude sensitive data, require manual approval for every promoted rule, and have a way to undo changes.
SKILL.md:166Conversation-Derived Content Can Be Promoted into Persistent Agent Control Files
scripts/memory-gc.sh:58Archive Processing Breaks on Memory Filenames Containing Whitespace
The declared description presents a broad agent memory/learning system with multiple features: temperature modeling, auto-archiving, learning records, and skill refinement. The supplied code does not implement such a system. It is a Bash script whose sole purpose is to create a new skill folder and populate a SKILL.md template based on a validated skill name. While this loosely relates to the '技能提炼' (skill extraction/refinement) part of the description, it does not implement the broader memory evolution system, nor any temperature model, archiving, or active learning-record processing. There are no suspicious undeclared resource accesses; the main issue is that the actual behavior is materially narrower and different from the declared primary purpose.
The code does implement parts of the description: temperature modeling (hot/warm/cold classification), automatic archiving of old memory files, and some reporting over structured knowledge folders. However, it does not actually perform '学习记录' in any substantive sense beyond counting files in certain directories, and it does not implement '技能提炼' at all. Its primary behavior is operational maintenance/GC of Markdown memory files, not a full memory evolution system that makes the AI smarter. Therefore the description overstates the implemented capabilities and is only partially accurate.
The code does operate in the general memory/reflection domain, but the declared description substantially overstates what it does. The script mainly performs filesystem maintenance and reporting: ensures directories exist, counts files/tasks, creates a boilerplate reflection file, conditionally appends a health-statistics section to INDEX.md, and detects old logs. It does not implement a temperature model, does not automatically archive anything, and does not extract skills or meaningfully learn from content beyond simple grep-based counting. Therefore the declared purpose does not accurately represent the actual behavior.
The README advertises automatic archiving and nightly reflection but does not clearly disclose that the skill will create, modify, and retain local memory files on a recurring schedule. In a memory-management skill, silent scheduled writes increase privacy and integrity risk because users may enable cron jobs without understanding ongoing data collection and file mutation.
The README promotes semantic search over memory without clearly warning that stored user history, preferences, and prior interactions may be indexed or queried. For a tool centered on persistent memory, this omission can mislead users about the scope of personal data processing and increase unintended exposure of sensitive historical context.
The README instructs users to install cron jobs that run indefinitely and persistently modify local state, which creates ongoing session persistence behavior outside the immediate user interaction. In the context of a memory skill, persistent background execution is more sensitive because it continually processes and archives conversational memory, increasing privacy, retention, and tampering risks if not clearly bounded and disclosed.
# 编辑 crontab
crontab -e
# 添加以下任务
0 0 * * 0 /path/to/skills/memory-hamster/scripts/memory-gc.sh >> /path/to/logs/memory-gc.log 2>&1
Without declared permissions the skill's intent is opaque and cannot be validated.
The skill description and most instructions are presented in Chinese, which can impose a language preference on users without opt-in. The policy requires either offering a language/locale choice or clearly documenting that the skill is intended for a specific locale or audience.
The skill advertises automatic archiving and record creation that modify workspace files, but it does not prominently warn users that installation and scheduled execution will persistently alter memory and log data. In an agent setting, silent background modification increases the chance of unintended retention, overwrites, or archival of sensitive information without informed consent.
The skill instructs users to install persistent cron jobs that run unattended and continue modifying/logging data outside the immediate session. In this context, persistence amplifies the privacy and integrity risks of the skill because archival and reflection processes will keep operating even when the user may not be actively supervising or remembering that retention is enabled.
# 编辑 crontab
crontab -e
# 添加以下任务(根据实际安装路径调整)
0 0 * * 0 ./skills/memory-hamster/scripts/memory-gc.sh >> ./logs/memory-gc.log 2>&1
These instructions tell the agent to persist user-provided information, decisions, corrections, and daily activity across sessions in multiple memory files. Without data-minimization rules, consent controls, or sensitivity filtering, this can create long-lived storage of personal, confidential, or regulated information that later tools, users, or processes may access.
The templates explicitly instruct logging full context, user needs, errors, and related files into persistent records. That creates a clear pathway for sensitive prompts, file paths, credentials, proprietary code details, or personal data to be stored indefinitely and later surfaced by search or skill-extraction workflows.
This shell script includes its user-facing description and runtime messages in Chinese, and there is no indication that the skill is region-specific or that users may opt into another language. The policy for natural-language violations applies to all file types, so hard-coding a single language without opt-in is a reportable locale-policy issue.
The script’s comments and all user-visible messages are written in Chinese, including usage/help context and runtime status output. For a general-purpose skill, this imposes a specific language on users without opt-in or an explicit justification that the skill is intended only for a Chinese-speaking or region-specific environment.
This markdown template uses Chinese-only instructional text for key sections such as the summary, error, context, and suggested fix. That imposes a specific language/locale in the skill artifact without offering a user choice or documenting that the template is intended only for a Chinese-language context.
The template’s instructional text for Summary, Details, and Suggested Action is written only in Chinese, which implicitly requires lessons to be authored in that language. This is a natural-language locale constraint without any opt-in, alternative language guidance, or documented region-specific justification.
The natural-language instructions and descriptions are written in Chinese throughout the file, which effectively imposes a language requirement on users without an explicit opt-in or justification. Under the stated policy, a skill should offer language choice or document why a specific locale is required.
L324 将提取脚本写成 ./skills/vv-evolution/scripts/extract-skill.sh,但本文件前文多处将该能力明确归属于当前技能 memory-hamster,实际目录结构也在 L125-L131 列出为 skills/memory-hamster/scripts/extract-skill.sh。这不是单纯遗漏信息,而是文档直接指向另一个技能路径,与本技能说明发生明显冲突。
The natural-language description is written entirely in Chinese, which can impose a specific language on users without any opt-in or indication that the skill is intended only for a Chinese-speaking or region-specific audience. This matches the policy concern about language or locale constraints that are not optional or justified.
The header comments and usage examples indicate the tool is intended for Chinese-language interaction, and the runtime messages later in the file are also exclusively in Chinese. This creates a natural-language locale constraint without user opt-in or justification that the skill is region-specific.
The entire template, including the title and section labels, is written in Chinese and does not offer any language choice or explain that it is intended only for a Chinese-speaking context. This can violate a language/locale policy when skills are expected to avoid forcing a specific language without user opt-in.
The template contains fixed Chinese prompt text for multiple sections, which imposes a specific language on users filling out the feature request. This is a natural-language locale policy issue because the file does not indicate that Chinese is optional or provide any user language choice.