Build This Now
Build This Now
キーボードショートカットステータスラインガイド
speedy_devvkoen_salo
Blog/Toolkit/Status Line Guide

ステータスラインガイド

Claude Code のステータスラインにモデル名、gitブランチ、セッションコスト、コンテキスト使用量を表示する方法。settings.json の設定、JSON入力、bash、Python、Node.js スクリプトを解説。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Published Feb 27, 2026Toolkit hub

モデル名、gitブランチ、コスト、コンテキスト使用量をリアルタイムで表示する Claude Code のカスタムステータスラインを設定する方法を解説します。すぐにコピーして使えるスクリプトも用意しています。

Claude Code のターミナルには便利な情報が表示されていません。ステータスラインを使えば、モデル名・gitブランチ・セッションコスト・コンテキスト使用量をインターフェース下部に常時表示できます。

Claude Code 向けの PS1 と考えてください。Oh-my-zsh や Starship でシェルプロンプトをカスタマイズしたことがあれば、同じ仕組みです。作業中に常に状況を把握できるリアルタイム情報を1行で表示します。

ステータスラインに表示できる情報

ステータスラインは Claude Code インターフェースの下部に表示され、会話が変化するたびに更新されます。スクリプトが出力するものなら何でも表示できます。現在のモデル、作業中のgitブランチ、このセッションの消費コスト、コンテキストウィンドウの使用率など、さまざまな情報を表示できます。

設定済みのステータスラインは実際にはこのように表示されます。

[Opus] my-project | main | $0.42 | Context: 37%

この1行だけで、モデル、プロジェクトフォルダ、gitブランチ、セッションの累積コスト、コンテキストウィンドウの使用率がすべてわかります。しかも自動的に更新されます。

/statusline による素早いセットアップ

最も手軽にステータスラインを動かす方法は、組み込みコマンド /statusline を使うことです。Claude Code に直接入力するとスクリプトが生成されます。

/statusline

デフォルトでは Claude Code がターミナルプロンプトを模したステータスラインスクリプトを作成します。具体的な指示を与えることもできます。

/statusline show the model name in orange

/statusline display git branch and session cost

/statusline show context window percentage with color coding

以上です。Claude Code がスクリプトを書き、設定を行い、ステータスラインが表示されます。より細かく制御したい場合は、以降のマニュアルセットアップをご参照ください。

settings.json によるマニュアルセットアップ

完全に制御したい場合は、プロジェクトの .claude/settings.json(またはすべてのプロジェクトに適用するグローバルの ~/.claude/settings.json)に statusLine エントリを追加します。

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 0
  }
}

設定フィールドは3つあります。

  • type: スクリプトベースのステータスラインでは常に "command" を指定します
  • command: ステータスラインの出力を生成するスクリプトへのパス
  • padding: ステータスラインの上の空白行数(通常は0)

追加後、スクリプトファイルを作成して実行権限を付与します。

touch ~/.claude/statusline.sh
chmod +x ~/.claude/statusline.sh

chmod +x の手順は重要です。ステータスラインが表示されない場合、ほとんどの場合は実行権限の不足が原因です。

ステータスラインエンジンの仕組み

仕組みを理解しておくと、デバッグやカスタムスクリプトの作成に役立ちます。

  • 更新タイミング: 会話のメッセージが変化するたびにステータスラインが更新されます
  • スロットリング: パフォーマンス問題を避けるため、更新は最大300ミリ秒ごとに実行されます
  • 出力の処理: スクリプトの標準出力の最初の1行のみがステータスラインテキストになります
  • カラー: スタイリング用のANSIカラーコードをフルサポートしています
  • 入力: Claude Code がスタンダードインプット経由でセッションデータを含むJSONオブジェクトをスクリプトに渡します

最後の点が重要です。スクリプトは、現在のモデル・ワークスペースのパス・セッションコスト・コンテキストウィンドウの統計情報などを含む構造化されたJSONを受け取ります。それを解析し、フォーマットし、標準出力に1行出力します。

スクリプトが受け取るJSON入力

ステータスラインが更新されるたびに、スクリプトは標準入力から次のJSON構造を受け取ります。

