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はタスクを「コンテキスト収集」「行動」「結果の検証」という3段階のループで処理します。テストを走らせて失敗を読み、原因のファイルを探して直し、もう一度テストで確かめる。この一連の動きが、数十回のツール実行の連鎖として自律的に進みます。エージェント型の開発ツール全般の見取り図はClaude Codeとは何かを整理した解説にまとまっています。
ループを支える道具立てを見ると、ファイル編集は5カテゴリある組み込みツールの1つにすぎません。
| カテゴリ | できること |
|---|---|
| ファイル操作 | できることコードの読み取り・編集・新規作成・整理 |
| 検索 | できることパターンでファイルを探し、正規表現で中身を検索する |
| 実行 | できることシェルコマンド・テスト・ビルド・gitの操作 |
| Web | できることWeb検索・ドキュメント取得・エラーメッセージの調査 |
| コード情報 | できること編集後の型エラー確認や定義ジャンプ(プラグインで追加) |
比重は編集よりも実行と検証にあります。テストが走らなければ、直せたかどうかを確かめる手段がありません。この検証ループを回す実行基盤として、シェルより汎用的なものは存在しませんでした。それがCLIという答えの半分です。
道具箱はターミナルに最初から揃っていた
残りの半分は経済性です。Claude Codeのドキュメントには「コマンドラインからできることは、Claudeにもできる」という一文があります。ビルドツール、git、パッケージマネージャー、システムユーティリティ、チームの自作スクリプト。開発で使う道具は、そのほぼすべてがすでにCLIとして存在します。シェルを実行する能力を1つ持てば、それら全部との統合が追加実装なしで手に入る計算です。
エディタ拡張として同じものを作ると、この関係が逆転します。プラグインAPIが提供する操作の範囲でしか外の世界に触れられず、テスト実行やコンテナ操作のような統合は個別の作り込みになります。エージェントに必要な道具の大半がエディタの外にある以上、エージェント自身が外に住むほうが理にかなっていました。
他社の文書も同じ設計思想を示しています。Gemini CLIのREADMEが組み込みツールとして挙げるのはファイル操作・シェルコマンド・Web取得・Google検索で、方針は「コマンドラインに住む開発者のためのターミナルファースト」。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を返すため、シェルスクリプトの条件分岐にそのまま組み込めます。CIや配布スクリプト向けには、hooksやMCPサーバーの自動探索を省いて実行環境を固定する--bareフラグも用意されています。Gemini CLIも、スクリプトからの非対話実行によるワークフロー自動化を主要機能に数えています。
この性質はエディタの中では成立しません。エディタはパイプの先に置けないからです。
権限の線はプロセスの境界に引ける
任意のコマンドを実行するエージェントには、「どこまで自動で動いてよいか」の制御が欠かせません。独立したプロセスとして動くCLIは、この線引きと相性がよくできています。Claude Codeには自動・手動・編集許可・プランの4つの権限モードがあり、autoモードでは別の分類器モデルが個々のアクションを裏で審査して、危険なものだけを止めます。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でエージェントへ文脈を渡す仕組みも共通です。いずれも「エディタの機能」ではなく、開発マシンに常駐する独立したツールとして作られています。
CLIは起点であって、終点ではない
どの製品もターミナル専用にとどまってはいません。Claude CodeはVS CodeとJetBrainsの拡張、デスクトップアプリ、ブラウザー(claude.ai/code)でも動きます。どの入り口から使ってもエンジンは同一で、CLAUDE.md・設定・MCPサーバーがそのまま共有されます。Codex CLIも同様に、IDE拡張・デスクトップアプリ・クラウドを並行して提供しています。
ここで効いてくるのが、エンジンとインターフェイスの分離です。エージェントの本体は、モデルと道具と実行環境を束ねる実行基盤(agentic harness)であり、ターミナルはその最初の入り口にすぎません。Claude Codeのドキュメントはターミナル版を「フル機能のCLI」と表現しつつ、どの入り口でも下で回るエージェントループは同一だと明言しています。入り口ごとの違いはDesktop・CLI・Web版の使い分けで確認できます。
だから「IDEかCLIか」という対立は、実はもう解消しています。エディタは人間がコードを読み書きするためのUIとして残り、シェルはエージェントが仕事をする実行基盤になった。この分業は、CLIを出した各社がIDE拡張の提供も続けている事実が裏づけています。IDE拡張の画面の下で動いているのも、結局は同じエージェントエンジンです。
よくある質問
ターミナル操作に慣れていなくても使えますか
使えます。Claude Codeはターミナルのほか、VS Code拡張・デスクトップアプリ・ブラウザーからも同じエンジンを利用できます。デスクトップアプリは変更差分を視覚的にレビューでき、コマンド操作に不慣れな場合の入り口に向いています。入り口はあとからいつでも変えられます。
エージェントはエディタなしでどうやってコードを書いているのですか
ファイルの読み書きは専用のファイル操作ツールで直接行うため、人間用のエディタ画面は使いません。Claude Codeは編集の前に対象ファイルのスナップショットを取るので、結果が気に入らなければチェックポイントから巻き戻せます。人間は生成された差分を確認する役割に回ります。
無料で使えるCLIエージェントはありますか
Gemini CLIは個人のGoogleアカウントで毎分60リクエスト・1日1,000リクエストの無料枠を提供しています。Claude Codeは大半の利用形態でClaudeのサブスクリプションまたはAnthropic Consoleのアカウントが必要です。Codex CLIはChatGPTの有料プラン(Plus・Proなど)でのサインインが推奨されています。
CLIエージェント同士はどこで差が出ますか
エージェントループの基本設計は似ており、差が出るのは権限モデル・料金・エコシステムの3点です。料金や拡張機構の具体的な違いはClaude Code vs Gemini CLIの比較が参考になります。
まとめ — 制約が同じなら答えも同じになる
補完はファイルの中の作業で、エージェントはプロセスの実行を伴う仕事です。実行と検証の基盤としてシェルほど普遍的なものは無く、パイプやCIへの組み込みやすさ、プロセス境界での権限制御がその選択を補強しました。4製品が同じ答えに収束したのは、模倣ではなく、解くべき制約が同じだったからです。ターミナルに不慣れでも心配は要りません。IDE拡張やデスクトップアプリから入っても、その下で回っているのは同じCLI由来のエンジンです。