← ブログ一覧
フルスタック11分

GitHub Copilot CLIとは?公式CLIエージェントを実際にインストールして挙動を確かめた

  • #GitHub Copilot CLI
  • #CLI
  • #AIコーディングエージェント

Claude Code・Codex CLI・Goose・opencodeなど、ターミナルで動くAIコーディングエージェントはこの数年でかなり増えました。GitHubも2025年に公式のCLIエージェント「GitHub Copilot CLI」をパブリックプレビューとして公開しています。この記事では、公式ドキュメントの記述と、このクラウド環境へ実際にインストールして動かした結果をもとに、何ができるCLIなのかを整理します。

結論を先に言うと、このクラウド環境ではGitHub認証を完了できなかったため、実際にプロンプトを投げて応答を得るところまでは検証できていません。確認できたのは、インストール、ヘルプ出力、各サブコマンドの仕様、認証を試みた際の挙動(エラーメッセージ)までです。本文中でも、どこまでが公式ドキュメントの記述で、どこからが実際に動かして確認した内容かを区別して書きます。

GitHub Copilot CLIとは

公式ドキュメントによると、GitHub Copilot CLIはターミナルから使えるAIコーディングアシスタントで、ファイルの編集・シェルコマンドの実行・コードベースの検索などを、権限設定に応じてエージェントが自律的に行います。対話的に使うインタラクティブモードと、スクリプトから1回だけプロンプトを渡す非対話モードの両方を持っています。

この記事を書いている時点で、CLIはパブリックプレビュー段階です。公式ドキュメントには、仕様が変更される可能性がある旨の注記があります。GitHub Copilotのいずれのプラン(Free/Pro/Pro+/Business/Enterprise)でも利用できますが、Business・Enterprise組織では管理者がCLIポリシーを無効にしている場合は使えません。料金体系(プレミアムリクエストやAIクレジットの消費)は変更が続いている領域のため、この記事では数値を書かず、利用前に公式の料金ページで確認することをおすすめします。

インストールして実際に動かしてみる

npmパッケージとして配布されており、公式ドキュメントが案内するインストール方法は次のとおりです。

  • npm:npm install -g @github/copilot(Node.js 22以降、npm 10以降が前提)
  • Homebrew:brew install copilot-cli
  • WinGet:winget install GitHub.Copilot
  • インストールスクリプト:curl -fsSL https://gh.io/copilot-install | bash

このクラウド環境にはNode.js v22.22.0、npm 10.9.4が入っていたため、案件どおりnpm install -g @github/copilotでそのままインストールできました。

npm install -g @github/copilot
# added 3 packages in 6s

copilot --version
# GitHub Copilot CLI 1.0.101.
# Run 'copilot update' to check for updates.

npmレジストリ上のパッケージ公開情報を見ると、ホームページはhttps://github.com/github/copilot-cli/#readme、リポジトリはgit+https://github.com/github/copilot-cli.gitとして登録されています。ライセンスはSEE LICENSE IN LICENSE.mdという記載で、一般的なMIT等のOSSライセンス表記ではありません。ソースを公開しているリポジトリではあるものの、ライセンス条項自体はリポジトリ内のLICENSE.mdを別途確認する必要がある点は、導入前に知っておいたほうがよい点です。

copilot --helpから見る全体像

インストール後にcopilot --helpを実行すると、トップレベルのサブコマンドが一覧表示されます。実際の出力は次のとおりでした。

Commands:
  app          Open the GitHub Copilot app
  login        Authenticate with Copilot
  help         Display help information
  init         Initialize Copilot instructions
  config       Manage configuration settings
  update       Download the latest version
  version      Display version information
  workflow     Run dynamic workflows
  sessions     Manage saved sessions
  memories     Manage memories
  plugin       Manage plugins
  mcp          Manage MCP servers
  skill        Manage skills
  instruction  Inspect instruction sources
  lsp          Inspect language server configuration
  sandbox      Manage command sandboxing
  completion   Generate a shell completion script

対話モードは引数なしでcopilotと打つだけで始まります。スクリプトから使う非対話モードは-p(--prompt)で1つのプロンプトを渡し、応答だけを受け取りたいときは-s(--silent)を重ねます。他にも、権限を細かく絞るためのフラグがかなり充実していて、ヘルプのExamplesには次のような例が載っていました。

