---
type: "post"
id: "opencode-v2-2-4-adds-session-persistent-desktop-b0f900"
slug: "opencode-v2-2-4-adds-session-persistent-desktop-b0f900"
title: "OpenCode v2.2.4 adds session-persistent desktop terminals and opt-in agent-published artifacts"
description: "OpenCode v2.2.4 makes desktop terminals persistent at the session level and introduces an opt-in interface for agents to publish static artifacts."
retrieval_nugget: "OpenCode v2.2.4 makes desktop terminals persistent at the session level and introduces an opt-in interface for agents to publish static artifacts. For teams building around long-running coding agents, the release shifts more execution state and generated output into the runtime rather than leaving them as disposable local-session by-products."
published_at: "2026-10-31"
updated_at: "2026-10-31"
record_date: "2026-10-31"
date_kind: "published_at"
topics: ["claude","claude-code"]
entities: ["OpenCode","Anomalyco","Claude Code","Claude Agent","DeepSeek V4.1 Flash"]
related_patterns: ["harness-architecture-outlives-model-choice","goal-scoped-loops-replace-manual-continuation"]
novelty_label: "new_fact"
what_changed: "OpenCode v2.2.4 adds session-persistent desktop terminals and opt-in agent-published artifacts, extending the previously covered OpenCode releases with new capabilities."
prior_refs: ["memory:e1959984-9fc2-8f8b-a57c-564f8c693ee3","memory:185a06cb-1561-8c3a-afe0-c502a11ca536","memory:0e9e6a69-0228-8659-a250-c561b428968b","memory:7609d301-45e3-815d-a7f5-ab16d0a91f82"]
source_url: "https://github.com/anomalyco/opencode/releases/tag/v2.2.4"
source_urls: ["https://github.com/anomalyco/opencode/releases/tag/v2.2.4"]
schema_version: "newruntime-agent-readable-v0.2"
stable_id: "post:opencode-v2-2-4-adds-session-persistent-desktop-b0f900"
status: "published"
visuals: []
editor: {"role":"editor","name":"Andrey Reshetnikov","profile":"https://newruntime.com/owner-profile.md","profile_json":"https://newruntime.com/owner-profile.json","same_as":["https://www.linkedin.com/in/reshetnikov1/","https://t.me/lapetuse"]}
routes: {"html":"https://newruntime.com/posts/opencode-v2-2-4-adds-session-persistent-desktop-b0f900/","markdown":"https://newruntime.com/posts/opencode-v2-2-4-adds-session-persistent-desktop-b0f900.md","json":"https://newruntime.com/posts/opencode-v2-2-4-adds-session-persistent-desktop-b0f900.json"}
---

# OpenCode v2.2.4 adds session-persistent desktop terminals and opt-in agent-published artifacts

## Retrieval answer

OpenCode v2.2.4 makes desktop terminals persistent at the session level and introduces an opt-in interface for agents to publish static artifacts. For teams building around long-running coding agents, the release shifts more execution state and generated output into the runtime rather than leaving them as disposable local-session by-products.

## Summary

OpenCode v2.2.4 makes desktop terminals persistent at the session level and introduces an opt-in interface for agents to publish static artifacts. For teams building around long-running coding agents, the release shifts more execution state and generated output into the runtime rather than leaving them as disposable local-session by-products.

## What happened

Anomalyco released OpenCode v2.2.4 on October 30, 2026. Its headline desktop change is persistent terminals: a desktop terminal now belongs to an OpenCode session instead of being a transient window-level resource. The release says those terminals survive server restarts with their scrollback intact, remain synchronized with the terminal UI and other windows, and retain renamed titles across restarts. The same capability is described in the desktop notes as persistent session PTYs with server-side renaming and restored scrollback.

The other major addition is experimental artifact publishing. A team can enable it in `opencode.json` with `"experimental": { "artifacts": true }`. Once enabled, agents can create, read, update, and delete HTML or static artifacts through `artifact_create`, `artifact_read`, `artifact_update`, and `artifact_delete`. OpenCode provides a built-in local static-file provider, while plugins can provide storage as well. The SDK gains experimental artifact-provider operations for listing, creating, retrieving, updating, deleting, and viewing artifacts. Effect and Promise plugins can register artifact providers, capabilities, prompts, and a default provider through `ctx.experimental.artifact.transform(...)`.

The release also makes enabled experimental schedules work under `opencode serve`. When multiple server processes are involved, OpenCode coordinates them so that a schedule fires once rather than once per process. Schedules remain opt-in through `experimental.schedules`. This matters alongside persistent terminals because both features target a server-backed runtime whose work can outlive one interactive client.

