Claude Codeの入力欄の下にはステータスラインが表示されるが、デフォルトではモデル名とコンテキスト使用量くらいしか表示されない。
Maxプランで使っていると「今どれくらいクォータを消費しているか」が気になるが、毎回Webで確認するのは面倒だ。そこで、ステータスラインをカスタマイズして使用量クォータを常に表示するようにした。
完成形
最終的にこのような表示になる。

左から順に:
- プロジェクト名(シアン)— ワークツリー使用時も元のリポジトリ名を表示
- Gitブランチ(赤)+ dirty flag — 長いブランチ名は自動省略
- モデル名(薄字)
- コンテキスト使用率 — 色分け表示
- セッションコスト
- 5時間/7日間クォータ — 使用率と残り時間のカウントダウン
クォータの色はしきい値で変化する。50%未満は緑、50〜79%は黄色、80%以上は赤。
セットアップ
前提条件
jq(JSONパーサー)curl(API呼び出し用)git
1. スクリプトの配置
以下のスクリプトを ~/.claude/statusline-command.sh に保存する。curlで直接ダウンロードできる。
|
|
2. settings.jsonに登録
~/.claude/settings.json に以下を追加する。
|
|
これだけで次回のClaude Code起動時からステータスラインが変わる。
仕組み
ステータスラインの入力
Claude Codeはステータスラインスクリプトを実行する際、stdinにJSON形式でセッション情報を渡してくる。
|
|
スクリプトは jq でこのJSONをパースし、必要な情報を取り出している。
クォータの取得
5時間/7日間の使用量クォータはClaude Codeの入力JSONには含まれていないため、Anthropic APIから直接取得している。
|
|
OAuthトークンは ~/.claude/.credentials.json から読み取る。トークンは一時ファイル経由で渡すことで ps aux への露出を防いでいる。APIレスポンスは ~/.cache/claude-statusline/ に5分間キャッシュし、APIコール失敗時は10分間のバックオフを入れている。複数のClaude Codeインスタンスが同時にキャッシュを更新しないよう、mkdir によるアトミックロックで排他制御もしている。
ワークツリー対応
claude -w でワークツリーモードを使うと、カレントディレクトリがワークツリーのパスになる。そのままだとプロジェクト名の代わりにワークツリー名(ランダム文字列)が表示されてしまう。
|
|
git worktree list --porcelain の1行目がメインワークツリー(元のリポジトリ)のパスを返すので、そこからプロジェクト名を取得している。
ブランチ名の省略
ワークツリーのブランチ名はランダムに生成されて長くなりがちなので、自動省略する機能を入れた。
| 元のブランチ名 | 省略後 |
|---|---|
worktree-delightful-brewing-wreath |
wt:delightful-brewing-w… |
feature/add-user-auth |
f/add-user-auth |
fix/null-pointer-crash |
x/null-pointer-crash |
25文字を超える場合は末尾を … で切り詰める。
クロスプラットフォーム対応
Linux、macOS、Windows(Git Bash)で動作するよう、プラットフォーム依存の箇所にフォールバックを入れている。
|
|
リポジトリ
スクリプト本体に加えて、カスタムスキル(/review-pr、/copilot-review)やインストールスクリプトも含めたリポジトリを公開している。
- GitHub: sudolifeagain/claude-code-config
- Gist(スクリプト単体): statusline-command.sh