OpenCode v1.18.13: Desktop v2 completes, subagents get a depth limit#

Part of the OpenCode Version Tracker series. | OpenCode on GitHub | Releases

Between v1.17.19 and v1.18.13, OpenCode finished migrating its desktop app to a new v2 layout, added an opt-in v2 sidecar behind the OPENCODE_SIDECAR_V2 flag, capped how deeply subagents can spawn subagents, and shipped right-to-left layout support and broader localization for the desktop client.

New Environment Variable#

One OPENCODE_* variable appeared since the baseline. It lives in the Electron desktop main process, where OPENCODE_SIDECAR_V2 === "1" selects the v2 sidecar version and anything else keeps v1.[1]

VariableWhat It Does
OPENCODE_SIDECAR_V2Set to 1 to make the desktop app launch the v2 sidecar (the bundled CLI service that backs the app) instead of the v1 one. The v1.18.9 notes describe this as an opt-in path during the transition.

No experimental flags were added or removed in this range, and no experimental.* config keys changed. The catalog of model IDs shifted (Opus 5, more Gemini 3.x entries), but that reflects the models.dev catalog OpenCode mirrors at runtime, not curated additions.

Harness and provider changes#

The one change that touches the agent loop directly is a subagent nesting limit. v1.18.2 stopped subagents from launching nested subagents by default. The task tool now blocks a spawn once the current depth reaches the subagent_depth config value, which defaults to 1, and the error message points you at the key to raise if you actually want nesting.[2] Left unbounded, a subagent that spawns subagents is a recursion hazard; the default of 1 makes the safe case the quiet one.

Provider work continued at its usual pace. Kimi models on Anthropic-compatible providers got adaptive thinking with summarized reasoning; Azure regained Cognitive Services endpoint support and a fix for GPT-5.5+ requests failing when reasoning was enabled; Mistral reasoning history and prompt caching were stabilized; MiniMax M3 thinking-variant selection was fixed; and Modal model discovery and a Poolside provider setup arrived from community contributors. MCP reliability got two rounds of hardening: reconnects after expired SDK sessions, honored OAuth callback ports in mcp debug, and an end to SSE reconnect loops after server error responses.

Inside the release#

This range is 15 releases and 372 commits, cut between July 19 and August 4, so more than 20 commits a day sustained across roughly three weeks. That cadence matches OpenCode's reputation, and much of it is automated: the opencode-agent[bot] account leads the count because it drives the near-daily release process. Among people, Brendonovich (43 commits) and SST's fwang (22) anchor the core, with a long community tail behind them; a 250-commit sample carried 29 distinct authors, and the release notes credit more than a dozen outside contributors by name across the window.

The work concentrated in packages/, which is effectively the whole monorepo (290 of 300 sampled file changes). Tracked source files under packages/ grew from 3,011 to 3,141, and the desktop package absorbed the largest share of the new files. That lines up with the changelog: v1.18.0 completed the Desktop v2 migration with upgrade handling and first-launch onboarding, v1.18.5 taught the app to speak to both legacy and "current" servers so the two can coexist during the cutover, and v1.18.13 added early right-to-left layout, locale-aware plural rules, and more supported desktop languages.

What this tells us#

OpenCode is investing where the closed terminal harnesses are not. Claude Code, Codex CLI, Gemini CLI, and Amp are terminal-first tools; three weeks of OpenCode commits went mostly into a desktop GUI, its migration path, and its internationalization. The RTL and translation work in particular signals a product aimed at a broad, non-English user base, which is unusual for a coding agent and only makes sense if the desktop app is treated as a first-class surface rather than a wrapper around the CLI.

The OPENCODE_SIDECAR_V2 toggle and the legacy-versus-current server compatibility fixes describe a careful in-flight architecture swap: the desktop app is moving to a new backend service, and both the old and new paths are shipping side by side so users are not forced across in one release. That is the same server-first, multi-client posture the baseline snapshot showed, now being rebuilt one layer down without a flag day.

The subagent_depth default is the quieter signal. Adding a guardrail against runaway agent recursion, on by default, is the kind of change a harness makes once real users are hitting the edges of its agent orchestration rather than while it is still a demo.

Sources#

  1. OpenCode desktop main process, packages/desktop/src/main/index.ts at v1.18.13
  2. OpenCode task tool, packages/opencode/src/tool/task.ts at v1.18.13
  3. OpenCode releases

This analysis is based on publicly available open-source code and release metadata, conducted for educational and research purposes. All trademarks and software referenced belong to their respective owners.