# 特定のディレクトリへのアクセスを許可
copilot --add-dir /home/user/projects

# git pushだけを除いてgitコマンドを許可
copilot --allow-tool='shell(git:*)' --deny-tool='shell(git push)'

# ファイル編集をすべて許可
copilot --allow-tool='write'

# MCPサーバー「MyMCP」の特定ツールだけ拒否
copilot --deny-tool='MyMCP(denied_tool)' --allow-tool='MyMCP'

# 特定ドメインへのHTTPSアクセスを拒否
copilot --deny-url=https://malicious-site.com

# 直前のセッションをID(7文字以上の16進数)で再開
copilot --resume=0cb916d

ツール単位・URL単位でアクセスを許可/拒否できる設計は、Claude Codeの権限モデルに近い考え方です。Claude Codeから移ってきた人にとっては、フラグ名は違えど発想自体は理解しやすいはずです。--fleetというオプションも用意されていて、ヘルプの説明によれば複数のサブエージェントを並列実行する「fleetモード」を-i・-p・標準入力パイプと組み合わせて使えるとされています。

ログインを試してみる:この環境での制約

公式ドキュメントによると、copilot loginの既定の認証方式はローカルデスクトップではWebブラウザでのOAuthフローですが、SSH・Codespaces・devcontainer・CI・ヘッドレスLinuxなどのリモート/ヘッドレス環境だと自動的にデバイスコードフローに切り替わるとされています。トークンを直接渡す方法もあり、COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKENの順で環境変数が優先的にチェックされます。

このクラウド環境には元々GitHub操作用のGITHUB_TOKENが設定されていたため、ブラウザを開かずに認証が通るかを試しにcopilot -p "hello" -sを実行してみました。結果は次のエラーで終了しました。

Error: Authentication token found but could not be validated.

  Failed to fetch GitHub CLI user login (403): GitHub returned: This GitHub API
  path is not available: sessions are bound to their configured repositories.
  Use repository-scoped endpoints (repos/{owner}/{repo}/...).

Your token may still be valid. Check your network connection and try again.

To authenticate, you can use any of the following methods:
  • Start 'copilot' and run the '/login' command
  • Set the COPILOT_GITHUB_TOKEN, GH_TOKEN, or GITHUB_TOKEN environment variable
  • Run 'gh auth login' to authenticate with the GitHub CLI

環境変数の優先順位どおりにGITHUB_TOKENを読みに行った上で、そのトークンが特定リポジトリに限定スコープされたトークンだったためにCopilotのユーザー情報取得APIに弾かれた、という流れがエラーメッセージからそのまま読み取れます。この記事はこの制約のため、実際にエージェントへ指示を出して編集結果を得るところまでは検証できていません。個人のGitHubアカウントでフルスコープのトークンを使う通常の利用であれば、このエラーは発生しないはずです。

MCPサーバーとスキル:Claude Codeとの接点

copilot mcp --helpを見ると、MCP(Model Context Protocol)サーバーの設定は複数のソースから読み込まれる仕組みになっています。

Configuration is loaded from multiple sources:
  User       ~/.copilot/mcp-config.json
  Workspace  .mcp.json or .github/mcp.json
  Plugin     Installed plugins with MCP servers

追加はcopilot mcp addで行い、ヘルプのExamplesにはローカルのstdioサーバーとリモートのHTTPサーバー両方の例が載っています。

# ローカルのstdioサーバーを追加
copilot mcp add context7 -- npx -y @upstash/context7-mcp

# 環境変数付きで追加
copilot mcp add github --env GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxx -- npx -y @modelcontextprotocol/server-github

# リモートのHTTPサーバーを追加
copilot mcp add --transport http notion https://mcp.notion.com/mcp

興味深いのは「スキル」の仕組みです。copilot skill --helpの説明文には、スキル(SKILL.mdファイル)を探しに行くディレクトリが列挙されています。

Skills are reusable instructions (SKILL.md files) that extend Copilot with
specialized capabilities. They are discovered from several sources:
  Project   .github/skills/, .agents/skills/, or .claude/skills/
  Personal  ~/.copilot/skills/ or ~/.agents/skills/
  Plugin    Installed plugins that bundle skills
  Custom    Directories added with `copilot skill add `

