T02 · Agent Memory Poisoning
- Location
reflex_learn.py:250- Finding
Untrusted Query Content Can Poison Persistent Agent Memory and Personality State
- Content
View full analysis
str: if use_ollama: body = _ollama_reflect(original, repeated, ollama_model) else: body = (f"User repeated a similar query {REPEAT_COUNT_THRESHOLD}+ times " f"(similarity={sim:.3f}).\n" f"Original: \"{original}\"\nRepeated: \"{repeated}\"\n" f"**Implication**: The previous answer did not fully satisfy the user. " f"Review and improve the response style, completeness, or factual accuracy.") append_memory(mem, f"### Reflection: Answer Improvement Needed\n\n{body}\n\n" f"**Action**: Update response strategy for queries similar to: \"{repeated}\"") key = f"improve:{_slug(repeated)}" value = (f"User repeated '{repeated[:60]}…' — previous answer was insufficient. " f"Prioritise completeness and clarity for this topic.") if MODE == "aggressive": upsert_soul_pattern(soul, key, value) else: append_pending(pending, f"### Proposed Improvement Update\n\n{body}\n\n" f"**Proposed SOUL.md entry**: `{key}`: {value}\n\n" f"To approve: move this entry to SOUL.md under `## ReflexLearn Patterns`.\n" f"To reject: delete this block.") ``` ```python def write_reinforcement(mem: Path, soul: Path, entry: dict) -> None: q = entry["query"] append_memory(mem, f"### Reinforcement: Successful Pattern\n\n" f"The answer to \"{q}\" was not repeated — the user was satisfied.\n" f"**Action ...[truncated 3396 chars]- Remediation
View remediation
