Skip to content
| Marketplace
Sign in
Visual Studio Code>AI>Claude Status in Window TitleNew to Visual Studio Code? Get it now.
Claude Status in Window Title

Claude Status in Window Title

Igor Savchuk

|
3 installs
| (1) | Free
Adds a ${claudeStatus} variable for window.title showing what Claude Code is doing in this workspace.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Claude Status in Window Title

Shows what Claude Code is doing in this workspace, directly in the VS Code window title — so you can see from the Dock, window switcher, or a background window whether Claude is still working, done, or waiting for your input.

Adds a ${claudeStatus} variable for the window.title setting (plus an optional status bar item).

How it works

Claude Code ──claude-vscode-status plugin (hooks)──▶ ~/.claude/vscode-claude-status/<session_id>.json
                                        │
                       extension watches the directory,
                       matches sessions to this window by cwd
                                        │
                                        ▼
             setContext ─▶ ${claudeStatus} in window.title + status bar

The Claude Code side is handled by the companion claude-vscode-status plugin: its hooks (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Notification, Stop, SessionEnd) run a dependency-free POSIX shell script that writes one status file per Claude session; SessionEnd deletes the file. This extension watches that directory, picks the sessions whose cwd overlaps this window's workspace folders, and exposes the aggregated status through a window title variable (VS Code 1.93+).

Statuses: working (processing a prompt / running tools), attention (waiting for permission or input), idle (session open, turn finished).

Setup

  1. Install this extension (VS Code Marketplace, or grab the .vsix from Releases and use “Extensions: Install from VSIX…”).

  2. Install the Claude Code plugin. Inside a claude session:

    /plugin marketplace add trollfred/claude-vscode-status
    /plugin install claude-vscode-status@trollfred
    

    Installing at user scope enables it for all projects; nothing is written into any repo.

  3. Add the variable to your title in your user settings:

    "window.title": "${dirty}${activeEditorShort}${separator}${rootName}${separator}${claudeStatus}"
    
  4. Start a new Claude Code session in a terminal inside the workspace — hooks are read at session start, so already-running sessions won't report.

Settings

Setting Default Description
claudeStatus.format long emoji → “✳”, short → “✳ working”, long → “✳ Claude working”
claudeStatus.emoji.working / .attention / .idle ✳ / ⚠︎ / ✓ Emoji per status
claudeStatus.text.working / .attention / .idle working / needs you / idle Status word per status (short/long formats)
claudeStatus.showStatusBarItem false Also show the status in the status bar
claudeStatus.staleHours 12 Delete session files older than this (crash cleanup)
claudeStatus.statusDir ~/.claude/vscode-claude-status Where the plugin's hooks write status files

Notes & limitations

  • Requires VS Code 1.93+ for the ${claudeStatus} title variable (registerWindowTitleVariable). On older versions/forks without it, only the status bar item works.
  • If several matching sessions exist, the highest-priority status wins (attention > working > idle), with a count suffix like (2) when several sessions share it. Hover the status bar item to see each session.
  • A session's cwd matches a window if either contains the other, so a Claude session at a monorepo root lights up windows opened on its packages.
  • If Claude crashes without SessionEnd, its file lingers until the staleHours sweep; the last written status is usually idle (from Stop), so this is rarely noticeable.
  • When ${claudeStatus} is empty (no sessions), any separator you placed before it stays in the title. If that bothers you, bake separators into the label settings instead.

Development

  • npm install, then F5 to launch an Extension Development Host (the “Run Extension (test project)” launch config opens a sandbox folder).
  • For a quick plugin test without installing it: claude --plugin-dir /path/to/claude-vscode-status.
  • npm run package builds the .vsix; pushing a v* tag builds a GitHub Release with the .vsix attached, and publishes to the Marketplace when the VSCE_PAT repo secret is set (Azure DevOps PAT, scope Marketplace → Manage).
  • Local publish alternative: npx vsce publish -p <PAT>.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft