原文(日本語に翻訳)
スクリプト連携のために claude agents --json を追加 - ライブ中のClaudeセッションをJSONとして一覧表示(tmux-resurrect、ステータスバー、セッションピッカーでの活用を想定)
原文(英語)
Added claude agents --json to list live Claude sessions as JSON for scripting (tmux-resurrect, status bars, session pickers)
概要
claude agents --json は、現在実行中のすべてのClaudeエージェントセッション情報をJSON形式で出力する新しいオプションです。この機能により、tmuxのステータスバー、セッションピッカー、tmux-resurrectなどのツールとClaudeのセッション情報を簡単に連携させることができます。シェルスクリプトや外部ツールからセッション一覧を取得・解析する際に特に有用です。
基本的な使い方
bash
# ライブセッション一覧をJSON形式で出力
claude agents --json
# jqを使って見やすく整形
claude agents --json | jq .
# 特定のフィールドだけ抽出
claude agents --json | jq '.[].session_id'実践例
tmuxステータスバーへの組み込み
tmuxのステータスバーにアクティブなClaudeセッション数を表示する設定例です。
bash
# ~/.tmux.conf
set -g status-right '#(claude agents --json 2>/dev/null | jq "length" 2>/dev/null || echo 0) agents | %H:%M'
# またはシェルスクリプトとして
# ~/bin/claude-session-count.sh
#!/bin/bash
count=$(claude agents --json 2>/dev/null | jq 'length' 2>/dev/null || echo 0)
echo "Claude: ${count} sessions"セッションピッカーの実装
fzfと組み合わせてインタラクティブなセッションピッカーを作成できます。
bash
#!/bin/bash
# claude-session-picker.sh - fzfでセッションを選択してアタッチ
selected=$(claude agents --json | jq -r '.[] | "\(.session_id)\t\(.working_directory // "unknown")\t\(.status // "running")"' | \
fzf --delimiter='\t' --with-nth=2,3 --header="Claude Sessions")
if [ -n "$selected" ]; then
session_id=$(echo "$selected" | cut -f1)
echo "Attaching to session: $session_id"
# セッションにアタッチする処理
fitmux-resurrectとの連携
tmux-resurrectでtmuxセッションを復元する際にClaudeセッション情報も保存・復元する例です。
bash
#!/bin/bash
# save-claude-sessions.sh - セッション情報をファイルに保存
claude agents --json > ~/.tmux-claude-sessions.json
echo "Saved $(jq 'length' ~/.tmux-claude-sessions.json) Claude sessions"
# 保存した情報の確認
cat ~/.tmux-claude-sessions.json | jq '.[] | {id: .session_id, dir: .working_directory}'シェルスクリプトでのセッション監視
定期的にセッション状態を監視するスクリプトです。
bash
#!/bin/bash
# monitor-agents.sh - セッション状態を定期監視
while true; do
sessions=$(claude agents --json 2>/dev/null)
count=$(echo "$sessions" | jq 'length' 2>/dev/null || echo 0)
echo "$(date '+%H:%M:%S') - Active Claude sessions: $count"
if [ "$count" -gt 0 ]; then
echo "$sessions" | jq -r '.[] | " - \(.session_id): \(.working_directory // "unknown")"'
fi
sleep 30
done注意点
--jsonフラグはライブ(現在実行中)のセッションのみを対象とします- JSON出力の具体的なスキーマはバージョンによって変わる可能性があるため、スクリプトでは必要なフィールドのみを参照することを推奨します
- セッションが存在しない場合は空の配列
[]が返されます - エラーが発生した場合は標準エラー出力にメッセージが表示され、終了コードが非ゼロになります
- スクリプト内で使用する際は
2>/dev/nullでエラー出力を抑制することを検討してください