Part 1 · Context

Agent Anti-Patterns · ~6 min

The Kitchen Sink Session

One session, running all day, doing everything. It feels efficient. It is quietly poisoning every task after the first.

Why this, for you: the most common self-inflicted version of the infinite context. You don't preload the junk — you accumulate it, one unrelated task at a time. The fix costs nothing and you'll apply it the moment you notice yourself switching topics in a live session.

It's tempting to keep one Claude Code session open and pile tasks on: review a PR, then start a feature, then debug a test. Each task leaves residue — file contents, command outputs, failed approaches, off-topic reasoning. The context fills with the leftovers of work you've already finished.

1 What it looks like

A developer reviews a PR all morning, then scaffolds a feature, then chases a flaky test — same session. By the third task the window holds diff hunks, file reads, and unrelated error logs. Ask Claude to name a new service class and it may anchor on naming patterns from the PR rather than the feature in front of it. The history isn't just dead weight; it actively steers the current decision.

Mixing unrelated tasks in one session fills the window with irrelevant history and degrades output quality — and you pay tokens for every byte of the noise.

2 Why it happens

The Claude Code best-practices docs name this directly: the kitchen-sink session, where context full of irrelevant information degrades the current task. Independent research by Chroma on context rot corroborates it — across 18 frontier models, performance varies with input length even on simple tasks, and irrelevant tokens degrade reliability more than length alone would predict.

3 The fix

One objective per session. When you finish and move to something unrelated, start a new session — not a /clear in the old one. Session history is saved locally, so a fresh start loses nothing.

# three focused sessions, not one all-day session claude "Review PR #412 — focus on auth logic" claude "Scaffold the new billing service under src/billing/" claude "Investigate why auth_test.py fails intermittently" # pick a thread back up later — nothing is lost: claude --continue # resume most recent claude --resume # choose from named sessions

Use /clear only between loosely related tasks where shared background still applies, and /rename to give sessions findable names like oauth-migration.

When splitting backfires

A fresh session re-reads CLAUDE.md and shared context. If two tasks share heavy background — a codebase you already walked, an architectural decision you established — that reload can cost more than the noise it removes. Auto-compaction also helps: if it fires before quality drops on loosely coupled tasks, an explicit split may be unnecessary. Split when shared history actively misleads.

↪ Your win: one objective per session

Retrieval practice — recall, don't peek

Question 1The kitchen-sink session degrades quality because…

Question 2The recommended rule of thumb is…

Question 3Starting a new session is safe because…

Question 4Splitting sessions can backfire when two tasks…

Question 5 · spaced recall from Lesson 01Anthropic's goal for context is the…

Ask me anything. Want the difference between /clear and a true new session, or when sub-agents beat both? Next in Part 1: Distractor Interference — why even relevant context can drag down compliance.
✎ Feedback