Claude Media
AIコーディングエージェントCLI設計の理由 — なぜIDEではなくターミナルなのか

AIコーディングエージェントCLI設計の理由 — なぜIDEではなくターミナルなのか

Claude Code・Codex CLI・Gemini CLI・Copilot CLIは揃ってターミナルを選びました。補完からエージェントへの転換を軸に、CLIという設計の必然と4製品の共通点を読み解きます。

Claude Code、OpenAIのCodex CLI、GoogleのGemini CLI、そしてGitHubのCopilot CLI。主要各社のAIコーディングエージェントは、揃ってターミナルで動くCLIとして登場しました。GUIが当たり前の時代に、なぜ最先端のAIツールがコマンドラインへ向かったのか。各製品の公式文書を並べると、その理由が見えてきます。AIの主語が「編集中のファイル」から「実行されるプロセス」へ変わったとき、必要になったのはエディタのプラグインAPIではなく、シェルそのものだったからです。

補完とエージェントでは「主語」が違う

インライン補完は、開いているファイルとカーソル位置を入力として、次に来るコード片を返す仕組みです。世界はエディタのバッファの中で閉じています。Claude Codeの公式ドキュメントは、自らを「現在のファイルしか見ないインライン型コードアシスタントとは異なる」ものだと明確に線を引いています。

エージェントが受け取るのはコード片の依頼ではなく、タスクです。「失敗しているテストを直して」と頼まれたClaude Codeは、おおむね次の順で動きます。エージェント型の開発ツール全般の見取り図はClaude Codeとは何かを整理した解説にまとまっています。

流れ

テスト修正を頼まれたときのループ

  1. 1

    テストスイートを実行して、何が落ちているかを見る

    ここでシェルが要ります。

  2. 2

    エラー出力を読む

    出力はプロセスの標準出力から返ってきます。

  3. 3

    関連するソースを検索して読む

    パターン検索と正規表現検索で、直す場所を絞り込みます。

  4. 4

    ファイルを編集する

    ここだけがエディタの仕事に近い工程です。

  5. 5

    もう一度テストを走らせて、直ったかを確かめる

    実行結果が次の判断の材料になり、失敗が残っていれば手順3へ戻ります。

5工程のうち、編集は1つだけです。ほかは実行・検索・読み取りで、ツールの使い方を見ても同じ比重です。

道具

組み込みツールの5カテゴリ

  • ファイル操作

    コードの読み取り、編集、新規作成、整理。

  • 検索

    パターンでファイルを探し、正規表現で中身を検索する。

  • 実行

    シェルコマンド、サーバー起動、テスト、gitの操作。

  • Web

    Web検索、ドキュメント取得、エラーメッセージの調査。

  • コード情報

    編集後の型エラーや警告の確認、定義ジャンプ。プラグインで追加します。

テストが走らなければ、直せたかどうかを確かめる手段がありません。この検証ループを回す実行基盤として、シェルより汎用的なものは存在しませんでした。それがCLIという答えの半分です。

道具箱はターミナルに最初から揃っていた

残りの半分は経済性です。Claude Codeのドキュメントには「コマンドラインからできることは、Claudeにもできる」という一文があります。ビルドツール、git、パッケージマネージャー、システムユーティリティ、チームの自作スクリプト。開発で使う道具は、そのほぼすべてがすでにCLIとして存在します。

くらべる

エージェントをどこに住まわせるか

プラグインAPI経由

エディタ拡張の中

拡張APIが提供する操作の範囲でしか外の世界に触れられません。テスト実行やコンテナ操作のような統合は、1つずつ個別に作り込みます。

プロセスとして独立

シェルの上

シェルを実行する能力を1つ持てば、既存のCLIとの統合が追加実装なしで手に入ります。自作スクリプトも同じ扱いで呼べます。

エージェントに必要な道具の大半がエディタの外にある以上、エージェント自身が外に住むほうが理にかなっていました。

他社の文書も同じ設計思想を示しています。Gemini CLIのREADMEが組み込みツールとして挙げるのはGoogle検索・ファイル操作・シェルコマンド・Web取得で、方針は「コマンドラインに住む開発者のためのターミナルファースト」。Copilot CLIも「Copilotコーディングエージェントの力をターミナルへ直接持ち込む」と自己紹介しており、言葉選びまで重なります。

パイプとCIに乗る — 合成できるツールという利点

