Why Does My AI Keep Forgetting My Story and Characters?
Your AI does not remember your story the way you do: a new chat often starts empty, and long chats get shortened. Keep the story in a file and a model in your project, so that every new chat can run a checker that catches what it forgot.
Why does my AI forget what we decided?
On Monday you and your AI decide that Tobin betrayed his sister Nell. On Thursday you open a new chat and ask for the scene where they meet again. Now he is a loyal friend.
The AI did not ignore you. It never saw Monday's chat. There are three usual reasons:
- A new session starts blank. In Claude Code, each session begins fresh. Only your
CLAUDE.mdfile and the tool's own notes carry over. Other tools differ, so do not count on it. - Long chats get squeezed. Claude Code shortens a long conversation by itself so it can keep going, and its docs warn that a sentence can get lost on the way.
- Decisions stay in the chat. Your game files show what was built, not why. "Tobin betrayed her" may exist only in one old message.
Some tools keep their own notes. They can help, but they are not a safe home for your plot, because the tool decides what it writes down.
Where should my story live so the AI finds it?
In a plain file in your project, called story-bible.md. This page explains what goes in it. Then make your tool read it:
- Claude Code. It reads a file called
CLAUDE.mdat the start of every session. Add one line there that says to readstory-bible.mdbefore writing any story. - Cursor. Add a project rule in the
.cursor/rulesfolder, as a file ending in.mdc, and set it to always apply. Or put the same line in anAGENTS.mdfile in your project folder. - ChatGPT. Use a Project, which keeps chats, files and instructions together. Add the story bible as a file, and say in the instructions to read it first. When the file changes, swap in the new one.
These details come from each tool's own help pages on 2 November 2026, and they change often.
Which facts and rules catch what the AI forgot?
A file only helps if the AI reads it and follows it. A model checks that for you. It stays in your project, so it does not forget, and a new chat can run it again.
- Facts: everything you decided, each with the line of the story bible it comes from.
- No two scenes contradict. A fact never has two different values on any path.
- Nothing new sneaks in. Every fact in the model comes from a line in the file.
What does a real check look like?
In this tiny story, the player reads an old letter, which says that Tobin betrayed Nell, or goes to the market instead. Both roads lead to the reunion. A new chat wrote that scene and made Tobin a loyal friend.
We ran this invented story through TLC 2.19 on 2 November 2026. This is TLC's real output. We only left out its housekeeping lines and put each step on one line.
Error: Invariant NoTwoScenesContradict is violated.
State 1: scene = "Start", established = {}
State 2: scene = "Old letter", established = {<<"Tobin", "betrayed Nell">>}
State 3: scene = "Reunion", established = {<<"Tobin", "betrayed Nell">>, <<"Tobin", "loyal friend">>}
On the path Start, Old letter, Reunion, two different things are true about Tobin at once. That path is the proof that the new chat forgot. A player who goes to the market never sees it.
The fix: the reunion now says that he betrayed her, on both roads. We ran TLC again.
Model checking completed. No error has been found.
7 states generated, 5 distinct states found, 0 states left on queue.
TLC looked at all 5 states the story can reach, and the rule held on every path.
Do I have to read any of this?
No. You never have to read the model or the checker's output, because your AI writes it, runs it and tells you the result in plain words. TLA+ is a language for modelling, and TLC is the tool that checks a model. If TLC cannot run on your computer, your AI can get a ready-made checker through our MCP server and run it in your project. Spielerando never looks at your story.
A pass means your rules held on every path in the model. It does not mean your story is good, and it says nothing about rules nobody wrote down.
Paste this to your AI
You keep forgetting my story, so let's fix that with a file and a model.
1. Look through my project. If you cannot see my files, ask me to paste the story so far.
2. Create story-bible.md and write down everything we have decided: characters, places, what has happened so far, and what must not change. Only write what you can find in my files or in this chat, and say where you found each line.
3. Tell me how to make sure you read this file at the start of every new session in the tool I am using. If you can set that up yourself, do it.
4. Write a TLA+ model of the story in a folder called story-check.
- Facts, as state: everything in story-bible.md, each with the line it comes from.
- Steps: every scene and choice, with what it needs and what it changes.
- Rules, as invariants: no two scenes contradict. Every fact a scene uses comes from a line in story-bible.md.
5. Run the TLC model checker on the model so that it walks every path. If TLC cannot run here, use get_recipe with story-model-check through Spielerando and run that checker in this project. If you can run neither, tell me, and do not claim that anything was checked.
6. For each broken rule, show me the exact path of scenes the checker found, in plain words, and quote the lines that clash. Do not change my story until I pick a fix.
From now on:
- At the start of every session, read story-bible.md and run the checker before you write any story.
- When we decide something new, add it to story-bible.md and the model straight away, show me the line and run the checker again.
- When you tell me something about my story, quote the line in story-bible.md it comes from.
- If it is not in the file, say "I do not know". Do not answer from memory, and do not make it up.
- Report only which rules held, how many states were checked and whether the check was cut off. Never tell me the story is good.
Or skip this and connect the MCP: your AI then finds all of this by itself.Connect the MCP
At the end of each session, send this:
Before we stop, add everything we decided today to story-bible.md and to the model in story-check, and run the checker once more. Show me each new line, quote the message it came from, and show me the checker's result. If you are not sure we really decided something, say "I do not know", ask me and leave it out.
How to check it worked
- Play the path it gave you. Follow those exact scenes in the game. You should see the clash yourself.
- Start a brand-new chat. Ask who Tobin is and what he did, without pasting anything. It should answer from the file and quote the line.
- Ask something that is not in the file. Ask what Nell's favourite food is. It should say it does not know, or ask you.
- Ask for a clash. In a new chat, ask for a scene where Tobin is a loyal friend. The next check should fail and name the path.