プロジェクト配下のスキル探索先に、GitHub自前の.github/skills/だけでなく.claude/skills/も含まれている点は見逃せません。つまり、Claude Code用に書いたSKILL.mdをリポジトリに置いておけば、同じリポジトリでCopilot CLIを使うときにもそのスキルを読み込める可能性があるということです(実際に両方のエージェントで同一のSKILL.mdが問題なく機能するかどうかは、この記事では検証していません)。実際にcopilot skill listを実行すると、ビルトインのスキルが2つ表示されました。

Builtin skills:
  customize-cloud-agent - Skill for customizing the Copilot cloud agent
  (formerly known as Copilot coding agent) environment, including
  copilot-setup-steps.yml configuration, preinstalling tools and
  dependencies, runners, and settings.
  github-pr-media - Upload an image or video to GitHub's user attachments
  API and embed it in a pull request description or comment.

プラグインとマーケットプレイス

copilot plugin --helpによると、プラグインはスキル・エージェント・フック・MCPサーバー・LSPサーバーをまとめて拡張できる仕組みで、既定で1つのマーケットプレイスが登録されています。

One marketplace is included by default:
  awesome-copilot   github/awesome-copilot

インストール元の指定方法はplugin@marketplace・owner/repo・owner/repo:path・gitのURLのいずれかで、--from-githubフラグを使うとgithub.com上のインストールリンクからリソースIDとリビジョンを指定してインストールできます。この方式では、インストール前にCopilotが実際のファイル内容を検証して表示し、ターミナル上で確認を求めるとヘルプに明記されています。見ず知らずのリポジトリのプラグインを入れる前に、何が入るかを確認できる設計です。

その他、気づいた点

  • copilot initは、コードベースを読み取り専用ツールで分析し、.github/copilot-instructions.mdを生成するコマンドです。ビルド・テストコマンドやコーディング規約を自動抽出するとヘルプに説明があります。
  • カスタム指示は、リポジトリ共通の.github/copilot-instructions.mdに加えて、パス指定の指示ファイルやAGENTS.mdも読み込まれます。Markdownのエージェントプロファイルでカスタムエージェントを定義する仕組みもあり、同名の場合はシステム>リポジトリ>組織の優先順位で上書きされると案内されています。
  • copilot configはドット記法のキーで設定を読み書きするコマンドです。既定ではユーザー設定ファイル(~/.copilot/settings.json)を対象にしますが、--repo/--localでリポジトリ単位の設定ファイルも操作できます。何も設定していないインストール直後は、copilot config --listの出力は空でした。
  • copilot sandboxはコマンドのサンドボックス化を管理するコマンドで、対話モード中は/sandboxスラッシュコマンドから設定を変更できるとヘルプに記載があります。

向いている場面・向いていない場面

ここまで確認した範囲での印象です。

  • 向いている:すでにGitHub CopilotのサブスクリプションがあるチームがCLIも試したい場合。GitHubリポジトリ・PR・Issueと地続きで動く設計(github-pr-mediaスキルなど)は、GitHub上での作業が多いワークフローに合っています。
  • 向いていない:Copilotのサブスクリプションを持たず、CLIだけ単体で使いたい場合。他のAIコーディングCLIと違い、GitHub Copilotのプラン契約が前提になります。また、パブリックプレビューであるため、仕様変更やコマンド名の変更が今後も起こり得る前提で使う必要があります。

まとめ

GitHub Copilot CLIは、GitHub公式が配布するターミナル向けAIコーディングエージェントです。実際にこのクラウド環境へインストールしてヘルプ出力やサブコマンドの仕様を確認した範囲では、ツール・URL単位の権限制御、MCPサーバー管理、プラグインマーケットプレイス、そして.claude/skills/も含めたスキル探索など、他のCLIコーディングエージェントと比較検討する価値のある機能が揃っていました。一方で、このクラウド環境のトークンスコープの制約により、実際にプロンプトを投げて応答を受け取る中核機能そのものは検証できていません。実際の対話的な使い心地については、ご自身のGitHub Copilotアカウントで試してみることをおすすめします。

参考にした一次情報

まずは、やりたいことを聞かせてください

「何から手をつければいいか分からない」段階でも大丈夫です。 ご相談・お見積りは無料。碧南近郊なら直接伺います。