OpenCode 2.0 โ€” code mode, background service, and what breaks
Coding Agents ยท Deep Dive

OpenCode 2.0: Code Mode, a Background Service, and What Breaks

Source: AI Stack Engineer 12:13 ยท Published Oct 17, 2026 Subject: the major overhaul from Anomaly, and the breaking changes

0:00OpenCode 2.0 is out, and the pinned announcement from the team behind it โ€” Anomaly, also behind the SST serverless framework โ€” passed 724,000 views in a few days. The way OpenCode runs on your machine changed: the API was thrown out and rebuilt, the plugin system redone, and a few things you rely on quietly stopped working. One of them is buried in the migration doc.

What OpenCode 2.0 is

0:42Context on why this matters: the repo sits around 220,000 stars, and Anomaly claims millions of daily users. A lot of that growth came after Anthropic blocked third-party tools from using Claude Pro/Max subscriptions in January โ€” people wanted an agent not tied to one model company. Kilo rebuilt its CLI and VS Code extension on OpenCode, and Anaconda later bought Kilo. So real products already stand on top of it, which is why 2.0 is so infrastructure-heavy.

The background service

1:31The biggest change: OpenCode always had a client/server design, but only power users touched it. In 2.0 the server starts automatically as one process โ€” the terminal UI, desktop app, and web interface all talk to the same process and show the same sessions. Start a task in the terminal, close the window, continue in the desktop app. Crash recovery got better too: every prompt is written to a durable inbox before the model starts, startup recovery resumes a session that died mid-run, and messages "steer" by default โ€” type while the agent works and your note lands at the next safe step instead of waiting. 2:55/pair connects the service to other apps or machines (native apps are coming, per Anomaly).

The API rebuild

3:39The old API got an unusually honest self-review from its own team: it "grew haphazardly and was bad," so they started over. The new one covers sessions, history, event streams, permissions, shell processes, snapshots, and more, with a new @open-code/client package (JavaScript + Effect). Scripts auto-discover the local service, so a scheduled job that reviews last night's changes is a few lines. Notably, OpenCode knows its own API and uses it: ask it to "start rate limiting uploads in a new worktree" and it creates the Git worktree, renames the session, and moves itself in โ€” you never touch Git. You can even tell it a session in another tab is stuck, and it finds, stops, and redirects it: one agent managing other sessions on your machine.

Code mode

4:26The most-talked-about feature. Normally an agent calls one MCP tool, waits, reads the result, then calls the next โ€” and every result lands in your context window, which you pay for. In 2.0, a tiny JavaScript interpreter (the @open-code/code-mode package) turns MCP servers and OpenAPI endpoints into functions; the model writes a short script that calls a tool, loops over the results, and calls another tool all in one round trip. Connect GitHub and Linear and "copy every open bug into Linear" becomes one script returning the new ticket IDs. Every MCP server is in code mode by default, and Anomaly says you could add a thousand servers with minimal context bloat because the agent searches for the tools it needs rather than loading them all up front โ€” the fix for watching half your context vanish before you've written any code. It runs natively, no Node VMs or QuickJS.

Background sub-agents

5:55Sub-agents can now run in the background while the main agent keeps going โ€” automatic, or triggered manually with a different (cheaper) model ("spawn a background sub-agent to review this file"). Shell commands work the same way: a long test run or build runs in the background and the agent is notified when it finishes; press Ctrl+B to move something dragging in the foreground to the background. Build and plan remain the main agents (switched with Tab), with general and explore as sub-agents, each in a fresh context.

Plugins & SDK

6:50The 1.0 plugin system never got traction, and the team admits it. For 2.0 they built nearly every feature as an internal plugin โ€” 80+ of them โ€” which forces the plugin API to stay solid because their own product runs on it. Plugins are stable now and hot-reload: you can ask OpenCode to write a plugin for itself mid-session and use it immediately. The @OpenCode/SDK package is the same code that runs the CLI, packaged as a library โ€” strip it down and run your own flavor on a server or Cloudflare durable objects, with the official desktop app as the front end. It's still marked in-development.

What breaks on upgrade

7:59Permissions are now an ordered list of rules (action, resource, and effect: allow / ask / deny; last match wins, and a deny in your config can't be overridden by clicking approve). bash is renamed shell, task is now subagent. Snapshots save your files before each model call in a separate Git store, so /undo rolls back the conversation and the files without touching your commits; compaction now saves a structured checkpoint (goals, finished work, blockers, files) instead of just cutting old messages. 8:52The buried breaking change: V2 does not run language servers. It accepts your LSP config but won't run it โ€” no LSP tools, no diagnostics; the docs say to use your lint/type-check/compiler commands instead. V1 asked before touching files outside your project; V2 allows it by default (add an external-directory rule set to "ask" to restore the old behavior). V2 only reads agents.md, so if you relied on claude.md, move those instructions. Auto-updates are off. 1.0 plugins don't work, the server API is completely different, and 2e.json is replaced by a global CLI.json (migrated automatically; most other config is translated in-memory without rewriting your files).

The reaction

10:06Upgrading is one command (opencode upgrade --major or /update; desktop users grab the new build from opencode.ai/download), then point OpenCode at its own migration guide and let it convert your config. 10:41Hacker News was split โ€” one user said nearly all their bugs vanished after upgrading, others moved to lighter agents, and a local-llama user noticed the model kept generating after closing OpenCode (the background server explains it). One dev summary put the reaction at ~40% positive / 45% mixed / 15% skeptical, with code mode the favorite and migration + security the worries. The verdict: Claude Code and Codex stay tied to their own models; OpenCode lets you pick almost any model, local included โ€” what changed is the harness around it. If you depend on V1 plugins or LSP diagnostics, wait; if you build automation or don't want vendor lock-in, set up 2.0 now.

Claims checked

Verified

OpenCode 2.0 is real. anomalyco/opencode โ€” TypeScript, ~220kโ˜… (the video's "~212k" was the recording-time figure), "The open source coding agent," plus the 2.0 announcement and migration guide. Note: two unrelated repos share the name โ€” the canonical one is anomalyco/opencode, not the Go-based opencode-ai/opencode.

Relayed details

The Kilo/Anaconda acquisition and the "millions of daily users" figure are relayed from the video; the HN sentiment split (~40/45/15) is a third-party dev summary, not a survey. The specific breaking changes (no LSP, external-dir default, agents.md-only) come from the migration doc and are stated accurately.

Source framing

An independent breakdown, not sponsored; the channel's own X is the only social link and is not reproduced.

Sources & further reading

โ˜ฐ View all