AIエージェントはGUIを読み取りません。コマンドを実行し、標準出力を読み、終了コードを確認して、次の行動を決定します。このループが機能するのは、呼び出すCLIが予測可能に動作する場合だけです。人間向けの装飾的な表を出力する、よろしいですか? (y/n) のような確認で停止する、失敗しても終了コード0を返す――こうしたCLIは、エージェントの自動化を壊し、原因調査も難しくします。
重要なのは「最も強力なCLIはどれか」ではなく、「エージェントが出力を根拠に次のアクションを選べるCLIはどれか」です。必要なのは散文ではなく構造化JSON、プロンプトで停止しない非対話モード、成功・失敗を分岐できる終了コードです。
このリストは2つに分けられます。
- エージェントランタイム: Claude Code、Codex CLI、Gemini CLI、Cursor CLIのように、推論・計画・実行を行うCLI
-
ツールCLI:
gh、ripgrep、jq、HTTPie、apidog-cliのように、エージェントが「手」として利用するCLI
APIワークフローへエージェントを組み込む場合は、Apidog CLI完全ガイドも参照してください。
AIエージェントに適したCLIツールの条件
エージェントフレンドリーなCLIには、少なくとも次の3つの特性が必要です。
1. 構造化された出力
エージェントは整形済みテーブルよりJSONを確実に扱えます。--json や --output-format json を持つCLIなら、列の位置を推測する代わりにフィールド名で値を取得できます。
gh pr list --json number,title,author \
--jq '.[] | {number, title, author: .author.login}'
2. 非対話型モード
確認プロンプトで停止するCLIは、CIやヘッドレス環境で動くエージェントをハングさせます。--non-interactive、--yes、-p などを使い、最初のコマンドで必要な入力をすべて渡してください。
# 悪い例: 対話入力を待つ可能性がある
some-cli deploy
# 良い例: 自動化向けの明示的な実行
some-cli deploy --non-interactive --yes
3. 決定論的な終了コード
成功時は0、失敗時は0以外を返す必要があります。エージェントやCIは、本文を解析する前に終了コードで再試行・中断・次工程への進行を判断できます。
apidog run
if [ "$?" -ne 0 ]; then
echo "テスト失敗: 後続のデプロイを停止します" >&2
exit 1
fi
さらに、次に実行できるアクションを出力で示すCLIは、エージェントのオーケストレーションを簡単にします。
Claude Code
Claude Codeは、ターミナルで実行するAnthropicのコーディングエージェントです。-p(プリントモード)を使うと、対話UIを起動せずにエージェントを1回実行し、結果を出力して終了できます。
npm install -g @anthropic-ai/claude-code
claude -p "summarize the failing tests in this repo" \
--output-format json
--output-format json は、結果、session_id、total_cost_usd を含む構造化ペイロードを返します。呼び出し側のスクリプトでは、実行結果とコストをまとめて記録できます。
claude -p "summarize the failing tests in this repo" \
--output-format json |
jq '{session_id, total_cost_usd, result}'
リアルタイムイベントが必要な場合は、--verbose と stream-json を使用します。標準入力を渡すことも可能です。
cat build-error.txt | claude -p 'explain this error'
最も得意なこと: 計画・実装・検証を含む多段階のコーディングタスク。
正直な限界: 有料のクローズドモデルをAPI経由で利用するため、長時間・高頻度の自律実行ではコストが積み上がります。
Codex CLI
Codex CLIは、OpenAIのオープンソースターミナルエージェントです。codex exec(codex e も利用可能)は非対話的に実行し、結果を標準出力へストリームします。
npm install -g @openai/codex
codex exec --json "add input validation to the signup handler"
--json を付けると、コマンド実行、ファイル変更、エージェントメッセージなどがJSONLイベントとして出力されます。jq で必要なイベントだけを取り出してください。
codex exec --json "add input validation to the signup handler" |
jq 'select(.type == "item.completed")'
安定した最終出力をCIへ渡したい場合は、--output-schema を使用してJSON Schemaに準拠させます。
codex exec \
--output-schema ./release-summary.schema.json \
"summarize the changes for this release"
最も得意なこと: スキーマ検証済みの最終出力が必要な、CI駆動のコード変更。
正直な限界: JSONLは詳細なため、必要なイベントだけを抽出するjq処理が必要です。スキーマ制約付き出力は、実際のプロンプトとCI環境で事前に検証してください。
Gemini CLI
Gemini CLIはGoogleのオープンソースターミナルエージェントです。非TTY環境では自動的にヘッドレスモードになり、-p / --prompt を渡した場合も対話UIなしで実行できます。
npm install -g @google/gemini-cli
gemini --non-interactive \
--output-format json \
-p "list the public endpoints in this service"
--output-format json は、応答と使用統計を含む単一のJSONオブジェクトを返します。パイプラインでは、必要なフィールドだけを抽出します。
gemini --non-interactive \
--output-format json \
-p "list the public endpoints in this service" |
jq '.response'
最も得意なこと: Googleツール環境での利用、コードベースの要約・検査など読み取り中心のタスク。
正直な限界: 構造化JSON出力は比較的新しいため、依存する前に対象バージョンでフラグと出力形式を確認し、必要ならバージョンを固定してください。
Cursor CLI
Cursorのcursor-agentは、エディターから独立してコーディングエージェントをターミナルで利用できるCLIです。-p / --print を使用すると、対話UIなしで実行できます。
curl https://cursor.com/install -fsS | bash
cursor-agent -p "refactor utils/date.js to use date-fns" \
--output-format json
--output-format には text、json、stream-json を指定できます。json では完了時に単一オブジェクトが出力され、ツールイベントは集約されます。
ヘッドレスで書き込みツールやシェルツールを使う場合は、--trust が必要です。
cursor-agent --trust \
-p "refactor utils/date.js to use date-fns" \
--output-format json
最も得意なこと: Cursorを標準エディターとして使っており、同じエージェントをCIやGitフックでも使いたいチーム。
正直な限界: 一部のビルドやプラットフォームでは、ヘッドレスの-pモードがハングするという報告があります。対象OSで事前検証し、動作確認済みバージョンを固定してください。トークンは最小権限にし、変更内容をレビューしてください。
gh(GitHub CLI)
ghは、リポジトリ、Issue、Pull Request、Releaseを操作するエージェントにとって重要なCLIです。特に--jsonと--jqの組み合わせが有用です。
brew install gh
gh pr list --json number,title,author \
--jq '.[].author.login'
必要なフィールドだけを明示すれば、エージェントは余計なテキストを解析せずに済みます。
gh pr list \
--json number,title,isDraft,mergeStateStatus \
--jq '.[] | select(.isDraft == false) | {
number,
title,
mergeStateStatus
}'
サブコマンドにない操作は、gh apiでRESTまたはGraphQL APIを呼び出せます。
gh api repos/OWNER/REPO/issues \
-f title="自動作成されたIssue" \
-f body="CIで検出された問題です。"
最も得意なこと: PR状態の取得、Issue作成、Release操作など、GitHub上のあらゆる自動化。
正直な限界: GitHub専用です。また、--jsonで指定できるフィールドはサブコマンドごとに異なるため、コマンド単位で確認が必要です。
ripgrep
ripgrep(rg)は、大規模なコードベースで対象箇所を高速に探すためのCLIです。エージェント用途では、--jsonで構造化された一致イベントを出力するのが重要です。
brew install ripgrep
rg --json "TODO" src/ |
jq 'select(.type == "match") | .data.path.text'
各マッチには、ファイルパス、行番号、一致テキストなどが型付きフィールドとして含まれます。file:line:textのような文字列を分割するよりも安全です。
対象ファイルと行番号を取得する例です。
rg --json "TODO" src/ |
jq -r '
select(.type == "match") |
"\(.data.path.text):\(.data.line_number)"
'
最も得意なこと: 編集前の調査として行う、高速かつ構造化されたコード検索。
正直な限界: --json出力は冗長です。単発の手動検索ではプレーンテキストの方が簡単な場合があります。
jq
jqはJSONパイプラインの接着剤です。上記のCLIが出力するJSONを、エージェントの次のコマンドが必要とする形へ変換します。
brew install jq
curl -s https://api.github.com/repos/cli/cli |
jq '{name, stars: .stargazers_count}'
CIでは、JSONを検証してから後続処理へ渡すようにすると安全です。
result="$(gh pr list --json number,title)"
echo "$result" |
jq -e 'type == "array"' >/dev/null ||
exit 1
echo "$result" |
jq '.[] | {number, title}'
jq -eは条件が偽の場合に0以外を返せるため、壊れた入力を早期に検出できます。
最も得意なこと: 任意のCLIのJSONを、後続ステップに必要な最小の構造へ変換すること。
正直な限界: クエリ言語には学習コストがあります。またJSON専用なので、生ログはまずJSONに変換するか、JSONを出力できるCLIと組み合わせてください。
HTTPie
HTTP APIを直接呼び出す場合、HTTPie(http)は生のcurlよりJSONを扱いやすいCLIです。コマンドラインのフィールドをJSONリクエストボディとして扱い、レスポンスも自動的に解析します。
brew install httpie
http --print=b POST httpbin.org/post \
name=apidog \
role=cli
--printで標準出力の内容を制御できます。JSON本文だけを後続のjqへ渡すにはbを指定します。
http --print=b GET https://api.github.com/repos/cli/cli |
jq '{name, stars: .stargazers_count}'
最も得意なこと: JSON入出力が前提の、素早いスクリプト可能なAPI呼び出し。
正直な限界: curlは多くの環境に標準搭載されていますが、HTTPieは追加依存です。ストリーミングや特殊なプロトコルではcurlの方が適する場合があります。
apidog-cli
多くのCLIは人間向けに作られ、後から--jsonが追加されています。apidog-cliは、構造化JSONを前提に設計されたAPIプロジェクト向けCLIです。レスポンスにはagentHints.nextStepsが含まれ、呼び出し元のエージェントが次に実行できる操作を判断できます。
apidog-cliでは、エンドポイント、スキーマ(データモデル)、モック、環境、インポート・エクスポート、ドキュメント、テストシナリオ、ブランチを管理できます。
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --help
CIやエージェントでは、終了コードでテスト結果を分岐してください。apidog runは、すべてのテストが成功した場合に0を返し、いずれかが失敗した場合は0以外を返します。
apidog run
case "$?" in
0)
echo "APIテスト成功: 後続ステップを実行します"
;;
*)
echo "APIテスト失敗: デプロイを停止します" >&2
exit 1
;;
esac
ライブAPIプロジェクトへの書き込み権限を持つエージェントは、エンドポイントやスキーマを誤って上書き・削除する可能性があります。ApidogのAIブランチでは、エージェント用の分離ブランチを作成できます。
apidog branch --type ai
元ブランチは変更されず、マージリクエストを承認するまで変更は確定しません。詳細はAIエージェントのためのAIブランチ、AIエージェントテストハーネスの構築、AIエージェントワークフローでのApidog CLIを参照してください。
最も得意なこと: APIライフサイクル全体を扱う、JSONネイティブなエージェント用ツールチェーン。次のステップのヒントと分離編集ブランチを利用できます。
正直な限界: Apidogはオープンソースではありません。無料プランのある商用製品であり、jqやripgrepのような単一目的のMITライセンスバイナリとは異なる選択肢です。またOpenAPIリンターはないため、スタイル強制が必要な場合はSpectralまたはRedoclyと組み合わせてください。
選び方
万能な勝者はいません。ランタイムは推論を担い、ツールCLIは実際の作業を担います。まず1つのランタイムを選び、その上で作業に必要なCLIを組み合わせてください。
| ツール | 最適な用途 | インストール | オープンソース? | エージェント適合メモ |
|---|---|---|---|---|
| Claude Code | 多段階コーディング、計画 | npm i -g @anthropic-ai/claude-code |
いいえ |
-p + --output-format json、コスト情報を出力 |
| Codex CLI | スキーマ型付きCIコード変更 | npm i -g @openai/codex |
はい |
codex exec --json、--output-schema
|
| Gemini CLI | Googleスタック、読み取り中心タスク | npm i -g @google/gemini-cli |
はい | --non-interactive --output-format json |
| Cursor CLI | Cursorチーム、エディターとCIの統一 | `curl cursor.com/install \ | bash` | いいえ |
| gh | GitHub操作全般 | brew install gh |
はい |
--jsonフィールド + 組み込み--jq
|
| ripgrep | 高速な構造化コード検索 | brew install ripgrep |
はい |
--jsonによる型付き一致イベント |
| jq | JSONの変換・検証 | brew install jq |
はい | 決定論的なパイプラインの接着剤 |
| HTTPie | スクリプト可能なJSON API呼び出し | brew install httpie |
はい | JSONファースト、--printで出力制御 |
| apidog-cli | エージェント向けAPIライフサイクル | npm i -g apidog-cli |
いいえ(無料プランあり) | ネイティブJSON + agentHints.nextSteps
|
実装では、以下のように役割を分けると扱いやすくなります。
# 1. エージェントが変更を実施
codex exec --json "fix the failing API validation tests"
# 2. APIテストを実行
apidog run || exit 1
# 3. GitHubへ結果を反映
gh pr comment 123 --body "APIテストが成功しました。"
APIに触れるワークフローでは、curl、モックサーバー、テストランナーを個別に組み合わせることもできます。一方で、次のステップを示せるJSONネイティブなCLIを使うと、接着コードを減らせるという利点があります。
まとめ
エージェント適合性はマーケティング用語ではありません。確認すべき具体的な条件は次の3つです。
- エージェントが解析できる構造化出力
- ハングしない非対話型モード
- 分岐可能な終了コード
Claude Code、Codex CLI、Gemini CLI、Cursor CLIのようなランタイムが推論を担当し、gh、ripgrep、jq、HTTPie、apidog-cliのようなツールCLIが作業を実行します。
apidog-cliは、JSON出力、信頼できる終了コード、agentHints.nextStepsによる次アクションのヒントを提供します。エージェントの仕事がAPIに関わる場合は、ApidogをダウンロードしてCLIを試すか、Apidog CLI完全ガイドから始めてください。その後CIへ組み込むと、エージェントネイティブな出力の効果を活かせます。
Top comments (0)