Keyboard input not working in v2.1.30 (Windows)

Resolved 💬 22 comments Opened Feb 3, 2026 by FlashBack1234 Closed Mar 29, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Version: 2.1.30
OS: Windows
Terminals tested: Git CMD, PowerShell (multiple versions)

Issue: Keyboard input not accepted in Claude Code window.

Workaround: Downgrade to 2.1.28 resolves the issue.

What Should Happen?

It shall work fine with any version

Error Messages/Logs

Steps to Reproduce

  1. Install/upgrade to 2.1.30
  2. Launch claude
  3. Attempt to type - input not registered

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.28

Claude Code Version

2.1.30

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

_No response_

View original on GitHub ↗

22 Comments

github-actions[bot] · 5 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/8610
  2. https://github.com/anthropics/claude-code/issues/7727
  3. https://github.com/anthropics/claude-code/issues/7755

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

NatMan3000 · 5 months ago

Same for me.
Last working version 2.1.29.

asdffail · 5 months ago

I'm able to recreate in Windows Terminal and Tabby but seems to work with WezTerm. I then narrowed it down to SessionStart hooks. Removed the SessionStart hooks and it works.

RodGreen · 5 months ago

I had same issue but my hook was very simple, no errors just a message..

,
	"SessionStart": [
	  {
		"hooks": [
		  {
			"type": "command",
			"command": "echo [Reminder] Use chroma_search for code discovery, Task agents for plan phases"
		  }
		]
	  }
	]

~~That fixed it~~
Spoke too soon
Still crashes / hangs when trying to resume.

rodrigojuarez · 5 months ago

Same for me with v2.1.31

xiaosongz · 5 months ago

Cross-reference: Detailed root cause analysis in #22934

I filed #22934 with a detailed investigation of this same freeze bug, specifically triggered by the superpowers plugin's SessionStart hook on Windows. The analysis there may be useful for maintainers:

Key findings from #22934:

  1. Root cause: The hook runner appears to block the main event loop when a SessionStart hook errors or hangs, rather than gracefully recovering
  2. Compounding factor: Large accumulated .jsonl session files in ~/.claude/projects/ (370MB+) exacerbate the hang (related: #22041)
  3. Broader than superpowers: As @RodGreen confirmed above, even a simple echo hook can trigger the freeze — this is a Claude Code core issue, not plugin-specific

Workaround (no downgrade needed):

  • Remove/disable SessionStart hooks, OR
  • Disable the triggering plugin in ~/.claude/settings.json
  • Also clean up large session files: find ~/.claude/projects -name "*.jsonl" -size +10M -delete

Suggested fix direction (from #22934):

  1. Add a timeout for hook execution
  2. Graceful error recovery — never block the main event loop on hook failure
  3. Hook errors should warn, not freeze

Related issues for context:
| Issue | Description | Status |
|-------|-------------|--------|
| #21468 | SessionStart hook script never executes on Windows | OPEN |
| #22337 | Path handling strips backslashes in hook paths | OPEN |
| #21878 | Hook scripts fail on Windows (backslash paths) | OPEN |
| #22041 | Large session files cause CPU hang | CLOSED |
| #9758 | .sh hooks open in editor instead of executing on Windows | OPEN |

s070681 · 5 months ago

Confirmed this also affects the beads plugin (not just superpowers). Any plugin with SessionStart hooks triggers the freeze.

Workaround: Disable all plugins that have SessionStart hooks in ~/.claude/settings.json:

"enabledPlugins": {
  "superpowers@claude-plugins-official": false,
  "beads@beads-marketplace": false
}

Keyboard input works after restart with these disabled. The underlying issue appears to be that SessionStart hooks are broken in 2.1.30 on Windows regardless of what the hook does.

Boysiee · 5 months ago

Hit enter when you first open claude and it unlocks the keyboard. For some reason it's frozen on startup but pressing enter fixes it. Same thing happens to me.

afinzel · 5 months ago

Hope this info helps for me I had:

14 - "hooks": {
15 - "SessionStart": [
16 - {
17 - "hooks": [
18 - {
19 - "type": "command",
20 - "command": "node \"C:/Users/afinz/.claude/hooks/gsd-check-update.js\""
21 - }
22 - ]
23 - }
24 - ]
25 - }

Running node \"C:/Users/afinz/.claude/hooks/gsd-check-update.js\" causes an exception.

node:internal/modules/cjs/loader:1386
throw err;
^

Error: Cannot find module 'C:\C:\Users\afinz\.claude\hooks\gsd-check-update.js'
at Function._resolveFilename (node:internal/modules/cjs/loader:1383:15)
at defaultResolveImpl (node:internal/modules/cjs/loader:1025:19)
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1030:22)
at Function._load (node:internal/modules/cjs/loader:1192:37)
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:237:24)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
at node:internal/main/run_main_module:36:49 {
code: 'MODULE_NOT_FOUND',
requireStack

So I assume this is the issue of the hanging.

xlentalexgustafsson · 5 months ago
Hit enter when you first open claude and it unlocks the keyboard. For some reason it's frozen on startup but pressing enter fixes it. Same thing happens to me.

This absolutely works! Thank you!

omriravid · 5 months ago

I faced the same issue- keyboard input wasn't recognized. Then I typed "Shift+Insert" and it bypassed the issue.

m4ssyl · 5 months ago

Hello,

For plugins hook issue on windows,
you can apply this temporary fix locally by updating the command in hooks.json to convert the path using cygpath for each affected plugin's hooks. it solve the issue temporary by providing the right path format to Git Bash. in wait for an official fix to be released.

It works fine on windows with git bash (tested with superpowers and ralph-loop plugins) :

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume|clear|compact",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'FIXED_ROOT=$(cygpath -u \"${CLAUDE_PLUGIN_ROOT}\" 2>/dev/null || echo \"${CLAUDE_PLUGIN_ROOT}\"); \"$FIXED_ROOT/hooks/session-start.sh\"'"
          }
        ]
      }
    ]
  }
}
joshuawheelock · 5 months ago

