Claude CodeのdiffTool設定でIDEと端末の差分表示を切り替える
Claude Codeの設定キーdiffToolは、編集提案の差分をIDEのビューアーか端末のどちらに出すかを切り替えます。設定場所と/configでの操作手順、任意の外部ツールを指定する仕組みではない点を扱います。
diffToolでできること
diffTool は、Claude CodeがEditやWriteツールでファイル変更を提案するときに、その差分をどこに表示するかを決める設定キーです。値は auto と terminal の2つだけで、既定値は auto です。
auto はVS CodeまたはJetBrainsのIDEに接続しているとき、そのIDE内蔵のdiffビューアーで変更案を開きます。terminal を選ぶと、IDEに接続していてもターミナル上に差分を表示したままにします。設定できるのはこの2択だけです。gitの difftool のように、vimdiffやKDiff3などの任意の外部プログラムをコマンドとして登録する仕組みではありません。
IDEに接続していてもターミナルで差分を見たい場面のために、terminal が用意されています。
diffToolが効くのはどの場面か
diffTool の対象は、ClaudeがEditやWriteで提案した変更の差分表示です。許可を求める場面で目に触れるのは、実質的にこの表示です。VS Code拡張では、プロンプト欄下のパーミッションモードによって挙動が変わります。Autoモードでは分類器が大半の操作を自動判断し、Edit automatically モードではClaudeが許可を求めずに編集を進めます。どちらもワークスペース内の大半のファイルを許可なしで編集するため、diffTool の差が見える場面はほとんどありません。Plan モードは、Claudeが計画を説明し承認を待ってから変更に入る段階を挟むため、実際の編集はそのあとに選んだモード次第になります。
差分と許可プロンプトが並んで出るのはManualモードです。VS Code拡張のドキュメントでは、Manualモードで編集を提案するとオリジナルと変更案の比較が表示され、受け入れ・拒否・指示のやり直しを選べるとされています。VS Codeのdiffビュー内で提案内容を直接編集してから受け入れることもでき、その場合Claudeは自分の提案どおりにファイルが確定していないことを認識します。変更が複数あるときは、diffの各変更の下にあるAccept this changeとReject this changeで1か所ずつ確認できます。Rejectはその変更を提案内容から取り消し、Acceptは確認済みの印を付けます。レビューの完了は従来どおり、ファイル全体の受け入れ・拒否で行います。必要なのはv2.1.275以降です。100か所を超えるdiffではボタンが付かないので、ファイル単位で確認します。diffTool を切り替えて効果を確かめたいときは、まずパーミッションモードがManualになっているかを確認します。モードの切り替え手順はVS Code拡張の基本的な使い方で扱っています。
diffToolを設定する2つの方法
設定を変えるには /config を使う方法と、設定ファイルを直接編集する方法があります。/config は操作の手間が少ないため基本の選択肢になり、設定ファイルの直接編集は複数マシンへの展開やスクリプトからの一括設定に向いています。
まず /config から変える場合の流れは次のとおりです。
/configでdiffToolを切り替える
- 1
IDEに接続した状態でclaudeを起動する
VS CodeまたはJetBrainsの統合ターミナルから
claudeを起動します。外部ターミナルなら、起動後に/ideを実行して接続します。JetBrainsで起動中のIDEにプラグインが入っていなければ、/ideがプラグインを入れてIDEの再起動を求めます。 - 2
/configを開く
接続が確立していると、一覧にDiff toolが現れます。接続していない外部ターミナルでは、この項目自体が出ません。
- 3
autoかterminalを選ぶ
選ぶと、Claude Codeが値を
~/.claude.jsonに書き込みます。
/ide
/config/ide が「No available IDEs detected」と返すときは、IDEが起動していないか、プラグインが入っていないかを疑う場面です。統合ターミナルから起動したのに自動接続されないなら、起動した場所が外部ターミナルでないかも確認します。起動オプションの claude --ide は、使えるIDEがちょうど1つあるときに起動時から接続します。手元のv2.1.287で claude --help を実行すると、このフラグは次の説明で出ます。
$ claude --version
2.1.287 (Claude Code)
$ claude --help
--ide Automatically connect to IDE on startup if exactly one valid IDE is available外部ターミナルを使うたびに /ide を打つのが手間なら、autoConnectIde を true にしておく方法があります。外部ターミナルから起動したときも自動でIDEに接続します。1回だけ挙動を変えたいときは、環境変数 CLAUDE_CODE_AUTO_CONNECT_IDE の方が優先されます。autoConnectIde も diffTool と同じ Global config 区分のキーで、~/.claude.json に保存されます。
/config から選ぶ手順のほかに、設定ファイルを直接書き換える方法もあります。diffTool は ~/.claude.json に書く「グローバル設定」で、.claude/settings.json や .claude/settings.local.json には書けません。
{
"diffTool": "terminal"
}手編集で diffTool を書き換えたあと、動作中のセッションにいつ反映されるかは公式ドキュメントに書かれていません。確実に確かめたいなら、/config のDiff tool欄の値を見るか、セッションを開き直す方法があります。
--settings フラグは diffTool を設定できません。--settings で渡せるのはユーザー設定ファイルに書けるキーまでで、Managed と Global config のキーは対象外です。グローバル設定のキーは ~/.claude.json 以外では無視されます。diffTool を変える経路は /config と ~/.claude.json の直接編集になります。
設定一覧のScope欄は、書き込めるファイルを User・Project・Local・Managed の4つと Global config(~/.claude.json)で示します。diffTool は Global config だけです。
autoとterminalの動作の違い
diffToolの2つの値
auto
VS CodeまたはJetBrainsのIDEに接続していれば、そのIDEのdiffビューアーで変更案を開きます。
terminal
IDEへの接続有無にかかわらず、ターミナル上に差分を表示したままにします。
CLIだけで作業していてIDEに接続していない場合は、差分がターミナルに表示されます。
設定ファイルの置き場所を間違えると効かない
diffTool はプロジェクトの .claude/settings.json に書いても無視されます。公式ドキュメントはグローバル設定のキーについて「~/.claude.json に保存し、設定ファイルでは効かない」と書いています。チームで共有する設定ファイル側に置いても、他のメンバーには反映されません。ユーザーごとに自分の ~/.claude.json で設定する項目だと考えておくと迷いません。
autoConnectIde や autoInstallIdeExtension のような他のIDE関連設定も、Claude Code本体の Global config キーなので同じ扱いです。VS Code拡張そのものの設定項目はVS Code拡張の設定項目にまとまっています。Claude Codeや /config がこれらのキーの大半を代わりに書き込むため、手で直接編集することもできますが、通常は /config に任せておけば十分です。設定を変えたのに反映されていないように見えたら、まず /config のDiff tool欄の表示値を確認します。~/.claude.json の中身を読むより先にこれを見ると、書き込み先の取り違えかどうかを切り分けられます。
diffToolは/diffコマンドの表示先を変えない
diffTool と名前が似ている /diff コマンドは、別の仕組みです。/diff はいまの作業ツリーの変更点を見返すための操作で、フルスクリーン表示ではdiffパネルを会話の横に開き、クラシック表示ではdiffビューアーをプロンプトの位置に開きます。どちらもClaude Code自身の画面内に表示され、diffTool の値には影響されません。
diffTool が対象にしているのは、Claude Codeがファイルの変更を提案し、実行許可を求める場面の差分表示だけです。読み返し用の /diff と、変更提案時の diffTool は別の設定だと切り分けて考える必要があります。
/diff のdiffパネルが開くのは、フルスクリーン表示・gitリポジトリ・ターミナル幅110列以上・Claude Code v2.1.260以降がそろったときだけです。条件を満たさないと、/diff はdiffビューアーを開くか、開けない理由を表示します。パネルでは比較対象を切り替えられ、その選択も diffTool の値とは無関係です。
VS CodeとJetBrainsでの見え方
VS Code拡張が接続され diffTool が auto のとき、Claudeがファイル編集を提案すると、オリジナルと変更案を左右に並べたビューが開きます。その場で許可・拒否や修正を選べます。ビュー内で提案内容を直接編集すると、Claudeはその変更を認識したうえで続きを進めます。
JetBrainsプラグインでも仕組みは同じで、Diff tool を auto にするとIDEのdiffビューアーで変更案が開き、terminal にするとターミナル表示に戻ります。この設定項目はプラグインの Settings → Tools → Claude Code [Beta] ではなく、Claude Code本体の /config 側にあります。JetBrains側の手順も上の3ステップと同じです。VS Code拡張とJetBrainsプラグインのどちらでも、値の意味と切り替え先は共通です(JetBrainsプラグインの導入手順は接続の確認方法から扱っています)。
差分の表示先ではなく見た目を変える設定
diffTool と混同しやすいものに、差分の色付けを変える設定があります。syntaxHighlightingDisabled の既定値は false で、true にするとターミナルのdiff・コードブロック・ファイルプレビューすべての構文ハイライトを無効にできます。diffだけを対象にしたいときは、環境変数 CLAUDE_CODE_SYNTAX_HIGHLIGHT を false にする方法もあります。どちらも「差分をどこに出すか」を決める diffTool とは役割が異なり、「差分をどう見せるか」を調整する設定です。ターミナルの配色とdiffの色が干渉する場合はこちらを調整し、表示先そのものを変えたいときは diffTool を使うと目的に合った設定にたどり着けます。入力欄のカーソルの見た目を切り替えたいときは、環境変数CLAUDE_CODE_NATIVE_CURSORが使えます。
書き込める場所も違います。syntaxHighlightingDisabled は Any file 区分で、ユーザー・プロジェクト・ローカル・管理設定のどのファイルにも書けます。プロジェクトの .claude/settings.json にチーム共通の値として置いても構いません。一方の CLAUDE_CODE_SYNTAX_HIGHLIGHT は環境変数なので、設定ファイルに書き込む値ではなく、シェルやセッションの起動時に指定して使います。恒常的にチームへ配りたいなら syntaxHighlightingDisabled、その場だけ手元で切り替えたいなら環境変数、という使い分けになります。
まとめ
diffTool はVS Code・JetBrainsのIDEに接続しているときに、Claudeの変更提案をIDE内で見るかターミナルで見るかを選ぶための設定です。設定できる値は auto と terminal の2つだけで、外部の差分プログラムを指定する機能ではありません。/config からいつでも切り替えられます。
IDEのdiffビューアーでレビューしたいならauto、ターミナルの表示に揃えたいならterminalを選ぶ、という基準で足ります。変更が反映されないときは、接続状態・パーミッションモード・書き込み先の順に疑うと切り分けが早くなります。