本文へ移動
Claude Tips

ターミナル・表示・音声入力

Claude Code をターミナルで快適に使うための設定をまとめます。改行・Option キー・通知・tmux・テーマ・フルスクリーン表示・貼り付け・音声入力・スクリーンリーダーを扱います。

Claude Code は、設定なしでどのターミナルでも動きます。このページは、特定の挙動が期待どおりでないときに、症状から該当の節を探すためのものです。キーの割り当てそのものを変えたいときはキーボードショートカットを見てください。

  • Shift+Enter が改行にならない:「改行を入力する」
  • macOS で Option キーのショートカットが効かない:「macOS で Option キーを使う」
  • 終了時に音や通知がほしい:「ベルと通知」
  • tmux の中で使っている:「tmux の設定」
  • Windows で Backspace が単語ごと消える:「Windows の Backspace」
  • 表示がちらつく、スクロール位置が跳ぶ:「フルスクリーン表示」
  • 入力欄で Vim のキーを使いたい:「Vim のキーで入力を編集する」
  • 声で入力したい:「音声入力」
  • スクリーンリーダーを使う:「スクリーンリーダー」

改行を入力する#

Enter でメッセージが送信されます。送信せずに改行するには、Ctrl+J を押すか、\ を打ってから Enter を押します。この2つは、どの端末でも設定なしで動きます。多くの端末では Shift+Enter も使えますが、対応は端末エミュレーターで違います。

端末 Shift+Enter での改行
Ghostty・Kitty・iTerm2・WezTerm・Warp・Apple Terminal・Windows Terminal 設定なしで動く
foot や Alacritty 0.16 以降など、kitty キーボードプロトコルに対応するほかの端末 設定なしで動く。v2.1.269 以降
VS Code・Cursor・Devin Desktop・0.16 より前の Alacritty・Zed /terminal-setup を1回実行する
gnome-terminal、PyCharm や Android Studio など JetBrains の IDE 使えない。Ctrl+J か \ と Enter を使う

VS Code・Cursor・Devin Desktop・0.16 より前の Alacritty・Zed では、/terminal-setup が端末の設定ファイルに Shift+Enter のキー割り当てを書き込みます。初回は Installed VSCode terminal Shift+Enter key binding のような確認が出ます。既存の割り当ては残され、VSCode terminal Shift+Enter key binding already configured と出たときは変更されていません。ホスト端末の設定ファイルへ書く必要があるので、tmux や screen の中ではなく、ホスト端末で直接 /terminal-setup を実行します。

VS Code・Cursor・Devin Desktop では、/terminal-setup はエディタの設定も2つ更新します。統合ターミナルの文字化けを防ぐ terminal.integrated.gpuAcceleration を "off" にし、フルスクリーン表示でのスクロールを滑らかにする terminal.integrated.mouseWheelScrollSensitivity を設定します。GPU アクセラレーションの変更を戻すには、"auto" に戻してエディタのウィンドウを再読み込みします。

Zed では、/terminal-setup が keymap.json をその場で更新します。

  • キーマップにすでに割り当てがあり、そのどれも Terminal の shift-enter でないときは、先に同じディレクトリへ keymap.json.1a2b3c4d.bak のようなバックアップを作り、ほかの割り当てとコメントを保ったまま Shift+Enter の割り当てを統合する
  • キーマップを読めない・解析できない、バックアップできない、統合結果を確かめられないときは、ファイルを変えず、自分で加えるキー割り当てのブロックを出力する

tmux の中では、外側の端末が対応していても、Shift+Enter には後述の tmux の設定が要ります。改行を別のキーに割り当てる、または Enter で改行し Shift+Enter で送信するように入れ替えるには、キー割り当てのファイルで chat:newline と chat:submit のアクションを割り当てます。

macOS で Option キーを使う#

Option+Enter(改行)や Option+P(モデルの切り替え)など、Option キーを使うショートカットがあります。macOS のほとんどの端末は、既定では Option を修飾キーとして送らないので、有効にするまで何も起きません。端末の設定の名前は、たいてい「Use Option as Meta Key」です(Meta は、いま Option や Alt と書かれているキーの Unix での昔の呼び名)。

  • Apple Terminal:Settings → Profiles → Keyboard を開き、「Use Option as Meta Key」にチェックする。初回起動時の端末設定のプロンプトを受け入れていれば、すでに済んでいる(そのプロンプトが /terminal-setup を実行し、Option を Meta にして Apple Terminal のプロファイルの警告音を切る)。スクリーンリーダーモードでは、/terminal-setup はベルの設定を変えず、端末のベルが鳴るままにする。v2.1.211 より前は、スクリーンリーダーモードでもベルを切っていた。以前の実行でベルが切れた場合は、Settings → Profiles → Advanced → 「Audible bell」で戻す
  • iTerm2:Settings → Profiles → Keys → General を開き、Left Option key と Right Option key を「Esc+」にする。iTerm2 で /terminal-setup を実行すると、Settings → General → Selection の「Applications in terminal may access clipboard」が有効になり、/copy がシステムのクリップボードに書ける。コマンドは tmux の中から実行しても iTerm2 を検出する。変更は iTerm2 の再起動で有効になる
  • VS Code:VS Code の設定に "terminal.integrated.macOptionIsMeta": true を加える

Ghostty・Kitty などの端末では、端末の設定ファイルで、Option を Alt か Meta として扱う設定を探します。

ベルと通知#

Claude がタスクを終えたとき、または権限プロンプトで止まったとき、端末から離れていそうなら、通知のイベントが発生します。それぞれがいつ発生するかはフックのリファレンスにあります。これを端末のベルやデスクトップ通知にすると、長いタスクを動かしながら別の作業ができます。

既定では、Claude Code がデスクトップ通知を送るのは Ghostty・Kitty・iTerm2 だけです。ほかの端末では、preferredNotifChannel を "terminal_bell" にして端末のベルを鳴らすか、通知フックで好みの音やコマンドを設定します。次の設定でベルが有効になります。

json
{
  "preferredNotifChannel": "terminal_bell"
}

デスクトップ通知は SSH 越しにもローカルのマシンへ届くので、リモートのセッションでも通知できます。Ghostty と Kitty は追加の設定なしで OS の通知センターへ転送します。iTerm2 は転送を有効にする必要があります。

  1. Settings → Profiles → Terminal を開く
  2. 「Notification Center Alerts」にチェックし、「Filter Alerts」をクリックして「Send escape sequence-generated alerts」を有効にする

それでも通知が出ないときは、端末アプリに OS の設定で通知の許可があることを確かめます。tmux の中なら、パススルーを有効にします。

通知フックで音を鳴らす#

どの端末でも、通知フックで、Claude が注意を求めるときに音を鳴らす、またはコマンドを動かせます。フックは組み込みの通知と並んで動き、置き換えません。Warp や VS Code の統合ターミナルのように、デスクトップ通知が届かない端末では、フックを使うか、preferredNotifChannel を "terminal_bell" にします。次の例は、macOS でシステム音を鳴らします。macOS・Linux・Windows のデスクトップ通知のコマンドは、フックの使い方にあります。

json
{
  "hooks": {
    "Notification": [
      {
        "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
      }
    ]
  }
}

tmux の設定#

tmux の中で Claude Code を動かすと、既定では Shift+Enter が改行でなく送信になり、デスクトップ通知とプログレスバー(terminalProgressBarEnabled)が外側の端末に届きません。次の行を ~/.tmux.conf に加え、tmux source-file ~/.tmux.conf で動いているサーバーへ適用します。

bash
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'

allow-passthrough の行は、通知と進捗の更新が tmux に飲まれず外側の端末に届くようにします。extended-keys の行は、tmux が Shift+Enter と素の Enter を区別できるようにし、改行のショートカットを動かします。

Windows の Backspace#

Windows では、^H として届く Backspace を、Claude Code は前の単語を削除する Ctrl+Backspace として読みます。ただし TERM_PROGRAM が mintty のとき、または TERM が cygwin のときは除きます。macOS と Linux では、素の Backspace として読みます。

Backspace を押すたびに単語ごと消えるなら、端末が素の Backspace に ^H を送っています。CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0 を設定します。そうすると、Backspace と Ctrl+H が1文字ずつ消します。macOS や Linux で、端末が Ctrl+Backspace に ^H を送るために1文字しか消えないなら、この変数を 1 にします。環境変数は環境変数一覧にあります。

テーマ#

/theme コマンド、または /config のテーマピッカーで、端末に合う Claude Code のテーマを選びます。auto を選ぶと端末の明暗の背景を検出し、端末が追従するなら、OS の外観の変更にテーマも追従します。端末自体の配色は端末アプリが決めるもので、Claude Code は操作できません。画面の下部に出す内容は、現在のモデル・作業ディレクトリ・git ブランチなどを出すステータスラインで変えられます。

カスタムテーマを作る#

組み込みのプリセットのほかに、/theme は、自分で定義したカスタムテーマと、インストール済みのプラグインが提供するテーマを一覧します。一覧の末尾の「New custom theme…」を選ぶと、名前を付けてから、上書きする個々の色のトークンを選ぶ形で、対話的に作れます。カスタムテーマを強調して Ctrl+E を押すと編集できます。

