VCode home

Pin and mark tabs done

Agents: claude, codex, opencode · On: phone, desktop · beta

Pin a tab to keep it at the left of the strip. Mark one done to move it out of the strip into its project's Done list. VCode also moves a tab to Done by itself once it has sat idle for three days, its branch has merged, or its folder is gone. Neither stops the agent or touches the conversation.

Why you would use it

You have fifteen tabs open on a phone. The strip scrolls, the drawer is a long list, and the only way to shorten it used to be closing tabs you still wanted nearby. Each state answers one reason a tab is in the way:

Close is still there, and it is the archive: it stops the agent, the tab leaves every list but the resume screen, and Reopen brings it back (close-and-reopen-tabs). Done is the step before Close, so there is no separate Archive. Moving tabs between sections by dragging them is left out: on a phone the drag already reorders tabs.

How to use it

  1. Open the tab menu (#tab-menu) for a tab:
    • tap the ⋯ button (More for <tab>) on its row in the tab bar (#drawer) or in the Threads sheet (#sessions), or
    • on a computer, right-click the tab in the strip or its row in the Tabs column. A file tab's right-click menu has only Close.
  2. Pick one:
    • Pin (#tab-menu-pin), or Unpin on a pinned tab.
    • Done (#tab-menu-done), or Not done on a tab in Done.
    • Close (#tab-menu-close), as the cross does. On a tab that is working it reads Close and stop the turn, and picking it closes the tab at once.
  3. A toast says what happened, with Undo for five seconds. Undo puts the tab back the way it was.

The tab bar with the tab menu open on a row: Rename, Pin, Done and Close, each with an icon.

From the composer, on the tab you are in:

To bring a tab back early, open its project in the tab bar, open the Done list under the tabs, and tap the tab's row. It comes back to the strip and opens. Sending a done tab a message brings it back too, from any device.

To clear out a project's Done list, tap Close all on the Done heading. It asks first, then closes every tab in the list.

What you see

Options and settings

Option Default What it changes
Move finished tabs to Done (#tabs-auto-done), in the cog's Tabs group on Whether VCode moves quiet tabs to Done by itself

VCode moves a tab to Done by itself only when all of these hold:

Then any one of these moves it:

Reason Shown as
Nothing has happened in it for 3 days: no message, no finished turn idle 3 days
Its branch was merged into the default branch with a merge commit, or its pull request on GitHub merged after your last message (needs the gh CLI, signed in) branch merged
Its folder no longer exists, for example a worktree you removed after merging folder removed

Limits and known gaps