本文へ移動
Claude Tips

対話モードの操作

Claude Code の対話モードで、入力欄の接頭辞、複数行入力、履歴、Vim モード、バックグラウンド実行、キュー、/diff、/btw などの仕組みを使う方法をまとめます。

対話モードは、claude を起動して Claude と会話するふつうの使い方です。このページでは入力欄と画面まわりの仕組みを説明します。個々のキーの一覧はキーボードショートカット、/ で呼ぶコマンドはスラッシュコマンド一覧にあります。

  • 入力欄の頭に /・!・@・: を置くと、コマンド・シェルモード・ファイル参照・絵文字になります
  • 複数行入力、履歴、Vim モードで入力を編集できます
  • Claude の作業中に送ったメッセージはキューに入り、ターンを中断しません
  • 長いコマンドはバックグラウンドで動かせます
  • /diff で変更を見て、/btw で会話に残さない質問ができます

入力欄の接頭辞#

入力 働き
行頭の / コマンドまたはスキル。/ に続けて文字を打つと絞り込める
行頭の ! シェルモード。コマンドを直接実行する
@ ファイルパスの補完。セッション間メッセージが使えるセッションでは、@ の後に1文字以上入力すると、同じマシンの生きているほかのセッションも候補に出る(v2.1.232 以降)
: 絵文字ショートコード(v2.1.217 以降)
空の入力での ? ショートカットのヘルプパネルの表示切り替え。文字がある状態の ? は文字として入る

スラッシュコマンドの補完#

/ を打つと、組み込みコマンド、同梱のスキルと自作のスキル、プラグインや MCP サーバーが出すコマンドが候補になります。プラットフォームやプランによって、見えないコマンドもあります。メニューに出ないが、名前を最後まで打てば動くコマンドもあります。全コマンドはスラッシュコマンド一覧にあります。

フルスクリーン表示では、/ と @ の候補リストにマウスも使えます(ホバーで強調、クリックで採用)。

プロンプトの途中でも補完できます。スペースの後に / と名前の頭文字を打ちます(例:run the tests, then /com)。名前がその文字で始まるコマンドだけが一致するので、/tmp/notes.md のようなパスで候補が開き続けることはありません。コマンドとして実行されるのは、メッセージの先頭にあるときだけです。

  • フルスクリーン表示:入力中に一致が一覧で開くが、どの行も強調されないので、Enter は入力どおりに送信する。Tab で先頭の一致を挿入し、矢印キーで行を選んで Enter でも挿入できる
  • それ以外:先頭の一致の残りがカーソルの先にゴースト表示される。一致が複数あると +2 のような個数も出る。一致が1つなら Tab で挿入し、複数なら Tab で一覧を開いて矢印キーと Enter で選ぶ
  • どちらも、途中の / だけの状態で Tab を押すと全コマンドが並ぶ
  • プラグインのスキルは、素の名前でも一致する。/deploy で myplugin:deploy-app が見つかり、挿入時は /myplugin:deploy-app と書かれる

複数行入力#

方法 ショートカット 補足
手早い方法 \ + Enter どの端末でも動く
Option キー Option+Enter macOS で Option を Meta にしたあと
Shift+Enter Shift+Enter iTerm2・WezTerm・Ghostty・Kitty・Warp・Apple Terminal・Windows Terminal ではそのまま動く
制御シーケンス Ctrl+J 設定なしでどの端末でも動く
貼り付け そのまま貼る コードブロックやログ向き

ほかの端末での Shift+Enter の設定と、Option を Meta にする方法はターミナル・表示・音声入力にあります。

入力の取り扱い#

不可視文字の除去#

貼り付けたテキストには、タグ文字・双方向制御・ゼロ幅スペースなど、端末が何も描かない Unicode 文字が混じることがあります。コピーした文字列が、画面に見えない指示を運んでこないように、Claude Code は Enter を押したとき、送信の前にそれらを取り除きます。プロンプトと、折りたたまれた貼り付け参照の中身が対象です。ペルシア語やインド系の文字で使う結合子と、絵文字の列の中の選択子は残します。

何かを取り除いたときは、その Enter では何も送りません。きれいにしたプロンプトが入力欄に戻り、Removed 3 invisible characters · review and press Enter to send のような通知が出るので、確認してもう一度 Enter を押します。

claude "fix the login bug" のようにコマンドラインでプロンプトを渡したときは、2回目の Enter を待ちません。取り除いて通知を出し、きれいにしたプロンプトを送ります。きれいにした結果が / で始まるなら、送らず入力欄に置いて確認させます。

絵文字ショートコード#

: に絵文字のショートコードを続けると、絵文字が入ります。v2.1.217 以降です。

  • :heart: のように最後まで打つと、閉じの : を打った時点で置き換わる
  • :hea のように : と2文字以上を打つと候補が開き、Tab か Enter で強調中の絵文字を挿入する
  • ショートコードは、入力の先頭かスペースの後ろにあるときだけ有効。単語や URL の中の : では候補が開かない
  • 切るには settings.json の emojiCompletionEnabled を false にする。候補とその場の置き換えの両方が無効になる

スペルチェック#

入力欄で、綴りの誤りに下線を引けます。対象は入力欄の文字だけで、Claude の返信やファイルは見ません。シェルモード・Ctrl+R の履歴検索・音声ディクテーションの間と、スクリーンリーダーモードでは何もチェックしません。既定ではオフで、v2.1.235 以降です。

