OpenCode v2.3.0 shipped yesterday with one default that changes how agents run in your pipelines: subagents now execute in the background. The parent session gets a session ID back immediately and keeps working while the child runs concurrently. That is the right call — running tasks sequentially when agents can run in parallel has always been a bottleneck. There is also a cleaner TUI and a jump-to-message feature in the desktop app. But the release notes bury one gotcha that will bite CI users: if a subagent starts a dev server or file watcher, your pipeline hangs indefinitely. Here is what changed and what to fix before you upgrade.
Subagents Run in the Background Now
Before 2.3, spawning a subagent blocked the parent session. The parent waited for the child to finish before it could proceed. That worked fine for sequential tasks, but it meant you could not use OpenCode to orchestrate multiple workstreams at once — the kind of multi-agent pattern that has become standard in 2026.
In 2.3, every subagent returns its session ID immediately. The parent keeps working. When the child finishes, it reports results back. The system also handles chained background work correctly: if a subagent spawns its own background task, it will not report “done” to the parent until that background task finishes too — so you will not get a false completion signal in the middle of a long run.
The design constraint is worth knowing: background subagents are intended for independent, non-overlapping work. The session context injected into each subagent explicitly instructs it not to duplicate the parent’s work. If you need subagents coordinating on the same files simultaneously, you will still need to structure your prompts carefully to avoid conflicts.
The CI Gotcha — Fix This Before You Upgrade
Here is the problem: opencode run now waits indefinitely for any background work a child subagent starts. If your task involves a dev server, file watcher, or any long-running process, the pipeline will hang until it times out or gets killed manually. This is not a bug — it is intentional behavior so the parent can receive results from background children. But it has a sharp edge in CI.
Three GitHub issues document this in detail (#61354, #62779, #56741). The release notes acknowledge it directly and recommend adding an explicit timeout at the pipeline level.
For GitHub Actions:
jobs:
build:
timeout-minutes: 15
steps:
- run: opencode run "build and test"
For the CLI directly:
timeout 15m opencode run "build and test"
Adjust the duration to fit your expected task length and add buffer. The important thing is that you set it explicitly — there is no default timeout in opencode run.
Quieter Transcripts by Default
The TUI now defaults to low verbosity. Tool calls, shell output, and agent thoughts collapse into a single activity row that you can expand if needed. The before-and-after is dramatic: a busy session that used to scroll thousands of lines of raw output now shows something like “1 command, 1 edit, 2 thoughts, 3 reads.” You can follow the answer without scrolling past the machinery.
If you want more detail — say you are debugging a failing task — press Ctrl+P, choose Open Settings, and set Verbosity to medium or high. You can also set session.verbosity directly in ~/.config/opencode/cli.json. Any verbosity you had configured before the upgrade is preserved; this only affects new sessions that have not had a setting explicitly applied.
What Else Shipped
Two experimental features are worth noting. The mcp_events flag adds event subscription support — subagents can now receive experimental.mcp.event events from MCP servers, which opens up tighter integration with the growing MCP ecosystem. The shell_timeout_background flag moves timed-out shell commands to the background instead of killing them, useful for long-running builds where you want results eventually even if they exceed a threshold. Both are opt-in with feature flags. The release also adds client certificate support for provider connections — relevant if you run OpenCode behind a corporate proxy or against an on-premises LLM endpoint.
The desktop app gets jump-to-message navigation for long sessions — a small but useful addition for anyone who works through 50-message conversations and needs to reference an earlier decision.
The Direction This Points
Background subagents as the default is the right architectural move. Sequential agent execution was always a constraint of tooling catching up to the concurrent model that makes multi-agent workflows actually useful. OpenCode has 220,000 GitHub stars and 22 million monthly users; when it ships a default change this significant, the whole ecosystem notices. The practical implication: if you are running OpenCode in CI today, add a timeout before you upgrade to v2.3.0. If you are running it interactively, upgrade immediately — the cleaner TUI alone is worth it.

