Connect GitHub Copilot to DIAL
Introduction
From this tutorial, you will learn how to add your DIAL deployments to the GitHub Copilot model picker in VS Code, then chat with one of them. Turns you send through the picker run on DIAL, with DIAL auth, roles, quotas, and cost tracking applied. By the end, you pick a DIAL model in Copilot Chat and get a reply streamed back from your DIAL deployment.
Prerequisites
- A DIAL host and API key. Refer to Prerequisites.
- VS Code 1.110 or newer.
- The GitHub Copilot extension, installed and signed in.
Note: The DIAL Chat Model Provider used below is a community extension, not published by GitHub, Microsoft, or EPAM. Review its source and install it at your own discretion.
Step 1: Install the DIAL extension
Download the DIAL Chat Model Provider .vsix from either source:
In VS Code, open the Command Palette (Ctrl+Shift+P / Cmd+Shift+P), run Extensions: Install from VSIX…, and select the file you downloaded. When prompted, reload VS Code. DIAL Chat Model Provider now appears in the Extensions view, and new DIAL: commands are available in the Command Palette.
Step 2: Point at DIAL and sign in
Open the Command Palette and run DIAL: Open Settings. Set:
| Setting | Value |
|---|---|
dial.serverUrl | https://<YOUR_DIAL_HOST> |
dial.authMethod | openid or apikey |
Then run DIAL: Login:
openid— VS Code opens your browser, you sign in, and the tokens are stored in your OS keychain.apikey— runDIAL: Set API Keyfirst, or paste the key when prompted. The key is sent as DIAL'sApi-Keyheader on every request.
Step 3: Pick a DIAL model in Copilot
Open Copilot Chat, open the model picker, and choose a deployment listed under DIAL. The deployments your DIAL role can access appear automatically, and vision-capable models are marked.
Send a message — for example, "What model are you?" You get a reply streamed back from your DIAL deployment.
Additional Information
- Only turns that go through the model picker (and other
vscode.lm.*clients) reach DIAL. Inline ghost-text completions keep using GitHub's backend. - The extension uses DIAL's Chat Completions surface. Deployments exposed only over the Responses API are not reachable this way.
- A deployment works correctly through the extension only when its DIAL model configuration explicitly declares token limits and a tokenizer. Deployments missing either may fail or misbehave in the picker.
- Copilot's prompt-cache markers (
cache_control) are not forwarded to DIAL, so Bedrock-style prompt caching is not activated from Copilot turns. - Auto-compaction does not work with this setup. When a conversation grows past the model's context window, Copilot will not summarize it down automatically — start a new chat instead.
- For
openid, your DIAL admins must allow the extension's OIDC client registration and its redirect URIhttp://127.0.0.1:47821/oauth-callback.
- Refer to Connect OpenCode to DIAL for a terminal agent that also uses Chat Completions.
- Refer to the Agentic Tools overview for shared prerequisites and the other tools.
- Refer to DIAL Chat Model Provider on Open VSX for the extension's current feature list and settings reference.