◀ 用語一覧
NO.14

Copilot CLI

更新: 2026.07.22

一言で

Copilot CLI は、ターミナルの中にいる Copilot。

基本は VS Code の Copilot と同じように、質問・計画・編集・実行を手伝う。ただし CLI ならではの機能と Harness があるので、ここから一緒に見ていく。

主要機能

ターミナル一枚に、フルスタックの AI 環境が乗る。

  • 複数ファイルの文脈把握:リポジトリ全体を一つのワークスペースとして扱う。
  • コード生成・編集:ターミナルから修正し、差分を確認して承認できる。
  • コマンド実行:ビルド・テスト・lint などを実行し、結果を読んで次に進む。
  • IDE を選ばない:VS Code、Vim、SSH 先など、ターミナルがあれば使える。
  • Skills / MCP 対応:必要な能力や外部ツールを追加できる。
  • 非対話実行:CI、cron、script から copilot -p "..." で実行できる。

CLI と VS Code Chat の違い

Copilot CLIVS Code Chat
UIとても軽い。ターミナル中心なので、コマンドを覚える必要があり、エディタ UI は最小限。一方で CLI をすぐ開けるので、folder、PowerPoint、Excel など手元の computer resource に対して作業しやすい。画面上で選択肢・設定・ファイル移動・inline diff・debugger を扱いやすい。
新機能の速さ/chronicle/fleet/share、Rubber Duck など、新しい実験が入りやすい。より安定志向。CLI で育った良いアイデアを取り込んでいくことが多い。
Sub-agentExplore、Task、Rubber Duck、Code Review など、built-in agent を多く持ち、native に起動できる。現時点では限定的だが、少しずつ追いついている。
Session management/context/compact/session などで、session を細かく制御しやすい。改善中だが、今は CLI ほど細かくはない。
Partner agentCopilot CLI は Copilot の Harness 内で動く。Codex / Claude の Harness は使えず、使えるのはそれらの modelVS Code 内では、Copilot、Codex、Claude などの agent / extension を切り替えやすい。
Index主に greprg、workspace command などの terminal/search tool を使う。Blackbird など、エディタ側の richer index を使える。

強力なビルトインエージェント

Copilot CLI には、よくあるタスク向けのビルトインエージェントが用意されている。

エージェント説明
Exploreコードをメインの文脈に追加せず、素早くコードベースを分析し、コードについて質問できるようにする。
Taskテストやビルドなどのコマンドを実行し、成功時は短い要約、失敗時は完全な出力を返す。
General purposeすべてのツールと高度な推論が必要な複雑な複数ステップのタスクを、メイン会話とは別の文脈で処理する。
Code review本当に重要な問題だけを見つけることに集中してコード変更をレビューし、ノイズを最小化する。
Researchコードベース、関連リポジトリ、Web を横断して深く調査し、引用付きの詳細レポートを作成する。
Rubber duck複雑なタスクに対して建設的な批評役としてフィードバックを返す。Copilot CLI が自動的に使う。

