AIエージェントはGUIを読み取りません。コマンドを実行し、標準出力で返されたものを読み取り、終了コードを確認し、次に何をすべきかを決定します。このループは、呼び出すツールが予測可能に動作する場合にのみ機能します。人間向けのカラフルな表を出力したり、「よろしいですか? (y/n)」とプロンプトを表示したり、ジョブが成功したかどうかにかかわらず終了コード0を返したりするツールは、デバッグが困難な方法でエージェントを壊してしまいます。
したがって、興味深い質問は「どのCLIが最も強力か」ではありません。それは「エージェントが出力に基づいて行動できる形になっているCLIはどれか」です。つまり、散文ではなく構造化されたJSON、プロンプトで決してブロックしない非対話型モード、そしてエージェントが分岐できる終了コードが求められます。
このリストは2つのカテゴリに分かれます。1つ目は、Claude Code、Codex CLI、Gemini CLI、Cursor CLIのように、エージェントそのものであるコーディングCLI「エージェントランタイム」です。2つ目は、エージェントが「手」として使用するツールです。gh、ripgrep、jq、HTTPie、そして構造化されたJSONと次のステップのヒントが組み込まれたマシン呼び出し向けに構築されたapidog-cliです。APIワークフローにエージェントを組み込む場合、Apidog CLI完全ガイドで完全なセットアップを詳しく説明しています。各ツールについて、実際のインストールコマンドと動作例、さらにそれぞれの問題点について正直なメモが記載されています。
AIエージェントに適したCLIツールの条件
エージェントフレンドリーなCLIとそうでないCLIを分ける3つの特性があります。
構造化された出力。エージェントは、整形されたテーブルを解析するよりも、JSONをはるかに確実に解析します。--jsonまたは--output-format jsonを提供するツールは、エージェントが列の位置を推測する代わりに、名前でフィールドを読み取ることができます。
非対話型モード。コマンドが質問のために停止することがあれば、ヘッドレスで実行されているエージェントは永遠にハングします。エージェントに適したCLIは、要求全体を最初に受け取り、決してブロックしない出力モードまたは実行モードを持っています。
決定論的な終了コード。成功時には0、失敗時には0以外を常に一貫して返します。その1つの数字によって、エージェントは続行するか再試行するかを判断します。作業が失敗した場合でも終了コード0を返すツールは罠です。
エージェントに次に何をすべきかを伝えるツールにはボーナスポイントが与えられます。これは稀であり、apidog-cliが際立つ点です。
Claude Code
Claude Codeは、ターミナルで実行されるAnthropicのコーディングエージェントです。どのコマンドにも-p (プリントモード) を追加すると、完全なエージェントループが非対話的に実行され、結果が出力されて終了します。ターミナルUIもクリックするものもありません。
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を含む構造化されたペイロードを返します。これにより、スクリプト化された呼び出し元は呼び出しごとの費用を追跡できます。リアルタイムイベントストリーミング用のstream-jsonもあります (--verboseが必要です)。入力をパイプで渡すこともできます: 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を通じてパイプできる構造化オブジェクトとして出力されます。安定したフィールドが必要な自動化の場合、--output-schemaは、最終応答をあなたが提供するJSON Schemaに準拠させ、ジョブの要約やリリースメタデータに便利です。
最も得意なこと: 実行の終わりに型付けされ、スキーマ検証された出力が必要なCI駆動のコード変更。
正直な限界: JSONLイベントストリームは冗長です。必要な部分だけを抽出するために、実際のjq作業が必要になります。スキーマ制約のある出力は比較的新しい機能であり、実際のプロンプトでテストする価値があります。
Gemini CLI
Gemini CLIは、Googleのオープンソースターミナルエージェントです。非TTY環境では自動的にヘッドレスモードになり、または-p / --promptでプロンプトを渡すとヘッドレスモードになります。
npm install -g @google/gemini-cli
gemini --non-interactive --output-format json -p "list the public endpoints in this service"
--output-format jsonフラグは、応答と使用統計を含む単一のJSONオブジェクトを返します。ストリーミングイベント用にはJSONLバリアントがあります。--non-interactiveフラグは、プロンプトのために決して停止しないことを保証し、これはパイプライン内でまさに必要なものです。jqと組み合わせてresponseフィールドをきれいに抽出してください。
最も得意なこと: Googleツール環境に既に存在するエージェント、およびコードベースの要約や検査のような読み取り負荷の高いタスク。
正直な限界: 構造化されたJSON出力は一部の競合よりも後に登場したため、バージョンを固定し、依存する前にフラグがドキュメント通りに動作することを確認してください。
Cursor CLI
Cursorのcursor-agentは、エディターとは完全に分離して、コーディングエージェントをターミナルに提供します。-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に標準化されており、エディターで使用しているのと同じエージェントをCIやgitフックで使用したいチーム。
正直な限界: コミュニティでは、ヘッドレスの-pモードが一部のビルドやプラットフォームでハングすると報告されているため、対象のOSでテストし、既知の良好なバージョンを固定してください。最小権限トークンで維持し、その変更をレビューしてください。
gh (GitHub CLI)
ghは、エージェントがリポジトリ、イシュー、プルリクエスト、またはリリースに関連するタスクを実行する際に利用するツールです。ここにある理由は、その--jsonフラグにあります。
brew install gh
gh pr list --json number,title,author --jq '.[].author.login'
--jsonにフィールド名のリストを渡すと、まさにそのフィールドがJSONとして取得されます。値を省略すると、利用可能なフィールドが出力されるため、エージェントはスキーマを検出できます。組み込みの--jqフラグは、jqを個別にインストールすることなくその出力をフィルターします。また、ghは出力がパイプされていることを検出すると、自動的に人間向けのフォーマットをタブ区切りの機械出力に切り替えます。サブコマンドでカバーされていないものについては、gh apiがあらゆるRESTまたはGraphQL呼び出しを実行し、デコードされたJSONを返します。
最も得意なこと: PRの状態の読み取りからイシューの作成まで、エージェントワークフローにおけるあらゆるGitHub操作。
正直な限界: GitHub専用であり、--jsonで利用できるフィールド名はサブコマンドによって異なるため、エージェントはコマンドごとに確認する必要があります。
ripgrep
ripgrep (rg) は、エージェントがコードベース内で高速に何かを見つける方法です。エージェントに関連するフラグは--jsonで、通常のgrepスタイルの行ではなく構造化された一致イベントを出力します。
brew install ripgrep
rg --json "TODO" src/ | jq 'select(.type=="match") | .data.path.text'
各マッチは、開始/終了およびサマリーイベントと共に、ファイルパス、行番号、および一致したテキストを型付きフィールドとして含む別個のJSONオブジェクトとして出力されます。これは、コロンを含むパスやコードで分解されるfile:line:text文字列を分割するよりも、エージェントにとってずっと安全です。
最も得意なこと: エージェントが編集するものを決定する前に、大規模なリポジトリ全体で高速かつ構造化されたコード検索。
正直な限界: --json出力は冗長であり、有用にするためにはjqが必要です。素早い単発検索の場合、プレーンテキストモードの方がシンプルです。
jq
jqは接着剤です。上記のほとんどすべてのツールはJSONを出力し、jqはエージェントが作用する前にそれをスライス、フィルター、再整形する方法です。それは、1つのことを極めてうまく行う小さく単一目的のバイナリです。
brew install jq
curl -s https://api.github.com/repos/cli/cli | jq '{name, stars: .stargazers_count}'
jqは決定論的でストリーミングであるため、エージェントのシェルパイプラインにきれいに収まります。あるツールからJSONを取り、エージェントが必要とする2つのフィールドを抽出し、それらを次のコマンドに供給します。解析エラーが発生した場合は0以外の終了コードを返すため、サイレントに通過するのではなく、破損したアップストリーム応答が表面化します。
最も得意なこと: 任意のツールのJSONを、エージェントの次のステップが期待する形に変換すること。
正直な限界: クエリ言語には学習曲線があり、JSONのみを処理するため、生のログに直接向けるのではなく、上記のツールと組み合わせて使用してください。
HTTPie
エージェントがHTTP APIを直接呼び出す必要がある場合、HTTPie (http) は生のcurlよりもフレンドリーです。デフォルトでJSONを話します。コマンドライン上のフィールドはJSONリクエストボディになり、応答は自動的に解析されます。
brew install httpie
http --print=b POST httpbin.org/post name=apidog role=cli
--printフラグは、標準出力に何を出力するかを厳密に制御します (ボディのみの場合はb)。これは、エージェントがヘッダーを最初に削除せずに応答を解析したい場合に重要です。リクエストフィールドがkey=valueペアであるため、エージェントはJSON文字列を手動で組み立てることなく、プログラムでリクエストを構築できます。curlはより普遍的なフォールバックですが、HTTPieのJSONファーストのデフォルトはエージェントが駆動しやすいです。
最も得意なこと: JSON入力とJSON出力が標準である、迅速でスクリプト可能な単発API呼び出し。
正直な限界: curlがどこにでもあるのに、これは追加の依存関係であり、ストリーミングやエキゾチックなプロトコルでは依然としてcurlが勝ります。
apidog-cli
このリストにあるほとんどのツールは人間向けに構築され、後から--jsonフラグが追加されました。apidog-cliは異なります。その出力は設計上、構造化されたJSONであり、さらに一歩進んで応答にagentHints.nextStepsを含めます。このツールは、呼び出し元のエージェントに次に何ができるかを文字通り伝えます。これは他のCLIにはない特性です。
これは単なるテストランナーではなく、完全なAPIプロジェクトCLIです。1つのバイナリで、エンドポイント、スキーマ(データモデル)、モック、環境、インポートとエクスポート、ドキュメント、テストシナリオ、ブランチを管理します。インストールして認証してください。
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --help
ここで重要なエージェント適合プロパティについて: apidog runは、すべてのテストがパスした場合に0を返し、いずれかの失敗で0以外を返します。これにより、エージェントは出力の解析をまったく行わずに終了コードに基づいて分岐できます。JSON応答は、次のステップのヒントを運び、ワークフローをオーケストレーションするエージェントが、人間の手でシーケンスをマッピングすることなくコマンドを連鎖させることができます。これが、このツールがエージェントシリーズ全体で紹介される理由です。Claude CodeでのApidog CLI、CodexでのApidog CLI、およびCursorでのApidog CLIはすべて、同じ構造化された出力に依存しています。
もう一つ、エージェントの安全機能として特筆すべき点があります。ライブAPIプロジェクトへの書き込みアクセス権を持つエージェントは、実際のエンドポイントやスキーマを上書きしたり削除したりする可能性があります。ApidogのAIブランチ(apidog branch --type ai)は、エージェントに分離された編集用ブランチを提供します。元のブランチは変更されず、マージリクエストを承認するまで何も確定されません。AIエージェントのためのAIブランチで完全なパターンを、そしてAIエージェントテストハーネスの構築、さらにAIエージェントワークフローでのApidog CLIでそれがパイプラインにどのように適合するかをご覧ください。
最も得意なこと: エージェントにAPIライフサイクル全体に対応する単一のJSONネイティブツールを提供すること。ヒントと安全な編集サンドボックスが組み込まれています。
正直な限界: Apidogはオープンソースではありません。無料プランのある商用製品であり、jqやripgrepのような単一目的のMITバイナリとは異なる選択肢です。また、OpenAPIリンターがないため、スタイル強制がフローの一部である場合はSpectralまたはRedoclyと組み合わせてください。
選び方
万能な勝者はいません。ランタイムはエージェントそのものであり、ツールはエージェントが使用する手です。仕事に合ったツールを選びましょう。
| ツール | 最適な用途 | インストール | オープンソース? | エージェント適合メモ |
|---|---|---|---|---|
| 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 |
いいえ | -p --output-format json、ヘッドレスでテスト |
| 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つのランタイムを選択し、それに少数のツールCLIのキットを与えます。APIに触れるものすべてについて、curl、モックサーバー、テストランナーを組み合わせることは機能しますが、次のステップをすでに知っているJSONネイティブなCLIは、多くの接着コードを不要にするという正直な利点があります。
まとめ
エージェント適合性とはマーケティング用語ではありません。それは3つの具体的な特性です。エージェントが解析できる構造化された出力、決してハングしない非対話型モード、そして分岐できる終了コードです。ランタイム (Claude Code、Codex CLI、Gemini CLI、Cursor CLI) は推論をもたらし、ツールCLI (gh、ripgrep、jq、HTTPie、apidog-cli) は作業を実行します。
apidog-cliは、他のツールが到達する地点からスタートすることでその地位を確立しています。デフォルトでJSON、信頼できる終了コード、エージェントが直接読み取る次のステップのヒントです。エージェントの仕事がAPIに関わる場合、ApidogをダウンロードしてCLIを試すか、Apidog CLI完全ガイドから始めてください。次にCIに組み込んでください。そこでエージェントネイティブな出力が真価を発揮します。
