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.
Framing
The problem
Linear chat forces a single thread — exploring an alternative means abandoning the current one or copy-pasting state by hand.
The pattern
Let users fork from any turn into a parallel branch and compare side by side, with the full tree visible.
Why chat breaks here
Chat treats history as a stack, not a tree. There is no surface for "what if I had asked it differently here?".
Risks
Branch sprawl can become a tree the user cannot navigate; needs pruning and clear naming.
Avoid when
The task is single-path and forks would just clutter the surface.
Use when
Users want to compare alternative paths from the same starting point without losing either.
DOPE evaluation
- Directability
- Fork from any turn, switch branches, merge or discard
- Observability
- The full branch tree is visible; every fork point is annotated
- 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
Closest neighbours
- 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.
- 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.
- 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.
- 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.
FAQ
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
- Alternative to: Parallel Alternatives — Branch the conversation to explore divergent paths vs render alternatives side-by-side. Both expand a single answer into many.
- Extends: Spatial Canvas — A canvas of branches is exactly the spatial form of conversation branches — many threads, all visible.
- Often paired with: Editable Plan — Branch the plan, edit each branch separately, compare. Plans gain dimensionality.