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.

ExtensionProvider typeBase URL
ClineOpenAI Compatiblehttps://api.zukko.pro/v1
Roo CodeAnthropichttps://api.zukko.pro
Kilo CodeOpenAI Compatiblehttps://api.zukko.pro/v1
ContinueOpenAI Compatiblehttps://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):

bash
curl https://api.zukko.pro/v1/models
curl https://api.zukko.pro/v1/models/info

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

VS Code AI extensions: Cline, Roo Code, Continue · Zukko