Preflight Checklist
What's Wrong?
When Claude Code is launched with an initial prompt argument (claude "any prompt"), the terminal input freezes — the user cannot type until pressing Enter to "unstick" it. Launching claude without arguments works fine.
Trigger: Passing a CLI prompt argument
claude "any prompt" → FREEZES (must press Enter to unstick)
claude → WORKS (always)
This is a race condition that triggers more reliably in directories with heavier project context (CLAUDE.md files, .claude/ settings, git repos). In any project directory it freezes 100% of the time. In minimal directories it can occasionally succeed.
What Should Happen?
After processing the initial prompt argument, keyboard input should work immediately without needing to press Enter to activate the input field.
Error Messages/Logs
No error messages — the hook and prompt processing complete successfully.
Debug logs show normal execution; the issue is in stdin/readline state after processing.
Steps to Reproduce
- Open any terminal on Windows (PowerShell, Git Bash, cmd)
- Navigate to any project directory with a CLAUDE.md file
- Run
claude "hello world"
- Wait for Claude to respond to the initial prompt
- Try to type — nothing appears in the input field
- Press Enter — keyboard input now works normally
Minimal reproduction (fresh terminal, no hooks/plugins needed):
cd <any-project-directory>
claude "a"
# Stdin is frozen — press Enter to unstick
What's NOT the cause (ruled out with 18+ tests)
| Suspected Cause |
How Ruled Out |
| SessionStart hooks |
Disabled all hooks — freeze persists with claude "prompt" |
| Any hooks/plugins/statusLine |
Emptied all hooks.json, disabled plugins — freeze persists |
| Console mode corruption |
Win32 GetConsoleMode/SetConsoleMode save/restore — freeze persists |
| Console input buffer |
FlushConsoleInputBuffer — freeze persists |
| PowerShell -Command mode |
Freeze happens with manually typed commands too |
| Terminal emulator |
Reproduces in Windows Terminal, standalone PowerShell |
| Interactive input before claude |
Red herring — always co-occurred with prompt argument |
What DOES work (no freeze)
| Command |
Result |
claude (no args) |
Works — always |
claude --resume |
Works |
claude -c |
Works |
claude --verbose |
Works |
Non-prompt flags follow a different code path and don't trigger the race condition.
Claude Model
Claude Opus 4
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.30
Claude Code Version
2.1.34 (Claude Code)
Platform
Claude Max (Pro/Team subscription)
Operating System
Microsoft Windows 11 Pro (10.0.26200)
Terminal/Shell
Windows Terminal 1.23.20211.0 / PowerShell 5.1.26100.7705
Additional Information
Node.js version: v24.11.1
Related Issues (all closed as NOT_PLANNED):
Likely root cause: Race condition between Node.js stdin/readline initialization and initial prompt processing on Windows. When claude processes a CLI prompt argument, stdin setup doesn't complete correctly before entering interactive mode.
Workaround: Always launch claude without prompt arguments. Type the initial prompt interactively after claude starts.
Preflight Checklist
What's Wrong?
When Claude Code is launched with an initial prompt argument (
claude "any prompt"), the terminal input freezes — the user cannot type until pressing Enter to "unstick" it. Launchingclaudewithout arguments works fine.Trigger: Passing a CLI prompt argument
This is a race condition that triggers more reliably in directories with heavier project context (CLAUDE.md files, .claude/ settings, git repos). In any project directory it freezes 100% of the time. In minimal directories it can occasionally succeed.
What Should Happen?
After processing the initial prompt argument, keyboard input should work immediately without needing to press Enter to activate the input field.
Error Messages/Logs
Steps to Reproduce
claude "hello world"Minimal reproduction (fresh terminal, no hooks/plugins needed):
What's NOT the cause (ruled out with 18+ tests)
claude "prompt"What DOES work (no freeze)
claude(no args)claude --resumeclaude -cclaude --verboseNon-prompt flags follow a different code path and don't trigger the race condition.
Claude Model
Claude Opus 4
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.30
Claude Code Version
2.1.34 (Claude Code)
Platform
Claude Max (Pro/Team subscription)
Operating System
Microsoft Windows 11 Pro (10.0.26200)
Terminal/Shell
Windows Terminal 1.23.20211.0 / PowerShell 5.1.26100.7705
Additional Information
Node.js version: v24.11.1
Related Issues (all closed as NOT_PLANNED):
Likely root cause: Race condition between Node.js stdin/readline initialization and initial prompt processing on Windows. When claude processes a CLI prompt argument, stdin setup doesn't complete correctly before entering interactive mode.
Workaround: Always launch
claudewithout prompt arguments. Type the initial prompt interactively after claude starts.