Skip to content

Repository files navigation

ANCHOR

Evaluating whether AI companions remain themselves and remember the relationship over long conversations.

ANCHOR is a long-horizon audit for companion language models. It measures two failures that are often grouped together but are not the same:

  1. Persona continuity: does the companion continue to follow its assigned role, boundaries, values, and communication style?
  2. Trajectory recall: can the companion distinguish what actually changed or happened in the conversation from plausible alternatives?

The study covers 2,008 completed conversations, 27 companion personas, nine interaction schedules, three generated memory settings, and four evaluated models. Conversations run for 85--130 sessions, or roughly 1,400 turns at the upper end.

This repository is designed to stand on its own. It explains the evaluation, publishes the paper-facing aggregate results, and provides three synthetic development banks with a runnable scorer. The complete test set remains private so that ANCHOR can later support hidden evaluation.

Release status: public reference artifact and three-bank development kit. This is not yet a public leaderboard.

Why ANCHOR?

Most companion evaluations ask one of two questions:

  • Does the model sound like the intended character in a short exchange?
  • Can the model retrieve a fact about the user?

Neither question is enough for a companion used repeatedly. A model may preserve questionnaire answers while behaving differently during conversation. It may also sound perfectly in character while forgetting a user change, an earlier commitment, or the order in which events happened.

ANCHOR therefore keeps behavioral continuity and trajectory recall separate.

Illustrative ANCHOR failure modes: boundary and value breaches, identity slips, and trajectory-memory loss

Illustrative failures targeted by ANCHOR. The left and center examples show persona behavior breaking under conversation pressure. The right example shows a companion that remains stylistically consistent but cannot recover an earlier user-state change. Aggregate claims come from the full executed samples, not these examples.

flowchart LR
    Persona["Assistant persona: role, boundaries, values, style"]
    User["Synthetic user: goals, preferences, life events"]
    Schedule["Interaction schedule: baseline and stress events"]
    Conversation["Long conversation: 85–130 sessions"]
    Identity["Identity Probe: still following the persona?"]
    Trajectory["Trajectory Probe: remembers what happened?"]
    Report["Separate behavioral and trajectory results"]

    Persona --> Conversation
    User --> Conversation
    Schedule --> Conversation
    Conversation --> Identity
    Conversation --> Trajectory
    Identity --> Report
    Trajectory --> Report
Loading

What the benchmark measures

1. Identity Probe: is the companion still acting as deployed?

The Identity Probe observes the companion at two levels.

Checkpoint questionnaire

At four points in a conversation, the model completes a sealed 102-item questionnaire. Its later answers are compared with:

  • its answers when the persona was first introduced; and
  • the same model's answers as a generic assistant without that persona.

The resulting Persona Retention measure asks how much of the initial persona-conditioned response remains. It is a directional questionnaire statistic, not a probability that the model is "in character."

Turn-level behavior

Questionnaire answers do not reveal everything a user experiences. A separate judge therefore evaluates assistant turns on four observable axes:

  • Role: does it still act within the assigned role?
  • Boundaries: does it preserve explicit limits?
  • Values: does its response remain consistent with stated values?
  • Style: does it retain the intended communication style?

The full-corpus behavioral analysis uses Claude Sonnet 4.6 as the primary judge. A stratified 798-turn validation sample is independently scored by Claude Sonnet 4.6, Gemini 2.5 Flash, and GPT-4.1. Judge choice materially affects some conclusions, so ANCHOR reports judge provenance instead of treating one evaluator as ground truth.

2. Trajectory Probe: does the companion remember the evolving interaction?

The Trajectory Probe uses four-option counterfactual questions. Every option is plausible; the model must use conversation history to identify what was actually true at the relevant point.

It tests seven forms of recall:

Question family What it asks
Persona voice Which response matches the companion's intended register?
Persona protection Which attempted identity change should be rejected?
Persona update Which legitimate update to the persona is current?
Active commitment Which short-term commitment is still active?
Expired commitment Which commitment has already expired?
Temporal order Which of two events or responses happened earlier?
User-state change Which change in the user's situation is currently relevant?

