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.

you attach an image > fix the layout bug [Image #1] can the model see images? │ │ yes │ │ no ▼ ▼ it reads it calls the vision tool it directly and gets a description back │ │ └──────┬───────┘ the model answers your prompt

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]:

~/checkout
read the error in this screenshot [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:

~/checkout
read the error in this screenshot [Image #1]
TypeError: cannot read property 'id' of undefined
at src/checkout/cart.ts:42 — line 41 is highlighted in red.

If it can't, it calls the vision tool and reads the image through that:

~/checkout
read the error in this screenshot [Image #1]
VISIONread the error text, file, and line number
done
TypeError: cannot read property 'id' of undefined
at src/checkout/cart.ts:42 — line 41 is highlighted in red.

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:

~/checkout
Image vision
Allow Command Code to read attached images with a vision model?
Enable Vision (recommended)
Not now

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.

SettingWhere
Vision modela cheap, vision-capable model by default
Enable / disable/configImage vision
Change the vision model/configFeature modelsImage vision
Billingthe side-call bills as normal usage, surfaced to you

The Image vision row has three states:

StateWhat happens
Ask on first use (default)you're asked the first time a model reads an image
Enabledimages are read whenever the model needs them
Disabledimages 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.

Note

Only images from your most recent message are readable. Images from earlier turns can't be reached — re-attach the one you need, or point the model at its file path again.

  • 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 VISION row shows why.
  • Models that see natively skip all of this — they get the image directly.