Skip to content

StatusLine not executing in VS Code on Windows (2.1.34) #23994

Description

@Baouse

StatusLine Not Executing in Claude Code 2.1.34 on Windows (VS Code)

Summary

StatusLine is configured correctly in settings.json but the command is never executed. Debug logging confirms zero invocations despite proper configuration.

Environment

  • Claude Code Version: 2.1.34
  • OS: Windows 11
  • Terminal: VS Code integrated terminal (TERM_PROGRAM=vscode)
  • Shell: Git Bash (xterm-256color)
  • Node.js: v25.6.0 (available in PATH)

Configuration

Global Settings (~/.claude/settings.json)

{
  "permissions": {
    "defaultMode": "default"
  },
  "statusLine": {
    "type": "command",
    "command": "node C:\\Users\\Mina\\.claude\\statusline.cjs"
  },
  "autoUpdatesChannel": "latest",
  "theme": "dark",
  "model": "sonnet"
}

Project Settings (.claude/settings.local.json)

{
  "statusLine": {
    "type": "command",
    "command": "\"C:\\Program Files\\nodejs\\node.exe\" C:\\Users\\Mina\\.claude\\statusline-test.cjs"
  },
  "permissions": { ... }
}

Issue Details

Observed Behavior

  1. No status line visible - User sees nothing (not even a default status line)
  2. Command never executed - Debug logging added to the script shows zero invocations
  3. Script works when tested manually - Running the script via pipe produces correct output

Debug Evidence

Added debug logging to the statusline script:

const debugPath = path.join(os.tmpdir(), 'claude-statusline-debug.log');
fs.appendFileSync(debugPath, `[${new Date().toISOString()}] Script invoked\n`);

Result: Debug log file shows ZERO entries from Claude Code, only manual test invocations.

What We've Verified

✅ Settings files are valid JSON
disableAllHooks is NOT set
✅ Script outputs to stdout correctly
✅ Node.js is in PATH and accessible
✅ Script works when piped JSON manually:

echo '{"workspace":{...},"model":{...},"context_window":{...}}' | node statusline.cjs
# Output: 📁 ~/obs  🤖 Opus 4.6  ⌛ 2h 12m until reset at 02:00  🟢 ▱▱▱▱▱▱▱▱▱▱▱▱ 3%

✅ Tested multiple approaches:

  • Relative path: node .claude/statusline.cjs
  • Absolute path: node C:\\Users\\Mina\\.claude\\statusline.cjs
  • Full node.exe path: "C:\\Program Files\\nodejs\\node.exe" script.cjs
  • Minimal test script (outputs immediately without stdin)

✅ Tried both settings.json and settings.local.json at global and project levels

Expected Behavior

Claude Code should execute the statusLine command after each assistant message and display the output as a status line in the terminal.

Actual Behavior

Claude Code never executes the statusLine command. The script is never invoked, as confirmed by:

  1. No debug log entries from Claude Code
  2. No visible status line output
  3. User reports seeing "nothing"

Additional Context

Related Issues

Terminal Check

echo "TERM=$TERM"                    # xterm-256color
echo "TERM_PROGRAM=$TERM_PROGRAM"    # vscode
echo "WT_SESSION=$WT_SESSION"        # (empty - not Windows Terminal)

Running in VS Code's integrated terminal, which according to documentation should support statusLine.

Reproduction Steps

  1. Install Claude Code 2.1.34 on Windows
  2. Launch from VS Code integrated terminal
  3. Configure statusLine in ~/.claude/settings.json:
    {
      "statusLine": {
        "type": "command",
        "command": "node path/to/statusline.cjs"
      }
    }
  4. Create a minimal statusline script that logs invocations
  5. Start Claude Code session
  6. Observe: No status line appears, debug log shows no invocations

Questions

  1. Does statusLine work in VS Code integrated terminal on Windows?
  2. Are there additional requirements for statusLine to execute?
  3. Is there a way to enable verbose logging to see why statusLine isn't being invoked?
  4. Could this be related to how Claude Code detects the terminal type in VS Code?

Workaround Attempted

Tested with PowerShell-based statusLine (original approach before switching to Node.js) - same issue, never executed.


Note: This is a complete failure to invoke the statusLine command, not a rendering or output issue. The script itself works perfectly when tested manually.

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions