はじめに
Claude Codeを使用するうえで、とても重要なことの一つに、使用状況の把握があります。
以下のように、「上限や制限」が定められているものに関しては現時点での使用率を常に知っておきたいところです。
・コンテキスト使用率(Context Usage)
1つのセッション内でAIモデルが記憶することのできる情報量の上限に対する割合です。
この割合が大きくなると、覚えておいてほしい必要な記憶情報が削除されたり、精度が下がってしまうため注意が必要です。
・5時間制限(短期レート制限)
これは短時間での使いすぎを防ぐ制限で、「直近5時間で使った総トークン量」が監視されています。
上限を超えると一時的に使用不可になってしまうため注意が必要です。
・週間制限(週間レート制限)
これは1週間あたりの総使用量制限です。
こちらも5時間制限同様、上限を超えると一時的に使用不可になります。
リセットのタイミングが一週間単位のため、より注意が必要です。
statusline(ステータスライン)とは
ステータスラインはClaude Codeの下部にあるカスタマイズ可能なバーのことです。
表示させたい情報をシェルスクリプトで実装し設定すると、それをClaude Codeが内部で定期的に実行し、出力結果を表示してくれます。
まずは公式ドキュメントを一読してみるのがおすすめです。
(上記の)表示項目の例
・使用中のAIモデル
・カレントディレクトリ
・git ブランチ
・コンテキストウィンドウの使用状況
・セッションコスト
・セッション開始からの総経過時間
他にも多くの情報を表示させることができるので、気になった方は調べてカスタマイズしてみてください。
カスタマイズstatuslineを表示させてみた
まずは完成画像から
今回私が表示させた項目は、
・使用中のAIモデル(1行目の左)
・カレントディレクトリ(1行目の真ん中)
・gitブランチ(1行目の右)→
・コンテキストウィンドウの使用状況(2行目)
・5時間制限の使用状況(3行目)
・1週間制限の使用状況(4行目)
です。
なるべくシンプルなデザインにしつつ、常に表示させたい最低限の内容で構成してみました。
設定手順
①.claude/settings.jsonに以下の設定を追加します。
(今回の例ではホームディレクトリ配下の.claudeに配置します)
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}
②statusline.shを作成します。
本記事では、スクリプト内のコードの詳しい説明は省略します(気になる方は公式ドキュメントを読むか、Claude Codeに質問してみてください)
#!/bin/bash
input=$(cat)
# 1行目--------------------------------------------------------------
AI_MODEL=$(echo "$input" | jq -r '.model.display_name')
CURRENT_DIR=$(echo "$input" | jq -r '.workspace.current_dir')
GIT_BRANCH="non-git"
if git rev-parse --git-dir > /dev/null 2>&1; then
GIT_BRANCH=$(git branch --show-current 2>/dev/null)
fi
echo -e "[$AI_MODEL] 📁/${CURRENT_DIR##*/} 🌿$GIT_BRANCH"
# 2行目--------------------------------------------------------------
CONTEXT_PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
BAR_WIDTH=10
FILLED=$((CONTEXT_PCT * BAR_WIDTH / 100))
EMPTY=$((BAR_WIDTH - FILLED))
BAR=""
[ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /■}"
[ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /□}"
echo -e "Ctx $BAR $CONTEXT_PCT%"
# 3行目--------------------------------------------------------------
FIVE_HOUR_PCT=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // 0' | cut -d. -f1)
BAR_WIDTH=10
FILLED=$((FIVE_HOUR_PCT * BAR_WIDTH / 100))
EMPTY=$((BAR_WIDTH - FILLED))
BAR=""
[ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /■}"
[ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /□}"
FIVE_HOUR_RESET_AT=$(echo "$input" | jq -r '.rate_limits.five_hour.resets_at // 0' | cut -d. -f1)
DIFF=$((FIVE_HOUR_RESET_AT - $(date +%s)))
[ "$DIFF" -lt 0 ] && DIFF=0
FIVE_HOUR_RESET_IN="$((DIFF / 3600))h$(((DIFF % 3600) / 60))m"
echo -e "5h $BAR $FIVE_HOUR_PCT% (reset in $FIVE_HOUR_RESET_IN)"
# 4行目--------------------------------------------------------------
SEVEN_DAY_PCT=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // 0' | cut -d. -f1)
BAR_WIDTH=10
FILLED=$((SEVEN_DAY_PCT * BAR_WIDTH / 100))
EMPTY=$((BAR_WIDTH - FILLED))
BAR=""
[ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /■}"
[ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /□}"
SEVEN_DAY_RESET_AT=$(echo "$input" | jq -r '.rate_limits.seven_day.resets_at // 0' | cut -d. -f1)
DIFF=$((SEVEN_DAY_RESET_AT - $(date +%s)))
[ "$DIFF" -lt 0 ] && DIFF=0
SEVEN_DAY_RESET_IN="$((DIFF / 3600))h$(((DIFF % 3600) / 60))m"
echo -e "7d $BAR $SEVEN_DAY_PCT% (reset in $SEVEN_DAY_RESET_IN)"
③新しく作成したスクリプトに実行権限を付与します。
chmod +x ~/.claude/statusline.sh
以上です!
Claude Codeを再起動すると、statuslineが表示されるかと思います。
(起動直後はデータが正しく取得されない場合がありますが、セッションを進めていくと表示されます)

