There are two ways a chatbot can seem to remember you. One is a long context window, which forgets the moment the window slides. The other is writing things down.
This one writes things down, and — the part that is unusual — lets you read what it wrote.
Why characters drift
A model has no memory between messages. Everything it appears to recall was re-sent to it in the prompt. When a conversation grows past what fits, something has to be dropped or compressed, and that is where drift begins: the character stops knowing your sister's name, then contradicts what it said last week, then quietly becomes a different person who uses the same words.
Most products handle this by summarising in the background. It works until the summary is wrong, and then it is wrong forever, because you never see it and cannot correct it.
What is actually stored
Short facts, extracted from the conversation as it goes. Not a transcript, not a vector blob — lines you can read.
They are scoped three ways at once, and that scoping is what keeps stories from bleeding into each other:
- Per character — what one character knows, another does not.
- Per topic — separate threads with the same character keep separate memories.
- Per person — nothing you tell a character is ever visible to anyone else talking to that same character.
Reading it, fixing it, deleting it
The memory list is a screen in the chat settings. Open it and you see the facts, in order. If one is wrong, correct it. If one should never have been written, delete it. If you want none of it, switch memory off for that conversation and nothing further is stored.
This sounds small and it changes the failure mode entirely. A wrong fact in a hidden summary poisons every later reply and you can only guess why the character has gone strange. A wrong fact in a list is a line you fix in five seconds.
The first time a character writes something down, you are told once. Not on every message — once, so you know the mechanism exists and where to find it.
What never gets written
A filter runs over every extracted fact and strips the things that should not be in a memory store at all: email addresses, phone numbers, card numbers, government ID numbers.
This is a filter, not a promise about what you type. It removes patterns it recognises. The safest thing to do with a real card number is still not to send it to a chatbot.
Memory when the scene branches
You can fork any reply and keep both threads. When you do, the new thread inherits the memory the parent had at that moment — so a branch starts from the same shared past rather than from nothing, and then diverges on its own.
That is the point of branching: two versions of the same relationship, not two strangers.
Where memory travels
If a character becomes its own Telegram bot, memory works there exactly as it does in the main chat — still per character, per topic, per person. Someone talking to your bot builds their own memory with that character, and it is theirs alone.