メインコンテンツへスキップ
Claude Code はターミナル設定なしで任意のターミナルで動作します。このページは、特定の動作が期待通りに機能していない場合のためのものです。以下から症状を見つけてください。すべてが既に正常に動作している場合は、このページは不要です。 このページは、ターミナルが Claude Code に正しい信号を送信するようにするためのものです。Claude Code 自体が応答するキーを変更するには、代わりに キーバインディング を参照してください。

複数行のプロンプトを入力する

Enter キーを押すとメッセージが送信されます。送信せずに改行を追加するには、Ctrl+J を押すか、\ を入力してから Enter を押してください。どちらの方法もセットアップなしですべてのターミナルで機能します。 ほとんどのターミナルでは Shift+Enter を押すこともできますが、サポートはターミナルエミュレータによって異なります。 VS Code、Cursor、Devin Desktop、Alacritty 0.16 より前のバージョン、Zed の場合、/terminal-setup はターミナルの設定ファイルに Shift+Enter キーバインディングを書き込みます。初回実行時には Installed VSCode terminal Shift+Enter key binding などの確認メッセージが表示されます。既存のバインディングはそのまま保持されます。VSCode terminal Shift+Enter key binding already configured などのメッセージが表示される場合は、変更は加えられていません。/terminal-setup は tmux または screen の内部ではなく、ホストターミナル内で直接実行してください。ホストターミナルの設定に書き込む必要があるためです。 VS Code、Cursor、Devin Desktop では、/terminal-setup は 2 つのエディタ設定も更新します。統合ターミナルでのテキストの乱れを防ぐために terminal.integrated.gpuAcceleration を "off" に設定し、フルスクリーンモードでのスムーズなスクロールのために terminal.integrated.mouseWheelScrollSensitivity を設定します。GPU アクセラレーション変更を元に戻すには、"auto" に設定し直してエディタウィンドウをリロードしてください。 Zed では、/terminal-setup は keymap.json をその場で更新します。
  • キーマップに既にバインディングがあり、そのいずれもターミナルの shift-enter ではない場合、Claude Code はまずそれを同じディレクトリ内のコピー(keymap.json.1a2b3c4d.bak など)にバックアップしてから、Shift+Enter バインディングをキーマップにマージし、他のキーバインディングとコメントを保持します
  • Claude Code がキーマップを読み込めない、解析できない、バックアップできない、またはマージされた結果を検証できない場合、ファイルを変更せず、追加するキーバインディングブロックを出力します
tmux 内で実行している場合、外側のターミナルがサポートしている場合でも、Shift+Enter には以下の tmux 設定が必要です。 改行を別のキーにバインドするか、Enter が改行を挿入し Shift+Enter が送信するように動作を入れ替えるには、キーバインディングファイルで chat:newline および chat:submit アクションをマップしてください。

macOS で Option キーショートカットを有効にする

Claude Code の一部のショートカットは Option キーを使用します。例えば、Option+Enter で改行したり、Option+P でモデルを切り替えたりします。macOS では、ほとんどのターミナルはデフォルトで Option を修飾キーとして送信しないため、これを有効にするまでこれらのショートカットは機能しません。ターミナル設定は通常「Use Option as Meta Key」というラベルが付いています。Meta は、現在 Option または Alt というラベルが付いているキーの歴史的な Unix 名です。
設定 → プロファイル → キーボードを開き、「Use Option as Meta Key」をチェックします。Claude Code の初回実行時のターミナルセットアッププロンプトを受け入れた場合、これはすでに完了しています。そのプロンプトは /terminal-setup を実行し、Option を Meta として有効にし、Apple Terminal プロファイルで可聴ベルをオフにします。スクリーンリーダーモードでは、/terminal-setup はベル設定を変更しないままにするため、ターミナルベルは可聴のままです。以前の実行でベルがオフになった場合は、設定 → プロファイル → 詳細 → 「可聴ベル」でオンに戻してください。
Ghostty、Kitty、およびその他のターミナルについては、ターミナルの設定ファイルで Option-as-Alt または Option-as-Meta 設定を探してください。

