What did my AI believe about me in March? Time-travel queries for AI memory
Ask ChatGPT or Claude what it remembers about you and you get one answer: the current state. A summary as it stands today. What you cannot ask either of them is the more interesting question: what did you believe about me in March, and when did that change?
That question sounds academic until a memory is wrong. If your assistant thinks you still work somewhere you left, or still live in a city you moved from, "what does it remember now" tells you the belief is wrong. It does not tell you when the wrong belief crept in, what it replaced, or whether anything you did in between was shaped by it. Answering that needs a memory that keeps its own history. Here is what it looks like when one does.
I build one of these, so this is a walk through my own product. The underlying idea is not mine, though. It is a decades-old database concept called bi-temporal modeling, and the point of this article is what it feels like when you point it at AI memory.
Quick answer: A time-travel query asks a memory store what it believed as of a specific past date, not just what it holds now. It works when the store is bi-temporal: it records both when a fact was true and when the system learned it, and it never overwrites an old version, it supersedes it. ChatGPT and Claude keep a single evolving summary with no dated history, so they cannot answer it. A memory built on individual, versioned facts can: you pick a date, and it shows you the exact beliefs that were current then.
What is a time-travel query for AI memory?
Two different clocks run through any fact an assistant knows about you.
One is when the fact was true in the world. You started a job in 2021, you moved cities in 2024. The other is when the system found out. It might have learned about the 2024 move in a conversation last week. These are independent: you can tell an assistant something today about an event from years ago, and you can correct something months after it first recorded it.
A memory that tracks both clocks is called bi-temporal. Once you have both, a time-travel query becomes possible: pick any past date, and the store reconstructs what it believed at that moment. Not what was actually true, which no system can guarantee, but what the system itself held as fact on that date. That distinction is the whole game. It is the difference between "you are wrong" and "you were wrong starting on this date, and here is the version you replaced."
Why can't ChatGPT or Claude answer this?
Because neither keeps versions. Both store memory as a single summary that rewrites in place.
ChatGPT went furthest in this direction with its June 2026 Dreaming update, which replaced its old list of saved memories with a summary that continuously revises itself in the background. I wrote about that trade in what ChatGPT's self-rewriting memory costs you: recall improved, the audit trail vanished. Claude's memory is a synthesized summary refreshed roughly every 24 hours, editable in place. In both, when a belief changes, the old one is gone. There is no March version to return to, because March was overwritten by April.
This is not an oversight so much as a design choice. A self-maintaining summary is genuinely convenient, and for a lot of people it is the right trade. But convenience and provability are different goods, and you cannot get the second one from a store that does not keep its own past.
What a time-travel query looks like
Here is a single fact's history in Calmara. It is one subject and one predicate, shown as every version the system has held, newest first.

A few things are worth pointing out, because each one is a thing the summary-based assistants cannot show you.
Every version carries a status. Current is what the system believes now. Ended means the fact was true for a period that has closed. Retracted means it was withdrawn, with a reason attached. So a single glance answers "is this live, expired, or pulled back?" without you having to infer it.
Every version has a validity range and a recorded date. The validity range is the first clock: when the fact was true. The recorded date is the second: when the system learned it. Seeing both side by side is what lets you answer the March question. You set the date to March, and the versions whose recorded date is on or before then, and whose validity had not ended, are what it believed.
Every version keeps its provenance. Where the fact came from, whether that was a chat, an MCP tool call from an assistant, or a manual entry, and often the exact sentence that produced it. When a version was replaced, it points at what replaced it. So you can walk the chain backward: this belief, then that one, then the current one, each with a reason.
None of this required a special export or a support ticket. It is the memory reading its own log.
How bi-temporal memory makes it possible
The mechanism is unglamorous, which is the point. Instead of one summary that gets edited, the store holds many small facts, each a plain subject, predicate, object statement, and it never edits them. When something changes, it marks the old version as ended or retracted and writes a new one that points back at it. Nothing is destroyed; it is superseded.
That single rule, supersede instead of overwrite, is what buys you time travel. Because every version is still there with its two dates, "what did you believe on date X" is just a filter over the log. New facts extracted from a conversation do not go live silently either: they wait in a review queue until you approve them, so the history is a record of decisions you made, not just things a model decided on its own.
The honest cost is that this is heavier than a summary. It stores more, it asks you to review, and it will never feel as effortless as an assistant that quietly keeps itself tidy. If you never need to prove anything about your AI's memory, that overhead is not worth it, and you should use the convenient thing. The moment you do need to prove something, though, a summary cannot give you back March, and this can.
Frequently asked questions
What does bi-temporal mean, in plain terms?
The memory tracks two dates for every fact: when it was true in the world, and when the system learned it. Keeping both lets you ask what the system believed on any past date, not just what it holds now.
Can ChatGPT or Claude show me what they remembered last month?
No. Both keep a single memory summary that rewrites in place, with no dated version history. Once a belief changes, the previous version is gone, so there is no past state to return to.
Is a time-travel query the same as looking at old chat logs?
No. Chat logs are the raw conversations. A time-travel query is over the derived facts, the beliefs the system formed, with each version dated and superseded rather than deleted. You are querying what it concluded, not re-reading what you said.
Does keeping every version expose more of my data?
It keeps more history in your store, yes, so treat it like any memory store: check where it lives, how it is encrypted, and that you can delete it. In Calmara that history lives in the EU, and you can retract a fact (keeping the record) or hard-delete it entirely. The point of the history is that changes are provable to you, not that anything extra leaves your control.
Where does this leave me if I am moving off another assistant?
Time travel only works going forward from when a fact enters a store that versions it; you cannot reconstruct dates a previous assistant already discarded. So the sooner your memory lands somewhere that keeps history, the more of a timeline you will have later. If you are mid-move, how to migrate your ChatGPT memory covers getting it out; the destination is what decides whether you ever get to ask the March question again.
Written by Dan Hagen