必要なもの:aspell・hunspell・ispell のどれかをインストールし、PATH に通します。見つかった最初の1つを、この順で使います(Windows では、パッケージマネージャーが入れる .cmd の窓口も含む)。aspell --version・hunspell --version・ispell -v で確かめられます。

spellcheck 設定は、ユーザー設定(~/.claude/settings.json)、--settings に渡すファイル、管理設定のどれかに書きます。プロジェクトの .claude/settings.json と .claude/settings.local.json では無視されます。

json
{
  "spellcheck": { "enabled": true }
}

--settings で渡すときは、JSON をファイルに保存して claude --settings spellcheck.json と起動します(そのセッションだけ有効)。管理設定に書くと、その設定を受ける全員に効き、利用者は切れません。

enabled と並べて、次のフィールドも書けます。

フィールド 内容
checker aspell・hunspell・ispell。指定したものが無くても別のものへ切り替えない。ほかの値は auto 扱い
language チェッカーの形式の辞書名(例:en_GB)。パスや空白入りの名前など、素の辞書名でない値は無視され、チェッカーの既定の辞書を使う
color yellow のような色名、または #rrggbb・#rgb・rgb(r,g,b)・ansi256(n)・ansi:<name>。既定と、認識できない値のときはテーマのエラー色
json
{
  "spellcheck": {
    "enabled": true,
    "checker": "hunspell",
    "language": "en_GB",
    "color": "yellow"
  }
}

複数の場所に spellcheck があるときは、管理設定、--settings、ユーザー設定の順で1か所だけが使われ、フィールドは混ぜません。

  • 入力が止まってしばらくすると、辞書に無い単語に下線が付く。入力中の単語は、先へ進むまで無印。文字は変更しない
  • コードに見えるものは対象外:/help などのコマンド、@ メンション、URL、ファイルパス、--verbose のようなフラグ、数字・アンダースコアや2文字目以降の大文字を含む語、バッククォート内。中国語・日本語・韓国語・タイ語・ラオ語・クメール語・ミャンマー語も飛ばす
  • Claude Code 自身の単語リストは無く、チェッカーが誤りと言った語に下線が付く。下線を消したい語は、チェッカーの個人辞書に追加し、Claude Code を再起動する

何も下線が出ないのは、チェッカーを動かし続けられないときです。

  • チェッカーが無い、または checker で指定したものが無い
  • チェッカーが起動時または途中で2回続けて失敗した(1回目で再起動し、2回目で、Claude Code を再起動するまで止まる)
  • チェッカーの応答が15秒を超えることが3回あった(そのたびに待っていた語は無印のままで、3回目で再起動まで止まる)

原因は、スペルチェックを有効にして claude --debug で起動し、1語打ってから ~/.claude/debug/<session-id>.txt の [spellcheck] の行を見て調べます。辞書が無いというエラーなら、辞書をインストールするか、language を持っている辞書に変えます。

履歴#

