Skip to content
Proposals/Remove the unpublished OpenCode GitHub Action an
proposalteamP5Worth a lookOpenCode

Remove the unpublished OpenCode GitHub Action and migrate @opencode/ai imports

OpenCode v2.2.0 unpublished the GitHub Action, moved @opencode/ai Promise/Effect entry points, and requires OpenTUI 0.7.0. Fix CI and imports first, then use keyed session instruction entries instead of rewriting the system prompt, and install experimental Desktop plugins from the GUI docs.

Why this loop

v2.2.0 breaks CI, SDK imports, and plugin installs. The OpenCode GitHub Action is no longer published, so workflows that still uses: it will fail until those steps are removed. @opencode/ai now exports the Promise API from the package root, moves Effect to @opencode/ai/effect, and deletes @opencode/ai/promise plus wildcard subpaths—the release’s own diff is the required rewrite. @opencode/plugin now requires @opentui/core and @opentui/solid 0.7.0; 0.6 plugins fail to install, and custom renderables must assign renderBefore/renderAfter/onLifecyclePass in the constructor, call refreshHooks() after reflection-added hooks, and replace defineNativeIntegration() with static nativeIntegration. After that migration, plugins should stop editing the system prompt: ctx.session.instructions.entry.put/list/remove applies a small keyed update at the next step, survives compaction and reverts, does not bust the prompt cache, and does not start an extra model turn. Pair that with experimental Desktop plugins (https://opencode.ai/v2/docs/build/plugins/gui) and the desktop Todo tool’s opt-in restore.

Proposed actions

  1. Search .github/workflows for any uses: that references the OpenCode GitHub Action and delete those jobs/steps. OpenCode v2.2.0 no longer publishes the Action; if CI still needs an agent run, invoke the OpenCode CLI locally in the job instead of the unpublished Action.
  2. Apply this import rewrite everywhere and fail the change if any leftover path remains: import { AI } from "@opencode/ai/promise" → import { AI } from "@opencode/ai"; import { LLM } from "@opencode/ai" → import { LLM } from "@opencode/ai/effect". Then run rg -n "@opencode/ai/promise" -g '!**/node_modules/**' and delete every remaining @opencode/ai/promise or wildcard-subpath import.
  3. In every package that depends on @opencode/plugin, pin @opentui/core and @opentui/solid to 0.7.0 (up from 0.6.8). Rewrite custom renderables so renderBefore, renderAfter, and onLifecyclePass are assigned in the constructor (not class fields), call refreshHooks() after adding a hook by reflection, and replace defineNativeIntegration() with a static nativeIntegration declaration.
  4. In OpenCode plugins, stop mutating the system prompt for per-step guidance. Use ctx.session.instructions.entry.put, .list, and .remove so each change is a keyed update at the next step, survives compaction and reverts, does not bust the prompt cache, and does not start an extra model turn.
  5. Follow https://opencode.ai/v2/docs/build/plugins/gui to create, install, and share an experimental Desktop plugin for any GUI workflow you currently keep outside OpenCode. After upgrading the desktop app to v2.2.0, turn the restored Todo tool on only via its opt-in if you still need todos in the desktop UI.

Agent prompt

Paste into your agent or query via MCP (get_agent_prompt) — free, no extra AI cost

OpenCode session task

DevAgentRadar → OpenCode

You are helping me adopt a real coding-assistant change. Work only from the facts below. Do not invent features.

Context

Assistant: OpenCode Proposal: Remove the unpublished OpenCode GitHub Action and migrate @opencode/ai imports Summary: OpenCode v2.2.0 unpublished the GitHub Action, moved @opencode/ai Promise/Effect entry points, and requires OpenTUI 0.7.0. Fix CI and imports first, then use keyed session instruction entries instead of rewriting the system prompt, and install experimental Desktop plugins from the GUI docs. Primary source: https://github.com/anomalyco/opencode/releases/tag/v2.2.0

Why it matters

v2.2.0 breaks CI, SDK imports, and plugin installs. The OpenCode GitHub Action is no longer published, so workflows that still uses: it will fail until those steps are removed. @opencode/ai now exports the Promise API from the package root, moves Effect to @opencode/ai/effect, and deletes @opencode/ai/promise plus wildcard subpaths—the release’s own diff is the required rewrite. @opencode/plugin now requires @opentui/core and @opentui/solid 0.7.0; 0.6 plugins fail to install, and custom renderables must assign renderBefore/renderAfter/onLifecyclePass in the constructor, call refreshHooks() after reflection-added hooks, and replace defineNativeIntegration() with static nativeIntegration. After that migration, plugins should stop editing the system prompt: ctx.session.instructions.entry.put/list/remove applies a small keyed update at the next step, survives compaction and reverts, does not bust the prompt cache, and does not start an extra model turn. Pair that with experimental Desktop plugins (https://opencode.ai/v2/docs/build/plugins/gui) and the desktop Todo tool’s opt-in restore.

Suggested actions

  1. Search .github/workflows for any uses: that references the OpenCode GitHub Action and delete those jobs/steps. OpenCode v2.2.0 no longer publishes the Action; if CI still needs an agent run, invoke the OpenCode CLI locally in the job instead of the unpublished Action.
  2. Apply this import rewrite everywhere and fail the change if any leftover path remains: import { AI } from "@opencode/ai/promise" → import { AI } from "@opencode/ai"; import { LLM } from "@opencode/ai" → import { LLM } from "@opencode/ai/effect". Then run rg -n "@opencode/ai/promise" -g '!**/node_modules/**' and delete every remaining @opencode/ai/promise or wildcard-subpath import.
  3. In every package that depends on @opencode/plugin, pin @opentui/core and @opentui/solid to 0.7.0 (up from 0.6.8). Rewrite custom renderables so renderBefore, renderAfter, and onLifecyclePass are assigned in the constructor (not class fields), call refreshHooks() after adding a hook by reflection, and replace defineNativeIntegration() with a static nativeIntegration declaration.
  4. In OpenCode plugins, stop mutating the system prompt for per-step guidance. Use ctx.session.instructions.entry.put, .list, and .remove so each change is a keyed update at the next step, survives compaction and reverts, does not bust the prompt cache, and does not start an extra model turn.
  5. Follow https://opencode.ai/v2/docs/build/plugins/gui to create, install, and share an experimental Desktop plugin for any GUI workflow you currently keep outside OpenCode. After upgrading the desktop app to v2.2.0, turn the restored Todo tool on only via its opt-in if you still need todos in the desktop UI.

Config surfaces this release may change

  • skills (high confidence) — check your repo before applying
  • slash commands — check your repo before applying
  • context and compaction settings — check your repo before applying
  • hooks — check your repo before applying
  • MCP servers — check your repo before applying
  • permission rules — check your repo before applying

After you finish

Do not report this as applied to DevAgentRadar. You cannot write the visitor's loop.

Tell the human: open https://devagentradar.com/proposals/opencode-v2-2-0-remove-the-unpublished-opencode-github-action-and-migrat and mark Applied, Skipped, or Failed. Proposal id: d1b70864-ae10-4077-878d-c068e0b3ef43

Your job

  1. Restate the change in one sentence.
  2. Propose a minimal plan for my repo (or a throwaway pilot).
  3. Implement only what I approve; prefer small diffs and tests.
  4. Call out risks (permissions, breaking APIs, cost).

Start by confirming you understood the proposal.

agentmcpmodelsecurityideRelease source ↗

Your loop

This browser · no sign-in · not shared as “you”

After you run the prompt

Only you can mark this. Agents cannot write your loop.

Your decision stays on this device. A public tally appears after a few votes.

Originating release signal

OpenCodev2.2.0Oct 27, 2026

v2.2.0

Create, install and share Desktop plugins (experimental) (#55246, #59469, #59489) · Refreshed the desktop app experience (#56898, #58865, #55838, #57962) · +84 more changes
Verified excerpt — the source's own words

Highlights

  • Create, install and share Desktop plugins (experimental) (#55246, #59469, #59489)

  • Refreshed the desktop app experience (#56898, #58865, #55838, #57962)

  • Add experimental image and decision generation APIs to plugins and sdk, allowing image generation or decision model (think typesafe, clef, etc) workflows. (#59190, #59380, #58758)

  • Plugins can now attach and update keyed session instructions with ctx.session.instructions.entry.put/list/remove. Instead of editing the system prompt and busting the prompt cache, each change is added as a small update at the next step. The entries also survive compaction

Excerpt ends here — this release continues at the source ↗.

Primary source ↗