← AUTOMATER NEWSROOM

OpenCode 1.19.0 Ends Automatic Updates and Ships the Explicit Path to OpenCode 2

OpenCode v1.19.0 stops installing updates automatically, adds /update and opencode upgrade --major as the explicit path to OpenCode 2, and validates PTY connection origins before existence checks. What pinned agent fleets should change now.

Diagram showing a pinned OpenCode 1.x fleet on the left, an explicit gate in the middle offering the /update TUI command and opencode upgrade --major, and OpenCode 2 on the right, with a crossed-out automatic-install path and a footer noting PTY origin validation and the OpenAI ultrafast tier.Diagram showing a pinned OpenCode 1.x fleet on the left, an explicit gate in the middle offering the /update TUI command and opencode upgrade --major, and OpenCode 2 on the right, with a crossed-out automatic-install path and a footer noting PTY origin validation and the OpenAI ultrafast tier.
Original illustration for this article. OpenCode v1.19.0 ends automatic update installation; the GitHub release notes describe /update and opencode upgrade --major as the explicit paths to updates and to OpenCode 2.

OpenCode, the MIT-licensed open-source coding agent whose GitHub repository reports more than 212,000 stars, released v1.19.0 on Oct. 11, 2026 at 01:39 UTC. The release notes are short — one core improvement, two bugfixes, and one TUI change — but the policy shift inside them is consequential for anyone running coding agents in production: updates are no longer installed automatically, and the road to the next major version, OpenCode 2, now runs through explicit operator commands.

What shipped in v1.19.0

Area Change Why it matters
Core opencode upgrade --major upgrades the install to OpenCode 2 The major-version migration becomes an explicit opt-in
Core Allow the OpenAI ultrafast service tier Harness-side allowance; account-level access still governs availability
Core Validate PTY connection origins and tickets before checking whether a PTY exists Hardens the pseudo-terminal attach path
TUI /update installs updates or upgrades to OpenCode 2; updates are no longer installed automatically Ends silent update installs

The captured release page below shows the full notes, the 733b2c6 commit marker, and the Latest badge GitHub assigns to the tag.

The GitHub release page for anomalyco/opencode v1.19.0, showing the release title, the Latest marker, the release notes sections for Core improvements and bugfixes and TUI improvements, contributor credit, and reaction counts.
GitHub release page for OpenCode v1.19.0, published by the opencode-agent account on 11 Oct at 01:39 UTC. The capture shows the release notes: opencode upgrade --major for OpenCode 2, the OpenAI ultrafast service tier allowance, PTY connection origin and ticket validation, and the /update TUI change ending automatic update installation. Source: GitHub, anomalyco/opencode. · Original source

Automatic updates are off

The TUI line in the notes does two things at once. It introduces /update as the in-session command for installing OpenCode updates or moving to OpenCode 2, and it states plainly that updates are no longer installed automatically. For a solo developer that is a small friction increase. For fleets it is a change-control win: a pinned harness stays pinned until a human or a pipeline asks for a new version, which removes the drift class where a running lane silently picks up new defaults mid-week. Our guidance on canarying every CLI upgrade still applies — with one adjustment: the canary is now the only update path, not a brake on one.

# Cross the major-version boundary from a shell
opencode upgrade --major
# Inside the OpenCode TUI: install updates or move to OpenCode 2
/update

The trade-off runs the other way, too. Machines that relied on silent installs stop receiving fixes — including hardening like the PTY change below — until someone schedules the update. The patch clock is now an owned responsibility, not a background service.

Two-row diagram comparing the update flow before v1.19.0, where a published release installed automatically into the running harness, with the flow from v1.19.0, where an operator decision via /update or opencode upgrade --major is required before an update lands.Two-row diagram comparing the update flow before v1.19.0, where a published release installed automatically into the running harness, with the flow from v1.19.0, where an operator decision via /update or opencode upgrade --major is required before an update lands.
Original diagram for this article. The change is described in the OpenCode v1.19.0 GitHub release notes: /update installs updates or upgrades to OpenCode 2, and updates are no longer installed automatically.

A security-shaped bugfix

Under bugfixes, the notes say: “Validate PTY connection origins and tickets before checking whether a PTY exists.” The ordering is the substance. By checking a connection’s origin and ticket before answering whether a given pseudo-terminal exists, the server stops disclosing PTY presence to callers that have not proven where they come from or that they hold a valid ticket. The notes do not name a vulnerability, assign a CVE, or describe an exploit, and it would be overreach to claim one. What is verifiable is hardening of the terminal attach path in a tool that routinely runs shell commands. If OpenCode sessions on your machines are reachable by other processes or across a network, roll this release with security-patch priority — and test that legitimate clients still attach.

The OpenCode 2 path exists; the destination is still unlabelled

“Run opencode upgrade --major to upgrade to OpenCode 2” is the first shipped mechanism for crossing the major-version boundary, and the repository corroborates that v2 work has been underway: the tree carries a specs/v2 directory and a root-level V2_HTTP_API_AUDIT.md. But nothing in these notes describes what OpenCode 2 actually changes, and the release documents no availability expectations beyond the command itself. Operators should hold the distinction: the upgrade path is available now; the migration decision waits on OpenCode 2’s own release notes and a staging run. A one-line command is not a migration plan.

Release engineering context

The project’s releases index shows the fast cadence behind this tag: v1.18.35 landed Oct. 6, and v1.18.34 on Sept. 30 added macOS Developer ID signing for CLI binaries plus re-signing of locally compiled macOS binaries. The v1.19.0 tag itself publishes 40 assets — desktop builds, latest.json update manifests, source archives — with per-file SHA-256 checksums and a release attestation JSON. Pipelines that pin OpenCode should record those digests.

The repository lists the install channels: a curl install script, npm i -g opencode-ai, Homebrew, Scoop, Chocolatey, pacman and the AUR, mise, and nix. The auto-update change does not land evenly across them. Package-manager installs were already explicit, so the behavioral shift hits script- and binary-installed machines hardest — exactly the population least likely to have a patch owner.

What operators should do now

  • Inventory install channels. Find the script- and binary-installed machines first; they were the ones receiving silent updates.
  • Assign a patch cadence and an owner. Decide how often each lane runs /update or its package manager, and who approves.
  • Stage OpenCode 2 separately. Keep opencode upgrade --major out of routine patching; give it its own canary and rollback note.
  • Prioritize the PTY fix anywhere sessions cross process or host boundaries.
  • Record checksums and attestations for every pinned build so rollbacks are verifiable.

OpenCode occupies a broad middle ground in the open-source harness field we track — more install channels than most, and one of the largest star counts in the category. With v1.19.0, its update semantics move closer to the pinned-fleet model operators already run for Claude Code and Codex. The gate is now yours to open.

Sources

  1. Release v1.19.0 · anomalyco/opencode · GitHub
  2. Releases · anomalyco/opencode · GitHub
  3. GitHub - anomalyco/opencode: The open source coding agent. · GitHub