xshoji's blog

OpenCode の GitHub Copilot 連携機能が正式サポートされたので仕組みを再確認してみた

目次

以前

OpenCode の GitHub Copilot 連携機能の仕組みを読み解く(注意点あり) | xshoji’s blog
https://blog.xshoji.com/posts/20260106_opencode-github-copilot-integration-spec/

こちらで記事にした OpenCode の GitHub Copilot 連携機能ですが、2026年1月16日に公式にサポートされたと発表がありました。

ということで、改めて OpenCode の GitHub Copilot 連携機能が以前とどう変わったのか再確認してみました。

公式サポート前の仕組みのおさらい

過去記事でも書きましたが、以前の OpenCode の GitHub Copilot 連携機能は「 GitHub Copilot Plugin 」のクライアントIDを “なりすまし的に” 利用して、ユーザーの GitHub Copilot の機能にアクセスしていました。

過去記事にも書きましたが、

本来であれば、OpenCode のような サードパーティ製アプリは、自分たちで独自に OAuth アプリケーションを GitHub 上に登録し、そのアプリケーションの Client ID を使って OAuth の認可を行うべきです。

もし公式サポートされたのであれば、 OpenCode の OAuth アプリが GitHub 上に正式登録されており、それに対してユーザー(私たち)が認可を与える形になるはずです。

実際に確認してみました

まずはコードレベルで確認

まずは、コードレベルで確認してみました。

feat: official copilot plugin by rekram1-node · Pull Request #8393 · anomalyco/opencode
https://github.com/anomalyco/opencode/pull/8393/files#diff-020125865630f1b8d13ae8f34871a89c49b32e407159ea0b43bfdea93f19e841R5

こちらが正式サポートのPRです。みてみると、クライアントIDが以前の GitHub Copilot Plugin のものから別のIDに変更されていることがわかります。

before/afterClient ID
beforeIv1.b507a08c87ecfe98
afterOv23li8tweQw6odWQebz

この Ov23li8tweQw6odWQebz という Client ID が OpenCode の OAuth アプリケーションのものの可能性が高いです。

連携してみた

では、実際に OpenCode と GitHub Copilot を連携してみます。 ここで注意が必要なのは、この正式サポートされた GitHub Copilot 連携機能は OpenCode v1.1.21 から利用可能になっています。これよりも古いバージョンの OpenCode だと、以前の記事にある非公式な方法で GitHub Copilot 連携が行われるので注意してください。

Comparing v1.1.20…v1.1.21 · anomalyco/opencode
https://github.com/anomalyco/opencode/compare/v1.1.20...v1.1.21

