feat: deepseek-flash everywhere, and web_search is gone - #27
Merged
Merged
Conversation
DeepSeek-V4.1-Flash (`deepseek-flash`) is now the default and the recommended pick on every surface: the CLI docs, the site, and the free tier. `deepseek-v4-pro` stays callable and correctly priced, but nothing presents it as the default or the stronger pick any more. Where the copy says Flash is ahead, it cites DeepSeek's own 2026-09-10 changelog and release note. Gateway (freeseek): - DSGATE_MODEL defaults to deepseek-flash. resolve() now matches the Anthropic API guide: claude-opus* goes to pro; claude-sonnet*, claude-haiku* and unknown names go to deepseek-flash. The two retired flash names are the same model. checkModel resolves both sides, so a pre-rename DSGATE_MODEL does not start refusing the CLI's default. - server.New serves the model under its canonical name. With DSGATE_MODEL=deepseek-v4-flash, /models had been filtering upstream's new-only list down to nothing. That is live on freeseek today. - web_search is refused with the reason. DeepSeek removed it from the Responses API on 2026-09-10; the guide now lists it as ignored, and a 2026-09-18 probe billed 21 input tokens where a search used to bill ~40K. DailySearches, searchInputAllowance and the Search admission field are deleted. - Pages (index, terms, economics) name deepseek-flash. Economics now quotes today's card and keeps the August flat card and the V4 cost-per-task figures as dated history. - DESIGN/README record that OpenCode Zen's free lane answers "Model is unavailable" as of 2026-09-18. CLI: `respond --web-search` is hidden and exits 1 with the reason. It sends nothing. The free-tier search ration display is gone. Pricing: V41At moves from the inferred 11:00 UTC to 04:00 UTC on 2026-09-10, the instant DeepSeek's release note publishes. This covers the CLI and the gateway, plus the tests at the new peak/card boundary. Tripwires, each mutation-checked: - internal/cli/claims_test.go: the docs' "(default)" model must be deepseek.ModelFlash, and no doc may offer `respond --web-search`. - gateway/internal/server/claims_test.go: the DSGATE_MODEL default must be a current name, the pages must name it, and no page may promise web search. - site/build.py check_model_claims: a retired flash name without its successor, or live web-search copy, fails the build unless the section is marked historical. Also: the playground's search toggle is removed. A pre-existing flex bug that split the playground's "when it runs out" row is fixed. A news entry for 2026-09-18 is added. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Sep 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows #26. That PR moved the CLI's default to
deepseek-flash. This one moves everything else: the docs, the site, and the free tier. It also acts on the two things #26 found and left open.Web search: removed upstream, so we refuse it
DeepSeek removed
web_searchfrom the Responses API with V4.1 Flash on 2026-09-10. Its Responses API guide now listsweb_searchamong the built-in tools that are ignored, and theresponse.web_search_call.*events are gone. A probe on 2026-09-18 matched: the tool was accepted, but no search ran, and the request billed 21 input tokens where a search used to bill about 40K.respond --web-searchis hidden and exits 1 with that reason. It sends nothing.DailySearches,searchInputAllowanceand the search admission path are deleted. They priced searches that could no longer happen.Models
deepseek-flashis the default and the recommended pick. Pro stays callable and correctly priced. Nothing ranks it above flash any more. The claim that flash is ahead cites DeepSeek's changelog and release note. The bench page compares only benchmarks that carry the same name on both DeepSeek charts, and it shows HLE-no-tools, where flash is behind.DSGATE_MODELdefaults todeepseek-flash.resolve()follows the Anthropic API guide exactly:claude-opus*goes to pro, and every other name goes to flash.DSGATE_MODELfrom before the rename is served under the canonical name./modelsreturns"data": []today. It is configured asdeepseek-v4-flash, and upstream lists onlydeepseek-flash./economicsand the V4 launch table are kept and labelled. They are not relabelled as V4.1.Pricing instant
V41Atmoves from the inferred 11:00 UTC to 04:00 UTC on 2026-09-10, the instant DeepSeek's release note gives. The change is in the CLI and gateway gates, the tests (04:00 is also the end of a peak window) and the copy.Tripwires
Each tripwire below was broken on purpose, went red, and was restored to green.
internal/cli/claims_test.go: every "(default)" model in README, AGENTS, SKILL and llms.txt must equaldeepseek.ModelFlash, and no doc may offerrespond --web-search.gateway/internal/server/claims_test.go: theDSGATE_MODELdefault must be a current name, the index, terms and economics pages must name it, and no page may promise web search.site/build.pycheck_model_claims: a section fails if it names a retired flash name withoutdeepseek-flash, or has live web-search copy, unless it is marked<!-- claim:historical -->.Verified
make checkis green: it builds, runs the tests, price-check, the gateway with-race, and site-check.go test -race ./...passes.make cover-gatereports 72.9%.Found, not done
OpenCode Zen still lists
deepseek-v4-flash-free, but answers every request withModel is unavailable. Every free-tier chat therefore pays one refused round trip, and its prompt still reaches Zen. The gateway README and DESIGN now say to unsetOPENCODE_API_KEYuntil Zen serves a free V4.1 model. Changing that on the box is an operator decision.🤖 Generated with Claude Code