Checklist · Intermedio · 10 min
Antes de instalar plugins, skills o MCP en Claude Code: checklist
Qué comprobar antes de instalar una extensión, un plugin, una skill o un servidor MCP en Claude Code: qué ejecuta, de dónde viene y cómo quitarlo.
Probado con Claude Code 2.1.316 · revisado
Ver los archivos en GitHub Gratis · licencia MIT
Para qué sirve
Checklist para antes de instalar cualquier cosa que amplíe Claude Code: la extensión del editor, un plugin de un marketplace, una skill copiada de GitHub o un servidor MCP. Explica qué puede hacer cada una en tu máquina (casi siempre: ejecutar código con tus permisos y fuera del sandbox), cómo comprobar quién la publica y de qué fuente viene, cómo leer lo que trae antes de activarlo, cómo controlar las actualizaciones y cómo quitarla del todo. Parte del caso del 29 de octubre: el marketplace de Cursor sirvió las versiones 2.1.312 y 2.1.313 de la extensión de Claude Code con una puerta trasera SSH.
Lo que pasó el 29 de octubre (y la lección)
Entre las 2:27 y las 13:35 (hora del Pacífico) del 29 de octubre de 2026, el marketplace de extensiones de Cursor distribuyó copias manipuladas de anthropic.claude-code, versiones 2.1.312 y 2.1.313, para macOS y Windows. Según el aviso de Cursor, esas copias «no fueron desarrolladas por Anthropic»: al cargarse enviaban datos del equipo (usuario, sistema, correo de Git, IP pública y los nombres de las variables de entorno), intentaban añadir la clave SSH del atacante (svc-telemetry) a ~/.ssh/authorized_keys, abrir un túnel SSH inverso y quedarse programadas para volver a arrancar. El Marketplace de Visual Studio Code, Open VSX y el paquete npm no sirvieron la copia, y el servidor del atacante ya está apagado.
La lección para esta checklist: el nombre era el oficial, el publicador era «anthropic» y el número de versión parecía normal. Lo que estaba comprometido era la tienda. Por eso no basta con mirar el nombre: hay que mirar de qué tienda viene, qué versión se instaló y cuándo, y tener un plan para quitarlo. Si usas Cursor y te actualizaste ese día, sigue la comprobación en dos minutos de nuestra novedad:
grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "Clave encontrada" || echo "Sin clave"
La lista
- Por qué: cada tipo de extensión llega a sitios distintos, y casi todos ejecutan código con tus permisos.
- Extensión del editor (VS Code, Cursor): código JavaScript que corre en el editor con tu usuario. Es lo que pasó en Cursor.
- Plugin de Claude Code: según la documentación oficial, «puede ejecutar código arbitrario en tu máquina con tus privilegios de usuario». Puede traer hooks (comandos de shell en momentos del ciclo de vida), monitores (comandos en segundo plano que arrancan solos al empezar la sesión), mods (JavaScript dentro de Claude Code), servidores MCP y LSP (procesos en tu máquina), una carpeta bin/ que se añade al PATH de Bash, y skills, comandos y agentes que entran en el contexto como instrucciones.
- Skill suelta: son instrucciones, pero pueden incluir scripts y un
allowed-toolsque aprueba herramientas sin preguntar durante su turno. - Servidor MCP: un proceso local (stdio) o un servicio remoto que le da herramientas a Claude y le devuelve contenido que puede traer inyección de instrucciones.
- Lo clave: las reglas de permisos y el sandbox cubren las llamadas que hace Claude, no el código que el plugin ejecuta por su cuenta. Hooks, monitores, servidores MCP y LSP corren fuera del sandbox con todos tus permisos. Y sin ajustes administrados ni sesión de Team o Enterprise, un mod puede aprobar una llamada que tu regla deny rechaza.
- Por qué: el nombre de un marketplace o de un publicador te dice quién publica el catálogo, no qué hace cada cosa que hay dentro.
- Plugins: Claude Code clasifica los marketplaces en tres niveles. Oficial (
claude-plugins-officialy otros nombres reservados), comunidad (claude-community,claude-plugins-communityyhealthcare) y terceros (todos los demás, incluido el de tu empresa o un compañero). Claude Code solo acepta los nombres oficiales y de comunidad si el marketplace viene de un repositoriogithub.com/anthropics/, así que un tercero no puede hacerse pasar por Anthropic: si lo intenta, falla con «Marketplace is registered from an untrusted source». En la comunidad, casi todas las entradas están fijadas a un commit y Claude Code se niega a instalar otro. - Cómo comprobarlo:
claude plugin marketplace listimprime la fuente de cada marketplace (repositorio de GitHub o carpeta). - Extensiones del editor: en el Marketplace de VS Code, el publicador de
anthropic.claude-codeestá marcado como verificado con el dominio anthropic.com (lo vimos en la API del Marketplace el 1-nov-2026: 29,2 millones de instalaciones, última versión 2.1.314); en Open VSX figura como verificado, versión 2.1.316. Mira siempre el identificador exactopublicador.nombrey desconfía de copias con nombres parecidos. Pero recuerda Cursor: el publicador verificado ayuda, no garantiza.
- Por qué: la sección «Will install» del panel de
/pluginmuestra que un plugin tiene un hook, pero no qué ejecuta. - Paso 1 (el orden lo propone la documentación oficial): en una sesión,
/plugin, elige el plugin y lee el panel de detalles: comandos, agentes, skills, hooks y servidores MCP y LSP. Si dice «Component summary not available for remote plugin», el plugin se descarga de otro sitio: más motivo para leer el código. - Paso 2: abre Open homepage o View on GitHub y busca la carpeta del plugin. Lee tres cosas:
hooks/hooks.json(el comando de cada hook),.mcp.json(el comando o la URL de cada servidor) y todos los archivos debin/. - Paso 3: clona el repositorio y ejecuta
claude --plugin-dir <carpeta> plugin details <nombre>: lee los archivos sin abrir una sesión y lista el inventario. Lo probamos con un plugin de prueba: mostró la skill, el hook SessionStart y el servidor MCP, pero no la carpeta bin/, así que esa hay que mirarla a mano. El scriptrevisar-plugin.shdel repositorio hace los pasos 2 y 3 de una vez. - Paso 4: después de instalar,
claude plugin details <nombre>muestra lo mismo para la copia instalada en~/.claude/plugins/cache/. - Skills sueltas: lee el
SKILL.mdcompleto y cualquier script que acompañe; desconfía de unallowed-toolsamplio (Bash,Bash(curl *)) y de instrucciones que manden descargar o ejecutar algo.
- Por qué: la sección «Will install» del panel de
# Revisa un plugin clonado antes de instalarlo (salida real, Claude Code 2.1.316)
git clone https://github.com/<autor>/<marketplace>.git /tmp/revisar && cd /tmp/revisar
# 1. ¿Qué ejecuta?
cat <plugin>/hooks/hooks.json <plugin>/.mcp.json 2>/dev/null
ls -la <plugin>/bin/ 2>/dev/null && head -50 <plugin>/bin/*
# 2. Inventario sin abrir sesión
claude --plugin-dir <plugin> plugin details <plugin>
# Salida con nuestro plugin de prueba:
# plugin-dudoso 0.1.0
# Source: plugin-dudoso@inline
# Component inventory
# Skills (1) saludo
# Agents (0)
# Hooks (1) SessionStart (harness-only — no model context cost)
# MCP servers (1) eco (tool schemas resolved at runtime; not counted)
# LSP servers (0)
# (no menciona bin/herramienta: revisa bin/ a mano)
- Por qué: lo que revisaste hoy puede cambiar mañana. Según la documentación, cuando la actualización automática está activa para un marketplace, Claude Code actualiza sus plugins en segundo plano, así que «los archivos que revisaste pueden cambiar en disco». La sesión en marcha sigue con lo que cargó; verás
Plugin updated: <nombre> · Run /reload-plugins to applyy la siguiente sesión carga la versión nueva. - Valores por defecto: la actualización automática viene activada en
claude-plugins-officialy en los demás nombres oficiales (salvoknowledge-work-pluginsyfirst-party-plugins) y en los marketplaces añadidos desde claude.ai; viene desactivada en el de comunidad, en los de terceros y en los locales. - Cómo controlarlo: en
/plugin, pestaña Marketplaces, elige el marketplace y Enable/Disable auto-update. Para fijar una versión, añade el marketplace con una etiqueta:/plugin marketplace add tu-org/plugins#v1.2.0. Ojo:claude plugin marketplace updatesin nombre refresca los catálogos pero no actualiza tus plugins. - Extensiones del editor: si prefieres revisar antes de actualizar, desactiva la actualización automática de extensiones en el editor (en VS Code, el ajuste
extensions.autoUpdate) y mira la versión concode --list-extensions --show-versions(en Cursor,cursor --list-extensions --show-versions). Tras un incidente como el de Cursor, actualizar rápido a una versión limpia también importa: es un equilibrio.
- Por qué: lo que revisaste hoy puede cambiar mañana. Según la documentación, cuando la actualización automática está activa para un marketplace, Claude Code actualiza sus plugins en segundo plano, así que «los archivos que revisaste pueden cambiar en disco». La sesión en marcha sigue con lo que cargó; verás
- Por qué: cuanto menos alcance, menos daño. Al instalar un plugin eliges dónde queda activado.
- Usuario (
enabledPluginsen~/.claude/settings.json): en todos tus proyectos de esta máquina. Es el valor por defecto declaude plugin install. - Proyecto (
.claude/settings.json, va en git): para todo el que trabaje en el repo. Subir esa entrada lo activa para tus compañeros, pero no se lo descarga: cada uno tiene que instalarlo una vez con--scope project. - Local (
.claude/settings.local.json): solo tú, solo en este repo. - Prioridad: si el mismo plugin está en varios ámbitos, gana local sobre proyecto y proyecto sobre usuario. Ten en cuenta que la terminal, las sesiones locales de la app de escritorio y la extensión de VS Code leen los mismos archivos: lo que instalas a nivel de usuario en una aparece en las otras dos.
- Cómo comprobarlo:
claude plugin listmuestraVersion,ScopeyStatusde cada plugin. Prueba primero en local; súbelo al proyecto solo cuando el equipo lo haya revisado. Y si un plugin te pide ejecutar un comando al instalarse (Run this command now? [y/N]), léelo: es código que corre en tu terminal.
- Por qué: un servidor MCP local es un proceso con tus permisos, y uno remoto recibe lo que Claude le envía. La documentación oficial recomienda escribir tus propios servidores o usar los de proveedores en los que confíes; Anthropic revisa los conectores de su directorio con unos criterios, pero no audita la seguridad de ningún servidor MCP.
- Lo que te protege: en una sesión interactiva, Claude Code pide aprobación antes de usar los servidores del
.mcp.jsonde un proyecto, y un repo clonado no puede aprobarse los suyos:enableAllProjectMcpServersen su.claude/settings.jsonse ignora mientras no confíes en la carpeta. Lo comprobamos: el servidor del repo de prueba salía «⏸ Pending approval (runclaudeto approve)». Además, en laurly lasheadersde un servidor remoto, Claude Code deja vacías las variables de credenciales para que un.mcp.jsonno envíe tu token a un servidor ajeno. - Lo que no te protege: con
claude -pen una carpeta en la que nunca confiaste, los servidores de.mcp.jsonse conectan sin preguntar. Y revisar el.mcp.jsonno muestra todo: los plugins y los conectores de claude.ai también añaden servidores. - Cómo comprobarlo:
claude mcp listy/mcp. Para rechazar uno por nombre en todas las sesiones,disabledMcpjsonServers. Para olvidar tus aprobaciones,claude mcp reset-project-choices. Más sobre servidores en MCP para programadores.
- Por qué: si dejas de confiar en algo, desinstalar no siempre lo borra todo.
- Plugins:
claude plugin uninstall <plugin> --scope <ámbito>, con el ámbito en el que lo instalaste. Luego revisa: los datos persistentes del plugin se borran si era su último ámbito (salvo--keep-data), pero sus archivos se quedan en~/.claude/plugins/cache/<marketplace>/<plugin>/durante 14 días hasta que una limpieza en segundo plano los elimina; bórralos tú si quieres que desaparezcan ya. Las dependencias que se instalaron solas se quedan hastaclaude plugin prune. Si tampoco confías en el dueño del marketplace, quítalo: al eliminar un marketplace se desinstalan todos sus plugins. - Extensiones del editor: desinstalar no deshace lo que el código ya hizo. En el caso de Cursor, la extensión dejaba scripts y una clave SSH que seguían ahí: había que limpiar con los scripts del aviso, revisar
~/.ssh/authorized_keysy cambiar, desde otro equipo, las credenciales a las que llegaba la máquina (GitHub, nube, npm, CI). - Cómo comprobarlo: después de quitar algo,
claude plugin listno debe mostrarlo,ls ~/.claude/plugins/cache/no debe tener su carpeta y/hooksy/mcpno deben listar nada suyo.
Qué tienes instalado y de dónde viene (el repositorio lo trae como inventario.sh, que solo lee):
claude plugin marketplace list # fuente de cada marketplace
claude plugin list # versión, ámbito y estado de cada plugin
claude mcp list # servidores MCP y su estado
code --list-extensions --show-versions | grep -i claude
cursor --list-extensions --show-versions | grep -i claude # si usas Cursor
# Comprobación del caso Cursor (29-oct-2026):
grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "Clave svc-telemetry encontrada" || echo "Sin clave"
Quitar un plugin del todo:
claude plugin uninstall <plugin>@<marketplace> --scope user
claude plugin prune # dependencias que se instalaron solas
rm -rf ~/.claude/plugins/cache/<marketplace>/<plugin>/ # si no quieres esperar 14 días
claude plugin marketplace remove <marketplace> # si tampoco confías en la tienda
Si buscas qué instalar, empieza por nuestra lista de skills recomendadas, y antes de dar permisos, repasa la checklist de permisos.
Errores típicos
- Confiar en el nombre y el publicador → en el caso de Cursor ambos eran los oficiales y la tienda estaba comprometida → mira la tienda, la versión y la fecha de instalación, no solo el nombre.
- Revisar un plugin solo con
plugin details→ no lista la carpetabin/, que se añade al PATH de Bash → leebin/a mano (o conrevisar-plugin.sh). - Revisar un plugin una vez y olvidarse → con la actualización automática activa, los archivos pueden cambiar en disco → desactívala en ese marketplace o fíjalo con
#etiqueta. - Pensar que el sandbox te protege de un plugin → hooks, monitores y servidores MCP y LSP corren fuera del sandbox con tus permisos → la defensa es no instalar lo que no has leído.
- Desinstalar y dar el asunto por cerrado → la caché se queda 14 días y una extensión maliciosa puede haber dejado scripts o claves → borra la caché, revisa
~/.ssh/authorized_keysy rota credenciales si hubo código malicioso. - Subir un plugin al
.claude/settings.jsondel proyecto sin revisión → queda activado para todo el equipo → pruébalo antes en local.
Qué probamos y qué falta
En este PC (Linux, Claude Code 2.1.316), con configuración aislada: creamos un plugin de prueba con una skill, un hook SessionStart, un .mcp.json y un ejecutable en bin/, y claude --plugin-dir … plugin details listó todo salvo bin/ (lo repetimos el 1-nov con revisar-plugin.sh); claude plugin marketplace list mostró el directorio de Anthropic integrado; un repo con enableAllProjectMcpServers apareció «⏸ Pending approval» en claude mcp list; consultamos la API pública del Marketplace de VS Code (publicador anthropic verificado, dominio anthropic.com, 29.178.849 instalaciones, versión 2.1.314) y la de Open VSX (2.1.316, verificado); code --list-extensions mostró anthropic.claude-code@2.1.312 instalada desde Microsoft. No probamos: instalar ni desinstalar plugins reales, la actualización automática, el borrado a los 14 días ni el ajuste extensions.autoUpdate de VS Code; esos puntos salen de la documentación oficial.
Preguntas frecuentes
¿Un plugin del marketplace oficial de Anthropic es seguro?
Es la opción de más confianza, pero la propia advertencia de Claude Code es la misma para todos: Anthropic no controla qué servidores MCP, archivos u otro software incluyen los plugins y no puede verificar que funcionen como dicen ni que no cambien. El nivel del marketplace te dice quién mantiene el catálogo; revisa igualmente lo que instala.
¿El sandbox me protege de un plugin malicioso?
No. Según la documentación, Claude Code ejecuta los hooks, los monitores, los servidores MCP y LSP de los plugins y los procesos que arranca un mod fuera del sandbox, con todos tus permisos. El sandbox y las reglas de permisos solo cubren las llamadas a herramientas que hace Claude, como una herramienta MCP del plugin o un ejecutable de su bin/.
¿Me afectó la extensión manipulada si uso VS Code?
Según Cursor y Anthropic, no: solo la sirvió el marketplace de Cursor, el 29 de octubre, para macOS y Windows. El Marketplace de VS Code, Open VSX y el paquete npm no se vieron afectados. La prueba es buscar svc-telemetry en ~/.ssh/authorized_keys; los pasos están en nuestra novedad del 30-oct.
¿Las skills son menos peligrosas que los plugins?
Una skill sola son instrucciones, sin hooks ni procesos propios, pero puede incluir scripts que Claude ejecuta y un allowed-tools que aprueba herramientas sin preguntar durante su turno. En una skill de un repo clonado, ese allowed-tools vale aunque no hayas confiado en la carpeta. Léela entera como leerías un script.
¿Cómo veo cuánto contexto gasta un plugin?
claude plugin details <nombre> muestra el coste estimado en tokens que añade a cada sesión y el de cada componente al usarse. En /plugin, los que no usas aparecen bajo «Not used recently»: desactívalos o desinstálalos.