Bug: Command hooks in plugins freeze Claude Code on Windows (v2.1.34)
Description
Command hooks (type: "command") in plugins cause Claude Code to completely freeze on Windows. The UI renders but input is blocked — the user cannot type anything. This affects any command hook, including trivially simple ones like echo hello.
Environment
- Claude Code version: 2.1.34
- OS: Windows 10/11 (PowerShell)
- Subscription: Claude Max
- Model: Opus 4.6
Reproduction Steps
- Create a minimal plugin with a command hook:
.claude-plugin/plugin.json:
{
"name": "test-hook",
"version": "0.1.0",
"description": "Minimal hook test"
}
hooks/hooks.json:
{
"hooks": {
"SessionStart": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "echo hello",
"timeout": 5
}
]
}
]
}
}
- Run Claude Code with the plugin:
claude --plugin-dir /path/to/plugin
- Claude Code loads, shows the prompt, but input is completely frozen — cannot type anything.
Expected Behavior
The echo hello hook should execute within the 5-second timeout and Claude Code should accept input normally.
Actual Behavior
Claude Code UI renders (banner, prompt visible) but is permanently frozen. No input is accepted. Must kill the process with Ctrl+C.
Bisection
| Configuration | Result |
|--------------|--------|
| No plugin | Works |
| Plugin with { "hooks": {} } (empty) | Works |
| Plugin with echo hello SessionStart hook | Freezes |
| Plugin with Python script hook | Freezes |
Additional Context
- The freeze also occurs with other plugins that use command hooks (e.g.,
superpowersplugin) - The hook timeout does not appear to terminate the hung state
- This was working in Claude Code 2.1.19 — the regression is between 2.1.19 and 2.1.34
- Hooks in
~/.claude/settings.jsonare not tested (only plugin hooks via--plugin-dir) - The plugin in question: cc-discord-rpc — Discord Rich Presence for Claude Code
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