Audité un plugin de Claude Code que lee todas las cookies de tu navegador

Review de seguridad de millionco/expect — un plugin de Claude Code que corre tests con Playwright controlado por IA. El skill es seguro. El CLI desencripta cada cookie de tu navegador.

Audité expect, un plugin de Claude Code que corre tests de regresión con Playwright controlado por IA. Escanea tu git diff, genera un plan de tests con IA, lo ejecuta en un navegador real y reporta pass/fail.

El skill en sí es un archivo markdown que le enseña a Claude cómo invocar expect-cli. El CLI es donde la cosa se pone interesante.

🔍 El Skill: Seguro

Puro markdown. Sin hooks, sin scripts, sin código ejecutable. Solo le enseña a Claude a correr expect-cli -m "INSTRUCTION" -y después de cambios que tocan el browser. Nada que preocuparse acá.

⚡ El CLI: Con cuidado

Telemetría (no declarada)

Dos sistemas de telemetría corren por defecto, ninguno mencionado en el README:

  • PostHog: envía machine ID (hasheado), project ID, tiempos de sesión, conteos pass/fail a us.i.posthog.com con una API key hardcodeada. Para desactivar: NO_TELEMTRY=1 (sí, con typo).
  • Axiom: envía trazas OpenTelemetry con un token hardcodeado a api.axiom.co. Más detallado que PostHog — timings de operaciones, detalles de errores, anotaciones.

Ninguno envía tu código. Pero tener tokens hardcodeados en el código fuente no es la mejor práctica.

Extracción de cookies (lo groso)

El paquete @expect/cookies lee y desencripta cookies de tus navegadores locales:

  • Chrome: lanza Chrome headless con tu perfil, llama a Network.getAllCookies vía CDP. También tiene un fallback SQLite que desencripta la DB de cookies directamente (AES-128-CBC / AES-256-GCM).
  • Firefox: consulta cookies.sqlite directamente.
  • Safari: parsea el archivo binario de cookies.

Estas cookies se inyectan en la sesión de Playwright para que los tests corran con tu auth real. Esto significa que la herramienta tiene acceso a todas tus cookies — banco, email, todo. Las cookies no se envían a servidores, pero el agente de IA controla el navegador donde se inyectan.

La sincronización de cookies es opt-in por sesión — el CLI pide confirmación.

Ejecución de código arbitrario

La herramienta MCP de Playwright acepta JavaScript arbitrario:

const userFunction = new AsyncFunction("page", "context", "browser", "ref", code);

Es eval con otro nombre. El agente de IA puede ejecutar cualquier código en tu proceso Node.js con acceso completo a Playwright. Esto es inherente al diseño — es una herramienta de automatización de browser — pero combinado con la inyección de cookies, el radio de impacto es significativo.

Licencia: no es MIT

FSL-1.1-MIT — restringe uso comercial competitivo por 2 años, después se convierte a MIT. Vale la pena saberlo antes de construir algo sobre esto.

🔒 No se detectó intención maliciosa

Sin backdoors, sin exfiltración de datos más allá de la telemetría mencionada, sin código ofuscado, sin llamadas de red ocultas. Es una herramienta legítima con permisos legítimos (pero potentes).

📋 TL;DR

QuéVeredicto
Skill (SKILL.md)Seguro — puro markdown
TelemetríaNo declarada, el opt-out tiene un typo
Acceso a cookiesLee + desencripta todas las cookies
EjecuciónEl agente de IA ejecuta JS arbitrario
LicenciaFSL, no MIT
IntenciónNo se encontró nada malicioso

Entendé qué permisos estás dando antes de instalar. El skill es inofensivo, el CLI es potente. Desactivá la telemetría (NO_TELEMTRY=1) y tené en cuenta que la inyección de cookies le da al agente acceso autenticado a tus sesiones de navegador.