mirror of
https://github.com/obra/superpowers.git
synced 2026-09-25 22:09:05 +00:00
Windows - Superpowers Plugin Freezes Terminal Keyboard Input in VSCode #404
Labels
No labels
antigravity
automated-issue-report
brainstorming
bug
claude-code
codex
copilot
cursor
documentation
duplicate
enhancement
factory
gemini-cli
good first issue
help wanted
hermes
hooks
invalid
kiro
needs-categorization
needs-rebase-to-dev-branch
needs-repro-case
new-harness
no-obvious-human-review
opencode
pi
plans
pr-template-rules-ignored
question
skill:brainstorming
skill:diagnosing-superpowers
skill:dispatching-parallel-agents
skill:executing-plans
skill:finishing-a-development-branch
skill:receiving-code-review
skill:requesting-code-review
skills
skill:subagent-driven-development
skill:systematic-debugging
skill:test-driven-development
skill:using-git-worktrees
skill:using-superpowers
skill:verification-before-completion
skill:writing-plans
skill:writing-skills
stale
subagents
tdd
trae
triage
upstream-bug
windows
wontfix
worktrees
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
skills/obra-superpowers#404
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This is my first ever issue/bug report so please ask me for any additional context or if I've broken any rules. TIA. I also don't know if it's considered bad form to report a bug for releases beyond stable (CC stable is v2.1.19).
Describe the bug
When superpowers 4.0.3 or 4.1.1 is enabled with Claude Code 2.1.29 or 2.1.30 in VSCode on Windows, keyboard input in the Claude Code panel becomes completely unresponsive. The cursor appears solid (not blinking), and no keystrokes register - including Ctrl+C and Escape. The same setup works fine in terminal.
To Reproduce
Steps to reproduce the behavior (Windows environment):
Expected behavior
Keyboard input should work normally - typing should appear in the input field, and shortcuts like Ctrl+C/Escape should function. The same setup continues to work fine in terminal, and I have nothing VSCode-specific when it comes to Claude.
Logs
N/A - Issue was diagnosed through isolation testing. Setting
disableAllHooks: truein~/.claude/settings.jsonconfirmed hooks were the cause; further testing isolated it to the superpowers SessionStart hook.Additional context
This fix worked for me locally: Add async: true to the SessionStart hook in
hooks/hooks.json:I had the exact same issue with a frozen terminal - worked fine outside of my project directory strangely enough. Isolated to Superpowers and working now with the async: true
Here's what Claude says:
Root cause: The session-start.sh hook runs synchronously by default. The escape_for_json function iterates character-by-character in pure bash (for (( i=0; i<${#input}; i++ ))), which is extremely slow on Windows Git Bash. This blocks the Ink TUI from entering raw mode for stdin.
Fix: Adding "async": true to the hook in hooks/hooks.json:
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/session-start.sh",
"async": true
}
Env: Windows 11, Claude Code 2.1.30, Git Bash, superpowers 4.1.1
Confirming: This is NOT VSCode-specific — it's a universal Windows issue
I hit the same freeze on Git Bash 5.2.37 (MSYS2) running Claude Code v2.1.30 directly in Windows Terminal — no VSCode involved. The CLI displays
SessionStart:startup hook errorand then becomes completely unresponsive. Keyboard input is dead, Ctrl+C doesn't work, requires force-kill.This also reproduces in plain Windows Terminal and PowerShell terminals (see #414 for additional confirmation). So the title may be slightly misleading — this affects all Windows terminals, not just the VSCode integrated terminal.
Root cause analysis
We investigated this in detail and filed anthropics/claude-code#22934 for the Claude Code side of the problem. Here's what we found:
The hook runner blocks the main event loop. When
session-start.shexecutes synchronously on Windows, it either fails (path issues, bash not in PATH) or runs extremely slowly (theescape_for_jsonfunction iterates character-by-character in pure bash — as @psybuild noted). Either way, the Ink TUI never enters raw mode for stdin, so keyboard input is dead.The
async: truefix works because it unblocks the event loop — the hook runs in the background while the TUI renders normally. This is a great local workaround.Compounding factor: Large accumulated
.jsonlsession files in~/.claude/projects/(370MB+ in our case) make the hang worse. Cleaning them helps:find ~/.claude/projects -name "*.jsonl" -size +10M -deleteWorkarounds (from least to most disruptive)
async: trueto the hook in~/.claude/plugins/cache/claude-plugins-official/superpowers/4.1.1/hooks/hooks.json(as OP suggested — confirmed working)"superpowers@claude-plugins-official": falsein~/.claude/settings.jsonRelated issues
CLAUDE_PLUGIN_ROOTpath issues on Windows