[BUG] Terminal re-renders entire session output when multiple hooks are configured (Windows)

Resolved 💬 3 comments Opened Mar 17, 2026 by GainMarketing123 Closed Mar 20, 2026

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

  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

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

  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

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

  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

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

  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

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