Auto-Scroll Conflict During Long Command Output
Resolved 💬 3 comments Opened Oct 13, 2025 by tysonsiruno Closed Oct 17, 2025
Claude Code Bug Report: Auto-Scroll Conflict During Long Command Output
Description
When Claude Code runs commands that produce large amounts of streaming output (e.g., brew install, npm install, brew upgrade), the interface experiences severe scrolling issues. The viewport repeatedly jumps up and down, making it impossible to follow the command output in real-time.
Steps to Reproduce
- Ask Claude to run a command with substantial output (e.g.,
brew upgradewith 20+ packages, orbrew install rust go) - Observe the conversation view as the command executes and output streams in
- Try to manually scroll to see earlier parts of the conversation
- Notice the viewport repeatedly jumping/glitching, fighting between auto-scroll and manual position
Expected Behavior
- Output should stream smoothly to the bottom
- If user manually scrolls up, auto-scroll should be temporarily disabled
- A "scroll to bottom" button should appear when not at bottom
- Manual scroll position should be respected until user returns to bottom
Actual Behavior
- The viewport rapidly jumps between positions
- Impossible to maintain a stable scroll position during command execution
- Creates a "scroll fight" where the UI keeps pushing the view up/down
- Must spam scroll down button to try to keep up with output
- Makes it very difficult to monitor long-running installations
Impact
- High - Significantly degrades UX during common development tasks
- Particularly problematic for:
- Package manager operations (brew, npm, pip)
- Long compilation processes
- Multi-package installations
- Any command producing 100+ lines of output
Environment
- OS: macOS 26.0.1 (Darwin 25.0.0)
- Platform: MacBook Air (M2, arm64)
- Claude Code Version: 2.0.14
- Shell: zsh with oh-my-zsh
- Terminal: Default macOS Terminal
Frequency
- 100% reproducible with commands like:
brew upgrade(with multiple packages)brew install rust go(large packages)npm install -g(with multiple packages)- Any command producing streaming output > 50 lines
Suggested Fix
Implement a "sticky bottom" scroll behavior:
- When at bottom: auto-scroll continues as output arrives
- When user scrolls up: disable auto-scroll, show "↓ Jump to bottom" button
- When user clicks button or scrolls to bottom: re-enable auto-scroll
- Consider debouncing scroll position calculations during rapid output
Additional Context
This appears to be a race condition between:
- The rendering engine adding new output lines
- The auto-scroll mechanism trying to follow output
- User's manual scroll position
- The viewport calculation logic
Similar issues are common in terminal UIs with streaming output (VS Code integrated terminal had similar issues that were fixed with sticky-scroll).
Workaround (Current)
- Don't scroll during long commands
- Stay at bottom of conversation
- Wait for command to complete before scrolling up to review
---
Would you like me to submit this issue or provide any additional information?
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