カスタムテーマは ~/.claude/themes/ の JSON ファイルです。.json を除いたファイル名がテーマの slug になり、選ぶと custom:<slug> がテーマの設定として保存されます。ファイルには3つの省略可能なフィールドがあります。

フィールド 型 説明
name string /theme に出す表示名。既定はファイル名の slug
base string テーマの出発点にする組み込みのプリセット。dark・light・dark-daltonized・light-daltonized・dark-ansi・light-ansi。既定は dark
overrides object 色のトークン名と色の値の対応。ここに無いトークンはベースのプリセットのまま

色の値は #rrggbb・#rgb・rgb(r,g,b)・ansi256(n)・ansi:<name> が使えます。<name> は red や cyanBright のような16個の標準 ANSI 色名のどれかです。未知のトークンと不正な色の値は無視されるので、綴りの誤りで描画が壊れることはありません。次の例は、dark のプリセットを土台に、プロンプトのアクセント・エラー文・成功文を塗り替えます。

json
{
  "name": "Dracula",
  "base": "dark",
  "overrides": {
    "claude": "#bd93f9",
    "error": "#ff5555",
    "success": "#50fa7b"
  }
}

Claude Code は ~/.claude/themes/ を監視し、ファイルの追加や変更で再読み込みするので、エディタでの編集は動いているセッションに再起動なしで反映されます。Claude Code の起動時に ~/.claude/themes/ のフォルダ自体がなかった場合は、最初のテーマファイルを作った後に1回再起動します。以後は再起動なしで反映されます。

次は overrides に設定できるトークンです。/theme の対話エディタは、同じトークンをライブプレビュー付きで出し、ここでは省いたオンボーディング画面の色のような単一目的のアクセントもいくつか出します。

テキストとアクセントの色#

トークン 制御するもの
claude 主なブランドのアクセント。スピナーとアシスタントのラベルに使う
text 既定の前景のテキスト
inverseText ステータスバッジなど、色付きの背景の上に描くテキスト
inactive ヒント・時刻・無効な項目などの副次的なテキスト
subtle 薄い罫線と、控えめにした副次的なテキスト
suggestion 補完候補と、ピッカーでの選択の強調
permission 権限プロンプトやピッカーを含むダイアログの枠
remember メモリと CLAUDE.md の表示

状態の色#

トークン 制御するもの
success 成功のメッセージと、通ったチェック
error エラーのメッセージと失敗
warning 警告・注意のメッセージ・auto mode の表示
merged マージ済みの pull request の状態

入力欄とモードの表示#

トークン 制御するもの
promptBorder 入力欄の枠
planMode プランモードのアクセント・プランのメッセージ・プランモードのダイアログ
autoAccept accept-edits モードのアクセント
bashBorder ! のシェルコマンドを入力するときの入力欄の枠
ide IDE 接続の表示
fastMode fast mode の表示
effortUltra ultracode がオンの間、入力欄の枠に出る ultracode のタグ。この色の上書きが効くのは v2.1.239 以降

diff の描画#

トークン 制御するもの
diffAdded 追加行の背景
diffRemoved 削除行の背景
diffAddedDimmed 編集を拒否した後に出る、薄い diff の追加行の背景
diffRemovedDimmed 編集を拒否した後に出る、薄い diff の削除行の背景
diffAddedWord 追加行の中の単語単位の強調
diffRemovedWord 削除行の中の単語単位の強調

フルスクリーンモード#

userMessageBackground・bashMessageBackgroundColor・memoryBackgroundColor は、既定のレンダラーとフルスクリーンのレンダラーの両方で塗られます。userMessageBackgroundHover と selectionBg は、フルスクリーン表示でだけ使われます。

トークン 制御するもの
userMessageBackground トランスクリプトの自分のメッセージの背景
userMessageBackgroundHover ホバー中や展開中のメッセージの背景
bashMessageBackgroundColor トランスクリプトの ! のシェルコマンドの項目の背景
memoryBackgroundColor トランスクリプトの # のメモリの項目の背景
selectionBg マウスで選択したテキストの背景

使用量メーターと話者のラベル#

トークン 制御するもの
rate_limit_fill 使用量メーターの埋まった部分
rate_limit_empty 使用量メーターの空の部分
briefLabelYou 自分のメッセージの You ラベルの色
briefLabelClaude アシスタントのメッセージの Claude ラベルの色

シマー(きらめき)の変形とサブエージェントの色#

いくつかのトークンには、スピナーのアニメーションのグラデーションで使う明るい色を担う、対のシマーの変形があります。アニメーションがちぐはぐなら、ベースのトークンと並べてシマーも上書きします。

  • claude と claudeShimmer
  • warning と warningShimmer
  • permission と permissionShimmer
  • promptBorder と promptBorderShimmer
  • inactive と inactiveShimmer
  • fastMode と fastModeShimmer

各サブエージェントと並列タスクは、トランスクリプトで見分けられるよう、8つの名前付きの色のどれかで表示されます。トークン名は <color>_FOR_SUBAGENTS_ONLY の形で、<color> は red・blue・green・yellow・purple・orange・pink・cyan です。これらを上書きすると、各色の見え方が変わります。たとえば定義に color: blue を持つサブエージェントは、blue_FOR_SUBAGENTS_ONLY の値で描かれます。

ultrathink のキーワードは、入力欄で7色の虹のグラデーションで描かれます。トークン名は rainbow_<color> と rainbow_<color>_shimmer の形で、<color> は red・orange・yellow・green・blue・indigo・violet です。

フルスクリーン表示#

補足

フルスクリーン表示は研究プレビュー(research preview)です。起動時にフルスクリーンかクラシックのレンダラーかは、環境で決まります。いまの会話で切り替えるには /tui fullscreen か /tui default を実行します。フィードバックによって挙動が変わることがあります。

フルスクリーン表示は、Claude Code CLI の別の描画経路で、ちらつきをなくし、長い会話でもメモリ使用量を一定に保ち、マウスに対応します。vim や htop のように、端末の代替スクリーンバッファへ描き、見えているメッセージだけを描画します。端末へ送るデータ量が減ります。VS Code の統合ターミナル・tmux・iTerm2 のように、描画のスループットが詰まりやすい端末エミュレーターで効果が出やすく、Claude の作業中に端末のスクロール位置が先頭へ跳ぶ、ツールの出力が流れるたびに画面が光る、といった症状に効きます。「フルスクリーン」は、vim のように端末の描画面を占有する意味で、端末のウィンドウの最大化とは無関係で、どの大きさでも動きます。

スクリーンリーダーモードでは、この節は当てはまりません。Claude Code は、アタッチしたバックグラウンドセッションを除き、常にプレーンなスクロールテキストで描きます。ほかのセッションで /tui fullscreen を実行すると、切り替えずに説明を出します。

有効にする#

Claude Code の会話の中で /tui fullscreen を実行します。CLI は tui 設定を保存し、会話を保ったままフルスクリーンで再起動するので、文脈を失わず途中で切り替えられます。/tui default でクラシックのレンダラーへ戻し、引数なしの /tui で有効なレンダラーを出します。スクリーンリーダーモードで、アタッチしたバックグラウンドセッション以外のセッションに /tui fullscreen を実行すると、切り替えず、保存した tui 設定も変えません。

再起動したセッションに引き継がれるものは次のとおりです。

  • 画面に出ているとおりの会話。/rewind 後は、巻き戻した時点から再起動する(ディスクに残る長いトランスクリプトからではない)。最初のメッセージより前へ巻き戻したなら、空の会話で再起動する
  • 権限モードと effort レベル
  • 最後に /model で選んだモデル
  • --allowed-tools か --disallowed-tools で渡したルールと、--agent・--agents・--append-system-prompt・--system-prompt-snapshot のフラグ

再起動したプロセスへ渡せない制限がセッションにあるときは、再起動しません。--system-prompt の置き換え・--tools の許可リスト・--setting-sources などの起動フラグや、フックか SDK の権限の更新がそのセッションだけのために加えた、拒否・確認のルールが該当します。その場合は、理由つきで Cannot switch renderers in this session を出し、切り替えも保存もしません。

Claude Code を起動する前に、環境変数 CLAUDE_CODE_NO_FLICKER を設定する方法もあります。

bash
CLAUDE_CODE_NO_FLICKER=1 claude
powershell
$env:CLAUDE_CODE_NO_FLICKER = "1"; claude
json
{
  "env": {
    "CLAUDE_CODE_NO_FLICKER": "1"
  }
}

tui 設定とこの変数を両方設定したときの組み合わせは、設定の項目を参照してください(設定キー一覧)。フルスクリーンの起動に失敗した後は、変数は引き続き尊重されますが、設定は尊重されません。/tui は、保存する設定が効くように、再起動したプロセスから CLAUDE_CODE_NO_FLICKER を消します。

既定でフルスクリーンになる条件#

アタッチしたバックグラウンドセッションはフルスクリーンで描かれ、スクリーンリーダーモードのほかのセッションはクラシックのレンダラーです。それ以外では、環境に合う、次の表の最初の行のレンダラーで起動します。