💡 これらのビルトインエージェントの定義は、ローカルにインストールされた CLI の definitions/*.agent.yaml で確認できる(例: ~/.copilot/pkg/darwin-arm64/<version>/definitions/*.agent.yaml)。

Rubber Duck — クロスモデルレビュー

🦆 Experimental:メインモデルとは 異なるモデルファミリー が「セカンドオピニオン」として、計画・実装・テストの各段階で独立レビュー。

flowchart LR
  User([👤 開発者])
  Main["🧠 Main Model<br/>例: Claude"]
  Out["📝 計画 / 実装 / テスト"]
  Duck["🦆 Rubber Duck<br/>例: GPT-5.4"]
  Final([✅ 検証済み出力])
  User --> Main
  Main --> Out
  Out -->|"独立レビュー"| Duck
  Duck -->|"盲点 / 前提誤り"| Main
  Main --> Final

  classDef user fill:#0a1a14,stroke:#9bbc0f,color:#9bbc0f,stroke-width:2px
  classDef main fill:#0a0e27,stroke:#00f0ff,color:#00f0ff,stroke-width:2px
  classDef duck fill:#1a1500,stroke:#ffb000,color:#ffb000,stroke-width:2px
  classDef out fill:#1a0a2e,stroke:#ff2e88,color:#ff2e88,stroke-width:2px
  class User,Final user
  class Main main
  class Duck duck
  class Out out

なぜ効く? ── 同じモデルが自分の出力をチェックすると、同じ前提・同じ盲点 に引っかかる。別ファミリーのモデルなら、訓練データも価値観も違うので 見えていなかったロジックエラー を拾える。

その他の便利コマンド

CLI は slash command で、モデル・共有・実験機能・環境情報などをすぐ確認できる。

コマンド使いどころ
/help利用できるコマンドやショートカットを確認する。
/model使用するモデルを確認・切り替える。
/ideVS Code などの IDE と接続する。
/share現在のセッションを共有する。
/experimental実験的な機能を確認・有効化する。
/chronicleセッションの流れや作業履歴を確認する。
/taskbackground で動いている agent や task を確認する。
/ask作業を進める前に、質問として Copilot に相談する。
/envCLI が見ている環境情報を確認する。

🖥️ TUI(ターミナル UI)

/experimental on で、再設計されたターミナル UI を試せる。テーマ対応のセマンティックカラーを備え、/theme で確認できる。GitHub リポジトリ内では Tab キーで下の表のメニューを行き来できる。

タブ中身
Session通常の対話セッション(デフォルト)
Issuesリポジトリの Issue を一覧・閲覧
Pull requestsPR を一覧・閲覧
Gists自分の Gist を一覧・閲覧

📝 スクリーンリーダー対応をはじめ、ほかにも多くの UI 改善が入っている。詳しくは changelog ↗

🛡️ Sandbox — 安全な実行環境

Copilot が動かすシェルコマンドを 隔離環境 で実行し、filesystem / network / system への到達を制限。agentic な作業を安心して任せられる。(Public Preview)

🖥️ ローカル Sandbox☁️ クラウド Sandbox
起動session 内で /sandbox enablecopilot --cloud
実行場所自分のマシン(隔離)GitHub ホストの ephemeral Linux
基盤Microsoft MXCAzure Container Apps Sandboxes
対応macOS / Linux(Windows は Insiders)どのデバイスからでも
ポリシーIntune / MDM で集中管理Cloud Agent ポリシーを継承
  • 🔒 隔離対象:Copilot 起点のシェル実行の filesystem / network / system capability。
  • 🔁 クラウドは状態を保持:Active → Stopped(snapshot)→ Deleted。別デバイスから再開でき、重い処理を並列実行できる。
  • 🧩 認証はそのまま:Copilot CLI のサインインを使うので、別途クラウド設定は不要。

非対話モード(プログラマティック実行)★

Copilot CLI は copilot -p "..."1 コマンド実行 できる。対話セッションを開かず、1 ターンで完了して exit するので、シェルスクリプト・cron・バッチファイルGitHub Actions から呼び出せる。定型業務の自動化や PR の自動レビューなど「人がやらなくていい作業」を Copilot に任せられる。

主要フラグ

  • -p "..." / --prompt "..." — プロンプトを渡して 1 ターンで終了
  • -s (silent) — メタデータを抑制し応答テキストのみを stdout に出力(変数代入・パイプ向け)
  • --no-ask-user — clarifying question を出さず自律的に判断
  • --allow-tool='shell(npm:*), write' — 必要なツールだけ許可(--allow-all はサンドボックスのみ)
  • --model gpt-5.5 — モデルを固定して結果のブレを抑える
  • --share='./session.md' — セッション全体を Markdown で保存

よくあるユースケース

  • 📝 コミットメッセージの自動生成 / 📰 リリースノート作成
  • 🐛 ESLint エラーの一括修正 / 🧪 テスト未整備モジュールにテスト追加
  • 🔍 PR の AI レビュー(/review をスクリプト化) / 🔐 依存ライブラリの脆弱性監査
  • 📚 README・JSDoc の一括生成 / 🌏 ドキュメントの自動翻訳

運用のコツ

  • 🔑 認証は環境変数で渡す:COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN
  • 🧾 PAT は fine-grained (v2) で「Copilot Requests」権限を付ける(古い ghp_ 形式は不可)
  • 🛡️ --allow-tool でホワイトリスト指定が鉄則。--allow-all は使わない
  • 🎯 プロンプトは具体的に — 出力フォーマット(「Number only.」「YES/NO」)も指定するとパースしやすい
  • 📊 --share でセッションログを残しておくと、結果の根拠を後で追える
  • 🧩 まず interactive で動かしてプロンプトを煮詰め、固まったら -p でスクリプト化が一番早い

📘 詳細: