Mirasim Build Fund$100 – $10,000in free credits for builders — nothing to repay.500 seatsApply
← The Mirasim GuideChapter 05

Branches, reruns and worktrees

Take one conversation two directions, run a turn again, and let parallel agents edit the same repo safely.

9 min read, 3 sections, in Build

Forking a conversation#

Any message in a transcript can become the start of a new branch. The branch inherits the full history up to that point, and the prompt you write becomes its first turn — so you can try a second approach without losing the first one or re-explaining the context.

  1. Pick the point where the paths diverge

    Usually the last message before the decision you now doubt. Choose Fork from Here on that message.

  2. Write the alternative as the branch's first prompt

    “Try this with a queue instead of a cron job.” The branch starts a real, separate session — the original keeps running and keeps its history.

  3. Compare, then keep one

    Both branches are ordinary sessions with ordinary diffs. Read both, keep the better one, delete the other. The branch carries a badge showing which session and turn it came from, and the parent lists its branches.

Re-running and editing turns#

Sometimes you do not want a branch — you want the same question asked again. Re-run replays a turn, which is the cheapest way to see whether an answer was luck, or to try it under a different model. Editing your own message lets you fix the prompt that produced a bad turn instead of arguing with the result.

Worktrees: parallel agents on one repository#

Two agents editing one checkout produce corrupted state and unreviewable diffs. A session can therefore run in its own linked Git worktree — a real checkout on its own branch, created by the agent and tracked by Mirasim — so each agent works as if it had the project to itself.

Worktrees are a Git feature, not a Mirasim invention, so nothing becomes opaque: `git status`, `git diff` and your own editor all still work. Merging a pane's work back is an ordinary merge; discarding it is an ordinary branch delete.

Each workspace on its own branch, with what it is ahead or behind by
The Git panel listing several workspaces, each with its current branch and its ahead/behind counts, beside the composer's workspace picker.

The Git panelEvery workspace at once: which branch it is on, how many files changed, how far ahead or behind its upstream. This is the view that tells you whether parallel work has drifted apart. — this control is not on the captured screen.

The buttons in this panel work — click them to look around.

  1. Turn the worktree switch on in the composer

    It sits beside the workspace and branch pickers, so isolation is a decision you make when you start the session — not a migration you perform later.

  2. Pick the base branch

    The agent switches to it first, or branches the worktree off it. Basing parallel work on the same known-good commit is what keeps the merges boring.

  3. Merge in order, smallest first

    Land the small, mechanical branch, then rebase the bigger one onto it. Two agents that touched the same file are a normal conflict with a normal resolution.

  4. Clean up deliberately

    Deleting a session offers to remove its worktree too. Git refuses while uncommitted changes remain — that refusal is a feature; commit or discard them first.

Something wrong or missing on this page? Tell us