状況 起動するレンダラー
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 か CLAUDE_CODE_NO_FLICKER=0 を設定した クラシック
CLAUDE_CODE_NO_FLICKER=1 を設定した フルスクリーン
このマシンで、フルスクリーンの起動に失敗したため Claude Code がフルスクリーンを切った クラシック
iTerm2 の tmux -CC 統合モードにいる、または Windows で動く Claude Code に SSH でつないでいる クラシック
tui 設定を保存した 設定が指すレンダラー
セッションが Anthropic からフィーチャーフラグを取得せず、このマシンで Claude Code が起動時のダイアログを出さなくなった クラシック
セッションがフィーチャーフラグを取得せず、このマシンでの最初の Claude Code の起動が v2.1.239 以降だった フルスクリーン
セッションがフィーチャーフラグを取得し、2026年5月6日以降に初めて Claude Code を使った フルスクリーン
それ以外 クラシック

フィーチャーフラグを取得しないセッションとは、Amazon Bedrock・Google Cloud の Agent Platform・Microsoft Foundry 経由のものと、テレメトリをオフにしたものです。

クラシックのレンダラーで起動し、tui 設定を保存していないと、起動時に切り替えを提案するダイアログが出ることがあります。受け入れると、/tui fullscreen と同じように、同じセッションの状態を引き継いで再起動し、再起動したセッションが無事に起動したあとに設定を保存します。「Not now」を選ぶと、このマシンでは二度と提案しません。ダイアログを3回の起動で出すと、答えがあってもなくても、提案をやめます。

何が変わるか#

入力欄が画面の下に固定され、出力が流れても動きません。Claude の作業中に入力欄が動かなければ、フルスクリーン表示が有効です。見えているメッセージだけが描画ツリーに残るので、会話の長さに関わらずメモリは一定です。会話が端末のスクロールバックではなく代替スクリーンバッファにあるので、次のことが変わります。

