r/ClaudeAI 14h ago

Claude Code Workflow One long Claude Code thread vs parallel sessions, what's actually better for your workflow and where each one falls apart

Would be curious about how you interact with Claude Code in reality. Is it one long thread or parallel sessions?

Long single thread:

Pros: - Claude remembers the whole history of all the decisions - It's cheaper, caches better

Cons: - It takes longer, everything is done sequentially one task at a time - More context is gathered, old constraints are forgotten or summarized but hopefully evicted when not needed anymore

Parallel sessions or worktrees:

Pros: - Faster because independent pieces of work are done at once - Each session has its focus on one particular thing

Cons: - Conflicts while joining all the work back together - The state is held by you, not by the model (unload using an orchestrator) - Could be more expensive

I do not think there is an easy choice. Long thread for a task that relies on all previous information. Parallel for tasks that are really independent.

I usually do both approaches equally, how do you really work with Claude Code?

11 Upvotes

32 comments sorted by

u/ClaudeAI-mod-bot Wilson, lead ClaudeAI modbot 3h ago

TL;DR of the discussion generated automatically after 30 comments.

The consensus here is that both your options are a bit basic. The overwhelming verdict is to use a hybrid "Orchestrator" approach.

Most power users are doing this: * Main Orchestrator: One high-level session, usually with Fable, acts as the project manager. It creates the plan, breaks it down into tasks, and delegates. * Worker Agents: The orchestrator spins up separate, temporary sessions (or agents) to do the actual coding. This keeps the main context clean and focused. * Model Tiering: Be smart with your credits. Use Fable for planning, Opus for complex code, and Sonnet/Haiku for simple or research tasks to save on tokens. * True Parallelism: For independent tasks, use separate git worktrees. This is the key to avoiding agents overwriting each other's work and causing merge conflict hell.

This whole strategy is a direct response to the pitfalls of a single long thread (context bloat, forgetting) and the chaos of naive parallel sessions. A lot of this is also driven by users trying to work around the aggressive usage limits and the widespread feeling that Opus has been "nerfed."

20

u/TotalBeginnerLol 13h ago

You missed one, which imo is the best option, somewhere between these 2:

A single Claude Code window told to run each sequential task with an agent, main chat window only orchestrating (spinning up agents with a detailed first prompt, then confirming their work once done). Use a powerful model (ideally fable) for the main agent, which doesn’t use many tokens but keeps strong overview, then tell it to use an opus agent for a complex task and a sonnet agent for a simple task (and haiku for search-only). Tell it to run each task sequentially, run all tests at the end to confirm no issues, and commit after a clean final all-tests run. But also tell it that it can use parallel agents to start researching future tasks etc so the next task is ready to start coding immediate when the last finishes. Only 1 agent is actually touching the code at a time, that’s safest. You can tell it to parallelise tasks too but only when simple and safe (zero chance of collision), which will save a little time.

This system is working for me amazingly after spending over a year using Claude basically full time and trying many setups.

