TL;DR Los marketplaces de terceros y los de directorio local vienen con el auto-update apagado por defecto; solo el oficial y los de claude.ai lo traen encendido. Añade
"autoUpdate": truea su entrada deextraKnownMarketplacesy Claude Code los refresca al arrancar. Y siclaude plugin updatete contestaalready at the latest versionmientras sigues viendo código viejo, no es el caché haciendo cosas raras: compara la cadena de versión, así que subeversionenplugin.json.
Instalas un plugin, tuyo o de otra persona, y semanas después sigue igual que el día que lo instalaste. Ninguna notificación, ningún aviso. Y cuando por fin sospechas y lanzas el comando de actualizar, te contesta que estás al día.
No es un fallo. Son dos comportamientos distintos que se solapan y que la documentación cuenta en sitios separados.
Primero, míralo en tu propia máquina
Claude Code guarda los marketplaces que conoce en ~/.claude/plugins/known_marketplaces.json, con la fecha del último refresco de cada uno. Esto es lo mío, sin retocar:
claude-plugins-official 21 sep (auto-update por defecto)
craft 22 sep "autoUpdate": true
ai-plugins 8 jul
claude-code-warp 25 may
chrome-devtools-plugins 8 may
juanwmedia-cc-tips 2 may
seo-workflow 29 abr
Los dos primeros se refrescan solos. Los cinco de abajo llevan entre dos y cinco meses congelados. No es mi red, ni mi versión, ni el Desktop: es el valor por defecto.
La frase está en las docs y pasa desapercibida porque llega al final de una sección larga: claude-plugins-official, la mayoría de los marketplaces oficiales de Anthropic y los que añades desde claude.ai traen el auto-update encendido. Los demás, incluido el tuyo, lo traen apagado.
El arreglo, una línea por marketplace
En ~/.claude/settings.json, junto al source de esa entrada:
{
"extraKnownMarketplaces": {
"craft": {
"source": {
"source": "github",
"repo": "juanwmedia/craft"
},
"autoUpdate": true
}
}
}
Eso es todo. A partir de la siguiente sesión, Claude Code refresca ese marketplace y actualiza sus plugins instalados en segundo plano.
Lo mismo se puede hacer a mano en /plugin, pestaña Marketplaces, eligiendo el marketplace y luego Enable auto-update. Es la misma palanca con otra manivela, y tiene una pega importante que verás más abajo.
Tres cosas que conviene saber antes de que te extrañe el comportamiento:
- El refresco no es al arrancar, es después de arrancar, con un retardo aleatorio de hasta diez minutos. Eso es deliberado: la sesión que tienes abierta sigue usando las versiones que cargó al principio.
- Si algo se ha actualizado, te sale un aviso para que lances
/reload-plugins. Si lo ignoras, las versiones nuevas entran en el siguiente arranque. - Si tienes
DISABLE_AUTOUPDATERpuesto para congelar Claude Code, congelas también los plugins. Para separar las dos cosas,FORCE_AUTOUPDATE_PLUGINS=1, que es justo el efecto colateral que cuenta el tip del auto update failed.
Y ahora el segundo mordisco: la versión manda
Esto es lo que vuelve loco a cualquiera que mantenga su propio plugin. Mi marketplace ai-infra apunta a un directorio local, mi repo. Lanzo el comando de actualizar:
$ claude plugin update ai-infra@ai-infra
Checking for updates for plugin "ai-infra@ai-infra" at user scope…
✔ ai-infra is already at the latest version (1.1.8).
Y no es verdad. La copia que carga la sesión vive en ~/.claude/plugins/cache/ai-infra/ai-infra/1.1.8 y va dos commits por detrás de mi repo: difieren board.json, manifest.json y cuatro ficheros de examples/. Un diff -rq entre las dos carpetas lo canta.
La razón es simple cuando la ves: lo que se compara es la cadena de versión de plugin.json, no el contenido. Yo había editado el repo sin tocar el version, así que para Claude Code no había nada que actualizar. Por eso a veces parece que el caché se porta bien y a veces no: no es el caché, es si subiste el número.
Súbelo y todo encaja:
{ "name": "ai-infra", "version": "1.1.9" }
✔ Plugin "ai-infra" updated from 1.1.8 to 1.1.9 for scope user. Restart to apply changes.
Cada versión se instala en su propia carpeta dentro del caché, así que si desarrollas a golpe de bump acabas con una pila de directorios ahí dentro. En mi caso, trece. Borré tres de las viejas y el plugin siguió cargando la activa sin rechistar; la única que no se toca es la que está en uso.
Si lo que quieres es ver tus cambios sin publicar ni subir versión, no pases por aquí: ese es el trabajo de --plugin-dir, que pisa al plugin instalado durante esa sesión. El auto-update es para lo que ya has publicado y consumen otros.
Si trabajas en Claude Code Desktop
Aquí está la parte que más despista, porque parece un fallo de la app y no lo es. El panel /plugin es del terminal. En Desktop tienes un navegador de plugins (el + junto a la caja de texto, luego Plugins), y ahí puedes instalar, activar, desactivar y desinstalar, pero no hay conmutador de auto-update.
O sea que el camino de la interfaz no existe en Desktop, y por eso da la sensación de que "en la CLI se actualiza y aquí no". No se actualizaba en ninguno de los dos: lo que cambia es que el terminal te ofrece la palanca.
En Desktop el arreglo es el mismo de arriba, editar settings.json, que además es el único que aguanta cambios de máquina. Y para forzar algo a mano en cualquier momento, desde tu shell:
claude plugin marketplace update <marketplace>
claude plugin update <plugin>@<marketplace>
Después, /reload-plugins dentro de la sesión. Funciona en Desktop desde la v2.1.260, con dos condiciones: lo tienes que escribir tú directamente en la caja de texto (por Remote Control no se ejecuta), y no reconecta los servidores MCP del plugin, que esperan a la siguiente sesión.
Referencia
| Qué quieres | Qué haces |
|---|---|
| Que un marketplace se actualice solo | "autoUpdate": true en su entrada de extraKnownMarketplaces |
| Lo mismo desde el terminal | /plugin → Marketplaces → Enable auto-update |
| Refrescar el catálogo ahora | claude plugin marketplace update <nombre> |
| Actualizar un plugin ahora | claude plugin update <plugin>@<marketplace> |
| Aplicarlo sin reiniciar | /reload-plugins |
| Probar cambios sin publicar | claude --plugin-dir ./ruta |
Y antes de publicar cualquier versión nueva, claude plugin validate te caza lo que rompe el plugin y claude plugin eval te dice si de verdad aporta algo. Si el plugin todavía no existe, el marketplace es el paso previo.
Documentación oficial: Discover and install prebuilt plugins
Requisitos
- Todo lo de arriba está ejecutado en la v2.1.278.
/reload-pluginsen Desktop o en modo no interactivo pide la v2.1.260 o superior.- La ausencia de conmutador de auto-update en el navegador de plugins de Desktop es lo que documenta Anthropic; no la he podido capturar en pantalla.