Skip to content

fix(provider): hide Zen free-tier models, deprecate freeOnly, surface 403 hint in chat - #266

Merged
ltmoerdani merged 3 commits into
mainfrom
fix/zen-free-tier-policy
Oct 20, 2026
Merged

ltmoerdani merged 3 commits into
mainfrom
fix/zen-free-tier-policy

Conversation

@ltmoerdani

Copy link
Copy Markdown
Owner

Summary

Follow-up to the free-tier policy handled in #235/#240 (docs/issues/106). A Marketplace review surfaced that the 0.7.6 fix only replaced the error text — the Zen picker (default freeOnly: true) kept steering users into models upstream now 403s, and chat still rendered raw gateway JSON.

Verified live (2026-10-20): all 10 free Zen models → 403 FreeTierError; paid Zen → 401 AuthError (not gated); Go free models → credential check only. The gate is Zen-only — Go free models are unlimited for subscribers and third-party clients are explicitly permitted, so the filter is vendor-scoped.

Changes

  • src/config.ts — new isZenFreeTierModel() with a CONTRACT comment (vendor-scoped, Go exceptions listed, removable if upstream reopens)
  • src/provider/definitions.ts — Zen filterModel excludes free-tier models unconditionally (live/cached/bundled paths); unused imports dropped
  • src/errors.ts — free-tier / Router.Unavailable hint now replaces the raw detail in error.message too (VS Code chat renders message, not userMessage); raw body still logged in the output channel
  • package.json — freeOnly deprecated (kept registered, ignored); free-models keyword and "free Claude Opus" removed from the description; stale -free model examples replaced
  • README.md — all free-Zen claims removed (quick start, feature table, comparison, FAQ); dated policy notice section linking pinned announcement 📌 [ANNOUNCEMENT] OpenCode free-tier Zen models no longer work from VS Code (upstream policy, since Sep 17, 2026) — not a bug in this extension #265
  • Tests — isZenFreeTierModel classification + chat-surface hint assertions
  • Docs — docs/issues/112-20261020-zen-free-tier-policy-followup.md, addendum on doc 106, CHANGELOG [Unreleased]

Verification

  • npm run lint — all 7 checks pass (editorconfig, eslint, markdown, prettier, shellcheck, typecheck, unit tests)
  • Live gateway probes re-run against both catalogs

Related: pinned announcement #265, #258 (closed as duplicate)

… 403 hint in chat

OpenCode gates free-tier Zen models to its own clients since Sep 17 2026
(upstream anomalyco/opencode#49580; issues #235/#240). Verified live: all
10 free Zen models 403 with FreeTierError, paid Zen models 401 (not gated),
Go free models only hit the credential check (unlimited for subscribers,
third-party clients explicitly permitted).

- config: isZenFreeTierModel() with vendor-scoped contract (Zen only)
- definitions: Zen filterModel excludes free-tier models unconditionally;
  freeOnly setting ignored (deprecated, kept registered)
- errors: free-tier / Router.Unavailable hint now replaces raw gateway
  detail in error.message too - chat renders message, not userMessage
- package.json/README: freeOnly marked deprecated, free-tier claims removed
- tests: classification + chat-surface hint assertions
- docs: issue doc 112, addendum on doc 106, CHANGELOG unreleased entries
- replace the Zen free-models table with a notice: free-tier Zen models
  403 for third-party clients since Sep 17 2026 (upstream #49580);
  paid Zen + all Go models unaffected, Go free models stay unlimited
- quick start, feature table, Copilot comparison, and FAQ no longer
  advertise free Zen models or '$0' usage
- package.json: drop 'free-models' keyword and 'free Claude Opus' from
  the description; replace stale -free model examples in thinking docs
@ltmoerdani
ltmoerdani merged commit 79f9cdb into main Oct 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant