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.
Related
- Claude Projects guide
- Claude Code lost project context mid-task
- Claude beginner guide
- Claude prompt best practices
- Claude Skills Not Firing When Expected
Tags: #Claude #Troubleshooting #Projects