{
  "hook_event_name": "Status",
  "session_id": "abc123...",
  "cwd": "/current/working/directory",
  "model": {
    "id": "claude-opus-4-1",
    "display_name": "Opus"
  },
  "workspace": {
    "current_dir": "/current/working/directory",
    "project_dir": "/original/project/directory"
  },
  "version": "1.0.80",
  "cost": {
    "total_cost_usd": 0.01234,
    "total_duration_ms": 45000,
    "total_api_duration_ms": 2300,
    "total_lines_added": 156,
    "total_lines_removed": 23
  },
  "context_window": {
    "total_input_tokens": 15234,
    "total_output_tokens": 4521,
    "context_window_size": 200000,
    "used_percentage": 42.5,
    "remaining_percentage": 57.5,
    "current_usage": {
      "input_tokens": 8500,
      "output_tokens": 1200,
      "cache_creation_input_tokens": 5000,
      "cache_read_input_tokens": 2000
    }
  }
}

実用的なステータスラインで特に重要なフィールドは以下のとおりです。

  • model.display_name: "Opus" や "Sonnet" などの短いモデル名
  • workspace.current_dir: 現在の作業ディレクトリ
  • cost.total_cost_usd: セッションの累積コスト(ドル)
  • cost.total_lines_added / total_lines_removed: コード変更量の追跡
  • context_window.used_percentage: 事前計算済みのコンテキスト使用率(0〜100)
  • context_window.context_window_size: コンテキストウィンドウの総容量

コピーして使えるステータスラインスクリプト

複数の言語で書かれた完全に動作するスクリプトを用意しました。環境に合ったものを選んでください。

シンプルなbashステータスライン

最もシンプルで実用的なステータスラインです。モデル名と現在のディレクトリを表示します。

#!/bin/bash
input=$(cat)
 
MODEL=$(echo "$input" | jq -r '.model.display_name')
CURRENT_DIR=$(echo "$input" | jq -r '.workspace.current_dir')
 
echo "[$MODEL] ${CURRENT_DIR##*/}"

出力例: [Opus] my-project

このスクリプトはJSON解析に jq を使用します。インストールしていない場合は、macOSなら brew install jq、Ubuntuなら sudo apt install jq で導入できます。

git対応bashステータスライン

現在のgitブランチを追加します。複数のフィーチャーブランチを切り替えながら作業する際に便利です。

#!/bin/bash
input=$(cat)
 
MODEL=$(echo "$input" | jq -r '.model.display_name')
CURRENT_DIR=$(echo "$input" | jq -r '.workspace.current_dir')
 
GIT_BRANCH=""
if git rev-parse --git-dir > /dev/null 2>&1; then
    BRANCH=$(git branch --show-current 2>/dev/null)
    if [ -n "$BRANCH" ]; then
        GIT_BRANCH=" | $BRANCH"
    fi
fi
 
echo "[$MODEL] ${CURRENT_DIR##*/}$GIT_BRANCH"

出力例: [Opus] my-project | feature/auth

フル機能bashステータスライン

モデル、gitブランチ、コスト、コンテキスト使用率をすべて1行に表示します。

#!/bin/bash
input=$(cat)
 
MODEL=$(echo "$input" | jq -r '.model.display_name')
CURRENT_DIR=$(echo "$input" | jq -r '.workspace.current_dir')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
PERCENT_USED=$(echo "$input" | jq -r '.context_window.used_percentage // 0')
 
# Git branch
GIT_BRANCH=""
if git rev-parse --git-dir > /dev/null 2>&1; then
    BRANCH=$(git branch --show-current 2>/dev/null)
    if [ -n "$BRANCH" ]; then
        GIT_BRANCH=" | $BRANCH"
    fi
fi
 
# Format cost to 2 decimal places
COST_FMT=$(printf '%.2f' "$COST")
 
# Round context percentage
PERCENT_INT=$(printf '%.0f' "$PERCENT_USED")
 
echo "[$MODEL] ${CURRENT_DIR##*/}$GIT_BRANCH | \$${COST_FMT} | Ctx: ${PERCENT_INT}%"

出力例: [Opus] my-project | main | $0.42 | Ctx: 37%

ANSIカラー付きbashステータスライン

カラーコーディングを使うと、情報を一目でスキャンできるようになります。

#!/bin/bash
input=$(cat)
 
MODEL=$(echo "$input" | jq -r '.model.display_name')
CURRENT_DIR=$(echo "$input" | jq -r '.workspace.current_dir')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
PERCENT_USED=$(echo "$input" | jq -r '.context_window.used_percentage // 0')
 
# ANSI colors
ORANGE='\033[38;5;208m'
GREEN='\033[32m'
YELLOW='\033[33m'
RED='\033[31m'
CYAN='\033[36m'
RESET='\033[0m'
 
# Color context percentage based on usage
PERCENT_INT=$(printf '%.0f' "$PERCENT_USED")
if [ "$PERCENT_INT" -lt 50 ]; then
    CTX_COLOR=$GREEN
elif [ "$PERCENT_INT" -lt 80 ]; then
    CTX_COLOR=$YELLOW
else
    CTX_COLOR=$RED
fi
 
COST_FMT=$(printf '%.2f' "$COST")
 
echo -e "${ORANGE}[$MODEL]${RESET} ${CURRENT_DIR##*/} ${CYAN}\$${COST_FMT}${RESET} ${CTX_COLOR}Ctx:${PERCENT_INT}%${RESET}"

コンテキスト使用率は50%未満で緑、50〜80%で黄色、80%超で赤に変わります。コンテキストウィンドウを管理するタイミングがすぐわかります。

複雑なスクリプト向けのヘルパー関数アプローチ

ステータスラインスクリプトが大きくなってきたら、ヘルパー関数で可読性を保ちます。

#!/bin/bash
input=$(cat)
 
# Helper functions for clean extraction
get_model()     { echo "$input" | jq -r '.model.display_name'; }
get_dir()       { echo "$input" | jq -r '.workspace.current_dir'; }
get_cost()      { echo "$input" | jq -r '.cost.total_cost_usd // 0'; }
get_context()   { echo "$input" | jq -r '.context_window.used_percentage // 0'; }
get_added()     { echo "$input" | jq -r '.cost.total_lines_added // 0'; }
get_removed()   { echo "$input" | jq -r '.cost.total_lines_removed // 0'; }
get_version()   { echo "$input" | jq -r '.version'; }
 
MODEL=$(get_model)
DIR=$(get_dir)
COST=$(printf '%.2f' "$(get_cost)")
CTX=$(printf '%.0f' "$(get_context)")
ADDED=$(get_added)
REMOVED=$(get_removed)
 
echo "[$MODEL] ${DIR##*/} | \$$COST | Ctx:${CTX}% | +$ADDED/-$REMOVED"

出力例: [Opus] my-project | $0.42 | Ctx:37% | +156/-23

+156/-23 はセッション中に追加・削除された行数を示します。コードの変更量を素早く把握する手段として活用できます。

Python ステータスライン

bash より Python を好む方向けです。

#!/usr/bin/env python3
import json
import sys
import os
import subprocess
 
data = json.load(sys.stdin)
 
model = data["model"]["display_name"]
current_dir = os.path.basename(data["workspace"]["current_dir"])
cost = data.get("cost", {}).get("total_cost_usd", 0)
ctx_pct = data.get("context_window", {}).get("used_percentage", 0)
 
# Get git branch
git_branch = ""
try:
    result = subprocess.run(
        ["git", "branch", "--show-current"],
        capture_output=True, text=True, timeout=2
    )
    if result.returncode == 0 and result.stdout.strip():
        git_branch = f" | {result.stdout.strip()}"
except Exception:
    pass
 
print(f"[{model}] {current_dir}{git_branch} | ${cost:.2f} | Ctx:{ctx_pct:.0f}%")

Node.js ステータスライン

JavaScript 開発者向けです。

#!/usr/bin/env node
const fs = require("fs");
const path = require("path");
const { execSync } = require("child_process");
 
