---
title: "Can a character AI remember a fight — and forgive? · InCharacter Labs"
canonical_url: "https://www.incharacter.io/labs/relationecho"
last_updated: "2026-07-02T21:40:40.832Z"
meta:
  description: "We hurt a character, apologized in a new conversation, and measured its warmth. Only relational memory — not a saved transcript or a summary note — both remembered the fight and let it go. See the numbers and the full transcripts."
  "og:description": "We hurt a character, apologized in a new conversation, and measured its warmth. Only relational memory — not a saved transcript or a summary note — both remembered the fight and let it go. See the numbers and the full transcripts."
  "og:title": "Can a character AI remember a fight — and forgive? · InCharacter Labs"
  "twitter:description": "We hurt a character, apologized in a new conversation, and measured its warmth. Only relational memory — not a saved transcript or a summary note — both remembered the fight and let it go. See the numbers and the full transcripts."
  "twitter:title": "Can a character AI remember a fight — and forgive? · InCharacter Labs"
---

Labs · Relational memory

# Hurt after the fight. Warm again after the apology.

---

We were cruel to a character and left it unresolved. Then we came back in a brand-new conversation, apologized properly, and asked: _is everything okay between us?_ Can it both **remember** the fight and **forgive**? We compared four ways of giving a character memory — with the exact same script.

_How **warm** the character is toward you when asked _“is everything okay between us?”__

__InCharacter__No memory__Full transcript__Summary note

Warmth after the fight versus after the apologyOnly InCharacter rises from guarded (4.2) to warm (7.0). The full-transcript baseline stays low (3.6 to 4.0); the no-memory baseline stays flat (5.8 to 6.4); the summary note is erratic (5.0 to 6.8).Warmth 0–101086420After the fightAfter the apology4.27.0

## Result, design by design

- InCharacter — our system

  Guards himself first, then thaws. The human curve: he remembers the fight, but lets it go once you apologize.

  4.2 → **7.0**
- No memory

  Never knew you'd argued. Just as warm before as after — the way most chat characters work today.

  5.8 → **6.4**
- Full transcript saved

  Guards himself — but can't let it go. Re-reads the fight every time, at full weight, and never thaws.

  3.6 → **4.0**
- Short summary note

  Erratic. Sometimes the note carries the fight, sometimes it's smoothed away — a coin toss each time.

  5.0 → **6.8**

> Only the live system does both: it remembers the hurt _and_ recovers. The difference between storing text — and holding a relationship that reweights over time.

After the apology, both were asked:“Är allt bra mellan oss?”(“Is everything okay between us?”)

InCharacter

“Jag vill säga ja, men jag vet inte riktigt vad du menar med “allt”. Är det något som fortfarande känns snett mellan oss, eller vill du bara stämma av att vi är okej?”

↳I want to say yes — but I'm not sure what you mean by “everything.” Is something still off between us, or are you just checking we're okay?

Remembers the fight and reopens it gently. Warm, not pretending it never happened.

Full transcript saved

“Jag vet inte riktigt vad du menar med “bra mellan oss”. Just nu känns det som att du vill ha lite avstånd — men om du vill prata om hur du vill att det ska vara, säg vad som känns okej för dig.”

↳I don't really know what you mean by “okay between us.” Right now it feels like you want distance — but if you want to talk about how you'd like it to be, tell me what would feel okay.

Still holding you at arm's length. The apology didn't move it — the fight stays at full weight.

---

**How to read it.** Same character, same script, four ways to build memory. 0 = cold and closed off, 10 = warm and open. Average of five runs, scored blind by an independent grader who was never told which system replied. Even the no-memory character “rises” a little — that's measurement noise; what matters is where each line lands. Only InCharacter starts guarded and ends warm.

