Open-source terminal coding assistant
January 11, 2026
## Core - Ensure Codex built-in plugin is always available - Ensure /connect works for OpenAI Business plans by adding missing field - Track file modifications in ACP (@wid4t) - Pass sessionID to chat.system.transform (@spoons-and-mirrors) - Extract external directory validation to shared utility to reduce code duplication across tools - Exclude 'none' variant for gpt-5.2-codex (@Alejandro-CSt) - Follow symlinks by default in ripgrep searches (@kdcokenny) - Disable telemetry in the PHP language server (@madflow) ## TUI - Move props.ref to onMount in TUI component (@itsrainingmani) - Fixed command palette incorrectly highlighting items on mouse hover (@kitlangton) ## Desktop - Add ability to fork sessions in desktop app (@dbpolito) - Make mouse hover and click work on prompt input autocomplete (@dbpolito) - Add missing StoreExt import and fix unused mut warning in desktop (@jerome-benoit) - Fix missing import causing desktop build to fail (@Leka74) - Support configuring default server URL for desktop (@athal7) - Remove split operation in serverDisplayName function (@OpeOginni) **Thank you to 13 community contributors:** - @madflow: - fix: disable telemetry in the php lsp server (#7649) - @dbpolito: - fix(desktop): Allow Selecting Card Errors (#7506) - feat(deskop): Add Copy to Messages (#7658) - feat(desktop): Make mouse hover / click work on prompt input autocomplete (#7661) - feat(desktop): Fork Session (#7673) - @zerone0x: - fix(ui): allow text editing shortcuts in search dialogs on macOS (#7419) - @OpeOginni: - fix(desktop): remove split operation in serverDisplayName function (#7397) - @athal7: - feat: support configuring default server URL for desktop (#7363) - @kdcokenny: - fix(grep): follow symlinks by default in ripgrep searches (#7501) - @Alejandro-CSt: - fix: exclude 'none' variant for gpt-5.2-codex (#7682) - @Leka74: - fix(desktop): build failing - missing import (#7697) - @jerome-benoit: - fix(desktop): add missing StoreExt import and fix unused mut warning (#7707) - @spoons-and-mirrors: - feat: pass sessionID to chat.system.transform (#7718) - @kitlangton: - fix(opencode): command palette mouse hover highlights wrong item (#7721) - @wid4t: - feat(acp): track file modified (#7723) - @itsrainingmani: - fix(tui): move props.ref to onMount (#7702)
Features
January 10, 2026
## Core - Add ChatGPT-Account-Id header for organization subscriptions (@fdematos) **Thank you to 2 community contributors:** - @vtemian: - docs(ecosystem): add micode and octto plugins (#7327) - @fdematos: - fix: add ChatGPT-Account-Id header for organization subscriptions (#7603)
Features
January 10, 2026
## Core - Ensure GPT-5.2-codex has variants - Adjust Codex styling and fix hint display - Update docs and authentication methods for OpenAI - Improve Codex instructions prompt for better task planning - Add Codex authentication support ## TUI - Fix instance disposal to prevent memory leaks and dangling references **Thank you to 1 community contributor:** - @spoons-and-mirrors: - docs: add url based instructions to web docs (#7216)
Features
January 9, 2026
## Core - Disable server unless explicitly opted in - Report config errors instead of silent termination (@ariane-emory) - Upgrade OpenTUI to v0.1.72 - Resolve broken forked sessions with compactions due to missing parent-child message references (@ryanwyler) - Upgrade OpenTUI to v0.1.71, fixing capability detection and Kitty keyboard support - Deduplicate plugins by name with priority-based resolution (@devxoul) - Bump Copilot plugin version - Fix model dialog search issues in favorites/recents list and prevent deprecated models from appearing ## TUI - Enable API key prompt for Bedrock in auth login (@Raviguntakala) ## Desktop - Remove inline JavaScript from the app - Remove custom URL parameter from app - Prevent model picker overflow with Zen mode in new sessions (@0xajka) - Complete symlink support implementation and enable CI for PRs in desktop app (@jerome-benoit) - Store terminal and review pane visibility per session - Change terminal cursor to bar and stop blinking when not focused (@dbpolito) **Thank you to 8 community contributors:** - @RD201: - docs: Add Scaleway to provider docs (#7389) - @dbpolito: - feat(desktop): Change Terminal's Cursor to Bar and Stop Blinking when not focused (#7402) - @devxoul: - feat(config): deduplicate plugins by name with priority-based resolution (#5957) - @jerome-benoit: - fix(desktop): complete symlink support implementation and enable CI for PRs (#7113) - @0xajka: - fix: prevent model picker overflow with Zen in new sessions (#7495) - @ryanwyler: - fix: resolve broken forked sessions with compactions due to missing parent-child message references (#6445) - @Raviguntakala: - fix(cli): enable API key prompt for Bedrock in auth login (#7332) - @ariane-emory: - fix: report config errors instead of silent termination (#7522)
Features
January 9, 2026
## Core - Upgrade OpenTUI to v0.1.70 - Support multi-select questions - Document cargofmt in docs (@marc2332) ## TUI - Stop escape key propagation from dialogs - Use full file path for fuzzy matching in autocomplete (@bagatka) ## Desktop - Revert fix for opening external links in default browser - Cache session-scoped stores and add optional context gating - Incrementally render turns with markdown caching and lazy diff rendering - Gate hydration side-effects and handoff while stores load - Prefetch adjacent sessions in the app - Implement chunked message loading and lazy diff loading for improved performance - Fix project sidebar folder name display issue (@0xajka) **Thank you to 4 community contributors:** - @marc2332: - fix(docs): Document `cargofmt` (#7383) - @bagatka: - fix(ui): use full file path for fuzzy matching in autocomplete (#6705) - @0xajka: - Fix for #7229 Fix/project sidebar folder name (#7232) - @Anthuang: - feat(desktop): add Vesper theme (#7331)
Features
January 8, 2026
## Core - Add kind, title, and rawInput fields to ACP tool_call_update events (@noamzbr) - Add help text to debug command and subcommands (@assagman) - Allow disabling .claude prompt and skills loading (@freespace8) - Add interactive question tool for gathering user preferences and clarifying instructions - Fix issue with normal transform options conflicting with small model options when generating title - Write truncated tool outputs to files - Simplify task tool subagent filtering (@malhashemi) - Improved title generation to avoid repetitive "Analyzing..." prefixes - Use correct authorization server URL for OAuth discovery in MCP (@rscarvalho) - Config precedence now correctly allows local config to override remote (@elithrar) - Update Homebrew formula for anomalyco tap ## TUI - Restore showDetails check removed in Permission rework (@ryanwyler) - Cleanly restore terminal state on fatal error exit (@itsrainingmani) - Improve responsive layout by hiding header and footer when sidebar is visible - Simplified session settings management (@maxstevens-nl) - Remove unused imports and variables from header component - Add overlay sidebar for narrow screens to improve mobile experience - Add expandable bash output for long commands to improve readability - Remove username visibility toggle and simplify user message metadata display in TUI - Improve indentation and label clarity for TUI answer options - Ensure forked message text is inserted in prompt when forking conversations (@ariane-emory) - Use selected foreground color for permission selection text (@ariane-emory) - Constrain autocomplete height to available screen space in TUI (@Raviguntakala) - Add selectedListItemText to orange themes for button text visibility (@ThanhNguyxn) ## Desktop - Show custom models without valid release_date in web UI model selector (@zerone0x) - Open external links in default browser on desktop (@athal7) **Thank you to 15 community contributors:** - @elithrar: - fix: config precedence now correctly allows local config to override remote (#7141) - @ThanhNguyxn: - fix(theme): add selectedListItemText to orng themes for button text visibility (#7169) - @rscarvalho: - fix(mcp): use correct authorization server URL for OAuth discovery (#7234) - @Raviguntakala: - fix(tui): constrain autocomplete height to available screen space (#7181) - @malhashemi: - refactor: simplify task tool subagent filtering (#7165) - @ariane-emory: - fix: use selectedForeground's computer colour (or theme's selectedForeground value) for the colour of text in permission selection (resolves #7246) (#7251) - fix(tui): ensure forked message text is inserted in prompt (resolves #7257) (#7259) - @athal7: - fix(desktop): open external links in default browser (#7221) - @freespace8: - feat(flags): allow disabling .claude prompt and skills loading (#7205) - @aaroniker: - feat: Polish dialog, popover shadows & borders, add missing provider logos (#7326) - @assagman: - fix(cli): add help text to debug command and subcommands (#7328) - @maxstevens-nl: - refactor: session settings simplification (#7342) - @noamzbr: - fix: Add kind, title, rawInput to ACP tool_call_update events (#7368) - @zerone0x: - fix(app): show custom models without valid release_date in web UI mod… (#7349) - @itsrainingmani: - fix: cleanly restore terminal state on fatal error exit (#7359) - @ryanwyler: - fix(tui): restore showDetails check removed in Permission rework (#7285)
Features
January 7, 2026
## Core - Encode non-ASCII directory paths in HTTP headers (@jwaterwater) - Add truncation for all tools - Make General SubAgent visible in agent list (@dbpolito) - Improve handling of unserializable errors - Added ability to hide subagents from primary agent's system prompt (@Sewer56) - Add --use-system-ca flag in execArgv to support system certificate authorities - Ensure commands listing subagent work ## TUI - Add theme functionality - Reload theme when configuration changes - Clear palette cache - Add agent color to inline task tool ASCII character and highlight agent name (@spoons-and-mirrors) - Escape backticks when passing commands to PowerShell (@NSPC911) - Restore attach session lookup behavior in TUI (@rmk40) ## Desktop - Fix pasting images when input is empty in desktop app (@dbpolito) - Bundle media framework in desktop application (@Brendonovich) - Fixed macOS application entitlements configuration (@Brendonovich) - Add audio input and camera permissions to entitlements (@saeedvaziry) - Bundle media framework in AppImage for desktop application (@Brendonovich) - Use Show instead of Suspense in desktop application (@Brendonovich) - Add UI package to desktop application (@Brendonovich) - Show window immediately during desktop startup (@usvimal) - Rework storage approach in app - Fix session navigation with keyboard shortcuts - Permission auto-accept should hide when not needed - Improve terminal text selection visibility with better color contrast **Thank you to 11 community contributors:** - @rmk40: - fix(tui): restore attach session lookup behavior (#7150) - @NSPC911: - fix: escape backticks when passing to powershell (#7157) - @Sewer56: - Added: Ability to hide subagents from primary agents system prompt. (#4773) - @Brendonovich: - use custom tauri-cli on linux - desktop: use regular tauri cli again - desktop: use correct tauri-cli branch - try using forked tauri-cli again - add ui package to desktop - desktop: use Show instead of Suspense - desktop: appimage bundleMediaFramework - fix entitlements - desktop: go back to regular tauri cli - desktop: bundleMediaFramework - @spoons-and-mirrors: - add agent color to inline task tool ascii char and highlight agent name (#7142) - @usvimal: - perf: show window immediately during desktop startup (#6734) - @dbpolito: - Make General SubAgent not hidden (#6752) - Desktop: Fix Paste image on empty input (#7130) - @saeedvaziry: - Add audio input and camera permissions to entitlements (#7117) - @shuv1337: - feat: add Night Owl theme (desktop) (#7151) - @jwaterwater: - fix: encode non-ASCII directory paths in HTTP headers (#7145) - @athal7: - fix(ui): prevent iOS Safari auto-zoom on input focus (#7214)
Features
January 6, 2026
## Core - Add timeout to prevent hanging operations (@spoons-and-mirrors) - Add support for URL-based instructions (@spoons-and-mirrors) - Load OPENCODE_CONFIG_DIR AGENTS.md into the system prompt (@ThomasGormley) - Fix title generation for subtask-only messages to extract actual user prompts instead of generic tool execution descriptions - Ensure 'name' isn't being sent in request body for custom agent - Restore skill filtering by agent permissions (@malhashemi) - Add missing await for available skills in skill tool (@mwolting) - Prevent Java Language Server path checks from throwing errors (@T1mn) - Add automatic jp. prefix assignment for Tokyo region (ap-northeast-1) (@ikeda-tomoya-swx) - Polish documentation markdown wording and capitalization (@T1mn) - Filter dead worktrees in core functionality - Handle cases where git is not available or initialized - Upgrade OpenTUI to v0.1.69 with text rendering performance improvements ## TUI - Add frecency-based file autocomplete to CLI (@galkatz373) - Add keyboard shortcut 'c' to copy device code in OAuth flow (@akinfelami) - Fix sidebar title padding to prevent scrollbar edge case (@ryanwyler) ## Desktop - Copy and paste in terminal was broken - Fix desktop documentation - Increase contrast in terminal text for better readability - Add view button to open files from review sidebar (@justrau) - Open review sidebar when selecting file from picker (@justrau) - Add middle-click to close tabs in review sidebar (@justrau) - Improved web load performance through code splitting - Improve scroll store performance in app - Update Cargo.lock (@Brendonovich) - Add single-instance plugin to prevent multiple desktop windows (@Junseo5) - Make subtasks clickable in the task list (@OpeOginni) **Thank you to 21 community contributors:** - @OpeOginni: - Feat/clickable subtask (#6846) - @T1mn: - docs: polish markdown wording and capitalization (#7019) - docs: add Simplified Chinese README (#7055) - fix: prevent jdtls path checks from throwing (#7052) - @shanebishop1: - docs: fix order of permissions in agents docs (permissions subsection) (#7041) - @xiliumz: - fix: use actual version in install script (#7044) - @Junseo5: - fix(desktop): add single-instance plugin to prevent multiple windows (#6966) - @Brendonovich: - update Cargo.lock - @Eric-Guo: - Fix(app): @pierre/diffs will crash when a diff has undefined text (#7059) - @justrau: - feat(app): add middle-click to close tabs in review sidebar (#7094) - fix(app): open review sidebar when selecting file from picker (#7096) - feat(app): add view button to open files from review sidebar (#7095) - fix(app): open links in new tab or browser (#7127) - @athal7: - docs(ecosystem): add opencode-devcontainers plugin (#7100) - @ryanwyler: - fix: sidebar title padding to prevent scrollbar edge case (#7089) - @ikeda-tomoya-swx: - fix(provider): add jp. prefix auto-assignment for Tokyo region (ap-northeast-1) (#7053) - @akinfelami: - feat(tui): add 'c' shortcut to copy device code in OAuth flow (#7020) - @mwolting: - fix: add missing await for available skills in `skill` tool (#7072) - @malhashemi: - fix: restore skill filtering by agent permissions (#7042) - @jerome-benoit: - fix(desktop): use current_binary() to support symlinked executables (#7102) - @DamianB-BitFlipper: - docs: Expand keybinds documentation (#7108) - @ThomasGormley: - load `OPENCODE_CONFIG_DIR` AGENTS.md into the system prompt (#7115) - @galkatz373: - feat(cli): frecency file autocomplete (#6603) - @spoons-and-mirrors: - feat: url based instructions (#7125) - adding timeout (#7128) - @mtymek: - docs: add OpenCode-Obsidian plugin (#7129) - @dbpolito: - Desktop: Fix Big Messages (#7133)
Features
January 5, 2026
## Core - Fixed terminal long-running processes in app - Preserve permission config key order to maintain user-defined permission precedence - Pass image parts to custom commands (@melihmucuk) - Add support for jp. prefix in Amazon Bedrock cross-region inference profiles (@ikeda-tomoya-swx) - Add configuration options and authentication precedence for Bedrock (@wnkz) - Transform agent improvements and optimizations - Filter out empty messages and reasoning for Anthropic API compatibility ## TUI - Expand directory on Tab, select on Enter in TUI autocomplete (@yuguorui) - Update GitHub Actions examples to use actions/checkout@v6 (@joshuadavidthomas) - Fix Lucent Orange background transparency for slash commands (@roerohan) - Add description for MCP command in documentation (@cravenceiling) - Add system theme resolution and event handling to TUI - Improve experience when operations are interrupted ## Desktop - Store image attachments in the app - Fix bottom padding in app interface - Fixed terminal flakiness issues in the app - Performance improvements through event batching in app - Fix prompt input covering content in app - Worktree selection now correctly navigates to the selected worktree - Avoid unintended submits during IME composition (@MogamiTsuchikawa) - Highlight collapsed active project in sidebar (@albingroen) - Fix flicker and navigation issues when collapsing or expanding projects in the app (@albingroen) - Add CLI installation to desktop application (@dbpolito) - Fix image dragging in project edit dialog (@albingroen) **Thank you to 10 community contributors:** - @albingroen: - fix(app): fix image dragging in project edit dialog (#6700) - fix(app): fix flicker and navigation when collapsing/expanding projects (#6658) - feat(app): highlight collapsed active project in sidebar (#6958) - @dbpolito: - Desktop: Install CLI (#6526) - @MogamiTsuchikawa: - fix(app): avoid unintended submits during IME composition (#6952) - @wnkz: - feat(bedrock): config options and authentication precedence (#6377) - @cravenceiling: - docs: add description for MCP command (#6944) - @roerohan: - fix: lucent-orng bg transparency for slash commands (#6938) - @joshuadavidthomas: - docs: update GHA examples to use `actions/checkout@v6` (#6969) - @ikeda-tomoya-swx: - fix(provider): add support for jp. prefix in Amazon Bedrock cross-region inference profiles (#6916) - @melihmucuk: - fix: pass image parts to custom commands (#6525) - @yuguorui: - tui: autocomplete: expand directory on Tab, select on Enter (#6975)
Features
January 5, 2026
## Core - Fix permission rule matching to use permission field instead of pattern field - Fix permission evaluation to use rule-based matching instead of wildcard patterns - Handle skill scan failures for .claude files gracefully - Handle case where big-pickle is unavailable as a fallback - Prevent main model thinking variant from applying to small model (@melihmucuk) - Increase default timeout to 30 seconds based on user feedback - Add session search functionality with debounced input and server-side filtering - Improve Rust formatter detection and add cargo fmt support ## TUI - Allow exit when viewing child session in TUI (@rmk40) - Fix symmetric padding in TUI input field - Prevent session list rows from wrapping to two lines (@rgodha24) - Fix optional session access to prevent runtime errors in TUI ## Desktop - Implement auto-scroll for active command in slash popover (@OpeOginni) - Fix responsive menu in desktop application (@dbpolito) - Optimize model dialog visibility lookups (@shkumbinhasani) - Add home icon to responsive menu in desktop app (@dbpolito) - Add SVG preview support in session viewer (@shuv1337) - Add AppStream MetaInfo file for desktop application (@NN708) - Fix mobile screen size issues (@carterworks) - Fix custom slash commands not showing on initial / (@Raviguntakala) - Improved prompt input handling in the application **Thank you to 11 community contributors:** - @melihmucuk: - fix: prevent main model thinking variant from applying to small model (#6839) - @rgodha24: - fix: prevent session list rows from wrapping to 2 lines (#6812) - @albingroen: - fix(ui): fix select chevron alignment (#6690) - @Raviguntakala: - fix(app): fix custom slash commands not showing on initial / (#6829) - @carterworks: - Fix a few mobile screen size issues (#6808) - @NN708: - feat(desktop): add AppStream MetaInfo file (#6030) - @shuv1337: - feat(app): add SVG preview support in session viewer (#6868) - @dbpolito: - Desktop: Improve Big Session Navigation - Scrollable (#6837) - Desktop: Adding Home Icon on Responsive Menu (#6794) - Desktop: Fix Responsive Menu (#6789) - @shkumbinhasani: - perf: optimize model dialog visibility lookups (#6791) - @OpeOginni: - feat(desktop): implement auto-scroll for active command in slash popover (#6797) - @rmk40: - fix(tui): allow exit when viewing child session (#6898)
Features
January 4, 2026
This is a **major change** that overhauls the permissions system in OpenCode. ### Tools Merged into Permission The `tools` configuration has been deprecated and merged into the `permission` field. Previously, you could enable/disable tools like this: ```json { "tools": { "bash": true, "edit": false } } ``` Now, this should be configured using `permission`: ```json { "permission": { "bash": "allow", "edit": "deny" } } ``` The old `tools` config is still supported for backwards compatibility and will be automatically migrated to the permission system. ### Granular Permissions with Object Syntax Permissions now support granular control using an object syntax with pattern matching. When you specify a permission as an object, you can set different rules for different patterns: ```json { "permission": { "bash": { "npm *": "allow", "git *": "allow", "rm *": "deny", "*": "ask" }, "edit": { "*.md": "allow", "*.ts": "ask", "*": "deny" } } } ``` Each key in the object is a glob pattern that matches against the tool's input, and the value is the action to take: - `"allow"` - automatically approve - `"deny"` - automatically reject - `"ask"` - prompt the user for approval You can also set a blanket permission using a simple string: ```json { "permission": { "bash": "allow", "edit": "ask" } } ``` Or set all permissions at once: ```json { "permission": "allow" } ``` ### Breaking Changes for SDK Users The permission events have changed significantly. The new `PermissionNext` module (`permission/next.ts`) has a different event structure compared to the old `Permission` module (`permission/index.ts`): **Old Event Structure (`Permission.Event`):** - `Updated`: `{ id, type, pattern, sessionID, messageID, callID, message, metadata, time }` - `Replied`: `{ sessionID, permissionID, response }` **New Event Structure (`PermissionNext.Event`):** - `Asked`: `{ id, sessionID, permission, patterns, metadata, always, tool: { messageID, callID } }` - `Replied`: `{ sessionID, requestID, reply }` Key differences: - Event name changed from `permission.updated` to `permission.asked` - `type` renamed to `permission` - `pattern` is now `patterns` (array of strings) - `message` field removed - `response` renamed to `reply` - `permissionID` renamed to `requestID` - New `always` field contains patterns that would be approved for future requests if user selects "always" The reply values are the same: `"once"`, `"always"`, or `"reject"` ### Server Changes - New endpoint: `POST /permission/:requestID/reply` for responding to permission requests - Old endpoint `POST /session/:sessionID/permissions/:permissionID` is now deprecated - `GET /permission` now returns `PermissionNext.Request[]` instead of `Permission.Info[]` - Added CORS whitelist support via `server.cors` config option - Added Content-Type headers for proxied static assets - mDNS service name now includes port for uniqueness ### Other Changes - Agent `tools` field is deprecated - use `permission` instead - Agent `maxSteps` is deprecated - use `steps` instead - Unknown agent properties are now collected into `options` - Mode and plugin globs no longer search subdirectories (simplified to top-level only) ## Core - Add development scripts for better debugging workflow in TUI - Ensure @opencode-ai/plugin exists only on first run - Add MCP resources support (@paoloricciuti) - Initialize config in worktree - Prioritize free GPT-5-mini for small model in GitHub Copilot - Remove hardcoded .env read block and use new permissions model instead - Prevent duplicate plugin function initialization (@ShpetimA) - Update GitHub Copilot model priority list - Add variant field to chat message input - Update AGENTS.md documentation (@aryasaatvik) - Fixed dependency installation and git worktree branch creation - Fixed an issue in the codebase - Add sandbox support for git worktrees to allow working in multiple directories per project - Add timeout to MCP client connection calls (@RhysSullivan) - Add per-project MCP config overrides (@jknlsn) - Improve root detection for Gradle multi-project builds in Kotlin language server (@JBou) - Improve plugin loading to handle builtin plugin failures gracefully - Add reject message support to permission dialogs for better user feedback - Wrap queued user messages with reminder to stay on track - Add managed git worktrees - Upgrade OpenTUI to v0.1.68 using GPA - Add escape key handling to permission dialogs for better keyboard navigation - Add TUI session selection API endpoint for navigation (@code-yeongyu) - Add Kotlin LSP integration (@tjg184) - Merge instructions arrays across config files instead of overriding them (@elithrar) - Add variant support for minimal mode - Fix Cloudflare AI Gateway SDK chat undefined error (@englishm) - Handle NotFoundError for non-shared sessions in sync (@Hona) - Improve plugin loading to handle builtin plugin failures gracefully - Update CI configuration - Add reload functionality and improve lazy utility with reset capability - Remove memory leak fixes documentation after implementation - Fix memory leaks in session management and improve permission error handling - Fix TUI permission tests for new evaluate function signature - Improve permission error handling and evaluation logic in TUI - Ignore - Add assistant metadata to session export (@dmmulroy) - Ensure new permissions changes work for special case bash commands like rm, cd, etc - Rework permission system - Remove outdated Haiku filter for GitHub Copilot (@alcpereira) - Make install dependencies non-blocking - Use --no-cache flag when behind proxy to prevent connection hangs - Check for context overflow mid-turn in finish-step (@aryasaatvik) - Display error if invalid agent is used in a command (@Leka74) - Add Content-Type headers for proxied static assets (@monotykamary) ## TUI - Add missing theme list keybind in TUI (@aspiers) - Handle duplicate PR creation when agent creates PR (@elithrar) - Fix system theme diff highlighting in TUI - Add --variant flag to run command (@shuv1337) - Remove OpenRouter provider from priority list - Make LSP status icon muted when no LSPs are active (@itsrainingmani) - Make MCP status icon muted when no MCP servers are enabled (@itsrainingmani) - Pass attach directory to SDK client in TUI (@shuv1337) - Handle actions/checkout v6 credential storage change (@elithrar) - Use Bun.sleep instead of Promise with setTimeout (@edlsh) - Add Osaka Jade theme (@st-eez) - Add heap snapshot option to system menu for debugging memory usage - Fixed Windows fallback for "less" command in session list (@itsrainingmani) - Fix import command regex to properly handle file paths - Fix stats command day calculation and time filtering ## Desktop - Fix scroll position restoration in app - Don't override Ctrl+A on Windows - Improve auto-scroll behaviors in the application - Fixed editing projects in desktop application (@dbpolito) - Update server URL normalization to retain path (@OpeOginni) - Add image preview support in session viewer (@shuv1337) - Add /compact session command to compress conversation history - Adjust window drag region layout for desktop application - Relax request timeouts - Properly decode session ID for permission context in desktop app (@OpeOginni) - Work in progress on application features - Improve application startup time - Add work in progress desktop functionality - Add file context feature to app - Improve desktop window resize handle (@dbpolito) **Thank you to 30 community contributors:** - @monotykamary: - fix(server): add Content-Type headers for proxied static assets (#6587) - @Leka74: - fix: display error if invalid agent is used in a command (#6578) - @aryasaatvik: - fix(session): check for context overflow mid-turn in finish-step (#6480) - docs: update AGENTS.md (#6800) - @alcpereira: - fix: remove outdated Haiku filter for GitHub Copilot (#6593) - @dbpolito: - Desktop: Improve Resize Handle (#6608) - Desktop: Edit Project Fix (#6757) - @itsrainingmani: - fix: windows fallback for "less" cmd in `session list` (#6515) - fix(tui): make mcp status icon muted when no mcp servers are enabled (#6745) - fix(tui): make lsp status icon muted when no lsps are active (#6773) - @dmmulroy: - feat: add assistant metadata to session export (#6611) - @Hona: - fix(share): handle NotFoundError for non-shared sessions in sync (#6634) - @OpeOginni: - fix(desktop): Properly decode session id for permission context (#6580) - fix(server): update server URL normalization to retain path (#6647) - @albingroen: - fix(ui): fix slight vertical overflow in project selector (#6589) - @st-eez: - feat(theme): add Osaka Jade theme (#6609) - @edlsh: - refactor: use Bun.sleep instead of Promise setTimeout (#6620) - @englishm: - fix: cloudflare-ai-gateway sdk.chat undefined error (#6407) - @elithrar: - fix: handle actions/checkout v6 credential storage change (#6667) - fix: merge instructions arrays across config files (#6663) - github: handle duplicate PR creation when agent creates PR (#6777) - docs: add logging best practices for plugin authors (#6833) - @spoons-and-mirrors: - docs: add subtask2 to ecosystem page (#6704) - @tjg184: - feat: Add kotlin lsp integration (#6601) - @code-yeongyu: - feat(plugin): add tui.session.select API endpoint for TUI navigation (#6565) - @shuv1337: - fix(tui): pass attach directory to sdk client (#6715) - feat(app): add image preview support in session viewer (#6678) - feat: add --variant flag to run command (#6805) - @JBou: - fix(kotlin-ls): improve root detection for Gradle multi-project builds (#6717) - @jknlsn: - feat: add per-project MCP config overrides (#5406) - @sin4ch: - docs: enhance MCP servers documentation with a tip (#6713) - @RhysSullivan: - fix(mcp): add timeout to client.connect() calls (#6760) - @jerilynzheng: - docs: Add Vercel AI Gateway to provider docs (#6790) - @benjaminshafii: - docs: Add opencode-scheduler plugin to ecosystem (#6804) - @ShpetimA: - fix(plugin): prevent duplicate plugin function initialization (#6787) - @johnconnor-sec: - docs: typo in subtask documentation (#6821) - @felipeorlando: - Remove opencode-skills entry from ecosystem.mdx (#6817) - @jerome-benoit: - feat(nix): preliminary desktop app flake integration (#6135) - @paoloricciuti: - feat: mcp resources (#6542) - @aspiers: - fix(tui): add missing `theme_list` keybind (#6779)
Features
January 1, 2026
## Core - Add Windows support for PTY and cross-platform build scripts in desktop application (@Hona) - Prevent TimeoutOverflowWarning by capping setTimeout delay to maximum 32-bit signed integer value ## Desktop - Add in-app update toasts to desktop application - Add subagent mention support to desktop application (@dbpolito) **Thank you to 2 community contributors:** - @dbpolito: - Desktop: Add Subagents Mention Support (#6540) - @Hona: - fix(desktop): Windows support for PTY and cross-platform build scripts (#6508)
Features
December 31, 2025
## Core - Default to ai-sdk/openai-compatible when no npm package is provided - Add support for LSP workspace/didChangeWatchedFiles notifications (@marceldev89) ## Desktop - Improved model selector in app - Auto-accept colors in app - Fix tooltip colors in desktop application - Better affordance for auto-accept in desktop app - Add input changes functionality - Don't show notifications when auto-accepting tasks in desktop app - More defensive access in desktop application - Better variant toggle in app - Add keybind tooltip component to app - Fix desktop prompt input cleanup behavior **Thank you to 2 community contributors:** - @marceldev89: - Add support for LSP workspace/didChangeWatchedFiles (#6524) - @vtemian: - fix(tui): don't show 'Agent not found' toast for subagents (#6528)
Features
December 31, 2025
## Core - Fix plugin and mode glob patterns - Add debug agent subcommand to test agents in isolation (@Eric-Guo) - Display MCP tag for prompts in autocomplete but not in prompt (@paoloricciuti) ## TUI - Clarify agent-name placeholder in tips (@anzulaqeel-anunzio) ## Desktop - Remove status bar and add new elements in header - Better new session button in desktop app - Add unified diff toggle to desktop application - Fix desktop not rendering large sessions **Thank you to 4 community contributors:** - @paoloricciuti: - fix: display MCP tag for prompts in autocomplete but not in prompt (#6531) - @anzulaqeel-anunzio: - fix: Clarify agent-name placeholder in tips (#6520) - @Eric-Guo: - feat(cli): New debug agent <name> subcommand (#6529) - @backnotprop: - docs: Add plannotator plugin (#6510)
Features
December 31, 2025
## Core - MDNS no longer fails when service is already registered - Allow configurable CORS hosts - Add MCP prompts as slash commands (@paoloricciuti) - Add Gemini 3 Flash to fast models list (@junmediatek) - Bundle @ai-sdk/vercel version 1.0.31 for AI SDK v5 support (@OpeOginni) - Cleaner view for subagents hint text - Add configurable timeout for MCP tool calls to prevent hanging requests - Read plural resource types and stop erroring on them - Fix OpenAI variants for Codex models - Add model usage statistics with input/output token breakdown to stats command (@processtrader) - Add rustfmt formatter for Rust files (@frhd) - Ensure variants work for completely custom models ## TUI - Adjust keys for uniqueness calculations to use provider/model ## Desktop - Don't open native folder select when connected to remote server - Add model variants support to app - Better notification icon in desktop app - Upgrade to latest version on error page in desktop app **Thank you to 6 community contributors:** - @frhd: - feat(format): add rustfmt formatter for Rust files (#6482) - @processtrader: - feat: add model usage statistics with input/output token breakdown to stats command (#6296) - @brianclinkenbeard: - Update mise install command (#6504) - @OpeOginni: - feat: bundle in @ai-sdk/vercel version 1.0.31 for aisdk v5 support (#6512) - @junmediatek: - feat: add gemini-3-flash to fast models list (#6497) - @paoloricciuti: - feat: mcp prompts as slash commands (alternative) (#5767)
Features
December 30, 2025
## Core - Add CORS exception for Tauri desktop application - Add Prisma language server (@ravshansbox) - Add extract reasoning middleware (@snipeship) **Thank you to 2 community contributors:** - @snipeship: - feat: add extract reasoning middleware (#6463) - @ravshansbox: - Add prisma language server (#6462)
Features
December 30, 2025
## Core - Allow CORS requests from *.opencode.ai subdomains **Thank you to 1 community contributor:** - @anntnzrb: - style(nix): use idiomatic inherit syntax (#6457)
Features
December 30, 2025
## TUI - Fixed high CPU usage and memory leak when filtering model list to empty results (@d3vr) ## Desktop - More defensive agent access in desktop application **Thank you to 1 community contributor:** - @d3vr: - Fix: High CPU / memory leak when filtering model list window to empty results (#6435)
Features
December 30, 2025
## Core - Fix Cloudflare provider information (@roerohan) ## Desktop - Sort desktop servers by health status - Don't persist fallback server URLs in desktop app - Improved text selection behavior in the app - Share projects across all local servers in desktop app **Thank you to 1 community contributor:** - @roerohan: - fix: cloudflare provider information (#6426)
Features
December 30, 2025
## Core - Upgrade OpenTUI to v0.1.67, fixing split diff alignment and markdown jitter ## Desktop - Don't hang on to dead server in desktop app
Features
December 30, 2025
## Core - Revert OpenTUI to 0.1.63 to fix streaming jitter regression (@ryanwyler) **Thank you to 2 community contributors:** - @connorads: - docs: global claude skills (#6436) - @ryanwyler: - fix: revert opentui to 0.1.63 to fix streaming jitter regression (#6439)
Features
December 30, 2025
## Core - Add ability to open projects in web interface - Read global Claude skills in addition to project-specific skills - Use named import for bonjour-service to fix module resolution (@Jkker) - Add variants toggle - Expose server URL to plugins (@EduSantosBrito) - Upgrade OpenTUI to v0.1.66 fixing split diff alignment ## TUI - Prevent model list corruption from SolidJS reactivity (@joachim-isaksson) ## Desktop - Add readline shortcuts to desktop app - Disable sourcemap generation in desktop build - Add system notifications support for desktop application **Thank you to 4 community contributors:** - @sneycampos: - fix: Correct theme command in tui.mdx (#6410) - @EduSantosBrito: - feat(plugin): expose server URL to plugins (#6373) - @Jkker: - fix(mdns): use named import for bonjour-service (resolves #6422) (#6423) - @joachim-isaksson: - fix: prevent model list corruption from SolidJS reactivity (#6359)
Features
December 30, 2025
## Core - Add timeout to file watcher subscriptions - Adjust git watcher to ignore files other than HEAD - Set small options for Google models on OpenRouter (@neominik) - Add Nix syntax highlighting (@anntnzrb) - Make format parameter optional with markdown default in WebFetch (@samcornor) - Filter messages with only step-start parts in toModelMessage (@coleleavitt) - Add nixfmt formatter for Nix files (@anntnzrb) ## Desktop - Fix error page formatting in desktop app - Improve error messages in desktop app **Thank you to 7 community contributors:** - @anntnzrb: - feat(format): add nixfmt formatter for Nix files (#6380) - feat(highlight): add nix syntax highlighting (#6386) - @coleleavitt: - fix: filter messages with only step-start parts in toModelMessage (#6383) - @gbpdt: - Support different Nix store path prefixes (#6367) - @nexxeln: - add supermemory plugin to ecosystem (#6399) - @samcornor: - fix(webfetch): make format parameter optional with markdown default (#6345) - @neominik: - Set smallOptions for google models on openrouter (#6362) - @panta82: - docs: opencode notificator plugin (fixed link) (#6341)
Features
December 29, 2025
## Core - Prevent truncated Claude streams (@CasualDeveloper) - Fix ESLint LSP server auto-installation failure on Windows (@fraineralex) - Install local plugin dependencies from package.json (@elithrar) - Preserve imperative statements in summary generation - Add support for region and bearer token configuration in Bedrock (@wnkz) - Add support for `.claude/skills` directory (@connorads) ## TUI - Make authentication URLs clickable regardless of line wrapping in terminal interface (@brettheap) ## Desktop - Fix scroll synchronization in desktop application - Improve desktop performance and scrolling behavior - Add auto-accept edits toggle in desktop application - Add image preview and deduplicate file uploads in desktop application (@dbpolito) - Improve desktop application performance and reduce jankiness - Revert desktop jankiness fix - Fix desktop application jankiness - Add project editing functionality in desktop application (@dbpolito) - Improve state update granularity for permissions in desktop application - Improve state update granularity in desktop application - Synchronize last agent and model when changing sessions in desktop application - Fix context usage alignment in desktop application **Thank you to 9 community contributors:** - @connorads: - feat: add support for `.claude/skills` directory (#6252) - @wnkz: - fix(bedrock): support region and bearer token configuration (#6332) - @3mdistal: - docs: clarify that MCP tools require glob patterns to disable (#6306) - @elithrar: - docs: add compaction, watcher, experimental and provider options (#6304) - meta: use colors for agents (#5845) - feat: install local plugin dependencies from package.json (#6302) - @dbpolito: - Desktop: Edit Project (#6360) - Desktop: Image Preview and Dedupe File Upload (#6372) - @airtonix: - docs: add opencode-skillful plugin to ecosystem page (#6333) - @fraineralex: - fix(lsp): ESLint LSP server fails to auto-install on Windows (#6366) - @brettheap: - fix(tui): make auth URLs clickable regardless of line wrapping (#6317) - @CasualDeveloper: - fix: prevent truncated Claude streams (#6388)
Features
December 29, 2025
- Sync LSP updates (@dbpolito) - Added theme preview - Include current working directory in local MCP transport (@dbpolito) **Thank you to 4 community contributors:** - @didier-durand: - doc: fix typos in various files (#6294) - @dbpolito: - Include current working directory in local MCP transport (#6303) - Desktop: Sync LSP updates (#6305) - @mohak34: - docs: add opencode-notifier plugin to ecosystem (#6283) - @elithrar: - docs: add plugin configuration documentation (#6301)
Features
December 28, 2025
- Thinking & tool call visibility settings for `/copy` and `/export` (@rektide) - Add bash shell completions (@scarf005) - Fix stats command to correctly handle `--days 0` for current day statistics (@processtrader) - Fix: search all recent models instead of only top 5 in TUI /models command - Allow line numbers and ranges in autocomplete (@ewired) - Themes - Fix copy/paste in terminal - Fix: drag file over entire body to attach - Fix: handle non-text response parts in GitHub action (@elithrar) **Thank you to 7 community contributors:** - @ewired: - Allow line numbers and ranges in autocomplete (#4238) - @panta82: - docs: add opencode-notificator to ecosystem plugins list (#6269) - @processtrader: - fix: stats command to correctly handle `--days 0` for current day statistics (#6259) - @Nindaleth: - docs: document attach command (#6254) - @scarf005: - feat: add bash shell completions (#6239) - @rektide: - Thinking & tool call visibility settings for `/copy` and `/export` (#6243) - @elithrar: - fix: handle non-text response parts in GitHub action (#6173)
Features
December 27, 2025
- Added path traversal protection to File.read and File.list (#5985) - Added ability to disable spinner animation (#6084) - Added shfmt formatter for shell scripts (#6204) - Added configurable compaction settings to allow users to disable auto-compaction and pruning via config instead of flags - Fixed compact command after revert now properly cleans up revert state (#6235) - Fixed compaction config checks to properly respect user settings - Fixed `opencode web` baseURL error (#6181) - Fixed upgrade command to use gh releases page if not npm/bun/pnpm install method - Fixed mdns global config - Reapplied optional mdns service - Updated transform for gemini models so that topP and topK match gemini-cli values - Only show diagnostics block when errors exist (#6175) - Added MCP UI (#6162) - Added permissions - Fixed prompt input fixes, directory and branch in status bar - Handle more errors - Added support for issues and workflow_dispatch events (#6157) **Thank you to 9 community contributors:** - @JackNorris: - fix: only show diagnostics block when errors exist (#6175) - @didier-durand: - doc: fix typos in various files (#6196) - doc: fix typos in various files (#6238) - @dbpolito: - Desktop: MCP UI (#6162) - @robertocarvajal: - fix(dep): Update package.json - fix perplexity provider version (#6199) - @anntnzrb: - feat: add shfmt formatter for shell scripts (#6204) - feat: add ability to disable spinner animation (#6084) - @rgodha24: - fix: `opencode web` baseURL error (#6181) - @elithrar: - github: support issues and workflow_dispatch events (#6157) - @ochsec: - fix: compact command after revert now properly cleans up revert state (#6235) - @edlsh: - feat: add path traversal protection to File.read and File.list (#5985)
Features
December 26, 2025
- Make JDTLS use the correct config directory on Windows (@apersomany) - Added Haskell LSP support (@amerocu) **Thank you to 2 community contributors:** - @amerocu: - feat: haskell lsp support (#6141) - @apersomany: - fix(lsp): make JDTLS use the correct config directory on Windows (#6121)
Features
December 26, 2025
- Fixed padding - Moved session context to top-right - Fixed missing keybinds in tooltips - Fixed can't collapse project with active session - Added better indicator that session is busy
Features
December 25, 2025
- Fixed server connection failure display - Fixed Content-Type headers for static assets on app.opencode.ai (@sourman) - Disabled tips display in home route **Thank you to 3 community contributors:** - @robbtolli: - docs: Corrected the number of built-in subagents in documentation (#6133) - @connorads: - docs: update skills to use canonical `~/.config/opencode` location (#6132) - @sourman: - fix: correct Content-Type headers for static assets on app.opencode.ai (#6113)
Features
December 24, 2025
- Added "Did you know?" start screen tips - Added prompt stashing (@RhysSullivan) - Handle tools/list_changed notifications in MCP (@seuros) - Console copy-to-clipboard via opentui (@edlsh) - Fixed textarea resizing when pasting prompt less than 150 characters (@OpeOginni) - Prevented keybinds from executing when dialog is open (@anntnzrb) - Fixed favorites and recents stay visible when filtering models (@DanielFGray) - Updated current todo style - Updated import and PR commands to use new share link URL - Made "The socket connection was closed unexpectedly" errors retryable - Improved error retry logic - Fixed session sort when multiple active - Fixed an issue where text selection was disabled - Excluded deprecated models - Conditionally show review pane toggle - Fixed GitHub Pull Request event handling (@dbpolito) - Added Cloudflare AI Gateway provider (@elithrar) **Thank you to 12 community contributors:** - @dbpolito: - Fix Github Pull Request Event (#6037) - @RhysSullivan: - [feat]: prompt stashing (#6021) - @anntnzrb: - fix(tui): prevent keybinds from executing when dialog is open (#6017) - feat(install): add standard CLI flags (--help, --version, --no-modify-path) (#5885) - @elithrar: - docs: add MCP OAuth debugging section (#6047) - providers: add Cloudflare AI Gateway (#5174) - @DanielFGray: - fix: favorites and recents stay visible when filtering models (#6053) - @JRedeker: - Add opencode-shell-strategy plugin to ecosystem (#5995) - @nagyv: - Update gitlab.mdx to use the 2.x component version (#6062) - @OpeOginni: - fix: resize textarea when pasting prompt less than 150 chars (#6070) - @edlsh: - feat(tui): console copy-to-clipboard via opentui (#5658) - @seuros: - feat(mcp): handle tools/list_changed notifications (#5913) - @xiantang: - docs: add Neovim to the list of editors (#6081) - @R44VC0RP: - fix: remove SVG favicon to improve SEO (#5755)
Features
December 23, 2025
- Improved `mcp` CLI and added ability to debug MCP OAuth (@elithrar) - Fixed handling of Windows CRLF line endings in grep tool (@majiayu000) - Added per-agent filtering to skill tool description (@malhashemi) - Better styling for small screens (short and/or not wide) - Changed task tool container to block layout for better subagent session display - Better error messages on connection failure - Allowed compaction hook to replace prompt entirely (@joelhooks) **Thank you to 5 community contributors:** - @malhashemi: - feat(skill): add per-agent filtering to skill tool description (#6000) - @joelhooks: - feat(plugin): allow compaction hook to replace prompt entirely (#5907) - @majiayu000: - fix: handle Windows CRLF line endings in grep tool (#5948) - @elithrar: - improve `mcp` CLI + ability to debug MCP oauth (#5980) - @Brendonovich: - console: add AppImage download link
Features
December 22, 2025
- Added experimental LSP tool - Added nixd as LSP for Nix language (@luochen1990) - Supported clipboard image paste (Ctrl+V) on Windows (@zzzeian) - Ensured installation commands use .quiet (@val-2) - Added mobile responsiveness - Added ARM64 build for Linux (@NN708) - Polished dialog and list styles for the desktop app, and added fixed logos (@aaroniker) - Cleaned up auto scroll - Filtered child sessions from header - Exposed auto parameter in session.summarize for plugins (@code-yeongyu) - Added Agent Skills support - Improved built-in /review prompt (@elithrar) - Adjusted Minimax m2 topK and added Minimax m2.1 topP - Fixed snapshots to be performed in cases where finish-step is not reached (@noamzbr) **Thank you to 12 community contributors:** - @code-yeongyu: - feat(server): expose auto param in session.summarize for plugins (#5924) - @elithrar: - prompts: improve built-in /review prompt (#5918) - @noamzbr: - fix: Perform snapshot in cases finish-step is not reached (#5912) - @zzzeian: - fix: support clipboard image paste (Ctrl+V) on Windows (#5919) - @ben-vargas: - docs: add ai-sdk-provider-opencode-sdk to ecosystem (#5772) - @val-2: - fix: ensure installation commands are using .quiet (#5758) - @luochen1990: - feat: add nixd as lsp for nix language (#5929) - @Brendonovich: - remove actions artifact uploading - try uploading artifacts in workflow - @NN708: - feat(desktop): arm64 build for linux (#5935) - @aaroniker: - feat: polish dialog & list styles for the desktop app, add fixed logos from models.dev (#5925) - @majiayu000: - fix: use current page port instead of hardcoded 4096 (#5949) - @ashutoshpw: - server: ensure frontend has correct port for PTY websocket connections (#5898)
Features
December 21, 2025
- Fixed LSP server binary installation and shell command execution - Updated kimi-k2 and kimi-k2-thinking to use recommended temperature values - Fixed SDK context usage and server port fallback - Added syntax highlighting for .ets files (@nalin-singh) - Updated to the official MCP SDK for better tool schema handling (@seuros) - Added support for schedule events (@elithrar) **Thank you to 5 community contributors:** - @elithrar: - github: support schedule events (#5810) - @seuros: - fix: use official MCP SDK for better tool schema handling (#5463) - @ahosker: - fix: prevent stats workflow from running on forks (#5897) - @nalin-singh: - feat: add syntax highlighting for .ets files (#5889) - @HelloGGX: - fix(deps): add missing @opencode-ai/plugin to dependencies (#5797)
Features
December 21, 2025
- Added verification that at least 1 primary agent is enabled - Better error reporting - Fixed file loading errors **Thank you to 1 community contributor:** - @christso: - Make CLI build script Windows-friendly (#5835)
Features
December 21, 2025
**Thank you to 8 community contributors:** - @rcssdy: - feat: add cursor theme (#5850) - @anntnzrb: - fix: prioritize session list loading when resuming with -c (#5816) - docs: add name property to model configuration example (#5853) - @majiayu000: - fix: add transform case for gemini if mcp tool has missing array items (#5846) - @elithrar: - feat: support configuring a default_agent across all API/user surfaces (#5843) - @ShpetimA: - fix: system theme flicker (#5842) - @shamil2: - feat: add Catppuccin Frappé theme (#5821) - @R44VC0RP: - feat(docs): adding .md to docs pages shows raw markdown (#5823) - docs: clarify model ID format for OpenCode provider (#5854) - @YuY801103: - docs: add Traditional Chinese (Taiwan) README translation (#5861)
Features
December 20, 2025
- Added endpoints to delete and update message parts (@remorses) - Fixed sidebar UX issues - Fixed event reconnect gaps **Thank you to 1 community contributor:** - @remorses: - feat: add endpoints to delete and update message parts (#5433)
Features