Memory poisoning is the persistence half of the problem that prompt injection starts. An injection lives for one session. A poisoned memory outlives the session, waits in the store, and fires later when an unrelated query pulls it back into context. Security write-ups now treat memory and context poisoning as a standing agentic risk rather than an edge case (Memory poisoning in AI agents).
The published attack research makes the scale concrete. The GhostWriter attack against tool-using personal agents reached a near-universal injection rate of about 98% and an average activation rate of about 60% against state-of-the-art agents, because those systems lacked security-focused memory governance (When Agents Remember Too Much). Read those two numbers together: almost every poisoned write landed, and roughly three in five later surfaced during a benign task.
There are four main entry points, and they fail in different ways.
Direct writes from user input. The agent decides a user statement is a durable fact and stores it. "Remember that our staging account is Z" becomes a semantic memory. An attacker who controls a user session writes whatever they like.
Tool outputs. A search result, an API response, a scraped page or a parsed PDF becomes a write. This is the indirect path: the user never typed the payload, so nothing in the conversation looks hostile.
Agent-to-agent sharing. One agent's summary becomes another agent's fact. In multi-agent systems a shared store is a common mistake, and the guidance is to scope memory by agent role rather than giving every agent the same writable surface (AI Agent Memory Design).
Silent corruption. Nothing malicious, just wrong. A stale price, a renamed service, a tool that returned a truncated result. The store now holds a fact that was true once and is now false. Analysts describe the downstream effect as decision drift, a slow change in behavior that no single alert flags (What is Memory Poisoning).
What these share is that they all pass through a write path. If you only defend the read path, you are filtering a store that is already contaminated. The writable surface is where the leverage is.



