The short answer
Windsurf forgets Cascade context because Cascade runs inside a finite per-session context window that auto-summarizes earlier turns as it fills, and its native Memories are short workspace-scoped notes — not a full project memory store. Long sessions lose detail, new sessions start blank. The fix is a persistent project memory layer that Cascade reads on every turn.
Why Windsurf forgets Cascade context
Cascade is a powerful agent inside a finite container. Three design choices explain the forgetting:
1. The context window is per-session and finite. Cascade runs on Claude Sonnet, GPT-4.1, and other frontier models with windows up to 1M tokens. The window is generous, but it is not infinite, and it resets every new session. Long agentic runs that read many files and run many tools fill it faster than you would expect.
2. Cascade auto-summarizes as the window fills. When Cascade approaches its cap, it compresses earlier turns into a short summary so the conversation can keep going. Codeium has openly improved this summarization to "better handle longer conversations" — the prior versions were aggressive enough to drop important context, per their changelog. Even now, summarization is lossy. Your reasoning from turn 5 becomes a single line by turn 50.
3. Memories are short notes, not a document store. Windsurf's Cascade Memories feature lets the agent jot down workspace-scoped notes ("user prefers Tailwind", "this project uses Bun"). The store lives at ~/.codeium/windsurf/memories/ and is designed for short observations, not for full specs, transcripts, or decision logs.
The net effect: Cascade is brilliant inside a session and amnesiac across sessions.
What you lose when Windsurf forgets Cascade context
Every Cascade reset costs you ramp-up time, and the loss compounds across a project:
- Mid-session details get paraphrased away. The constraint you stated at turn 5 — "the legacy
users_v1table must keep its existing schema" — gets summarized into "respect legacy users table" by turn 40, and Cascade quietly drops the schema-freeze rule. - Architectural decisions evaporate between sessions. "We picked Drizzle over Prisma because of the edge runtime" is in yesterday's chat. Today's Cascade chat has no idea, so it scaffolds with Prisma.
- Cross-file context fragments. Cascade can read every file in your workspace, but it cannot remember what it read three sessions ago. Each session re-reads, re-summarizes, re-loses.
Windsurf's built-in workarounds (and where each falls short)
Windsurf has shipped three features that partly address this. None of them solve it.
Cascade Memories auto-generate workspace-scoped notes during a session. Useful for "remember I use pnpm". Limited for "remember the full data flow we mapped out in last Thursday's chat". Memories are short by design — typically a sentence or two each — and the store lives on disk per workspace, not per project across machines.
Rules (global_rules.md and .windsurfrules) let you write durable instructions Cascade loads every session. Good for conventions. Not designed for evolving context like decision logs, transcripts, or design docs.
Workflows let you script repeatable agent procedures. Useful for "run the test suite, then format". Not a memory feature.
For static behavior, the natives work. For the substance of a long-running project, they fall short. You can read the official Cascade Memories docs for the full breakdown.
Where Windsurf's built-in memory falls short
Cascade Memories live inside Windsurf. They do not travel. If you also draft specs in ChatGPT, run long agentic loops in Claude Code, and review PRs in Cursor — and most teams we hear from do exactly that — then half of your project context lives in tools Cascade cannot read.
The project is the unit of work. Memory needs to follow the project, not the editor.
How MemoryLake fixes Windsurf forgetting Cascade context
MemoryLake is a cross-model memory layer that connects to Windsurf via Cascade's native MCP support. Instead of relying on Cascade's auto-summary, you give the project its own memory, and Cascade reads from it on every turn.
- Per-project memory, with document fidelity. Specs, ADRs, past Cascade transcripts, and decision logs live in the project. Cascade fetches what it needs per turn — the schema constraint from turn 5 is still retrievable at turn 500.
- 10,000× more context than raw prompting. MemoryLake's retrieval engine reads from billions of tokens of project memory and surfaces only what is relevant. You stop watching Cascade's summary collapse important detail.
- Portable across every editor and AI. The same project memory works in Cursor, Claude Code, Claude Desktop, ChatGPT, Gemini, and Grok. Switch tools mid-project and context follows.
MemoryLake scored 94.03% on the LoCoMo long-context benchmark — the top published result as of 2026 — with millisecond retrieval and AES-256 end-to-end encryption.
Connect MemoryLake to Windsurf in 3 steps
- Create a project and load your context. Sign in to MemoryLake, open Project Management, click Create Project, and name it after your workspace (e.g., "acme-api — Cascade context"). Upload specs, ADRs, and past Cascade transcripts through the Document Drive (PDF, Markdown, Word, Excel, images all supported). Add standing instructions in the Memories tab so they travel with the project.
- Generate an MCP Server endpoint. Open the MCP Servers tab inside your project, click Add MCP Server, name it "Windsurf integration", and click Generate. MemoryLake returns an API key ID, secret, and endpoint URL. Copy the secret immediately — it is shown only once.
- Add the server to Cascade's MCP config. In Windsurf, open Settings → Cascade → Manage MCPs → View raw config, then add a
memorylakeentry with the endpoint URL and your Bearer token. Save and restart Cascade. Cascade now has amemorylaketool it can call to pull project memory on demand or at session start.