結論:3項目から始め、停止判断だけを足す

Claude Codeのstatus lineは、まずmodel、作業directory、context_window.remaining_percentageの3項目を一行へ表示します。次に業務上の停止判断へ必要な場合だけ、session cost、5時間・7日rate limit、Git branchを足します。全fieldを並べず、absentやnullを正常値として扱い、遅いGit commandはsession単位でcacheします。

読者の困りごとは、context不足や利用上限を作業完了直前に知る一方、便利な情報を詰め込んだscriptが頻繁に実行されてterminalを遅くし、workspace trustやmanaged policyで突然消えることです。この記事を読むと、表示項目、更新負荷、停止基準を決められます。

次の行動:model・directory・remaining percentageだけのmock input testを作り、実sessionへ入れる前に一行出力を確認してください。

公式仕様:JSON入力・更新頻度・trustを知る

公式status line文書では、statusLineをcommand typeとしてsettingsへ設定し、Claude CodeがJSONをstdinへ渡します。scriptがstdoutへ出したtextがUI下部へ表示されます。JSONにはmodel、workspace、cwd、session_id、cost、context window、fast mode、effort、thinking、rate limitsなどが含まれます。ただしfieldはversion、provider、最初のresponse前後で欠けたりnullになったりします。

contextにはsize、used percentage、remaining percentage、current usageがあります。単純な停止判断にはpre-calculated percentageを使い、token内訳は原因分析が必要な時だけ表示します。rate limitsの5時間と7日windowはClaude.ai subscription利用者で最初のAPI response後に現れ、used percentageとreset epochを持ちます。fieldがない時に0%と断定せず、「未取得」として表示しない設計が安全です。

status line commandはactive session中に頻繁に動きます。git statusgit diffを毎回実行すると大きいrepositoryで遅延するため、公式例は安定したsession_idをkeyに短時間cacheします。process IDは invocationごとに変わり、cache keyに適しません。新しい更新が来ると遅いin-flight scriptはcancelされるため、network callや重い集計を入れません。

shell commandなのでworkspace trustとhook policyの対象です。trust前はblankになりdebug logへskip理由が出ます。disableAllHooksや組織のallowManagedHooksOnlyが適用されると個人status lineが無効になる場合があります。policyを回避せず、managed settingsのownerへ必要項目を提案します。

表示候補を6軸で選ぶ

  1. context:remaining percentageを出し、作業分割やsummaryへ切り替える閾値を決めます。
  2. 利用量:subscriptionでfieldがある時だけ5時間・7日percentageとresetを出します。
  3. 費用:API利用ではsession costを参考値として出し、請求額の正本とは区別します。
  4. 作業場所:directoryとbranchを短く表示し、別repositoryへの誤操作を減らします。
  5. 実行状態:model、effort、thinking、fast modeは判断が変わる時だけ表示します。
  6. 性能:一行、短い文字、local command、5秒程度のcacheを優先し、network監視は別toolへ分けます。

status lineはdashboardではありません。contextが少ない時に「新taskを始めない」、rate limitが高い時に「高負荷jobを延期する」、branchが違う時に「writeを止める」という具体的な判断へ結び付く情報だけを残します。単に数字が動く表示は認知負荷を増やします。

安全に設定する7手順

  1. 表示によって変えたい行動を三つ以内にし、各fieldと停止閾値を対応させます。
  2. model、workspace、remaining percentageを含むmock JSONを作り、null版とfield absent版もtestします。
  3. stdinをJSON parserで読み、値をcommand文字列として再実行せず、表示用textへだけ変換します。
  4. 一行をterminal幅より短くし、secret、full path、customer名、prompt本文を表示しません。
  5. scriptを実行可能にしてlocalでmock入力を渡し、stdout一行、stderrなし、exit 0、短時間完了を確認します。
  6. settingsのstatusLineへcommandを指定し、workspace trustと組織hook policyを確認します。
  7. claude --debugで初回exit codeを読み、Git情報が必要ならsession_id別cacheを追加して再計測します。

WindowsではGit Bashがある場合とPowerShellの場合でcommand実行経路が異なります。pathはforward slashを使い、PowerShell scriptはpowershell -NoProfile -Fileのように明示します。platformごとに同じscriptを無理に共有せず、同じ出力contractを共有してください。

チェックリストとHOLD条件

  • 表示で変える行動が明確
  • 項目は必要最小限
  • remaining percentageを使う
  • nullを処理する
  • absent fieldを処理する
  • secretを表示しない
  • prompt本文を表示しない
  • stdoutは一行
  • stderrを確認した
  • 短時間で終わる
  • network callがない
  • cache keyはsession_id
  • workspace trustを確認した
  • managed policyに従う

HOLDするのは、secretやcustomer識別子を表示する、JSON値をshellへ未escapeで渡す、毎回network APIを呼ぶ、Git全履歴を走査する、nullでscriptが落ちる、組織のmanaged hook制限を回避する場合です。空欄をClaude Code本体の障害と即断せず、debug logとpolicyを確認します。

よくある質問と次の行動

contextはusedとremainingのどちらを出しますか?

「あとどれだけ使えるか」で停止判断するならremainingが直感的です。組織でused閾値を統一している場合はusedを選び、両方は出さない方が読みやすくなります。

費用表示は請求額と一致しますか?

session costは運用上の参考値です。契約、credit、provider、集計時点で実請求と異なるため、請求dashboardやgateway記録を正本にします。

表示が突然消えました

scriptのexit、stdout、workspace trust、disableAllHooksallowManagedHooksOnly、command pathを確認します。最初の実行理由はdebug logで読めます。

fieldと例は公式status line、設定優先順位は公式settings、費用の扱いは公式costsで再確認してください。

context対策はcontext管理、費用はcost管理、監視証跡は監査logへつなげます。Miraigentの無料診断では、表示項目、閾値、停止、policy ownerを整理します。