GitHub Copilot plugin for LLM CLI tool
Project description
llm-github-copilot
A plugin for LLM adding support for GitHub Copilot.
Installation
You can install this plugin using the LLM command-line tool:
llm install llm-github-copilot
Authentication
This plugin uses GitHub's device code authentication flow to obtain the initial access_token. This access_token is what is used to initiate and obtain an api_key that is used for communication with the GitHub Copilot API. This api_key is automatically obtained and refreshed as needed using the access_token. The access_token is obtained from the LLM key storage or via the environment variable GH_COPILOT_TOKEN or GITHUB_COPILOT_TOKEN
Free plan includes up to 2,000 completions and 50 chat requests per month.
Auth Command Help
$ llm github_copilot auth --help
Usage: llm github_copilot auth [OPTIONS] COMMAND [ARGS]...
Manage GitHub Copilot authentication.
Options:
--help Show this message and exit.
Commands:
login Authenticate with GitHub Copilot to generate a new access token.
logout Remove GitHub Copilot authentication credentials.
refresh Force refresh the GitHub Copilot API key.
status Check GitHub Copilot authentication status.
Authentication Login
When you run the login command, the plugin will:
- Start the GitHub device code authentication flow
- Provide you with a code and URL to visit
- Wait for you to authenticate on GitHub's website
- Generate and store an access token
- Fetch an API key using the access token
Example login output:
Usage: llm github_copilot auth login [OPTIONS]
Authenticate with GitHub Copilot to generate a new access token.
Options:
-f, --force Force login even if already authenticated
--show-only Perform login but only display tokens, do not save them
--help Show this message and exit.
$ llm github_copilot auth login
Starting GitHub Copilot authentication to generate a new access token...
Please visit https://github.com/login/device and enter code XXXX-XXXX to authenticate GitHub Copilot.
Waiting for authorization... (attempt 1/12)
Authentication successful!
You can force a new login and obtain a new access_token even if already authenticated:
llm github_copilot auth login --force
You can also perform the login process and display the obtained access token and API key without saving them to the LLM keystore or the API key file. This is useful if you want to manually manage these tokens or use them in environment variables:
llm github_copilot auth login --show-only
This will output something like:
GitHub Copilot: ✓ Authenticated
User: your_github_username
AccessToken: Valid
AccessToken: ghu_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
API Key: Valid, expires YYYY-MM-DD HH:MM:SS
API key: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
You can set GH_COPILOT_TOKEN or GITHUB_COPILOT_TOKEN to the token value above.
Note: These tokens have NOT been saved to the LLM keystore or API key file.
Authentication Status
### Authentication Status
You can check your authentication status with:
$ llm github_copilot auth status GitHub Copilot: ✓ Authenticated API Key: Valid, expires 2025-07-15 10:30:00 AccessToken: Valid, via keystore github_copilot_access_token
For more detailed information, use the verbose flag:
$ llm github_copilot auth status --verbose GitHub Copilot: ✓ Authenticated User: testuser AccessToken: Valid, via keystore github_copilot_access_token AccessToken: ghu_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx API Key: Valid, expires 2025-07-15 10:30:00 API key: abcdef1234567890abcdef1234567890
## Usage
Once installed, you can use GitHub Copilot models with the `llm` command:
```bash
# Chat with GitHub Copilot
llm -m github_copilot "Write a Python function that calculates the Fibonacci sequence."
# Specify options like length
llm -m github_copilot "Tell me a joke" -o max_tokens 100
Options
The GitHub Copilot plugin supports the following options:
max_tokens: Maximum number of tokens to generate (default: 1024)temperature: Controls randomness in the output (default: 0.7)
Development
To develop this plugin:
# Clone the repository
git clone https://github.com/yourusername/llm-github-copilot.git
cd llm-github-copilot
# Install in development mode
llm install -e .
Testing
To run the tests:
# Install test dependencies
pip install -e ".[test]"
# Run tests
pytest
If you want to record new VCR cassettes for tests, set your API key:
export PYTEST_GITHUB_COPILOT_TOKEN=your_token_here
pytest --vcr-record=new_episodes
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llm_github_copilot-0.2.dev0.tar.gz.
File metadata
- Download URL: llm_github_copilot-0.2.dev0.tar.gz
- Upload date:
- Size: 23.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
634b51a9de25cdc14b685db603085db7df44745f8fc99464e374966ce80deede
|
|
| MD5 |
03d83ac32f83181857493f12140d54b3
|
|
| BLAKE2b-256 |
09feca5c42e485d5d0aeff70d7b66781ce392e31c8a4e6601cb56945c10199c6
|
Provenance
The following attestation bundles were made for llm_github_copilot-0.2.dev0.tar.gz:
Publisher:
publish.yml on jmdaly/llm-github-copilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_github_copilot-0.2.dev0.tar.gz -
Subject digest:
634b51a9de25cdc14b685db603085db7df44745f8fc99464e374966ce80deede - Sigstore transparency entry: 230427209
- Sigstore integration time:
-
Permalink:
jmdaly/llm-github-copilot@812ee1b8ed9475e9404223e501e10027a97c72cd -
Branch / Tag:
refs/tags/0.2.0 - Owner: https://github.com/jmdaly
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@812ee1b8ed9475e9404223e501e10027a97c72cd -
Trigger Event:
release
-
Statement type:
File details
Details for the file llm_github_copilot-0.2.dev0-py3-none-any.whl.
File metadata
- Download URL: llm_github_copilot-0.2.dev0-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f85838fdbb7e9228e677a5b9c5f2096fd628af0eef2d75f0c30e45bbc238305
|
|
| MD5 |
e8318ffc47b04787e22b5b41f151a19d
|
|
| BLAKE2b-256 |
41e9dd8b619cda0b85c64f150596bfa85adfefeb70b07d4e8157ca8bce0a819d
|
Provenance
The following attestation bundles were made for llm_github_copilot-0.2.dev0-py3-none-any.whl:
Publisher:
publish.yml on jmdaly/llm-github-copilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_github_copilot-0.2.dev0-py3-none-any.whl -
Subject digest:
7f85838fdbb7e9228e677a5b9c5f2096fd628af0eef2d75f0c30e45bbc238305 - Sigstore transparency entry: 230427210
- Sigstore integration time:
-
Permalink:
jmdaly/llm-github-copilot@812ee1b8ed9475e9404223e501e10027a97c72cd -
Branch / Tag:
refs/tags/0.2.0 - Owner: https://github.com/jmdaly
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@812ee1b8ed9475e9404223e501e10027a97c72cd -
Trigger Event:
release
-
Statement type: