Description
In native V2 config, a model entry with capabilities that omits tools fails validation, and the whole provider entry is silently skipped: its models disappear from selection with only a server log line
configuration normalization diagnostic path=$.providers.<id> kind=invalid action="skipped malformed recognized value"
— no indication which field is missing or that the provider was dropped. Reproduced on 2.0.11: adding "tools": true to every capabilities object fixed it (nothing else changed).
The docs show capabilities examples that always include tools, but none of /v2/docs/models, /v2/docs/providers, or /v2/docs/migrate-v1 state that tools is required. The migrate-v1 guide maps modalities → capabilities.input/output and doesn't mention adding tools, so a converted V1 config hits this trap.
Suggested fix: make tools optional with a default, or document it as required and emit a field-level diagnostic (e.g. $.providers.<id>.models.<model>.capabilities.tools) instead of skipping the provider with a generic warning.
Plugins
- local plugin:
~/.config/opencode/plugins/openviking
opencode-antigravity-auth@latest, superpowers (git)
OpenCode version
2.0.11
Steps to reproduce
- In
opencode.json, define a custom provider with a model that has:
- Reload config (or restart)
- Observe: provider and its models are unavailable; server log shows
path=$.providers.<id> kind=invalid action="skipped malformed recognized value"
- Add
"tools": true to the capabilities object → provider loads, models selectable
Expected: tools defaults sensibly (or the requirement is documented), and any diagnostic names the actual missing field.
Screenshot and/or share link
n/a
Operating System
macOS (Darwin 25.6.0, arm64)
Terminal
Ghostty
Description
In native V2 config, a model entry with
capabilitiesthat omitstoolsfails validation, and the whole provider entry is silently skipped: its models disappear from selection with only a server log line— no indication which field is missing or that the provider was dropped. Reproduced on 2.0.11: adding
"tools": trueto everycapabilitiesobject fixed it (nothing else changed).The docs show
capabilitiesexamples that always includetools, but none of /v2/docs/models, /v2/docs/providers, or /v2/docs/migrate-v1 state thattoolsis required. The migrate-v1 guide mapsmodalities→capabilities.input/outputand doesn't mention addingtools, so a converted V1 config hits this trap.Suggested fix: make
toolsoptional with a default, or document it as required and emit a field-level diagnostic (e.g.$.providers.<id>.models.<model>.capabilities.tools) instead of skipping the provider with a generic warning.Plugins
~/.config/opencode/plugins/openvikingopencode-antigravity-auth@latest,superpowers(git)OpenCode version
2.0.11
Steps to reproduce
opencode.json, define a custom provider with a model that has:path=$.providers.<id> kind=invalid action="skipped malformed recognized value""tools": trueto the capabilities object → provider loads, models selectableExpected:
toolsdefaults sensibly (or the requirement is documented), and any diagnostic names the actual missing field.Screenshot and/or share link
n/a
Operating System
macOS (Darwin 25.6.0, arm64)
Terminal
Ghostty