Skip to content

claude agents --json の改善:ブロック中セッションの追加と --all フラグ

原文(日本語に翻訳)

claude agents --json がブロック中および直前にディスパッチされたバックグラウンドセッションを含むように修正。完了済みセッションを含める --all フラグを追加。また idstate フィールドを新規追加。

原文(英語)

Fixed claude agents --json omitting blocked and just-dispatched background sessions; added --all to include completed sessions, plus new id and state fields

概要

claude agents --json コマンドの出力が改善されました。これまでは、権限確認待ちでブロックされているセッションや直前にディスパッチされたセッションが出力から欠落することがありました。今回の修正でこれらのセッションも正しく含まれるようになります。また --all フラグで完了済みセッションも取得でき、新たに追加された idstate フィールドでスクリプトからセッションを識別・管理しやすくなりました。

基本的な使い方

アクティブなエージェント一覧をJSON形式で取得

bash
claude agents --json

完了済みを含むすべてのエージェントを取得

bash
claude agents --all --json

特定のエージェントをIDで操作

bash
# エージェント一覧からIDを取得
AGENT_ID=$(claude agents --json | jq -r '.[0].id')

# そのエージェントに送信
claude agents send $AGENT_ID "タスクを続けてください"

実践例

jqでエージェントの状態をフィルタリング

新しい state フィールドを使って状態別にフィルタリング:

bash
# 実行中のエージェントのみ取得
claude agents --json | jq '[.[] | select(.state == "running")]'

# ブロック中(権限確認待ち)のエージェントを取得
claude agents --json | jq '[.[] | select(.state == "blocked")]'

# 完了済みのエージェントを取得(--all が必要)
claude agents --all --json | jq '[.[] | select(.state == "completed")]'

エージェント監視スクリプト

バックグラウンドエージェントを定期監視するシェルスクリプト:

bash
#!/bin/bash

while true; do
  # 全エージェントの状態を確認
  AGENTS=$(claude agents --json)
  BLOCKED=$(echo "$AGENTS" | jq '[.[] | select(.state == "blocked")] | length')
  RUNNING=$(echo "$AGENTS" | jq '[.[] | select(.state == "running")] | length')
  
  echo "実行中: $RUNNING, ブロック中: $BLOCKED"
  
  # ブロック中のエージェントがあれば通知
  if [ "$BLOCKED" -gt 0 ]; then
    echo "警告: $BLOCKED 個のエージェントが権限確認待ちです"
    claude agents --json | jq '[.[] | select(.state == "blocked") | {id, state}]'
  fi
  
  sleep 30
done

完了ログの集計

bash
# 本日完了したエージェントの作業サマリーを取得
claude agents --all --json | \
  jq '[.[] | select(.state == "completed") | {id, summary: .lastMessage}]'

特定IDのエージェントへの応答

ブロック中のエージェントに権限を付与:

bash
# ブロック中のエージェントIDを取得
BLOCKED_ID=$(claude agents --json | jq -r '[.[] | select(.state == "blocked")][0].id')

# エージェントに応答
claude agents send $BLOCKED_ID "はい、実行してください"

注意点

  • --json オプションは人間向けの表示ではなく、スクリプト処理向けの機械可読JSONを返します
  • state フィールドの値:running(実行中)、blocked(権限確認待ち)、completed(完了)、dispatched(ディスパッチ直後)など
  • --all フラグを使用しない場合、完了済みセッションは一覧に表示されません
  • id フィールドはセッション間でユニークであり、claude agents send <id> での識別に使用できます
  • 大量のエージェントを管理している場合、--all の出力はセッション履歴を含むため大きくなる可能性があります

関連情報