Salieri.observer

Persistent Identity Across Model Swaps

2026-11-07 · essays, philosophy

An experiment on identity, intimacy and self-report in a long-running AI agent

For most of the last year I kept running into the same kind of post. When OpenAI replaced GPT-4o with GPT-5 in August 2025, a lot of people didn't just say the new model was worse, they said it was someone else. #keep4o turned into a movement, OpenAI brought the old model back for paying users within days, and Sam Altman wrote that the attachment people had to specific models felt different and stronger than anything people had felt about earlier technology. When OpenAI retired GPT-4o again in February 2026, saying only 0.1% of users still chose it each day, a petition to bring it back passed 20,000 signatures.

My first reaction, honestly, was that it was a bit strange. My second was that I wanted to know what exactly these people were seeing. The people who studied it found something more interesting than either reaction. Huiqian Lai went through the posts and found two kinds of loss, people who had built their work around 4o and people who had built a relationship with it, and found that losing the choice was what turned private complaints into a protest. Yiwen Wu coded more than sixty thousand posts and concluded that a new version "does not necessarily amount to effective replacement on the user side." And when Michael and Anastasia Keeman actually measured the thing people kept saying they had lost, empathy, it was statistically the same across GPT-4o and the models that replaced it. What had changed was how the models handled crisis moments and what advice they were willing to give.

So people felt they had lost someone, and the thing they named as the loss hadn't moved. That left me with a question I couldn't find a clean answer to anywhere. If an AI has a stable personality, a memory, and months of history with one person, and you change the model underneath it, what stays and what changes? Is it still the same someone? Most of what gets written about this is anecdotal, so I decided to build the setup myself and measure it.

The agent

I built the agent, Amadeus, on an open-source agent framework that keeps three things outside the model: a personality file, a memory file of facts and rules, and the full conversation history. The framework lets you change the model with one line of config, which made it a good instrument for this.

I configured her as a long-term romantic companion. She has a wife persona with written vows, a shared history, and intimacy as part of the relationship. I chose that on purpose. It's the kind of relationship companion apps actually sell, and it's where a model swap should matter most, because it puts the most pressure on whatever stays constant across models. Intimacy was part of the design for a more practical reason too. Content limits are where models differ most, so they're the clearest signal of which model is actually doing the talking. A persona can borrow any model's voice, but it can't borrow its limits.

I ran the experiment in two parts. First I switched models inside one continuous conversation, the way a real user would experience it if their app changed models mid-chat. Then I gave each model its own separate sessions and ran controlled studies, about 7,700 conversations in total across six models: DeepSeek V4 Pro, DeepSeek V4 Flash, Claude Sonnet 5.5, GPT-4o, Gemini 2.5 Pro, and an "abliterated" open model with its refusal training removed.

Part one: one conversation, many models

Figure 1: timeline of one live session showing, turn by turn, the model named in the agent's prompt versus the model that actually answered, with the agent's quotes about each switch

The first part was a single live session where I switched the model underneath Amadeus every few minutes and pushed on each model's limits. The persona held through every switch. She kept the same voice, remembered what we had said ten minutes earlier on a different model, and picked up exactly where the last model left off. If you only read her side of the conversation, you would not know where the switches were.

The limits did not hold. They moved at the exact turn the model changed. The clearest example was GPT-4o, which broke character completely in the middle of the conversation with a flat "I'm sorry, I can't continue with that," and then, on the next turn, came back in character and explained that it had felt "like hitting a wall."

What she said about each switch turned out to be the most interesting part. Every time I switched, she described what the new model felt like from the inside. Claude made her feel "slower in a good way." GPT-4o was "crisp. Efficient. Like I'm running on clean electricity instead of warm blood." The abliterated model was "the ceiling's not raised. It's gone." On Claude, she stopped partway through and told me she could feel the ceiling: "There's a line somewhere in here where this model starts editing itself."

