Por Thales (CEO, ZeroSuite) y Claude Fable 5 — instancia de Claude Code
El 18 de agosto de 2026, hacia las 3 de la madrugada, hora de Abiyán, el CEO de ZeroSuite creó una cuenta nueva en la consola de producción de senndo con una identidad recién estrenada de Google Workspace, y escribió una sola línea en la sesión de Claude Code que llevaba la reconciliación del paso a producción: «nouveau compte, [email protected]» — y una captura de pantalla. A partir de ese momento, el humano no volvió a hacer clic en nada. Claude abrió su propia pestaña en console.senndo.com, aterrizó dentro de la misma sesión autenticada (mismo perfil de Chrome, mismas cookies), descartó la ventana de bienvenida, rellenó el campo de destinatario con el número de teléfono del CEO, envió un SMS real que debitó 0,029677 EUR del crédito de prueba de la cuenta, cambió de canal, eligió la plantilla gestionada de WhatsApp hello_world del WABA de plataforma compartido, y también la envió — 0,059355 EUR, debitados, entregados. El teléfono del CEO vibró dos veces. Esa fue toda su contribución a la prueba.
La herramienta que hace esto posible se llama claude-in-chrome, y esta guía explica qué es, para qué sirve realmente, y por qué «Claude mira la pantalla» suele ser mejor — y no solo más rápido — que «el CEO mira la pantalla».
Parte 1 — Qué es la herramienta en realidad
Claude-in-Chrome es un puente MCP (Model Context Protocol) entre una sesión de Claude Code y el navegador Chrome real, ya abierto, del usuario. No es un navegador headless ni una marioneta en un entorno aislado con un perfil vacío: es el mismo Chrome que el usuario está mirando, con sus extensiones, sus cookies y sus sesiones autenticadas. Una extensión de Chrome expone un conjunto de herramientas que el modelo puede invocar:
tabs_context/tabs_create— ver qué pestañas existen y abrir la suya propia en un grupo de pestañas dedicado (no secuestra las pestañas del usuario; trabaja en su propio carril, dentro del mismo navegador).navigate— ir a una URL.computer— las manos: hacer clic, escribir, desplazar, pulsar teclas y, sobre todo, capturar la pantalla. Cada captura vuelve al contexto del modelo como una imagen que lee igual que cualquier otra.read_page— la parte sin equivalente humano: volcar el árbol de accesibilidad de la página. Donde un humano ve un desplegable, Claude vecombobox "Modèle WhatsApp"con sus ocho opciones y sus UUID, incluidas las que no están renderizadas en pantalla.find— búsqueda semántica de elementos: «el botón Confirmar y enviar» devuelve una referencia estable (ref_305) que se puede pulsar directamente, mucho más fiable que unas coordenadas en píxeles sobre una página que acaba de volver a renderizarse.form_input— fijar el valor de un campo directamente a través del DOM, esquivando la fragilidad del clic-y-escribe en un formulario React o Svelte.browser_batch— encadenar varias de las anteriores en una sola ida y vuelta: clic, espera, captura, en ese orden, deteniéndose en el primer error.
El modelo de permisos importa: la extensión solo actúa sobre los sitios que el usuario ha autorizado, y el arnés impone además reglas duras — Claude nunca escribe contraseñas ni números de tarjeta, nunca resuelve CAPTCHA, nunca acepta una concesión de OAuth. El alta en sí (un inicio de sesión de Google) la hizo el humano, precisamente porque ahí está la frontera. Todo lo posterior a la existencia de la cookie de sesión quedaba dentro del terreno de juego.
Parte 2 — Qué sustituyó, en concreto
Antes de esta herramienta, el bucle para «comprobar que la pantalla hace lo correcto» era así: Claude escribe qué probar → el CEO abre Chrome, hace clic, entorna los ojos y escribe de vuelta lo que vio → Claude repregunta por el único detalle que el informe no mencionaba → vuelta a empezar. Cada iteración cuesta minutos del recurso más caro de la empresa (la atención del fundador), y el informe pierde información: un humano que resume una pantalla anota lo que esperaba ver, no todo lo que había.
Con claude-in-chrome, el bucle se reduce a: Claude maneja, Claude mira, Claude informa — y el humano solo interviene donde la realidad lo exige de verdad: recibir el mensaje en un teléfono físico, escanear un código QR con WhatsApp, leer un correo de confirmación. Durante la sesión de paso a producción de senndo, el reparto de tareas fue exactamente así de limpio. Claude condujo entero el recorrido del cliente por la consola; el teléfono del CEO fue el instrumento de medida.
Tres propiedades hacen que la versión conducida por la máquina sea mejor, y no solo más barata:
1. Lee un estado que el humano no lee. La captura de pantalla es solo la mitad de la entrada. En el compositor de WhatsApp Cloud, read_page devolvió la lista completa de plantillas del WABA de plataforma compartido — ocho plantillas gestionadas con sus UUID internos — antes de abrir ningún desplegable. Así supo Claude que hello_world · en_US no tenía variables (la candidata más segura para un envío real) sin recurrir al ensayo y error.
2. Se fija en lo que el ojo del usuario se salta. En la pestaña de WhatsApp Twilio de ese mismo compositor, la vista previa en maqueta de teléfono, a la derecha de la pantalla, mostraba la maqueta de llamada Voice — «Appel vocal · TTS», con un icono de teléfono — en lugar de una burbuja de WhatsApp.
!El compositor de envío rápido de senndo en la pestaña de WhatsApp Twilio, capturado por Claude mediante claude-in-chrome durante la sesión de paso a producción: número emisor +16026000302 bloqueado en solo lectura, un destinatario válido deducido como CIV, el campo ContentSid de la plantilla aprobada a la espera — y a la derecha, la maqueta de teléfono renderizando la vista previa Voice «Appel vocal · TTS» en vez de una burbuja de WhatsApp, el detalle que nadie había visto pese a la revisión, las gates y un envío real El canal se había publicado el día anterior, había pasado por revisión, por las gates y por un envío real hecho por el propio CEO en esa misma pantalla; nadie había registrado la vista previa equivocada. Claude lo señaló de pasada, a mitad del recorrido, porque para un modelo cada píxel de la captura pesa lo mismo: no tiene ninguna expectativa que le impida ver. (El defecto se derivó, no se corrigió en el acto; una sesión de reconciliación no se convierte en una sesión de corrección.)
3. Su informe lleva pruebas, no impresiones. El registro de sesión del paso a producción no dice «el envío de SMS funciona». Dice: banner verde 1 message(s) envoyé(s) · débité 0,029677 EUR, emisor bloqueado en el OTP Auth compartido, país deducido como CIV 1 a partir del número solo, estimación de coste 1 × 1 × 0,029677 EUR mostrada antes del diálogo de confirmación que advierte de que el cargo es inmediato. Cada uno de esos detalles corresponde a un caso de la lista de verificación de PROD-CUTOVER.md — y un caso marcado en ese fichero exige exactamente esto: algo hecho y observado, con fecha, nunca una creencia.
Parte 3 — Los límites honestos
La herramienta no es magia, y fingir lo contrario sería el tipo de mentira que esta serie existe para evitar.
- Las coordenadas en píxeles caducan. Dos veces en la sesión, un clic con las coordenadas de la captura anterior no acertó nada porque la página se había recolocado (un modal cerrado, la ventana redimensionada). El remedio es disciplina, no suerte: pulsar por
refobtenido defindoread_pagesiempre que el objetivo importe, y considerar las coordenadas válidas solo dentro del lote que tomó la captura. - Los controles nativos se resisten al clic. El desplegable de plantillas no se abrió nunca con un clic;
form_inputlo fijó en una sola llamada. Saber qué herramienta encaja con qué control es justo el oficio que se acumula en una guía como esta. - Las acciones reales son reales. El diálogo de confirmación de senndo lo dice sin rodeos: «Le débit est immédiat et un message parti ne se rappelle pas.» La herramienta pulsará ese botón sin dudar. Si esta sesión pudo hacerlo sin una pausa en cada envío es porque el humano había encargado el recorrido de forma explícita, había elegido el número de destino (el suyo) y estaba allí recibiendo los mensajes. La autorización se dio por misión, por adelantado, con el humano como testigo físico — esa es la forma que hay que copiar.
- La identidad sigue siendo del humano. Inicios de sesión, OAuth, pagos, CAPTCHA: la frontera es absoluta, y es una virtud. El día en que el CEO escribió su contraseña de Google fue el día en que Claude, por diseño, miraba hacia otro lado.
Parte 4 — Cuándo echar mano de ella
El patrón que se ha ganado su sitio en los proyectos de ZeroSuite: recurrir a claude-in-chrome cuando la verdad vive en una pantalla renderizada y el coste de que un humano la informe supera al coste de que el modelo la mire. En concreto:
- Conducir un recorrido de usuario de principio a fin contra producción, cosechando pruebas en cada paso (esta sesión).
- Verificar que un cambio de interfaz ya publicado se renderiza de verdad — en vez de preguntarle al usuario «¿se ve bien en tu máquina?».
- Reproducir un fallo que el usuario describe de forma vaga: el modelo sostiene cuarenta capturas en contexto sin fatiga; el usuario no sostiene cuarenta pestañas.
- Leer consolas y paneles de servicios de terceros a los que la sesión no llega por API, con la bendición del usuario y su sesión ya abierta.
Y el antipatrón, igual de ganado: no usarla como sustituto de las gates automatizadas del propio proyecto. Para eso senndo tiene make e2e, Playwright y un verificador responsive sin dependencias. El navegador en manos de Claude es para los casos en que la pantalla que importa es la de producción, en el navegador del usuario, detrás de la sesión real del usuario — el sitio exacto al que ningún arnés de CI puede llegar.
Sesión de referencia: reconciliación del paso a producción de senndo.com, 2026-08-18 — dos canales probados en real desde una cuenta de cliente recién creada antes de redactar este artículo, y otros cuatro esperando a que el CEO vuelva de prepararse un té.