Cómo actualizar a OpenCode 2.0: migra tu configuración, plugins y sesiones de v1
Actualizado el

Respuesta corta: haz copia de seguridad de las carpetas de OpenCode, actualiza a la última versión 1.x y luego ejecuta la actualización mayor.
# 1. Copia de seguridad de la configuración y los datos (las sesiones están en la carpeta de datos)
cp -R ~/.config/opencode ~/opencode-v1-config-backup
cp -R ~/.local/share/opencode ~/opencode-v1-data-backup
# 2. Pasa primero a la última 1.x (--major existe desde v1.19.0)
opencode upgrade
# 3. Pasa a OpenCode 2
opencode upgrade --majorDentro de la interfaz de terminal, /update hace lo mismo. Si prefieres una instalación limpia, elimina primero el paquete de v1 y usa uno de los comandos de instalación de v2 del Paso 3.
La mayoría de los ajustes de v1 siguen funcionando. Tres cosas se rompen a propósito: los plugins de v1 no cargan, la API del servidor es nueva y tui.json se sustituye por cli.json. Otros dos cambios, más discretos, pillan a mucha gente desprevenida: v2 ya no lee CLAUDE.md y permite por defecto el acceso a carpetas fuera del proyecto. El resto de esta guía cubre cada punto, además de los bugs conocidos de las primeras semanas de 2.x.
Qué comprobamos y qué no: El 25 de octubre de 2026 revisamos el lado de v1 en macOS con OpenCode 1.18.19 instalado. Leímos sus comandos
upgrade,export,sessionydebug paths. También leímos los datos del registro de npm de@opencode/cli2.1.4 y los issues de GitHub y respuestas de los mantenedores citados más abajo. No ejecutamos OpenCode 2 para esta guía. Todo lo que se dice sobre el comportamiento de v2 viene de la guía de migración (opens in a new tab) oficial, la documentación de v2 (opens in a new tab), el anuncio de OpenCode 2.0 (opens in a new tab) y esas respuestas de los mantenedores. Enlazamos cada fuente. El 4 de noviembre de 2026 volvimos a comprobar las versiones, las páginas de releases y los hilos de issues con@opencode/cli2.2.5 yopencode-ai1.19.5.
- Actualizar a pandas 3.1: Pandas4Warning de inplace y read_csv más rápido
- Cómo actualizar a OpenCode 2.0: migra tu configuración, plugins y sesiones de v1
- Cómo instalar y actualizar a Python 3.15 con uv: importaciones diferidas (lazy imports) y compatibilidad de paquetes
- Tutorial de Claude Code Mods: cómo crear, probar e instalar tu primer mod, con 15 ejemplos de la comunidad
- Cómo usar GPT Image 2.5: Flare vs. Sunburst y precios de la API
- Cómo usar DeepSeek Harness: instalación, configuración y tu primer agente
- Runcell Science: alternativa open source a Claude Science para investigación
- Cómo evitar que Mac se duerma: mantener Codex, Claude Code y agentes de IA corriendo
- OpenClaw vs ZeroClaw vs Pi Agent vs Nanobot: ¿Qué stack de agentes de IA deberías elegir en 2026?
- Cómo Claude Code analiza notebooks de Jupyter en Data Science: lo que sí hace y lo que no
- Claude Code routines: qué son y por qué importan los cron jobs de agentes de IA
- Claude Code Desktop Bypass Permissions: cómo activarlo
- Cómo Construir Dos Agentes en Python con el Protocolo A2A de Google - Tutorial Paso a Paso
- Las 10 principales bibliotecas de visualización de datos en Python que crecen en 2025
¿Conviene actualizar ya?
OpenCode 2.0 llegó a npm el 11 de septiembre de 2026 como @opencode/cli. Muchos usuarios de v1 que instalaron con npm o con el script de instalación no lo vieron hasta octubre (los usuarios de Homebrew core lo recibieron antes; consulta la trampa de Homebrew en el Paso 3). El motivo: la ruta opencode upgrade --major llegó con v1.19.0 el 11 de octubre, y el equipo anunció 2.0 el 14 de octubre. El anuncio alcanzó 888 puntos en Hacker News. Desde el 11 de octubre, el repositorio ha recibido más de 4.000 issues nuevos, y 130 de ellos mencionan 2.0.
Ahora las dos versiones se publican en paralelo. opencode-ai en npm sigue siendo v1 (1.19.5 el 28 de octubre). @opencode/cli es v2 (2.2.5 el 30 de octubre). Desde v2.2.0 (27 de octubre), las builds de 2.x también aparecen en GitHub Releases (opens in a new tab), pero la release marcada como Latest sigue siendo 1.x. Es deliberado: v1 busca actualizaciones a través de la release Latest, y el equipo no quiere que la actualización automática de v1 salte a 2.x (#57675 (opens in a new tab)).
| Tu configuración | Recomendación |
|---|---|
| OpenCode básico, pocos proveedores, sin plugins | Actualiza. Para ti cambia muy poco |
Dependes de CLAUDE.md para las reglas del proyecto | Mueve primero las reglas a AGENTS.md y luego actualiza |
| Usas Oh My OpenCode (oh-my-openagent) | Actualízalo antes a la 5.1.38 o posterior. Las versiones anteriores no cargan en 2.x |
| Usas otros plugins de v1 | Espera a que cada plugin publique una versión para v2, o planea sustituirlo |
| Usas la extensión de VS Code | Actualiza antes la extensión a v1.0.0 o posterior |
| Llamas a la API del servidor de OpenCode desde tus propios scripts | Reserva tiempo para portarlos a @opencode/client |
| Necesitas niveles de razonamiento concretos en un proveedor compatible con OpenAI (por ejemplo Xiaomi MiMo) | Revisa antes #51541 (opens in a new tab). 2.x no genera variantes para esos modelos; el hilo incluye un workaround de configuración |
Paso 1: copia de seguridad antes de tocar nada
La guía de migración oficial dice que conserves una copia de tu configuración de v1 mientras pruebas. No dice qué copiar. En macOS y Linux, opencode debug paths muestra las carpetas. Nuestra instalación 1.18.19 mostró:
| Ruta | Qué contiene |
|---|---|
~/.config/opencode | Configuración global: opencode.json(c), agentes, comandos, tui.json |
~/.local/share/opencode | Datos, incluida la base de datos de sesiones y los logs |
~/.local/state/opencode | Estado de la interfaz |
~/.cache/opencode | Caché y binarios descargados. Puedes omitirla |
Copia las dos primeras (los comandos del inicio de esta página). Cierra antes OpenCode, para que la base de datos de sesiones (opencode.db y su archivo -wal) se copie en un estado coherente. Copia también los opencode.json y carpetas .opencode/ de proyecto que te importen. Esos viven en tus repos, así que en la mayoría de los casos git ya los controla.
Para tener una copia portable de una conversación importante, expórtala desde v1 antes de actualizar:
opencode session list
opencode export <sessionID> > my-session.jsonopencode export escribe la sesión en JSON. Añade --sanitize para quitar datos sensibles de la transcripción y de archivos antes de compartirlo.
Paso 2: pasa a la última 1.x
opencode upgrade --major solo existe a partir de v1.19.0. En nuestra instalación 1.18.19, opencode upgrade --help no mostraba el flag --major. Si estás en la 1.18 o anterior, ejecuta primero una actualización normal:
opencode --version
opencode upgradeDespués comprueba que opencode --version muestra 1.19.x. Desde v1.19.0 las actualizaciones ya no se instalan solas, así que una instalación antigua se queda antigua hasta que ejecutes esto.
Paso 3: actualiza o instala v2
Actualización en el sitio (desde 1.19.x):
opencode upgrade --majorInstalación limpia. La guía de migración indica que elimines primero una instalación de v1 gestionada por un gestor de paquetes, porque v1 y v2 no se instalan en paralelo por defecto. Después elige uno de los comandos oficiales de v2:
# Instalador oficial (sustituye el binario de v1)
curl -fsSL https://opencode.ai/v2/install | bash
# Homebrew (fíjate en la fórmula -v2; elimina antes una instalación de v1 con brew)
brew uninstall opencode
brew install anomalyco/tap/opencode-v2
# npm (nombre de paquete nuevo)
npm uninstall -g opencode-ai
npm install -g @opencode/cliTrampas de los gestores de paquetes:
- Nombre del paquete npm. v1 es
opencode-ai. v2 es@opencode/cli. Si hoy ejecutasnpm install -g opencode-ai, sigues obteniendo la 1.19.5. - Homebrew core frente al tap.
brew install opencode(sin tap) instala OpenCode 2 desde el 28 de septiembre, así quebrew upgradeya pasa esa instalación a 2.x sin--major. La fórmula de 1.x esanomalyco/tap/opencodey la de 2.x esanomalyco/tap/opencode-v2. Entran en conflicto, así que ejecutabrew uninstall opencodeantes de instalar la otra. - Scripts de instalación. El paquete npm de v2 usa un script postinstall para elegir el binario nativo. Si usas Bun o pnpm, añade
--trust(Bun) o--allow-build=@opencode/cli(pnpm). Sin ese flag, falta el binario. - Dos nombres de comando. El paquete npm registra tanto
opencodecomoopencode2en su campobin(lo comprobamos en los metadatos del registro). - mise instala v2 solo desde mise 2026.10.9. Las versiones anteriores de mise instalan OpenCode 1.
- Los gestores de paquetes de Windows (Scoop, Chocolatey) no tienen soporte para v2, y
opencode upgrade --majorno puede cambiar esas instalaciones. Descarga el binario independiente de la CLI para Windows o la app de escritorio desde la página de instalación de v2 (opens in a new tab), o usa WSL. Un reporte en chino sobre v2 colgándose en WSL (#55033 (opens in a new tab)) se cerró el 16 de octubre por falta de detalles. - Docker: existen imágenes versionadas, por ejemplo
ghcr.io/anomalyco/opencode:2.0.0.
Ejecuta opencode --version y confirma que muestra 2.x.
Paso 4: revisa qué tomó v2 de tu configuración de v1
No tienes que reescribir tu configuración. v1 y v2 leen las mismas ubicaciones (~/.config/opencode/opencode.json, el opencode.json del proyecto, .opencode/). v2 traduce en memoria los nombres de campo de v1 y no reescribe tus archivos. En el primer arranque de v2, los ajustes globales de tui.json pasan a un nuevo ~/.config/opencode/cli.json. Tus archivos de v1 quedan como estaban.
Abre un proyecto real y revisa cinco cosas antes de fiarte: modelos, credenciales de proveedores, agentes, permisos y servidores MCP. La guía de migración usa la misma lista.
Si más adelante quieres configuración nativa de v2, estos son los cambios de campo más importantes:
| Área | v1 | v2 |
|---|---|---|
| Permisos | permission agrupado por herramienta, más tools | Array ordenado permissions de { action, resource, effect } |
| Nombres de acciones de permiso | bash, task, write, patch | shell, subagent, edit |
| Agentes | agent / mode, prompt, disable, maxSteps, variant | agents, system, disabled, steps, model: "provider/model#variant" |
| Comandos | command, subtask, variant aparte | commands, subagent, model#variant |
| MCP | mcp.<name>, enabled | mcp.servers.<name>, disabled |
| Proveedores | provider, npm, api, options | providers, package: "aisdk:<pkg>", settings.baseURL (desde api); options se divide en settings, headers y body |
| IDs de proveedor | azure-cognitive-services, google-vertex-anthropic | azure, google-vertex |
| Plugins | plugin (strings o tuplas) | plugins (strings o { package, options }) |
| Skills | skills.paths + skills.urls | Un único array skills |
| Configuración de la interfaz de terminal | tui.json(c) por capas | Un único ~/.config/opencode/cli.json global |
| Nombres de carpeta | agent/, command/, plugin/, skill/ | .opencode/agents/, .opencode/commands/, .opencode/plugins/, .opencode/skills/<id>/SKILL.md |
Dos reglas de la guía evitan la mayoría de errores de migración:
- Mantén cada entrada en un solo formato. Puedes mezclar sintaxis de v1 y v2 en el nivel superior. Dentro de una misma entrada de agente, proveedor, comando o modelo, elige un formato.
- No apuntes v1 a un archivo convertido. Ambas versiones leen las mismas rutas. Cuando conviertes un archivo a sintaxis solo de v2, v1 ya no puede leerlo. Si piensas volver atrás, convierte al final.
La guía también sugiere dejar que OpenCode haga la conversión. Arranca v2 en el proyecto y dale este prompt: "Migrate my OpenCode configuration, including file-based definitions, from the V1 format to the native V2 format. Preserve its behavior and all unrelated settings." (es decir: migra tu configuración, incluidas las definiciones en archivos, al formato nativo de V2, conservando su comportamiento y los ajustes no relacionados). Revisa el diff antes de quedártelo.
Campos de v1 que v2 ignora
Estos muestran un aviso y no hacen nada:
| Campo de v1 | Usa en su lugar |
|---|---|
logLevel | Variable de entorno OPENCODE_LOG_LEVEL |
server | Opciones de servicio y servidor de v2 |
subagent_depth en el nivel superior | experimental.subagent_depth |
compaction.tail_turns, compaction.prune | compaction.keep.tokens |
id, whitelist, blacklist de proveedor | Sin equivalente directo. Consulta Policies (opens in a new tab) |
temperature, top_p y options a nivel de agente también dejan de funcionar. v2 los guarda en el request.body del agente, pero no los envía. Defínelos en una variante del modelo.
Estos campos de v1 parecen antiguos, pero siguen funcionando sin aviso, porque v2 los convierte por ti. No los borres al hacer limpieza:
| Campo de v1 | En qué lo convierte v2 |
|---|---|
enabled_providers, disabled_providers | policies de proveedor |
autoupdate | update (false → "disable", "notify" → "notify", true → "auto") |
small_model | agents.title.model |
La configuración de LSP se conserva, pero no se ejecuta. Si dependías de los diagnósticos LSP de OpenCode, dale al agente comandos explícitos de lint, typecheck o compilación (por ejemplo en AGENTS.md).
Paso 5: los cambios de comportamiento que te sorprenden más tarde
Cuando estos cambian, nada da error, y por eso son los que más desconciertan.
v2 no lee CLAUDE.md
v1 recurría a CLAUDE.md cuando no existía AGENTS.md. v2 no lo hace. Si las reglas de tu proyecto están en CLAUDE.md, v2 arranca sin ellas y nada te avisa. Arreglarlo lleva un minuto:
# En cada repo que solo tenga CLAUDE.md
git mv CLAUDE.md AGENTS.mdAdemás, v1 usaba ~/.claude/CLAUDE.md como reglas globales cuando faltaba ~/.config/opencode/AGENTS.md. v2 también eliminó ese respaldo. Si no tienes un AGENTS.md global, cópialo ahí:
cp ~/.claude/CLAUDE.md ~/.config/opencode/AGENTS.mdClaude Code ahora lee AGENTS.md cuando no hay CLAUDE.md, así que un solo archivo puede seguir sirviendo a las dos herramientas. La petición para recuperar ese comportamiento de respaldo sigue abierta como #53402 (opens in a new tab).
Las carpetas fuera del proyecto se permiten por defecto
En v1, el agente preguntaba antes de tocar un directorio fuera del proyecto. En v2, el acceso a directorios externos está permitido por defecto. Para recuperar el comportamiento de v1, añade esta regla a permissions:
{
"permissions": [
{ "action": "external_directory", "resource": "*", "effect": "ask" }
]
}Si ejecutas OpenCode con autoaprobación, o en una máquina con archivos sensibles fuera de tus repos, añade esta regla antes de tu primera sesión en v2.
Los todos están desactivados
La lista de tareas (todo) venía activada por defecto en v1. En v2 está desactivada. Vuelve a activarla con "experimental": { "todo": true }.
Ahora corre un único servicio en segundo plano para toda tu cuenta de usuario
v2 arranca un servidor compartido en segundo plano. La TUI, la interfaz web y la app de escritorio se conectan a él. Eso es lo que hace funcionar opencode pair (un enlace de un solo uso que caduca a los 5 minutos) y las tareas en segundo plano (Ctrl+B). Si prefieres no tenerlo:
opencode service set disabled true # lo detiene y desactiva el arranque automático
opencode service unset disabled # lo vuelve a activar
opencode --standalone # un servidor privado solo para esta ejecuciónEl emparejamiento no funciona con el servicio desactivado. Además, el servicio no lee cli.json, así que los ajustes de la interfaz de terminal solo afectan al cliente de terminal.
Paso 6: plugins, Oh My OpenCode y la extensión de VS Code
Los plugins de v1 no cargan en v2. La API de plugins es nueva. Cambiar plugin por plugins en la configuración no basta. Hay que portar el código de cada plugin (consulta la guía oficial de migración de plugins (opens in a new tab)).
El fallo más habitual fue Oh My OpenCode (oh-my-openagent). En OpenCode 2.0.27, la versión 5.1.32 falló con Plugin must export a default definition with an id and an effect or setup function (oh-my-openagent #10089 (opens in a new tab)). La corrección (#10439 (opens in a new tab)) se fusionó el 18 de octubre, y la 5.1.38 es la primera release en npm que la incluye. El 2 de noviembre, el mantenedor confirmó que las versiones actuales cargan en OpenCode 2 y muestran un aviso que remite a OmO Native, la app independiente omo. Actualiza oh-my-openagent a la 5.1.38 o posterior antes de actualizar OpenCode. Si prefieres pasarte a omo, su README indica que ejecutes omo setup una vez para traer las claves de proveedores, los servidores MCP, las skills y la elección de modelos. Si eres nuevo en el harness, empieza por Oh My OpenCode y OpenCode: instalación, configuración y soluciones.
Error de la extensión de VS Code Unrecognized flag: --port. Las versiones antiguas de la extensión arrancan la CLI con opencode --port <port>. v2 eliminó ese flag. Actualiza la extensión a v1.0.0 o posterior (Marketplace u Open VSX). Mientras tanto, abre una terminal en VS Code y ejecuta opencode tú mismo (#55219 (opens in a new tab)).
Tus propios scripts que llaman al servidor. La API del servidor de v1 ya no existe. Pórtalos al paquete @opencode/client, que además encuentra solo el servicio en segundo plano. Desde la shell, opencode api llama a la misma API. OPENCODE_SERVER_USERNAME ya no está soportado; el nombre de usuario es siempre opencode. La GitHub Action de OpenCode se eliminó en 2.2.0.
Problemas conocidos tras actualizar
Son issues de GitHub abiertos o corregidos hace poco, de las primeras semanas de 2.x. Las soluciones vienen de los mantenedores, de quienes reportaron cada hilo o del bot del proyecto.
| Síntoma | Causa | Solución |
|---|---|---|
| Faltan sesiones antiguas en la lista | Las sesiones de v1 iniciadas en una carpeta sin git (como ~) quedaron en un proyecto heredado global (#49827 (opens in a new tab)) | Los datos siguen ahí. Pulsa Ctrl+X y luego L (List all sessions) para verlos. #56322 (opens in a new tab) corrige la importación a partir de la 2.1.4, así que si actualizas directamente a la 2.x actual evitas el problema. No repara una base de datos que 2.0.x ya importó. Para esos casos, el workaround de un mantenedor, sesión por sesión, es opencode api post /api/session/<id>/move --data '{"directory":"<dir>"}', que reinicia la fecha de actualización de cada sesión. Haz antes copia de opencode.db. Una reparación integrada está abierta como #58846 (opens in a new tab) |
Unrecognized flag: --port | Extensión de VS Code antigua | Actualiza la extensión a v1.0.0+ |
El plugin no carga / invalid v2 tui plugin module | Un plugin de v1 en v2, o un plugin de TUI de v2 hecho para 2.0/2.1 (2.2.0 pasó a OpenTUI 0.7, y 2.2.3 a 0.8) | Usa una versión del plugin hecha para tu release de 2.x, quítalo o quédate en 1.19.x |
/variant dice que el modelo "does not support any variants" | 2.x no genera variantes para el razonamiento de solo activar/desactivar en proveedores compatibles con OpenAI (#51541 (opens in a new tab)) | No hay solución integrada. El hilo incluye un workaround de configuración que define tú mismo las variantes con un body de petición sin procesar. Si no, quédate en 1.19.x |
| Se ignoran las reglas del proyecto | v2 no lee CLAUDE.md | Renómbralo a AGENTS.md |
| Selectores de modelo y agente en gris en la app de escritorio o web | Reportado para conversaciones creadas antes de 2.0 en #55567 (opens in a new tab). Cerrado por falta de detalles | El bot de OpenCode sugirió revisar Settings → Preferences → Show agent, que oculta el selector de agente cuando está desactivado |
opencode upgrade se queda en 1.x | Es deliberado. La release Latest de GitHub sigue siendo 1.x, y v1 solo se actualiza dentro de 1.x | Ejecuta opencode upgrade --major |
Cómo volver a 1.x
La guía de migración no cubre la vuelta atrás. Este es el orden seguro:
- Elimina v2.
opencode uninstall --dry-runmuestra lo que va a borrar. Después,opencode uninstallelimina el programa y deja en disco las sesiones, la configuración y el estado. - Reinstala v1 con una versión fijada:
npm install -g opencode-ai@1.19.5, obrew install anomalyco/tap/opencode(la fórmula sin-v2). - Si convertiste algún archivo de configuración a sintaxis solo de v2, restáuralo desde
~/opencode-v1-config-backup. - Si v1 no puede leer la base de datos de sesiones después de que v2 la haya usado, restaura
~/opencode-v1-data-backup. No probamos si v1 abre una base de datos en la que v2 ya ha escrito. Cuenta con la copia de seguridad.
Nota de seguridad: la brecha de OpenCode Console
Esto es independiente de la actualización, pero ocurrió la misma semana. El 17 de octubre, el equipo de OpenCode informó de que alguien obtuvo acceso no autorizado a un sistema heredado que estaba retirando (comunicado citado en Hacker News (opens in a new tab)). Las claves de proveedores de terceros guardadas en un workspace de Console "may have been exposed" (podrían haber quedado expuestas). Su consejo: revocar y sustituir esas claves en el panel de cada proveedor y revisar el uso reciente. Una publicación posterior cifró en un 1,4% la proporción de usuarios de Console afectados, y el cofundador Dax Raad dijo que la CLI y la app de escritorio no se vieron afectadas (TechCrunch (opens in a new tab)). Si alguna vez guardaste claves de OpenAI, Anthropic u otros en Console, rótalas antes o después de actualizar.
Qué hay realmente nuevo en 2.0
Nada de esto hace falta para terminar la actualización. Son las funciones que explican por qué cambió la arquitectura:
- Servicio en segundo plano compartido por la TUI, la interfaz web y la app de escritorio, más
opencode pairpara acceso web. - Tareas en segundo plano: pulsa
Ctrl+Bpara mandar al fondo un comando de shell o un subagente en ejecución mientras el agente principal sigue trabajando. - Code Mode: convierte servidores MCP y endpoints OpenAPI en funciones que el agente puede encadenar en un solo paso. Los servidores MCP lo usan por defecto.
- Recarga en caliente: OpenCode puede escribir un plugin para sí mismo a mitad de sesión y usarlo al momento.
@opencode/sdky@opencode/client: el código que hay detrás de la CLI, para crear tus propios clientes.
Si estás eligiendo un agente de terminal desde cero en lugar de actualizar uno, Cómo usar Codex cubre la alternativa más cercana.
Guías relacionadas
- Oh My OpenCode y OpenCode: instalación, configuración y soluciones
- Cómo usar Codex
- Cómo usar DeepSeek Harness
- Agentes de código en paralelo, explicado