コンテンツにスキップ

ステータスラインに状態を出す

tier 2(効いてくる)確認 1 か月前(2026年8月23日)

どこまで来たら使えたと言えるか

面: ターミナル限定 — デスクトップアプリには当てはまりません

段達成したと言える状態
1. 触る/statusline に自然言語で指示してステータスラインを 1 つ作り、実際に表示されることを確認した
2. 入れる常に見えていてほしい情報(モデル・ディレクトリ・コンテキスト使用率など)を選んで、自分のステータスラインに出している
3. 効かせる再実行のタイミングと stdin の JSON フィールドを把握し、必要なら refreshInterval を足して自分でスクリプトを書ける

何のためのものか

画面下部のカスタマイズ可能なバー。設定したシェルスクリプトを実行し、stdin で JSON のセッションデータを受け取り、その出力を表示する。

コマンドを打たないと分からない情報(モデル、作業ディレクトリ、コンテキスト使用率、推定コスト)を、常に目に入る場所へ出すための仕組みである。

触る

  1. /statusline に自然言語で指示する。~/.claude/ にスクリプトが生成され、設定が自動更新される
  2. 消すときは /statusline に削除を依頼する(/statusline delete など)か、settings から statusLine フィールドを消す

手で書くなら ~/.claude/settings.json に statusLine を足し、type を "command"、command にスクリプトパスかインラインのシェルコマンドを書く。

ステータスラインはローカルで動き、API トークンを消費しない。

入れる

出す情報を選ぶ。stdin の JSON から取れる主なものは次のあたり。

欲しいものフィールド
モデルmodel.display_name
今どこにいるかworkspace.current_dir、workspace.project_dir、workspace.git_worktree
リポジトリworkspace.repo.owner、workspace.repo.name
コンテキスト残量context_window.used_percentage、context_window.remaining_percentage
コストcost.total_cost_usd(クライアント側の推定値)
  • 複数行出したいなら echo を複数回。色は ANSI escape code、リンクは OSC 8
  • 詰まって見えるなら padding を足す
  • vim mode を自分で描くなら hideVimModeIndicator を true にする

効かせる

再実行のタイミングを知る。ここを誤解すると「更新されない」と感じる。

スクリプトはセッション開始時(resume を含む)に 1 回、そのあとは新しいアシスタントメッセージ・/compact の完了・permission mode の変更・vim mode の切り替えで再実行される。時間で更新したいなら refreshInterval(最小 1 秒)を足す。

  • 更新は 300ms でデバウンスされる。実行中に次のトリガーが来ると実行中のスクリプトはキャンセルされるので、重い処理は置かない
  • スクリプトの編集は、次の更新トリガーで再実行されたときに反映される
  • ターミナル幅は tput cols では取れない。COLUMNS と LINES 環境変数を読む

落とし穴

  • カスタムステータスラインを設定すると、フッターのキーボードヒントの多くが表示されなくなる(esc to interrupt、? for shortcuts など)
  • ステータスラインはフッターを置き換えず、その上に独自の行として描かれる
  • オートコンプリート候補、ヘルプメニュー、permission prompt など一部の UI 操作中は一時的に隠れる
  • exceeds_200k_tokens は実際のコンテキストウィンドウサイズに関わらず固定の 200k 閾値。1M コンテキストでも 200k を超えれば true になる

根拠と前後

このページが書ける範囲は、根拠にした facts に書かれていることだけです。 仕様そのものはそちらを読んでください。