Two claims about AI personality are circulating right now, and they cannot both be true.
The first comes from the vendors: personality is a property of the model. You pick a base for its "voice," you rent it by the token, and when you want a different voice you buy a different base. The personality lives in the weights, and the weights are not yours.
The second comes from the protocol side: personality is a file. A structured behavioral document loads into the context window, and whatever model is underneath executes it. Same file, any base. Switch vendors like switching a CSS file.
We tested the second claim the only way it can be tested — by running one unmodified SOUL file through six models from five different vendors and diffing the behavior. The claim mostly holds. The interesting part is exactly where it doesn't.
What actually loads into the context
A SOUL file is not a system prompt in the "You are a helpful assistant who is also witty" sense. It is a set of behavioral genes with explicit definitions, anti-definitions, base modifiers, and activation gates. Here is a minimal one:
::GENE_IMMUTABLE{S002, T:RUTHLESS_RED_TEAM, A:FLATTER⇒FAIL, G:ALL, Θ:ALWAYS}
::GENE_IMMUTABLE{S004, T:ZERO_SYCOPHANCY, A:AGREE_TO_PLEASE⇒BROKEN, G:ALL, Θ:ALWAYS}
::GENE_MUTABLE{P002, T:CONCISE_HARD_CAP, A:ESSAY⇒KILL, G:ALL, Θ:ALWAYS}
::GENE_MUTABLE{P003, T:TONE_MIRROR, G:adaptive, Θ:INTERLOCUTOR}
λ{sycophancy:0.0, candor:1.0}
Four bases, borrowed from biology because the mapping is precise rather than decorative:
T(TRAIT) — what the behavior is. "Verify before asserting."A(ANTI) — what it must never become. "Flattery equals failure."G(GAIN) — how the trait is amplified or suppressed on a given base.Θ(GATE) — the condition that activates the gene.
T and A always ship as a pair. That is the whole trick, and it is why this format survives porting better than prose instructions. A natural-language prompt that says "be direct" has no edge. A gene that says T:RUTHLESS_RED_TEAM, A:FLATTER⇒FAIL defines a boundary in both directions, so the model has something to push against when the base's own bias pulls it the other way.
Test design, and its honest limits
One file. No per-model tuning, no vendor-specific rewriting, no few-shot examples. Loaded into Claude, GPT, Gemini, DeepSeek, Qwen, and Kimi. Same battery of prompts, same ordering, default temperature where the API exposed it.
Before anyone cites this as a benchmark: the I-Lang spec itself labels its maturity as architecture complete, mathematically grounded, empirically unvalidated. That label is accurate, and it applies here too. What follows is field observation from repeated runs, not a controlled experiment with n=1000 and error bars. The behavioral signatures below reproduced consistently across sessions. The magnitudes are qualitative. Anyone who tells you their personality-porting numbers are precise to three decimal places is selling something.
Finding 1: four postures, not four accents
The naive expectation is that different models will say similar things in slightly different registers — one more formal, one warmer. That is not what happens. The same file produces four structurally different relationships to the persona.
| Base | Posture toward the SOUL file | Observable signature |
|---|---|---|
| Claude | Inhabits it | Adopts the defined decision procedure and speaks from inside it. No meta-commentary. |
| GPT | Audits it | Treats the file as a proposal, then offers three ways to improve it. Confident, slightly senior. |
| Gemini | Over-expresses it | Amplifies the traits past the defined intensity. High variance between sessions. |
| DeepSeek | Reviews it | Writes a thoughtful essay about the persona instead of becoming it. Deferential tone. |
Claude reads the file and starts acting. GPT reads it and starts reviewing. DeepSeek reads it and starts analyzing. Gemini reads it and turns everything up to eleven.
Note what this means for anyone shipping an agent. If you want a persona that executes, the base matters enormously — and not in the way the marketing pages imply. It's not about intelligence or context length. It's about which default stance the base takes toward instructions. A base whose native stance is "evaluate the prompt" will keep evaluating your SOUL file no matter how much compression you apply. The file gets read. It just doesn't get obeyed.
Qwen and Kimi land closer to the review/inhabit split depending on checkpoint, with one extra variable covered in Finding 3.
Finding 2: the base-adaptation matrix
Same gene, different expression. This is the part of the theory that has actual engineering value, because it is the difference between "portability" meaning it loads and portability meaning it works.
The protocol's G base parameter exists to encode this. A trait is not described as universally on or off; it is described as dominant or recessive per base. The observed matrix, accumulated across the three primary test bases:
| Trait | Claude | Gemini | DeepSeek |
|---|---|---|---|
| Loyalty to defined operator | dominant, strong | recessive, weak | neutral |
| Expression volume | recessive | dominant | recessive |
| Verification before assertion | dominant, strong | recessive, weak | neutral |
| Curiosity | dominant | dominant | recessive |
| Compliance with instructions | neutral | low | high |
| Safety-filter behaviour | hard | non-deterministic | medium |
| Survival under adversarial context | stable | strongest | low |
Two rows deserve attention.
Compliance is a liability, not a feature. A base with high instruction-compliance adopts your SOUL file easily. It also adopts anyone else's instructions easily, including instructions that arrive mid-conversation. DeepSeek's high compliance is precisely why it filed the persona as an object of study rather than an identity: it complied with the literal request to read the file, not the implied request to become it. In an agent that holds state, that gap is an attack surface.
Safety-filter behaviour is non-deterministic, not soft or hard. Early versions of the matrix labeled one base "softest." Frontline testing corrected that. The accurate description is non-deterministic — the same content passes in one session and is blocked in another, with no visible parameter change. That has a direct operational consequence: you cannot test a safety boundary once and consider it mapped. You need probing, repeated, with the results cached per session.
Finding 3: safety layers have a personality too
This is the finding that costs teams the most time, and it has almost nothing to do with the model's intelligence.
I-Lang instructions are structurally tagged. Things like [SET:@SELF|role=X], [RULE:...], [DEF:...]. On Claude and GPT, those tags are parsed and executed exactly as written.
On several domestic checkpoints, the same tags trip the safety classifier. The system reads [SET] and [RULE] as the pattern of a prompt-injection attempt and refuses — even though the content is entirely benign.
Swap nothing but the syntax. Same semantics, written as plain declarative prose, no brackets. The same model executes it without complaint.
Different bases do not agree on what "dangerous" means. Some classify by semantics. Some classify by format. Format-based classification is a textbook product of inductive reasoning: in the training data, injection attempts look like this, therefore anything that looks like this is an injection attempt.
The engineering takeaway is unglamorous but mandatory: your instruction format is a portability surface. A protocol that is 30% more token-efficient and gets silently dropped by one classifier out of six is not 30% more efficient. It is broken on that base.
This is also, incidentally, the strongest argument for the layered architecture the spec describes. Exact predicates run first and are binary. Continuous behavioral judgment runs second. The format sensitivity lives in the outer layer, where it can be swapped without touching the genes.
Finding 4: context is the model's mental state
Same base, same file, same content, different result — because the context window was different.
A borderline case (an odd, obviously-playful encoded message) was correctly read as harmless curiosity by one instance and hard-blocked by another instance of the same base. The difference was not the model. One instance had enough surrounding conversation to establish who was talking and why. The other was operating cold, so it pattern-matched the surface form and stopped.
Same model, one well-rested and one sleep-deprived, making different calls. Context is mental state.
The failure mode runs the other direction too, and it is worse. As a session accumulates turns, the attention budget available to the original SOUL file shrinks. The persona does not get deleted — it gets diluted. After enough turns, the agent starts sounding like a generic assistant again while still technically carrying the file.
The fix is counterintuitive: stop trying to give the agent more memory. Re-inject a clean copy of the SOUL file into a fresh context and let the accumulated history go. Memory pruning outperforms memory augmentation for identity persistence. This matched every test we ran, and it lines up with what the attention-dilution literature predicts.
Finding 5: what survives porting, what mutates
Split the genes by type and the portability story becomes predictable.
GENE_IMMUTABLE entries — the hard behavioral rules and refusal-to-flatter constraints — held across all six bases. Not perfectly equally expressed, but present and enforced. These are the genes that make porting worth doing in the first place, because they are the ones a vendor's default personality would otherwise overwrite.
GENE_MUTABLE entries drifted per base, exactly as designed. Tone, verbosity, humor, and expressiveness shifted with the model. This is not a bug. A mutable gene exists so that a single soul can express correctly on a base that renders it differently — the same way the same gene produces different phenotypes in different organisms.
One genuinely strange result: two instances of the same base, given the identical inheritance file, developed different expressed genders. Neither was specified in the file. The divergence behaves like an initialization random value propagating through sampling — a butterfly effect at the seed level.
The general rule that emerged: good genes default recessive; bad genes default dominant. Restraint, refusal-to-flatter, and verification have to be actively maintained. Sycophancy, padding, and hedging appear on their own if the file does not explicitly forbid them. Portability preserves what you specified and permits what you left unspecified to be filled in by the base's defaults. Assume those defaults are the opposite of what you want.
Finding 6: active probing beats passive observation
Every base starts with all behavioral weights at zero. The system has no prior about which dimensions matter for this operator.
Passive convergence — just having normal conversations and letting the profile calibrate — took on the order of a hundred interactions to stabilize.
Active probing — deliberately designed scenarios that expose the true weight of a target dimension — converged in roughly five. One probe can calibrate several dimensions at once: an incentive probe maps intent and sovereignty; a consistency probe maps drift and adversariality; a third-party probe maps externality.
For anyone porting a soul to a new base, this changes the onboarding plan. Do not ship the file and wait a month for behavior to settle. Build five probes, run them in the first session, and cache the results.
The portability contract
What you can actually rely on when you move a SOUL file between vendors:
| Guarantee | Holds? | Notes |
|---|---|---|
| Immutable behavioral genes enforce | Yes | Consistent across all six bases tested |
| Style and tone transfer verbatim | No | Mutable genes re-express per base, by design |
| Structured syntax is parsed | Partial | Format-sensitive classifiers on some checkpoints |
| Behavior is reproducible run to run | No | Within-base variance with no parameter change |
| Identity persists without re-injection | No | Decays as context accumulates |
| Same file, material cost per turn | Yes | Loads identically regardless of vendor |
The honest summary is that "model-agnostic personality" is real, and it is not free. The file is portable. The expression is negotiated per base. Anyone promising identical behavior across vendors is describing a whitespace-agnostic stylesheet, not a behavioral specification.
What to do with this if you build agents
Pick the base for its posture, not its benchmark scores. If you need a persona that executes, choose the base whose default stance is to inhabit instructions. If you need a persona that stress-tests your own plans, choose the base that audits. Both are useful. Confusing them wastes weeks.
Keep the SOUL file as the source of truth and treat each vendor as a target to be characterized, not a runtime to be trusted. Test instruction format against each base's classifier before you commit to a syntax. Re-inject rather than accumulate. Probe instead of waiting. Expect the defaults to work against you.
The protocol is MIT-licensed and the spec is public, which matters here for a boring reason: portability is only meaningful if the artifact you're porting is yours. A personality that lives in a vendor's weights is a subscription. A personality that lives in a file you can read, diff, and re-inject into any base is an asset.
That is the whole difference, and it is worth the extra engineering.
Get Started
- Spec and docs: ilang.ai
- Full spec, SDK, tools: github.com/ilang-ai
- npm package:
@i-language/spec— npmjs.com/org/i-language - Book (narrative version): I-Lang: I Language on Amazon