Claude WorkspacesManage workspace-aware Claude Code sessions across VS Code multi-root workspaces. Features
InstallInstall the stable version of Claude Workspaces from the VS Code Marketplace, or run:
To install or switch to the pre-release channel, use the Marketplace action or run:
Stable 0.8.1 restores the published 0.7.2 product snapshot. The incorrect GitHub
0.8.0 release and tag were withdrawn; its Marketplace publication is superseded
when 0.8.1 publishes. Later feature work remains on After updating, run Developer: Reload Window so the running extension host loads the new version. See the versioning policy for current channel versions, the release cadence, and source packaging commands. The extension is available only when VS Code has opened a saved
Feature tourChoose which workspace roots each Claude session may import.
Name your active sessions and resume saved conversations from the sidebar.
Work with Claude Code in the embedded terminal, using the selected root and its configured imports.
ConfigurationClaude Workspaces stores its configuration in VS Code's workspace-local extension
state; it never writes to the For Claude Code installations that support UUID-backed sessions, the same workspace-local extension state stores resumable-session metadata: the Claude session UUID, display name, original root identity, root label and path, creation time, and last-launch time. Claude Workspaces does not copy or store Claude's transcript contents.
Waiting-session notificationsNative waiting-session notifications are available only from a local Windows x64
extension host; remote extension hosts are an explicit no-op. A notification is
raised only when an unfocused VS Code window receives a In the live session tabs, a blue-ring working indicator means Claude is working; it remains visible while background subagents run after the parent response ends. It clears after the last subagent finishes unless the parent is still working. A genuine permission or input request takes precedence over background activity. A green dot means a completed response has not been viewed. Selecting that live tab in the visible panel clears the unread response dot but leaves the session waiting. Selected, starting, and closing styles remain independent from both activity indicators. Attention hooks attempt delivery up to three times on transient file I/O failures. If signal delivery still fails, Claude reports a delivery error; a lost completion signal can leave the working indicator visible until the session closes. Background-agent activity tracking requires Claude Code 2.1.287 or later and
an admitted completion reporter. Claude Workspaces adds its bundled reporter
with Older CLIs can still run ordinary sessions and supported input notifications.
When the reporter is unavailable, the extension warns and disables background
tracking. Safe mode, The Claude Workspaces panel tab badge counts every live session waiting for input, including responses that have already been viewed. It disappears when no live session is waiting. The toast names the workspace and managed session. Selecting it reveals the Claude Workspaces panel in the existing owner window and activates the correlated live session without opening another VS Code window. On Windows, the owning VS Code taskbar entry may highlight or flash; native notifications cannot guarantee programmatic foreground activation. Selecting a stale toast after its session or owner window closes is a no-op and does not open an empty window.
Commands and sessionsThe Claude Workspaces panel and Command Palette provide New Session, New in Folder, Close Session, Restart Fresh, Previous/Next Session, and Configure Workspace. Sessions are owned only by this extension: closing or deactivating the extension terminates its managed Claude processes without changing VS Code terminals or externally launched Claude processes. Saved conversations appear in the panel's separate Resume sessions list after their live process closes. Opening and closing a session without sending a prompt does not create a saved conversation, so it stays out of the list. Retry and Restart Fresh always resolve the current workspace configuration before launching. Run Claude Workspaces: Show Claude Workspaces from the Command Palette to reveal the panel and focus its Sessions view. The command has no default shortcut. To assign one, open Preferences: Open Keyboard Shortcuts, search for Show Claude Workspaces, and choose your preferred key combination. Right-click a session tab and choose Rename Session… to give that live
session a custom display name. Choose Close Session to close that specific live
session. The menu is also available with Choose a saved entry under Resume sessions to reopen it in its original workspace root. Before launching, Claude Workspaces verifies that the root is still present at the exact saved path and resolves the current executable, cross-root imports, and filesystem availability. A UUID already represented by a live managed session is hidden from the resume list and cannot be launched a second time. Each entry shows its full Claude session ID and a relative Last opened time beneath its name, so similarly named or older conversations remain distinguishable. The relative value refreshes while the panel stays open; hover the entry to see the exact launch time in your local timezone. Right-click an entry under Resume sessions and choose Forget Session
to remove its saved metadata. With the entry focused, Forget Session is also available from failed-resume notifications. If the saved root is missing or has changed, the notification also offers Start New and Configure Workspace…. If Claude rejects a stale session, it instead offers Start New and Open Logs. Dismissing either notification keeps the saved metadata. HTTP and HTTPS links in session output can be opened through VS Code with Ctrl+click on Windows/Linux or Cmd+click on macOS. A regular click remains available for terminal text selection. Use Configure Workspace… to select an optional default root and directed
cross-root imports. Reopening the command highlights the saved default root and
checks each saved import that is still part of the workspace, so you can adjust
the current configuration instead of rebuilding it. Cancelling any picker keeps
the previously saved configuration unchanged. A launch starts Claude in its
selected root and passes each enabled available import as a separate V1 limitationsV1 is session-oriented rather than a general terminal or a Claude conversation
client. It does not reconnect to a still-running process, adopt externally
launched Claude sessions, run outside a saved workspace, or provide
general-purpose terminal features. Resumption is available only when the
configured Claude executable advertises both Claude owns transcript storage, retention, and cleanup. Claude Workspaces neither inspects nor deletes those transcript files, so saved metadata can outlive the Claude transcript it identifies. See Claude Code's session documentation for the transcript lifecycle. Workspace-level Runtime requirements
Development prerequisites
Troubleshooting
Diagnostic loggingTo inspect extension diagnostics, open View: Output and select the
Claude Workspaces Output channel. Set The channel never logs Claude prompts, responses, terminal traffic, environment values, or sensitive carrier arguments. For an activity indicator problem, run Claude Workspaces: Capture Activity
Diagnostics from the Command Palette before reproducing it. The command opens
the Output channel and temporarily records activity events, hashed correlation
IDs, agent counts, and state changes, even when regular logging is off. Run it
again to stop. Capture stops automatically after five minutes or 256 events,
and on extension shutdown; it does not change your settings. Share only lines
marked DevelopmentSee CONTRIBUTING.md for setup, validation, pull request, and documentation guidance. PublishingPushing a New features integrate through a versioned pre-release branch. Stable
candidates promote approved work from that line to The repository must provide an Actions secret named To retry an existing tag without moving it, open Actions → Publish → Run workflow and enter the tag. The same validation and publication sequence runs against that immutable tag. |