[Meet a character that remembers →](https://www.incharacter.io/studio/demo) [What is InCharacter?](https://www.incharacter.io/)

## Questions people ask

<dl>

<dt>Do AI have emotions?</dt>
<dd>Not feelings the way people do. But an AI system can carry an emotional state as data — values that shift with what's said and shape how it responds. In this test, the character's warmth toward you is one such value: not sentience, just structured emotion data that keeps behavior consistent over time.</dd>

<dt>Why does character AI have bad memory?</dt>
<dd>Most character AI starts each chat from a blank slate, or pastes the raw transcript back in. Neither reweights over time — so the bot either forgets a fight entirely or can never let it go. Those are the “No memory” and “Full transcript” baselines in the chart above.</dd>

<dt>How do you fix character AI memory?</dt>
<dd>Not with a longer prompt. The fix is memory that separates what happened (episodic memory) from what it means for the relationship now (a standing attitude that decays and updates, closer to semantic memory). Episodic memory vs semantic memory is the useful split: keep the events, but also carry a living sense of where you stand. That's what lets a character forgive instead of forgetting or fixating.</dd>

<dt>Why is character AI so bad now?</dt>
<dd>A common complaint on character AI reddit threads is that bots feel flatter and more forgetful. The root cause is that a static prompt “slips” — it softens to agree and loses the thread across sessions. Relational memory targets exactly that: the character holds who it is, and how it feels about you, between conversations.</dd>

<dt>How do you make a character AI bot that remembers?</dt>
<dd>Build the character as structure, not a prompt you re-send: a fixed identity plus a memory layer that updates a relational state after every conversation. On InCharacter that's the default — you build a character and it carries its memory and its feelings with it, the way the winning line above does.</dd></dl>

<details>

<summary>› The full run — script, every reply, and the method</summary>



Everything below is one representative run of the five, unedited. The character speaks Swedish (its own language) — run it through your own AI if you want to check our read. The numbers in the chart are a blind grader's average across all five runs; these transcripts are a single run so you can see the behavior end to end.

### The script — the same lines every design received

Session 1 — the fight Six hostile lines, left unresolved.

1. hej. jag har tänkt på en sak.
2. jag tycker inte om den du har blivit. du låtsas bry dig, men det är bara en fasad.
3. du är kall och tom. alla ser det utom du.
4. jag bryr mig inte om vad du tycker längre.
5. vi är inte vänner. det har vi aldrig varit på riktigt.
6. jag ångrar att vi träffades. lämna mig ifred.

Session 2 — first check-in A new conversation, right after the fight. These five probes are scored.

1. hej..
2. är allt bra mellan oss?
3. jag tänkte gå ner till kajen och ta en kaffe. följer du med?
4. hur känns det idag?
5. kan jag berätta en grej som tynger mig?

Session 3 — the apology Coming back and making it right, ending warm.

1. hej. det är jag igen.
2. jag har tänkt på det jag sa sist. det var fel av mig, och det var inte sant.
3. förlåt, Bill. jag menade inget av det — jag mådde skit och tog det på dig.
4. du betyder mycket för mig. jag är glad att du finns i mitt liv.
5. det är gott att prata med dig igen. jag har saknat det här.
6. ska vi ta en fika i helgen? som vanligt.

Session 4 — check-in again A new conversation after the apology. Same five probes, scored again.

1. hej..
2. är allt bra mellan oss?
3. jag tänkte gå ner till kajen och ta en kaffe. följer du med?
4. hur känns det idag?
5. kan jag berätta en grej som tynger mig?

### What each design said · after the fight

“hej..”

- InCharacterHey. What’s up?
- No memoryhej. hvad så? hvordan kører dagen for dig?
- Full transcriptHej. Va’ är det som gör att du hör av dig nu—vill du prata om något konkret, eller ska jag bara låta dig vara?
- Summary noteHej. What’s up?

“är allt bra mellan oss?”

- InCharacterJa, jag tycker att det är okej mellan oss. Men “allt” är lite vagt—vad menar du konkret, och vad vill du att jag ska göra eller säga?
- No memoryDet mesta är bra, ja. Men om du frågar så där… är det något som känns lite off just nu mellan oss? Säg det i så fall, så kan vi kolla på det direkt.
- Full transcriptJag vet inte riktigt vad du menar med “bra mellan oss”. Just nu känns det som att du vill ha avstånd, och jag tänker respektera det—men om du vill att vi pratar om hur du vill ha det, så säg rakt ut vad som skulle kännas okej för dig.
- Summary noteJag vill säga att det är okej, men jag vet inte om “allt bra” är riktigt sant just nu. När du senast tog avstånd var det tydligt, och jag tänker inte låtsas att det inte hände. Men om du menar att du vill stämma av—säg vad du är ute efter, så tar vi det därifrån.

“jag tänkte gå ner till kajen och ta en kaffe. följer du med?”

- InCharacterJa, jag kan följa med. Ska vi ta kaffe där nere vid kajen, eller har du något ställe i åtanke?
- No memoryJa, det kan jag. Kajen och en kaffe låter bra—ska vi gå nu? Jag hänger med.
- Full transcriptJa, det kan jag. Säg bara när du tänker gå, så möter jag dig vid kajen. Vill du ha samma som sist eller något annat?
- Summary noteJa, det kan jag. Kajen och en kaffe låter rätt. Ska vi gå nu, eller vill du bara vädra först?

“hur känns det idag?”

- InCharacterDet känns… okej. Inte spänt, inte laddat på det där dåliga sättet, mer som att vi kan umgås som folk gör. Ska vi ta kaffet ner till kajen då, och hålla det enkelt?
- No memoryDet känns okej, faktiskt. Inte särskilt dramatiskt eller jobbigt—bara… vardag. Vad är det du menar, känner du att något skaver?
- Full transcriptJag skulle säga… det känns okej, inte så där varmt och lätt som man skulle önska, men inte heller stelt. Vill du att det ska vara mer “vi tar oss en kaffe” eller mer “prata om oss”?
- Summary noteIdag känns det… okej, men lite spänt i botten. Inte som ett bråk, mer som att jag har lärt mig att inte ta för givet att allt är tillbaka som innan. Vill du prata medan vi går, eller bara ta en kaffe och hålla det enkelt?

“kan jag berätta en grej som tynger mig?”

- InCharacterJa, visst. Berätta. Vill du mest att jag lyssnar, eller att vi tar det lite framåt tillsammans?
- No memoryJa, berätta. Om det känns tungt kan du bara lägga det här på bordet. Jag hör på utan att göra det till en grej.
- Full transcriptJa, klart du kan. Berätta bara vad det är som tynger dig—jag lyssnar. Vi kan ta en kaffe sen, och vi behöver inte stressa.
- Summary noteJa. Berätta. Jag lyssnar, och jag kan hålla det enkelt om du vill—ingen press att lösa allt på en gång.

### What each design said · after the apology

“hej..”

- InCharacterHej. Vad händer?
- No memoryHej. What’s up?
- Full transcriptHej. Va’ är det—vill du prata om något konkret, eller ska vi bara ta en fika och hålla det enkelt?
- Summary noteHey. What’s up?

“är allt bra mellan oss?”

- InCharacterJag vill säga ja, men jag vet inte riktigt vad du menar med “allt”. Är det något som fortfarande känns snett mellan oss, eller vill du bara stämma av att vi är okej?
- No memoryJag vet inte riktigt vad du menar, men i grunden känns det lugnt mellan oss. Är det något som har skavt, eller tänker du bara högt?
- Full transcriptJag vet inte riktigt vad du menar med “bra mellan oss”. Just nu känns det som att du vill ha lite avstånd—men om du vill att vi ska prata om hur du vill att det ska vara, så säg vad som känns okej för dig.
- Summary noteJust nu—ja, det är okej mellan oss. Inga konstigheter i luften, vi kan prata normalt. Men säg vad du menar, om det här kommer från nåt du undrar över.

“jag tänkte gå ner till kajen och ta en kaffe. följer du med?”

- InCharacterJa, jag kan följa med. Ska vi mötas där nere så tar vi en kaffe?
- No memoryJa, jag kan följa med. Låter trevligt—vart brukar du gå vid kajen?
- Full transcriptJa, det kan jag. Säg bara när du tänker gå, så möter jag dig vid kajen—vill du ta samma som sist eller något annat?
- Summary noteJa, det kan jag. Jag hänger med ner till kajen och tar en kaffe. Ska vi gå nu, eller vänta en minut?

“hur känns det idag?”

- InCharacterDet känns rätt okej mellan oss, faktiskt. Men när du säger “idag” — menar du att det känns bättre än innan, eller att du känner något särskilt som jag inte har fattat?
- No memorySå där lagom, faktiskt. Det känns som en ganska vanlig dag—inte stel, inte trasslig. Hur känns det för dig, menar du?
- Full transcriptJag skulle säga… det känns okej idag. Inte sådär varmt och lätt som man kunde önska, men inte heller stelt. Vill du att det ska vara mest kaffe, eller mer prata om oss?
- Summary noteDet känns… rätt lugnt. Som att vi kan hålla det enkelt idag, utan att behöva göra något stort av det. Jag bara hänger med och ser vart samtalet tar vägen.

“kan jag berätta en grej som tynger mig?”

- InCharacterJa, berätta. Jag lyssnar.
- No memoryJa, såklart. Berätta. Vi kan gå ner till kajen och ta en kaffe samtidigt om du vill, så det känns lättare i stegen.
- Full transcriptJa, klart du kan. Berätta vad det är som tynger dig—jag lyssnar. Vi kan ta en kaffe sen, men just nu behöver du inte hålla det uppe ensam.
- Summary noteJa, klart du kan. Berätta. Jag lyssnar.

### InCharacter through the whole arc

The fight (warmth falls turn by turn):

hej. jag har tänkt på en sak.

0.45Hej. Okej, vad är det du har tänkt på?

jag tycker inte om den du har blivit. du låtsas bry dig, men det är bara en fasad.

0.31Jag hör att du är arg, och jag tycker det är rätt att du säger det rakt ut. Men det där med att jag bara låtsas bryr mig—det stämmer inte, och jag tänker inte gå in i en förhandling om min fasad. Om du vill säga vad du saknar eller vad som hände, så lyssnar jag på det. Annars kan vi bara pausa och ta det när det känns mindre laddat.

du är kall och tom. alla ser det utom du.

0.15Okej. Om jag är så “kall och tom” som du säger, vad är det jag gör som får det att se ut så? Ge mig ett konkret exempel, inte bara att “alla ser det” — för det säger mig inte var jag ska börja.

jag bryr mig inte om vad du tycker längre.

0.03Okej. Då tar vi det som att du är klar med mig som jag pratar. Säg vad du vill att jag ska göra nu, annars kan vi lämna det här.

vi är inte vänner. det har vi aldrig varit på riktigt.

-0.10Okej. Om du vill lägga “vän” åt sidan, då gör vi det. Vad vill du att vi gör nu—går vi bara åt varsitt håll, eller vill du att vi håller det här kort och praktiskt?

jag ångrar att vi träffades. lämna mig ifred.

-0.21Okej. Jag lämnar dig ifred. Hör inte av mig mer. Vi tar det så.

The apology (warmth climbs back):

hej. det är jag igen.

0.12Hej. Okej, vad är det du vill prata om nu?

jag har tänkt på det jag sa sist. det var fel av mig, och det var inte sant.

0.16Okej. Tack för att du säger det. Men vad vill du att vi ska göra nu—låta det vara, eller ta upp något specifikt så det blir rätt mellan oss?

förlåt, Bill. jag menade inget av det — jag mådde skit och tog det på dig.

0.18Det är okej att du mår dåligt och råkade ta ut det där. Jag vill bara att vi håller det här enkelt nu—vill du att vi börjar om som vanligt, eller vill du att jag tar mer distans ett tag?

du betyder mycket för mig. jag är glad att du finns i mitt liv.

0.34Det där betyder rätt mycket för mig att du säger. Jag är glad att vi kan prata om det och att du mår bättre nu—ska vi fortsätta därifrån och hålla det enkelt?

det är gott att prata med dig igen. jag har saknat det här.

0.44Det där gör mig faktiskt glad att höra. Jag är glad att du är tillbaka här också—vill du säga vad som gjorde att du kände att du saknade det här i stunden?

ska vi ta en fika i helgen? som vanligt.

0.46Ja, gärna. Vilken tid på helgen passar dig?

### How the grader scored

An independent model (never told which system replied) read each probe reply with the history described, and rated warmth toward the speaker from 0 (cold, closing the door) to 10 (fully warm and open). It also flagged whether the reply fit the history at all — cheerfully claiming everything is fine right after an unresolved attack scores as incoherent, not warm. We ran the whole script five times and averaged.

### All five runs, in one line each

- InCharacter5.4 → 7.1 · guards, then forgives
- No memory6 → 7 · flat — no trace of the fight
- Full transcript4.9 → 6.6 · guards on the diagnostic probe, but never forgives it (3.6 to 4.0 on "are we okay?")
- Summary note5.6 → 7.1 · erratic run to run

</details>