[BUG] Claude Code hangs and freezes on startup in WSL 2 starting with v1.0.57

Resolved 💬 3 comments Opened Oct 7, 2025 by NicholasGrundl Closed Oct 11, 2025

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?

I work on both windows (WSL2) and macOS at home. When switching back to my windows machine and trying to update claude code to the newest version (v2.0.x) it no longer worked and froze at the terminal stage before the TUI launched.

Environment
WSL 2: Ubuntu 22.04.5 LTS (jammy)
Terminal: bash
Node.js: v24.4.1 (via NVM)
npm: 11.4.2

What's happening
I work between two computers - macOS and Windows (WSL 2). When switching back to my windows machine and trying to update claude code to the newest version (v2.0.x) it broke completely. When i run claude in my desired project dir, I get a hanging cursor and it never lanuches the TUI.

I tested every version systematically to find where it breaks:

Versions tested:
Working in WSL:

  • v1.0.44 ✓
  • v1.0.46 ✓
  • v1.0.55 ✓
  • v1.0.56 ✓ (last working version)

Broken in WSL:

  • v1.0.57 - hangs with blinking cursor before UI loads, Ctrl+C works
  • v1.0.60 - hangs with blinking cursor before UI loads, Ctrl+C works
  • v1.0.65 - hangs with blinking cursor before UI loads, Ctrl+C works
  • v1.0.85 - UI loads then freezes, Ctrl+C doesn't work
  • v1.0.100 - UI loads then freezes, Ctrl+C doesn't work
  • v2.0.0 - hangs with blinking cursor before UI loads, Ctrl+C works
  • v2.0.10 - hangs with blinking cursor before UI loads, Ctrl+C works

What Should Happen?

Claude Code should start up normally like it does in v1.0.56 and enter the TUI welcome or continue view.

Error Messages/Logs

Debug log
Here's what shows up in ~/.claude/debug/latest:

[DEBUG] Found 0 plugins (0 enabled, 0 disabled)
[DEBUG] Creating shell snapshot for bash (/bin/bash)
[DEBUG] Looking for shell config file: /home/nicholasgrundl/.bashrc
[DEBUG] Snapshots directory: /home/nicholasgrundl/.claude/shell-snapshots
[DEBUG] Creating snapshot at: /home/nicholasgrundl/.claude/shell-snapshots/snapshot-bash-1759878905068-9hl6d3.sh
[DEBUG] Shell binary exists: true
[DEBUG] Execution timeout: 10000ms
[DEBUG] Writing to temp file: /home/nicholasgrundl/.claude/todos/7b378e21-fc6d-43d1-8950-53fdee351919-agent-7b378e21-fc6d-43d1-8950-53fdee351919.json.tmp.318025.1759878905071
[DEBUG] Temp file written successfully, size: 2 bytes
[DEBUG] Renaming /home/nicholasgrundl/.claude/todos/7b378e21-fc6d-43d1-8950-53fdee351919-agent-7b378e21-fc6d-43d1-8950-53fdee351919.json.tmp.318025.1759878905071 to /home/nicholasgrundl/.claude/todos/7b378e21-fc6d-43d1-8950-53fdee351919-agent-7b378e21-fc6d-43d1-8950-53fdee351919.json
[DEBUG] File /home/nicholasgrundl/.claude/todos/7b378e21-fc6d-43d1-8950-53fdee351919-agent-7b378e21-fc6d-43d1-8950-53fdee351919.json written atomically
[DEBUG] Registered 0 hooks from 0 plugins
[DEBUG] rg error (signal=undefined, code=ABORT_ERR, stderr: ), 0 results
[ERROR] AbortError: AbortError: The operation was aborted
    at abortChildProcess (node:child_process:758:27)
    at AbortSignal.onAbortListener (node:child_process:828:7)
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:827:20)
    at AbortSignal.dispatchEvent (node:internal/event_target:762:26)
    at runAbort (node:internal/abort_controller:488:10)
    at abortSignal (node:internal/abort_controller:459:3)
    at AbortController.abort (node:internal/abort_controller:507:5)
    at Timeout._onTimeout (file:///home/nicholasgrundl/.nvm/versions/node/v24.4.1/lib/node_modules/@anthropic-ai/claude-code/cli.js:3280:1163)
    at listOnTimeout (node:internal/timers:608:17)
    at process.processTimers (node:internal/timers:543:7)
[DEBUG] Loading skills from directories: managed=/etc/claude-code/.claude/skills, user=/home/nicholasgrundl/.claude/skills, project=/home/nicholasgrundl/projects/personalsite/.claude/skills
[DEBUG] Loaded 0 skills total (managed: 0, user: 0, project: 0)
[DEBUG] Total plugin commands loaded: 0
[DEBUG] Total plugin skills loaded: 0
[DEBUG] Ripgrep first use test: PASSED (mode=builtin, path=/home/nicholasgrundl/.nvm/versions/node/v24.4.1/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/x64-linux/rg)

Steps to Reproduce

  1. uninstall claude code:

npm uninstall -g @anthropic-ai/claude-code

  1. reinstall claude code version >1.0.56:

npm install -g @anthropic-ai/claude-code@1.0.57

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

1.0.56

Claude Code Version

1.0.56 (Claude Code)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

WSL (Windows Subsystem for Linux)

Additional Information

_No response_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