Architecture · Conflicts

Updating Memory: Conflicts and Stale Facts

When new information contradicts stored memories, agents must update, version or invalidate old facts — conflict resolution is critical for trustworthy long-term memory.

Stale

“User lives in Munich”

Updated

“User lives in Berlin” (March 2026)

Causes

Why memories conflict

User preference changes, world facts evolve, extraction errors, multi-agent writes and missing TTL enforcement.

Example: refund policy changes from 30 to 14 days — a support bot must invalidate the old policy memory, not retrieve both. CRM account status updates create the same problem at scale.

Customer support use case

Resolution

Conflict resolution strategies

StrategyHow it worksBest for
Last-write-winsNewest fact replaces oldSimple prefs
Temporal validityBi-temporal edges with valid_from/toCRM, policies (Zep Graphiti)
Version chainsKeep history with version IDsAudit trails
Confidence scoresHigher-confidence winsMulti-source facts
Human-in-loopFlag conflicts for reviewHigh-stakes domains

Zep improved LongMemEval accuracy by up to 18.5% via temporal invalidation (Rasmussen et al., 2025).

Stale facts

Stale fact detection

Explicit expiry timestamps, periodic revalidation, contradiction on retrieve and user corrections.

When retrieval returns conflicting facts, trigger re-extraction or invalidate the weaker memory. User says “actually I prefer chat not email” → supersede immediately.

Forgetting and eviction

Graphs

Graph-based conflict handling

Knowledge graphs model validity windows on edges — “refund window was 30 days until Q3 2026.”

Zep’s Graphiti engine invalidates superseded facts instead of deleting them, preserving audit trails (Rasmussen et al., 2025, arXiv:2501.13956). Entity merge handles duplicate nodes (“Acme Corp” vs “Acme Corporation”).

Knowledge graphs for temporal memory · Zep alternatives

Vectors

Vector-only conflict limitations

Similarity stores struggle with “user now prefers X not Y” — both embeddings may rank high without explicit invalidation.

Mitigations: metadata versioning, delete-on-update, or migrate conflicting domains to temporal graphs. Engram and Mem0 use merge/replace on write; Zep uses graph invalidation natively.

Vector vs knowledge graph memory

FAQ

Frequently asked questions

How do agents handle contradictory memories?

Invalidate or supersede old facts on update — last-write-wins for simple prefs, temporal validity for CRM/policy domains. Zep Graphiti does bi-temporal invalidation natively.

How does Zep handle memory conflicts?

Graphiti invalidates superseded facts with bi-temporal edges — tracks when facts were valid. LongMemEval +18.5% vs baseline (Rasmussen et al., 2025). See Zep alternatives.

How does Mem0 update conflicting memories?

Engram and Mem0 both merge or replace memories on write when new info arrives. For temporal validity windows, compare Zep.

What if a user corrects the agent?

Treat correction as high-priority write — immediately supersede the contradicted memory. Expose forget/update tools in memory-as-tool patterns.

What is temporal validity in memory?

Facts have valid_from/valid_to windows — "refund policy was 30 days until Q3 2026." Graph edges model this; vectors need explicit metadata.

Multi-agent memory conflicts?

Scope writes by agent_id, use confidence scores or central conflict resolver. See shared memory and multi-agent memory.

Context poisoning and stale memories?

Stale or adversarial memories injected into retrieval poison agent responses. Mitigate with TTL, source provenance, user_id filters and periodic revalidation.

CRM data updates vs agent memory?

Sync CRM as source of truth; agent memory holds conversation-derived facts. On CRM update, invalidate related agent memories or re-fetch from CRM at retrieve time.