forked from Mirrors/OmniRoute
fix(opencode): built-in placeholder tools are the client agent toolset, not _noop #1
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/opencode-free-tier-placeholder-names"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The upstream free tier inspects which tool names a request declares and answers 403
FreeTierError for any set that omits both bash and read (measured 2026-09-22 against
opencode.ai/zen/v1: _noop alone never passes on any free model; bash+read does;
anything alongside the pair is harmless). The built-in fallback that an unconfigured
install ships was the single name _noop, so every keyless chat request on every free
model was refused. It is now the official client's agent toolset
(bash, edit, glob, grep, read).
The fallback applies in both entry points: applyFreeTierRequestContract's own default
and prepareFreeTierRequest's resolved-empty case, so a caller passing an empty list or
nothing at all sends a request the gate accepts. Configured and observed lists are the
operator's own choice and still pass through unchanged.
Summary
Related Issues
Validation
Choose the change type and focused loop from the
Contribution Golden Path. The full unit suite,
Vitest, the 60% coverage gate, and the production build all run in CI on this PR (#8329):
npm run lintTests Added Or Updated
Coverage Notes
src/,open-sse/,electron/, orbin/, explain which tests cover the change.Reviewer Notes
_noop7dd5089f37