[BUG] Terminal re-renders entire session output when multiple hooks are configured (Windows)
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?
Preflight Checklist
- [x] Searched existing issues
- [x] Single bug report
- [x] Latest version (2.1.77)
Environment
- Claude Code: v2.1.77
- OS: Windows 11, PowerShell 7.5.4
- Plan: Claude Max (Opus 4.6, 1M context)
What's Wrong
Terminal periodically re-renders the entire session — welcome screen reappears, all prior output replays visually. Happens 3+ times per session, sometimes before any Edit/Write occurs (just Read + Bash triggers it).
NOT a context window issue — context stays at 2%. Purely visual.
Hook configuration (7 hooks in ~/.claude/settings.json)
- SessionStart (1 hook)
- PreToolUse Edit|Write (1 hook — agent routing gate)
- PostToolUse Bash (1 hook — combined post-commit/push)
- SubagentStop (1 hook)
- Stop (1 hook — friction detection)
- SessionEnd (1 hook)
Key observations
- Did NOT occur before hooks were added (v7, zero hooks = no re-rendering)
- Adding suppressOutput: true to all allow paths did not help
- Re-rendering occurs on Read and Bash tool calls, not just Edit/Write
- Happens within 60 seconds of session start, before any file edits
- Hook scripts are Python, 4-23ms execution time
- Frequency appears proportional to hook count
Possibly related
- #9602 (UI shows duplicate hook messages, growing progressively)
- #32930 (Windows hook execution spawns visible bash windows)
- Changelog: "Fixed JSON-output hooks injecting no-op system-reminder messages"
- Changelog: "Reduced prompt input re-renders during turns by ~74%"
Reproduction
- Configure 6+ hooks in settings.json (mix of SessionStart, PreToolUse, PostToolUse, SubagentStop, Stop, SessionEnd)
- Start session on Windows with --dangerously-skip-permissions
- Send any message that triggers Read + Bash tool calls
- Terminal redraws welcome screen and replays all prior output
What Should Happen?
Preflight Checklist
- [x] Searched existing issues
- [x] Single bug report
- [x] Latest version (2.1.77)
Environment
- Claude Code: v2.1.77
- OS: Windows 11, PowerShell 7.5.4
- Plan: Claude Max (Opus 4.6, 1M context)
What's Wrong
Terminal periodically re-renders the entire session — welcome screen reappears, all prior output replays visually. Happens 3+ times per session, sometimes before any Edit/Write occurs (just Read + Bash triggers it).
NOT a context window issue — context stays at 2%. Purely visual.
Hook configuration (7 hooks in ~/.claude/settings.json)
- SessionStart (1 hook)
- PreToolUse Edit|Write (1 hook — agent routing gate)
- PostToolUse Bash (1 hook — combined post-commit/push)
- SubagentStop (1 hook)
- Stop (1 hook — friction detection)
- SessionEnd (1 hook)
Key observations
- Did NOT occur before hooks were added (v7, zero hooks = no re-rendering)
- Adding suppressOutput: true to all allow paths did not help
- Re-rendering occurs on Read and Bash tool calls, not just Edit/Write
- Happens within 60 seconds of session start, before any file edits
- Hook scripts are Python, 4-23ms execution time
- Frequency appears proportional to hook count
Possibly related
- #9602 (UI shows duplicate hook messages, growing progressively)
- #32930 (Windows hook execution spawns visible bash windows)
- Changelog: "Fixed JSON-output hooks injecting no-op system-reminder messages"
- Changelog: "Reduced prompt input re-renders during turns by ~74%"
Reproduction
- Configure 6+ hooks in settings.json (mix of SessionStart, PreToolUse, PostToolUse, SubagentStop, Stop, SessionEnd)
- Start session on Windows with --dangerously-skip-permissions
- Send any message that triggers Read + Bash tool calls
- Terminal redraws welcome screen and replays all prior output
Error Messages/Logs
## Preflight Checklist
- [x] Searched existing issues
- [x] Single bug report
- [x] Latest version (2.1.77)
## Environment
- Claude Code: v2.1.77
- OS: Windows 11, PowerShell 7.5.4
- Plan: Claude Max (Opus 4.6, 1M context)
## What's Wrong
Terminal periodically re-renders the entire session — welcome screen reappears, all prior output replays visually. Happens 3+ times per session, sometimes before any Edit/Write occurs (just Read + Bash triggers it).
NOT a context window issue — context stays at 2%. Purely visual.
## Hook configuration (7 hooks in ~/.claude/settings.json)
- SessionStart (1 hook)
- PreToolUse Edit|Write (1 hook — agent routing gate)
- PostToolUse Bash (1 hook — combined post-commit/push)
- SubagentStop (1 hook)
- Stop (1 hook — friction detection)
- SessionEnd (1 hook)
## Key observations
- Did NOT occur before hooks were added (v7, zero hooks = no re-rendering)
- Adding suppressOutput: true to all allow paths did not help
- Re-rendering occurs on Read and Bash tool calls, not just Edit/Write
- Happens within 60 seconds of session start, before any file edits
- Hook scripts are Python, 4-23ms execution time
- Frequency appears proportional to hook count
## Possibly related
- #9602 (UI shows duplicate hook messages, growing progressively)
- #32930 (Windows hook execution spawns visible bash windows)
- Changelog: "Fixed JSON-output hooks injecting no-op system-reminder messages"
- Changelog: "Reduced prompt input re-renders during turns by ~74%"
## Reproduction
1. Configure 6+ hooks in settings.json (mix of SessionStart, PreToolUse, PostToolUse, SubagentStop, Stop, SessionEnd)
2. Start session on Windows with --dangerously-skip-permissions
3. Send any message that triggers Read + Bash tool calls
4. Terminal redraws welcome screen and replays all prior output
Steps to Reproduce
Preflight Checklist
- [x] Searched existing issues
- [x] Single bug report
- [x] Latest version (2.1.77)
Environment
- Claude Code: v2.1.77
- OS: Windows 11, PowerShell 7.5.4
- Plan: Claude Max (Opus 4.6, 1M context)
What's Wrong
Terminal periodically re-renders the entire session — welcome screen reappears, all prior output replays visually. Happens 3+ times per session, sometimes before any Edit/Write occurs (just Read + Bash triggers it).
NOT a context window issue — context stays at 2%. Purely visual.
Hook configuration (7 hooks in ~/.claude/settings.json)
- SessionStart (1 hook)
- PreToolUse Edit|Write (1 hook — agent routing gate)
- PostToolUse Bash (1 hook — combined post-commit/push)
- SubagentStop (1 hook)
- Stop (1 hook — friction detection)
- SessionEnd (1 hook)
Key observations
- Did NOT occur before hooks were added (v7, zero hooks = no re-rendering)
- Adding suppressOutput: true to all allow paths did not help
- Re-rendering occurs on Read and Bash tool calls, not just Edit/Write
- Happens within 60 seconds of session start, before any file edits
- Hook scripts are Python, 4-23ms execution time
- Frequency appears proportional to hook count
Possibly related
- #9602 (UI shows duplicate hook messages, growing progressively)
- #32930 (Windows hook execution spawns visible bash windows)
- Changelog: "Fixed JSON-output hooks injecting no-op system-reminder messages"
- Changelog: "Reduced prompt input re-renders during turns by ~74%"
Reproduction
- Configure 6+ hooks in settings.json (mix of SessionStart, PreToolUse, PostToolUse, SubagentStop, Stop, SessionEnd)
- Start session on Windows with --dangerously-skip-permissions
- Send any message that triggers Read + Bash tool calls
- Terminal redraws welcome screen and replays all prior output
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.77
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Preflight Checklist
- [x] Searched existing issues
- [x] Single bug report
- [x] Latest version (2.1.77)
Environment
- Claude Code: v2.1.77
- OS: Windows 11, PowerShell 7.5.4
- Plan: Claude Max (Opus 4.6, 1M context)
What's Wrong
Terminal periodically re-renders the entire session — welcome screen reappears, all prior output replays visually. Happens 3+ times per session, sometimes before any Edit/Write occurs (just Read + Bash triggers it).
NOT a context window issue — context stays at 2%. Purely visual.
Hook configuration (7 hooks in ~/.claude/settings.json)
- SessionStart (1 hook)
- PreToolUse Edit|Write (1 hook — agent routing gate)
- PostToolUse Bash (1 hook — combined post-commit/push)
- SubagentStop (1 hook)
- Stop (1 hook — friction detection)
- SessionEnd (1 hook)
Key observations
- Did NOT occur before hooks were added (v7, zero hooks = no re-rendering)
- Adding suppressOutput: true to all allow paths did not help
- Re-rendering occurs on Read and Bash tool calls, not just Edit/Write
- Happens within 60 seconds of session start, before any file edits
- Hook scripts are Python, 4-23ms execution time
- Frequency appears proportional to hook count
Possibly related
- #9602 (UI shows duplicate hook messages, growing progressively)
- #32930 (Windows hook execution spawns visible bash windows)
- Changelog: "Fixed JSON-output hooks injecting no-op system-reminder messages"
- Changelog: "Reduced prompt input re-renders during turns by ~74%"
Reproduction
- Configure 6+ hooks in settings.json (mix of SessionStart, PreToolUse, PostToolUse, SubagentStop, Stop, SessionEnd)
- Start session on Windows with --dangerously-skip-permissions
- Send any message that triggers Read + Bash tool calls
- Terminal redraws welcome screen and replays all prior output
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