Triage
Confirmed on current main. The sidebar is showing the creation-time stamp, not the session’s live worktree/branch. Desktop is just hosting the web UI — this is not an apps/desktop-only bug.
What the row uses
- Branch label / tooltip / search row render persisted
thread.branch(apps/web/src/components/Sidebar.tsx). Same stamp is used in the command palette and the mobile thread list. - Git status for that row is
thread.worktreePath ?? project.workspaceRoot, not the provider session cwd. - The “checked out on another branch” warning only runs for local threads and compares the stamp to the main repo (
resolveLocalCheckoutBranchMismatch). AnEnterWorktreeinto.claude/worktrees/…does not trip it, so the row never looks historical. - The MR badge is the same stamp path:
useLinkedThreadPullRequestreads persistedlinkedPullRequest/branchPullRequest/pullRequests, andThreadPullRequestReactorlooks up bythread.branch. Local threads also keep a merged/closed PR after the lookup goes empty. That matches!164surviving merge + deleted remote.
Why the existing follow-up missed this repro
followWorktreeBranchDrift (apps/server/src/orchestration/Layers/CheckpointReactor.ts) does persist a dedicated worktree’s new HEAD at turn end. It refuses when worktreePath is null, when the worktree is shared, or when HEAD is detached / a temporary t3code/<hex> branch.
This thread started on the main checkout (worktreePath === null), then the agent used Claude’s EnterWorktree into an existing .claude/worktrees/… path and checked out main. T3 has no EnterWorktree handler and does not write that cwd back onto the thread. Drift-follow therefore never runs. #5159 / #4831 fixed the dedicated-worktree case only.
Both the sidebar and the thread toolbar query the persisted cwd, so this is not the “toolbar live / sidebar stale” split #8126 described. The live location in the report is the agent shell (pwd / git rev-parse).
Not a duplicate of
- #4831 (closed; dedicated-worktree sync only)
- #8126 (closed unmerged; display-only, missing shared/temp guards, would desync the PR badge)
- #7409 (terminal checkout not refreshing UI)
- #8204 (stale diff base)
- #8209 (wrong PR for a non-default upstream)
Fix direction
Do not revive #8126 as the primary fix. Persist location on the server when the session cwd moves into a dedicated worktree, with the existing shared / detached / temp-branch guards. If the session is on a shared worktree (likely here — home-screen-figma-design-8d2b90 looks like another session’s tree), do not adopt that HEAD as thread.branch; at minimum stop asserting the old branch and its MR as current.
Leaving this open as an accepted bug.