Skip to main content

Remove Memories Safely

Deleting memories is how you honor compliance requests, undo bad data, or clean up expired sessions. Mem0 lets you delete a specific memory, a list of IDs, or everything that matches a filter.
Why it matters
  • Satisfies user erasure (GDPR/CCPA) without touching the rest of your data.
  • Keeps knowledge bases accurate by removing stale or incorrect facts.
  • Works for both the managed Platform API and the OSS SDK.

Key terms

  • memory_id – Unique ID returned by add/search identifying the record to delete.
  • batch_delete – API call that removes up to 1000 memories in one request.
  • delete_all – Filter-based deletion by user, agent, run, or metadata.
  • immutable – Flagged memories that cannot be updated; delete + re-add instead.

How the delete flow works

1

Choose the scope

Decide whether you’re removing a single memory, a list, or everything that matches a filter.
2

Submit the delete call

Call delete, batch_delete, or delete_all with the required IDs or filters.
3

Verify

Confirm the response message, then re-run search or check the dashboard/logs to ensure the memory is gone.

Delete a single memory (Platform)

from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

memory_id = "your_memory_id"
client.delete(memory_id=memory_id)
You’ll receive a confirmation payload. The dashboard reflects the removal within seconds.

Batch delete multiple memories (Platform)

from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

delete_memories = [
    {"memory_id": "id1"},
    {"memory_id": "id2"}
]

response = client.batch_delete(delete_memories)
print(response)

Delete memories by filter (Platform)

from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

# Delete all memories for a specific user
client.delete_all(user_id="alice")

# Delete all memories for a specific agent
client.delete_all(agent_id="support-bot")

# Delete all memories for a specific run
client.delete_all(run_id="session-xyz")
You can also filter by other parameters such as:
  • agent_id
  • run_id
  • metadata (as JSON string)
Breaking change: delete_all previously wiped all project memories when called with no filters. It now raises an error if no filters are provided. Use "*" wildcards for intentional bulk deletion (see below).

Wildcard deletes

Setting a filter to "*" deletes all memories for that entity type across the entire project. This is an intentionally explicit opt-in to bulk deletion.
from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

# Delete all memories across every user in the project
client.delete_all(user_id="*")

# Delete all memories across every agent in the project
client.delete_all(agent_id="*")

# Full project wipe — all four filters must be explicitly set to "*"
client.delete_all(user_id="*", agent_id="*", app_id="*", run_id="*")
A full project wipe requires all four filters set to "*". Setting only some to "*" deletes memories only for those entity types, not the entire project.

Delete with Mem0 OSS

from mem0 import Memory

memory = Memory()

memory.delete(memory_id="mem_123")
memory.delete_all(user_id="alice")
The OSS JavaScript SDK does not yet expose deletion helpers—use the REST API or Python SDK when self-hosting.

Use cases recap

  • Forget a user’s preferences at their request.
  • Remove outdated or incorrect facts before they spread.
  • Clean up memories after session expiration or retention deadlines.
  • Comply with privacy legislation (GDPR, CCPA) and internal policies.
MCP Alternative: With Mem0 MCP, AI agents can delete their own memories when data becomes irrelevant or at user request.

Method comparison

MethodUse whenIDs requiredFilters
delete(memory_id)You know the exact record✔️✖️
batch_delete([...])You have a list of IDs to purge✔️✖️
delete_all(...)You need to forget a user/agent/run✖️✔️

Put it into practice

See it live