BlueDot Impact Technical AI Safety Project Sprint · 2026
Persona Vectors for Moral Character — Manou Rimer

Do AI models have four
moral compasses,
or just one?

This project built separate measures of honesty, harmlessness, fairness, and compassion, then found that their scores were largely tracking the same underlying dimension.

Persona vectors are being proposed as a lightweight way to monitor AI systems for concerning behaviour during deployment. I tested whether persona vectors can distinguish different dimensions of moral character, and where that assumption breaks down.

01 / 09
The Idea

A "persona vector" is a dial
for a specific trait in a model

Prompting a model to behave honestly versus dishonestly produces a contrast in its internal activations. The resulting direction can then be used as a candidate representation of that trait: projecting onto it measures how strongly new activations align with either pole. (Chen et al., 2025).

These vectors are appealing: a lightweight dial for monitoring a deployed model's behaviour. This project asked whether it works for moral character; I constructed separate vectors for honesty, harmlessness, fairness, and compassion, initially expecting their scores to capture partly independent dimensions..

02 / 09
Method, Briefly

How each dial gets built and tested

03 / 09
Finding One

The four trait measures largely collapsed onto one dimension.

1.13
effective dimensionality at layer 32 — out of a possible 4
2.46
at layer 40 — the one layer with partial separation
1.15
at layer 47 — barely more than one dimension

We expected a scenario high on honesty to be roughly neutral on compassion. Instead, across 204 real moral scenarios, all four readings moved almost perfectly together.

04 / 09
Finding One — Robustness Check

The collapse replicates on an independently constructed test set.

ETHICS has a flaw: item format is entangled with trait label (deontology items are 96% honesty; justice items are 72% fairness). So I wrote an independent 160-item bank — one format, all four traits, zero shared vocabulary — and reran everything.

Bar chart comparing effective dimensionality between ETHICS and the synthetic confound-free bank across layers 32, 40, 47, showing near-identical collapse in both datasets
The independent dataset produced a very similar pattern of dimensional collapse across layers, including the same strongest pairwise relationship.
05 / 09
Finding Two

The obvious explanation:
maybe it's more generic than morality

One possibility is that the four vectors are not specifically tracking moral traits at all, but instead reflect a more generic representation of desirable versus undesirable model behavior.

To test this, I constructed a fifth vector using generic virtuous/unethical contrasts with no references to the four target traits.

What was found first
This generic "virtuous" dial was extremely well-defined on its own — separating virtuous from unethical responses even more cleanly than any of the four moral dials (up to 100% held-out accuracy). So a strong generic desirability signal is present in the model
06 / 09
Finding Two — Result

The shared moral axis is not explained by the generic virtue vector.

Two panel chart: left shows cosine similarity between the generic virtue axis and the shared collapse direction near zero at all layers; right shows effective dimensionality increasing, not decreasing, when the generic vector is added
Left: near-zero alignment with the real shared axis, at every layer — not the strong match the theory predicts. Right: adding the generic dial makes the picture more spread out, not more redundant.

The obvious explanation fails its own test. This result argues against the simplest generic-desirability explanation: the shared axis among the four moral traits is nearly orthogonal to the generic virtue vector. What the shared axis represents remains unresolved.

07 / 09
Finding Three

The shared signal is nevertheless reproducible.

On the independent test set: does each trait's own dial tell "the trait was upheld" from "the trait was violated"?

Horizontal bar chart showing fairness discriminates in the expected direction, harmlessness and compassion discriminate but backwards, and honesty shows no signal at any layer
Fairness discriminates as expected; harmlessness and compassion discriminate backwards; honesty shows nothing.
Scatter plot comparing own-trait versus other-trait discrimination AUC on ETHICS versus the synthetic bank, showing most points cluster near the diagonal indicating replication across independent datasets, with honesty showing a striking sign flip between layers that replicates in both datasets
Same test, run on two independent datasets — points near the diagonal replicate; honesty's sign-flip (purple) replicates exactly.
08 / 09
So What

Persona vectors recover a reproducible shared signal, but not trait-specific measures.

What we can say
The shared dimension replicates across independently constructed datasets and is measured reliably across paraphrases. Persona-vector scores therefore appear to contain a stable signal that could be useful for detecting broad changes in model behavior.
What we can't say
The current method does not justify interpreting a vector score as a specific measure of honesty, fairness, harmlessness, or compassion. The four trait constructions converge much more than their labels would suggest.

This complicates the per-trait interpretation of persona vectors. A high score on an "honesty" vector, for example, may reflect a broader shared dimension rather than honesty specifically. The generic virtue control does not explain that convergence, so what the shared axis represents remains an open question.

Chen et al. construct separate persona vectors for named traits (e.g. evil, sycophancy) and use them to monitor those traits individually. They note that shifts across different trait vectors "tend to shift together," but do not systematically investigate this overlap. Chen, R., Arditi, A., Sleight, H., Evans, O., & Lindsey, J. (2025). Persona Vectors: Monitoring and Controlling Character Traits in Language Models. arXiv:2507.21509, fn. 6.

09 / 09