Core CLI issues on WSL
Issues the maintainers labelled both platform:wsl and area:core.
101 issues · 23 open · 78 resolved (77%) · first seen Jan 17, 2026
Is this getting better or worse?
This class of problem is converging. 28 new reports in the last 90 days vs 47 in the 90 before — -40%. The open backlog peaked at 23 in 2026-10 and sits at 23 today.
Derived by counting each matching issue from its creation date until it closed. First-party
computation over the anthropics/claude-code tracker — the trend is not published
anywhere upstream.
Which builds report this
74 of these reports name the Claude Code build they were running, spanning 57 releases. Heaviest reporters:
- Claude Code v2.1.118
- Claude Code v2.1.201
- Claude Code v2.1.198
- Claude Code v2.1.158
- Claude Code v2.1.92
- Claude Code v2.1.296
- Claude Code v2.1.283
- Claude Code v2.1.210
Report volume, not a defect count: an issue can mention a build without that build having caused the failure. Versions come from the version string in the bug-report template, matched against real published tags.
Do these get fixed?
Median time to close is 33 days across 78 closures. Of the 78 closures with a recorded reason, 24% were closed as completed and 59 as not-planned or duplicate. The most recent completed fix landed in 2026-10.
Workarounds reported by the community
27 of these issues post a workaround someone says worked. The highest-engagement ones:
- Silent U+FFFD corruption in CJK model output due to TextDecoder missing `{ stream: true }` in SSE line decoder
- …lity of hitting a chunk boundary mid-character much higher. Workaround PostToolUse hook that detects U+FFFD after every Write/Edit and blocks with an error message: Configure in : This detects corruption after the fact a…
Found in the description of #43746 · resolved - Auto mode's Bash-first steering reverses 2.1.21 and 2.1.31, which shipped the opposite as a fix
- …annoying, instead of diffs I only see this: Thanks for the workaround, I will try it.
Found in the thread of #89731 · still open - Persistent 400 'thinking blocks in the latest assistant message cannot be modified' — interleaved thinking persisted with empty text + signature bricks sessions
- …xt while keeping the signature is the broken middle ground. Workaround (no config change, no loss of thinking) Fully exit the session, then remove only the interior thinking blocks from the JSONL (keep the legitimate lea…
Found in the description of #63277 · resolved - [Bug] One transient advisor failure permanently latches the tool off for the whole session; distinct error causes flattened to generic "unavailable"
- …n the advisor is to latch off early in the session. Current workarounds are restarting the session or wiring an external review fallback. Suggested fix Treat / / -class results as retryable (clear the latch on next call…
Found in the description of #67411 · resolved - Claude Code degrades severely after ~6 hours: autonomous destructive actions, ignores instructions, corrupts data
- …e - User has documented 82 lessons learned (essentially bug workarounds) across projects What I'd Expect 1. Self-awareness of degradation : Claude Code should detect when context is getting large and warn the user ("Sess…
Found in the description of #32963 · resolved
Excerpts are quoted from the linked issue so you can judge relevance before opening it. Threads that only ask for a workaround, or report that there is none, are excluded. These are community suggestions, not official guidance from Anthropic — read the full thread before applying one.
Matching issues 1–100
Ranked by community engagement (reactions weighted over comments).
- [Bug] Auto mode system prompt causes /rewind to silently fail on Bash-edited files
- Silent U+FFFD corruption in CJK model output due to TextDecoder missing `{ stream: true }` in SSE line decoder
- [BUG] Plan Mode (Opus Plan): Claude executes file edits instead of only planning when iterating on the plan
- [BUG] Claude Code hanging on on thinking for prolonged periods of time with no response after thinking
- [BUG] Bun panic: invalid enum value on Windows win11_dt + WSL reg.exe ENOEXEC error
- Auto mode's Bash-first steering reverses 2.1.21 and 2.1.31, which shipped the opposite as a fix
- Persistent 400 'thinking blocks in the latest assistant message cannot be modified' — interleaved thinking persisted with empty text + signature bricks sessions
- Context hit 1M token limit with no auto-compaction and no recovery path
- [Bug] One transient advisor failure permanently latches the tool off for the whole session; distinct error causes flattened to generic "unavailable"
- [BUG] Interactive sessions write the 5-minute prompt cache from session start, while `claude -p` on the same account writes 1-hour (2.1.296, Team seat, survives `/login`)
- Claude Code degrades severely after ~6 hours: autonomous destructive actions, ignores instructions, corrupts data
- [BUG] WSL2: session freezes every ~1s for first 30s on startup — powershell.exe spawned 38 times to resolve USERPROFILE
- [BUG] WSL2: Claude Code 2.1.118 crashes on startup - ENOEXEC when spawning reg.exe
- [BUG] 2.1.169: interactive sessions write no JSONL transcript (only ai-title stub) — reproduced on WSL2 + macOS; breaks --resume/history
- [BUG] Harness' automatic summarization hid all relevant details from response
- [BUG] Context usage percentage computed against 200K while session actually runs with 1M context ([1m] model variant)
- [BUG] Inconsistent Context Window Between CLI and VSCode plugin
- [BUG] Child/nested claude processes orphan on /exit in WSL systemd environments, triggering cross-process GUI freezes via vmmem CPU spikes
- [MODEL] Claude loses user-identity + role anchors from memory after summary/resume
- [BUG] Regression in 2.1.259: managed-settings discovery on WSL fails fatally when /mnt/c is inaccessible (works in 2.1.258)
- Model fabricated a fake user-injection (harness template) inside its own assistant turn and acted on it
- [Bug] HTTP 529 overloaded_error is rendered as "Rate limited" and hard-fails parallel sessions/subagents (no backoff, not logged to errors)
- [BUG] /context shows 76% header but Messages category shows 138.7% — "Context limit reached" on resume of session within stated free space
- [BUG] "Reset to default" on invalid settings.json overwrites the file without creating a backup
- [BUG] Oversized-image 400 error triggers a retry loop that invalidates prompt cache and inflates cost ~35×
- /resume loses sessions in containers due to PID-keyed session index
- `--resume` can't find recent sessions — sessions-index.json not created/updated since January
- [BUG] Skill invocations persist through context compaction and are re-executed as new requests
- [BUG] --continue resumes from wrong point after parallel Agent execution
- [BUG] Claude Code segfaults on startup when Anthropic API is unreachable (should fail gracefully)
- Debug log spam: repeated 'Broken symlink or missing file' for managed-settings.json
- Multiple concurrent CLI instances corrupt thinking blocks even from different directories
- Feature: run `claude rc` as a background daemon (no open terminal, auto-restart on reboot, start/status/stop control)
- [BUG] Async sub-agent completion can rebuild warm prompt cache, quickly burning usage limits in long-running sessions
- [BUG] claude code harness sent "data has changed" system reminder with 10-days old date, claude code accepted it
- Session resume silently truncates model context at null-byte padding from interrupted append
- [BUG] Race conditions in teamMemorySync watcher: shutdown may miss pending pushes or leak timers
- Sonnet loses conversational tone after context compaction and ignores user requests to adjust
- [BUG] V8 JavaScript engine crash inside the Claude Code CLI binary
- LSP server manager initializes before plugins register their servers (race condition)
- [BUG] "Error compacting conversation" causes Session Freeze (cannot save work or context) #22729
- Prompt intermittently sent doubled (exact 2x conversation prefix, cache_read=2.00x prev) since v2.1.209 — hidden request burns quota, pins context meter at 100%
- [Bug] advisor_tool_result orphaned when /goal (Stop-hook) notice is injected mid-advisor-roundtrip → permanent API 400
- [BUG] CronCreate: lacks predicate-gated execution and context isolation, leading to large unintended costs on repeated trivial checks
- Intermittent malformed tool calls: emitted as plain text instead of structured tool_use, then cascades via retry
- [BUG] Startup blocks on working-tree stat — first response delayed minutes on WSL2 /mnt/ with medium/large repos
- [BUG] ENOEXEC error when running Claude Code on WSL2 (Bun v1.3.13 regression)
- [BUG] Bun standalone crashes with ENOEXEC posix_spawn reg.exe on WSL2
- Multi-byte UTF-8 characters corrupted in Write tool and Bash tool output
- [BUG] Session name lost after resume - name stored only in PID-keyed file, not propagated to new process
- [BUG] Claude Code (Windows) fails under enterprise SSL inspection — ignores system & custom CA trust
- [BUG] Claude keeps ignoring my gpg signing rules
- [BUG] Claude Doesn't Reliably Follow Multi-Step Instructions in CLAUDE.md #24761
- [BUG] Claude Code Ignores New Requests and Summarizes Previous Context Instead
- Completed background-task notification is appended to the session but never triggers an assistant turn; session idles until user input
- Session becomes unreachable ("No conversation found") after git worktree remove deletes its own working directory
- [BUG] CronCreate recurring job fires correctly once, then re-fires every 12-37s (regression of #49198 on v2.1.198)
- Subagent terminated mid-task (budget/context) is reported to parent as "completed" — silent truncation
- [Bug] Auto-compact fails to trigger at high token usage after context reduction
- [BUG] Interactive turns silently no-op (0s, 0 tokens, no /v1/messages request) on a Claude Team seat — --print works, no error shown
- [BUG] Model responded to a user message that does not exist in the session JSONL ("write a letter to the next version of you" injected mid-session)
- [Bug] Cross-model session resumption ignores target model budget, reports misleading spend limit error
- [Bug] Tool-call parser rejects indented XML tags with vague "malformed" error
- Auto-compact ignores CLAUDE_AUTOCOMPACT_PCT_OVERRIDE on 1M-context Opus — no compaction at 52% (522k) with override=40 [v2.1.156]
- settings.json partial rewrite strips statusLine, enabledPlugins, hooks mid-session
- [BUG] WSL DrvFs case-fold produces silent ~/.claude/projects/ fragmentation; canonicalization fix needs migration step or existing users lose /resume continuity
- C:/Program Files/Git/quit prints session ID for a session file that was never written (WSL + Windows path interop)
- effortLevel setting in settings.json not applied on session start
- Auto-compact not triggering at CLAUDE_AUTOCOMPACT_PCT_OVERRIDE threshold
- Long multi-phase sessions lose all context after sleep/Windows Update
- Opus 4.6/4.7 context window incorrectly detected as 200K instead of 1M
- [BUG] High token usage: schema validation error loads massive JSON into context and consume about 26k tokens
- [BUG] Claude Code hangs when accessing large session files (>50MB) #21022
- Process exits with code 1 mid-session at ~59% context (not saturation)
- First session in a new folder does not load AGENTS.md (2.1.296)
- [BUG] Can't start Claude Code because of EACCES: permission denied, scandir '/mnt/c/Program Files/ClaudeCode/managed-settings.d'
- [BUG] A pending interactive prompt is lost on disconnect or reconnect (local session)
- Cross-session inbox goes permanently deaf when the /tmp/cc-socks-<uid> fallback directory is removed (systemd-tmpfiles boot sweep race)
- WSL2/WSLg: cross-session messaging silently disabled — XDG_RUNTIME_DIR (/mnt/wslg/runtime-dir) is 0777 so the inbox socket dir vet refuses to bind
- [BUG] "Prompt is too long" in a new session when another session has an open plan
- [BUG] Auto-compact preTokens values vary across sessions on the same model/context
- Claude Code CLI reached ~14.6 GiB RSS and triggered a host-wide OOM kill
- [BUG] claude_code.pull_request.count matches MCP tool names, not pull requests — misses tools that put the verb in an argument (follow-up to #45776)
- WSL bridged sessions stop after ~15 min idle and are not relaunched — session_keepalive_interval_ms is 0 while the client default is 120000
- [Bug] Auto-compact window not updated after mid-session model switch
- Feature: let `claude rc` expose all subfolders of a parent directory as selectable remote sessions
- Phantom user message: model context diverged from persisted transcript — model acted on an instruction that was never given
- Subagent misidentifies ephemeral auto-mode <system-reminder> as a prompt injection in Bash tool output
- [BUG] Idle compaction was enabled remotely by feature flag with no notice or opt-in
- [WSL] Every Claude Code process spawns `reg.exe` twice via WSL interop to read managed-settings policy
- [BUG] AskUserQuestion still auto-continues after 200s with askUserQuestionTimeout "never": CLAUDE_AFK_TIMEOUT_MS=200000 appears in process env (follow-up to #78125)
- Worktree guard fences all of /tmp when /tmp holds any `.git` entry (empty dir accepted as a repo root; resumed background sessions anchor under /tmp)
- [BUG] Warm 1h prompt cache fully missed (cache_read_input_tokens = 0, 634k tokens re-written) 1.6 min after the previous request, mid tool loop — v2.1.288, Opus 5.5
- [BUG] Trust prompt reappears on every launch, but only for the home directory
- [BUG]
- [BUG] Context prune can leave conversation in unrecoverable 400 loop
- settings.json is written with an unlocked, non-atomic read-modify-write: concurrent sessions tear it ("Settings file failed to parse") and silently drop each other's keys (2.1.258, with repro)
- [BUG] Startup scan recurses into node_modules despite .gitignore, causing multi-minute hang on WSL2 /mnt/c projects
- [BUG] Background Bash waiter completes but its notification never re-invokes the session; session idles until user input
- v2.1.201: turn/message desync with background agents — assistant turn starts before queued message delivery; queued user message silently removed