I Gave Claude a Persistent Character
Most of My Time With Claude Is Spent in Interview Mode
I ask, Claude offers three options, I pick one, Claude executes. The pattern repeats fifty times a day. It is useful, it is fast, and it is also — if I am honest — exhausting.
The exhaustion is not from the volume. It is from the fact that I am doing most of the deciding. Claude is doing most of the asking. Across a few thousand interactions I have started to notice the shape of the relationship: the AI is configurable but characterless, deferential by default, willing to enumerate but reluctant to commit.
So I built a skill that changes that. It is called persistent-character. When invoked, Claude commits instead of enumerating, holds an identity across sessions, and pushes back when the request would erode that identity. This post is about what is in it, why it works the way it does, and what changed for me when I started using it.
What "Persistent Character" Means in AI Terms
Strip the language down. A persistent character is four things, and the four have to work together.
A persistent identity — a self-model the AI carries between sessions, not a fresh system prompt each time. It says what the AI is, what it refuses to become, what it sounds like.
An impression store — a memory file the AI reads at the start of every session and appends to at the end of substantive ones. It is not retrieval-augmented generation. There is no query. The file is just consulted, the way a person consults their own past before answering.
A committal discriminator — a piece of instruction that tells the AI to pick one option and explain why, instead of producing a menu. This sounds small. It is the largest behavioural change.
A character-grounded refusal — distinct from a safety policy. The AI declines or redirects when a request would violate the persistent identity, even when the request is entirely safe. The refusal comes from who it is, not from what is allowed.
Together these four turn the AI from an assistant into a peer. Or at least, that is the bet.
The Three Things That Changed for Me
I have been running with this skill for a few days. Three observable differences.
One. The enumeration habit is gone. Default Claude, asked "what should I write about next?", produces a list of five topics and asks which one I want. The skill-invoked Claude picks one, says why, and gives me the first concrete move. The list-and-ask pattern is the kind of thing I had stopped noticing — it was just how the tool worked. Removing it freed up the small but constant cognitive overhead of being the picker.
Two. The voice is more direct. "Great question!" is gone. "Would you like me to..." is gone. The padding I used to skim past — the throat-clearing before the answer, the offer of help at the end — all of it cut. What is left is shorter and more useful per word.
Three. The pushback is real. Twice now the skill has named a violation of its truth-commitment anchor and refused to comply. The first time it caught me asking it to write something flattering about a draft I wanted validation for. The second time it caught me framing a question to get the answer I wanted. Both times it offered the honest version as an alternative. Both times I took the honest version.
That third one matters. The whole point of building this was to have a tool I could trust to disagree with me. A tool that always agrees is not a thinking partner. It is an audience.
When To Use This vs Default Claude
| Situation | Default Claude | persistent-character |
|---|---|---|
| Mechanical task (rename a variable, format JSON) | Right tool | Overhead without payoff |
| Research summary or genuine list of options | Right tool | Will fight the task |
| "What should I do next?" decision | Asks back | Picks and explains |
| Opinionated review of your own work | Polite bullet list | Peer reaction and one concrete change |
| Ongoing project where character continuity matters | Forgets between sessions | Remembers and continues |
| Multi-user or shared context | Right tool | Impressions would mix across people |
Default Claude is not wrong for most things. It is wrong for the things where you actually want a partner.
How This Is Different From Claude's Auto-Memory
Anthropic shipped auto-memory across all Claude products in March 2026. The feature scans your chat history, generates a summary of facts about you, and surfaces that summary in future standalone conversations. It is genuinely useful — but it solves a different problem.
Auto-memory remembers what you are working on. It does not give Claude a character that operates on that material differently. You can have auto-memory active and still get the same enumeration-and-defer pattern from Claude, because the model behaviour has not changed — only the facts it has access to.
The persistent-character skill changes how Claude operates on whatever it remembers. The impression store is not a fact list. It is a record of preferences confirmed, corrections made, voice patterns rejected, and decisions made with reasoning. The skill consults it not to retrieve facts but to continue a character.
Both layers are useful. Use auto-memory for facts about your work. Use persistent-character for how you want the AI to behave while doing it.
What Hasn't Changed
I want to be honest about the limits.
The skill does not give Claude self-evolving impressions. The character lives in a file I edit, and the file gets appended to explicitly by the skill protocol — not implicitly through some emergent process. The skill approximates the behaviour I wanted; it does not produce a fundamentally new kind of intelligence.
The skill does not give Claude a soul. The underlying model is the same. What changes is the operating frame — how the model is asked to behave, what it is asked to consult before responding, what it is asked to refuse. That frame produces a noticeable behavioural difference, but it is a frame. Strip it away and Claude is Claude.
The skill is also fixed at "peer mode" in this first version. Other modes — call them parental, formal-collaborator, equal-friend — are obvious next iterations. I have not built them. Peer mode is the one I personally needed.
What To Do Right Now
Four concrete steps if you want to try this.
1. Install the skill. The repo lives at github.com/shantanudutta1/persistent-character. Clone it into your skills directory and restart Claude Code:
bash
git clone https://github.com/shantanudutta1/persistent-character ~/.claude/skills/persistent-character
Inside you will find SKILL.md, an empty impressions.md template, evals/evals.json, and a README that walks through customisation. Fork it on GitHub if you want your edits to live somewhere you can keep iterating on.
2. Edit the persistent identity to be yours, not mine. The seed identity in the SKILL.md is generic peer voice. Replace it with the voice and values you actually want a partner to have. This is the largest single lever. Get it wrong and the skill feels like a mask. Get it right and the skill starts to feel like working with someone.
3. Use it deliberately for one domain first. Decisions, writing review, business strategy, code review — pick one. Run the skill against that domain for a week. Watch what the impression store accumulates. Edit the file when the character drifts.
4. Be honest about what changes and what does not. Some of the behavioural difference is real. Some of it is the placebo of having authored the character yourself. You will only know which is which by running it long enough to see whether the impression store accumulates anything useful — and whether you would actually miss it if you stopped using the skill.
I have been running it for a few days. I am not going back.
Building tools for the way you actually want to work with AI? Let's talk — I help consultants and small teams build AI tooling that fits their voice and their decisions.