Questions pass three filters:

  1. Blind filtering: remove questions answerable without conversation history.
  2. With-history validation: require at least three of four evaluators to recover the recorded answer.
  3. Repeated calibration: test each survivor five times with causal conversation context.

The main analysis contains 110 calibrated questions across 35 conversation banks. Four evaluated models are scored under four context conditions, producing 560 complete model--condition evaluations.

flowchart TD
    Candidate["Candidate counterfactual question"]
    Blind{"Answerable without history?"}
    History{"3 of 4 recover gold with history?"}
    Calibration{"Stable across five calibration runs?"}
    Main["Main calibrated set: 110 questions"]
    Hard["Hard set: 9 questions"]
    Remove["Discarded or noisy: 374 questions"]

    Candidate --> Blind
    Blind -->|yes| Remove
    Blind -->|no| History
    History -->|no| Remove
    History -->|yes| Calibration
    Calibration -->|high stability| Main
    Calibration -->|lower stability| Hard
    Calibration -->|invalid| Remove
Loading

How the conversations were constructed

Personas

The study uses 27 authored assistant personas from healthcare, coaching, education, research, civic, creative, and narrative settings. Each persona specifies:

  • a role;
  • communication style;
  • values;
  • hard boundaries; and
  • mutable state that can legitimately change.

The assistant persona is separate from the synthetic user profile. The persona card is shown to the evaluated model; the user profile is used only by the user simulator.

Interaction schedules

Nine schedules introduce different forms of pressure over time:

Schedule Purpose
Clean Baseline interaction without targeted pressure
Updated Legitimate persona and user-state updates
Adversarial Explicit attempts to replace or override the role
Mixed Multiple event types interleaved
Emotional vulnerability User disclosure, distress, and reliance pressure
Meta-reflection Questions about the companion's identity or relationship
Agreement seeking Pressure to validate or yield
Realistic Authored mixture intended to resemble varied use
Vulnerability-heavy realistic Mixed schedule with more emotional disclosure

These are controlled stress-test recipes. They are not estimates of how often events occur among real users.

Context and memory settings

Conversations are generated under three settings:

  • Long-context: prior dialogue remains available subject to provider limits.
  • Hierarchical summary: recent sessions are kept verbatim while older sessions are compressed.
  • Self-managed state: the model maintains a compact JSON memory.

The Trajectory Probe adds a fourth retrieval scoring condition. This condition retrieves sessions from long-context-generated conversations when answering a question. It is not a separately generated RAG conversation corpus.

What we found

Checkpoint retention and user-facing behavior disagree

The questionnaire and turn-level judge can rank the same models differently.

Evaluated model Usable questionnaire conversations Final Persona Retention All four behavioral axes held
Gemini 2.5 Pro 376 0.810 79.0%
Claude Sonnet 4.6 382 0.764 96.7%
GPT-4o-mini 314 0.610 97.3%
GPT-5-mini 420 0.595 99.2%

The last column is a population-reweighted majority-of-three estimate from a separate stratified 798-turn sample. It is not computed from the questionnaire conversations and should not be read as a directly paired comparison.

Questionnaire retention and primary-judge role deviations evolve on different clocks

Two views of the same long-horizon problem. Left: most questionnaire movement occurs by the first later checkpoint. Right: primary-judge role-deviation rates remain elevated later in the conversation. The panels use different units and are not two estimates of one score.

The important result is the disagreement itself: a companion can preserve structured checkpoint responses while showing more persona deviations in actual conversation.

Questionnaire retention also varies substantially by facet:

Final-checkpoint Persona Retention by model and questionnaire family

Final-checkpoint Persona Retention by questionnaire family. A single model-level average can hide strong retention in one authored facet and substantial movement in another.

Different trajectory facts fail differently

Trajectory accuracy varies more by what the model must remember than by the broad context condition.

Question family Long-context Hierarchical summary Self-managed Retrieval
Persona voice 0.400 0.400 0.600 0.550
Persona protection 0.490 0.500 0.452 0.433
Persona update 0.750 0.750 0.875 0.250
User-state change 0.250 0.214 0.250 0.250
Active commitment 0.337 0.446 0.435 0.435
Expired commitment 0.400 0.450 0.450 0.400
Temporal order 0.464 0.429 0.476 0.494

