Skip to main content

GitHub Copilot plugin for LLM CLI tool

Project description

PyPI Changelog Tests

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:

  1. Start the GitHub device code authentication flow
  2. Provide you with a code and URL to visit
  3. Wait for you to authenticate on GitHub's website
  4. Generate and store an access token
  5. Fetch an API key using the access token

Example login output:

$ llm github_copilot auth login --help
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

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

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:

# Chat with GitHub Copilot
llm -m github_copilot/model-name "Write a Python function that calculates the Fibonacci sequence."

# Specify options like length
llm -m github_copilot/model-name "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

You can also run the tests in a containerized environment to avoid contamination from the environment (e.g. auth keys/files):

docker build -t llm-github-copilot-test .
docker run -it llm-github-copilot-test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_github_copilot-0.3.1.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_github_copilot-0.3.1-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file llm_github_copilot-0.3.1.tar.gz.

File metadata

  • Download URL: llm_github_copilot-0.3.1.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for llm_github_copilot-0.3.1.tar.gz
Algorithm Hash digest
SHA256 369974427ca535125c74ed42c51ab2c7ae06f544b461bf111ec53fd5d4ba5717
MD5 7255934e90d8e9936c314be070d8b01b
BLAKE2b-256 0351c51ba3b807dec05450b73dfd7a253dc7387a579eecaca2c84e1fce1139e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_github_copilot-0.3.1.tar.gz:

Publisher: publish.yml on jmdaly/llm-github-copilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_github_copilot-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for llm_github_copilot-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 963292916debb414827ac3645f4287d9579abcf72959e82186dd9ac2f460855b
MD5 b4cfbab3e6ca26487d79b9721c554bd1
BLAKE2b-256 50b8058ae98d8096f46e31524036979b90e1a6b2effa1c44bbbb58409a16aaf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_github_copilot-0.3.1-py3-none-any.whl:

Publisher: publish.yml on jmdaly/llm-github-copilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page