let input = "";
process.stdin.on("data", (chunk) => (input += chunk));
process.stdin.on("end", () => {
  const data = JSON.parse(input);
 
  const model = data.model.display_name;
  const currentDir = path.basename(data.workspace.current_dir);
  const cost = (data.cost?.total_cost_usd || 0).toFixed(2);
  const ctxPct = Math.round(data.context_window?.used_percentage || 0);
 
  // Get git branch
  let gitBranch = "";
  try {
    const branch = execSync("git branch --show-current", {
      encoding: "utf8",
      timeout: 2000,
    }).trim();
    if (branch) gitBranch = ` | ${branch}`;
  } catch (e) {}
 
  console.log(
    `[${model}] ${currentDir}${gitBranch} | $${cost} | Ctx:${ctxPct}%`,
  );
});

コンテキストウィンドウ使用量の追跡

コンテキストウィンドウの監視は、ステータスラインの最も実用的な使い方の一つです。コンテキストが満杯になると Claude Code は会話を圧縮し、詳細情報が失われます。残量を把握しておくことで、新しいセッションを開始するタイミングや、戦略的に圧縮するタイミングを判断できます。

シンプルなアプローチ: 事前計算済みのパーセンテージを使用します。

#!/bin/bash
input=$(cat)
 
MODEL=$(echo "$input" | jq -r '.model.display_name')
PERCENT_USED=$(echo "$input" | jq -r '.context_window.used_percentage // 0')
 
echo "[$MODEL] Context: ${PERCENT_USED}%"

高度なアプローチ: 生のトークン数から手動で計算します。

#!/bin/bash
input=$(cat)
 
MODEL=$(echo "$input" | jq -r '.model.display_name')
CONTEXT_SIZE=$(echo "$input" | jq -r '.context_window.context_window_size')
USAGE=$(echo "$input" | jq '.context_window.current_usage')
 
if [ "$USAGE" != "null" ]; then
    CURRENT_TOKENS=$(echo "$USAGE" | jq '.input_tokens + .cache_creation_input_tokens + .cache_read_input_tokens')
    PERCENT_USED=$((CURRENT_TOKENS * 100 / CONTEXT_SIZE))
    echo "[$MODEL] Context: ${PERCENT_USED}% (${CURRENT_TOKENS}/${CONTEXT_SIZE} tokens)"
else
    echo "[$MODEL] Context: 0%"
fi

手動計算アプローチでは、パーセンテージと一緒に生のトークン数も確認できます。残りトークン数を正確に把握したいとき、特に異なるコンテキストサイズを持つモデルを比較する際に有用です。

セッションコストの追跡

cost.total_cost_usd フィールドはリアルタイムで更新されます。ステータスラインに表示しておけば、ダッシュボードを確認しなくても費用を常に把握できます。

#!/bin/bash
input=$(cat)
 
MODEL=$(echo "$input" | jq -r '.model.display_name')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
COST_FMT=$(printf '%.2f' "$COST")
 
echo "[$MODEL] Session: \$${COST_FMT}"

予算管理や機能ごとのコスト追跡をしているなら、すぐに役立ちます。タスクに最高コストのモデルが不要な場合は、モデル選択戦略と組み合わせてモデルを切り替えることもできます。

トラブルシューティング

ステータスラインがまったく表示されない

最も多い原因は、スクリプトファイルの実行権限が不足していることです。次のコマンドで修正できます。

chmod +x ~/.claude/statusline.sh

スクリプトは動いているが出力が空

スクリプトが標準出力ではなく標準エラー出力に書き込んでいる可能性があります。ステータスラインは標準出力の最初の1行のみを読み取ります。まず echo "test" で出力を確認し、そこから組み立てていきましょう。

スクリプトを手動でテスト

Claude Code を起動せずに、モックJSONをスクリプトにパイプすることでテストできます。

echo '{"model":{"display_name":"Test"},"workspace":{"current_dir":"/test"},"cost":{"total_cost_usd":0.5},"context_window":{"used_percentage":25}}' | ~/.claude/statusline.sh

期待どおりの出力が表示されればスクリプトは正常です。表示されない場合は解析処理に問題があります。

jq が見つからない

パッケージマネージャーでインストールしてください。

# macOS
brew install jq
 
# Ubuntu/Debian
sudo apt install jq
 
# Windows (via scoop)
scoop install jq

ステータスラインのアイデア集