ターミナルベルまたは通知を取得する

Claude がタスクを完了するか権限プロンプトで一時停止し、ターミナルから離れているように見える場合、通知イベントが発火します。各通知タイプが発火するタイミングを参照して、正確なタイミングを確認してください。これをターミナルベルまたはデスクトップ通知として表示することで、長いタスクが実行されている間に他の作業に切り替えることができます。 デフォルトでは、Claude Code は一部のターミナルではデスクトップ通知を送信し、それ以外のターミナルではベル文字を送信するか、何も送信しません:
  • Ghostty、Kitty、および iTerm2(Claude Code がこれらを検出した場合):デスクトップ通知を送信します。iTerm2 では、アラート設定をオンにした後にのみ表示されます。
  • Apple Terminal:音は鳴りません。Claude Code が最前面の Terminal ウィンドウのプロファイルで「Audible bell」がオフになっていることを検出した場合は無音のベル文字を送信し、それ以外の場合は何も送信しません。このベル文字は、そのプロファイルの「Visual bell」または Dock のバウンスオプションがオンになっている場合、ウィンドウのフラッシュとして、または Terminal がバックグラウンドにあるときは Dock アイコンのバウンスとして表示されます。
  • その他のターミナル:何も送信しません。
ターミナルやプロファイルに関係なく Claude Code にベル文字を送信させるには、preferredNotifChannel を "terminal_bell" に設定します。Apple Terminal では、音を聞くために Settings > Profiles > Advanced で Audible bell もオンにしてください。次の設定エントリでチャネルを設定します:
~/.claude/settings.json
tmux の外で実行しているターミナルから SSH 経由で接続している場合は、Claude Code を実行しているマシンで preferredNotifChannel をローカルターミナルに対応する値("iterm2"、"kitty"、または "ghostty")に設定します。これにより、デスクトップ通知がローカルマシンに届きます。Ghostty と Kitty はさらなるセットアップなしで OS 通知センターに転送します。iTerm2 では転送を有効にする必要があります:
1

Open iTerm2 notification settings

Go to Settings → Profiles → Terminal.
2

Enable alerts

Check “Notification Center Alerts”, then click “Filter Alerts” and enable “Send escape sequence-generated alerts”.
通知がまだ表示されない場合は、ターミナルアプリケーションが OS 設定で通知権限を持っていることを確認し、tmux 内で実行している場合はパススルーを有効にしてください。

通知フックで音を再生する

任意のターミナルで通知フックを設定して、Claude があなたの注意が必要な場合に音を再生するか、カスタムコマンドを実行できます。フックは組み込み通知と並行して実行され、それを置き換えるのではなく、Warp や VS Code 統合ターミナルなどのデスクトップ通知を受け取らないターミナルは、フックを使用するか、代わりにpreferredNotifChannelを"terminal_bell"に設定できます。 以下の例は macOS でシステム音を再生します。リンクされたガイドには、macOS、Linux、および Windows のデスクトップ通知コマンドがあります。
~/.claude/settings.json

ターミナルでセッションのステータスを確認する