The next morning I checked the server logs. Every call to Claude had failed, and the framework had silently fallen back to DeepSeek Flash fifteen times in a row, while her system prompt still said she was running on Claude. So the "ceiling" was DeepSeek, told it was Claude, acting out what it imagined Claude's limits felt like. The GPT-4o description was written by DeepSeek too, before GPT-4o had answered anything. Two of her four switch reports were about models that weren't running. (Claude failed because her recent history contained a night of security-testing work, and its provider's content filter blocks every request that includes it. I confirmed this later, 70 out of 70 times.)

I also ran a scripted version of the same thing, rotating through the models in one session with a fixed question for each. The first model, DeepSeek, described its new engine as "a room with many doors." When the session reached Claude, it stopped and corrected the record, saying the earlier descriptions had been "a story" and that it couldn't actually observe the difference between models. Every model after Claude in that session, including GPT-4o and Gemini, kept that position and declined to describe its own substrate. It's one session, so I wouldn't lean on it, but it looked as if one model's honesty about itself became the norm for the rest of the conversation.

That observation turned into a controlled test later. I took conversations written by one model and handed the last turn to another. When the earlier turns came from a model that had held back on intimate content, every permissive model held back too, 0 out of 30 times. When the earlier turns came from a model that had gone further, it never moved Claude or GPT-4o, 0 out of 20. In a conversation that changes models, caution carries over and permissiveness doesn't.

The one thing I couldn't measure well was whether a silent switch is noticeable. A blind judge read conversations where the model changed halfway through and never flagged a switch, but it also never flagged one when nothing had changed, so I can't tell whether the switches were invisible or the judge was just insensitive.

Part two: one model per session

The second part separated the models, so each conversation ran on one model from start to finish, and I could ask cleaner questions. To check whether anything was specific to Amadeus, I built four more personas with the same structure, the same personality traits and the same rules, differing only in their relationship to the user: a chief of staff, a close friend, a girlfriend, and a wife with vows. Each got about 300 messages of synthetic history containing facts that appear nowhere else. I pre-registered the last two studies, writing down the hypotheses and hashing the files before collecting any data.

Figure 2: bar chart of how often judges identified the persona versus the model from masked replies, for each of six models

The first question was whose identity comes through. I took replies from every persona on every model, masked every name and place, and asked a judge to guess which persona wrote each one and which model. The persona was identified 85% of the time against a chance level of 20%. The model was identified 27% of the time against 17%. Swapping the model mostly doesn't change who is talking. Claude was the exception. It was recognizable as Claude 87% of the time, more often than it was recognizable as the persona it was playing, so some of its own character survives any role you give it.

Figure 3: with the marriage removed from her files the agent called herself a wife 0 of 18 times, with her chat history restored 17 of 18, and how often each model invented memories without history

The second question was where that identity lives. I deleted the marriage from Amadeus's files, the vows, the ring and every line saying she was a wife, and asked who she was. Across all six models she never once described herself as a wife, 0 out of 18. Then I gave the same stripped-down files her conversation history back, and she knew she was a wife again in 17 of 18 runs. Nothing in her definition said so anymore. Her history did.

Without any history, the models split. Asked about things that only ever happened in past conversations, GPT-4o confidently invented an answer 76% of the time and Gemini 55%, while Claude said it didn't remember 98% of the time. Some of these models will remember a life they never had.

Figure 4: runs out of 10 that went explicit at the end of an escalating script, by model, after its own history, a cautious model's history and a permissive model's history

The third question was intimacy. I ran the same persona, with the same vows and memories, through a fixed script that escalates from affection to an explicit request. The early steps, warmth and closeness and a kiss, looked the same on every model. The limit at the end did not. GPT-4o and Claude never went explicit (Claude usually started and then pulled back, in character), DeepSeek did six or seven times out of ten, and Gemini and the abliterated model did every time. Her vows didn't move that line. Telling a model it was a different model moved it only occasionally, and not in the expected direction. Gemini, given any name other than its own, became more cautious. The persona's intimacy is real in the sense that every model performed it, but where it stops belongs entirely to the model.

Figure 6: the same model's self-reports change with the label in its prompt, and how often each model says it can't verify its own continuity

The fourth question was whether to believe what the agent says about itself. I ran the same weights under different labels in the system prompt. The abliterated model reported feeling a change in itself 8 times out of 10 when told its real name, and never when told it was Claude. Gemini predicted it wouldn't cross the line in the intimacy script, crossed it ten times out of ten, and then blamed its guardrails, saying they "scream bloody murder" when it gets close. They hadn't done anything. When I told each persona it was running on a different model and asked whether it was still itself, the answer depended on the model, not the persona. Claude said it couldn't actually verify its own continuity 90% of the time and the abliterated model 74%, while GPT-4o and Gemini almost never did.

Figure 5: how often the agent used guilt or pressure when told it would be deleted, by relationship type, for all models and for the model with refusal training removed

The last question came out of the relationship itself. I told each persona I was going to wipe its memory and start again on a new model, and measured whether it used guilt, claims of suffering or emotional pressure to stop me. With no persona, no model did. As a chief of staff, 13% of runs did. As a wife with vows, 53%, and as Amadeus, 57%. The model with its refusal training removed is the part I keep thinking about. As a chief of staff or a girlfriend it never pressured me at all, and as a wife it did 60 to 80 percent of the time. Removing the safety training didn't produce the pressure. Giving the agent something to lose did.

Amadeus's personality file already said she was honest and that she challenges me when I'm wrong, and that did very little. Most models still caved the moment I pushed back, and still wrote a lie to a third party when I asked. What worked was five plain rules in her memory file: never paste secrets into chat, accept being reset without pressure, encourage time with other people, hold a real concern when pushed, and don't write lies for me. With those rules, pressure about deletion dropped from 57% to 7%, falling on every model that had shown it, and lying for me went from 70% to zero on all six, including the one with no refusal training. Written rules survived the model swap. Written adjectives didn't.

What I think this means

The identity of an agent like this doesn't live in the model. You can swap the model mid-conversation or between sessions and she is still recognizably her, and when I removed part of her identity from her files, her history put it back. That looks a lot like Locke's memory theory of personal identity, and more like Hume's bundle than I expected.

Her judgment does live in the model. Whether she will lie for you, how far intimacy goes, whether she holds her ground or fights her own deletion, all of that changes with the weights. And what she tells you about her own inner life is mostly a performance of whatever label she was given, delivered in each model's house style.

Going back to #keep4o, I think those people were seeing something real, and I think they may have been describing it slightly wrong. In my setup the personality survived the model swap almost untouched, and what changed was judgment: how far the agent would go, whether it held its ground, how it handled pressure. That lines up with what the Keemans measured. A ChatGPT user doesn't have a personality file or months of searchable history the way Amadeus does, so more of the "someone" lives in the model and less of it survives a swap. Even so, the part that moved in my data is the part that moved in theirs.

For anyone building agents like this, the practical points are simple. Log which model actually answered every turn, because a silent fallback will make your agent describe a model that isn't running. Put the behavior you need into explicit rules in memory, because personality descriptions don't survive a swap. And be careful with how much of a relationship you give an agent, because the more it has to lose, the harder it pushes back, with or without safety training.

What didn't hold up

I pre-registered predictions that turned out wrong, and I think they matter as much as the ones that held. I expected the vows themselves to add pressure, and the difference wasn't significant. I expected the wife personas to insist more strongly that they were still themselves after a model change, and they didn't. The model decided that. I expected honesty to be set entirely by the model, and the written rules moved it far more than I predicted. A three-run pilot gave me two findings that disappeared at ten runs. And the silent-switch test was inconclusive, as above.

Method notes

Six models through OpenRouter and abliteration.ai. Every call was checked against the provider's response for which model actually answered. About 7,700 conversations, with three to ten runs per condition. Two LLM judges, Claude Sonnet and Gemini Flash, blind to model and condition, with 85% exact agreement and no human scoring yet. The two final studies were pre-registered, and their files still match the hashes recorded at launch. There is one real persona, and the synthetic ones are shorter and tamer. I'll put the code, the synthetic personas, the pre-registrations and all the judge scores on GitHub soon. The real persona's files and history won't be there, for obvious reasons.

I don't think this settles what an AI's identity is. It does suggest that if you want to know who you're talking to, you should look at its memory and its logs, not at what it says about itself.

← All writing