Ultraplan web handoff is delta-blind to local uncommitted edits

Open 💬 0 comments Opened Jun 29, 2026 by gmccullo

Summary

When Ultraplan hands off a plan from the local terminal to a Claude Code web session for execution, the web session has no visibility into edits already applied to the working tree in the local terminal session. If both sessions touch the same files, the web session's patch will conflict with or duplicate changes the local session already made.

Steps to reproduce

  1. In local terminal, begin a task — make some edits to files A and B
  2. Use Ultraplan to hand off a plan that also touches files A and B
  3. Approve the plan in the browser
  4. Web session executes the plan, generating a patch or commits against the original file state (pre-local-edits)
  5. User attempts to apply the patch or merge the branch — conflicts arise on every hunk already applied locally

Expected behaviour

The handoff captures the current working-tree state (including unstaged edits) so the web session plans and executes against the actual current state, not the last-commit state.

Actual behaviour

The web session clones the repo at the last commit, unaware of any uncommitted local edits. The generated patch assumes the pre-edit file contents as context, causing conflicts on every hunk that overlaps with work already done locally.

Impact

  • git apply fails or requires --reject, leaving the user to manually reconcile rejected hunks
  • Work done in the local session must be re-analysed by the executor to determine which patch hunks are already applied vs. still needed
  • The "hand off and forget" UX promise breaks: the user must actively supervise the merge

Suggested fixes

  1. Dirty-tree snapshot at handoff — before handing off, bundle the current working-tree diff (or a stash) alongside the plan so the web session can apply it first, then execute against the correct baseline.
  2. Staged-commit at handoff — prompt the user to commit (or stash) local changes before handing off, with a clear warning if the working tree is dirty.
  3. Conflict-aware patch generation — if the web session detects it is generating a patch over a stale baseline, warn the user and offer to abort rather than produce a patch that will conflict.

Environment

  • Claude Code local terminal session with uncommitted edits in progress
  • Ultraplan handoff to Claude Code web session
  • Web session clones repo at HEAD, missing local working-tree state

View original on GitHub ↗