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.

Browse all patterns