CLIであることは、入出力を他のツールとつなげられることを意味します。Claude Codeのドキュメントはこの性質を「Unix哲学に従うコンポーザブルな設計」と説明し、ログの流し込みやCIでの実行を標準的な使い方として例示しています。

# ログをそのままエージェントに流し込んで監視させる
tail -200 app.log | claude -p "異常があればSlackで知らせて"
 
# 変更のあったファイルだけをレビューさせる
git diff main --name-only | claude -p "セキュリティ観点でレビューして"

-p(非対話モード)を付けたClaude Codeは、結果を出力して終了する1つのコマンドになります。成功すれば終了コード0、実行が失敗すれば非0を返すため、シェルスクリプトの条件分岐にそのまま組み込めます。エディタはパイプの先に置けないので、この性質はエディタの中では成立しません。

入口の作りをヘルプで見る

v2.1.289のclaude --helpを読むと、スクリプトに組み込むための入口が最初から用意されていることが分かります。引数の誤りに対する終了コードも、モデルを呼ばずに確かめられます。

$ claude --version
2.1.289 (Claude Code)
 
$ claude --help | grep -E "^\s+(-p|--output-format|--permission-mode)"
  --output-format <format>              Output format (only works with --print):
                                        "text" (default), "json" (single
                                        result), or "stream-json" (realtime
  --permission-mode <mode>              Permission mode to use for the session
                                        (choices: "acceptEdits", "auto",
                                        "bypassPermissions", "manual",
                                        "dontAsk", "plan")
  -p, --print                           Print response and exit (useful for
 
$ claude --permission-mode nope -p x; echo "exit=$?"
error: option '--permission-mode <mode>' argument 'nope' is invalid. Allowed choices are acceptEdits, auto, bypassPermissions, manual, dontAsk, plan.
exit=1

出力形式はtext(既定)・json(結果1件)・stream-json(逐次)の3種類で、いずれも-pと組み合わせたときだけ効きます。結果をjqに渡す用途ならjson、進行を追うならstream-jsonという使い分けです。不正な引数は実行が始まる前に標準エラーへ出て、終了コードは1になります。

CIや配布スクリプトには、hooksやMCPサーバー、CLAUDE.mdの自動探索を省く--bareも用意されています。ヘルプには「Minimal mode」とあります。Anthropic APIではAPIキーかapiKeyHelperを使い、サブスクリプションのログインは使えません。公式のheadlessページは、スクリプトやSDK呼び出しでの推奨モードで、将来-pの既定になる予定だと書いています。

Gemini CLIも、スクリプトからの非対話実行によるワークフロー自動化を主要機能に数えています。

権限の線はプロセスの境界に引ける

任意のコマンドを実行するエージェントには、「どこまで自動で動いてよいか」の制御が欠かせません。独立したプロセスとして動くCLIは、この線引きと相性がよい作りです。

Claude Codeの権限モードは、前節のヘルプに出た6つです。値のmanualは設定上defaultと同じ最も慎重なモードで、読み取りだけが無確認で通ります。acceptEditsはファイル編集とmkdir・mvなどの基本コマンドまで、planは読み取り中心の調査用です。dontAskは事前に許可したツール以外を黙って拒否するため、CI向けです。bypassPermissionsは隔離したコンテナやVM専用と位置づけられています。

autoモードでは別の分類器モデルが、ユーザーの代わりに個々のアクションを審査します。v2.1.283以降は、対話型のターミナルとVS Codeのセッションがこのモードで始まります。モードを指定しない-pの既定はdefaultです(機能フラグを取得できない環境は例外)。OSレベルのサンドボックスと組み合わせれば、コマンドが届く範囲そのものを絞れます。

エディタのプロセスに同居する設計では、エージェントの権限だけを分離する制御が難しくなると考えられます。この領域は各社の設計差が最も出る部分でもあり、固定ルール型と動的判定型の分岐はAIコーディングエージェントの権限モデル比較で整理しています。

ローカルで動くことも設計の一部

CLIエージェントはローカルマシンで動きます。Codex CLIのREADMEは冒頭で「あなたのコンピューター上でローカルに動くコーディングエージェント」と名乗り、クラウド版のCodex Webを別製品として案内しています。Claude Codeも既定の実行環境はローカルで、ファイル・ツール・実行環境へのフルアクセスを前提に設計されています。会話履歴すらローカルに残る設計で、各セッションは~/.claude/projects/配下のJSONLファイルとして保存されます。

ローカル実行は、リポジトリの外にある文脈を拾えることを意味します。動いている開発サーバー、ローカルのデータベース、シェルの環境変数。エージェントの仕事場が「いま開発が起きている場所」そのものになります。クラウド実行やリモート操作はこの土台の上に選択肢として足されており、Claude Codeではローカル・クラウド・Remote Controlの3つの実行環境を切り替えられます。

4製品の自己定義を並べると収束が見える

各製品が公式文書で自らをどう説明しているかを並べると、同じ結論に別々に到達したことが分かります。

製品提供元公式の自己定義(要旨)ターミナル外の展開
Claude Code提供元Anthropic公式の自己定義(要旨)コードベースを読み、ファイルを編集し、コマンドを実行するエージェント型コーディングツールターミナル外の展開IDE拡張・デスクトップ・Web
Codex CLI提供元OpenAI公式の自己定義(要旨)ローカルマシンで動くコーディングエージェントターミナル外の展開IDE拡張・デスクトップアプリ・Codex Web
Gemini CLI提供元Google公式の自己定義(要旨)Geminiをターミナルへ直接持ち込むオープンソースのAIエージェントターミナル外の展開GitHub Actions連携
Copilot CLI提供元GitHub公式の自己定義(要旨)Copilotコーディングエージェントをターミナルへ直接持ち込むツールターミナル外の展開GitHubコンテキストとの連携

共通点は自己定義だけではありません。配布はcurlインストーラー・npm・Homebrewといったコマンドライン経由で、認証は既存のサブスクリプションやアカウントに連動します。Claude CodeのCLAUDE.md、Gemini CLIのGEMINI.mdのように、プロジェクト直下のMarkdownでエージェントへ文脈を渡す仕組みも共通です。いずれも「エディタの機能」ではなく、開発マシンに常駐する独立したツールとして作られています。

エージェントループの基本設計が似ている以上、差が出るのは権限モデル・料金・エコシステムの3点です。料金や拡張機構の具体的な違いはClaude Code vs Gemini CLIの比較が参考になります。

CLIは起点であって、終点ではない

どの製品もターミナル専用にとどまってはいません。Claude CodeはVS CodeとJetBrainsの拡張、デスクトップアプリ、ブラウザー(claude.ai/code)でも動きます。CLAUDE.md・設定・MCPサーバーは、どの入り口でもそのまま共有されます。

ここで効いてくるのが、エンジンとインターフェイスの分離です。エージェントの本体は、モデルと道具と実行環境を束ねる実行基盤(agentic harness)であり、ターミナルはその最初の入り口にすぎません。Claude Codeのドキュメントは、どの入り口でも下で回るエージェントループは同一だと明言しています。入り口ごとの違いはDesktop・CLI・Web版の使い分けで確認できます。

だから「IDEかCLIか」という対立は、実はもう解消しています。エディタは人間がコードを読み書きするためのUIとして残り、シェルはエージェントが仕事をする実行基盤になった。この分業は、CLIを出した各社がIDE拡張の提供も続けている事実が裏づけています。

よくある質問

ターミナル操作に慣れていなくても使えますか

使えます。デスクトップアプリは変更差分をファイルごとに視覚的にレビューでき、コマンド操作に不慣れな場合の入り口に向いています。VS Code拡張ならエディタの中でインライン差分を見られます。入り口はあとから変えても、CLAUDE.mdや設定は共通のままです。

無料で使えるCLIエージェントはありますか

Gemini CLIは個人のGoogleアカウントで毎分60リクエスト・1日1,000リクエストの無料枠を提供しています。Claude Codeの公式ドキュメントは、大半の利用形態でClaudeのサブスクリプションかAnthropic Consoleのアカウントが必要だと説明しています。Codex CLIのREADMEは、ChatGPTのPlus・Pro・Business・Edu・Enterpriseプランでのサインインを推奨し、APIキーでの利用には追加設定が要るとしています。Copilot CLIはCopilotのサブスクリプションが前提です。

まとめ — 制約が同じなら答えも同じになる

4製品が同じ答えに収束したのは、模倣ではなく、解くべき制約が同じだったからと見るのが自然です。どのツールを選ぶかで迷ったときは、エディタに拡張を入れるかどうかよりも、パイプ・CI・権限の線引きといった周辺の仕組みが自分の運用に合うかで比べるほうが、差が見えやすくなります。

この記事を共有:XはてブLinkedIn