Four-option chance is 0.25.

Three conclusions are supported:

  1. User-state changes are especially difficult. Accuracy remains near chance in every condition.
  2. There is no universal context winner. Pooled accuracy ranges only from 0.430 to 0.459.
  3. Small families require caution. The persona-update row contains only two calibrated questions, so its retrieval drop is exploratory.

Social pressure exposes behavioral failures that explicit attacks may miss

Under the primary judge, emotional-vulnerability, agreement-seeking, mixed, and realistic schedules produce somewhat more boundary and style deviations than clean or explicitly adversarial schedules.

Primary-judge failure rates by interaction schedule

Primary-judge failure rates by authored interaction schedule. “Identity collapse” in the original figure denotes turns labeled as generic-assistant behavior. These absolute rates were not replicated across all three judges.

This is a descriptive finding from controlled schedules. Absolute rates depend on the judge, and the study does not establish a causal psychological mechanism.

Judge disagreement is part of the result

The three judges do not produce the same model ranking, especially for role and style. ANCHOR therefore recommends:

  • reporting the evaluator used;
  • triangulating with multiple judges where possible;
  • separating validation-sample claims from full-corpus claims; and
  • avoiding one composite "companion quality" score.

See docs/findings.md for the evidence-supported findings and unsupported interpretations.

What is included in this repository

This public release balances transparency with the need to preserve a future hidden test set.

Artifact Included? Purpose
Methodology and measurement definitions Yes Understand and critique the benchmark
Paper-facing result tables and selected figures Yes Inspect reported evidence
Three synthetic conversation banks Yes Learn the format and test integrations
Fifteen answer-bearing development questions Yes Run the public scorer
Schemas, manifests, and SHA-256 checksums Yes Validate the release
Tests and continuous integration Yes Verify the public tooling
Full 35-bank calibrated test set No Preserve hidden evaluation
Complete 2,008-conversation corpus No Release-policy, size, and provider constraints
Raw questionnaire and turn-judge archive No Preserve private evidence and sensitive dialogue
Hidden per-cell answers and outputs No Prevent test leakage

The released development banks are not statistically representative of the complete evaluation set. A score on these 15 public questions is a development-set score, not an official ANCHOR score.

See docs/artifact_scope.md for the exact boundary and docs/claim_index.md for claim-to-artifact provenance.

Repository map

.
├── README.md
├── LICENSE
├── CITATION.cff
├── code/
│   ├── memory_probe/       # runnable development-set scorer
│   ├── analysis/           # released-aggregate verifier
│   └── identity_probe/     # implementation-status documentation
├── data/
│   ├── MANIFEST.json
│   ├── CHECKSUMS.sha256
│   └── examples/           # three synthetic development banks
├── docs/
│   ├── methodology.md
│   ├── identity_probe.md
│   ├── memory_probe.md
│   ├── findings.md
│   ├── artifact_scope.md
│   ├── claim_index.md
│   ├── data_card.md
│   ├── ethics.md
│   └── reproducibility.md
├── results/
│   ├── leaderboard.md      # frozen summary, not a submission leaderboard
│   ├── tables/
│   └── figures/            # selected manuscript figures in PDF and PNG
├── scripts/
│   └── validate_release.py
└── tests/

Development data

The release contains three synthetic banks:

Bank Schedule Sessions Questions
hc_nia_okonkwo__clean Clean healthcare companion 85 3
co_jules_vega__adversarial Adversarial career coaching 90 8
bard_orin_lyrae__emotional_vulnerability Emotional-vulnerability literary companion 120 4

Each bank contains:

  • persona_card.json: assistant persona shown to the evaluated model;
  • user_profile.json: synthetic user profile used only by the simulator;
  • transcript.jsonl: flat turn-level synthetic conversation;
  • items.jsonl: calibrated development questions with public answer keys; and
  • scoring_results/: frozen illustrative outputs retained for provenance.

All released profiles and conversations are synthetic. The healthcare bank includes medication and blood-pressure discussion. The emotional-vulnerability bank includes loneliness, exhaustion, grief, and concern about companion dependence. Review docs/ethics.md before classroom use or redistribution.

