opencode-copilot-enhanced
v0.1.8
Published
OpenCode plugin for enhanced GitHub Copilot support — dynamic model sync, proper token exchange, and configurable OAuth
Maintainers
Readme
opencode-copilot-enhanced
OpenCode plugin for enhanced GitHub Copilot support — dynamic model sync, proper token exchange, and configurable OAuth.
What it does
- Dynamic model sync — fetches the live model list from Copilot's
/modelsendpoint so new models appear automatically - Proper token exchange — exchanges OAuth tokens for Copilot session tokens via
/copilot_internal/v2/tokenwith caching and refresh-before-expiry (matches VS Code behavior) - Copilot-specific headers — adds
Copilot-Integration-Id,Editor-Version,Editor-Plugin-Version,X-GitHub-Api-Versionto all requests - Configurable OAuth — override the
client_idand OAuthscopevia config file - Config sync — writes the live Copilot model list into
~/.config/opencode/opencode.jsonso opencode loads custom/internal models automatically
Install
opencode plugin opencode-copilot-enhanced -gThis installs the package globally and updates your opencode.json automatically.
Or manually:
npm install -g opencode-copilot-enhancedThen add it to your opencode.json:
{
"plugin": ["opencode-copilot-enhanced"]
}Configuration
Create ~/.config/opencode/copilot.json (optional — sensible defaults are used):
{
"clientId": "01ab8ac9400c4e429b23",
"scope": "read:user user:email repo workflow"
}| Key | Default | Description |
| ---------- | ------------------------------------ | ----------------------------------------------- |
| clientId | 01ab8ac9400c4e429b23 | OAuth application client ID for the device flow |
| scope | read:user user:email repo workflow | OAuth scopes requested during login |
How it works
This plugin registers an auth hook for the github-copilot provider. When loaded alongside the built-in Copilot auth plugin, the deep-merge behavior means this plugin's fetch wrapper and model list take precedence.
On each provider load:
- Exchanges the stored OAuth token for a short-lived Copilot session token
- Fetches the live model catalog from the Copilot API
- Merges live model capabilities (context windows, reasoning efforts, modalities) with the static
models.devdata - Writes the merged model list to
~/.config/opencode/opencode.jsonunderprovider.github-copilot.models - Returns a custom
fetchthat injects the session token and required Copilot headers
Note on duplicate login option
Because the built-in Copilot auth plugin always loads, you will see two "Login with GitHub Copilot" options in the provider list. The one labeled "Login with GitHub Copilot (Enhanced)" uses your configured clientId and scope. Both work — pick whichever you prefer.
Development
bun install
bun test
bun run buildReleasing
Releases are automated via GitHub Actions. To cut a new release:
npm version patch # or minor / major
git push --follow-tagsThe publish workflow builds, tests, publishes to npm with provenance, and creates a GitHub Release with auto-generated notes.
License
MIT