以前 今 詳細
Cmd+F や tmux の検索で文字を探す Ctrl+O でトランスクリプトモードに入り、/ で検索するか、[ でスクロールバックへ書き出す 「会話を検索して見返す」
端末標準のクリックとドラッグで選択してコピー アプリ内の選択。マウスを離すと自動でコピーされる 「マウスの使い方」
Cmd + クリックで URL を開く macOS は Cmd + クリック、それ以外は Ctrl + クリック 「マウスの使い方」

マウスの捕捉が作業の邪魔になるなら、ちらつきのない描画は保ったまま、オフにできます(「端末標準のテキスト選択を保つ」)。

マウスの使い方#

フルスクリーン表示はマウスのイベントを捕捉して、Claude Code の中で処理します。

  • プロンプト入力をクリックして、入力中のテキストの好きな位置にカーソルを置く
  • / コマンドや @ ファイルの一覧の候補をクリックして採用する。ホバーすると、カーソルの下の行が強調される
  • 選択メニューの選択肢をクリックして選ぶ。権限プロンプト・/model・/config など、選択肢の一覧を出すダイアログが対象。ホバーすると、その行にポインターが出る
  • 複数選択メニューの選択肢をクリックして切り替え、送信ボタンで確定する。複数選択式の質問の「Other」の行のような自由入力の行をクリックすると、入力欄にフォーカスが移り、答えを打てる。v2.1.208 以降
  • /config パネルで設定の値をクリックして変更し、マウスホイールで設定の一覧をスクロールする。v2.1.271 以降
  • 一度に表示できるより選択肢が多い選択・複数選択メニュー(短い端末ウィンドウでの /model の一覧など)を、マウスホイールでスクロールする。ポインターが選択肢の上にあるとき、ホイールが一覧を動かす。v2.1.280 以降
  • あふれた一覧を、スクロールバーでスクロールする。/skills・/mcp・/plugin の Installed の一覧のようなリストパネルでは、入りきらない行数の一覧の上にポインターがあるとき、横にスクロールバーが出る。トラックをクリックするとその位置へ跳び、つまみをドラッグできる。スクロールバーの両端に ↑・↓ の矢印がある場合は、矢印をクリックすると1行ずつスクロールし、押し続けるとスクロールし続ける(矢印は v2.1.286 以降)。v2.1.281 以降
  • 一覧の端にある ↑ N more か ↓ N more の行をクリックすると、選択肢を選ばずに一覧のその端へ跳ぶ。v2.1.286 以降
  • 畳まれたツールの結果をクリックして展開し、全出力を見る。もう一度クリックすると畳む。ツール呼び出しと結果は一緒に展開される。もっと見せるものがあるメッセージだけがクリックできる
    • ! のシェルコマンドの出力も、古い切り詰められた結果も、コマンドが動いている間のライブの進捗行も、クリックで展開する。v2.1.257 以降
    • 送り主が、チームメイトか、あなたのセッションで動くほかのエージェントのときは、薄い Message from @<sender> の行もクリックで展開する
  • macOS は Cmd、Linux と Windows は Ctrl を押しながら URL やファイルパスをクリックして開く。素の http:// と https:// の URL はブラウザで、Edit や Write の後に出るようなツール出力のファイルパスは既定のアプリで開く。修飾キーなしの単なるクリックはリンクを開かない(端末標準の挙動に合わせた)
    • \\server\share\file.ts のようなネットワーク(UNC)パスは、リンクにならないプレーンテキストで描く(ネットワークパスを開くと、Windows の資格情報が相手のホストへ送られることがあるため)
    • macOS の一部の端末は、Cmd + クリックをリンクを開かず動いているアプリへ転送し、端末のマウスプロトコルは Cmd を符号化できないので、Claude Code には素のクリックが届く。Ghostty と macOS の Warp では、Claude Code がこれを検出して、リンクの素のクリックで開くようにし、Cmd を押しても動く
    • VS Code の統合ターミナルなど xterm.js ベースの端末では、同じ操作を使う端末自身のリンク処理に任せる
  • クリックしてドラッグすると、会話のどこでもテキストを選べる。ダブルクリックは単語を選び、iTerm2 の単語の区切りに合わせるのでファイルパスが1つのまとまりとして選ばれる。URL のダブルクリックは、スキームを含む URL 全体を選ぶ。トリプルクリックは行を選ぶ
  • マウスホイールで会話をスクロールする

選んだテキストは、マウスを離すとクリップボードへ自動でコピーされます。オフにするには /config の「Copy on select」を切り替えます。「Copy on select」がオフのときは、Ctrl+Shift+C で手動でコピーします。kitty・WezTerm・Ghostty・iTerm2 のように kitty キーボードプロトコルに対応する端末では、Cmd+C も使えます。選択中は、Ctrl+C が中断ではなくコピーになります。

選択中に Shift を押しながら矢印キーを押すと、キーボードで選択を広げられます。Shift+Up と Shift+Down は、選択が上端か下端に達すると表示をスクロールします。Shift+Home と Shift+End は、現在の行の先頭や末尾まで広げます。

通常のプロンプトの表示で、選択中の扱いは押すキーで変わります。

  • Esc:応答の中断やダイアログの解除などキー本来の動作を行い、選択は強調されたまま
  • PageUp・PageDown・Ctrl+Home・Ctrl+End、または Shift・Alt(Option)・Cmd(Win・Super)と矢印・Home・End の組み合わせ:選択は残る
  • 素の矢印キー・Enter・入力した文字を含む、それ以外のキー:選択を解除する
  • selection:clear に割り当てたキー:Esc のように本来は選択を残すキーでも、選択を解除する。このアクションに既定の割り当てはない

トランスクリプトモードでは、そこに挙げたナビゲーションと検索のキーも選択を残します。

会話をスクロールする#

フルスクリーン表示では、スクロールをアプリ内で処理します。

ショートカット 動作
PageUp / PageDown 半画面ずつ上・下へスクロール
Ctrl+Home 会話の先頭へ
Ctrl+End 最新のメッセージへ移り、自動追従を再び有効にする
マウスホイール 数行ずつスクロール

コンパクトの後でも、セッションの先頭までスクロールで戻れます。Claude はコンパクトの要約から作業を続けますが、Claude Code は、繰り返しコンパクトしても、以前のメッセージをすべてフルスクリーンのスクロールバックに保ちます。

PageUp・PageDown・Home・End の専用キーがない MacBook のようなキーボードでは、Fn を押しながら矢印キーを使います。Fn+Up が PageUp、Fn+Down が PageDown、Fn+Left が Home、Fn+Right が End を送ります。macOS では Ctrl+Fn+Right は Claude Code に届かないので、MacBook のキーボードには、既定で動く末尾へ跳ぶキーがありません。代わりに次のいずれかを使います。

  • 「Jump to bottom」ボタンをクリックする
  • マウスホイールで最下部までスクロールし、追従を再開する
  • scroll:bottom を、キーボードが送れるキーの組み合わせに割り当て直す

これらのアクションは割り当て直せます。割り当てのない半ページ・1ページの変形を含むアクション名の全体はキーボードショートカットにあります。上へスクロールしている間は、会話の上端に薄いヘッダー行が出て、表示の上へ流れた直近のプロンプトを示します。その行をクリックすると、そのプロンプトへ跳びます。

自動追従#

上へスクロールすると自動追従が止まり、新しい出力に最下部へ引き戻されません。上へスクロールしている間は、トランスクリプトの下端に「Jump to bottom」ボタンが浮かび、新しい出力が来ると 3 new messages のような件数が出ます。クリックするか、Ctrl+End を押すか、最下部までスクロールすると追従が再開します。自動追従が止まっている間は、応答のストリームが終わっても、スクロールした位置から動きません。

ボタンのキーボードのヒントは、キーボードが送れるものに合わせます。macOS では、Ctrl+End が Mac のキーボードから Claude Code に届かないので、クリックするか、Fn+Down でスクロールするよう案内します。scroll:bottom を割り当て直すと、ボタンはどのプラットフォームでも、割り当てたキーを出します。完全なラベルが入らない狭い端末では、ボタンはヒントを短くし、下の行にはみ出しません。

自動追従を完全に切り、表示を残した位置のままにするには、/config を開いて「Auto-scroll」をオフにします。自動スクロールを無効にすると、表示は勝手に最下部へ跳びません。応答が要る権限プロンプトなどのダイアログは、この設定に関わらず、表示へスクロールして入ります。

マウスホイールのスクロール#

マウスホイールのスクロールには、端末が Claude Code にマウスイベントを転送する必要があります。多くの端末は、アプリが要求すれば転送します。iTerm2 はプロファイルごとの設定です。ホイールが何もしないのに PageUp と PageDown は動くなら、Settings → Profiles → Terminal を開いて「Enable mouse reporting」をオンにします。この設定は、クリックでの展開とテキスト選択にも要ります。

マウスホイールのスクロールが遅く感じるなら、端末が物理的な1ノッチにつき1回のスクロールイベントを、倍率なしで送っている可能性があります。Ghostty や、高速スクロールを有効にした iTerm2 などは、すでにホイールのイベントを増幅しています。VS Code の統合ターミナルなどは、1ノッチにちょうど1イベントを送ります。Claude Code にはどちらか検出できません。CLAUDE_CODE_SCROLL_SPEED を設定すると、基本のスクロール距離に倍率をかけられます。

bash
export CLAUDE_CODE_SCROLL_SPEED=3

3 は vim などのアプリの既定に合います。設定は20までの正の値を受け付け、すでにホイールのイベントを増幅する端末で、加速したトラックパッドとホイールのスクロールを遅くするための、0.25 のような1未満の小数も使えます。

対話的に調整するには /scroll-speed を実行します。ダイアログはルーラーを出し、開いている間にスクロールして変更をすぐ体感できます。← と → で速度を調整し、r で自動検出した既定へ戻し、Enter で保存します。ダイアログは10まで整数刻みで動き、より細かい制御に対応する端末では、0.25 まで4分の1刻みも出します。このコマンドは、環境変数 CLAUDE_CODE_SCROLL_SPEED が設定するのと同じ値を、~/.claude/settings.json に保存します。ダイアログの最大は10で、環境変数でそれより高い値を設定した場合、ダイアログは10と表示し、ダイアログから保存すると10が保存されます。このコマンドは JetBrains の IDE のターミナルでは使えません。

基本の速度とは別に、ホイールを素早く回すとスクロールの速さが加速し、速く回したほうが、同じ数のゆっくりしたノッチより遠くへ動きます。加速をオフにして、ノッチごとに一定の速さにするには、settings.json で wheelScrollAccelerationEnabled を false にします(v2.1.174 以降)。

JetBrains の IDE のターミナルでのスクロール#

JetBrains の IDE のターミナルでは、Claude Code は独自のスクロール処理を使い、CLAUDE_CODE_SCROLL_SPEED を無視します。このターミナルは、ほかのエミュレーターよりずっと高い頻度でスクロールイベントを送るので、ほかで調整した倍率だと行き過ぎるためです。2025.2 では、ターミナルにスクロールホイールのバグがあり、不要な矢印キーと逆方向のイベントが出ます。Claude Code は実行時にこれらを検出して自動で緩和するので、トラックパッドとマウスホイールのスクロールは設定なしで動きます。最良のスクロールには、2025.3 以降へアップグレードします。バグを検出すると、最初にスクロールしたときにヒントを出します。

会話を検索して見返す#

Ctrl+O で、通常のプロンプトとトランスクリプトモードを切り替えます。直近のプロンプト、編集の diffstat つきのツール呼び出しの1行の要約、最終の返信だけを見せる静かな表示にするには /focus を実行します。設定はセッションをまたいで保たれ、もう一度 /focus を実行するとオフになります。トランスクリプトモードには、less 風のナビゲーションと検索が加わります。

キー 動作
/ 検索を開く。入力して一致を探し、Enter で確定、Esc で取り消してスクロール位置を戻す
n / N 次・前の一致へ跳ぶ。検索バーを閉じた後でも使える
j / k または ↑ / ↓ 1行スクロール
g / G または Home / End 先頭・末尾へ跳ぶ
{ / } 前・次のプロンプトへ跳ぶ
Ctrl+U / Ctrl+D 半ページスクロール
Ctrl+B / Ctrl+F または Space / b 1ページスクロール
Ctrl+O・Esc・q トランスクリプトモードを抜けてプロンプトへ戻る

会話は、端末の標準のスクロールバックではなく代替スクリーンバッファにあるので、端末の Cmd+F や tmux の検索には見えません。内容を端末へ返すには、先に Ctrl+O でトランスクリプトモードに入ってから、次のキーを使います。

  • [:会話全体を、すべてのツール出力を展開して、端末の標準のスクロールバックバッファへ書き出す。会話が端末の普通のテキストになるので、Cmd+F・tmux のコピーモード・そのほかの標準ツールで検索や選択ができる。長いセッションでは、その間しばらく止まることがある。Esc か q でトランスクリプトモードを抜けるまで続き、抜けるとフルスクリーン表示に戻る。次の Ctrl+O は新しく始まる
  • v:会話を一時ファイルへ書き出し、$VISUAL か $EDITOR で開く

diff パネルで変更を見る#

フルスクリーン表示では、/diff は会話の横にパネルを開くので、Claude の作業中に変更が積み上がるのを見られます。パネルの内容、自動で開く条件、閉じたままにする方法、比較の基準の変え方は対話モードの操作にあります。

会話をクリアする#

/clear で新しい会話を始めます。表示が崩れたり部分的に空白になったりしたら、Ctrl+L で画面を再描画します。再描画は、会話と入力をそのまま残します。Cmd+K は、端末が Claude Code へ通すなら Ctrl+L と同じことをします。iTerm2 と Terminal.app は Cmd+K を自分で処理して画面をクリアしますが、Claude Code が、クリアされた画面を検出して会話を再描画します。v2.1.280 より前(v2.1.260 以降)は、フルスクリーン表示で Ctrl+L(と、届く場合の Cmd+K)が画面をクリアしていました。v2.1.238 より前は、2秒以内に Ctrl+L を2回押すと /clear が走りました。

tmux で使う#

フルスクリーン表示は tmux の中でも動きますが、3つ注意があります。

  • マウスホイールのスクロールには、tmux のマウスモードが要る。~/.tmux.conf で有効になっていなければ、次の行を加えて設定を再読み込みする。マウスモードがないと、ホイールのイベントは Claude Code でなく tmux へ行く。PageUp と PageDown のキーボードでのスクロールは、どちらでも動く。tmux でマウスモードがオフだと検出したとき、Claude Code は起動時に1回ヒントを出す
  • iTerm2 の tmux 統合モード(tmux -CC で入るモード)とは互換性がない。統合モードでは、iTerm2 が tmux のペインを、tmux が端末へ描く代わりにネイティブの分割として描く。代替スクリーンバッファとマウス追跡が正しく動かず、マウスホイールは何もせず、ダブルクリックが端末の状態を壊すことがある。tmux -CC のセッションでフルスクリーン表示を有効にしない。iTerm2 の中の -CC なしの普通の tmux は問題ない
  • 3.6 系までの tmux のリリースは同期出力を実装していないので、それらの版では、端末で直接 Claude Code を動かすときより、再描画でちらつきが増えることがある。Claude Code は起動時に端末の同期出力の対応を調べ、端末が報告すれば使う。tmux でちらつくなら、最新の tmux へ上げるか、tmux の外の専用の端末タブで Claude Code を動かす
bash
set -g mouse on

端末標準のテキスト選択を保つ#

マウスの捕捉は、特に SSH 越しや tmux の中で、いちばんの摩擦点です。Claude Code がマウスイベントを捕捉すると、端末標準の選択してコピーが働かなくなります。クリックとドラッグで作った選択は、端末の選択バッファではなく Claude Code の中にあるので、tmux のコピーモード・Kitty hints などは見えません。Claude Code は選択をシステムのクリップボードへ書き、使う経路は環境で変わります。ローカルのセッションでは、ネイティブのクリップボードツールを動かします。

  • macOS:pbcopy
  • Linux:Wayland では wl-copy、X11 では xclip か xsel(入っているほう)。クリップボードと PRIMARY の選択の両方に書くので、中クリックの貼り付けが働く
  • Windows と WSL:PowerShell の Set-Clipboard

tmux の中では、tmux のペーストバッファにも書きます。SSH 越しでは、OSC 52 のエスケープシーケンスにフォールバックします。GNU screen の中では、長い選択もクリップボードへコピーします(v2.1.219 より前は、約570文字を超える選択をコピーすると、GNU screen がウィンドウへ base64 のテキストを出力していました)。コピーのたびに、どの経路を使ったかを伝えるトーストが出ます。端末によっては OSC 52 を既定でブロックします。iTerm2 は、Settings → General → Selection → 「Applications in terminal may access clipboard」をオンにするまでブロックします。iTerm2 で /terminal-setup を実行すると、これが有効になります。

1回だけ標準の選択をするためのキーは、端末で違います。

  • Terminal.app:Fn
  • iTerm2:Option
  • VS Code・Cursor・Devin Desktop:Shift。macOS で terminal.integrated.macOptionClickForcesSelection を有効にしていれば Option
  • ほとんどの端末:Shift

そのキーを押しながらクリックとドラッグをします。選択は、Claude Code に渡されず端末が処理するので、Cmd+C などのコピーのショートカットが、選んだものに働きます。Claude Code も、画面のヒントに正しいキーを出します。SSH 越しや tmux の中では、つなぎ元の端末を Claude Code が常に検出できるわけではないので、ヒントには候補のキーが並びます。

常に標準の選択を使うなら、CLAUDE_CODE_DISABLE_MOUSE=1 を設定して、マウスの捕捉をやめます。ちらつきのない描画と一定のメモリは保たれます。

bash
CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

マウスの捕捉を無効にしても、PageUp・PageDown・Ctrl+Home・Ctrl+End のキーボードスクロールは動き、選択は端末が処理します。Claude Code の中での、クリックでのカーソル位置決め・クリックでの展開・URL のクリック・ホイールのスクロールは失われます。ホイールのスクロールは保ちつつ、クリック・ドラッグ・ホバーの処理だけを切るには、代わりに CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1 を設定します。両方の変数を設定すると、CLAUDE_CODE_DISABLE_MOUSE が優先されます。クリックを無効にしても、Claude Code はマウスを捕捉し続けるので、ホイールとタッチパッドは会話をスクロールしますが、左クリックは Claude Code の中では何もしません。標準のクリックとドラッグの選択には、端末のキーを押す必要がやはりあります。右クリックと中クリックの貼り付けは、対応する端末では動き続けます。

画面の表示がおかしいとき#

フルスクリーン表示は、フレーム間で変わったセルだけを送ります。一部の端末(Windows Terminal など、ConPTY をベースにしたホストに多い)は、この位置指定の書き込みを正しくまとめず、ウィンドウをリサイズするまで以前の出力の断片が残ります。CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT=1 を設定すると、差分ではなく、毎フレームすべてのセルを描き直します。

powershell
$env:CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT = "1"
claude
bash
CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT=1 claude

Windows では、Claude Code がバックグラウンドセッションとエージェントビューで、全体の再描画を自動で有効にするので、変数が要るのは、直接起動した対話のフルスクリーンのセッションだけです。

起動時に「fullscreen renderer didn't finish starting last time」と出る#

このマシンのフルスクリーンのセッションが、無事に起動する前にクラッシュすると、Claude Code は次のセッションをクラシックのレンダラーで始め、次の2つのうち1行を出します。無事に起動したとは、最初のフレームを描いたあと、10秒間動き続けたか、/exit・Ctrl+C・Ctrl+D で終えたことをいいます。

  • 1回失敗した後:Claude Code's fullscreen renderer didn't finish starting last time on this machine と出る。次に始めるセッションで、再びフルスクリーンを試す
  • 2回失敗した後:Claude Code's fullscreen renderer has repeatedly failed to start on this machine と出る。Claude Code を更新するか /tui fullscreen を実行するまで、クラシックのレンダラーを使い続け、以後のセッションでは何も出さない

失敗した起動が、クラシックのレンダラーにいる理由かを確かめるには、引数なしの /tui を実行します。失敗した起動が理由の間は、「Current renderer」の行がそう言います。クラシックを保つには、tui 設定を、再起動せずに保存する /tui default を実行します。もう一度フルスクリーンを試すには、/tui fullscreen を実行します。そのセッションも起動を終えないなら、問題を報告します。v2.1.236 より前は、失敗した起動の後も、フルスクリーンでセッションを始め続けていました。

失敗した起動の数え方は次のとおりです。

  • 数えるセッション:tui 設定がそう言うから、起動時のダイアログを受け入れたから、または Claude Code が既定でフルスクリーンにするから、フルスクリーンで始めたセッションだけ
  • CLAUDE_CODE_NO_FLICKER=1:設定していると、失敗した起動の後でも、そのセッションをフルスクリーンで描き、数えない
  • カウントのリセット:失敗した起動は Claude Code のバージョンごとに数え、フルスクリーンの起動が成功するとカウントがリセットされる
  • 起動時のダイアログ:ダイアログを受け入れ、再起動したセッションがクラッシュしたときは、どちらの行も出さず、この Claude Code のバージョンではダイアログを二度と出さない

研究プレビューについて#

フルスクリーン表示は研究プレビューの機能です。一般的な端末エミュレーターでテストされていますが、あまり使われない端末や珍しい設定では、描画の問題が出ることがあります。問題があれば、Claude Code の中で /feedback を実行して報告するか、claude-code の GitHub リポジトリで issue を開きます。端末エミュレーターの名前とバージョンを添えます。

フルスクリーン表示をオフにするには、/tui default を実行するか、その方法で有効にしたなら CLAUDE_CODE_NO_FLICKER を解除します。/tui default で戻すとき、Claude Code が先に、切り替えた理由を尋ねる任意のフィードバックのプロンプトを出すことがあります。理由を入力して Enter で送るか、Esc でスキップします。どちらでも、CLI はクラシックのレンダラーで再起動します。保存した tui 設定に関わらずクラシックを強制するには、CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 を設定します。クラシックのレンダラーは、会話を端末の標準のスクロールバックに置くので、Cmd+F や tmux のコピーモードがふだんどおり動きます。エージェントビューや claude attach から開くバックグラウンドセッションは、常にフルスクリーン表示を使います。アタッチする端末が、セッションを見せるために代替スクリーンバッファに入り、そこではクラシックのレンダラーにはスクロールバックもマウス処理もないので、tui 設定と CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN は適用されません。

貼り付け#

800文字を超える、または3行を超える内容をプロンプトに貼ると、入力欄を使える状態に保つため、[Pasted text #1 +120 lines] のようなプレースホルダーに折りたたまれ、送信時には全内容が送られます。ファイル全体や長いログなど、非常に大きな入力は、貼り付けず、内容をファイルに書いて Claude に読ませます。そうするとトランスクリプトが読みやすいままで、Claude は以後のターンでパスでファイルを参照できます。VS Code の統合ターミナルは、非常に大きな貼り付けの一部の文字を、Claude Code に届く前に落とすことがあるので、そこではファイルを使います。貼り付けに不可視の Unicode 文字が含まれていると、Enter を押したときに取り除かれ、きれいにしたプロンプトが入力欄に戻って、もう一度 Enter で送れます(対話モードの操作を参照)。

Claude が貼り付けをどう扱うか#

送信すると、Claude には各 [Pasted text #N] の中身が、入力したものではなく、どこかから貼り付けたテキストと印を付けて見えます。貼り付けには、あなたが書いていない指示が含まれていることがあると Claude に伝わり、入力したメッセージが求めるときだけ、その中の指示に従うように言われます。フィーチャーフラグを取得しないセッションでは、貼り付けに印は付きません。

折りたたまれた貼り付けを削除・復元する#

Ctrl+W や Ctrl+K のような単語や行のショートカット、または df] のように f/t のモーションを通す vim の削除で削除し、削除範囲が [Pasted text #N] のプレースホルダーの中にかかると、プレースホルダーが丸ごと消えます。復元するには、単語や行のショートカットの後は Ctrl+Y、vim の削除の後は NORMAL モードの p で、削除したものを貼り戻します。

貼り付けを含むプロンプトを呼び出す#

Claude Code は、各 [Pasted text #N] の中身を ~/.claude/paste-cache/ に保ちます。そのため、コマンド履歴からプロンプトを呼び出して再送すると、貼り付けた全内容が、後のセッションでも、再び送られます。cleanupPeriodDays より古いキャッシュファイルは、保持の掃除の規則で削除されるので、呼び出したプロンプトが、もう存在しない貼り付けのテキストを参照することがあります。そういうプロンプトを送信すると、Claude Code は [Pasted text #N] の文字列そのものは送らず、欠けた貼り付けを示す通知を出します。

  • テキストが残る普通のプロンプト:プレースホルダーを取り除き、残りのテキストを送る
  • シェルモードのコマンドや / コマンドのように、取り除くと実行内容が変わる場合と、取り除くと空になるプロンプト:送信を取り消し、プレースホルダーを残したまま元のテキストを入力欄に保つ。プレースホルダーを消すか、コマンドを編集して、再送する

応答の幅を制限する#

幅の広い端末では、Claude の返信の文章の各行がウィンドウの全幅に伸びます。文章を決まった桁数で折り返すには、設定で maxProseWidth を設定します。

Vim のキーで入力を編集する#

Claude Code には、プロンプト入力向けの Vim 風の編集モードがあります。/config の「Editor mode」、または ~/.claude/settings.json で editorMode を "vim" にして有効にします。オフにするには、Editor mode を normal に戻します。Vim モードは、NORMAL・VISUAL モードのモーションとオペレーターの一部(hjkl の移動・v/V の選択・テキストオブジェクトを伴う d/c/y など)に対応します。キーの全表は対話モードの操作にあります。

Vim のモーションは、キー割り当てのファイルでは割り当て直せません。jj のような2キーの INSERT モードの並びを Escape にするには、ユーザー設定で vimInsertModeRemaps を設定します。標準の Vim と違い、INSERT モードでも Enter はプロンプトを送信します。代わりに改行を入れるには、NORMAL モードの o・O、または Ctrl+J を使います。

音声入力#

音声入力は、Claude Code CLI で、プロンプトを打つ代わりに話せる機能です。音声はライブでプロンプト入力に書き起こされるので、同じメッセージの中で音声と入力を混ぜられます。/voice で有効にしたら、話している間キーを押し続けるか、1回押して始めてもう一度押して送ります。エージェントビューでも使えます。送信入力か覗き見パネルの返信にフォーカスがあるとき、プッシュトゥトークのキーを押し続けるか押すと、バックグラウンドセッションへ音声で入力できます。

必要なもの#

音声入力は、録音した音声を Anthropic のサーバーへストリーミングして書き起こします。音声はローカルでは処理されません。次のすべてが要ります。

  • Claude.ai のアカウント:音声認識のサービスは、claude.ai で認証したときだけ使える。Anthropic の API キーを直接使う設定、Amazon Bedrock、Google Cloud の Agent Platform、Microsoft Foundry では使えない
  • ローカルのマイク:クラウドセッションや SSH セッションでは動かない
  • WSL で Claude Code を動かすなら WSLg:Windows 10 か 11 で Microsoft Store から入れた WSL2 には WSLg が含まれる。WSL1 など WSLg が使えないなら、ネイティブの Windows で Claude Code を動かす

書き起こしは Claude のメッセージやトークンを消費せず、/usage に出る上限にも数えられません。データの扱いはセキュリティとデータの扱いを参照してください。音声の録音は、macOS・Linux・Windows で組み込みのネイティブモジュールを使います。Linux でネイティブモジュールが読み込めないときは、ALSA utils の arecord か SoX の rec にフォールバックします。どちらもないと、/voice がパッケージマネージャー向けのインストールコマンドを出します。VS Code 拡張も、同じ claude.ai アカウントの条件で音声入力に対応します。マイクが手元のマシンにあり、拡張がリモートのホストで動くので、SSH・Dev Containers・Codespaces を含む VS Code Remote のセッションでは使えません。

有効にする#

/voice を実行して有効にします。有効にすると、Claude Code はマイクの確認を行います。macOS では、端末にまだ許可していなければ、システムのマイク許可のプロンプトが出ます。

text
/voice
Voice mode enabled (hold). Hold space to record. Dictation language: en (/config to change).

/voice は、省略可能なモードの引数を取ります。

コマンド 効果
/voice オン・オフを切り替え、現在のモードを保つ
/voice hold 長押しモードで有効にする
/voice tap タップモードで有効にする
/voice off 無効にする

音声入力はセッションをまたいで保たれます。/voice を実行する代わりに、ユーザー設定ファイルへ直接書けます。

json
{
  "voice": {
    "enabled": true,
    "mode": "tap"
  }
}

音声入力を有効にした最初の3セッションは、プロンプトが空のとき、入力欄のフッターに hold space to speak のヒントが出ます。ヒントは現在の voice:pushToTalk の割り当てを反映し、割り当てを変えると更新されます。ヒントの文面は2つのモードで同じで、カスタムのステータスラインを設定していると出ません。書き起こしは、どちらのモードでも、コーディングの語彙に合わせて調整されています。regex・OAuth・JSON・localhost のような開発用語が正しく認識され、現在のプロジェクト名と git のブランチ名は、認識のヒントとして自動で加わります。

長押しで録音する#

長押しモードはプッシュトゥトークです。キーを押している間は録音が続き、離すと止まります。これが既定のモードです。Space を押し続けて録音を始めます。Claude Code は、端末からのキーリピートのイベントが急に続くのを見て、押し続けを検出するので、録音が始まる前に短いウォームアップがあります。ウォームアップの間、フッターは keep holding… を出し、録音が始まると listening… を出します。録音中は、prefersReducedMotion をオンにしていなければ、プロンプトのカーソルが、マイクの音量に応じて上下するバーになります。

ウォームアップの間に、最初のいくつかのキーリピートの文字が入力に入りますが、録音が始まると自動で消されます。Space を1回軽く押すだけなら、急なリピートでだけ検出が働くので、スペースが入力されます。Space の長押しやタップが音声入力を始めるのは、そのキーが本来プロンプトに入力される場面だけです。トランスクリプトビューアでは Space が会話をページ送りし、vim モードの INSERT 以外ではコマンドです。meta+k のように割り当て直した修飾キーの組み合わせは、文字を入力しないので、そうした場所でも音声入力が始まります。

ヒント

ウォームアップを省くには、/voice tap でタップモードに切り替えるか、meta+k のような修飾キーの組み合わせに割り当て直します。修飾キーの組み合わせは、最初のキー押下で録音を始めます。

話した内容は、話している間プロンプトに薄く表示され、書き起こしが確定すると通常の色になります。Space を離すと録音が止まり、テキストが確定します。書き起こしはカーソル位置に挿入され、カーソルは挿入したテキストの末尾に残るので、入力と音声を好きな順に混ぜられます。もう一度 Space を押し続けると別の録音が追加され、先にカーソルを動かせば、プロンプトの別の場所へ挿入できます。

text
> refactor the auth middleware to ▮
  # hold space, speak "use the new token validation helper"
> refactor the auth middleware to use the new token validation helper▮

既定では、キーを離すと書き起こしを挿入し、Enter を押すのを待ちます。voice 設定のオブジェクトに "autoSubmit": true を設定すると、書き起こしが3語以上なら、キーを離したときにプロンプトを自動で送ります。

タップで録音して送る#

タップモードは、1回のキー押下で録音を切り替えます。1回押して始め、話して、もう一度押してプロンプトを送ります。ウォームアップはなく、キーを押し続ける必要もありません。/voice tap で有効にします。プロンプト入力が空のとき、Space を押して録音を始めます。録音中、フッターは ● REC · tap to send を出します。もう一度 Space を押すと止まります。書き起こしが3語以上なら、Claude Code が書き起こしを挿入してプロンプトを自動で送ります。それより短い書き起こしは、挿入だけして送らないので、うっかりのタップで余計な1語が送られません。

3語のしきい値は、スペースを使わず書く言語の語も数えます。日本語・中国語・タイ語の書き起こしは個々の語を数えるので、タップモードと、autoSubmit の長押しモードで、自動送信されます。最初のタップが録音を始めるのはプロンプト入力が空のときだけなので、メッセージを書いている間は、スペースを普通に入力できます。2回目のタップは、入力の内容に関わらず録音を止めます。録音は、無音が15秒続くか、合計で2分になると、自動でも止まります。

録音を取り消す#

書き起こしを確定せずに取り消すには、Esc か Ctrl+C を押します。Claude Code はマイクを止め、書き起こしを捨て、プロンプトを録音を始める前の状態へ戻します。どちらのキーも、録音を終えた書き起こしがまだ処理中の間も取り消します。処理中に編集または送信したプロンプトは、そのままです。取り消すキー押下では、どちらのキーもほかの動作をしません。Esc は Claude の応答を中断せず、Ctrl+C はプロンプトをクリアせず、Claude Code を終了させる2回の押下の1回目にも数えられません。

音声入力の言語を変える#

音声入力は、Claude の応答の言語を決める language 設定と同じものを使います。その設定が空なら、既定は英語です。VS Code 拡張では、language が空なら、英語にする前に VS Code の accessibility.voice.speechLanguage 設定を使います。設定は /config か、設定へ直接書きます。BCP 47 の言語コードか言語名のどちらでも使えます。

json
{
  "language": "japanese"
}

language 設定が対応する一覧にないと、有効にするときに /voice が警告し、音声入力は英語にフォールバックします。Claude の文章の応答は、このフォールバックの影響を受けません。対応する言語は次のとおりです。

言語 コード
Czech cs
Danish da
Dutch nl
English en
French fr
German de
Greek el
Hindi hi
Indonesian id
Italian it
Japanese ja
Korean ko
Norwegian no
Polish pl
Portuguese pt
Russian ru
Spanish es
Swedish sv
Turkish tr
Ukrainian uk

音声入力のキーを割り当て直す#

音声入力のキーは、Chat コンテキストの voice:pushToTalk に割り当てられ、既定は Space です。同じ割り当てが長押しとタップの両方のモードを制御します。~/.claude/keybindings.json で割り当て直します。

json
{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "meta+k": "voice:pushToTalk",
        "space": null
      }
    }
  ]
}

voice:pushToTalk のアクションは、一度に1つのキーを使います。独自のキーを割り当てると、2つ目の引き金を加えるのではなく、既定の Space の割り当てを置き換えます。この例の "space": null の行は分かりやすさのためで、省いても動作は変わりません。長押しモードでは、v のような素の文字キーの割り当ては避けます。長押しの検出はキーリピートに頼るので、ウォームアップの間に文字がプロンプトに入ってしまうためです。Space を使うか、meta+k のような修飾キーの組み合わせにして、ウォームアップなしで最初のキー押下から録音を始めます。タップモードにはウォームアップがないので、ほとんどのキーが使えます。Caps Lock のように、端末アプリに届かず、割り当てられないキーもあります(割り当てようとするとエラーが出ます)。キーの書き方と予約済みのショートカットはキーボードショートカットにあります。

音声入力のトラブルシューティング#

音声入力が動かない、録音されないときのよくある問題です。

メッセージ・症状 原因と対処
Unknown command: /voice /voice が使えるのは、claude.ai のアカウントが有効なサインインになっているときだけ。サインインしていなければ /login を実行する。ANTHROPIC_API_KEY・ANTHROPIC_AUTH_TOKEN・apiKeyHelper 設定・サードパーティのプロバイダーのどれかが使われていると、claude.ai のサインインより優先されるので、それを外して Claude Code を再起動する
Voice mode requires a Claude.ai account /voice を実行したか録音を始めたときに、Claude Code が使える claude.ai のサインインを見つけられなかった。/login でサインインし直す
Voice mode is disabled by your organization's policy 組織の管理者のポリシーが音声入力を切っている。組織の管理者に、音声入力が使えるか確認する
Microphone access is denied システム設定で端末にマイクの許可を与える。macOS は System Settings → Privacy & Security → Microphone で端末アプリを有効にして /voice を再実行する。Windows は Settings → Privacy & security → Microphone でデスクトップアプリのマイクへのアクセスをオンにして /voice を再実行する。macOS の設定に端末が出ないときは、後述の手順
Linux での Voice mode requires SoX for audio recording ネイティブの音声モジュールが読み込めず、フォールバックも入っていない。エラーメッセージに出るコマンド(例:sudo apt-get install sox)で SoX を入れる
Voice mode requires a microphone, but SoX could not open an audio capture device SoX は入っているが、ホストに音声の録音デバイスがない(ヘッドレスのサーバーやコンテナなど)。マイクのあるマシンで Claude Code を動かす。v2.1.195 以降、Linux の Claude Code はこの状況でこのメッセージを出す(それより前は、すでに入っていても SoX のインストールを求めた)
Voice mode could not find a working audio recorder in WSL WSLg は ALSA のデバイスではなく PulseAudio を通して音を渡すので、SoX の PulseAudio のバックエンドを明示的に入れる必要がある。sudo apt install sox libsox-fmt-pulse を実行する。sox だけ入れると ALSA のバックエンドが入るが、WSL には /dev/snd がないので録音できない
Voice input is failing repeatedly and has been paused 音声入力が10秒以内に3回失敗した。最初の失敗から10秒経つまで、Claude Code は音声入力を止める。たいていは、このホストのマイクか音声スタックが録音できない(ヘッドレスのサーバー・音声のパススルーがないリモートシェル・マイク許可の拒否など)。使える入力デバイスを確かめ、上の項目から根本の原因を直してから、もう一度音声入力を起動する。v2.1.202 より前は、起動時の失敗だけが一時停止に数えられた
長押しモードで Space を押し続けても何も起きない 押し続けている間、プロンプト入力を見る。スペースが増え続けるなら、音声入力がおそらくオフなので /voice hold で有効にする。1つか2つのスペースが出てその後何も出ないなら、音声入力はオンだが、長押しの検出が働いていない。長押しの検出は端末がキーリピートのイベントを送ることを必要とするので、OS でキーリピートが無効だと検出できない。キーリピートの条件を避けるには、/voice tap でタップモードに切り替える
タップモードで Space をタップすると録音せずスペースが入る 最初のタップが録音を始めるのは、プロンプト入力が空のときだけ。先に入力を消すか、/voice tap を実行してタップモードかを確かめる
No audio detected from microphone 録音は始まったが無音だった。正しい入力デバイスがシステムの既定になっていて、入力レベルがミュートや0近くでないかを確かめる。Windows は Settings → System → Sound → Input でマイクを選ぶ。macOS は System Settings → Sound → Input を開く
Voice connection failed 接続が失敗して、録音が書き起こしのサービスへ届かなかった。ネットワークを確かめて、もう一度試す。音声が全く録れなかった録音は、このメッセージではなく No audio detected from microphone を出す。v2.1.200 より前は、無音のマイクが接続の失敗と報告されることがあり、実際の問題が入力デバイスなのにネットワークの問題を示唆した
Voice stream error: WebSocket upgrade rejected with HTTP <status> サーバーが、示された HTTP ステータスで接続を拒否した。ネットワークの障害ではない。400番台のステータスは、たいてい、古いサインイン、または書き起こしのサービスの代わりに答えるプロキシかボット対策のサービスを意味する。/login でサインインを更新し、ステータスが続くなら、ネットワーク経路の VPN やプロキシを確かめる。拒否が届いたときまだ録音中なら、Claude Code は400番台以外のステータスを1回再試行してからこのメッセージを出す。400番台は再試行しない。v2.1.229〜v2.1.231 のネイティブビルドは、このメッセージを出さず、録音を続け、長押しモードのフッターが listening… のままで、録音を止めたあとに Voice connection failed と報告した
No speech detected 音声は書き起こしのサービスへ届いたが、語が認識されなかった。マイクに近づいて話し、背景のノイズを減らし、音声入力の言語が話している言語に合っているか確かめる
書き起こしが文字化けしている、または違う言語になる 音声入力の既定は英語。別の言語で話すなら、先に /config で言語を設定する

macOS の「Microphone」の設定に端末が出ないとき(System Settings → Privacy & Security → Microphone に端末アプリがないとき)は、有効にできるトグルがありません。次の /voice の実行で新しい macOS の許可プロンプトが出るよう、端末の許可の状態をリセットします。

  1. 端末のマイクの許可をリセットする:tccutil reset Microphone <bundle-id> を実行する。<bundle-id> は端末の識別子に置き換える(標準の Terminal は com.apple.Terminal、iTerm2 は com.googlecode.iterm2)。ほかの端末は、osascript -e 'id of app "AppName"' で識別子を調べる
  2. 端末を終了して起動し直す:macOS は、すでに動いているプロセスへ再度プロンプトを出さない。ウィンドウを閉じるだけでなく Cmd+Q で端末アプリを終了し、もう一度開く
  3. 新しいプロンプトを出す:Claude Code を起動して /voice を実行する。macOS がマイクへのアクセスを尋ねるので、許可する

注意

tccutil reset Microphone はバンドル ID なしでも実行できますが、Zoom や Slack など、Mac 上のすべてのアプリのマイクのアクセスを取り消します。各アプリが次の使用時にアクセスを求め直すことになるので、通話中には実行しないでください。

キーの割り当て直しはキーボードショートカット、設定キーは設定キー一覧を参照してください。

スクリーンリーダー#

Claude Code には、視覚的な端末インターフェースを、プレーンな直線的なテキストに置き換える、スクリーンリーダーモードがあります。枠・進捗のアニメーション・その場の再描画の代わりに、VoiceOver や NVDA などのスクリーンリーダーが順に読むラベル付きの行を出力します。会話の全体、ツールの権限の承認、出力の見直しを通して行えます。スクリーンリーダーモードは任意で有効にします。画面拡大鏡・モーションの軽減・色覚に配慮したテーマを使うなら、下の表から CLAUDE_CODE_ACCESSIBILITY・prefersReducedMotion・theme を設定します。スクリーンリーダーモードは端末のインターフェースだけを調整するので、VS Code 拡張のチャットパネルでは要りません。v2.1.236 以降、拡張はそこで、設定なしで会話の動きをスクリーンリーダーへ通知します。

スクリーンリーダーモードをオンにする#

スクリーンリーダーを使う頻度に合う方法を選びます。

  • 1つのセッションだけ:claude --ax-screen-reader を実行する
  • 1つのシェルから始めるセッション:CLAUDE_AX_SCREEN_READER 環境変数を 1 にする。Bash や Zsh では export CLAUDE_AX_SCREEN_READER=1、PowerShell では $env:CLAUDE_AX_SCREEN_READER = "1"。今後のシェルでも保つには、その行をシェルのプロファイルに加える
  • マシンのすべてのセッション:ユーザー設定ファイルに "axScreenReader": true を加える。設定は、VS Code の統合ターミナルを含むどの端末でも効く

方法を組み合わせたときは、--ax-screen-reader フラグが CLAUDE_AX_SCREEN_READER 環境変数に、環境変数が axScreenReader 設定に優先します。SSH 越しに使うなら、環境変数や設定は、Claude Code が動くリモートのマシンに設定します。最初に出る行が、モードを確認します:[Screen Reader Mode: on via flag]・[Screen Reader Mode: on via env]・[Screen Reader Mode: on via settings] のどれかです。オフにするには、オンにした方法を逆にします。フラグなしで起動する、環境変数を解除する、axScreenReader を false にする。CLAUDE_AX_SCREEN_READER を 0 にすると、設定が true でも、Claude Code はモードをオフに保ちます。

アクセシビリティの設定#

オプション 種類 変えるもの
--ax-screen-reader フラグ 1つのセッションのスクリーンリーダーモード
CLAUDE_AX_SCREEN_READER 環境変数 設定したシェルから始めるセッションのスクリーンリーダーモード
axScreenReader 設定 true のとき、すべてのセッションのスクリーンリーダーモード
CLAUDE_AX_STARTUP_QUIET_MS 環境変数 スクリーンリーダーモードで、確認の行の後、最初のプロンプトを描くまで待つ時間。v2.1.217 以降
CLAUDE_AX_PREPARK_MS 環境変数 設定すると、スクリーンリーダーモードで、新しい行や変わった行を書く前に、端末のカーソルを現在の行の行頭に置いて待つ時間(ミリ秒)。v2.1.233 以降
CLAUDE_CODE_ACCESSIBILITY 環境変数 1 にすると、macOS の Zoom のような画面拡大鏡のために、端末のカーソルが見え続ける。カーソルは入力のキャレットに従い、v2.1.218 以降は /config や /plugin などのメニューとパネルの強調した行にも従う
prefersReducedMotion 設定 true のとき、スピナー・シマー・そのほかのアニメーションを減らす、または止める
theme 設定 色覚に配慮した dark-daltonized と light-daltonized のテーマを含む、インターフェースの色。/theme でも選べる
preferredNotifChannel 設定 値が "terminal_bell" のとき、スクリーンリーダーモード以外で、Claude が待っているときの端末のベル

スクリーンリーダーが読み上げるもの#

スクリーンリーダーモードでは、Claude Code はフラットなテキストを書きます。

  • インターフェースの枠に罫線の文字を使わない
  • 色だけの手がかりを使わない
  • 変わっていない内容を再描画しない。進捗のスピナーは静的なテキストで描かれる
  • Claude の返信の表は、罫線の文字のグリッドではなく、Header: value の文として読まれる
  • diff はプレーンテキストで、行ごとに、追加行に +、削除行に - を付けて読まれる。ファイル編集の承認プロンプトで、答える前に提案された変更を聞ける

Claude Code が出力したものはすべて端末のスクロールバックに残るので、スクリーンリーダーの見直しコマンドや端末の検索で、前のターンを読み直せます。スクリーンリーダーモードでは tui 設定は無視されます。後述の制限に挙げるアタッチしたバックグラウンドセッションを除き、フルスクリーン表示ではなくスクロールするテキストを出力します。スクリーンリーダーが追いつけるよう、起動時に確認の行を出力した後、プロンプトを描く前に3秒待つので、スクリーンリーダーが行を読み終えられます。任意のキーを押すと待ちが終わります。待つ長さは CLAUDE_AX_STARTUP_QUIET_MS で変えます。

トランスクリプトの各メッセージは、それが何かを示す、スクリーンリーダーが読み上げるラベルで始まります(自分のメッセージ・Claude の返信と思考・ツールの動作・エラーと警告・プロンプト)。ラベルは検索もできるので、端末のスクロールバックを検索して、トランスクリプトの節の間を跳べます。

ラベル 意味
you: 自分のメッセージ
claude: Claude の返信
thinking: Claude の思考
tool: ファイル編集やコマンド実行などのツールの動作
tool error: 失敗したツール
error: API リクエストの失敗など、会話の中のエラー
warning: フォールバックのモデルへの切り替えなど、Claude Code からの警告
Permission Required: 答えを待っている権限プロンプト
Cost: アカウントがコストを表示するとき、Claude Code の終了時のセッションのコストの要約

Claude Code は、端末のカーソルを入力のキャレットに置いたままにするので、スクリーンリーダーの現在行の読み上げコマンドは、編集中のプロンプトを読みます。入力行の末尾で入力する、または Backspace を押すと、Claude Code は変わった文字だけを書くので、スクリーンリーダーは、その文字だけをエコーします。テキスト編集のショートカットで単語や行を削除すると、Claude Code は削除したテキストを通知します。Ctrl+W・Alt+D、macOS の Option+Delete、Windows の Ctrl+Backspace での単語の削除と、Ctrl+U・Cmd+Backspace での行頭までの削除、Ctrl+K での行末までの削除が対象です。Shift+Tab で権限モードを切り替えると、Claude Code は移った先のモードを [plan mode on] や [accept edits on] のように通知します。通知は1回だけ出力され、以後の再描画では繰り返されません。

前の出力を、位置を見失わずに読む#

前の出力を読んでいる最中にスクリーンリーダーがプロンプトへ戻ってしまうなら、端末のカーソルを追っています。Claude Code は、新しいテキストを書くたびに端末のカーソルをプロンプトへ戻します。

読んでいる位置を保つには、スクリーンリーダーが端末のカーソルを追わないようにします。NVDA では NVDA+6 を押すと、レビューカーソルが端末のカーソルを追わなくなります。もう一度押すと、追う状態に戻ります。

ターンの間を跳ぶ#

Claude Code は、ターンの境界に OSC 133 のシェル統合のマーカーを出すので、端末の前のプロンプトへ跳ぶキーで、トランスクリプト全体を読まずにターンの間を動けます。

  • iTerm2:Cmd+Shift+Up
  • VS Code の端末:Windows は Ctrl+Up、macOS は Cmd+Up
  • Windows Terminal:既定のキーはない。設定で scrollToMark のアクションを割り当てる
  • Kitty と Ghostty:端末のドキュメントで、プロンプトへ跳ぶキーを確かめる

macOS の Terminal はマーカーに反応せず、WezTerm では Claude Code がマーカーを出しません。それらの端末では、代わりにスクロールバックで you: のラベルを検索します。

メニューとプロンプトに答える#

スクリーンリーダーモードでは、ふだん矢印キーで移動するメニュー(権限プロンプトを含む)が、番号付きのリストになります。Claude Code は各選択肢を番号付きの行で読み上げ、続けて有効な範囲を示す Select with numbers のプロンプトを出します。選びたい選択肢の番号を入力して Enter を押します。

  • プロンプトが or Escape to cancel で終わるメニューは、Escape で取り消す
  • 一覧にない番号を入力すると、Claude Code が有効な範囲を告げて、もう一度やり直せる

ふだんはスライダーの /effort のセレクターも、スクリーンリーダーモードでは同じ種類の番号付きリストになります。はい・いいえのプロンプトは、2択のメニューではなく、入力で答えを求めます。y か n と答えて Enter を押します。yes と no も使えます。

Claude Code に呼ばれたら聞こえるようにする#

スクリーンリーダーモードでは、Claude Code は注意が要るとき、端末のベルを鳴らすので、トランスクリプトを見続けなくて済みます。ベルが鳴るのは次のときです。

  • Claude が返信を終えたとき
  • 権限プロンプトなど、答えが要るプロンプトやダイアログが出たとき
  • 5秒を超えて動いたツールが終わったとき

ベルは端末の標準の警告です。消すには、端末アプリのベルの設定を変えます。スクリーンリーダーモード以外で、Claude が待っているときに似たベルを鳴らすには、preferredNotifChannel を "terminal_bell" にします。

既知の制限#

スクリーンリーダーモード向けに調整されていない挙動があります。

  • スクリーンリーダーが動いていても、モードは自動ではオンにならない
  • コマンドで行った権限モードの変更(/plan でのプランモードへの切り替えなど)は、通知されない
  • claude attach かエージェントビューからバックグラウンドセッションにアタッチすると、端末の代替スクリーンに入り、そこには標準のスクロールバックがない。ほかのアタッチしたセッションと同じ挙動。そこから出るには、空のプロンプトで ← を押すか、ダイアログにフォーカスがあるなら Ctrl+Z
  • コストは、ターンごとではなく、終了時に出力する要約で通知される
  • スクリーンリーダーモードは、-p フラグの非対話モードを変えない。非対話モードはすでにプレーンテキストを書くので、スクリプトの代替手段として残る

スクリーンリーダー・画面拡大鏡・端末で何かが動かないときは、Claude Code の issue トラッカーで issue を開き、タイトルに支援技術を書きます。報告には、OS・端末アプリ・支援技術の名前とバージョンを添えます。

関連ページは、対話モードの操作・ステータスライン・ヘッドレス実行(-p)です。

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

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

ページの一覧