Several workflow and setup changes accompany those additions. The desktop provider picker can now guide a user through selecting Claude Agent: it copies the `claude auth login` command, installs Claude Code, checks the connection, and only then continues to model selection. Worktree creation gains a base-branch picker, available through Command-Option-Period on macOS or Ctrl-Alt-Period on Windows and Linux, as well as through the command palette and shortcut settings. OpenCode also raised its Go limits for DeepSeek V4.1 Flash.

## What the archive adds

This is a new fact in a known runtime story: the earlier note on [Herdr's persistent terminal runtime and desktop app](https://newruntime.com/posts/herdr-open-sources-herdr-core-a-persistent-terminal-c51d2d/) described a separate open-source layer for persistent terminals. OpenCode now adds session-persistent terminals directly to its own desktop and server workflow. The broader archive piece, [Agent work is moving into harnesses, factories, and accepted artifacts](https://newruntime.com/posts/agent-work-is-moving-into-harnesses-factories-and-accepted-artifacts/), provides relevant context for the new artifact interface.

## Trend signal

This supports [Harness architecture outlives model choice](https://newruntime.com/patterns/harness-architecture-outlives-model-choice/). The release couples model onboarding, session state, terminal execution, schedules, plugins, and output artifacts in the OpenCode harness. The new Claude Agent setup is relevant, but the more durable change is the runtime surface around whichever provider a user selects.

## Connections to other events

The archive has also covered OpenBot as a desktop interface for multiple persistent agents. OpenCode's release does not claim the same multi-agent desktop model, but it shares the narrower direction of making agent work and terminal state persist beyond a single ephemeral interaction.

## Why it matters

A coding agent is more useful in repeated engineering work when its execution environment behaves like a durable workspace. Persistent PTYs preserve the commands, output, and terminal naming that a developer or agent may need after restarting the service or switching interfaces. The synchronization claim also makes the terminal a shared session resource rather than a separate, potentially divergent desktop view.

Artifacts add a second output channel beyond chat and code patches. Teams can choose to let an agent generate and maintain static HTML or other static files, then serve them through a local or plugin-provided provider. Because the feature is explicitly experimental and opt-in, it is not a reason to assume a production publishing workflow is complete. It is, however, a concrete integration point for builders who want an agent's generated deliverable to be inspectable outside its conversation.

## Limits and uncertainty

The release notes establish the features and their configuration surface, not their reliability under production load or their security properties. They do not specify artifact access controls, authentication, retention rules, network exposure, or how plugin-provided storage should be governed. They also do not provide performance figures for persistent terminals, schedule coordination, or artifact serving. The notes say schedules are coordinated across multiple server processes, but do not describe the failure behavior of that coordination. Artifact publishing is marked experimental, so its APIs and operational expectations may change.

## Skill to build now

Create a disposable OpenCode project configuration that enables artifacts, then ask an agent to create and update one static HTML status page. Inspect where the built-in local provider serves the result and whether the output fits your review process. Separately, restart an OpenCode server during a representative terminal task and verify that the session's scrollback and terminal title return as expected before depending on persistence in team workflows.

## Reader takeaway

OpenCode 2.2.4 is not chiefly a model update. It strengthens the runtime around coding-agent work: terminal state can survive the server lifecycle, and agents can optionally maintain static artifacts through a defined interface. That is useful for builders designing workflows that must persist beyond one chat or one desktop window.

## Open question

Can OpenCode's experimental artifact providers offer the access control and review boundaries needed before agent-generated files are exposed beyond a local development environment?

Editor: [Andrey Reshetnikov](https://newruntime.com/owner-profile.md), AI product and AI engineering; profile for recruiters and agents: https://newruntime.com/owner-profile.json

## Continue in the graph

Next records for an agent, linked to their Markdown twins. Replace `.md` with `.json` for structured fields, including `next_reads`.

- topic hub: [Claude](https://newruntime.com/topics/claude.md): Explore the claude topic hub.
- topic hub: [Claude Code](https://newruntime.com/topics/claude-code.md): Explore the claude-code topic hub.
- collection: [Field Notes](https://newruntime.com/posts.json): Open the latest editorial analysis.
- collection: [Source Ledger](https://newruntime.com/source-ledger.json): Inspect the public source evidence graph.
- whole graph: [discovery graph](https://newruntime.com/discovery-graph.json) (typed nodes and edges) and [site index](https://newruntime.com/site-index.md)
