Linear chat forces a single thread — exploring an alternative means abandoning the current one or copy-pasting state by hand.
Conversation Branches
Fork the thread, keep both sides
Linear chat forces you to abandon one direction to explore another. Conversation Branches let you fork from any turn into a parallel thread, develop both, and compare side by side. The conversation becomes a tree you can prune — not a stack you scroll through.
Metaphor
Branching Path
Interaction
Fork-from-Turn, Side-by-Side Compare
Use case
Exploring Alternatives, Decision Trees, Versioned Reasoning
Failure mode
Linear Stack
Control mechanisms
Branch Button per Turn · Tree View · Compare Mode
Reference examples
ChatGPT branch-in-new-chat · BranchGPT · Claude Code /fork · Claude regenerate alternatives
Interactive Example
The live side-by-side is the comparison.
This prototype already contains the contrast between chat and the pattern response. It stands as the primary comparison surface for this page.
Chat treats history as a stack. Thinking is a tree.
Linear chat forces a single thread, so the moment you want to explore an alternative you have to abandon the current direction or copy-paste state by hand. There is no surface for the most natural question in any real investigation — what if I had asked it differently back at that turn?
Conversation Branches let you fork from any turn into an isolated parallel thread and develop both, with the full fork tree visible and every branch point annotated with the hypothesis you named. Exploration stops being destructive: you can compare two directions side by side, then prune the tree instead of scrolling a stack you can no longer reason about.
When the cost of exploring a second path drops to one click, you stop committing to the first one too early.
DOPE Lens
How this pattern improves AI interaction quality.
Observability
The full branch tree is visible; every fork point is annotated
Directability
Fork from any turn, switch branches, merge or discard
Predictability
Branches are isolated — work in one does not leak into another
Explainability
Each fork shows the reason or hypothesis the user named when creating it
Fit
Where it earns its place.
when
Users want to compare alternative paths from the same starting point without losing either.
when
The task is single-path and forks would just clutter the surface.
Closest neighbours
No product ships this exactly — these come closest.
This is a research pattern — we describe a UX move that no shipping product implements cleanly today. The entries below are adjacent: they share the spirit of the pattern even if they take a different shape.

ChatGPT branch-in-new-chat
OpenAI
Aug 2025: explicit "Branch in new chat" from any prior response. Caveat — no native tree view, and in-place edit is restricted to most-recent message only. Closest mainstream example.
Visit OpenAI ↗

BranchGPT
Third-party
Chrome extension that visualizes ChatGPT native branching as an interactive tree. The only true tree-view today — third-party, not first-class.
Visit Third-party ↗

Claude Code /fork
Anthropic
`--fork-session` and `/branch` commands create explicit fork pointers. CLI-only — no tree UI, but the branch primitive is real and version-controlled.
Visit Anthropic ↗

Claude regenerate alternatives
Anthropic
Caveat — implicit branching via edit-prior + regenerate, no tree-view UI. Multiple GitHub issues (#16236, #32631) request a proper branch tree as a feature.
Visit Anthropic ↗
Research Frame
Why this pattern exists, and where it breaks.
Let users fork from any turn into a parallel branch and compare side by side, with the full tree visible.
Chat treats history as a stack, not a tree. There is no surface for "what if I had asked it differently here?".
Branch sprawl can become a tree the user cannot navigate; needs pruning and clear naming.
Common questions
What people ask about this pattern.
When should I use the Conversation Branches pattern?
+
Users want to compare alternative paths from the same starting point without losing either.
When should I avoid the Conversation Branches pattern?
+
The task is single-path and forks would just clutter the surface.
What problem does Conversation Branches solve?
+
Linear chat forces a single thread — exploring an alternative means abandoning the current one or copy-pasting state by hand.
Why is chat the wrong fit for this?
+
Chat treats history as a stack, not a tree. There is no surface for "what if I had asked it differently here?".
Related Patterns
Curated connections, not just neighbors.
Hand-picked relationships — what this pattern pairs with in practice, what it replaces, what it builds on, and what builds on it.
Often paired with
Editable Plan
Fork at the turn the plan appears, edit each branch's Editable Plan, compare, and approve the one that holds up.
Alternative to
Parallel Alternatives
Parallel Alternatives shows three answers in one turn to pick or blend; Conversation Branches forks the whole thread.
Extended by
Spatial Canvas
Spatial Canvas lays the branches out as nodes and adds edges, so one thread's output can feed another.