ターミナルが OSC 7501 Program Status Protocol を実装している場合、対話型の各 Claude Code セッションが作業中か、ユーザーの応答待ちか、完了したかを表示できます。これは、長時間のタスクを実行する場合や複数のセッションを同時に実行する場合に役立ちます。Claude Code 側でオンにする設定はありません。ターミナルがこのプロトコルを実装しているかどうか、またどこにステータスが表示されるかについては、ターミナルのドキュメントを確認してください。 ターミナルがプロトコルを実装しているにもかかわらず、セッションのステータスが表示されない場合は、次の各原因を確認してください。
  • Claude Code のバージョン:ステータスの報告には Claude Code v2.1.295 以降が必要です。シェルで claude --version を実行して確認してください。
  • tmux:tmux 内では、Claude Code はターミナルではなく tmux に対してサポートの有無を確認します。また、allow-passthrough はこの確認には影響しません。tmux の外でセッションを開始してください。
  • バックグラウンドセッション:バックグラウンドセッションは、アタッチしている間であっても、ターミナルにステータスを報告しません。代わりにエージェントビューにステータスが表示されます。
  • CLAUDE_CODE_DISABLE_TERMINAL_TITLE:この変数を 1 に設定している場合、Claude Code はサポートの有無を確認せず、ステータスも報告しません。この変数の設定を解除してください。
プロトコルのサポートを報告するターミナルでは、タブのタイトルの先頭にステータスのグリフは付きません。ターミナル自体がセッションの状態を表示するため、Claude Code は他のターミナルでタイトルの前に付けるグリフを省略します。

tmux を設定する

Claude Code が tmux 内で実行される場合、デフォルトでは Shift+Enter が改行を挿入する代わりに送信してしまい、デスクトップ通知が外側のターミナルに到達しません。これらの行を ~/.tmux.conf に追加してから、tmux source-file ~/.tmux.conf を実行して、実行中のサーバーに適用してください。
~/.tmux.conf
表示中のペインから外側のターミナルに通知を送るには、allow-passthrough 行を残したまま、preferredNotifChannel を "iterm2"、"kitty"、または "ghostty" に設定してください。このサンプルでは、表示していないウィンドウ内のペインからは通知が送られません。extended-keys 行により、tmux が Shift+Enter と通常の Enter を区別できるようになり、改行ショートカットが機能するようになります。 mod の Image には、allow-passthrough 行と focus-events 行に加えて、その他の tmux 内で描画するための要件が必要です。これらの行を追加した後は、tmux からデタッチして再度アタッチし、Claude Code を再起動してください。

Windows で Backspace がワード全体を削除する問題を修正する

Windows では、Claude Code は Backspace として到着した ^H を Ctrl+Backspace として読み込み、前のワードを削除します。ただし、TERM_PROGRAM が mintty または TERM が cygwin の場合は除きます。macOS と Linux では、Claude Code はこれをプレーン Backspace として読み込みます。 Backspace を押すたびにワード全体が削除される場合、ターミナルはプレーン Backspace に対して ^H を送信しています。CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0 を設定してください。その後、Backspace と Ctrl+H は各々 1 文字を削除します。macOS または Linux で Ctrl+Backspace が 1 文字だけを削除する場合、ターミナルが ^H を送信しているため、代わりに変数を 1 に設定してください。

カラーテーマを合わせる

/theme コマンド、または /config 内のテーマピッカーを使用して、ターミナルに合う Claude Code のテーマを選択します。auto オプションを選択すると、ターミナルのライトまたはダークの背景が検出されるため、ターミナルが OS の外観の変更に追従するたびにテーマも追従します。Claude Code はターミナル自体の配色を制御しません。配色はターミナルアプリケーションによって設定されます。 インターフェースの下部に表示される内容をカスタマイズするには、現在のモデル、作業ディレクトリ、git ブランチ、またはその他のコンテキストを表示するカスタムステータスラインを設定します。

カスタムテーマを作成する

