Claude CodeのWindows 10でマウスホイールが矢印キーになる原因と回避策
Windows 10でAgentsビューから開いたセッションだけ、ホイールが会話をスクロールせず入力履歴を送る。切り分けの表、原因の2説、PgUp/PgDnと無効化設定による回避策をまとめます。
Windows 10でClaude Codeを使っていて、claude agents から開いたセッションだけマウスホイールが効かない。回しても会話は動かず、入力欄の履歴が切り替わる。画面下に「Scroll wheel is sending arrow keys · use PgUp/PgDn to scroll」と出たら、この症状です。
結論から書きます。ホイールを「矢印キー」としてアプリに渡しているのはターミナル側のフォールバックで、Claude Code側の設定では直せません。当面の回避策は3つです。
- アタッチしたセッション内では
PgUp/PgDnでスクロールする - Agentsビューを使わず、フォアグラウンドで
claudeを起動する - Agentsビュー自体を
disableAgentViewで無効にする
以下、症状の切り分け、報告されている原因、設定が効かない理由、回避策を順に書きます。
どの操作で起きるのか — 切り分けの表
報告の中心は「Windows 10」と「Agentsビューからのアタッチ」の組み合わせです。Windows 10(build 19045)でWezTermとWindows Terminalの両方を試した報告があり、結果は同じでした。
| 操作 | Windows 10での挙動 |
|---|---|
フォアグラウンドで claude を起動(アタッチなし) | Windows 10での挙動ホイールで会話がスクロールする |
claude agents の一覧画面 | Windows 10での挙動ホイールが効く |
一覧からEnter / → でアタッチしたセッション | Windows 10での挙動ホイールが矢印キーになる |
アタッチ中の PgUp / PgDn / Ctrl+O | Windows 10での挙動正常に動く |
Windows 11では報告が割れています。#103327には、同じClaude CodeのバージョンをWindows 11(build 26200)で動かすとバックグラウンドセッションでもホイールが効いた、とあります。一方、#95130のコメントには、Windows 11(Claude Code 2.1.280、Windows TerminalとWezTerm)で同じ症状が出た報告があります。Windows 11に移れば直る、とは言えない状況です。
「矢印キーを送っている」と表示される理由
Claude Codeのフルスクリーン表示は、ターミナルの代替画面(alternate screen)に描画し、マウスの報告をアプリ側で受け取ります。ホイールの回転はマウス報告のイベントとして届き、アプリが会話をスクロールします。
ところがターミナルは、アプリがマウス報告を要求していない代替画面では、ホイールを上下の矢印キーに変換して送る動きをします。これが入力履歴の切り替わる正体です。
WezTermの報告では、1ノッチあたり3回の矢印キーに変換されます(alternate_buffer_wheel_scroll_speed の既定が3)。Claude Code側は、100ミリ秒以内に修飾キーなしの矢印キーが8回来るとホイール由来とみなして警告を出します。つまりゆっくり1ノッチ回すだけでは警告が出ず、速く3ノッチ回すと9回で閾値を越えます。「ときどきバナーが出る」ように見えるのはこのためです。
警告が出なくても、ホイールが矢印キーになっている状態は続いています。入力履歴が勝手に切り替わるなら同じ症状だと考えてよい状況です。
原因として報告されている2つの説
原因については、報告者によって見立てが分かれています。どちらも報告者の分析で、Claude Code側の公式な説明ではありません。
原因についての2つの説明
説1: 標準のConPTYが落とす
バックグラウンドセッションはデーモンのPTYホストが動かし、WindowsではOS標準の CreatePseudoConsole を使います。Windows 10のこの実装が、内側のセッションが出すマウス追跡の要求(?1000h ?1002h ?1003h ?1006h)と代替画面の要求(?1049h)を外側のターミナルへ通さない、という説明です。
説2: アタッチ側が有効にしていない
アタッチしたクライアントは代替画面に入るものの、マウス追跡を有効にしない、という説明です。ホストされたワーカーが従来型の描画で動くため、レプリケートされるモードにマウスが含まれません。
#103327の報告者は、最小のテストプログラムで CreatePseudoConsole を直接叩いて確かめたとしています。出力パイプには ?1004h と ?2004h と本文が出て、?1049h ?1000h ?1002h ?1003h ?1006h は出なかった、という内容です。
一方、#91142の報告者はWindows 10でバイト列を取り、フォアグラウンドのフルスクリーンでは ?1049h ?1000h ?1002h ?1003h ?1006h の順にマウスモードが出るのに、アタッチ時は ?1049h の後にマウスのモードが一つも出ないと報告しています。この報告はVS Codeの統合ターミナルと、素のConPTYを使ったテストプログラムの両方で再現したとしています。
2つの説は対立しているというより、見ている層が違います。どちらにしても、外側のターミナルがマウス報告なしの代替画面になり、ターミナルのフォールバックでホイールが矢印キーになる、という最後の段は同じです。
#104277の報告者自身は、ConPTYのバイト列を自分では測り直していないと書いています。この報告が独自に示したのは、独立した2つのターミナルで同じように壊れるため、特定のターミナル固有の問題ではない、という点です。
設定を変えても直らない理由
直そうとして最初に触りそうな設定が、アタッチしたセッションには効きません。
CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1: 効果なしの報告があります/tui defaultやCLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1: 効果なしの報告があります
後者が効かないのは仕様です。フルスクリーン表示のドキュメントに、Agentsビューまたは claude attach で開いたバックグラウンドセッションは常にフルスクリーン描画を使う、とあります。アタッチ側のターミナルが代替画面に入って表示するためで、従来型の描画にはスクロールバックもマウス処理もないので、tui 設定と CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN は適用されません。
CLAUDE_CODE_DISABLE_MOUSE_CLICKS はクリックやドラッグを止める設定で、ホイールは残す設計です。今回の症状はそもそもマウス報告が届かないことなので、触っても結果は変わりません。
回避策 — 今日から使える順番
アタッチ中はPgUp / PgDnとCtrl+Oを使う
キーボードのスクロールはマウス報告に依存しないため、症状が出ている状態でも動きます。
| キー | 動作 |
|---|---|
PgUp / PgDn | 動作半画面ぶんスクロール |
Ctrl+Home | 動作会話の先頭へ移動 |
Ctrl+End | 動作最新のメッセージへ移動し、自動追従を再開 |
Ctrl+O | 動作トランスクリプトモードの切り替え |
トランスクリプトモードでは less のような移動と / による検索が使えるので、長い会話から探すだけなら、ホイールの代わりとして実用になります。
Agentsビューを経由せずフォアグラウンドで起動する
アタッチしたセッションだけが壊れるので、普通に claude を起動して作業すれば、ホイールは通常どおり効きます。報告でも、同じマシンの同じバージョンでフォアグラウンドのセッションは問題なかったとされています。
claude --resume <session-id>#95130には、Agentsビューのピッカーを避け、claude --resume にセッションIDを明示して直接再開する回避策が書かれています。この方法が効く理由は書かれておらず、効果を確かめた報告の範囲にとどまります。
Agentsビューを無効にする
バックグラウンドエージェントを使わないなら、機能ごと止めるのが確実です。disableAgentView を true にすると、claude agents・--bg・/background とオンデマンドのスーパーバイザーが無効になります。
{
"disableAgentView": true
}1回のセッションだけ止めるなら、環境変数でも指定できます。PowerShellでは次のとおりです。
$env:CLAUDE_CODE_DISABLE_AGENT_VIEW = "1"
claude#103327の報告者は、CLAUDE_CODE_DISABLE_AGENT_VIEW=1 に CLAUDE_CODE_NO_FLICKER=1 を組み合わせたフォアグラウンドのフルスクリーンでホイールが効くことを確認しています。この方法はバックグラウンドセッションが使えなくなる代わりに、ホイールを使う運用を保てます。
ホイールをPgUp/PgDnに割り当てる
#103327の報告者は、アタッチ中だけWindows Terminalのウィンドウに対して、ホイールを PgUp / PgDn に割り当てるAutoHotkeyのスクリプトを回避策として挙げています。割り当てを常時有効にすると他のアプリのホイールまで変わるので、ウィンドウを限定する条件が要ります。
自分の環境がこの症状かを確かめる手順
切り分けの順番
- 1
フォアグラウンドで確かめる
claudeを普通に起動して長い会話を作り、ホイールでスクロールできるか見ます。ここで動かないなら別の問題です(ホイールが遅いだけなら、スクロール速度の設定を見直す余地があります)。 - 2
Agentsビューの一覧で確かめる
claude agentsを開き、行の一覧でホイールを回します。一覧で動くのにアタッチ後に動かなくなるなら、この記事の症状です。 - 3
アタッチ後に PgUp を押す
PgUpで動けば、ホイールだけが矢印キーに化けています。PgUpも効かないなら入力経路全体の問題で、別の原因です。 - 4
Windowsのバージョンを見る
winverでbuildを確認します。報告の中心はWindows 10の19044・19045です。Windows 11では、症状が出なかった報告(#103327)と、出た報告(#95130)の両方があるので、buildだけで判断はできません。
ターミナルを替えても結果は変わらないので、ターミナルを入れ替える試行は、時間をかけるわりに得るものがありません。
同じ症状の報告はどう積み上がってきたか
この症状は新しいものではなく、複数のissueにまたがっています。報告ごとに見ている環境や層が違います。
| issue | 報告の内容 |
|---|---|
| #59979 | 報告の内容同じ症状。2.1.144で修正済みとして閉じられたが、後のコメントで2.1.195・Windows 10 19044でも再現と報告 |
| #64214 | 報告の内容同じ症状をLinuxのターミナルで報告 |
| #91142 | 報告の内容アタッチが代替画面に入るがマウス追跡を有効にしない、というバイト列つきの報告(2.1.252でも再現) |
| #95130 | 報告の内容Agentsビューで開いたセッションは、別のターミナルで再アタッチしても症状が残るという報告 |
| #100807 | 報告の内容Warpでの同じ症状 |
| #103327 | 報告の内容Windows 10の標準ConPTYがDECSET 1000/1006を落とすという測定つきの報告(2.1.303) |
| #104277 | 報告の内容WezTermとWindows Terminalの両方で再現。Claude Code 2.1.308 |
#103327・#91142・#95130・#104277は、修正済みとして閉じられていません。#59979はクローズ後に再現報告が続いており、閉じた=直ったとは言い切れない経緯があります。
#104277の報告者が提案する修正は2つです。アタッチしたクライアントが、アタッチ中だけ外側のターミナルでマウス追跡(1000 / 1002 / 1006)を有効にする方法と、PTYホストに新しい conpty.dll / OpenConsoleを同梱する方法です。前者はAgentsビューの一覧画面がすでにやっていることで、そこでホイールが動く理由にもなっています。
よくある質問
Windows 11でも起きますか。
報告が割れています。#103327には、同じバージョンのClaude CodeをWindows 11(build 26200)で動かすとバックグラウンドセッションでもホイールが効いた、とあります。#95130のコメントには、Windows 11(2.1.280、Windows TerminalとWezTerm)で同じ症状が出た報告があります。#59936はWindows 11の2.1.143で同じ症状が出て、その環境では修正されたという報告です。
ホイールで入力履歴が切り替わるのは、データが壊れているのですか。
壊れてはいません。ホイールが上下の矢印キーとして入力欄に届き、履歴を辿っているだけです。入力欄を空にしてから PgUp / PgDn で動かせば、会話はそのまま読めます。
SSH経由なら避けられますか。
#103327には、WindowsにSSHで入ったセッションはフルスクリーンが自動で無効になるため問題が出ない、とあります。ドキュメントにも、Windows上で動くClaude CodeにSSHで接続している場合は従来型の描画を使う、と書かれています。
まとめ
Windows 10でAgentsビューからアタッチしたセッションのホイールが矢印キーになるのは、外側のターミナルにマウス報告が届かないまま代替画面に入ってしまうためとみられます。ターミナルやClaude Codeの設定では直らず、直す側はPTYホストかアタッチクライアントです。修正が入るまでは、PgUp/PgDnで読み進めるか、Agentsビューを使わない運用に寄せるのが現実的な選択になります。
同じフルスクリーン表示でも、ホイールの速さが問題ならwheelScrollAccelerationEnabledの記事が、スクロールバックが消える問題ならスクロールバックが消える原因の記事が、それぞれの切り分けを扱っています。フルスクリーン表示そのものの仕組みはClaude CodeのTUI(フルスクリーン)にまとめています。