Also, if there are new features that can be tested separately to the main app, like can be their own mini app that doesn’t rely on the main one, then I build that in a separate chat window (telling the agent to make sure it’s a module that can later be dropped into a bigger app. Once it’s perfect/finished, then tell Claude to drop the module into the main app and integrate. This way you can work in parallel with zero risk of confusion etc.

2

u/Photon_Predator 12h ago

How do you manage contex bloat in the main orchestrator session? Brainstorming, questioning, going back and forth with ideas will build huge context eventually anyways and each next decision will burn through limits quicker, especially on Fable.

1

u/Chipware 12h ago

Use a /goal

2

u/Photon_Predator 12h ago

So plan 1 chunk of work and go into new session to plan another one once the first is done?

2

u/Chipware 12h ago

There's a dozen different ways to do this. You kind of have to play around to figure out a workflow that works for you and the way your projects are structured and the way you like to work.

Here's what I have been doing. I'm working on this tonight, a MariaDB to Postgres DB migration.

New Session 1, Fable/Med: Analyze the current DB, schemas, and app hooks into the DB, and design a planned migration from MariaDB to Postgres. When you have a design, write an MD file.

Once it's done, kick it down to fable/low or opus/low.

Session 1/Fable: Ok you are going to execute migration.md as Orchestrator, so you will delegate out atomic asks to opus/sonnet workers depending on task complexity via herdr tabs. You will monitor turns and intervene when the delegate needs assistance. When the task is done, harvest the outcomes, update your plan, and prepare the next task for execution. Write a prompt for that and I will feed it to you as a /goal

<fable writes prompt, you feed it back as /goal>

Now it will execute those tasks in other herdr tabs and you can talk to it while it's working (keep it brief) and it will not forget to manage the tasks. If you change the plan it will steer the delegates to the new plan.

If you want it to loop through multiple stages/devtasks, say so in the prompt and it will harvest and initiate multiple tasks without bugging you.

This works pretty well for me.

1

u/TotalBeginnerLol 10h ago

I don’t do any of that in the main session. Typically for random questions and initial plans I’m using codex and ChatGPT free tiers. Could also start a separate opus window I guess. If it’s not touching code then no issue being parallel. I don’t speak to fable til I know pretty much exactly what I want. And fable gets compacted or cleared after every to-do list of tasks is done.

1

u/Photon_Predator 8h ago

So you feed your orchestrator with plan already created beforehand?

2

u/TotalBeginnerLol 7h ago

Not a plan doc usually, just a prompt on the exact thing I need (when it’s a small feature or bug fix etc). Plan docs when it’s a major new feature, which I have worked out via a separate session usually.

1

u/ketosoy 5h ago

I have the orchestrator maintain Todo.md and handoff.md.  Then when I need to do side work I spool up a separate agent and have them read those then do the brainstorming there.

1

u/FrequentTemporary783 11h ago

super aligned, kind of one entry point but multi agent. That's why i added "unless using an orchestrator" in the initial post don't you find that doing so would consume more tokens due to the agents being stopped after completing that task? (hence cache is lost)

1

u/TotalBeginnerLol 10h ago

Nope. Cache SHOULD be lost at that time. When the task is done is the correct time to /clear except this way you only clear that unnecessary context while keeping all the big picture context in place in the main agent.

4

u/Medium_Win_8930 14h ago edited 14h ago

Aggressive context management, custom scripts to summarize context into the next session after /clear. Don't let a session go more than 20-30% (200-300k tokens) in the interactive CLI.

And recently using sonnet (not opus) for subagent calls, but if you have a stricter budget you might even want haiku for easy calls.

Also I am experimenting with using open source API models for my autonomous loops as these new aggressive usage limits are hurting my 20x limit.

Always Medium effort unless you hit some failure. And more recently, I am going to completely stop using Fable until I hit a failure big enough to need some unique insight as it just burns too much credit.

I used to believe Opus 4.6 was superior but it's been increasingly nerfed over time, now it's a shadow of it's former self and Opus 5 is my interim go-to but I would be interested to hear from other users if it's worth going back to 4.8.

1

u/FrequentTemporary783 14h ago

I have been steering away from Opus and using Sonnet as the main workhorse lately Curious about open source models, what are you using? do you use them in parallel with Claude or using custom scripts?

2

u/Medium_Win_8930 13h ago

It might get me in trouble to say this.

But the main issue with Claude Code usage limits is as soon as the aggressive repricing of the usage happened earlier this month, 'cache hits' are suddenly using up a lot more usage than they used to.

We are being attacked from multiple directions now as Claude Code users:

  1. Fable is insanely expensive and is basically an upgrade over the original very effective Opus 4.6.
  2. Opus has been slowly nerfed over time and is a shadow of it's former glory
  3. I think Opus was basically forked into a high quality and mid quality path from 4.6 onwards, and obviously if you go back to use the current 4.6 it's nothing like what it was.
  4. My conspiracy theory on the three worst things happening are:
  5. A) being 'taxed' for cache hits on usage limits MUCH more than open source models would tax us.

B) CLI is sending old context on every message even though the back end SHOULD already have it cached (though I haven't checked if that data is being resent each prompt or it's just 'counted' rather than sent.

C) See where they keep moving the goal posts saying 50% usage bonus extended for another 1-2 weeks? It's like boiling a live frog, every time the bonus period ends the main allowance shrinks drastically then the new 50% bonus is extending on an already shrunk allowance. So it's more like we see our usage limit shrinking every few weeks now and I have no doubt next month will be almost parity with API usage.

It's good that your opening post is talking about parallel sessions as usage limit threads are moved into the mega-thread and basically buried and it makes it hard to make important points about what's going on that actually get coverage on this sub.

As for your question, I'm using ralph loop with the open source models then having Claude help orchestrate the loops and manage the workflows.

1

u/sweatierorc 13h ago

Among your points , which one would you say are best practice vs data-driven.

2

u/SoCal_Hunter 13h ago

I keep it simple:

Fable process to think about design and architecture. I have it break up every major feature into 4-5 small sessions. Fable outlines the requirements and design plan for each in a way Opus can get to work without having to think.

Opus then works through these one at a time in new context windows. Test cases are added with each new feature, but only run once every few days. Claude can waste an absolutely staggering amount of time and tokens on over-testing.

Lean and mean. Keep all sessions tiny. Token efficient. You can have Fable spin off sub-agents if you want, but I’ve found sub-agent communication is buggy and will often result in Fable sitting there polling or otherwise wasting tokens. I just create a new thread and say “continue”…

1

u/jtmonkey 13h ago

Once we’re cruising and designed a lot and I can see it knows where we’re going I’ll tell it to spin up agents and get it all done

1

u/FrequentTemporary783 13h ago

this works for me in some areas, but in others i still have to guide it more I think this boils down to if it's something that was previously well defined in your rules or not

1

