StatusLine not executing in VS Code on Windows (2.1.34)
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
- No status line visible - User sees nothing (not even a default status line)
- Command never executed - Debug logging added to the script shows zero invocations
- 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:
- No debug log entries from Claude Code
- No visible status line output
- User reports seeing "nothing"
Additional Context
Related Issues
- Issue #14125 reported similar Windows Terminal rendering problems, marked as resolved in January 2026
- However, this issue is different: the command isn't being executed at all, not just failing to render
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
- Install Claude Code 2.1.34 on Windows
- Launch from VS Code integrated terminal
- Configure statusLine in
~/.claude/settings.json:
``json``
{
"statusLine": {
"type": "command",
"command": "node path/to/statusline.cjs"
}
}
- Create a minimal statusline script that logs invocations
- Start Claude Code session
- Observe: No status line appears, debug log shows no invocations
Questions
- Does statusLine work in VS Code integrated terminal on Windows?
- Are there additional requirements for statusLine to execute?
- Is there a way to enable verbose logging to see why statusLine isn't being invoked?
- 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.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