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

Why does Claude forget uploaded files?

You uploaded a 100-page contract into a Claude chat on Tuesday. By Friday you start a new chat to keep working, and Claude has no idea what document you are referring to. Even inside the same Project, Claude sometimes answers as if the file is half-loaded.

This is not a regression. Claude's file handling is built around per-chat scope and retrieval, and there is a clean way to give it persistent file memory.

The short answer

Claude forgets uploaded files because each chat keeps files tied to that session, and Claude Projects load file content via retrieval (RAG) — only the chunks Claude thinks are relevant make it into a turn. Files cap at 30MB each in Project knowledge, and Claude's Memory feature stores summaries, not document text. The fix is to pair Claude with a verbatim file store it can query precisely.

Why Claude forgets uploaded files

Claude exposes two upload paths, and both forget in different ways.

1. Single-chat uploads are session-scoped. Files you drop into a regular Claude chat are bound to that chat. A new chat starts with no access to them. The file content does not propagate to Memory, and there is no API path to pull files from one chat into another.

2. Project knowledge uses retrieval, not full loading. When you add a file to a Claude Project, Anthropic indexes it and pulls relevant chunks into context per turn. The full file is not in Claude's head — it is in a retriever, and Claude only sees the slice that matched the query. Off-key questions miss the right passage.

3. Per-file size caps shape what fits. Anthropic supports up to 30MB per file in Project knowledge. The effective usable content per turn is bound by Claude Sonnet 4.6 / Opus 4.7's context window, so very large files are read in chunks across turns.

The visible result: the file is in the sidebar, but Claude treats it like a library card, not a memorized book.

What you lose when Claude forgets uploaded files

A file you assume is fully loaded but is actually retrieved-in-chunks causes subtle errors:

  • Missing-clause answers. "I don't see a termination clause" can mean "the retriever did not surface it", not "the file does not contain one". You lose trust in the answer.
  • Cross-file conflicts go unnoticed. When two project files contradict each other, retrieval may pull one passage and ignore the other in the same turn, so Claude answers as if there is no conflict.
  • Single-chat uploads die with the chat. A 200-page deck you dropped into a one-off chat on Monday is invisible on Tuesday's new chat. The chat sidebar still shows it; the model behind the chat does not.

The cure is not "upload again". The cure is to keep the file in a memory layer that does not rely on whichever chat is open.

Claude's built-in workarounds (and where each falls short)

Anthropic ships three real features for file persistence. Each one has a real ceiling.

Project knowledge is the main native answer. Files added to a Project survive across chats inside that project and are retrieved per turn. The trade-off is retrieval heuristics — you cannot see which chunks Claude skipped, and you cannot force a full read.

Memory (Pro / Max / Team / Enterprise) summarizes past chats every 24 hours and surfaces that synthesis on new chats. It is good for "user is working on contract review" continuity, not for "remember clause 4.2 verbatim".

Single-chat file uploads are unchanged from earlier years — files live and die with the chat. Useful for one-off questions, useless for project continuity.

You can read Anthropic's official explanation in their help center article on memory and chat search.

For a one-off file review, the natives are enough. For a real document set, they are not.

Where Claude's built-in memory falls short

Documents rarely live in only one AI. You upload a spec to Claude for one read, then drop it into ChatGPT for a second perspective, then summarize it in Gemini. Each tool runs its own retriever over a fresh copy. None of them share what they already pulled, so a fact that Claude surfaced last week is not available to ChatGPT today.

The fix is a single document store every AI can query — the file is uploaded once, indexed once, and surfaced everywhere.

How MemoryLake fixes Claude forgetting uploaded files

MemoryLake gives Claude a verbatim Document Drive plus first-class MCP access, so files persist exactly and across every chat.

  • Verbatim file storage with provenance. Every file lives in the Document Drive with a clean audit trail — when it was uploaded, when it was last referenced, and which Memory entries cite it. Nothing is paraphrased away.
  • MemoryLake-D1 parses complex layouts. Multi-column PDFs, contract tables, scanned exhibits, and Excel models are extracted with visual plus logical verification, so structure survives parsing.
  • Native MCP into Claude Desktop. Claude Desktop reads from MemoryLake's MCP endpoint alongside its own Projects, so file lookups inside chats can hit verbatim memory when retrieval would have missed.

MemoryLake holds the top published LoCoMo long-context score of 94.03%, retrieves in milliseconds, and runs AES-256 end-to-end encryption — you own the data, even MemoryLake cannot read it.

Connect MemoryLake to Claude in 3 steps

  1. Create a project and load your files. Sign in to MemoryLake, open Project Management, click Create Project, and name it ("Claude — vendor contracts" works). Drag your documents into the Document Drive — PDF, Word, Excel, PowerPoint, Markdown, and images are all parsed by MemoryLake-D1. Add standing notes or key clauses as named entries in the Memories tab for quick recall.
  2. Generate an MCP Server endpoint. Inside the project, open the MCP Servers tab, click Add MCP Server, name it "Claude Desktop integration", and click Generate. MemoryLake returns an API key ID, secret, and endpoint URL. Copy the secret on the spot — it is shown only once.
  3. Connect Claude. Claude Desktop supports MCP natively: paste the MemoryLake endpoint URL and Bearer token into your claude_desktop_config.json under MCP servers, then restart Claude Desktop. For browser Claude (no native MCP yet), call the REST API with your Bearer token or paste a short system prompt that references your MemoryLake project ID so the right files are loaded per chat.

Frequently asked questions

Does Claude remember uploaded files across chats?

Files attached to a Claude Project survive across chats inside that project, but Claude reads them via retrieval, not full loading. Files uploaded to a single chat do not carry over to new chats at all.

How do I make Claude keep my uploaded files long-term?

Move the files into a persistent layer like MemoryLake. Claude Desktop reads them via native MCP, and browser Claude reads via REST API or a system prompt that references your project, so the same files are present in every chat.

Why does Claude keep forgetting clauses inside files I uploaded?

Claude Projects retrieve only the chunks the retriever thinks are relevant per turn. If your question phrasing does not match the indexed chunks, the right clause never enters context. The file is loaded; only a slice is being read.

What is Claude's file upload size limit?

Anthropic supports up to 30MB per file in Project knowledge, with no hard limit on file count; usable content per turn is bound by Claude Sonnet 4.6 / Opus 4.7's context window through retrieval.

Can I share Claude files with ChatGPT or Gemini?

Anthropic does not export Project files to other AIs. MemoryLake stores files once in a model-neutral Document Drive, so the same documents are queryable from ChatGPT, Gemini, Grok, Cursor, and any tool that supports REST or MCP.