Skip to content

[Feature]: conversation branching (fork thread from a message) #1404

Description

@AudricY

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I am describing a concrete problem or use case, not just a vague idea.

Area

Not sure

Problem or use case

In Claude Code, you can branch a conversation from any message to explore a different direction without losing the original thread. This is useful when you want to try an alternative approach, test a different idea, or diverge from a plan mid-conversation.

t3code doesn't seem to currently support this.

Proposed solution

Inline action toolbar for responses with a branch icon button (extendable with more icon buttons for other future features).

Clicking on it creates a new thread under the same project seeded with all messages up to that point.

Original thread remains untouched.

Why this matters

Coding conversations are full of decision points . "Should I use approach A or B?", "let me try this refactor but I'm not sure it'll work", "wait, what if we solve it differently?" Right now, the only options are to continue in the same thread (losing the ability to go back cleanly) or manually start a new thread and re-explain context from scratch.

Branching lets you explore without commitment.

Smallest useful scope

NA

Alternatives considered

No response

Risks or tradeoffs

No response

Examples or references

chatgpt ui with inline action toolbar for model responses:

Image

Contribution

  • I would be open to helping implement this.

Activity

  1. added
    enhancementRequested improvement or new capability.
    needs-triageIssue needs maintainer review and initial categorization.
    on Mar 25, 2026
  2. Greyvend commented on Apr 21, 2026

    @Greyvend

    Claude desktop has this, it's pretty useful, especially in order to spawn one/several additional agents with the same context for further work (e.g., implement a specced feature, research subtopic within, explore different directions).

  3. Ben01233210 commented on Apr 26, 2026

    @Ben01233210

    Would be really nice if t3 code would have this

  4. renanmoretto commented on May 6, 2026

    @renanmoretto

    +1 for this. Currently using t3 code but I miss this feature so much from Claude Code. Claude Code CLI has this as a /branch command.

  5. hwanseoc commented on May 8, 2026

    @hwanseoc
    Contributor
    Image

    the codex app and CLI has this feature as well.

  6. vladknysh commented on Jul 8, 2026

    @vladknysh

    +1 for this

  7. added and removed
    needs-triageIssue needs maintainer review and initial categorization.
    on Jul 9, 2026
  8. juliusmarminge commented on Jul 9, 2026

    @juliusmarminge
    Member
  9. vinogradgarden commented on Jul 18, 2026

    @vinogradgarden

    Any news on this?

  10. florensie commented on Jul 31, 2026

    @florensie

    It would also be nice to have Codex's side conversations, which are essentially just ephemeral forks, not visible in the sidebar as a new session. It's really useful during long-running tasks to ask for status updates, or just in general to ask questions without bloating the main context.

  11. LunarRed commented on Aug 1, 2026

    @LunarRed

    It would also be nice to have Codex's side conversations, which are essentially just ephemeral forks, not visible in the sidebar as a new session. It's really useful during long-running tasks to ask for status updates, or just in general to ask questions without bloating the main context.

    Yes, please this but I also would like to fix Codex's implementation where they time out at some indeterminate future date and disappear. I don't need them to be permanent, but I also don't want them to vanish when I return from lunch or getting interrupted. Let me choose when to close/make them disappear.

  12. CopyJosh commented on Aug 4, 2026

    @CopyJosh

    I didn't realize there was a PR for this in the works with a greater rewrite, before I made a fork that adds this functionality. Anyone else who wants to add this to their fork can play with pointing their agent here: https://github.com/beardwhocodes/t3code

  13. KaKi87 commented on Aug 4, 2026

    @KaKi87

    I made a fork that adds this functionality

    You say here : Cursor and Grok are hidden: their protocol describes fork support but neither CLI implements it

    Would you please consider implementing it on the T3 side instead, i.e. duplicating the thread with a new ID and the same messages ?

    I only have Cursor and am right now stuck with the official client because of the Fork Chat feature.

    Thank you

  14. sprintthunder-dotcom commented on Aug 6, 2026

    @sprintthunder-dotcom

    I’d like to clarify a stronger version of the fork requirement that is important for safe experimentation:

    A child fork should be isolated from its parent at both the conversation and filesystem levels.

    Expected behavior

    • Fork from a completed response/run and inherit the conversation context and code state at that point.
    • Create the child on its own Git branch/worktree (or an equivalent isolated workspace), instead of reusing the parent’s current worktree.
    • Changes made in the child must never modify or appear in the parent/main workspace automatically.
    • The child can be discarded with zero effect on the parent.
    • Moving work back must be an explicit user action: show the diff, require confirmation, then merge/cherry-pick/apply only the approved changes.
    • Conversation/context merge-back should also be explicit; nothing should propagate into the parent automatically.

    In plain terms: sub remains sub, main remains main. The child exists to test another idea. Nothing from the child reaches main unless the user explicitly reviews and approves a merge.

    This matters because a conversation fork that shares the same Git worktree is not safe for parallel experiments: either side can mutate the other side’s code state. Please consider independent worktree allocation an explicit acceptance criterion. The desired model is:

    conversation lineage fork + isolated Git branch/worktree + explicit merge gate.

  15. yaacovcorcos commented on Aug 8, 2026

    @yaacovcorcos

    I have implemented and manually validated conversation forking in Scient, a downstream desktop application derived from T3.

    This implementation does more than create a new empty thread. It currently supports:

    • forking from a selected completed assistant response;
    • server-authoritative resolution of that response into the durable conversation boundary;
    • same-workspace forks, including projects without Git;
    • an optional independent Git worktree when a suitable checkpoint exists;
    • clear worktree eligibility when isolation is unavailable;
    • inherited messages and attachment ownership;
    • durable lineage and restart recovery;
    • an immutable inherited transcript across subsequent turns, revert, and re-fork;
    • provider-context bootstrap without counting inherited messages as new fork-local turns.

    The working implementation and subsequent architectural cleanup are available here:

    I understand that #2829 replaces the existing orchestration architecture, so I am not proposing to open a large competing V1 PR.

    Would it be useful for us to compare these validated behaviors against the current #2829 implementation and contribute any missing pieces as small, focused PRs? In particular, we can help with same-workspace non-Git forks, independent-worktree eligibility, selected-response boundaries, attachment transfer, or revert/re-fork recovery—only where those remain genuine gaps.

  16. locked and limited conversation to collaborators on Aug 15, 2026
  17. converted this issue into a discussion #6707 on Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions