v1.4.0 — fusion models
Fusion models — give a text-only model vision
Several strong reasoning models cannot see images at all. deepseek-v4-pro rejects an image content block outright (400 unknown variant \image_url`), so pasting a screenshot, @-mentioning one, or letting Read` return one ended the turn.
A fusion model pairs that base with a second, vision-capable model: every image is described by the vision model first, and the base model reads the description.
/fusion create deepseek-v4-flash-luna deepseek:deepseek-v4-flash openai:gpt-5.6-luna
/model deepseek-v4-flash-luna
It then behaves like a normal model — in the /model picker, as --model <name>, in -p, and across restarts.
Ported from claude-code-router's Fusion Model concept, with one deliberate difference: CCR is a proxy, so it can only offer vision as a tool the model may choose to call — which cannot help a pasted image, already on the wire before the model gets a turn. ClawCodex owns the agent loop, so it substitutes images in place, covering paste, @file.png, Read, and Bash image output at once.
Verified end to end on Terminal-Bench 2.1's code-from-image — transcribe handwritten pseudocode from a PNG and reproduce its output — with deepseek-v4-flash + openai:gpt-5.6-luna (#787). The base model alone returns a 400 on the same image, so the pass is attributable to the fusion path rather than the base coping. That is one task, not a benchmark sweep.
Also in this release
- GPT-5.6 Sol / Terra / Luna, and four more OpenAI-compatible providers — groq, cerebras, baseten, xai — taking the registry to 30 (#773, #784)
/permissionsreplaces/modewith a three-level picker and Full Access by default (#768)AskUserQuestionrenders a real picker instead of returning JSON to the model (#774)- The OpenAI provider picks its wire protocol from the model, not the auth mode — what makes
gpt-5.6-lunausable on an API key at all (#783) - Cached prompt tokens bill at the cache rate, not the full input rate, and OpenRouter's streamed reasoning is no longer discarded (#785, #786)
- Headless runs stop reporting a cut-short run as a success (#777–#782)
Full notes: CHANGELOG.md