What happened After auto-updating to v2.1.53 , the Bash tool is completely broken on Windows. Every single command — echo “hello” , ls , git status , PowerShell, anything — fails immediately with: EINVAL: invalid argument, open ‘C:\Users{user}\AppData\Local\Temp\claude{workspace}\tasks{random-id}.output’ The error occurs before the command even executes. Claude Code tries to create a .output file for task results and fails at the fs.open() call. What still works Read, Write, Edit, Glob, Grep, MCP servers, and Task agents all work fine. Only the Bash tool is affected, but since most workflows depend heavily on it (git, build tools, test runners, etc.), this is effectively a showstopper. Diagnosis I verified the temp directory exists and is writable — I can create files there with the Write tool. The issue is specifically in how the Bash tool opens files (likely fs.openSync(path, ‘a’) with flags incompatible with MSYS2/Git Bash on Windows). The v2.1.53 changelog mentions “BashTool now skips login shell (-l flag) by default when a shell snapshot is available”, which appears to have reintroduced the stdio file descriptor regression from v2.1.45 (which was fixed in v2.1.47). Environment Windows 10 Pro (10.0.19045) Claude Code v2.1.53 (auto-updated) Shell: bash (Git Bash / MSYS2) Node.js via npm global install Workaround Downgrade to v2.1.52: bash npm install -g @anthropic-ai/claude-code@2.1.52 Then disable auto-updates in ~/.claude/settings.json : json { “env”: { “DISABLE_AUTOUPDATER”: “1” } } Related GitHub issues #28348 — Bash tool EINVAL on Windows (v2.1.53) #28343 — stdio fd regression root cause #21915 — Bash tool produces no output on Windows #26505 — v2.1.45 regression (fixed in v2.1.47, reintroduced in v2.1.53) Heads up in case anyone else is pulling their hair out today wondering why nothing works after an auto-update. submitted by /u/jordicor
Originally posted by u/jordicor on r/ClaudeCode
