Claude Codeのdiffパネルで未コミットの変更を並べて見る
Claude Code v2.1.260のdiffパネルは、フルスクリーンレンダリング中に未コミットの変更を会話の横へ常設表示します。開き方・askボタン・ターン別表示・自動で開く条件を説明します。
/diffを実行すると、フルスクリーンレンダリング中は会話の横にdiffパネルが開きます。変更したファイルの一覧と各ファイルの差分を常設表示し、Claudeがファイルを編集するかシェルコマンドを実行するたびに自動で更新されます。クラシックレンダラーで/diffを実行したときに開くのは、プロンプトの上に出る差分ダイアログで、パネルとは別画面です。
diffパネルとは何か
diffパネルは、変更したファイルを追加・削除行数つきで一覧し、選んだファイルの差分をその下に表示するパネルです。会話を止めずに変更範囲を目で追えます。閉じるには/diffをもう一度実行するか、パネル右上の✕をクリックします。
パネルが開くまでの条件
- 1
フルスクリーンレンダリングにする
/tui fullscreenで切り替えるか、CLAUDE_CODE_NO_FLICKER=1を付けて起動します。詳しくはClaude CodeのTUI(フルスクリーン)とはにあります。 - 2
gitリポジトリの中で実行する
差分はgitから読むため、リポジトリの外では出せません。
- 3
ターミナル幅を110列以上にする
110列に満たないと開けません。
- 4
v2.1.287以降にする
パネルはv2.1.260で入りました。公式ドキュメントの現行の要件はv2.1.287以降です。
クラシックレンダラーでは、/diffはパネルではなく差分ダイアログを開きます。
/diffv2.1.287でパネルの描画元が変わった
v2.1.287の変更履歴に「Claude Modsの追加」が入りました。公式の一覧によると、/diffの画面は組み込みのmodcc-plugin-diffが描いています。このmodは/diffを引き受け、パネルとダイアログの両方を描く役目で、対話的なターミナルセッションで有効です。
/pluginでcc-plugin-diffを無効にすると、/diffは以前のパネルと差分ビューアーを開く動作に戻ります。この違いは、次の節のボタン操作と、キー設定の節で効いてきます。--bareや--safe-modeなどのフラグ、disableAllHooksは、インストールしたmodを止める設定ですが、組み込みmodは止めません。
パネルでできる操作
パネルが開いている間の操作
ファイルへ移る
一覧の行をクリックします。パネルの中はマウスホイールでスクロールします。一覧が長くはみ出すときは
Alt+↑/Alt+↓、Ctrl+↑/Ctrl+↓で一覧自体を動かせます。Claudeに聞く
ファイル名の右にある
askをクリックします。そのファイルの差分が次のプロンプトに添付されます。ターンごとに見る
ヘッダーの
sourceピッカーでターンを選びます。T1、T2と並び、Currentで作業ツリーに戻ります。隠れたファイルを出す
テストファイルと生成ファイルは既定で一覧に出ません。このセッションより前の変更も1行に畳まれます。件数の行をクリックすると展開します。
比較対象はCtrl+X Bで切り替えます。このセッションの変更、未コミットの変更全体、デフォルトブランチから分かれて以降のすべて、の順に回ります。選んだ比較対象はリポジトリごとに記憶されます。
askボタンで差分をClaudeに渡す
複数ファイルにまたがる指示を出したあとにパネルを開くと、意図どおりの変更かを会話を止めずに確かめられます。気になるファイルが見つかったら、ファイル名の右のaskを押します。ボタンの表示はasked ✓に変わり、プロンプトを送るまでそのまま残ります。
添付されるのはファイル単位の差分です。別のファイルでaskを押すと、前のファイルの添付は置き換わります。2つのファイルをaskで同時に渡すことはできません。
askで添付した差分は、次に送るプロンプトに付きます。メッセージをキューに入れてClaudeの作業を待たせている場合も、添付はそのプロンプトに乗ります。
ターン別表示でシェル経由の変更は見えない
sourceピッカーのターン表示は、Claudeがファイルを編集したターンごとの変更だけを見せます。この表示はgitではなくClaudeのファイル編集から作られます。そのため、Claudeがシェルコマンドで行った変更は、作業ツリーを映すCurrentにだけ出て、T1などには出ません。たとえばsed -iで書き換えたファイルを、ターン単位で振り返ることはできません。
ピッカーは、Claudeが一度でもファイルを編集してから現れます。
キーバインドの変更
パネル用のアクションはkeybindings.jsonで割り当て直せます。ただし、どのアクションがどの画面に効くかは、cc-plugin-diffが有効かどうかで分かれます。
| アクション | 既定 | cc-plugin-diffが有効なとき |
|---|---|---|
app:cycleDiffBase | 既定Ctrl+X B | cc-plugin-diffが有効なとき効く |
app:diffFileListUp / app:diffFileListDown | 既定Ctrl+↑・Meta+↑ / Ctrl+↓・Meta+↓ | cc-plugin-diffが有効なとき効く |
app:toggleDiffNoiseFilter | 既定未割り当て | cc-plugin-diffが有効なとき以前のパネルにだけ届く |
app:toggleDiffPreSession | 既定未割り当て | cc-plugin-diffが有効なとき以前のパネルにだけ届く |
app:toggleReplTab | 既定未割り当て | cc-plugin-diffが有効なとき以前のパネルの開閉用 |
app:cycleDiffBaseはDiffPanelコンテキストに属し、パネルが開いている間だけ有効です。残りはGlobalです。比較対象の切り替えを別のキーに替えるには、ctrl+x bを外して新しいキーを割り当てます。
{
"bindings": [
{
"context": "DiffPanel",
"bindings": {
"ctrl+x b": null,
"ctrl+y": "app:cycleDiffBase"
}
}
]
}パネルが自動で開く条件
ターミナル幅が144列以上あれば、Claudeがファイルの編集を始めた時点でパネルは自分から開きます。一度/diffで手動で開くと、以降のセッションでも、幅が足りているターミナルならClaudeが編集した瞬間に開きます。逆にパネルを閉じると、そのセッションでも以降のセッションでも、次に/diffを実行するまで閉じたままです。
自動起動の144列は、手動で開くための最低幅の110列より広くなっています。まだ/diffで開いたことがないうちは、110〜143列のターミナルで編集が始まっても自動では開きません。一度/diffで開いた後は、110列以上あれば自動で開きます。
既定でオンにならない環境がある
フルスクリーンレンダリングは研究プレビュー段階のため、環境によっては既定でクラシックレンダラーのままです。判定の基準は2系統あります。
Anthropicから機能フラグを取得する通常のセッションでは、そのマシンで2026年5月6日以降にClaude Codeを初めて使ったかどうかが基準です。それ以降が初回利用なら、既定でフルスクリーンレンダリングになります。
Bedrock・Google Cloud・Microsoft Foundry経由のセッションや、テレメトリーを無効にしたセッションでは、機能フラグを取得しません。この場合は、そのマシンでClaude Codeを最初に起動したバージョンで判定します。最初の起動がv2.1.239以降なら、フルスクリーンレンダリングが既定です。機能フラグを取得しないセッションでは、起動時ダイアログの提示がそのマシンで止まっていれば、v2.1.239以降の初回起動でもクラシックレンダラーになります。判定表ではこの条件が最初のバージョン判定より上に来ます。
どちらの基準も満たさなければクラシックレンダラーのままです。tui設定を保存済みならその設定が優先され、未保存なら/tui fullscreenを自分で実行するかCLAUDE_CODE_NO_FLICKER=1を設定しない限りパネルは開けません。今のレンダラーが分からないときは、/tuiを引数なしで実行すると表示されます。社内ゲートウェイ経由で配布しているチームでは、対象マシンの最初の起動バージョンを控えておくと切り分けに迷いません。
サブモジュール内の編集はパネルに出ない
/diffが読む差分はgitの差分と同じ経路です。サブモジュールは一覧に1つのエントリとして出ますが、参照先のコミットが変わったときだけ変化として表示されます。サブモジュール内部のファイルを編集しても、パネルの一覧には出てきません。中身を確かめたいときは、サブモジュール側でgitの差分を見ます。
パネルとダイアログの違い
フルスクリーンとクラシックで開く画面
diffパネル
会話の横に常設され、閉じるまで開いたままです。Claudeの編集やシェル実行のたびに更新されます。ファイルごとのaskボタンとCtrl+X Bの比較対象切り替えがあります。
差分ダイアログ
プロンプトの上に枠付きで開き、読み終えたら閉じます。比較対象はHEAD、またはパネルで最後に選んだ比較対象(リポジトリごと)です。
ダイアログではキーで操作します。上下キーでファイルを選び、Enterでそのファイルの差分を開き、Escで一覧に戻るか閉じます。Tabでsourceピッカーへ移れます。ファイルの差分の中でTabを押すとaskボタンへ移り、Enterでそのファイルの差分を次のプロンプトに添付します。
ダイアログ側のキー操作や、v2.1.222以降にraw git blob基準になった仕様は、Claude Code diffコマンドの使い方と差分ビューアー操作にまとめています。パネルもダイアログも、sourceのターン表示は同じ仕組みです。
/code-reviewとの役割分担
diffパネルは変更を目で追うための表示専用で、正しさの判定や改善提案は行いません。バグの指摘がほしいときは/code-review(エイリアス/review)を別に実行します。公式のコマンド一覧では、/diffが変更の中身を見せ、/code-reviewが現在の差分を正しさの観点で点検する、という分担です。
よくあるつまずき
- 編集を続けているのにパネルが自動で開かない: まだ
/diffで開いたことがないなら、自動起動には144列以上が必要です。一度手動で開いたあとは、110列以上で自動に開きます askボタンが見えない: ボタンはcc-plugin-diffが描く画面の機能です。/pluginで無効にしていないかを確かめます- フルスクリーンのはずなのにクラシックで始まる: フルスクリーン起動の失敗が理由なら、引数なしの
/tuiを実行するとCurrent rendererの行にそう表示されます。失敗が1回目なら次のセッションで再試行され、2回続くと/tui fullscreenを実行するかClaude Codeを更新するまでクラシックのままです - 必ずクラシックレンダラーで始まる環境: スクリーンリーダーモード(アタッチしたバックグラウンドセッションは例外でフルスクリーン)、iTerm2の
tmux -CC連携、Windows上のClaude CodeへのSSH接続、CLAUDE_CODE_NO_FLICKER=0やCLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1の設定では、tui設定よりこれらが優先され、パネルは開きません
まとめ
パネルを使うかどうかは、フルスクリーンレンダリングで作業しているか、シェル経由の変更をどう見るかで決まります。シェルで書き換える作業が多いなら、ターン別ではなくCurrentを軸にします。導入経緯はClaude Code v2.1.260にまとめています。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。