Description
Since v2.0.4, opencode acp stops loading user configuration when building the session/new catalog (the configOptions list). Custom providers (e.g. Ollama), custom agents/modes, and the configured default model are missing; ACP clients like Zed only get built-in models (opencode/*, Google) and the default build/plan modes.
- Works on 2.0.3 (global and project config both honored).
- Broken identically on 2.0.4, 2.0.6, 2.0.11.
Plugins
None. Config only: ~/.config/opencode/opencode.json with provider.ollama (baseURL http://localhost:11434/v1), a non-default model, and custom primary agents (~/.config/opencode/agents/*.md). Ollama daemon confirmed running at localhost:11434.
OpenCode version
2.0.4 / 2.0.6 / 2.0.11 (regression); 2.0.3 working
Steps to reproduce
- Configure the Ollama provider + models + a custom primary agent as above.
- Pipe a raw ACP handshake into
opencode acp:
- send JSON-RPC
initialize, then session/new with cwd = the project directory (machine has Ollama running).
- Inspect
configOptions in the session/new response.
Expected id: "model" options include the Ollama models and currentValue equals the configured default; id: "mode" includes the custom agent.
Actual: 45 built-in models only, default falls back to google/gemini-3.8-flash, modes are build + plan.
Screenshot and/or share link
N/A — raw ACP probe output available on request.
Operating System
macOS (Darwin, arm64)
Terminal
Bare stdio JSON-RPC probe (also reproducible from Zed's agent panel / any ACP client)
Investigation notes (bisected v2.0.3 → v2.0.4, v2 branch):
refactor(protocol): remove plugin activation wait — deletes client.plugin.awaitActivation({ location }) from loadCatalog() in packages/cli/src/acp/service.ts; replaced by a 5 s poll that exits on the first enabled model, so config-sourced providers lose the race.
refactor(core): split provider and model registries (#48901) — provider visibility is gated on provider.activation === "enabled"; the built-in Ollama plugin only sets that after an async GET /api/tags discovery round, which never completes before the ACP poll exits.
Related: #49630 (custom providers missing in ACP catalog), #34743, #42835, #46311.
Description
Since v2.0.4,
opencode acpstops loading user configuration when building thesession/newcatalog (theconfigOptionslist). Custom providers (e.g. Ollama), custom agents/modes, and the configured default model are missing; ACP clients like Zed only get built-in models (opencode/*, Google) and the defaultbuild/planmodes.Plugins
None. Config only:
~/.config/opencode/opencode.jsonwithprovider.ollama(baseURLhttp://localhost:11434/v1), a non-defaultmodel, and customprimaryagents (~/.config/opencode/agents/*.md). Ollama daemon confirmed running atlocalhost:11434.OpenCode version
2.0.4 / 2.0.6 / 2.0.11 (regression); 2.0.3 working
Steps to reproduce
opencode acp:initialize, thensession/newwithcwd= the project directory (machine has Ollama running).configOptionsin thesession/newresponse.Expected
id: "model"options include the Ollama models andcurrentValueequals the configured default;id: "mode"includes the custom agent.Actual: 45 built-in models only, default falls back to
google/gemini-3.8-flash, modes arebuild+plan.Screenshot and/or share link
N/A — raw ACP probe output available on request.
Operating System
macOS (Darwin, arm64)
Terminal
Bare stdio JSON-RPC probe (also reproducible from Zed's agent panel / any ACP client)
Investigation notes (bisected v2.0.3 → v2.0.4,
v2branch):refactor(protocol): remove plugin activation wait— deletesclient.plugin.awaitActivation({ location })fromloadCatalog()inpackages/cli/src/acp/service.ts; replaced by a 5 s poll that exits on the first enabled model, so config-sourced providers lose the race.refactor(core): split provider and model registries (#48901)— provider visibility is gated onprovider.activation === "enabled"; the built-in Ollama plugin only sets that after an asyncGET /api/tagsdiscovery round, which never completes before the ACP poll exits.Related: #49630 (custom providers missing in ACP catalog), #34743, #42835, #46311.