CLAUDE_CODE_DISABLE_MOUSE_CLICKSでドラッグ選択が効かない理由と対処
CLAUDE_CODE_DISABLE_MOUSE_CLICKSを1にすると誤クリックは防げる一方、素のドラッグ選択も効かなくなります。止まる操作の範囲と、Shiftドラッグなどのコピー手段をまとめます。
CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1を設定すると、ターミナルをうっかりクリックしても権限プロンプトを承認してしまう事故は避けられます。代わりに、素のドラッグによるテキスト選択も効かなくなります。これは不具合というより、この変数が止める範囲の仕様です。
選択してコピーしたいときは、端末ごとの修飾キーを押しながらドラッグします。多くの端末ではShiftです。この記事では、止まる操作の範囲、コピーの手段、CLAUDE_CODE_DISABLE_MOUSEとの使い分けを順に説明します。
何が止まるのか — クリックだけでなくドラッグとホバーも
CLAUDE_CODE_DISABLE_MOUSE_CLICKSは、フルスクリーンレンダリング(画面を代替スクリーンバッファに描く表示方式)にだけ働く環境変数です。環境変数の一覧には、クリック・ドラッグ・ホバーの処理を止め、マウスホイールのスクロールは残す設定だと書かれています。Claude Code v2.1.195以降で使えます。
名前は「CLICKS」ですが、止まるのは左クリックだけではありません。フルスクリーンのマウス操作ドキュメントに挙がっている、Claude Code側のマウス操作が対象です。
クリック系変数で止まるClaude Code側の操作
メニュー操作
選択メニューの項目クリック、複数選択のトグル、
/configの値の変更。権限プロンプトの選択肢クリックも含みます。表示の操作
折りたたまれたツール結果のクリック展開、
CmdまたはCtrlを押したままのURLやファイルパスのクリック、リスト端の「N more」行のクリック。テキスト選択
Claude Code内のクリックとドラッグによる範囲選択、ダブルクリックでの単語選択、トリプルクリックでの行選択。
残るのはホイールとタッチパッドのスクロールです。公式の説明では、クリックを止めてもClaude Codeはマウスを捕捉し続けます。そのため、ホイールは会話を動かしますが、左クリックは何も起こしません。
「ドラッグ選択まで消える」と報告された経緯
GitHubのissue #77580は、この点を扱っています。報告者は、誤クリックが権限プロンプトの承認として解釈される問題を避けたくてこの変数を設定しました。拒否側のクリックが、誤承認ではなく本物の「No」として登録されたことも確かめています。
一方で、同じ変数がドラッグ選択まで止めるため、「承認クリックの扱い」と「マウス全般の通過」を別々に制御できる設定がほしい、というのが要望の中身です。報告時点では、より細かい別設定は見つかっていません。issueはopenのままで、ラベルはenhancementとarea:tuiです。
コメントには同じ立場の声が並びます。ある参加者は、誤答が困るのは確認や承認の場面で、メニュー移動の誤操作は気にならない、と書いています。テキスト選択とリンクを開く操作は有用で、これらが使えないと有効化できない、という意見です。別の参加者は、スクロールを失わずに誤クリックだけを止められるが、ハイライトしてコピーできなくなる点が惜しいと述べています。
結論も同じスレッドにあります。その参加者は後日、Claudeに教わった方法でShiftを押しながら選択すればコピーできると書き、「これで困らなくなった」と締めています。
ドラッグ選択を戻す3つの方法
端末の修飾キーを押しながらドラッグする
公式ドキュメントによると、クリック系を止めても、ネイティブの選択には端末のキーが要ります。Claude Codeはマウスを捕捉したままなので、キーを押している間だけ、端末がマウスイベントを横取りして自分で選択を作ります。
| 端末 | ネイティブ選択のキー |
|---|---|
| Terminal.app | ネイティブ選択のキーFn |
| iTerm2 | ネイティブ選択のキーOption |
| VS Code・Cursor・Devin Desktop | ネイティブ選択のキーShift(macOSでterminal.integrated.macOptionClickForcesSelectionが有効ならOption) |
| そのほか多くの端末 | ネイティブ選択のキーShift |
キーを押したまま、クリックしてドラッグします。選んだ範囲は端末側の選択なので、Cmd+CやLinuxのCtrl+Shift+Cでコピーできます。Claude Codeの画面には、正しいキーを示すヒントも出ます。SSHやtmux越しでは接続元の端末を判別しきれないため、ヒントには候補のキーが並びます。
この方法の制約は、選べる範囲が表示中の1画面分に限られる点です。端末によっては、修飾キー付きのドラッグで画面外へオートスクロールしません。長い出力をまとめて取りたいときは、次の方法が向きます。
トランスクリプトモードで会話を端末の履歴に書き出す
Ctrl+oでトランスクリプトモードに入り、[を押すと、全会話が端末のネイティブなスクロールバックに書き出されます。ツール出力もすべて展開された状態です。ここから先は普通のテキストなので、Cmd+fによる検索、tmuxのコピーモード、端末の選択がそのまま使えます。Escかqで抜けると、フルスクリーンに戻ります。
vを押すと、会話を一時ファイルに書き出して$VISUALか$EDITORで開きます。編集前提の抜き出しには、こちらが向きます。
/copyで直前の応答を送る
選択そのものを諦めるなら、/copyが使えます。直前のアシスタントの応答をクリップボードに送り、/copy 2のように数字を付けると、さかのぼった応答を指せます。コードブロックがあれば、個別に選べるピッカーが出ます。マウスの設定に左右されないので、クリック系を止めたままでも変わらず動きます。詳しい使い方はClaude Codeのcopyコマンドにまとめています。
3つの設定の使い分け
マウスまわりの選択肢は、環境変数2つと端末側のキーの組み合わせで考えると整理できます。
| 設定 | ホイールスクロール | Claude Code内のクリック・ドラッグ | ネイティブ選択 |
|---|---|---|---|
| 何も設定しない | ホイールスクロール使える | Claude Code内のクリック・ドラッグ使える(ドラッグで自動コピー) | ネイティブ選択修飾キー付きドラッグ |
CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1 | ホイールスクロール使える | Claude Code内のクリック・ドラッグ止まる | ネイティブ選択修飾キー付きドラッグ |
CLAUDE_CODE_DISABLE_MOUSE=1 | ホイールスクロール止まる | Claude Code内のクリック・ドラッグ止まる | ネイティブ選択素のドラッグで使える |
CLAUDE_CODE_DISABLE_MOUSE=1は、フルスクリーンレンダリングのマウストラッキング全体を止める変数です。端末本来のコピー選択を残したい人向けで、PgUp、PgDn、Ctrl+Home、Ctrl+Endによるキーボードスクロールは使えます。ホイールでのスクロール、クリックでのカーソル移動やツール出力の展開、URLクリックは失います。ちらつきの少なさとメモリの安定は残ります。
2つの変数を同時に設定した場合は、CLAUDE_CODE_DISABLE_MOUSEが優先されます。「ホイールもクリックも不要で、素のドラッグだけ使いたい」なら後者、「ホイールは使いたいが誤クリックは避けたい」なら前者が合います。
問題の発端である「誤クリックによる承認を避けつつ素のドラッグも使う」組み合わせは、どちらの変数でも成立しません。CLAUDE_CODE_DISABLE_MOUSEは誤クリックの承認も防げますが、ホイールが使えなくなります。ここは前述のissueが要望として残している部分です。
貼り付け側の操作は影響を受けません。公式の説明では、右クリックと中クリックによる貼り付けは、対応している端末でそのまま使えます。コピーした内容を入力欄に戻す段階で困ることはありません。
設定と確認の手順
一時的に試すなら、起動時に環境変数を付けます。
claude --version
CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1 claudeclaude --versionで、v2.1.195以降であることを確かめます。古い版ではこの変数が存在しないため、設定しても何も変わりません。
常用するなら、settings.jsonのenvキーに書きます。
{
"env": {
"CLAUDE_CODE_DISABLE_MOUSE_CLICKS": "1"
}
}効いているかは、次の3点で見分けられます。
- 権限プロンプトの選択肢をクリックしても何も起こらず、キーボードで選ぶ必要がある
- ホイールで会話がスクロールする
- 素のドラッグでは選択できず、
Shiftなどを押したときだけ選択できる
この3つが揃っていれば、期待どおりに働いています。ドラッグしても何も選べないので壊れたように見えますが、仕様どおりの挙動です。
戻したいとき
クリック操作を元に戻すには、環境変数を外します。settings.jsonに書いた場合は該当行を削除し、シェルでexportした場合はunset CLAUDE_CODE_DISABLE_MOUSE_CLICKSを実行して、Claude Codeを起動し直します。
v2.1.195の追加時のchangelogには、クリック・ドラッグ・ホバーを止めてホイールを残す変数として載っています。v2.1.203では、アタッチしたバックグラウンドセッションがこの変数とCLAUDE_CODE_DISABLE_MOUSEの指定を無視する不具合が修正されました。バックグラウンドセッションを使う人は、版を上げてから挙動を確かめます。追加時の経緯はv2.1.195のリリースノートにあります。
端末固有の注意
tmuxを使う場合は、マウスの捕捉とtmux自体のマウス設定が絡みます。tmuxでの組み合わせはClaude Codeのtmux設定で扱っています。
Linuxの端末でコピーが空になる症状は、この変数と無関係に起きることがあります。切り分けはGNOME Terminalでコピーできない問題に詳しく載っています。
Windows Terminalでリンクが2回開く問題の回避策にも、この変数が候補に挙がります。ただしクリック展開やリンクのクリックを失う代償があるので、リンクが2回開く問題の記事の比較表と合わせて選びます。
よくある質問
設定したのにドラッグで選択できます。効いていないのですか
端末によっては、素のドラッグが別の経路で選択を作る場合があります。Shiftなしでも選択できるなら、変数がそのプロセスに渡っていない可能性があります。envキーの書き間違いや、起動済みのセッションに後から設定した場合が典型です。設定後はClaude Codeを再起動します。
Copy on selectをオフにすると何が変わりますか
/configのCopy on selectを切ると、ドラッグで選択しても自動コピーされなくなり、Ctrl+Shift+cで手動コピーします。これはClaude Code内の選択が前提の設定なので、クリック系を止めた状態ではそもそも選択が作られません。両者は別の話です。