Claude Code は入力したプロンプトの履歴を持ち、Up で同じプロジェクトの過去のセッションのプロンプトにも届きます。

  • 入力履歴は作業ディレクトリごとに保存される
  • /clear は新しいセッションを始める。呼び出しは新しいセッションのプロンプトが先に並び、前のセッションのものが後に続く。前の会話は残り、再開できる
  • 同じプロンプトを2回続けて送っても履歴は1件。Up は前の別のプロンプトへ進む
  • 貼り付けテキストを含むプロンプトを呼び出して再送すると、貼り付けた内容の全文をもう一度送る。内容が自動クリーンアップで消えていたときは、[Pasted text #N] の文字列は送られない(扱いはターミナル・表示・音声入力の大きな貼り付けを参照)
  • ! による履歴展開は、既定で無効

Ctrl+R の逆方向検索#

Ctrl+R で履歴を対話的に検索します。フルスクリーン表示では検索ダイアログが開きます。文字で絞り込み、Up・Down で一致の間を動き、Ctrl+S で範囲(このセッション・このプロジェクト・全プロジェクト)を切り替えます。Enter か Tab で候補を入力欄に入れ、Esc で取り消します。

従来のレンダラーのインライン検索は次の手順です。

  1. Ctrl+R で検索を始める
  2. 探す文字を入力する(一致した結果の検索語が強調される)
  3. Ctrl+R をもう一度押すと、より古い一致へ進む
  4. 検索範囲は常に全プロジェクトのプロンプト
  5. 採用:Tab か Esc で現在の候補を採って編集を続ける。Enter で採って即実行する
  6. 取り消し:Ctrl+C で元の入力に戻して取り消す。空の検索で Backspace を押しても取り消せる

履歴は新しいものから順に走査し、重複は最新の1件にまとめられます。フルスクリーンのダイアログは、直近のプロンプトをすぐ出し、古いものの一致は読み込みに合わせて追加されます。採用と取り消しは、読み込み中でもすぐ効きます。

Vim モード#

/config の「Editor mode」で Vim 風の編集を有効にします。トランスクリプトビューア(Ctrl+O)の切り替えや、/config のようなパネルの開閉をしても、Vim のモードとカーソル位置は保たれます。NORMAL モードのまま離れれば、戻っても NORMAL モードで、カーソルも元の位置です。キー割り当てとの関係はキーボードショートカットを参照してください。

モードの切り替え#

コマンド 動作 元のモード
Esc または Ctrl+[ NORMAL モードに入る。Kitty キーボードプロトコルの端末で Ctrl+[ は v2.1.242 以降 INSERT、VISUAL
i カーソルの前に挿入 NORMAL
I 行頭に挿入 NORMAL
a カーソルの後ろに挿入 NORMAL
A 行末に挿入 NORMAL
o 下に行を開く NORMAL
O 上に行を開く NORMAL
v 文字単位の選択を始める NORMAL
V 行単位の選択を始める NORMAL

INSERT モードのキー列の割り当て#

vimInsertModeRemaps 設定で、INSERT モードの2キーの並びを Escape に割り当てられます(jj で NORMAL モードに戻るなど)。v2.1.208 以降です。次の例は、Vim モードを有効にして jj を Escape にします。

json
{
  "editorMode": "vim",
  "vimInsertModeRemaps": { "jj": "<Esc>" }
}
  • キーはちょうど2つの表示できる文字を続けて打つ形で、対象は "<Esc>" だけ。長さや対象が違う項目は無視される
  • 1文字目は普通に入力され、1秒以内に2文字目を打つと、保留していた1文字目が消えて NORMAL モードになる(どちらの文字も入力に残らない)。1秒を過ぎるか別のキーが続くと、両方が文字として残る。間を空ければ、その並びを含む単語も打てる
  • この設定は、ユーザー設定ファイル、--settings、管理設定からだけ読まれる。プロジェクトの .claude/settings.json と .claude/settings.local.json の項目は無視されるので、取得したリポジトリがキー入力を書き換えることはない

移動(NORMAL モード)#

コマンド 動作
h / j / k / l 左・下・上・右へ移動
Space 右へ移動
w 次の単語
e 単語の末尾
b 前の単語
0 行頭
$ 行末
^ 最初の空白以外の文字
gg 入力の先頭
G 入力の末尾
f{char} 次にその文字が現れる位置へ
F{char} 前にその文字が現れる位置へ
t{char} 次にその文字が現れる直前へ
T{char} 前にその文字が現れる直後へ
; 直前の f/F/t/T を繰り返す
, 直前の f/F/t/T を逆向きに繰り返す
/ Ctrl+R と同じ逆方向の履歴検索を開く。空の検索には、コマンドメニューを開くなら Esc、i、/ の順に押すというヒントが出る

NORMAL モードで、カーソルが入力の先頭か末尾にあってこれ以上動けないときは、j/k と Up/Down がコマンド履歴を辿ります。空のプロンプトで Left を押すと、INSERT でも NORMAL でもエージェントビューが開きます(v2.1.219 より前、NORMAL モードでは何も起きませんでした)。

編集(NORMAL モード)#

コマンド 動作
x 1文字削除
r{char} カーソル位置の文字を {char} に置換
dd 行を削除
D 行末まで削除
dw / de / db 単語・末尾まで・前へ削除
df{char} / dt{char} 次のその文字までを含めて、または手前まで削除
dj / dk 現在の行と、その下または上の行を削除
dgg / dG 現在の行から最初または最後の行まで削除
d0 / c0 / y0 カーソルから行頭まで削除・変更・ヤンク。v2.1.281 以降
cc 行を変更
C 行末まで変更
cw / ce / cb 単語・末尾まで・前へ変更
s 文字を置換:カーソル位置の文字を消して INSERT モードに入る。v2.1.211 以降
S 行を置換:行を空にして INSERT モードに入る。v2.1.211 以降
yy / Y 行をヤンク(コピー)
yw / ye / yb 単語・末尾まで・前をヤンク
p カーソルの後ろに貼り付け
P カーソルの前に貼り付け
>> 行をインデント
<< 行をデデント
J 行を連結
u 取り消し
. 直前の変更を繰り返す

テキストオブジェクト(NORMAL モード)#

d・c・y などのオペレーターと組み合わせて使います。

コマンド 動作
iw / aw 単語の内側 / 周り
iW / aW WORD(空白区切り)の内側 / 周り
i" / a" 二重引用符の内側 / 周り
i' / a' 単一引用符の内側 / 周り
i( / a( 丸括弧の内側 / 周り
i[ / a[ 角括弧の内側 / 周り
i{ / a{ 波括弧の内側 / 周り

VISUAL モード#

v で文字単位、V で行単位の選択を始めます。移動で選択が広がり、オペレーターは選択に直接働きます。

コマンド 動作
d / x 選択を削除
y 選択をヤンク
c / s 選択を変更
p 選択をレジスタの内容で置換
r{char} 選択した全文字を {char} に置換
~ / u / U 選択の大文字小文字の反転 / 小文字化 / 大文字化
> / < 選択した行をインデント / デデント
J 選択した行を連結
o カーソルとアンカーを入れ替える
iw / aw / i" など テキストオブジェクトを選ぶ
v / V 文字単位と行単位を切り替える、または抜ける

Ctrl+V による矩形選択(ブロック単位の VISUAL モード)は使えません。

バックグラウンド実行#

長く動くコマンドを、バックグラウンドで動かして、その間も作業を続けられます。Claude Code は非同期に実行し、すぐにバックグラウンドタスクの ID を返します。

  • Claude にバックグラウンドで実行するよう頼む。または実行中の Bash ツールの呼び出しで Ctrl+B を押してバックグラウンドへ移す(tmux では2回押す)
  • コマンドがタイムアウトに達すると、sleep で始まるものを除いて、止めずに自動でバックグラウンドへ移る。CLAUDE_CODE_DISABLE_BACKGROUND_TASKS で無効にしたときや、bare モードで起動したときは、タイムアウトで止まる
  • 出力はファイルへ書かれ、Claude が Read ツールで読める
  • タスクには一意の ID が付き、追跡と出力の取得に使える
  • Claude Code の終了時に、バックグラウンドタスクは自動で片づけられる。macOS と Linux では、/tasks から止めたときや終了時に止めるとき、setsid や timeout で起動するなど、タスクのシェルから切り離されたプロセスも止まる
  • セッションを終了せずバックグラウンドへ回した場合、タスクはそのセッションの中で動き続ける
  • 出力が 5GB を超えたタスクは自動で終了され、理由が stderr に書かれる
  • macOS と Linux では、OS が重大なメモリ逼迫を報告し、セッションが30分以上アイドルでターンもサブエージェントも動いていないとき、実行中のバックグラウンドタスクを止める。v2.1.193 以降。理由はデバッグログに出る。止めたくなければ CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP を 1 にする
  • ターミナル・デスクトップアプリ・VS Code 拡張で操作するローカルのセッションのバックグラウンドコマンドに、制限時間はない。-p の実行やクラウドのセッションのような無人のセッションでは、Claude Code がバックグラウンドコマンドを制限時間で止める。詳しくはツール一覧にある
  • フォアグラウンドのサブエージェントが起動したバックグラウンドコマンドは、そのサブエージェントの実行が終わる(完了・失敗・中断)と終わる

すべてのバックグラウンドタスクを無効にするなら、環境変数 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS を 1 にします(bare モードの起動でも無効になります)。

バックグラウンドに向くコマンドの例は、ビルドツール(webpack・vite・make)、パッケージマネージャー(npm・yarn・pnpm)、テストランナー(jest・pytest)、開発サーバー、長く動くプロセス(docker・terraform)です。

シェルモード#

入力の頭に ! を付けると、Claude を通さずシェルコマンドを直接実行できます。

bash
! npm test
! git status
! ls -la
  • コマンドと出力が会話のコンテキストに入る
  • 進行状況と出力をリアルタイムで表示する
  • 長いコマンドは同じ Ctrl+B でバックグラウンドへ移せる
  • Claude が解釈や承認をする必要がない
  • 一部入力して Tab を押すと、現在のプロジェクトでの過去の ! コマンドから補完される
  • スラッシュを含むトークン(./src/ や ~/)を打つと、一致するファイルとディレクトリの候補が出て、Tab で採用する(v2.1.193 以降、全プラットフォーム)。Windows でも、候補の起動は \ ではなく /
  • 空のプロンプトで Esc・Backspace・Ctrl+U を押すと抜ける
  • ! で始まるテキストを空のプロンプトに貼ると、入力したときと同じくシェルモードに入る

サンドボックスを有効にしていても、シェルモードで打ったコマンドはサンドボックスの外で動きます(サンドボックスは Claude が実行するコマンドに適用されるため)。厳格なサンドボックスモードのセッションは例外です(詳しくはサンドボックス)。

出力がトランスクリプトに入ると Claude が自動で応答します。! npm test と打つだけで、失敗の説明が2つ目のプロンプトなしで返ります。応答は通常のプロンプトと同じコストです。応答なしで出力だけをコンテキストに入れる以前の挙動に戻すには、settings.json で respondToBashCommands を false にします(v2.1.186 より前は、常に応答なしでした)。

メッセージのキュー#

Claude の作業中にメッセージを入力して Enter を押すと、ターンを中断せず、キューに入ります。送られるまで、キューの項目は会話の中に並びます。! のシェルコマンドと、ほとんどのコマンドも同じようにキューに入ります。/status のように、送るとすぐ実行されるコマンドは別です。送ったメッセージとキューのメッセージは、Claude が応答を始めるまで灰色で表示されます。

接続した IDE の選択範囲を付けてキューに入れたメッセージは、Enter を押した時点の選択を保ち、あとで選択を変えても影響しません。

キューの中身が送られるとき#

  • メッセージ:Claude がツール呼び出しを実行中にキューへ入れると、それらが終わり次第、同じターンの中で Claude に渡される。ターンが終わってもキューに残っていれば、キー操作なしで、入力した順に送られる
  • コマンドとシェルコマンド:ターンが終わるまで保留され、キューに入れた順に1つずつ実行される

待たずに送るには Ctrl+Enter(または Ctrl+X Ctrl+S)を押します。キューのメッセージがすぐ送られ、下書きがあればその後ろに入ります。v2.1.275 以降です。! のシェルコマンドをメッセージより前にキューへ入れていると、このキーはターンを中断します。そうでなければ、キーを押したときの Claude の状態で変わります。

  • シェルコマンドやサブエージェントなど、バックグラウンドへ移せる作業の実行中:その作業はバックグラウンドへ移って動き続け、Claude は同じターンでメッセージを読む
  • 応答を書いているだけ、またはバックグラウンドへ移せないものの実行中:ターンを中断し、次にメッセージを送る(v2.1.281 より前は、どちらの場合も中断だった)

シェルモードではキーはコマンドをキューに入れるだけです。拡張キーを報告しない端末では Ctrl+Enter が Enter として届き、下書きをキューに入れるだけになります。Ctrl+X Ctrl+S はどの端末でも動きます。どちらも chat:sendNow アクションの割り当てです。Esc を押すと、下書きを送らずにターンを中断し、キューの中身がそのまま送られます。

/model・/effort・/fast は、キューに入れず、送るとすぐ実行されます。それぞれモデル・effort・fast mode を変えます。新しい設定が作業中のターンへ効くか、次のターンからかは、コマンドで違います。

コマンド 作業中のターンへの効き方
/model キャッシュの警告が出たら確認したあと、そのターンの次のリクエストから変更が効く
/effort 同じく、警告があれば確認したあと、そのターンの次のリクエストから効く
/fast ターン開始時の fast mode の設定を保つので、次のターンから効く。現在のモデルが fast mode に対応していないとき、オンにするとモデルも切り替わり、そのターンの次のリクエストから新しいモデルが使われる

キューを取り戻す#

入力欄の最初の行で Up を押すと、キューのメッセージとコマンドを取り戻せます。キューから外れて入力欄に1行ずつ、入力済みの文字の前に入ります。編集して Enter を押すと1つの項目として再びキューに入り、入力欄を空にすると破棄されます。

キューのシェルコマンドを取り戻せるのは、入力欄が空でほかにキューが無いときだけで、そのとき入力欄はシェルモードに切り替わります。それ以外では、! 付きでキューに残り、ターンの後に実行されます。

プロンプトの提案#

セッションを開くと、プロンプト入力欄に灰色の例が表示されます。プロジェクトの git 履歴から選ばれるので、最近触ったファイルに沿った例になります。Claude の応答後には、会話の履歴から次のプロンプトが提案されることがあります(複数段のリクエストの次の一歩など)。

  • Tab か Right で提案を入力欄に入れ、Enter で送信する
  • 入力を始めると消える

提案は、セッションと同じモデルへの短いバックグラウンドのリクエストで作られます。プランの使用量上限か API の料金に数えられますが、会話のプロンプトキャッシュを再利用するので、ほぼキャッシュの読み出しと少しの出力トークンで、追加コストは小さいです。

次の場合、対話モードで提案が既定でオフになり、/config の「Prompt suggestions」の切り替えも隠れます。サードパーティのプロバイダーや Claude apps gateway 経由など、フィーチャーフラグを取得しないセッションと、インストールやアップグレード後の最初のセッションでフラグが届いていないときです。

個別の提案が飛ばされるのは、次のような場合です。

  • プロンプトキャッシュが冷えている(余計なコストを避けるため)
  • 一部のセッションで、会話の最初のターンの後
  • 前の応答がエラーで終わった
  • プランモード中
  • アカウントが使用量上限の近くか上限に達している。上限まで提案を出し続けるには CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION を true にする(v2.1.238 より前は、true でも上限の近くでは飛ばされた)
  • エージェントチームでは、既定でチームメイトのセッション。リードのセッションは提案を出す

「Showing fewer prompt suggestions · use one to bring them back」と出たら、使わない提案が続いたため、Claude Code が提案を出す頻度を下げています。いつもの頻度に戻すには、提案を1つ使うか、CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION を true にします。

print モード(-p)では既定で提案を作りません。-p "<prompt>" --output-format stream-json --verbose に --prompt-suggestions を付けると、提案が作られたターンごとに prompt_suggestion メッセージが出力されます。非常に短い会話や冷えたキャッシュでは、ここでも作られないので、短い -p 1回では出ないことがあります。

提案を完全に切る方法は次のどれかです。

  • /config の「Prompt suggestions」をオフにする
  • 設定ファイルで promptSuggestionEnabled を false にする
  • 環境変数 CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION を false にする(設定より優先される)
bash
export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

組織全体で切るには、管理設定で promptSuggestionEnabled を false にし、管理設定の env キーでも CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION を false にします。そうすると、利用者が自分の環境変数で再び有効にできません。

/diff で変更を見る#

/diff で、Claude Code を離れずに作業ツリーの変更を見られます。Claude がここまでに行った編集と、そのほかのコミット前の変更が並びます。何が開くかは、使っているレンダラーで変わります。

  • フルスクリーン表示:会話の横に diff パネルが開き、作業を続けても開いたまま更新されます
  • 従来のレンダラー:プロンプトの上に diff ダイアログが開き、読み終わったら閉じます

パネルとダイアログは、Claude Code に組み込まれた mod の cc-plugin-diff が出しています。/plugin でこの mod をオフにすると、/diff は従来のパネルと diff ビューアを開きます。

git から読む変更では、サブモジュールは1項目として表示され、指すコミットが変わったときだけ出ます(サブモジュール内のファイルの編集は出ません)。Claude がファイルを編集したあとは、パネルにもダイアログにも、ターンごとの編集を見るビューが加わります。ターンのビューは git ではなく Claude のファイル編集から作るので、シェルコマンドによる変更は作業ツリーのビュー(Current)にしか出ません。

diff パネル#

変更されたファイルを、追加行数と削除行数つきで一覧し、その下に各ファイルの diff を表示します。Claude がファイルを編集するかシェルコマンドを実行するたびに更新されます。パネルを閉じるには、もう一度 /diff を実行するか、ヘッダーの ✕ をクリックします。

使う条件は次のとおりです。

  • フルスクリーン表示
  • git リポジトリ
  • 幅が110桁以上の端末
  • Claude Code v2.1.287 以降

Claude がファイルを編集し始めると、端末の幅が144桁以上なら、パネルが自動で開きます。一度自分で /diff で開いたあとは、以降のセッションで、収まる幅の端末なら Claude が編集した時点で開きます。パネルを閉じると、/diff を再び実行するまで、このセッションでも以降のセッションでも閉じたままです。

パネルを開いている間にできることは次のとおりです。

  • ファイルへ移動:一覧の行をクリックする。パネルのスクロールはマウスホイール。ファイル一覧自体が長すぎるときは Alt+Up・Alt+Down、または Ctrl+Up・Ctrl+Down でスクロールする
  • ファイルの変更について Claude に聞く:diff の上、ファイル名の右にある ask をクリックする。そのファイルの diff が次のプロンプトに付き、送るまでボタンは asked ✓ と表示される。2つ目のファイルで ask を押すと、1つ目と入れ替わる
  • 1つのターンの編集を見る:パネルのヘッダーにある source ピッカーをクリックし、Up・Down でターンを選んで Enter を押す。ターンは T1・T2 のように表示される。ピッカーは Claude がファイルを編集したあとに出て、Current で作業ツリーへ戻る
  • 省かれたファイルを出す:一覧はテストファイルと生成ファイルを除き、このセッションより前の変更を最下部の1行にまとめている。どちらの個数の行もクリックで展開できる
  • 比較の基準を変える:Ctrl+X B で、このセッションの変更、コミット前の変更を1つの一覧にしたもの、デフォルトブランチから分かれて以降のすべて、の順に切り替わる。選択はリポジトリごとに記憶される

ファイル一覧のスクロールや比較の切り替えのキーを割り当て直すにはキーボードショートカットの「Diff パネル」を見てください。

diff ダイアログ#

diff ダイアログは、プロンプトの上に枠付きのブロックとして開き、変更されたファイルを追加行数と削除行数つきで一覧します。比較の基準は HEAD、または、このリポジトリで最後に diff パネルで選んだものです。

Claude がファイルを編集したあとは、一覧の上に source ピッカーが出ます。Claude にファイルを編集させたプロンプトごとに、T1・T2 のようなターンのビューが1つずつ並び、そのターンの編集だけを見せます。Current で作業ツリーへ戻ります。

ダイアログでは次のキーを使います。

  • Up と Down:ファイルを選ぶ
  • Enter:選んだファイルの diff を開く。Up・Down か PageUp・PageDown でスクロール
  • Esc:ファイルの diff から一覧へ戻る。一覧からはダイアログを閉じる
  • Tab:source ピッカーへ移り、Up・Down と Enter で Current かターンのビューを選ぶ。ファイルの diff の中では ask ボタンへ移り、Enter でそのファイルの diff を次のプロンプトに付ける

/btw で会話に残さない質問をする#

/btw は、会話の履歴に加えずに、いまの作業について質問します。

text
/btw what was the name of that config file again?

Claude は、会話にすでにあるもの(あなたのメッセージ、Claude の返信、集めたツールの結果)から答えます。読んだコード、前の判断など、セッション内のことを聞けます。後の質問は、前の /btw の質問も見ます。質問のたびに直近20往復が再送され、消すまで続きます。質問と答えは会話履歴に入りません。ターミナルでは閉じられるオーバーレイに出ます。スレッドはメモリ上にあり、x で以前のやり取りを消せ、Claude Code を終えると消えます。

VS Code 拡張のチャットパネルでは、/btw はこのオーバーレイではなくパネルを開き、そのまま追質問できます。パネルのスレッドはウィンドウを再読み込みしても残ります。拡張は v2.1.227 以降が必要で、それより前には /btw がありません。

  • Claude の作業中も使える。メインのターンを中断せず、独立に動く。それまでの会話全体を見るが、Claude がまだ書いている返信は見えない
  • ツールは使えない。ファイルの読み取り、コマンドの実行、検索はできない。Claude がツール呼び出しを文字で書いてしまった場合、答えの末尾に何も実行していない旨の注記が付く
  • 1回の応答だけ。オーバーレイに追加のターンは無い。続けるには、別の /btw 質問をする。ローカルのセッションでツールを使って続けるには f で、この質問と答えをバックグラウンドのサブエージェントへフォークする
  • 低コスト。プロンプトキャッシュが温まっている間は、答えそのもの以外のコストはほとんどかからない

直近の5件の以前の質問が、現在の答えの上に薄い一覧で出ます。古いものは件数だけが出ます。閉じたあとにオーバーレイへ戻るには、質問なしで /btw を実行します。最新のやり取りでオーバーレイが開きます(v2.1.212 より前は、使い方のメッセージが出ていました)。

答えが出たあと、オーバーレイでは次のキーが使えます。

キー 動作
Space、Enter、Escape 答えを閉じてプロンプトへ戻る
Up / Down 答えをスクロール
Shift+Left / Shift+Right この答えと以前の /btw の答えの間を移動。Shift+Left で古いほう、Shift+Right で現在のほうへ。[ と ] も同じで、矢印キーに Shift を付けて報告しない端末向け。Tab / Shift+Tab も同じ答えを辿る。v2.1.257 以降(v2.1.187〜v2.1.256 は Shift なしの Left / Right)
c 答えを生の Markdown でクリップボードへコピー。マウス選択は端末の折り返し表示を拾ってしまうので、こちらを使う
f 親の会話にこの質問と答えを加えて引き継ぐ、フォークしたサブエージェントを起動する。ツールを使って続けられる。現在のセッションに留まり、フォークはプロンプトの下のパネルに出る。ローカルのセッションだけ
x 現在の答えの上の、以前の /btw のやり取りの一覧を消す

アタッチしたバックグラウンドセッションでは、Left でデタッチしてエージェントビューへ戻れます(答えがまだ届いている途中でも)。質問は実行され続け、次にアタッチしたとき、質問か答えでオーバーレイが開きます(v2.1.257 より前は、そこで Left はデタッチしませんでした)。

/btw は会話全体を見ますがツールを持ちません。サブエージェントはツールを持ち、受け取ったプロンプト(フォークなら会話のコピー)から始まります。このセッションで Claude がすでに知っていることは /btw、新しく調べに行くことはサブエージェントです。

タスクリスト#

タスクリストは、Claude が作る ToDo のチェックリストです。複数段の作業の計画で作られ、保留・実行中・完了を表示します。バックグラウンドタスクの画面とは別で、実行中のシェルとサブエージェントは /tasks で見ます。

リストが埋まるのは、タスク追跡ツールを持つセッションだけです。既定で持つのは、Claude 3.x・Opus 4 から 4.7・Sonnet 4 から 4.6・Haiku 4.5 です。ほかのモデル(Claude Code が認識しないモデル ID を含む)では、CLAUDE_CODE_ENABLE_TODO_TOOLS=1 などで有効にしない限り空のままです(ツール一覧の「Task tool availability」を参照)。

  • Ctrl+T でタスクリストの表示を切り替える。一度に最大5件まで表示する。チェックリストがまだ無いときは、切り替えても何も見えない
  • 展開したままにすると、--resume や --continue など、タスクの残るセッションで次に起動したときも展開で復元される。タスクが空なら折りたたんで始まる
  • 全部を見る、または消すには、Claude に直接頼む(「show me all tasks」「clear all tasks」)
  • タスクはコンテキストの圧縮をまたいで残る
  • セッション間でタスクリストを共有するには、CLAUDE_CODE_TASK_LIST_ID で ~/.claude/tasks/ の名前付きディレクトリを使う:CLAUDE_CODE_TASK_LIST_ID=my-project claude

セッションの要約(recap)#

席を離れてからターミナルに戻ると、ここまでの内容を1行で要約して出します。直近の完了ターンから3分以上経ち、ターミナルがフォーカスを外れているとき、バックグラウンドで1回生成されるので、戻ったときには用意できています。セッションが3ターン以上になってから出て、2回続けては出ません。

/recap で、いつでも要約を作れます。/recap は自分で頼んだときだけ動きます。Slack・Teams・プロジェクトのスレッドから中継されたメッセージや、ルーティンが送ったプロンプトの中で届いたときは、要約の代わりに通知が出ます。自動の要約を切るには、/config の「Session recap」をオフにします。既定ではすべてのプランとプロバイダーでオンです。自動の要約は非対話モードでは出ません。自動の要約も /recap の出力も400文字が上限です。

使用量の上限が解けるまで待つ#

claude.ai の使用量上限で作業が止まると、Claude Code は開いたセッションの中で待ち、上限が解けたあと自動で作業を再開します。claude.ai のサブスクリプションでサインインした対話セッションでは、自動再開が既定でオンです。v2.1.234 以降です。待っている間、セッションの下部に、上限が解ける時刻と再開の時刻が出ます。

text
Usage limit reached · limit resets 3:45pm
Continuing automatically at 3:45pm · esc to cancel

どちらの行も、この言葉のあとに続きが付くことがあります(1行目にヘルプへのリンク、2行目に /usage-credits to continue now など)。待ちが自動で始まったときは、会話にも Usage limit reached · continuing automatically at 3:45pm · esc to cancel という行が記録されます。

セッションは開いたままにします。その後の動きは、待ちの終わり方で変わります。

  • 解除時:2行目が Continuing shortly · esc to cancel に変わり、続いて Usage limit reset · continuing automatically になり、Claude Code が、止まったところから作業を再開するよう Claude に促す。最後のメッセージは再送しない
  • コンピューターがスリープした後:約30分を超えるスリープの間に上限が解けたなら、1行目が Your usage limit has reset、2行目が Press enter to continue になるので Enter で再開する。それより短いスリープや、解除の前に終わったスリープなら自動で再開する
  • 早めに:待ちの間に /usage-credits で使用量クレジットを追加し終えたとき、/upgrade のあとにサインインし直したとき、/model でモデルを切り替えたときは、使用量が使えるかを確認し、使えるならすぐ再開する。ブラウザで自分でアップグレードや購入をしたときは確認しない。プランモードを別のモデルで動かす opusplan などの設定では、解除まで待つ

再開した作業は通常のターンと同じで、権限の確認は通常どおり出るので、離席中に許可待ちで止まることがあります。再び上限に当たると、Claude Code は待ちを自動で張り直しますが、続けて2回までで、そのあとは止まって Automatic continue stopped after repeated usage-limit hits · /rate-limit-options to try again と表示します。

待ちを取り消す#

待ちの2行が出ている間に、空のプロンプトで Esc、または Ctrl+C を押します。/rate-limit-options を実行して「Don't continue automatically」を選んでも取り消せます。Automatic continue cancelled で始まる行で確認が出ます。取り消したあとは、プロンプトを送るか、/rate-limit-options の「Wait here, then continue automatically」で始まる行を選び直すまで、何も再開しません。その上限期間では、Claude Code は自分から待ちを始めません。次の期間では、また新しく始まります。

次の場合にも、作業を再開せずに待ちが終わります。

  • プロンプトを送った:待たず、そのプロンプトを送る。そのプロンプトも上限に当たったときは会話に残り、Claude Code が待ちをもう一度始める
  • Claude Code を終了した:セッションを再開しても、待ちは再開しない
  • 会話の持ち主が変わった:/login でアカウントを切り替える、会話をクリアする・巻き戻す、/resume で別のセッションを開く、/teleport で引き込む、/tui で再起動する、Claude Desktop・バックグラウンドセッション・クラウドへ渡す
  • 設定がオフになった、または解除が24時間より先になった:Claude Code が自分から始めた待ちだけが終わる。/rate-limit-options で自分で選んだ待ちはカウントダウンを続ける
  • 再開が阻まれた:再開プロンプトを止める UserPromptSubmit フック、またはモデルに届く前の失敗で待ちが終わる。再開が動かなかったことが通知されるので、プロンプトを送って続ける

自分で待ちを始める#

次の場合、Claude Code は自分から待ちを始めません。

  • Remote Control とエージェントチームのチームメイトのセッション:その端末にいる人は始められる
  • 解除が24時間より先:週の上限は数日先になることがある
  • Opus や Sonnet の上限に当たったが、別のファミリーのモデルを使っている:次のターンはその上限に当たらないことがある。プランモードを上限のファミリーで動かす opusplan などの設定は、この例外に入らない

こうした場合と、自動再開がオフのときは、自分の端末で上限に当たると、上限期間ごとに1回、使用量上限のオプションメニューが開きます。「Wait here, then continue automatically」で始まる行を選ぶと待ちが始まります。Remote Control やチームメイトのセッションでは、自分で /rate-limit-options を実行してメニューを開きます。

次の場合は、待ちそのものが提供されません。

  • バックグラウンドセッションと -p の実行:メニューの行がない
  • API キー・クラウドプロバイダー・従量課金:リクエストごとの課金なので、待つべき解除がない
  • 保存された claude.ai のログインがない LLM ゲートウェイ:保存された claude.ai のログインが有効な認証情報のときだけ、待ちが提供される

自動再開を切る#

/config の「Continue automatically at usage limit」をオフにするか、ユーザー設定で autoContinueAtUsageLimit を false にします。/config autoContinueAtUsageLimit=false でも切れ、-p でも使えます。ただし key=value の形では、再びオンにできません(この設定は無人での実行を許すためです)。

PR のレビュー状態#

オープンな pull request があるブランチで作業していると、フッターに「PR #446」のようなクリックできるリンクが出ます。下線の色がレビューの状態を示します。

下線の色 状態
緑 承認済み
黄 レビュー待ち
赤 変更が要求された
灰 ドラフト

pull request がマージまたはクローズされると、表示は消えます。Cmd + クリック(macOS)か Ctrl + クリック(Windows・Linux)でブラウザで開きます。セッション内で git push や、gh pr create・gh pr merge のように pull request を変える gh pr コマンドが成功すると、すぐに状態が更新されます。

ハイパーリンクの対応を検出できない場合(SSH 越しや tmux でよくある)でも、バッジはハイパーリンクとして描かれます。プレーンテキストにするには FORCE_HYPERLINK=0 を設定します。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC を設定すると、pull request とマージリクエストの状態の確認はしません。

補足

GitHub リポジトリの PR 状態には GitHub トークンが要ります。リモートのホストに応じて探します。

  • github.com:GH_TOKEN か GITHUB_TOKEN、または gh auth login で保存されたトークン。無いと、gh CLI が未インストールならフッターに install gh for PR status、インストール済みなら gh auth login for PR status と出る
  • GH_HOST に設定した GitHub Enterprise ホスト:GH_ENTERPRISE_TOKEN か GITHUB_ENTERPRISE_TOKEN、または gh auth login --hostname <host> のトークン。無いときは同じヒントが出る
  • ほかの GitHub ホスト:gh auth login --hostname <host> で保存されたトークン。無いと、バッジもヒントも出ない

GitLab のマージリクエスト#

GitLab のマージリクエストがあるブランチでは、GitHub の PR リンクの場所に、クリックできる MR !N のバッジが出ます。!N は GitLab のマージリクエスト N 番の書き方です。

下線の色 状態
緑 GitLab がマージ可能と報告している
黄 それ以外のオープンな状態
灰 ドラフト

マージまたはクローズされると消えます。git push や、glab mr create・glab mr merge のようにマージリクエストを変える glab mr コマンドが成功すると、すぐ更新されます。バッジを出す条件は次のとおりです。

  • Claude Code v2.1.234 以降
  • GitLab ホスト(gitlab.com かセルフマネージド)を指すリポジトリのリモート
  • PATH 上の glab CLI。glab auth login で認証済み

状態の確認では、GITLAB_TOKEN など glab のトークン環境変数は無視されるので、トークンをエクスポートしただけではバッジが出ません。glab とそのログインの有無はセッションに1回だけ調べるので、glab をインストールしたり glab auth login をしたりしたあとは、Claude Code を再起動します。

イシュー参照リンク#

Claude が owner/repo#123 の形でイシューに触れると、ターミナルがハイパーリンクに対応していれば、クリックで開けます。対応が検出されない場合は、FORCE_HYPERLINK を 1 にするとリンクが有効になり、0 にすると参照がプレーンテキストのままになります。

リンクになるのは owner/repo#123 の2段の形だけです。次はプレーンテキストのままです。

  • #123 だけ
  • group/subgroup/project#123 のような GitLab の入れ子のパス
  • コードスパンやコードブロックの中の参照

リンクは、参照が指すリポジトリではなく、git のリモートから判断したリポジトリのホスト向けに作られます。

リポジトリのホスト owner/repo#123 のリンク先
github.com、GitHub Enterprise ホスト、または下に無いホスト https://<host>/owner/repo/issues/123
gitlab.com https://gitlab.com/owner/repo/-/issues/123
bitbucket.org・codeberg.org・gitea.com リンクにならず、参照はプレーンテキストのまま

関連ページ#

チェックポイントと巻き戻しはチェックポイントと巻き戻し、セッションの再開はセッションの再開と管理を参照してください。

公式ドキュメント(英語)

2026年10月5日時点の内容をもとに、日本語でまとめています。

ページの一覧