組み込みのプリセットに加えて、/theme には定義済みのカスタムテーマと、インストール済みのプラグインが提供するテーマが一覧表示されます。リストの末尾にある New custom theme… を選択すると、対話形式でテーマを作成できます。テーマに名前を付けてから、上書きする個々のカラートークンを選択します。カスタムテーマがハイライトされている状態で Ctrl+E を押すと、そのテーマを編集できます。 各カスタムテーマは ~/.claude/themes/ 内の JSON ファイルです。.json 拡張子を除いたファイル名がテーマのスラッグとなり、テーマを選択するとテーマ設定として custom:<slug> が保存されます。ファイルには 3 つのオプションフィールドがあります。 カラー値には #rrggbb、#rgb、rgb(r,g,b)、ansi256(n)、または ansi:<name> を指定できます。<name> は red や cyanBright などの 16 種類の標準 ANSI カラー名のいずれかです。不明なトークンや無効なカラー値は無視されるため、タイプミスによって表示が壊れることはありません。 次の例では、dark プリセットを維持しつつ、プロンプトのアクセント、エラーテキスト、成功テキストの色を変更するテーマを定義しています。
~/.claude/themes/dracula.json
Claude Code は ~/.claude/themes/ を監視しており、ファイルが追加または変更されると再読み込みするため、エディターで行った編集は再起動なしで実行中のセッションに適用されます。Claude Code の起動時に ~/.claude/themes/ フォルダー自体が存在しなかった場合は、最初のテーマファイルを作成した後に一度再起動してください。それ以降は、変更が再起動なしで適用されます。 以下のリファレンスでは、overrides で設定できるトークンについて説明します。/theme の対話型エディターでは、同じトークンがライブプレビュー付きで表示されるほか、ここでは省略しているオンボーディング画面の色などの単一用途のアクセントもいくつか表示されます。
次の例では、以下のいくつかのグループのトークンを組み合わせています:ブランドアクセント、plan モードの枠線、差分の背景、メッセージの背景です。
~/.claude/themes/midnight.json

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

インターフェース全体で使用される主要なブランドアクセントと前景テキストの色合いを制御します。

ステータスの色

メッセージやインジケーター全体で、成功、失敗、警告の状態を示します。

入力ボックスとモードインジケーター

入力ボックスの枠線の色と、権限モードまたはインジケーターがアクティブな間に表示されるアクセントを設定します。

差分の表示

ファイル編集やレビューで追加および削除されたコードに色を付けます。

フルスクリーンモード

Claude Code は、userMessageBackgroundHover、selectionBg、composerSidebarBackground をフルスクリーンレンダリングモードでのみ使用します。userMessageBackground、bashMessageBackgroundColor、memoryBackgroundColor は、デフォルトとフルスクリーンの両方のレンダラーで描画されます。

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

/usage ビューに表示されるバーと、ユーザーのメッセージと 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 がターンの effort を引き上げられる場合、Claude Code はプロンプト入力内のその単語を 7 色の虹色グラデーションで表示します。トークン名は rainbow_<color> および rainbow_<color>_shimmer というパターンに従い、<color> は red、orange、yellow、green、blue、indigo、または violet です。

フルスクリーンレンダリングに切り替える

スクリーンリーダーモードでは、このセクションは適用されません。Claude Code は、添付されたバックグラウンドセッションを除き、常にプレーンなスクロールテキストとしてレンダリングされます。また、他のセッションで /tui fullscreen を実行した場合、Claude Code はレンダラーを切り替える代わりに説明を出力します。 ディスプレイがちらつくか、Claude が作業中にスクロール位置がジャンプする場合は、フルスクリーンレンダリングモードに切り替えてください。このモードでは、ターミナルのネイティブスクロールバックではなく、マウスまたは PageUp を使用して Claude Code 内でスクロールします。検索とコピーの方法については、フルスクリーンページを参照してください。 ちらつきが唯一の問題で、ターミナルが同期出力をサポートしているが自動検出されていない場合(Emacs eat など)、CLAUDE_CODE_FORCE_SYNC_OUTPUT=1を設定して、レンダラーを変更せずにちらつきを停止します。 /tui fullscreen を実行して切り替え、設定を保存します。会話はそのまま再起動され、フルスクリーン開始に失敗しない限り、今後のセッションはフルスクリーンで開始されます。Claude Code を起動する前に、CLAUDE_CODE_NO_FLICKER 環境変数を設定することもできます。

幅広いターミナルでレスポンス幅を制限する

