MemoryLake
Back to all articles
Pain PointMay 22, 20267 min read

Why does Windsurf forget Cascade context?

You spend an hour in Cascade, walking it through a refactor across four files. It is tracking everything, citing your earlier turns, making smart calls. Then somewhere around the 30th message it goes quiet on a detail you established at message 5 — and suddenly it is suggesting a pattern you explicitly rejected two hours ago.

Cascade did not break. It compressed. Here is why, and how to keep your project context intact across every session.

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_v1 table 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

  1. 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.
  2. 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.
  3. Add the server to Cascade's MCP config. In Windsurf, open Settings → Cascade → Manage MCPs → View raw config, then add a memorylake entry with the endpoint URL and your Bearer token. Save and restart Cascade. Cascade now has a memorylake tool it can call to pull project memory on demand or at session start.

Frequently asked questions

Does Windsurf have memory?

Windsurf has two memory mechanisms: Cascade Memories (short notes auto-generated by Cascade, stored at ~/.codeium/windsurf/memories/) and Rules (manually written global_rules.md and .windsurfrules files). Neither stores full documents or full transcripts, and both are scoped to the workspace.

How do I make Cascade remember context across long sessions?

Connect Cascade to an external memory layer like MemoryLake through Windsurf's native MCP support. Project files, decisions, and past Cascade transcripts are stored once and fetched per turn, so Cascade no longer needs to compress your own conversation to stay inside the window.

Why does Cascade keep forgetting things I told it earlier in the chat?

Because Cascade auto-summarizes earlier turns as the context window fills. Codeium has acknowledged that prior summarization was aggressive enough to drop important detail. Even with improvements, summarization is lossy — fine-grained constraints get compressed into a sentence.

What is Cascade's context window size?

Cascade's window depends on the model you choose — up to roughly 1M tokens on the largest models — and is per-session. New session, new window. Long sessions that read many files fill the window faster than the raw model spec suggests.

Can I share Cascade context with Cursor or Claude Code?

Cascade Memories are not portable. MemoryLake stores memory in a model-neutral Project, so the same context works in Windsurf, Cursor, Claude Code, Claude Desktop, ChatGPT, and any tool that speaks MCP or REST.