Claude Projects Context Pollution Across Chats

A new chat inside the same Project answers based on an earlier chat's content. Project knowledge, custom instructions, and chat carry-over each leak differently — diagnose, scope, fix.

You start a fresh chat inside a Claude Project to ask about Topic B, but Claude keeps referencing facts from Topic A — a chat you had two days ago in the same Project. Or worse, it cites a client name or codebase path that should not be on its mind for this new task. This is not a bug; it is the Project model working as designed. Project knowledge is shared across every chat in that Project, custom instructions apply to every chat, and the model is biased toward whatever signal exists in the Project’s documents. Once you understand which surface is leaking, the fix is mechanical.

Common causes

Ordered by hit rate, highest first.

1. Project knowledge contains documents relevant to the prior topic

Anything in Project Knowledge (uploaded files, pasted text, connected sources) is injected into every chat in that Project. If Topic A’s spec PDF is still in there, Topic B chats will be primed by it.

How to judge: Open the Project sidebar, look at the Knowledge section. Anything listed there is in scope for every chat.

2. Custom instructions encode topic-specific rules

The Project’s “Set instructions for this Project” field is prepended to every chat. If it says “always cite the Acme contract,” every chat inherits that, including unrelated ones.

How to judge: Project settings → Custom instructions. Read the full text. Anything topic-specific is leaking.

3. You started a “new chat” but actually continued the old one

Clicking the wrong button on Claude’s UI sometimes opens an old chat as if it were fresh. The chat list highlights one item; that is the one you are in.

How to judge: Look at the URL — /chat/<id>. Compare to the sidebar selection. If there are existing turns above your message, this is not a new chat.

4. Long-running chat carried context into a thread that “feels” new to you

Inside a single chat, even if you scroll back and start a new topic mid-thread, Claude still sees all the prior turns. The chat does not auto-reset between topics.

How to judge: Scroll up. If there are 30+ turns above your latest message about other topics, those are all in context.

5. A connected source (GitHub, Google Drive) re-pulls older content

If you connected a repo or Drive folder to the Project, Claude can re-read those at chat time. Updated docs in the source are seen, but so is unrelated content in that source.

How to judge: Project settings → Connected sources. Each listed source is potentially in scope.

Before you start

  • Decide whether you want pollution gone permanently (clean Project) or just for one chat (new isolated chat outside the Project).
  • Snapshot anything important from Project knowledge before deleting — uploads are not always recoverable.
  • Note whether the leak affects one chat or every chat, that determines whether to fix the Project or just this chat.

Information to collect

  • Exact wording of the polluting reference (so you can search Project knowledge for it).
  • Which chat the leak occurred in (URL with chat ID).
  • Project custom instructions, full text.
  • List of Project knowledge documents and connected sources.
  • Whether the chat was actually new (no prior turns) or a long-running thread.

Step-by-step fix

Step 1: Confirm it is really a “new” chat

Look at the chat. If there are turns above yours, that is not a new chat — start one. Click the Project name in the sidebar, then “Start new chat” inside the Project (or “New chat” outside it). The URL should change to a fresh chat ID with no prior messages.

Step 2: Read the Project’s custom instructions

Project settings → “Set instructions for this Project.” If they contain anything topic-specific (“treat the user as the CFO of Acme,” “always reference the Q3 launch plan”), that text is prepended to every chat. Either:

  • Remove the topic-specific lines, keeping only durable rules
  • Or move that chat outside the Project entirely

Step 3: Audit Project knowledge

Open the Knowledge panel. For each item, ask: “Should this be present in every chat in this Project?” If no, remove it. Common offenders:

  • One-off spec PDFs uploaded for a single chat
  • Pasted transcripts from earlier conversations
  • Old contracts or client briefs no longer relevant
Project knowledge is shared — it is not per-chat.
If a doc is only relevant to one chat, attach it to that chat directly instead.

Step 4: Use per-chat attachments instead of Project knowledge

When you only need a document for one chat, drop it into the chat message itself (paperclip icon). It will only affect that chat, not the whole Project.

Step 5: Scope sensitive topics to a different Project

If you genuinely have two projects worth of content that should never mix (Client A vs Client B, work vs personal), make two Projects. Sharing the same Project will always cross-contaminate.

Project: Acme Q3 Launch  → Knowledge: launch brief, deck, comms
Project: Beta Internal Tooling → Knowledge: repo docs, RFCs, ADRs

Step 6: If pollution persists after cleanup, hard-reset the chat

Start a brand-new chat. Paste only the prompt for the new topic. If the leak still happens with empty Project knowledge and trimmed instructions, the leftover signal is somewhere else — check connected sources (GitHub / Drive).

Step 7: Disable or scope connected sources

Project settings → Connected sources. If a connected GitHub repo is huge, Claude can pull unrelated files into context when it searches. Either disconnect the source for this Project or narrow it to specific paths if the connector supports it.

Verify

  • Start a new chat inside the Project. Ask a meta question: “What context do you have from this Project right now?” Claude should describe only what should be in scope.
  • Test a control: ask about Topic A — Claude should still know A (because A is what the Project is now about), and not retain residue from removed knowledge.
  • Repeat the original failing prompt; the leaked term should not appear.
  • Wait 5 minutes and retry (some Project state has caching).

Long-term prevention

  • One Project, one topic. Resist the urge to dump everything into a single “Personal” Project.
  • Use per-chat attachments for one-off documents instead of Project knowledge.
  • Keep Project custom instructions to durable rules only (“respond in English,” “be concise”), never topic-specific.
  • Periodically audit Project knowledge — every quarter, remove stale uploads.
  • For client work, name Projects with the client prefix so you do not accidentally chat in the wrong one.
  • Treat Project knowledge as “always-on background” and the chat itself as “today’s focus.”

Common pitfalls

  • Assuming “new chat” means “blank slate” — inside a Project it never does.
  • Pasting transcripts into custom instructions thinking they will be “remembered” — they leak into every chat instead.
  • Connecting an entire GitHub org as a Project source. Way too broad.
  • Deleting a knowledge doc and not waiting for the index to refresh; Claude may still cite it briefly.
  • Confusing chat memory (per-chat) with Project knowledge (per-project) — they are completely different scopes.

FAQ

  • Does deleting a chat remove its content from Project memory? Deleting a chat removes that chat. It does not remove anything from Project knowledge. Those are separate.
  • Does Project knowledge ever expire? No, it persists until you remove it manually.
  • Can two collaborators on a shared Project see each other’s chats? Depends on plan and Project sharing settings; in Team plans, Project knowledge is shared but chats are private by default.
  • Why does Claude sometimes “forget” Project knowledge? Context window pressure — for very long chats, older Project knowledge can be summarized away. Start a fresh chat.
  • Is there a way to scope knowledge to certain chats only? Not currently. Use per-chat attachments for one-off docs.

Tags: #Claude #Troubleshooting #Projects