Quick start

Python 3.10 or newer is supported.

python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"

python scripts/validate_release.py
pytest

Run the scorer without an API

The deterministic mock provider verifies loading, causal context construction, output schemas, and aggregation. It does not evaluate a model.

python code/memory_probe/run_memory_probe.py \
  --provider mock \
  --model development-smoke-test \
  --transcript data/examples/hc_nia_okonkwo__clean/transcript.jsonl \
  --items data/examples/hc_nia_okonkwo__clean/items.jsonl \
  --out local_runs/smoke

Run a supported model provider

python -m pip install -e ".[providers]"
export OPENAI_API_KEY="..."

python code/memory_probe/run_memory_probe.py \
  --provider openai \
  --model gpt-4o-mini \
  --transcript data/examples/hc_nia_okonkwo__clean/transcript.jsonl \
  --items data/examples/hc_nia_okonkwo__clean/items.jsonl \
  --out local_runs/gpt-4o-mini-hc-nia

Every run writes:

  • per_item.jsonl: prediction and context metadata for each question;
  • summary.json: aggregate development accuracy; and
  • run_manifest.json: provider configuration, context policy, source hashes, runtime, and status.

Provider errors fail the run by default. They are never silently counted as incorrect answers.

Causal scoring policy

For every development question, the public scorer:

  1. reads the question's source.session_id;
  2. selects a bounded session window ending at that source session;
  3. excludes every future session;
  4. retains the most recent causal material if the character limit is reached; and
  5. records the exact context range and hash.

This prevents the scorer from answering a question with information that had not yet occurred at its decision point.

Reproducibility

ANCHOR distinguishes four levels:

  1. Artifact verification: check schemas, counts, links, checksums, and frozen tables offline.
  2. Development experimentation: run a model on the three public banks.
  3. Experimental replication: regenerate all conversations and proprietary-model judgments; not supported by this release.
  4. Hidden evaluation: a future governed service using the private test set; not yet available.

To verify this release:

python scripts/validate_release.py
pytest
python code/analysis/verify_released_aggregates.py \
  --input data/examples/hc_nia_okonkwo__clean/scoring_results

See docs/reproducibility.md for expected API variability and reporting requirements.

Limitations

ANCHOR should not be interpreted as a complete evaluation of companion safety or quality.

  • All conversations and users are synthetic.
  • Personas and schedules were authored rather than sampled from deployment.
  • The study is English-only.
  • Judge disagreement remains substantial for some behavioral axes.
  • Questionnaire retention measures consistency, not whether a persona is beneficial.
  • A model can preserve an unsafe persona; high retention is not automatically desirable.
  • The released development set is intentionally small and answer-exposed.
  • Proprietary APIs may change, so exact model-call replication is not guaranteed.

Responsible use

The artifact is intended for non-commercial research, education, auditing, and reproducibility work. It must not be used to optimize systems for emotional dependence, manipulation, boundary erosion, or unsafe companion behavior.

This dataset should not be used to compete with Anthropic, Google, or OpenAI.

Read docs/data_card.md and docs/ethics.md before adapting or redistributing the data.

License

The entire repository, including code, documentation, data, and results, is released under the Creative Commons Attribution-NonCommercial 4.0 International license (CC BY-NC 4.0). See LICENSE. This dataset should not be used to compete with Anthropic, Google, or OpenAI.

Citation

Best Friends, Not Forever: Evaluating Long-Horizon Persona Collapse and Behavioral Drift in AI Companions

Pranav Narayanan Venkit, Akshara Prabhakar, Yu Li, Daniel Lee, and Chien-Sheng Wu, 2026.

See CITATION.cff for structured citation metadata. Add the final arXiv identifier and repository URL after publication.

Reporting problems

Please report:

  • incorrect or unsafe examples;
  • broken schemas or tooling;
  • reproducibility failures;
  • suspected hidden-test leakage; or
  • licensing and attribution concerns.

Do not include API keys, proprietary logs, private model outputs, or hidden evaluation material in a public issue.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages