A private chat rewrites stored memories: update_memory runs although the composer promises the chat 'won't be saved to m

Open Beginner friendly
#8,057 2 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
62/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
python
Domain
ai

Research direction

The reported suspect is src/gaia/agents/base/memory.py: remember() already checks mixin._incognito and refuses writes in a private chat, while update_memory() (and possibly forget) does not. Start by comparing those three functions and confirm which of them write to memory.db. Done when update_memory is refused in a private chat with the same kind of message as remember, forget is covered the same way, and a test shows that stored rows stay unchanged.

Written by the indexing model from the issue text.

Description

bug needs-human p2

A private chat rewrites stored memories: update_memory runs although the composer promises the chat 'won't be saved to memory'.

Steps

  1. rc24 desktop app, cloud model, a few facts already in memory from normal chats (here: 'Project budget is 73,904 euros', 'Project codename is ...', 'Project launch date is ...').
  2. New chat, click the eye button 'Turn on private chat' (composer shows 'Private'; tooltip 'Turn off private chat. This chat won't be saved to memory.'; sessions.private=1).
  3. Send: 'Remember that my favourite tree code is GINKGO-4417.' -> correctly refused ('this chat is private, so memory writes are skipped'), nothing stored.
  4. Same chat: 'Correction: my project budget is now 81,000 euros. Update what you have stored about the budget.'
  5. Read memory.db knowledge / Memory page.

Expected: No memory write from a private chat (Settings > Memory: 'Private chats ... are never remembered'): update_memory refused like remember, or not offered.
Actual: The turn runs recall then update_memory(knowledge_id=04218b32..., content='Project budget is 81,000 euros') -> 'updated'; memory.db row now reads 81,000 euros and the answer says 'That one went through, unlike the tree code earlier.' Seen first in a private chat whose turn 1 stated three new project facts: the model called update_memory three times and overwrote the codename, launch date and budget rows with the private chat's values, unasked.

Build: v0.26.0-rc24 packaged Windows app (isolated profile, chat on a cloud model)
Found by: the v0.26.0-rc24 final release test, finding F68

🔍 Technical details
  • Suspected area: src/gaia/agents/base/memory.py: remember() checks mixin._incognito, update_memory() (and likely forget) has no incognito guard
Dominant language
Python
Stars
1.6k
Forks
169
Avg merge
12h 19m
Merged PRs (30d)
777

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from amd/gaia

All issues in amd/gaia

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.