Problem
OpenCode config can be composed from multiple sources, but there is no first-class CLI flow that shows the fully resolved runtime config or explains why a value won, was ignored, or is still unresolved. Downstream integrations end up building custom sync and debugging layers around config merge behavior.
Impact
This makes enterprise and generated-config setups harder to operate, especially when users mix global, project, inline, and generated config. It also turns troubleshooting into trial-and-error because there is no single source of truth for the effective config.
Fix
Add opencode config resolve and opencode config doctor.
resolve should print the effective merged config in a machine-readable form.
doctor should report source precedence, unknown keys, deprecated keys, unresolved {env:...} and {file:...} refs, and ignored sections.
- Both commands should work with custom config paths and eventually support selected profiles once profiles land.
File
docs/config/ L1
Problem
OpenCode config can be composed from multiple sources, but there is no first-class CLI flow that shows the fully resolved runtime config or explains why a value won, was ignored, or is still unresolved. Downstream integrations end up building custom sync and debugging layers around config merge behavior.
Impact
This makes enterprise and generated-config setups harder to operate, especially when users mix global, project, inline, and generated config. It also turns troubleshooting into trial-and-error because there is no single source of truth for the effective config.
Fix
Add
opencode config resolveandopencode config doctor.resolveshould print the effective merged config in a machine-readable form.doctorshould report source precedence, unknown keys, deprecated keys, unresolved{env:...}and{file:...}refs, and ignored sections.File
docs/config/L1