Hitting enter will bypass any configured SessionStart hooks. That's not a fix.

Do you have a SessionStart hook configured?

I started experiencing the same thing. I have a SessionStart hook that runs a command which renders output to the terminal. I ran claude in --debug mode, and saw there was an error parsing the json output of the command.

Removing the hook configuration fixed claude. So, I started debugging the command (it's my cli tool that is configured to be called).

I wasn't getting anywhere. So I ran a test. I configured my hook to fire an echo command.

"SessionStart": [ { "matcher": "startup", "hooks": [ { "type": "command", "command": "echo {}" } ] } ]

I fired claude up again and it still froze.

In conclude the same as the others, this isn't a bug with my cli (or beads). Its a bug with Claude Code and most definitely a bug with the SessionStart hook protocol.

FlashBack1234 · 5 months ago
Hitting enter will bypass any configured SessionStart hooks. That's not a fix.

...

Removing the hook configuration fixed claude. So, I started debugging the command (it's my cli tool that is configured to be called).

...

In conclude the same as the others, this isn't a bug with my cli (or beads). Its a bug with Claude Code and most definitely a bug with the SessionStart hook protocol.

I found I had GSD hook for update, not significant, removed it and now works fine. Workaround, but works

joshuawheelock · 5 months ago

Fixed as of 2.1.36

dalito · 5 months ago

For me the issue is still the same with 2.1.37. The presence of any simple SessionStart hook blocks keyboard access.

joshuawheelock · 5 months ago
For me the issue is still the same with 2.1.37. The presence of any simple SessionStart hook blocks keyboard access.

Yup. I can confirm. That its reintroduced from 2.1.36 to 2.1.37.

I literally just had one Claude 2.1.36 instance open and it worked fine. Closed the session. Fired up Claude again. It had updated. Frozen.

cboos · 5 months ago

Ditto 2.1.37. Pasting anything unblocks it (most of the time). Fixed for me at 2.1.39.

momoluccy · 5 months ago

Windows 下 /skills 命令的方向键无法选择,其他按键也无反应,Claude Code v2.1.7, Windows
Title: [Windows] /skills command - Arrow keys and keyboard navigation not working in selection menu

Description:

When running /skills command on Windows, the interactive selection menu displays correctly but arrow keys (↑↓) and other keyboard inputs have no response. Cannot select skills from the list.

Environment:

  • OS: Windows 10/11 (Version 10.0.26200.7623)
  • Claude Code Version: 2.1.7
  • Terminal tested: PowerShell, Windows Terminal, Git Bash, CMD - all have same issue

Steps to Reproduce:

  1. Open Claude Code CLI on Windows
  2. Type /skills and press Enter
  3. A selection menu appears with skill list
  4. Press arrow keys (↑↓) to navigate
  5. No response - cursor doesn't move, selection doesn't change

Expected Behavior:
Arrow keys should navigate through the skill list, allowing selection with Enter

Actual Behavior:
No keyboard input is registered in the selection menu. Only way to use skills is by typing full skill name directly (e.g., /prd-doc-writer)

Screenshots:
[Screenshot of the non-responsive selection menu]

Workaround:
Type skill name directly instead of using selection menu:

  • /prd-doc-writer
  • /writing-assistant
  • etc.
scouzi1966 · 4 months ago

Same for me today on MacOs. Very annoying. Enter sends a predictive command I don't want to do.

github-actions[bot] · 3 months ago

Closing for now — inactive for too long. Please open a new issue if this is still relevant.

github-actions[bot] · 3 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.