Vision
A model that can't see images can't read your screenshots. You paste the stack trace, the layout that's 4px off, the red error dialog — and the model answers around a hole it doesn't know is there.
In Command Code, every model has vision.
Pick whatever model you want to code with. If it reads images, it reads them itself. If it doesn't, it calls the VISION tool — a single side-call to a cheap, vision-capable model that transcribes the image to text — and carries straight on with your answer.
You don't switch models. Your session doesn't switch models. There's no hold on, let me move this over to something that can see — you attach the screenshot and keep going, on the model you chose, in the flow you were already in.
Reading an image is the model's decision, made mid-turn, like reading a file. Nothing is sent until it asks.
The call is independent of your main session model, so it never changes which model answers your prompt. It's bounded by a timeout and fails open: if the vision model is unavailable, the turn continues and the VISION row shows the failure reason, so it stays diagnosable.
Images also work by path. Reading an image file — point the model at designs/checkout.png — makes that image inspectable with the VISION tool, same as one you attached.
1. Attach an image. Paste it, drag it into the terminal, or name a file path. It sits inline in your prompt as [Image #1]:
2. The model reads it. What happens next depends on the model you're on.
If your model can see images, it just reads it:
If it can't, it calls the vision tool and reads the image through that:
Either way you get the same answer, and your session model doesn't change. You stay on the model you picked.
3. The first time, allow it. Before the first read on a model that can't see images, Command Code asks:
Answering enables the feature globally, not just for this session. Change it anytime in /config.
Vision is opt-in. No image is read until you allow it. You can enable or disable the tool, and pick the vision-capable model that does the reading, from the /config menu.
| Setting | Where |
|---|---|
| Vision model | a cheap, vision-capable model by default |
| Enable / disable | /config → Image vision |
| Change the vision model | /config → Feature models → Image vision |
| Billing | the side-call bills as normal usage, surfaced to you |
The Image vision row has three states:
| State | What happens |
|---|---|
| Ask on first use (default) | you're asked the first time a model reads an image |
| Enabled | images are read whenever the model needs them |
| Disabled | images are never read |
Resetting the row restores Ask on first use, so the prompt returns next time.
With vision disabled, attaching an image to a model that can't see it tells you so, naming your current model:
<model> can't read images. Turn on image vision in
/config, or switch to a vision model with/model.
- Ask for what's in the image. The description comes from the image alone, so "what's the exact error text" works and "does this match what we changed" doesn't.
- If a read fails, the turn keeps going and the
VISIONrow shows why. - Models that see natively skip all of this — they get the image directly.