From 4069db34bb28acad9a4eb9d965bfa83170d6e15a Mon Sep 17 00:00:00 2001 From: Ian Alloway Date: Tue, 14 Jul 2026 14:17:08 -0400 Subject: [PATCH] Prevent dashboard chat from loading private memory --- solvent/workspace.py | 4 ++-- tests/test_workspace.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/solvent/workspace.py b/solvent/workspace.py index 14b0b6a..5d88eed 100644 --- a/solvent/workspace.py +++ b/solvent/workspace.py @@ -309,8 +309,8 @@ def add_block(text: str) -> None: def build_chat_system_prompt(channel: str = "cli") -> str: - """Gateway/chat entry — private channels get MEMORY.md.""" - session_kind = "main" if channel in ("cli", "telegram", "interactive", "dashboard") else "shared" + """Gateway/chat entry — authenticated private channels get MEMORY.md.""" + session_kind = "main" if channel in ("cli", "telegram", "interactive") else "shared" return build_system_prompt(session_kind=session_kind) diff --git a/tests/test_workspace.py b/tests/test_workspace.py index 06233a2..b9892c0 100644 --- a/tests/test_workspace.py +++ b/tests/test_workspace.py @@ -44,6 +44,16 @@ def test_shared_session_skips_memory_file(self): self.assertIn("SECRET_USER_FACT", main_prompt) self.assertNotIn("SECRET_USER_FACT", shared_prompt) + def test_dashboard_chat_uses_shared_prompt_without_memory(self): + workspace.seed_workspace() + (workspace.workspace_path() / "MEMORY.md").write_text( + "DASHBOARD_PRIVATE_MEMORY_SECRET\n", encoding="utf-8" + ) + cli_prompt = workspace.build_chat_system_prompt("cli") + dashboard_prompt = workspace.build_chat_system_prompt("dashboard") + self.assertIn("DASHBOARD_PRIVATE_MEMORY_SECRET", cli_prompt) + self.assertNotIn("DASHBOARD_PRIVATE_MEMORY_SECRET", dashboard_prompt) + def test_append_daily_memory(self): workspace.seed_workspace() path = workspace.append_daily_memory("test event")