Hooks issues on Windows — page 3
Issues the maintainers labelled both platform:windows and area:hooks.
242 issues · 67 open · 175 resolved (72%) · first seen Jan 7, 2026
Is this getting better or worse?
This class of problem is converging. 97 new reports in the last 90 days vs 134 in the 90 before — -28%. The open backlog peaked at 67 in 2026-08 and sits at 67 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
146 of these reports name the Claude Code build they were running, spanning 83 releases. Heaviest reporters:
- Claude Code v2.1.207
- Claude Code v2.1.143
- Claude Code v2.1.211
- Claude Code v2.1.92
- Claude Code v2.1.114
- Claude Code v2.1.237
- Claude Code v2.1.229
- Claude Code v2.1.215
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 32 days across 175 closures. Of the 175 closures with a recorded reason, 27% were closed as completed and 128 as not-planned or duplicate. The most recent completed fix landed in 2026-08.
Workarounds reported by the community
96 of these issues post a workaround someone says worked. The highest-engagement ones:
- [FEATURE] Expose pasted image data to hooks and plugins
- …that plugins/skills can call: Alternative Solutions Current workarounds all have significant limitations: Asking users to provide file paths instead of pasting defeats the purpose of the paste feature and degrades UX. Us…
Found in the description of #16592 · still open - [BUG] SessionStart hooks break stdin on Windows Terminal
- …s valid : JSON is correctly parsed, no errors in processing Workaround - Use vscode plugin - Use WezTerm instead of Windows Terminal when working with projects that have SessionStart hooks, somewhat working but still som…
Found in the description of #23083 · resolved - [Windows] Visible console window flashes on every tool use in v2.1.143
- …es for hook execution on Windows. Alternatively, use with . Workaround Rolling back to v2.1.123 eliminates the issue, but loses subsequent security and feature improvements.
Found in the description of #61051 · still open - [BUG] Skill subagent inherits parent's 1M-context tier but not extra-usage entitlement
- …log warning instead of failing the subagent. Today the only workaround is to remove the directive entirely (subagent inherits parent + parent's already-paid extra-usage), which defeats the cost-saving intent of declaring…
Found in the description of #57249 · resolved - [BUG] PermissionDecision in PreToolUse is ignored in latest VS Code Extension
- …class of bug as 37210 — is ignored for certain tool types. Workaround using chmod defense-in-depth: For the standard destructive command hooks: — 8 hooks that use exit code 2 (which does work reliably for Bash tool bloc…
Found in the thread of #36286 · 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 201–242
Ranked by community engagement (reactions weighted over comments).
- [Windows] Plugin hooks' commandWindows field silently ignored - forces Git Bash, causes MSYS2 crash (errno 1 add_item)
- [BUG] Hooks with `shell: "powershell"` spawn `pwsh` with no `powershell.exe` fallback, so hooks silently never run on a stock Windows box
- asyncRewake blocks session startup instead of running in background (docs say "Implies async") — 2.1.246
- Bash tool denies any command containing $VAR or $(...) with misleading git-push hook message
- PreToolUse hook "ask" permissionDecision has no blocking effect in permission_mode: "auto"
- PreToolUse additionalContext is ephemeral (single-turn); permissionDecision deny reason persists - findings and a working delivery pattern
- [BUG]
- [BUG] SessionStart hook fires for sessions that never materialize (no transcript file is ever created) - side effects get attributed to a real, named session
- PreToolUse hook silently stops firing mid-session and never recovers; concurrent session unaffected
- PermissionRequest hooks never fire in --print mode on 2.1.237, while a PreToolUse control in the same settings file does
- [BUG] PreToolUse prompt-hook deny returns the hook's entire configured prompt to Claude in the tool error, not just the reason
- [BUG] Stop hook no longer fires on stream-stall-terminated turns ("The response stopped arriving") — StopFailure fires instead but its decision output is ignored, breaking auto-continue hooks
- Edit tool false-positive JSON validation failure on .claude/settings.json hook commands
- Declared hook timeout does not apply while a hook is blocked reading its stdin payload — hook survives ~300s and holds the tool call
- Subscription OAuth token not passed to plugin hook subprocesses on Windows — security-guidance LLM review silently disabled
- [Feature Request] hooks[].if couples a tool name to the condition, so one condition across N tools costs N handlers
- PreToolUse hook on `Edit|Write` is invoked and reaches a verdict, but its exit 2 is not enforced (Windows, agent-frontmatter and settings.json carriers)
- [Bug] Fable 5 fails to persist explicit per-turn anti-closure instructions and reverts to trained wrap-up format during active work
- [BUG] `/goal` and `/goal clear` report "No goal set" after a met/failed verdict while the Stop hook stays armed
- [BUG] `/goal`: the Stop-hook condition is frozen at creation time and the verifier cannot see later cancellation
- [Feature Request] PreToolUse "Ask" return should include hook message and tool context
- [BUG] Server-managed `allowManagedHooksOnly: true` silently disables custom statusLine (contradicts docs)
- Fable 5: headless -p refusal triggered by benign verbosity-limiting hook injection (bisected repro)
- UserPromptSubmit hook not invoked when prompt contains an attachment (VSCode extension) — distinct from #58269
- Mid-session plugin update leaves session in mixed state: new hook definitions resolve against the old ${CLAUDE_PLUGIN_ROOT} cache until restart
- [BUG] SessionStart hook stdout not injected into context (regression 2.1.209 -> 2.1.215, desktop app)
- [BUG] Windows + Git Bash: statusLine/hook command paths with backslashes are silently mangled - status line never renders (root cause behind #57629)
- Hook processes hang forever: client never closes hook stdin pipe (Windows, 2.1.208+)
- PostToolUse hook exit-2 stderr not surfaced to Claude in conversation or in --debug-file logs
- [BUG] Desktop diff panel silently shows the base repo when a WorktreeCreate-hook worktree is not auto-trusted
- [Windows] Bash tool permanently wedged: hook env (CLAUDE_ENV_FILE) grows on every compact, torn export line fails every command with "line 182: e: command not found" (exit 127)
- TUI freezes (keyboard dead, process alive) when SessionStart hook systemMessage contains block characters U+2588/U+2591 - Windows
- Hook process freezes at startup on Windows (thread Suspended, 0 CPU, never resumed) -> hangs the turn; kills subagents permanently
- hookify plugin: prompt-event rules never fire on Windows (cp1252 encoding) + wrong field name 'user_prompt' vs 'prompt'
- [BUG] Stop Hook Overrides Live User Stop Instruction
- PreToolUse hooks stop firing after EnterWorktree switches session into a linked worktree (Windows, v2.1.207); /hooks reload doesn't fix it
- Remote Control: SessionStart hook sessionTitle output is delivered to the bridge but never applied to the session's display title
- Windows: hooks leak shell redirection - zero-byte files created in CWD from '>' tokens in tool input (e.g. '-> Signal:' creates file 'Signal')
- Desktop app: hook decision:block reason not displayed
- [BUG] SessionStart (and other command-type) hooks fail to execute on Windows — shell resolution drops \bash.exe from Git path
- Windows desktop app: plugin SessionStart hook executes but its stdout is never injected into session context
- [BUG] VS Code extension: Claude can't see problems of the file past a certain line