copilot-more
maximizes the value of your GitHub Copilot subscription by exposing models like gpt-4o and Claude-3.5-Sonnet for use in agentic coding tools such as Cline, or any tool that supports bring-your-own-model setups. Unlike costly pay-as-you-go APIs, this approach lets you leverage these powerful models affordably. (Yes, $10 per month maximum.)
The exposed models aren't limited to coding tasks—you can connect any AI client and customize parameters like temperature, context window length, and more.
Get the refresh token
A refresh token is used to get the access token. This token should never be shared with anyone :). You can get the refresh token by following the steps below:
device_code
and user_code
.:# 01ab8ac9400c4e429b23 is the client_id for the VS Code
curl https://github.com/login/device/code -X POST -d 'client_id=01ab8ac9400c4e429b23&scope=user:email'
Open https://github.com/login/device/ and enter the user_code
.
Replace YOUR_DEVICE_CODE
with the device_code
obtained earlier and run:
curl https://github.com/login/oauth/access_token -X POST -d 'client_id=01ab8ac9400c4e429b23&scope=user:email&device_code=YOUR_DEVICE_CODE&grant_type=urn:ietf:params:oauth:grant-type:device_code'
access_token
starting with gho_
.Install and run copilot_more
git clone https://github.com/jjleng/copilot-more.git
cd copilot-more
# install dependencies
poetry install
# run the server. Replace gho_xxxxx with the refresh token you got in the previous step. Note, you can use any port number you want.
REFRESH_TOKEN=gho_xxxxx poetry run uvicorn copilot_more.server:app --port 15432
Now you can connect Cline or any other AI client to http://localhost:15432
and start coding with the power of GPT-4o and Claude-3.5-Sonnet without worrying about the cost. Note, the copilot-more manages the access token, you can use whatever string as API keys if Cline or the AI tools ask for one.
The GH Copilot models sit behind an API server that is not fully compatible with the OpenAI API. You cannot pass in a message like this:
{
"role": "user",
"content": [
{
"type": "text",
"text": "<task>\nreview the code\n</task>"
},
{
"type": "text",
"text": "<task>\nreview the code carefully\n</task>"
}
]
}
copilot-more takes care of this limitation by converting the message to a format that the GH Copilot API understands. However, without the type
, we cannot leverage the models' vision capabilities, so that you cannot do screenshot analysis.