基本を動かせたら、さらに便利にするためのアイデアをいくつかご紹介します。

  • 変更行数トラッカー: +追加/-削除 を表示してセッションの生産性を監視する
  • セッション経過時間: total_duration_ms から経過時間を計算して表示する
  • モデルID表示: 異なるモデル設定をテストする際にフルモデル識別子を表示する
  • プロジェクトと現在ディレクトリ: Claude Code がサブディレクトリに移動したときに両方を表示する
  • 分あたりコスト: total_cost_usd を total_duration_ms で割ってバーンレートを確認する
  • コンテキストウィンドウバー: パーセンテージの代わりに [========--] のような視覚的なバーを表示する
  • 条件付き警告: コンテキストが80%を超えたり、コストがしきい値を超えたりしたときに色を変える

ステータスラインはあなたが制御するスクリプトを実行します。bash、Python、Node.js で書ければ、何でも表示できます。スクリプトを書かずに済ませたい場合は、ClaudeFastのCode Kitにコンテキスト使用量・APIバジェット・バックアップ状態をすぐに表示できる statusline-monitor.mjs が同梱されています。

次のステップ

ステータスラインのセットアップが完了したら、次にこれらに取り組むのがおすすめです。

  • コンテキストを能動的に管理する: コンテキストバッファ管理戦略と組み合わせてコンテキスト使用率の表示を活用する
  • ターミナル環境を整える: 完全な Claude Code ワークスペース構築のためのターミナル制御テクニックを学ぶ
  • プロジェクト設定を整備する: すべてのセッションが正しいコンテキストで開始されるよう設定の基礎を固める

More in Toolkit

  • キーボードショートカット
    Claude Codeのkeybindings.jsonを設定する: 17のコンテキスト、キーストローク構文、コードシーケンス、修飾キーの組み合わせ、デフォルトショートカットを即座に無効化する方法。
  • AIによるSEOとGEO最適化
    Generative Engine Optimizationの解説: Googleで上位表示されるだけでなく、ChatGPT、Claude、Perplexityの回答内でコンテンツが引用されるようにする方法。
  • 2026年版 Claude Code と Cursor の比較
    2026年の Claude Code と Cursor を並べて比較します。エージェントモデル、コンテキストウィンドウ、料金プラン、そして各ツールが異なる開発ワークフローにどう適合するかを解説します。
  • Claude Code VS Code拡張機能
    AnthropicのVS Code拡張機能は、Claude CodeをエディタサイドバーのSparkアイコンパネルとして組み込みます。インラインdiff、プランモード、サブエージェント、MCPサポートが利用できます。
  • Claude Codeのキーバインディング
    keybindings.jsonを通じてClaude Codeのショートカットを変更できます。17のコンテキスト、キーストローク構文、コードシーケンス、モディファイアスタック、デフォルトのアンバインド、すぐに貼り付けられる設定例を解説します。
  • OpenClaw vs Claude Code
    OpenClaw vs Claude Code: メッセージングアプリに接続されたライフアシスタントと、リポジトリを読んでアーキテクチャを理解するターミナルコーディングエージェント。それぞれがワークフローに組み込まれるべきタイミング。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

キーボードショートカット

Claude Codeのkeybindings.jsonを設定する: 17のコンテキスト、キーストローク構文、コードシーケンス、修飾キーの組み合わせ、デフォルトショートカットを即座に無効化する方法。

フックガイド

Claude Code フックの基礎から実践まで: 終了コード、JSON出力、非同期コマンド、HTTPエンドポイント、PreToolUseとPostToolUseのマッチャー、本番環境パターン。

On this page

ステータスラインに表示できる情報
/statusline による素早いセットアップ
settings.json によるマニュアルセットアップ
ステータスラインエンジンの仕組み
スクリプトが受け取るJSON入力
コピーして使えるステータスラインスクリプト
シンプルなbashステータスライン
git対応bashステータスライン
フル機能bashステータスライン
ANSIカラー付きbashステータスライン
複雑なスクリプト向けのヘルパー関数アプローチ
Python ステータスライン
Node.js ステータスライン
コンテキストウィンドウ使用量の追跡
セッションコストの追跡
トラブルシューティング
ステータスラインのアイデア集
次のステップ

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。