---
title: "v2.3.0 - October 13, 2026"
url: "https://docs.mekodata.ai/changelog/installer/v2.3.0/"
---

# v2.3.0 - October 13, 2026

Release notes for installer and public skills plugin v2.3.0 - OpenCode support, capture recovery, and broader context search.

This release covers version 2.3.0 of the `@yugabytedb/meko-mcp` installer and the public Meko agent skills plugin.

Published skill versions: `meko-mcp-tools` 3.2.0, `meko-mcp-tools-desktop` 2.9.0, `meko-select-datapack` 1.1.3, and `meko-select-datapack-desktop` 1.2.2.

## Install or upgrade

```bash
npx @yugabytedb/meko-mcp@2.3.0
```

Claude Desktop can also install the MCP server from [meko-2.3.0.mcpb](/downloads/meko-2.3.0.mcpb). That file installs the MCP server only. It doesn't install the Desktop skills. See [Claude Desktop](/integrations/connect-to-ai-agent/#desktop-extension).

Claude Code users can also [update the skills plugin directly](/integrations/connect-to-ai-agent/#updating-the-skills-plugin).

The public plugin source is in [`yugabyte/meko-skills`](https://github.com/yugabyte/meko-skills).

## Changes

### New features

- **OpenCode CLI and TUI support** - `--client opencode` configures OpenCode 1.18.x at user or project scope, installs the Meko skill, migrates existing local sessions, and captures new conversations. Restart OpenCode after installation.
- **Kiro power package** - the public `meko-skills` repository now includes a Kiro Agent Plugin package for registry submission. It uses Kiro's OAuth sign-in and includes Meko memory guidance and connection troubleshooting. It doesn't capture conversations automatically.
- **Capture cleanup commands** - `--capture-cleanup status` inspects capture processes and unsent work. Use `stop` to park retries, `drain` to send parked work in the foreground, `resume` to return it to normal retries, `repair` to clear failure fields on sessions that are already fully delivered, and `discard` only when you intend to delete unsent exchanges. `repair` also removes leftover timer, lease, and job files for processes that are gone. Parking works with the capture hooks from 2.2.0 onward, so `npx @yugabytedb/meko-mcp@latest --capture-cleanup stop` stops retries without upgrading.
- **Broader context search** - the updated skills use `context_search` for open-ended questions such as "what do you know about X?". It searches personal memory, shared knowledge, and past conversations and returns each source in a separate result bucket. The Claude Code installer pre-allows `mcp__meko__context_search`, and the SessionStart text sends that question to `context_search`.

### Improvements

- **Stable agent IDs from the repository root** - sessions started in a subdirectory now use the repository name instead of names such as `docs`, `src`, or `webapp`. Sessions outside a repository use the client name. A linked git worktree uses the worktree directory name, so worktrees of the same repository keep separate agent IDs. Existing sessions started in a subdirectory write new turns under the repository-based agent ID after upgrading.
- **Clear migration outcomes** - `--migrate-status` reports whether a run succeeded, failed, was cancelled, or crashed, and points to the failure log.
- **Codex app authentication** - API-key installs now set `MEKO_API_KEY` in the macOS launchd environment. Quit every running Codex process and relaunch Codex after installation so it reads the new value. A process that stays open keeps the environment it had when it started.
- **Current tool guidance** - the public agent skills, `meko-mcp-tools` and `meko-mcp-tools-desktop`, list all 25 tools, including `context_search` and `knowledgebase_delete_document`, and use the current required arguments and response fields.

### Fixes

- **Capture continues after one rejected exchange** - a transcript payload rejected by the edge proxy is recorded as dropped instead of blocking every later exchange in that session.
- **Capture reports the server's reason** - a quota rejection returned as HTTP 402 or 403 is reported as a quota problem. Status and SessionStart notices carry that reason.
- **A missing datapack is an error** - the server returns `datapack_id_required` when no datapack resolves. It used to report success for a conversation it never stored. The SessionStart hook tells the agent to pin a datapack, and `--migrate` marks the session failed so a rerun retries it.
- **Denied datapack access holds the queue** - `datapack_access_denied` means the target datapack isn't owned by or shared with the account. Queued turns stay in the outbox until access is restored.
- **Long writes aren't sent again** - capture now reads server-sent event keepalives correctly while a conversation turn takes more than 10 seconds to store.
- **Deleted conversations recover** - after repeated not-found responses, capture creates a new conversation for the undelivered turns without replaying turns already stored.
- **Claude Code captures the user's turn** - loaded skill text, background task notifications, and a subagent's final report stay with the turn that produced them instead of being stored as new user requests. `--migrate` applies the same rules to imported Claude Code history.
- **SessionStart memory preload works again** - Claude Code now loads the recent-memory window using the server's current request and response fields.
- **Claude Desktop reports the Meko failure** - when a Meko call fails, Claude Desktop reports the failure. It doesn't read a local file as a fallback.
- **A conversation that is too large to load stays usable** - when the trace is too large, `conversation_get` and `conversation_update` return `not_found` or time out. Agents accept that result and keep working. They don't retry the read or recreate the conversation.

### Known limitations

- OpenCode support covers CLI and TUI 1.18.x. It doesn't cover OpenCode Desktop, V2 preview APIs, headless or remote sessions, or child-session migration.
- OpenCode capture stores visible user text and the first visible assistant message. It doesn't store tool calls, hidden reasoning, files, attachments, or streaming output. Compaction summaries aren't excluded from capture.
- `context_search` reports each source separately. An empty bucket can mean that source failed, so agents confirm with `memory_search` or `knowledgebase_search` before reporting that nothing is stored.
- Claude Code capture can skip a prompt that includes a pasted image. The image caption is written as its own user entry, so the prompt's turn has no assistant reply to store.
