GLM-5.3 for VS Code
Use GLM-5.3 (Zhipu / BigModel, via the Coding Plan) inside GitHub Copilot Chat. Transparent vision proxy powered by GLM-5.3-Flash, thinking mode, agent tools, function calling — zero config, BYOK.

English | 简体中文
Why this extension?
GitHub Copilot is a great coding agent — agent mode, tool calling, MCP, skills, the polished UI. But what if you want to run it on GLM-5.3 for its price-performance, its 1M-token context, or its Chinese-first quality?
VS Code 1.116+ lets you add custom models to Copilot Chat natively. But each model you add is an island: it only sees what you type. Drop a screenshot into chat and a text-only GLM-5.3 model just ignores it. There's no way for one model to borrow another model's eyes.
This extension fixes that. It plugs GLM-5.3 into Copilot's native provider API, and adds a transparent vision proxy: when you attach an image, it's quietly described by a vision-capable model and the description is fed to GLM-5.3. GLM-5.3 thinks it saw the image.
|
This extension |
Native "Add Models" |
Local proxy (LiteLLM) |
Standalone GLM plugins |
| Runs inside Copilot Chat |
✅ |
✅ |
✅ |
❌ separate UI |
| Agent mode, tools, MCP, skills |
✅ |
✅ |
✅ |
⚠️ reimplemented |
| Vision on a text-only model |
✅ proxied |
❌ |
❌ |
❌ |
| Thinking mode toggle |
✅ in picker |
❌ |
❌ |
⚠️ varies |
| One-click model family |
✅ all GLM models |
❌ add one by one |
⚠️ |
⚠️ |
| No extra process |
✅ |
✅ |
❌ |
✅ |
| BYOK, OS keychain |
✅ |
✅ |
❌ |
⚠️ |
Features
🖼️ Transparent Vision Proxy
GLM-5.3 is text-only. Drop a screenshot, a design mock, or an error dialog into chat and this extension automatically describes it via a vision model, then hands the description to GLM-5.3. Zero config — the default vision source is GLM-5.3-Flash (via your GLM key). The image description is placed at the front of your message and sent to GLM-5.3 together with your prompt, in a single turn.
Want a different vision model? Run GLM: Configure Vision Model from the Command Palette and pick from every vision-capable model on your machine — Gemini, GPT-4o, Claude, the built-in GLM-5.3-Flash, or the free GLM-4.6V-Flash. Or set glm-copilot.visionModel to auto to prefer a Copilot vision model and fall back to GLM-5.3-Flash.
The description is replayed across turns (no re-describing the same image every message), and you get a one-line notice at the top of each response telling you what happened.
🧠 Thinking Mode
Full support for GLM's reasoning_content. Use Copilot Chat's native model-picker menu to toggle thinking off (faster) or on (deep reasoning). Rendered as Copilot's native collapsible reasoning block.
🤖 Inherits Every Copilot Capability
Because this plugs into Copilot's native provider API, the full stack works for free:
- Agent mode — autonomous multi-step tasks
- Tool calling — file edits, terminal, workspace search, Git, tests
- Instructions & skills — your
.instructions.md, AGENTS.md, skills
- MCP — all your Model Context Protocol servers
🔑 BYOK, Secure by Default
Your API key, your bill. Stored in the OS keychain via VS Code SecretStorage — never in settings.json, never in your Git history.
⚡ Zero Runtime Dependencies
Pure VS Code API + Node.js built-ins. No Python, no Docker, no local proxy server.
Getting Started
Prerequisites
- VS Code 1.116 or later. (Relies on Copilot Chat APIs that may change between versions.)
- A GitHub Copilot subscription (Free / Pro / Enterprise — the free tier works).
- A GLM API key from open.bigmodel.cn. The same key works for both pay-as-you-go and the Coding Plan.
Install
This is a development build. To package and install locally:
npm install
npm run compile
npm run package # produces glm-for-vscode-0.5.0.vsix
code --install-extension glm-for-vscode-0.5.0.vsix
Usage
- Run GLM: Set API Key from the Command Palette (
Ctrl+Shift+P / Cmd+Shift+P).
- Paste your key from open.bigmodel.cn.
- The default source is Coding Plan subscription (the only pool that serves GLM-5.3). Switch to pay-as-you-go only if you don't have a Coding Plan.
- Open Copilot Chat, click the model picker, pick GLM-5.3 (or GLM-5.3 1M for the full 1M context).
- Chat away. Drop in an image and watch the vision proxy handle it.
- (Optional) Run GLM: Configure Vision Model to pick exactly which vision model describes your images.
Sources
The same GLM API key works on both official endpoints, but they bill different pools. Pick the source matching your account so calls don't bill the wrong quota:
| Source |
Endpoint |
Models |
| Coding Plan subscription (default) |
/api/coding/paas/v4 |
GLM-5.3, GLM-5.3 (1M), GLM-4.6 |
| Pay-as-you-go |
/api/paas/v4 |
GLM-4.6, GLM-4.6 Flash, GLM-4.5 Air · vision: glm-5.3-flash |
| Custom |
user baseUrl |
self-hosted / proxy |
⚠️ Coding-plan keys also authenticate against the paygo endpoint — a wrong source silently bills the wrong pool rather than erroring. This extension locks each source to its own endpoint to prevent that.
Models
| Model |
Best For |
Context |
Source |
| GLM-5.3 |
Latest flagship, long-task coding |
1M |
Coding Plan |
| GLM-4.6 |
Agentic coding (Sonnet-4 class) |
128K |
Both |
All support optional thinking mode and tool calling.
Settings
| Setting |
Default |
Description |
glm-copilot.source |
coding-plan |
Where to route calls: coding-plan, paygo, or custom. |
glm-copilot.visionEnabled |
true |
Enable the transparent vision proxy for image attachments. |
glm-copilot.visionModel |
glm-5.3-flash |
Which model describes images: a GLM vision id (glm-5.3-flash, default), auto (Copilot → GLM-5.3-Flash), or a Copilot model id (gpt-4o). |
glm-copilot.baseUrl |
(empty) |
API endpoint. Only used when source is custom. |
glm-copilot.maxTokens |
0 |
Max output tokens (0 = no limit). |
glm-copilot.modelIdOverrides |
prefilled |
API model IDs per picker model — change only for compatible third-party APIs. |
Example: use a Copilot model for vision
{
"glm-copilot.visionModel": "gpt-4o"
}
Example: let Copilot vision take over, fall back to GLM
{
"glm-copilot.visionModel": "auto"
}
How it works
This extension uses VS Code's Language Model Chat Provider API (the BYOK API). It registers GLM-5.3 as a Copilot Chat provider, then translates Copilot's standard message/tool format into GLM's OpenAI-compatible API and streams the response back.
The vision proxy is the key part native BYOK can't do. Because our provider sits between Copilot and GLM-5.3, it can intercept image attachments, route them to any vision model, and substitute the description before GLM-5.3 ever sees the request:
You drop an image into Copilot Chat
│
▼
GLM provider intercepts the image part
│
├── Current-turn image ──▶ Vision model describes it
│ ├── GLM-5.3-Flash (default) via your GLM key, OR
│ └── Copilot model (GPT-4o / Claude) via vscode.lm
│ └─▶ "[Image Description: a login form with a red error...]"
│
├── Historical image ──▶ replayed from marker (no re-describe)
│
▼
The image description is placed at the FRONT of your message,
followed by your prompt — sent to GLM-5.3 as a single user turn
│
▼
Response: "🖼️ 1 image analyzed via glm-5.3-flash" + GLM-5.3's answer
+ hidden replay marker (for next turn)
Two things worth noting: the description leads the message (so GLM-5.3 reads "what was shown" before your question), and it's a single user message — the image description and your prompt are never split across turns. The replay marker means multi-turn conversations don't re-describe the same image every message — a real cost saver.
License
MIT