feat: official copilot plugin (#8393)
rekram1-node authored

私も古いバージョンの OpenCode を使っていたので、まずは最新版にアップデートしました。

…が、ここでこの記事の話とは全く関係のないところでちょっと躓きました。

$ opencode upgrade
...
  █▀▀█ █▀▀█ █▀▀█ █▀▀▄ █▀▀▀ █▀▀█ █▀▀█ █▀▀█
  █░░█ █░░█ █▀▀▀ █░░█ █░░░ █░░█ █░░█ █▀▀▀
  ▀▀▀▀ █▀▀▀ ▀▀▀▀ ▀  ▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀

┌  Upgrade
│
●  Using method: brew
│
●  From 1.1.14 → 1.1.23
│
◇  Upgrade complete
│
└  Done
$ opencode --version
1.1.14

opencode upgrade コマンドがバグってるのか、最新版にアップデートしたつもりが、なぜか古いバージョンのままで更新できませんでした。仕方ないので Homebrew 経由で再インストールして最新版にしました。

[01-16 10:44:08] macbookpro test$ brew install anomalyco/tap/opencode
opencode 1.1.14 is already installed but outdated (so it will be upgraded).
==> Fetching downloads for: opencode
✔︎ Formula opencode (1.1.23)                                                                                                                             Verified     35.3MB/ 35.3MB
==> Upgrading anomalyco/tap/opencode
  1.1.14 -> 1.1.23
🍺  /usr/local/Cellar/opencode/1.1.23: 4 files, 103.7MB, built in 4 seconds
==> Running `brew cleanup opencode`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
Removing: /usr/local/Cellar/opencode/1.1.14... (4 files, 103MB)
Removing: /Users/user/Library/Caches/Homebrew/opencode--1.1.14.zip... (35.2MB)
[01-16 10:44:33] macbookpro test$ opencode --version
1.1.23

無事に 1.1.21 以上に上がったので、改めて GitHub Copilot 連携を試してみます。

最上部を見てください。左側の認可を与える先のアプリアイコンが、 OpenCode のものになっていることがわかります。以前は、このアイコンが GitHub Copilot Plugin のものになっていました。

Connection with OpenCode https://github.com/settings/connections/applications/Ov23li8tweQw6odWQebz

認可を与えたアプリ一覧画面に、しっかり「 OpenCode 」のアプリが載ってますね。念の為クライアントIDを確認してみたところ、PRで確認したものと同じ Ov23li8tweQw6odWQebz でした。

これにより、 OpenCode の GitHub Copilot 連携機能が正式にサポートされたことが確認できました。

気になったこと

OAuth アプリケーションの Permission はこれで良いのか?

OpenCode 側も、 GitHub 側もお互いに正式に連携をサポートしたことを宣言しているのでこれ以上言うことはないのですが、OAuthの仕組みに則った上で気になったことが1点ありました。

それは、 OpenCode の OAuth アプリケーションの「 Permission 」ですね。 現在は

  • Read all user profile data

となっています。 私の感覚としては、この Permission に

  • GitHub Copilot を使った Code Completion 機能

が含まれるようになったのかな?と思っていたのですが、現在の GitHub 側の OAuth の Permission にそういった権限は存在しないようで、今回もそこを拡張することまではやらなかったんだろうな、と想像しました。

このため、おそらくですが OpenCode のクライアントIDのみ、GitHub 側で GitHub Copilot の機能を利用できるように特別扱いされるような実装がなされてるのだと思います。

ただ、本来的には、この OpenCode の OAuth アプリケーションの Permission を見ただけで、ユーザーが「このアプリには、自分の GitHub Copilot 機能を使う権限があるんだな」と理解できるようになるのが理想的だと思うので、今後 GitHub 側で Copilot 用の Permission が追加されるとよりユーザーにとってわかりやすい権限体系になるなぁと思いました。

非公式な方法で連携してる他のツールは今後どうなるのか

以前の非公式な方法での GitHub Copilot 連携機能に対する Issue で OpenCode 側から

potential misconfiguration: Copilot Auth Flow · Issue #316 · anomalyco/opencode
https://github.com/anomalyco/opencode/issues/316

This has to be done this way. It is actually not originating from neovim plugin but from vscode. It is just this is the standard for all tools… they all copy from vscode.

これはこの方法でやるしかないんだ。実際には neovim プラグインから来ているわけではなく、vscode から来ているんだ。ただ、これはすべてのツールの標準で… みんな vscode からコピーしているんだ。

といった回答がありました。今回、 OpenCode が正式に GitHub Copilot 連携機能をサポートしたことで「じゃあ、正式にサポートされてないツールはどうなるの?」という疑問がより強まってきます。 また、Zed エディタも GitHub Copilot 連携機能をサポートしていますが、こちらは GiHub 提供の LSP 経由で連携していますが、こちらは正式サポート扱いなのか、そうでないのかも気になりました。

まとめ

OpenCode の GitHub Copilot 連携機能が正式にサポートされたので、改めて仕組みを確認してみました。以前の非公式な方法から、 OpenCode 独自の OAuth アプリケーションを使った正式な方法に変わっていることが確認でき、利用者としては安心して OpenCode から GitHub Copilot 連携機能を利用できるようになったと思います。

今回のように GitHub 公式でサードパーティ製ツールとの連携がサポートされていくようになって、Hack的な連携方法がなくなっていくと良いなーと願ってます。