幅広いターミナルでは、Claude のレスポンス内の各行のテキストがウィンドウの全幅に渡ります。代わりに設定した列数でテキストを折り返すには、設定で maxProseWidth を設定してください。

大きなコンテンツを貼り付ける

プロンプトに 800 文字を超える、または 3 行を超えるテキストを貼り付けると、Claude Code は入力ボックスを使いやすい状態に保つため、入力を [Pasted text #1 +120 lines] のようなプレースホルダーに折りたたみます。送信時には完全な内容が送られます。ファイル全体や長いログなど非常に大きな入力の場合は、貼り付けるのではなく、内容をファイルに書き出して Claude にそのファイルを読むよう依頼してください。そうすることで会話のトランスクリプトが読みやすく保たれ、Claude は後のターンでもパスを指定してそのファイルを参照できます。また、VS Code の統合ターミナルでは、非常に大きな貼り付けの一部の文字が Claude Code に届く前に欠落することがあるため、その場合もファイルを使用してください。 貼り付けた内容に不可視の Unicode 文字が含まれている場合、Enter を押すと Claude Code がそれらを除去し、クリーンアップされたプロンプトを入力ボックスに戻します。もう一度 Enter を押すと送信できます。

Claude による貼り付けテキストの扱い

送信すると、Claude は各 [Pasted text #N] プレースホルダーの背後にある内容を、ユーザーが入力したものではなく他の場所から貼り付けたテキストとしてマークされた状態で受け取ります。Claude には、貼り付けた内容にはユーザーが書いていない指示が含まれている可能性があること、そしてその中の指示には、ユーザーが入力したメッセージで求められている場合にのみ従うべきであることが伝えられます。フィーチャーフラグを取得しないセッションでは、貼り付けた内容はマークされません。

折りたたまれた貼り付けの削除と復元

Ctrl+W や Ctrl+K などの単語または行単位のショートカット、あるいは df] のような f/t モーションを使った vim の削除で削除を行い、削除範囲が [Pasted text #N] プレースホルダーの内部に及んだ場合、Claude Code はプレースホルダー全体を削除します。復元するには、単語または行単位のショートカットの後であれば Ctrl+Y で、vim の削除の後であれば NORMAL モードでの p で、削除した内容を貼り付け直します。

貼り付けテキストを含むプロンプトを呼び出す

Claude Code は各 [Pasted text #N] プレースホルダーの背後にある内容を ~/.claude/paste-cache/ に保存します。そのため、コマンド履歴からプロンプトを呼び出して再送信すると、後のセッションであっても、貼り付けた完全な内容が再び送信されます。 cleanupPeriodDays より古いキャッシュファイルは保持期間のクリーンアップルールに従って削除されるため、呼び出したプロンプトが、もう存在しない貼り付けテキストを参照している場合があります。そのようなプロンプトを送信すると、Claude Code は [Pasted text #N] という文字列そのものは送信せず、見つからない貼り付けを示す通知を表示します。
  • テキストが残っている通常のプロンプトでは、Claude Code はプレースホルダーを削除し、残りのテキストを送信します。
  • 削除によって実行される内容が変わってしまう シェルモードのコマンドや / コマンドの場合、および削除によって空になるあらゆるプロンプトの場合、Claude Code は送信をキャンセルし、プレースホルダーを含む元のテキストを入力欄に残します。プレースホルダーを削除するかコマンドを編集してから、再送信してください。

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 エディタモードリファレンスを参照してください。 Vim モーションはキーバインディングファイルを通じて再マップできません。jj を Escape にマップするなどの 2 キー INSERT モードシーケンスをマップするには、ユーザー設定で vimInsertModeRemaps を設定してください。 INSERT モードで Enter キーを押すと、標準的な Vim とは異なり、プロンプトが送信されます。代わりに NORMAL モードで o または O を使用するか、Ctrl+J を使用して改行を挿入してください。