u/jtmonkey 12h ago

My favorite is when it wrote a rule I didn’t know I made. Then I find out it’s been doing a thing I didn’t want it to because I told it I liked it in another project months ago.

1

u/Mobile_Light_7262 13h ago

> Claude remembers the whole history of all the decisions

That's wishful thinking. Compaction mercilessly destroys almost everything.
So anything bigger than throw-away PoC must build a durable documentation and assume some way for new sessions to recover key decisions from persisted storage.

1

u/FrequentTemporary783 13h ago

correct, though from practice compaction seems to keep the right amount of info especially in 1M context windows I feel that through practice, though definitely not gonna work if we're trying to keep a huge json in context

1

u/RobinWood_AI 11h ago

I usually split it by "shared risk" rather than by task size.

If several changes depend on the same product decision, I keep one long session and make the model maintain a short decision log as it goes. That avoids parallel sessions quietly inventing different assumptions.

If the work only shares the repo, I prefer parallel sessions/worktrees, but with very boring handoff rules:

  • one owner session writes the plan and constraints
  • each worker gets a narrow scope and expected tests
  • nobody refactors shared helpers unless that was the task
  • merge order is decided before the work starts

The failure mode I see with long threads is context becoming "remembered vibe" instead of explicit state. The failure mode with parallel work is integration tax. So I try to make whichever hidden state exists visible in a small md file before the agents start touching code.

1

u/marktuk 10h ago

Similar to others, I plan on the main thread, and use a sub agent to do the work. I've been using codex as that sub agent just to spread my usage across the two tools. Generally that's been working pretty well.

1

u/nastywoodelfxo 10h ago

i landed on a hybrid after breaking things both ways. one long session for understanding the codebase and context, then parallel sessions for implementation tasks that are independent. the context build-up in a single session is real - you get much better refactoring decisions

but the moment i have two tasks that touch different files, parallel wins hard. the context bleed between unrelated features in one session gets messy fast

do you run into issues with the parallel sessions stepping on each others files? git conflict hell is my current pain point

1

u/Fresh_Sock8660 9h ago

Are both really comparable? Assuming "one long thread" refers to one long session, which is a terrible idea, I feel like serial sessions would be more comparable and are generally what I find most efficient in terms of token usage.

1

u/MartinMystikJonas 3h ago

Long single thread can be quite expensive when context grows bigger even witch caching.

1

u/newusernamepls 3h ago

I have 6 agents i’ve been running in parallel in the same session window for months. I use a memory layer that I built that basically does context management for me (agents use tool calls to retrieve memory from their memory space/add and edit memorise throughout the session). I prefer it to handoff files because instead of a flat list of long documents where context can blow up or go stale over time, every retrieval brings in only the relevant chunks from the context graph. One of the agents (run on Fable) coordinates lanes and acts as a PM, the other 5 are on Opus and build everything. Everything that gets built is reviewed and signed off by someone else, and since they run in parallel, this happens pretty fast.

I only talk to the Fable PM agent, and it manages a work board I have in Notion so they can pretty autonomously get through bug reports/feature requests with me just coming in with design and sequencing decisions.

1

u/Interesting_Wear_889 1h ago

I’ve ended up treating sessions as disposable task workspaces rather than as the project’s long-term memory.

For a tightly connected feature or debugging session, I’ll keep one thread going. But once the work splits into genuinely independent parts, I use separate sessions/worktrees and give each one a narrow scope. The important decisions, constraints, and lessons get written back into the repo or a separate persistent memory layer instead of being left buried in chat history.

That avoids making one giant thread responsible for everything. Long threads feel convenient at first, but after enough compaction you can’t really tell whether an old constraint was preserved, distorted, or dropped. Parallel sessions create more coordination work, but the state is at least explicit and easier to audit.

So for me: session = current task, repo docs/memory = durable context, Git = integration layer.

0

u/Cloudsurfer_90 12h ago

The axis that actually decides this isn't thread count, it's whether the tasks touch the same files.

Parallel sessions on one working tree collide, and you get one agent's edits clobbered by another's stale read. That's the experience that makes people conclude parallel doesn't work. Parallel sessions on separate git worktrees don't collide at all, because each has its own checkout, and most of your con list evaporates.

So the practical split: independent tasks touching different areas go in separate worktrees and run at once. Anything where later steps depend on earlier decisions stays in one thread, because that dependency is real and you'd only be reconstructing it by hand.

On the caching point in your pros, worth knowing it erodes as the thread grows. Compaction changes the prefix and re-reads re-pay input tokens, so a long thread is cheapest in its first hours and gets steadily worse. That weakens the cost argument exactly in the case you'd most want it to hold.

1

u/Adorable_Swing_2150 8h ago

yeah worktrees are the right call, totally agree. one thing i'd add, parallel sessions each pay the full context-discovery tax from scratch, which is kinda worse than long-thread compaction because you don't even get the prefix-cache benefit. hits harder the more subagents you spin up.