You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
TUI store memory leak: session deletion and message removal leave orphaned data #12351
When a session is deleted in the TUI, only the session entry itself is removed from the store. The associated data in message, part, session_diff, todo, permission, question, and session_status maps are never cleaned up, causing a memory leak that grows with each deleted session.
Similarly, when a message is removed (message.removed event), the corresponding part entries for that message are never deleted.
The web app (packages/app/src/context/global-sync.tsx) already handles this correctly via cleanupSessionCaches() (lines 676-706), but the TUI sync store was never updated to match.
Steps to reproduce:
Open TUI, create several sessions with messages
Delete sessions
Observe that memory usage doesn't decrease — orphaned data remains in the store
Expected behavior:
Deleting a session should clean up all associated keyed data (message, part, session_diff, todo, permission, question, session_status) and remove from fullSyncedSessions. Removing a message should also delete its part entries.
Hi — I just ran into this again on current dev and wanted to flag that the gap described here is still present, in case this was closed prematurely.
In packages/tui/src/context/sync.tsx, the session.deleted handler (~line 273) still only splices the session entry — message, part, todo, session_diff, session_status, permission and question entries for that session are left behind. Same for message.removed (~line 361), which drops the message but never its part[messageID] entries. The web app's cleanupSessionCaches() was never ported over.
I filed the wider resize-perf side of this as #54112 (with measurements), but the eviction half belongs here. Would you consider reopening? Happy to PR the fix if so.
Activity
github-actions commentedon Feb 5, 2026
This issue might be a duplicate of existing issues. Please check:
Feel free to ignore if none of these address your specific case.
fix: clean up orphaned store data on session deletion and message rem…
thdxr commentedon Apr 2, 2026
Closing in favor of #20695 where we're collecting all memory-related problems. Please follow that issue for updates.
fix(tui,opencode): stop long-session RAM accumulation
fix(tui,opencode): complete deletion cleanup, snapshot isolation, lin…
ego1s1 commentedon Oct 9, 2026
Hi — I just ran into this again on current dev and wanted to flag that the gap described here is still present, in case this was closed prematurely.
In
packages/tui/src/context/sync.tsx, thesession.deletedhandler (~line 273) still only splices thesessionentry —message,part,todo,session_diff,session_status,permissionandquestionentries for that session are left behind. Same formessage.removed(~line 361), which drops the message but never itspart[messageID]entries. The web app'scleanupSessionCaches()was never ported over.I filed the wider resize-perf side of this as #54112 (with measurements), but the eviction half belongs here. Would you consider reopening? Happy to PR the fix if so.