Introduction¶
The plugin ecosystem of DeepSeek Harness revolves around the concept of “everything is a plugin”: model providers, login flows, and settings pages can all be supplemented by plugins. The community directory is an independent site with no official affiliation to DeepSeek or Hyperbolic, and should not be understood as an official app store.
Harness itself provides the github-copilot provider for accessing models within the GitHub Copilot plan; however, it is not responsible for completing the login. lujianjun19/dsh-llm-github-copilot fills this gap: it executes the GitHub Copilot login and hands the credentials over to Harness’s existing github-copilot provider.
What is this¶
lujianjun19/dsh-llm-github-copilot is a DeepSeek Harness plugin designed to provide GitHub Copilot login capabilities to Harness. It is maintained by lujianjun19 and is licensed under the MIT License.
It primarily addresses a specific gap: Harness can consume GitHub Copilot models, but it needs a place to complete the login and save credentials. Once logged in, the plugin hands the credentials to Harness’s existing @deepseek-ai/dsh-llm-pi-ai route. Model requests, endpoints, images, streaming output, and other behaviors are handled by the Harness route and are not reimplemented within the plugin.
Core Capabilities¶
Below are the verified main capabilities.
- GitHub Copilot device flow login: Login can be done via
/copilot-loginor the Harness settings page; credentials are saved automatically. - Automatic refresh: The refresh of short-lived Copilot tokens is handled by Harness’s downstream process.
- Compatible with existing tokens: Existing
GITHUB_COPILOT_OAUTH_TOKENcan be used at startup to avoid repeated login. - Settings page: There is a dedicated GitHub Copilot section in the Harness Web settings for login, status checking, and logout.
- Slash commands: Provides
/copilot-login,/copilot-status, and/copilot-logout. - Use models within the Copilot plan: Can access models like the GPT-5 family, Claude, Gemini, etc., subject to the currently available models in the GitHub Copilot plan.
Installation & Enablement¶
Prerequisites¶
Before use, the following conditions must be met:
- DeepSeek Harness
0.1.2-alpha.1or higher, including the bundled@deepseek-ai/dsh-llm-pi-airoute. - A GitHub account with a GitHub Copilot subscription.
- Node.js ≥ 24.
Installation¶
The following command is used to install the plugin to the web profile:
dsh plugin --profile web add @lujianjun19/dsh-llm-github-copilot
If using pnpm 10 or higher and the installation process prompts for build approval, add the following to the profile’s pnpm-workspace.yaml as instructed:
allowBuilds:
dsh-llm-github-copilot: true
Then re-execute the installation command.
Register Plugin¶
After installation, register the plugin in the profile’s cordis.patch.yml:
- insert:
- id: llm-github-copilot
name: '@lujianjun19/dsh-llm-github-copilot'
Start¶
After registration, restart DSH:
dsh web
Pre-installation Checks¶
The plugin runs under the permissions of the current dsh process. Before installing, it is recommended to review the source code, confirm the MIT license, and ensure you are willing to let this plugin access the credentials and configuration of the current profile.
Source code directory page:
https://www.skillhub.cn/plugins/lujianjun19/dsh-llm-github-copilot
GitHub repository:
https://github.com/lujianjun19/dsh-llm-github-copilot
Login & Status¶
Run in the Harness chat interface:
/copilot-login
Follow the prompts: open the verification URL in a browser, enter the displayed device code, and complete the GitHub App authorization. After authorization is complete, the token is saved automatically.
To confirm the login status, you can run:
/copilot-status
To logout, run:
/copilot-logout
The Harness settings page also provides a GitHub Copilot section where you can login, check status, and logout.
Using Existing Tokens¶
If you already have a GitHub OAuth token, you can also provide it via an environment variable:
export GITHUB_COPILOT_OAUTH_TOKEN=<your-github-oauth-token>
The plugin supports the following token types:
| Prefix | Source |
|---|---|
gho_ |
OAuth token, e.g., from gh auth login |
github_pat_ |
Fine-grained PAT, requires Copilot permissions |
ghu_ |
GitHub App user token, e.g., from VS Code client |
Classic ghp_ PATs are not accepted by the Copilot API.
Select Model¶
Login is only responsible for publishing credentials, not for selecting the model. After login is complete, you need to select the model in Harness settings:
- Open Settings → Models.
- Add the
github-copilotprovider. - Select the desired model under the provider.
The specific available models depend on the current GitHub Copilot plan.
Update Plugin¶
DSH profiles use pnpm internally, and the lockfile locks the exact version of installed packages. Re-running dsh plugin add may not fetch the new version.
When updating, you can execute:
npm install --prefix ~/.dsh/profiles/web @lujianjun19/dsh-llm-github-copilot@latest
Or use pnpm:
pnpm add --dir ~/.dsh/profiles/web @lujianjun19/dsh-llm-github-copilot@latest --no-frozen-lockfile
Then restart:
dsh web
To confirm the version, open Settings → GitHub Copilot; the version information will be displayed at the bottom of the panel.
Configuration¶
The plugin does not require configuration by default. The only configurable item is oauthTokenEnv, used to specify the environment variable name or credential reference where the GitHub OAuth token is saved:
- id: llm-github-copilot
config:
oauthTokenEnv: GITHUB_COPILOT_OAUTH_TOKEN
Models, endpoints, and request behaviors are not configured in this plugin but in the llm-pi-ai settings section of the Harness route.
Upgrade from 0.4.x¶
Versions 0.4.5 and earlier registered their own github-copilot-official provider. This provider no longer exists.
If github-copilot-official is still used in existing configurations or sessions, switch to the github-copilot provider. Model IDs remain the same. Existing credentials will be adopted automatically, and no re-login is required.
Common Issues¶
Below are several points that have been addressed.
Model selector does not show GitHub Copilot group¶
The plugin might still be running in an old process that hasn’t loaded the new package. Restart:
dsh web
Saved tokens will be retained, and no re-login is needed.
Models exist but Claude is missing¶
The exit IP might be restricted. You can set a proxy and restart:
export HTTPS_PROXY=<proxy-url>
dsh web
/copilot-login timeout or network error¶
This usually happens during device code polling. Simply run the login command again to get a new code; the old code will automatically become invalid:
/copilot-login
Prompt configurable provider "github-copilot" is already declared¶
This plugin does not register its own provider; it simply publishes credentials to Harness’s github-copilot provider. If there is no model, first confirm:
/copilot-statusshows that you are logged in.github-copilotprovider has been added in Settings → Models.- Used in
cordis.patch.yml:
- id: llm-github-copilot
name: '@lujianjun19/dsh-llm-github-copilot'
Token Expiration¶
No manual handling is required. The plugin saves a long-lived GitHub OAuth token, and Harness’s downstream process will refresh it before the short-lived Copilot token expires. Only after an explicit logout or token revocation will it be necessary to run /copilot-login again.
Conclusion¶
The scope of lujianjun19/dsh-llm-github-copilot is relatively narrow: it does not reimplement model requests; it only handles GitHub Copilot login and hands credentials to Harness’s existing github-copilot provider. For scenarios where you are already using DeepSeek Harness and want to expand model selection via models available within the GitHub Copilot plan, this plugin can integrate login, status checking, token usage, and settings page operations into a single workflow.