[BUG] Scroll wheel intercepted by prompt history navigation — no way to disable
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?
Description
In the Claude Code desktop app (Windows), the mouse scroll wheel is intercepted
and converted to arrow key presses that navigate through prompt history in the
input field, rather than scrolling the conversation panel.
A yellow status message in the bottom-right corner confirms this:
"Scroll wheel is sending arrow keys · use PgUp/PgDn to scroll"
Steps to Reproduce
- Open Claude Code desktop app on Windows
- Have an active conversation with several messages
- Attempt to scroll up through the conversation using the mouse scroll wheel
## Expected Behavior
Mouse scroll wheel scrolls the conversation panel up/down.
Actual Behavior
Scroll wheel navigates through prompt history in the input field. The
conversation cannot be scrolled with the mouse wheel at all.
## Workaround
PgUp / PgDn keys work for scrolling. Clicking the conversation area or
scrollbar does not release focus from the input.
Workaround
PgUp / PgDn keys work for scrolling. Clicking the conversation area or
scrollbar does not release focus from the input.
## Request
Please add a setting to disable the scroll wheel → prompt history behavior,
or make the scroll wheel scroll the conversation when the cursor is hovering
over it (rather than over the input field).
## Environment
- OS: Windows 11 Pro
- Claude Code: Desktop app
- Model: claude-sonnet-4-6
What Should Happen?
## Expected Behavior
Mouse scroll wheel scrolls the conversation panel up/down.
Error Messages/Logs
Steps to Reproduce
Steps to Reproduce
- Open Claude Code desktop app on Windows
- Have an active conversation with several messages
- Attempt to scroll up through the conversation using the mouse scroll wheel
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Model: claude-sonnet-4-6
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
_No response_
Showing cached comments. Read the full discussion on GitHub ↗
9 Comments
Real-world impact: this was one of the main reasons I moved part of my daily workflow to OpenAI Codex CLI.
Environment: Claude Code v2.1.173, macOS (Apple Silicon), Ghostty-based terminal (cmux), Logitech MX Master 3.
Like most terminal users, my muscle memory is: arrow keys = recall input history, mouse wheel = scroll back through output. Codex CLI and Gemini CLI both honour this — they don't enable mouse reporting, so the terminal's native scrollback just works. Claude Code grabs the wheel and converts it to prompt-history cycling in the main view; in Ctrl+O transcript mode on Ghostty the wheel does nothing at all (#67633). Reading what the model produced is the core loop of using these tools, and right now it fights the user.
Things I tried that don't help: Ghostty
mouse-reporting = false, scroll multiplier tweaks. The only working workaround isCLAUDE_CODE_DISABLE_MOUSE=1, which restores perfect native wheel scrolling — I now have it permanently in my~/.zshrc.Request: either make wheel scrolling scroll the transcript (like every other pane-based TUI), or ship a supported setting to opt out of mouse capture. The fact that the "disable the mouse" escape hatch improves the mouse experience says it all.
There is a supported way to disable this — it's just buried in the fullscreen-rendering docs. The wheel is captured because the fullscreen (alternate-screen) renderer became the default around 2.1.172.
/tui default, or for a permanent hard override add to~/.claude/settings.json:``
json
``{ "env": { "CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN": "1" } }
The classic renderer keeps the conversation in your terminal's native scrollback, so the wheel works as before.
CLAUDE_CODE_DISABLE_MOUSE=1(scroll Claude's own view withPgUp/PgDn).Docs: https://code.claude.com/docs/en/fullscreen
ITERM workaround.. in other comments i will try with another terms
Environment
Root cause
The fullscreen renderer uses the terminal's alternate screen buffer. By default, iTerm2 translates the scroll wheel into ↑/↓ arrow keys when an app is in alternate-screen mode, and it isn't forwarding wheel events to the app. Claude receives the arrow keys, the prompt box treats them as history navigation, and Claude warns you. So the fix is terminal-side: stop the arrow translation and let iTerm2 forward real wheel events to Claude.
The fix (iTerm2 — 3 toggles)
No claude restart needed — iTerm2 applies these live. If it doesn't take effect immediately, toggle /tui fullscreen off/on or open a new tab to re-arm mouse tracking.
Optional scroll tuning (all verified in the 2.1.178 binary):
Keyboard scroll (always works, any platform): PgUp / PgDn, and Ctrl+Home / Ctrl+End to jump to top/bottom. On Mac: Fn+↑ / Fn+↓.
<img width="970" height="624" alt="Image" src="https://github.com/user-attachments/assets/c25e9fac-f9fd-498d-b24d-67ae3cf18a8b" />
<img width="1018" height="503" alt="Image" src="https://github.com/user-attachments/assets/e209ef4a-4234-4a0d-a1ce-2bb45ba5cbc6" />
Adding a Windows data point plus a usage-frequency argument for prioritisation.
Environment: Claude Code, fullscreen / alternate-screen renderer (now the default since ~2.1.172), Windows 11.
This is a default-behaviour regression, and the core of it is a frequency mismatch: binding the mouse wheel to prompt-history navigation optimises for the rarest action at the expense of the most common one.
The new default has those exactly backwards — the wheel now drives the ~weekly action, and there is no wheel path left to the ~hourly one. Arrow keys are already the natural (and previous) home for history recall; the wheel's natural home is scrollback.
/tui defaultandCLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1do restore the old behaviour, but an opt-out buried in the fullscreen docs doesn't undo a regressed default — most users hit the broken behaviour first and never find the setting.Request (same as the OP): make the wheel scroll the transcript by default (or cursor-aware so it scrolls whatever the pointer is over), and keep history on the arrow keys. At minimum, surface the toggle prominently instead of in the fullscreen renderer docs.
Still reproducing on v2.1.206 (macOS 26.4.1, Ghostty 1.3.1, fullscreen renderer /
"tui": "fullscreen").Scrolling the mouse wheel while the pointer is over/near the prompt input box navigates prompt input history (like Up/Down) instead of scrolling the conversation. The changelog mentions this was fixed once in v2.1.160, but it's back.
What I want is narrow: keep fullscreen, keep wheel-scrolls-transcript, but have the wheel never touch prompt history. Ideally one of:
settings.json//config) to disable "wheel over prompt = navigate history", orThe existing controls are all too coarse for this:
CLAUDE_CODE_DISABLE_MOUSE=1— kills the wheel entirelyCLAUDE_CODE_DISABLE_MOUSE_CLICKS=1— drops clicks, but the wheel still hits historywheelScrollAccelerationEnabled/CLAUDE_CODE_SCROLL_SPEED— speed/acceleration onlyGoing back to the classic renderer "fixes" it (native terminal scrollback) but sacrifices the whole reason to run fullscreen. A targeted option to decouple the wheel from prompt history would be the ideal fix. 👍
Still broken in 2.1.218.
Also, copy on select is broken, as is clicking into the text field to place the cursor.
this is actually pissing me off so much can someone please fix this no I don't want to use my mouse wheel to scroll through my prompt history
the entire terminal is fucked with this new agent orchestration whatever shit it is like i just want to use claude one agent in one terminal can there not be like a /simple mode or something
Still reproducing on 2.1.220 — Windows 10, Windows Terminal / PowerShell, fullscreen renderer.
Exact OP symptom: the wheel arrives as arrow keys, cycles prompt input history, and the "Scroll wheel is sending arrow keys · use PgUp/PgDn to scroll" banner shows.
On Windows there is no terminal-side escape hatch equivalent to the iTerm2 toggles posted above, so the only real fix is abandoning fullscreen entirely:
/tui default(or"tui": "default"in~/.claude/settings.json), which restores native scrollback and normal wheel behaviour — at the cost of losing the fullscreen renderer altogether.+1 to the frequency argument above: scrolling back through output is a hundreds-of-times-a-day action, history recall a rare one — the wheel should never drive history. A targeted toggle (or context-aware wheel) would let Windows users keep fullscreen.