Claude Code ステータスライン: 生産性のためのターミナルステータス行設定(2026)
Claude Code のステータスラインは、ターミナルセッションの一番下に表示されるカスタマイズ可能な行で、使用中のモデル、残りコンテキスト量、セッションのコスト、Git ブランチ、さらにはレート制限まで表示できます。/statusline コマンドを使えば約30秒で有効化でき、~/.claude/settings.json を手動で編集して設定することもできます。このスクリプトはローカルで実行され、API トークンをまったく消費しません。表示する価値があるのは、モデル、コンテキスト %(これで /compact に不意を突かれません)、コスト、そして作業を自分の手でコントロールし続けるための Git です。
著者: Jasmine、Windows で毎日 Claude Code を使い込んでいる開発者です。
Claude Code のステータスラインとは?
Claude Code のステータスラインは、すべての Claude Code セッションの一番下にレンダリングされるカスタマイズ可能な行で、自分で設定するシェルスクリプトによって生成されます。セッションの状態が変わるたびに、Claude Code はそのスクリプトを呼び出し、セッション全体の状態を stdin 経由の JSON として渡し、スクリプトが stdout に書き戻した内容をそのままステータスラインとして表示します。言い換えると、JSON のかたまりを受け取り、気になるフィールドを選び、好きなように整形して出力すれば、Claude Code はその結果を表示するだけです。
すぐに頭に入れておきたい重要な点は、ステータスラインは自分のマシン上でローカルに実行され、API 呼び出しを行わず、トークンを消費しないということです。これは「AI」機能ではなく、stdin を読むだけの bash / PowerShell / Python スクリプトにすぎません。ですから、セッションの料金に影響を与えることなく、好きなだけ情報を表示できます。Claude Code はイベント(モデルの切り替え、ツール呼び出し、コンテキストの更新など)のときにのみスクリプトを再実行し、呼び出しを軽くデバウンスするので、絶えず発火し続けることはありません。つまり、乱用しない限り、多少重めのスクリプトでも問題ありません(下記のパフォーマンスのセクションを参照)。
デフォルトのステータスバー(作業ディレクトリしか表示しません)とは違い、カスタムステータスラインでは、コーディング中に本当に大切な情報だけを正確に引き込めます。始めたばかりなら、まずは Claude Code とは何か、何のためのものか を読んで全体像をつかんでから、ここに戻って設定するとよいでしょう。
生産性を高めるためにステータスラインには何を表示すべき?
ステータスラインにすべてのフィールドを詰め込まないでください。0.5秒でざっと目を通してそのまま行動に移せる短い行こそが、良い行です。数か月実際に使ってみて、表示する価値が最もあると感じるのは次のものです。
- 残りコンテキストの割合 - 最も重要なものです。コンテキストが危険域に入ったら、タスクの途中で Claude Code に会話を勝手に圧縮される前に、自分から
/compactしたり作業を分割したりできます。 - 使用中のモデル - Opus と Sonnet のどちらを使っているかを把握して、画びょうをハンマーで叩くような(あるいはその逆の)ミスマッチを避けられます。モデルを切り替えたばかりだと、つい忘れがちです。
- セッションのコスト - 逐次更新される USD の金額があると、どのタスクがお金を消費しているかの感覚がつかめます。特に API トークンごとに課金されている場合に有用です。
- Git ブランチ + ステージ済み/変更済みファイル数 - 間違ったブランチへのコミットを避け、未保存の変更がいくつあるかを把握できます。
- 5時間 / 7日のレート制限(Pro/Max プラン) - 残り枠が少なくなってきたのが見えるので、長いタスクの途中で打ち切られずに済みます。
- ディレクトリ / worktree - 複数の worktree を同時に開いているときに便利です。
| フィールド | 表示する理由 |
|---|---|
| コンテキスト % | 突然の /compact を避け、会話を自分のタイミングで整理できる |
| モデル | どのモデルを使っているか把握し、用途に合ったものを選べる |
| コスト | セッションの支出をコントロールできる |
| Git ブランチ + 差分 | 間違ったブランチにコミットせず、作業中の変更を確認できる |
| レート制限 | タスクの途中で枠を使い切らない(Pro/Max) |
私のルールは、1行目には常にモデル + コンテキスト % を置き、コスト/Git/レート制限は本当に必要なときだけ追加する、というものです。毎日よく使うコマンドについては、Claude Code チートシート を参照してください。
最速の方法: /statusline コマンド
設定ファイルを触りたくない場合、最も速いのは、Claude Code セッションの中で普通の言葉でお願いするだけです。/statusline に続けて、表示したい内容の説明を入力します。
/statusline show model name and context percentage with a progress bar
Claude Code があなたの代わりにスクリプトを書き、~/.claude/ の下に保存し、settings.json に設定ブロックを自動で追加します。この手順では新しいファイルの作成と設定の編集を行うため、Claude Code は書き込む前に変更内容の承認を求めてきます。内容にさっと目を通して受け入れてください。完了すると、次のやり取りからステータスラインが表示されます。
これは手早く下書きを得るのに最適な方法で、あとで開いて好みに合わせて微調整できます。まず基本的な操作とワークフローを理解したい場合は、初心者向け Claude Code ガイド を参照してください。
settings.json による手動セットアップ(ステップバイステップ)
完全にコントロールしたいですか?手動で設定しましょう。たった3ステップです。
ステップ1 - スクリプトを作成する ~/.claude/statusline.sh — stdin から JSON を読み取り、jq で欲しいフィールドを取り出して、1行を出力します。
#!/bin/bash
input=$(cat)
model=$(echo "$input" | jq -r '.model.display_name // "?"')
dir=$(echo "$input" | jq -r '.workspace.current_dir // "."' | xargs basename)
pct=$(echo "$input" | jq -r '.context_window.used_percentage // 0')
printf "[%s] 📁 %s | %s%% context" "$model" "$dir" "$pct"
ステップ2 - 実行可能にする:
chmod +x ~/.claude/statusline.sh
⚠️ 最もよくある間違い:
chmod +xを忘れると、ステータスラインは明確なエラーも出さずに何も表示されなくなります。ステータスラインが「無言」の場合は、まず実行権限を確認してください。
ステップ3 - 次のファイルで宣言する ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 0
}
}
Claude Code は次のやり取りでこれを再読み込みします - 再起動は不要です。便利なオプションがいくつかあります。padding は左マージンを制御し(0 にすると端にぴったり寄せられます)、refreshInterval(ミリ秒単位)は、時計やレート制限のような時間ベースのデータのためにスクリプトをタイマーで再実行させます。ごく短いスクリプトなら、別ファイルを用意せずに jq -r コマンドを command フィールドに直接インライン化することもできます - ただし別ファイルにするほうがはるかに保守しやすいです。
JSON データテーブル - ステータスラインが受け取る内容
実行のたびに、スクリプトは stdin 経由で完全な JSON オブジェクトを受け取ります。最もよく使うフィールドのリファレンスを次に示します(出典: 公式ドキュメント code.claude.com/docs/en/statusline、2026年8月アクセス):
| フィールド | 意味 |
|---|---|
model.display_name / model.id | アクティブなモデルの表示名と ID |
workspace.current_dir | 現在の作業ディレクトリ |
workspace.project_dir | プロジェクトのルートディレクトリ |
workspace.git_worktree / repo.* | worktree と Git リポジトリの情報 |
context_window.used_percentage | 使用済みコンテキストの割合 |
context_window.remaining_percentage | 残りコンテキストの割合 |
context_window.context_window_size | コンテキストウィンドウのサイズ |
context_window.current_usage | 現在使用中のトークン数 |
cost.total_cost_usd | セッションのコスト(USD) |
cost.total_duration_ms | セッションの継続時間(ミリ秒) |
cost.total_lines_added | 追加されたコード行数 |
rate_limits.five_hour.used_percentage | 使用済みの5時間枠(Pro/Max) |
rate_limits.seven_day.used_percentage | 使用済みの7日枠 |
rate_limits.*.resets_at | 枠がリセットされるタイミング |
effort.level | 現在の「effort」レベル |
output_style.name | アクティブな出力スタイルの名前 |
pr.number / pr.url / pr.review_state | PR 番号、URL、レビュー状態 |
session_id | セッション ID(キャッシュに使用 - パフォーマンスのセクションを参照) |
version | Claude Code のバージョン |
重要な注意: 多くのフィールドは、特に最初の API 応答の前は、欠落していたり null だったりします。jq では必ずフォールバックを使いましょう。数値には // 0、文字列には // "empty" または // "" を使います。新しめのフィールドの一部は、十分に新しい Claude Code のビルドが必要です。実行中のビルドで試していないのに、フィールドが存在しないと決めつけないでください。
コピペ用サンプルスクリプト(必要なものを選んでください)
以下のプリセットは bash + jq を使います。Python や Node で書けば JSON パースが組み込みなので、さらに短くなります。
1) コンテキストバー - プログレスバー + %:
#!/bin/bash
input=$(cat)
pct=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
filled=$((pct / 10)); empty=$((10 - filled))
bar=$(printf '▓%.0s' $(seq 1 $filled))$(printf '░%.0s' $(seq 1 $empty))
printf "%s %s%%" "$bar" "$pct"
2) 色付き Git - ブランチ + ステージ済み(緑)/ 変更済み(黄)ファイルを、ANSI カラーコードで表示:
#!/bin/bash
input=$(cat)
branch=$(git branch --show-current 2>/dev/null)
staged=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')
modified=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')
printf " %s \033[32m+%s\033[0m \033[33m~%s\033[0m" "$branch" "$staged" "$modified"
3) コスト + 継続時間:
#!/bin/bash
input=$(cat)
cost=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
ms=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')
sec=$((ms / 1000)); min=$((sec / 60)); s=$((sec % 60))
printf "\$%.2f | %dm %ds" "$cost" "$min" "$s"
4) 複数行 + 色のしきい値 - 1行目: モデル/ディレクトリ/ブランチ、2行目: 色が変わるバー(緑 <70、黄 70-89、赤 90+)+ コスト + レート制限:
#!/bin/bash
input=$(cat)
model=$(echo "$input" | jq -r '.model.display_name // "?"')
dir=$(echo "$input" | jq -r '.workspace.current_dir // "."' | xargs basename)
branch=$(git branch --show-current 2>/dev/null)
pct=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
cost=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
rl=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')
if [ "$pct" -ge 90 ]; then c="\033[31m"; elif [ "$pct" -ge 70 ]; then c="\033[33m"; else c="\033[32m"; fi
printf "[%s] 📁 %s %s\n" "$model" "$dir" "$branch"
printf "${c}%s%% context\033[0m | \$%.2f" "$pct" "$cost"
[ -n "$rl" ] && printf " | 5h: %s%%" "$rl"
この複数行プリセットは、私が実際に毎日使っているものです。上の行で状況を把握し、下の行が色を変えてコンテキストが埋まってきたことを警告してくれます - 作業の途中で /compact されないために非常に効果的です。
Windows でのセットアップ(PowerShell + Git Bash)
世に出回っているガイドのほとんどは bash 専用です。(私のように)Windows を使っているなら、うまくいく方法が2つあります。
オプション A - Git Bash: 最もシンプルです。Git Bash と jq がインストールされていれば、上記の .sh スクリプトはそのまま動きます。いつもどおり command を .sh ファイルに向けるだけです。
オプション B - PowerShell: stdin を読み取って JSON を解析する .ps1 スクリプトを書きます。
# C:/Users/you/.claude/statusline.ps1
$data = $input | Out-String | ConvertFrom-Json
$model = $data.model.display_name
$pct = [math]::Floor($data.context_window.used_percentage)
Write-Host "[$model] $pct% context" -NoNewline
そして settings.json で宣言します:
{
"statusLine": {
"type": "command",
"command": "powershell -NoProfile -File C:/Users/you/.claude/statusline.ps1"
}
}
⚠️ Windows のバックスラッシュの罠:
commandフィールドのパスは、必ずスラッシュ(/)で書いてください。Git Bash はバックスラッシュ\を「食べて」しまうため、コマンドはエラーも出さずに静かに失敗します - ステータスラインには何も表示されず、エラーも報告されません。~の文字はそのまま問題なく使えます。
これはまさに多くの Windows ユーザーがつまずくポイントです。スクリプトは正しいのに、パスのスラッシュの向きが間違っているのです。\ を / に置き換えれば動きます。
パフォーマンスのヒント: ステータスラインでセッションを遅くしない
スクリプトは非常に頻繁に実行されます。大きなリポジトリでは、git status や git diff が毎回数百ミリ秒かかることがあり、それが積み重なるとセッション全体がわずかにもたつく感覚になります。ステータスラインを速く保つためのヒントをいくつか紹介します。
- Git の結果を
session_idをキーにした一時ファイルにキャッシュする - 毎回 git を呼ぶ代わりに、約5秒ごとに更新します。キャッシュのキーにはsession_idを使ってください - 絶対に$$/PID を使わないこと。スクリプトの実行ごとに変わってしまい、キャッシュが役に立たなくなります。 - 出力を短く保つ - 1行、数フィールドに。長い行は遅く、しかも読みにくいです。
refreshIntervalを使う - 時計やレート制限のような時間ベースのデータには、手間をかけて再計算する代わりにこれを使います。COLUMNS/LINESを読む - 幅を測り、ターミナルが狭いときは切り詰めます。
目安として、スクリプトが約300ミリ秒以上かかると、ラグを感じます。キャッシュと切り詰めが最も効果の大きい2つのレバーです。
よくある問題 & 解決方法
| 症状 | 原因 & 対処 |
|---|---|
| 何も表示されない | スクリプトへの chmod +x を忘れている(間違い #1)、またはスクリプトが stdout ではなく stderr に出力している |
| chmod 後もまだ空白 | ワークスペースの信頼を承認していない - ステータスラインはフックと同様に信頼が必要です。または disableAllHooks: true が設定されている |
| Bash では動くが Windows で壊れる | パスが \ を使っている - / に切り替える |
開いた直後に -- や空白が表示される | 最初の API 応答の前はフィールドがまだ null です - フォールバック // 0 / // empty を使う |
原因を切り分けるには、claude --debug を実行して、スクリプトの終了コードと stderr を確認します。また、一部のエミュレータ(例えば Terminal.app)は OSC 8 リンクに対応していないため、ステータスラインにハイパーリンクを埋め込んでもクリックできないことがあります - これはターミナルの制限であり、スクリプトのバグではありません。
スクリプトを編集したくない?ビジュアルなステータスラインビルダーを使おう
1本のステータスラインのためだけに bash や PowerShell を書きたい人ばかりではありません。もしあなたがそうなら、ノーコードの選択肢の1つが AgentKit バンドル — 現在 $149($198 から) です。そのデスクトップアプリにはビジュアルなステータスラインビルダーがあり、手書きの代わりにフィールド(モデル、コンテキスト、コスト、Git など)をドラッグ&ドロップできます - あわせて、ライセンス、スキル、MCP 連携を1か所で管理できます。ターミナルが苦手な人にとって、settings.json に触れずにステータスラインを作る方法になります。
正直に言うと、/statusline と上記のスクリプトは完全に無料で、ほとんどの人には十分です - ビジュアルビルダーは、ノーコードで済ませたい場合や、スキル/エージェント一式を1か所で管理したい場合に便利なだけです。決める前にじっくり調べたいなら、AgentKit とは何か、そして価値があるか(レビュー) を読んでください。
よくある質問(FAQ)
ステータスラインはトークンを消費しますか?
いいえ。ステータスラインは自分のマシンでローカルスクリプトを実行し、Claude API 呼び出しを行わないため、トークンを消費しません。セッションのコストに影響を与えずに、好きなだけ情報を表示できます。
Windows で動作しますか?
はい。.sh スクリプトは Git Bash で実行できますし、.ps1 を書いて powershell -NoProfile -File で呼び出すこともできます。バックスラッシュの罠を避けるため、パスはスラッシュ(/)で書いてください。
なぜステータスラインが表示されないのですか?
最もよくある原因は、スクリプトへの chmod +x を忘れていることです。ほかには、スクリプトが stdout ではなく stderr に出力している、ワークスペースの信頼を承認していない、disableAllHooks がオンになっている、または Windows でパスのスラッシュの向きが間違っている、などです。エラーを確認するには claude --debug を実行してください。
/statusline は settings.json を編集するのと何が違いますか?
/statusline コマンドを使うと、平易な言葉での説明から Claude Code がスクリプトを生成し、設定まで行ってくれます - 速く、初心者に最適です。settings.json を手動で編集すると、内容と書式を完全にコントロールできます。多くの人は /statusline で下書きを作り、そのあとファイルを手で微調整します。
コンテキスト % を表示する意味は何ですか?
会話を先回りして管理するためです。コンテキストがほぼ満杯になったら、タスクの途中で Claude Code に圧縮される代わりに、自分で /compact したり作業を分割したりできます - Claude Code による圧縮は、あなたの文脈の流れを断ち切りがちです。
コード不要の既製の設定はありますか?
はい。最も速いのは /statusline で、Claude に代わりに書いてもらえます。完全なドラッグ&ドロップのノーコードなインターフェイスが欲しいなら、AgentKit のデスクトップアプリにあるビジュアルなステータスラインビルダーが1つの選択肢です。
まとめと次のステップ
手の込んだスクリプトは必要ありません。モデル + コンテキスト % を表示するシンプルな1行だけでも、すでにはっきりとした生産性の向上が得られます。必要を感じたら、そこからレベルアップしていけばよいのです。まず /statusline から始め、そのあとファイルを開いて好みに合わせて調整しましょう。よく使うコマンドをまとめるには Claude Code チートシート を、Claude Code にプロジェクトをよりよく理解させるには CLAUDE.md ガイド を読んでください。始めたばかりですか?Claude Code とは何か に戻りましょう。
Claude Code をすぐにもっと強力にしたいですか? スクリプトを書きたくなく、ドラッグ&ドロップのインターフェイスでステータスラインを作りたい、さらに既製のスキルとエージェント一式も欲しいなら、このツールキットをのぞいてみてください。