VS Code AI extensions: how they differ
There are many extensions; they differ in three things: how they connect a model, how they build context, how they ask permission.
2 min · · Updated · setup · development · choosing a model
There are many VS Code extensions that work with language models, and people usually choose them by screenshots. It is more useful to look at three things: whether you can plug in your own model, how context is gathered, and what happens before a file is written.
Can you plug in your own model
The main practical question. Some extensions only talk to their own backend; others let you point at an arbitrary compatible address.
The second kind is preferable for two reasons: you see spend in your own history, and you do not depend on the extension's pricing. Plus the same model becomes available across all your tools at once.
| Extension | Provider type | Base URL |
|---|---|---|
| Cline | OpenAI Compatible | https://api.zukko.pro/v1 |
| Roo Code | Anthropic | https://api.zukko.pro |
| Kilo Code | OpenAI Compatible | https://api.zukko.pro/v1 |
| Continue | OpenAI Compatible | https://api.zukko.pro/v1 |
The suffix rule is worth learning once: Anthropic-compatible clients drop /v1, OpenAI-compatible ones keep it. Getting it wrong yields a 404 on every request, and the error text gives no hint about the cause.
How context is gathered
This is where extensions diverge most, and it maps directly onto your bill.
Some pass only open files and the current selection. Predictable and cheap, but such an extension cannot answer "where is authorisation handled".
Others index the project and pull files by relevance. More convenient, but context grows quickly, and with it input tokens — the dominant cost in these workloads.
A third kind behaves like an agent, opening files as the task unfolds. The most capable and the most expensive mode.
Worth checking before installing, because relearning later costs more than choosing correctly now.
What happens before a write
Extensions differ in autonomy, from showing a diff with a confirm button to editing files silently.
On an unfamiliar project it is wiser to start strict. Silent editing is convenient once you understand how the tool behaves and have tests that will catch a mistake.
Verifying the connection works
The same for all of them: ask any question and open your usage history. An event means traffic is flowing through your key. No event but an answer means the extension replied from its own backend and your settings did not take effect.
That also explains the common complaint of "zero spend although I worked all day": with some extensions, part of the proprietary features bypass your key.
About switching models
When an extension accepts an arbitrary address, the model changes in its settings while the key stays the same. A sensible habit is keeping a cheaper model on everyday work and switching to a strong one deliberately.
The current model list comes from /v1/models; prices and context come from /v1/models/info (or the Models page in the dashboard):
curl https://api.zukko.pro/v1/models
curl https://api.zukko.pro/v1/models/infozukko
Pay 25×
less
for Claude Code & ChatGPT
One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.
Related articles
- Prompt Injection: What It Is and How to Protect a Bot and an AgentHow prompt injection works through user input and third-party documents, and which measures limit the damage: data isolation, tool permissions, key limits.
- Your Own Neural Network Proxy on Node.js: Keep the API Key Off the FrontendA small Express server between your frontend and the model API: the key stays on the server, and models, request size and rate are capped.
- DeepSeek API in Python: Requests, Streaming, JSON and Error HandlingReady code for DeepSeek V4.1 Flash and V4 Pro on the OpenAI SDK: a request, streaming, JSON parsing and careful error handling.
- Prompt Engineering Examples: 12 Ready-Made Templates for WorkTwelve prompt templates for everyday tasks: what each one says, why it is built that way, and what a single API call costs.