A Bot keeps one memory across every chat, but each entry carries visibility: shared by default, or private when written from a DM. Private entries record their author (owner); group turns filter them from both tree injection and search, and they are injectable only in that owner’s DMs. The Bot therefore keeps one identity and one store, while disclosure follows where a fact was confided.
Considered Options
- No filtering (source tags only) — rejected: a DM remark could resurface in a group.
- Separate memory per user or conversation — rejected: breaks “Bot as a Person”; the Bot would stop being one person.
- Forced confirmation for DM-sourced writes — rejected: friction exactly where remembering is most useful.
- Private visible in any DM — rejected: leaks one user’s confidence to another.
Consequences
- Injection and search are context-aware: group turns drop
private; a DM turn filters tosharedplus entries owned by that sender. - The front-matter schema (ADR-0012) carries
visibilityandsources; the memory editor shows both. - Outside its owner’s DM the Bot genuinely does not know a private entry — intentional, but it must be stated in persona/tool descriptions so the model does not promise recall it cannot use.