From 2cbc991bfe7cdc8a722fc98d419826c982b06231 Mon Sep 17 00:00:00 2001 From: Lucas Czekaj Date: Mon, 26 Jan 2026 11:30:43 -0800 Subject: [PATCH] feat(agents): add MEMORY.md to bootstrap files (#2318) MEMORY.md is now loaded into context at session start, ensuring the agent has access to curated long-term memory without requiring embedding-based semantic search. Previously, MEMORY.md was only accessible via the memory_search tool, which requires an embedding provider (OpenAI/Gemini API key or local model). When no embedding provider was configured, the agent would claim memories were empty even though MEMORY.md existed and contained data. This change: - Adds DEFAULT_MEMORY_FILENAME constant - Includes MEMORY.md in WorkspaceBootstrapFileName type - Loads MEMORY.md in loadWorkspaceBootstrapFiles() - Does NOT add MEMORY.md to subagent allowlist (keeps user data private) - Does NOT auto-create MEMORY.md template (user creates as needed) Co-authored-by: Claude Opus 4.5 --- src/agents/workspace.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/agents/workspace.ts b/src/agents/workspace.ts index 6732069a9..8e5fb8035 100644 --- a/src/agents/workspace.ts +++ b/src/agents/workspace.ts @@ -26,6 +26,7 @@ export const DEFAULT_IDENTITY_FILENAME = "IDENTITY.md"; export const DEFAULT_USER_FILENAME = "USER.md"; export const DEFAULT_HEARTBEAT_FILENAME = "HEARTBEAT.md"; export const DEFAULT_BOOTSTRAP_FILENAME = "BOOTSTRAP.md"; +export const DEFAULT_MEMORY_FILENAME = "MEMORY.md"; const TEMPLATE_DIR = path.resolve( path.dirname(fileURLToPath(import.meta.url)), @@ -61,7 +62,8 @@ export type WorkspaceBootstrapFileName = | typeof DEFAULT_IDENTITY_FILENAME | typeof DEFAULT_USER_FILENAME | typeof DEFAULT_HEARTBEAT_FILENAME - | typeof DEFAULT_BOOTSTRAP_FILENAME; + | typeof DEFAULT_BOOTSTRAP_FILENAME + | typeof DEFAULT_MEMORY_FILENAME; export type WorkspaceBootstrapFile = { name: WorkspaceBootstrapFileName; @@ -219,6 +221,10 @@ export async function loadWorkspaceBootstrapFiles(dir: string): Promise