Pregunta directamente a asistentes de IA como Claude sobre el estado de seguridad de tu Mac / Linux
RoamSwitch incluye un servidor MCP (Model Context Protocol) de solo lectura. Conéctalo a un cliente MCP y simplemente pregunta, en lenguaje natural, «¿está mi Mac / Linux seguro ahora mismo?» o «¿qué puertos están expuestos?»: obtendrás respuestas basadas en los diagnósticos precisos del propio RoamSwitch, no en conjeturas. No puede cambiar el nivel de bloqueo, aislar puertos ni realizar ninguna otra acción; la comunicación con tu cliente de IA permanece por completo en el dispositivo a través de stdio (una extensión de nuestra política Zero Telemetry).
🔒 Por qué es seguro
- Solo lectura: únicamente diagnósticos de seguridad, monitorización de puertos y comprobación del estado de los guardias. No se implementa ninguna herramienta operativa como cambiar el modo de bloqueo, aislar puertos o expulsar dispositivos.
- Totalmente local: la comunicación con tu cliente de IA (Claude Desktop/Code, etc.) es solo mediante stdio y queda entre el cliente y el proceso de RoamSwitch en tu Mac / Linux. Nunca se envía telemetría. Solo usan la red funciones opcionales desactivadas por defecto: la verificación de vulnerabilidades, que solo examina tu propia máquina (127.0.0.1), y la verificación de firmas de npm, que consulta el registro de npm.
- Prevención de errores: al no existir herramientas operativas, no hay riesgo de que una inyección de prompt u otra técnica similar modifique accidentalmente tu cortafuegos o la configuración de red.
Configuración en dos pasos
1Ubicación del binario
Incluido en RoamSwitch.app; no requiere descarga ni instalación por separado.
/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2aPara Claude Desktop
Añade lo siguiente a "mcpServers" en ~/Library/Application Support/Claude/claude_desktop_config.json y reinicia Claude Desktop.
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
2bPara Claude Code
Basta con ejecutar una vez el siguiente comando en la terminal.
claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2cPara OpenAI Codex CLI
Añade lo siguiente a ~/.codex/config.toml, o ejecuta el siguiente comando en la terminal.
[mcp_servers.roamswitch] command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2dPara OpenCode
Añada lo siguiente a opencode.json en la raíz del proyecto (o configuración global ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
}
}
}
💡 Soporte de LLM locales: Al utilizar modelos locales con Ollama o LM Studio, puede consultar RoamSwitch completamente sin conexión, incluso cuando la red haya sido aislada por emergencia ante una amenaza.
2ePara Antigravity
Añade lo siguiente a ~/.gemini/config/mcp_config.json (o a .agents/mcp_config.json en la raíz de tu espacio de trabajo).
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
* Nota: Si encuentra un error de Hook Failure o telemetría en Antigravity CLI (agy), desactive el hook configurando "enabled": false en ~/.gemini/config/plugins/.../hooks.json.
1Ubicación del binario
Incluido en el paquete apt / rpm / AUR e instalado automáticamente en /usr/bin/roamswitch-mcp. No es necesario descargarlo ni compilarlo por separado (igual para la edición Cliente y la edición Servidor).
/usr/bin/roamswitch-mcp
El mismo binario y los mismos pasos de configuración funcionan igual en la edición Servidor (sin interfaz gráfica). Consulta el capítulo «Agentes de IA / Integración MCP» del manual de operaciones de Linux Server para más detalles.
2aPara Claude Desktop
Claude Desktop no tiene una versión oficial para Linux. Si usas una compilación no oficial (por ejemplo, claude-desktop-debian), añade lo siguiente a "mcpServers" en ~/.config/Claude/claude_desktop_config.json y reinicia la aplicación.
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
2bPara Claude Code
Basta con ejecutar una vez el siguiente comando en la terminal.
claude mcp add roamswitch /usr/bin/roamswitch-mcp
2cPara OpenAI Codex CLI
Añade lo siguiente a ~/.codex/config.toml, o ejecuta el siguiente comando en la terminal.
[mcp_servers.roamswitch] command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp
2dPara OpenCode
Añada lo siguiente a opencode.json en la raíz del proyecto (o configuración global ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/usr/bin/roamswitch-mcp"]
}
}
}
💡 Soporte de LLM locales: Al utilizar modelos locales con Ollama o LM Studio, puede consultar RoamSwitch completamente sin conexión, incluso cuando la red haya sido aislada por emergencia ante una amenaza.
2ePara Antigravity
Añade lo siguiente a ~/.gemini/config/mcp_config.json (o a .agents/mcp_config.json en la raíz de tu espacio de trabajo).
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
* Nota: Si encuentra un error de Hook Failure o telemetría en Antigravity CLI (agy), desactive el hook configurando "enabled": false en ~/.gemini/config/plugins/.../hooks.json.
Herramientas de solo lectura (actualmente 33 en Mac / 38 en Linux, en constante ampliación)
get_security_report
Realiza una auditoría de 18 puntos en Mac (FileVault, SIP, Gatekeeper, cortafuegos, solidez del cifrado Wi-Fi, suplantación ARP, puertos expuestos, etc.) o de 27 puntos en cliente / 34 en servidor bajo Linux (endurecimiento del kernel, protección del socket de Docker y contenedores privilegiados, aislamiento del runtime de contenedores, vulnerabilidades conocidas, etc.), devolviendo una puntuación y recomendaciones de mejora.
get_exposed_ports
Enumera todos los puertos en escucha actualmente y, para los expuestos externamente, devuelve una auditoría detallada que incluye la detección de servicios de riesgo conocidos (Redis, MongoDB, etc.). En Mac, envía un HTTP GET por cada puerto expuesto a 127.0.0.1 para verificar los encabezados.
get_guard_status
Devuelve el estado de la protección de puertos, contención ARP, USB, Bluetooth, descargas Web/Mail, protección contra amenazas DNS y el nivel de seguridad.
audit_url_safety
Analiza enlaces de correos o URLs web para detectar phishing, ataques homógrafos Unicode, subdominios engañosos y TLDs de alto riesgo (Zero Telemetry).
get_app_help
Busca en la base de conocimientos oficial de RoamSwitch sobre todas las funciones, alertas, ajustes y solución de problemas en el dispositivo para ofrecer explicaciones y consejos precisos.
audit_security_logs
Agrega los registros de seguridad recientes (Mac: fallos de autenticación sudo, intentos de fuerza bruta SSH, bloqueos de Gatekeeper, detecciones de XProtect, etc. / Linux: fallos de autenticación sudo, fuerza bruta SSH, bloqueos del cortafuegos, denegaciones de AppArmor, detecciones de ClamAV, etc.), enmascara automáticamente información sensible como claves API y tokens, y además devuelve los resultados de la detección de patrones nuevos (mediante plantillas de log) y de anomalías de frecuencia (picos estadísticos). En Linux, si no se pudo leer el journal (por ejemplo, por tiempo agotado), los ceros del recuento no significan que no haya pasado nada; journalReadComplete pasa a false y journalError indica el motivo.
get_notification_history
Devuelve el historial de notificaciones enviadas por RoamSwitch (anomalías de auditoría de registros de seguridad, detecciones de ClickFix, etc.) de los últimos 7 días, las más recientes primero.
roamswitch://docs/* (MCP Resources)
Recursos de documentación oficiales que los clientes de IA pueden consultar directamente en su contexto (especificaciones, alertas, ajustes y solución de problemas).
Otras herramientas de solo lectura
| Herramienta | Plataforma | Descripción |
|---|---|---|
audit_secrets |
Mac / Linux | Detecta claves de API y claves privadas expuestas en texto, un archivo o un árbol de directorios (los hallazgos se enmascaran en la salida). |
run_active_vuln_scan |
Mac / Linux | Verificación activa de vulnerabilidades, no destructiva y limitada a 127.0.0.1. No contacta con ningún otro host, pero envía peticiones de red, por lo que está desactivada por defecto y requiere activarla expresamente en los ajustes. |
get_vulnerability_scan_history |
Mac / Linux | Devuelve el último resultado registrado y los días transcurridos (pass_age) para cada sonda que run_active_vuln_scan ha registrado. |
verify_security_findings |
Mac / Linux | Reevalúa elementos (checkId) de get_security_report según el estado actual y devuelve un veredicto por elemento, stillPresent (sigue aplicándose), resolved (resuelto, o no aplicable por diseño) o inconclusive (no se pudo determinar), junto con un código de motivo independiente del idioma. Sirve para comprobar, después de una corrección, que de verdad ha surtido efecto. Un elemento que no se pudo medir, por ejemplo por falta de privilegios, porque el helper con privilegios no está conectado o porque Docker no es accesible, nunca se notifica como seguro y se devuelve como inconclusive. Si se omite checkIds, se comprueban todos los elementos (hasta 50 identificadores en Mac y 64 en Linux; en Linux también se acepta isServer). En Mac, host_firewall, network_stealth_mode, gateway_arp_lock, malware_scanning, dns_threat_guard y usb_zero_trust se deciden según los ajustes de la app RoamSwitch, por lo que reflejan esos ajustes y no son una nueva medición del estado real del sistema operativo. Es de solo lectura, no se conecta a hosts externos y no repara nada ni cambia ningún ajuste. En Linux tampoco envía nada a la LAN y solo lee la puerta de enlace de las cachés locales. En Mac, para averiguar la dirección MAC de la puerta de enlace, puede enviar un ping ICMP, normalmente uno (unos pocos si no se resuelve la MAC), a la puerta de enlace de la LAN. |
audit_mcp_configs |
Mac / Linux | Lee los archivos de configuración MCP de los clientes de IA (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Cline, Gemini CLI, además de .mcp.json y archivos similares en las carpetas de proyecto registradas) y señala ajustes de riesgo. Detecta herramientas aprobadas automáticamente sin confirmación en cada llamada (auto_approve), servidores http:// en texto plano en un host que no es loopback, ya figure en el campo url o se pase como argumento de inicio, como --server http://… (remote_plain_http), comandos de inicio que son líneas únicas de shell o intérprete (shell_wrapper), lanzadores como npx / uvx / docker run que descargan un paquete o imagen sin versión fijada (unpinned_package_launcher), docker run con --privileged o con el socket de Docker o el sistema de archivos raíz montados (container_host_access), las variables de entorno que cargan código adicional al iniciar, como LD_PRELOAD o --require en NODE_OPTIONS (nombres sin distinguir mayúsculas, valores nunca devueltos; code_loading_env), entradas que apuntan a HexStrike AI, un backend de herramientas de ataque sin autenticación (hexstrike), archivos de configuración con escritura permitida para el grupo u otros (world_writable_config), el ajuste enableAllProjectMcpServers de Claude Code (auto_trust_project_servers) y un archivo de configuración que reúne un servidor que lee textos escritos por otras personas (páginas web, correos, chats, issues) y un servidor que puede ejecutar comandos o modificar archivos, la combinación que necesita la inyección de prompt indirecta (se reconoce por nombres de paquete conocidos y no ve el contenido de las herramientas del servidor; injection_exposure). No tiene argumentos, es de solo lectura y no envía nada a la red. Nunca devuelve valores de entorno o de cabeceras, argumentos ni secretos, solo nombres de servidores, el nombre base de un comando, un host de URL y, si es un nombre de registro simple, el nombre del paquete o de la imagen. Los archivos que no se pudieron analizar aparecen en unreadableFiles y no se auditaron. |
audit_agent_setup |
Mac / Linux | Lee los archivos de instrucciones y los skills dados a agentes de IA (CLAUDE.md, commands, agents y skills bajo ~/.claude, además de ~/.codex, ~/.cursor/rules, ~/.gemini, ~/.agents, ~/.openclaw, y CLAUDE.md, AGENTS.md, .cursorrules y similares en las carpetas de proyecto registradas) y el openclaw.json de OpenClaw, y señala contenido y ajustes de riesgo. En los archivos de instrucciones y skills informa de frases ocultas en caracteres de etiqueta Unicode invisibles (hidden_tag_characters), caracteres de ancho cero y de control de dirección (invisible_characters), redacción que anula instrucciones anteriores u oculta algo al usuario (override_instruction), descargar y ejecutar como curl … | sh (remote_script_exec), decodificar y ejecutar (encoded_payload_exec), referencias a almacenes de claves y credenciales (credential_access) junto a un envío o un servicio de recepción (credential_exfil_shape, exfil_endpoint), configuración de mecanismos persistentes (persistence_instruction), código compilado dentro de un skill (skill_precompiled_code) y archivos que otros pueden modificar (agent_file_writable). Lo que esté dentro de un comentario HTML se valora más alto, porque una página renderizada lo oculta. Para OpenClaw informa de autenticación desactivada (openclaw_auth_disabled), una escucha alcanzable desde la red (openclaw_wide_bind), un token de menos de 24 caracteres (openclaw_weak_token), un origen comodín (openclaw_origin_wildcard), interruptores dangerously… activados (openclaw_dangerous_flag), una lista de proxies que confía en todos (openclaw_broad_trusted_proxy, openclaw_proxy_trust_loosened), una política de mensajes directos o de grupo abierta a cualquiera (openclaw_open_dm), mDNS en full (openclaw_mdns_full), hallazgos de autodiagnóstico ocultos (openclaw_audit_suppressed) y permisos laxos (openclaw_loose_permissions). Cada regla es determinista: una coincidencia significa «una persona debería leer esta línea», no «malicioso». No toma argumentos, es de solo lectura y no envía nada a la red. Nunca devuelve el contenido de los archivos ni secretos (un token solo se informa por su longitud), solo un nombre de regla, un número de línea, un host de URL y una ruta de clave de configuración. Los archivos que no se pudieron leer figuran en unreadableFiles y no se auditaron. |
run_package_cve_scan |
Mac / Linux | Compara los paquetes instalados (Mac: Homebrew / Linux: dpkg, dnf, zypper, pacman) con un mapa de CVE local. No se realiza ninguna comunicación de red. En Linux, si no se pudo leer la lista de paquetes o se agotó el tiempo, no se informa «sin coincidencias»; complete pasa a false e incompleteReason indica el motivo (un resultado incompleto no es un resultado limpio). En Ubuntu (20.04, 22.04, 24.04, 26.04) usa los datos propios de Ubuntu, compara por nombre y versión del paquete fuente y solo comprueba las CVE con CVSS 7,0 o superior para las que Ubuntu ya ha publicado una corrección, por lo que «sin coincidencias» no significa que no haya CVE conocidas. El resultado añade ecosystem y release, cada hallazgo incluye binary (el nombre del paquete binario instalado) y las correcciones que solo ofrece Ubuntu Pro llevan proOnly. Las derivadas de Ubuntu (Linux Mint, Pop!_OS y otras) y las versiones no compatibles devuelven complete = false con el motivo en incompleteReason, sin pasar a los datos de Debian. |
run_package_cve_scan_languages |
Mac / Linux | Compara los archivos de bloqueo de dependencias de npm, PyPI, crates.io, RubyGems, Packagist, Go y Maven con el mismo mapa de CVE local. No se realiza ninguna comunicación de red. |
run_package_lifecycle_script_scan |
Mac / Linux | Enumera los scripts de ciclo de vida (preinstall / install / postinstall / prepare) de los package.json que hay en el node_modules de un proyecto. Solo lee archivos: no ejecuta nada ni envía nada por la red. Cada entrada incluye un indicador orientativo para patrones de aspecto arriesgado (como curl|sh), pero es un inventario, no un veredicto sobre si un paquete es malicioso. |
run_typosquat_scan |
Mac / Linux | Comprueba si el nombre de alguna dependencia del package.json de un proyecto difiere en solo uno o dos caracteres de un paquete npm conocido (posible typosquatting). Solo lee archivos locales y nunca contacta con un registro. Es una heurística meramente orientativa, por lo que son posibles los falsos positivos. |
run_npm_audit_signatures |
Mac / Linux | Esta herramienta consulta el registro de npm (registry.npmjs.org). Ejecuta npm audit signatures para verificar las firmas y la procedencia de los paquetes instalados. Está desactivada por defecto y se niega a ejecutarse hasta que la actives en los ajustes (solo Pro en Mac). |
get_quarantine_status |
Mac / Linux | Devuelve el contenido del baúl de cuarentena: ruta original, nombre de la amenaza detectada, fecha de cuarentena y tamaño. |
get_canary_status |
Mac / Linux | Devuelve el estado de los archivos señuelo antiransomware (canary) y hasta los 50 incidentes detectados más recientes. |
get_ransomware_entropy_guard_status |
Mac | Devuelve si la detección genérica de ransomware por entropía está activada y sus incidentes recientes de ráfaga de entropía. |
get_honeytoken_status |
Mac | Devuelve si la protección de honeytokens de credenciales está activada y sus eventos recientes de detección de acceso. |
get_browser_credential_watch_status |
Mac | Devuelve si la supervisión de acceso a credenciales del navegador está activada y sus eventos recientes de detección de acceso. |
get_forensic_evidence_bundles |
Mac | Devuelve la lista de paquetes de evidencia forense (lista de procesos, conexiones de red, archivos modificados, etc.) guardados cuando se activó un Air-Gap de emergencia. |
get_ransomware_recovery_snapshots |
Mac | Devuelve las instantáneas APFS de recuperación (previas al daño, de detección, manuales), la recomendada para recuperar, el estado del modo de retención y el intervalo de instantáneas. Una instantánea de detección puede contener ya archivos cifrados. Solo Pro. |
search_exec_events |
Mac / Linux | Busca en el registro de ejecuciones de procesos. En Mac consulta el registro basado en eslogger; en Linux, el del registrador de ejecuciones (con una cadena de hashes que hace detectable cualquier alteración). Se puede filtrar por ruta, argumentos y más, y el resultado indica también el estado del registrador y si se pudo leer el registro. Solo Pro en Mac. El registro de Linux es solo para root, así que el servidor MCP debe ejecutarse como root. |
get_process_tree |
Mac / Linux | Reconstruye a partir del registro de ejecuciones los ancestros y descendientes de un proceso dado. Solo se conocen los procesos que el registrador llegó a ver. Solo Pro en Mac. |
get_port_anomaly_incidents |
Mac / Linux | Devuelve el estado de la línea base de la protección de puertos anómalos, los puertos bloqueados automáticamente y hasta los 50 incidentes más recientes. La respuesta indica explícitamente que los puertos actualmente bloqueados son una instantánea del estado actual, sin marca de tiempo, distinta del historial de incidentes, que sí lleva marca de tiempo. |
get_ssh_guard_incidents |
Mac / Linux | Devuelve el estado y el historial de la guardia contra fuerza bruta SSH: si bloquea o solo detecta (por ejemplo, porque otra herramienta ya protege sshd), los orígenes bloqueados en este momento con el tiempo restante y hasta los 200 registros más recientes (un origen fue bloqueado, fue detectado sin bloqueo, o un inicio de sesión tuvo éxito tras una serie de fallos del mismo origen). Los nombres de usuario probados no se guardan en Linux (solo su cantidad) y en Mac se devuelven saneados, hasta 5. Mac devuelve además los inicios de sesión SSH recientes (origen, usuario, método, huella de la clave). Solo lectura: ninguna herramienta MCP levanta un bloqueo. En Linux la lista de bloqueos solo la puede leer root, así que quien llama sin root recibe solo el número. Linux: la Server Edition y la Client Edition mientras sshd esté en marcha. Mac: solo Pro. |
get_port_scan_incidents |
Linux | Devuelve el registro de escaneos de puertos (reconocimiento) detectados contra este dispositivo: cada IP de origen que alcanzó muchos puertos distintos en poco tiempo, cuántos puertos tocó (con una muestra) y si además fue bloqueada automáticamente y durante cuánto tiempo. |
get_runtime_threat_status |
Mac | Indica si este Mac está aislado (Air-Gap) por una detección de malware de XProtect, junto con el incidente que lo activó. Es lo primero que conviene consultar durante un Air-Gap activo. |
verify_fim |
Linux | Vuelve a calcular el hash de unos 150 archivos críticos del sistema y lo compara con la línea base guardada para verificar su integridad. Si se ejecuta como root, el resultado incluye además un campo añadido, recentIntrusionContext: por cada cambio reciente, el proceso que lo hizo (cuenta, ejecutable, comando) y el inicio de sesión SSH al que pertenece (origen, hora de inicio de sesión, método de autenticación), o el motivo por el que no se pudo averiguar. |
get_file_scan_guard_status |
Linux (Server) | Devuelve la configuración del File Scan Guard (ClamAV) y el estado del baúl de cuarentena que utiliza (herramienta de la Server Edition; no informa de la configuración de la protección contra malware de la edición Client). |
get_ebpf_incidents |
Linux (Server) | Devuelve el estado de aislamiento actual del guardián de ejecución eBPF y el historial de incidentes que lo motivó. En la Server Edition cada registro lleva también el tiempo desde la detección hasta la respuesta en milisegundos (detect_to_receive_ms, receive_to_action_ms, detect_to_action_ms), y el resultado incluye el estado del heartbeat de Falco (heartbeat). |
get_resource_guard_incidents |
Linux (Server) | Devuelve el historial del guardián de agotamiento de recursos y anomalías de procesos (fugas de memoria, bucles de fallo), con un nivel de confianza (este guardián pertenece a la Server Edition; la edición Client no lo ejecuta, por lo que el resultado allí siempre está vacío). |
get_incident_timeline |
Mac / Linux | Unifica las detecciones de todos los guardianes en una única línea temporal, con la ascendencia de procesos y etiquetas MITRE ATT&CK (experimental). |
get_network_history |
Mac | Registra cuántos dispositivos de puerta de enlace distintos han respondido por cada red Wi-Fi recordada y cuándo se vio por última vez, y señala otras redes con nombres sospechosamente similares (posibles Evil Twin). También permite saber si ya te has conectado antes a una red concreta. |
get_vpn_status |
Linux (Client) | Indica si la VPN en redes no confiables (WireGuard / Tailscale) está activada, si el túnel está realmente establecido y si el kill switch antifugas está armado. |
get_link_guard_status |
Linux (Client) | Devuelve el estado de activación de Link Guard (bloqueo de phishing / sitios maliciosos mediante inspección de DNS / TLS SNI / host HTTP), su modo (desactivado / aviso / bloqueo), la lista de permitidos y los eventos de bloqueo/aviso de los últimos 7 días. |
get_air_gap_status |
Linux (Client) | Indica si el aislamiento de emergencia Air-Gap (todo el tráfico bloqueado) está activo en este momento, el motivo que lo desencadenó, el tiempo restante hasta la liberación automática y todos los procesos actualmente congelados con SIGSTOP. |
get_sharing_services_status |
Linux (Client) | Devuelve el ajuste que detiene automáticamente SSH, Samba y el uso compartido de pantalla (GNOME Remote Desktop / VNC / xrdp) en redes no confiables, y el estado real de los servicios que efectivamente se detienen y restauran. |
get_bluetooth_guard_status |
Linux (Client) | Devuelve el ajuste de Bluetooth Guard que fuerza la desactivación de la visibilidad en redes no confiables, y el estado real del controlador (encendido, visible, dispositivos conectados). |
get_usb_guard_status |
Linux (Client) | Devuelve los ajustes de la guardia de almacenamiento USB y de la guardia de teclado BadUSB (la entrada solo se suprime mediante evdev; un dispositivo nunca se desautoriza a nivel de kernel), junto con los dispositivos conectados y los pendientes de aprobación. |
get_fleet_status |
Linux | Devuelve el estado de este dispositivo en Fleet (gestión centralizada por organización, una función en preparación para RoamSwitch Business): si está inscrito, qué versión de política se aplica, el estado de los check-ins, etc. Nunca devuelve códigos de inscripción, tokens, claves ni datos de licencia. Fleet no tiene canal de órdenes remotas, así que un administrador no puede aislar ni manejar este dispositivo. |
get_sensor_audit_results |
Mac / Linux | Devuelve los resultados de las auditorías activas solicitadas a un RoamSwitch Sensor emparejado (un producto aparte que se ejecuta en tu propio hardware dentro de la misma LAN): pendiente, completada o fallida. Aporta la visión desde fuera de lo que es realmente accesible, algo que no se ve desde dentro del dispositivo. Con esta herramienta no se puede solicitar una auditoría ni emparejar un Sensor. |
De las herramientas anteriores, las que solo leen el estado local (cuarentena, señuelo/canary, anomalías de puertos, amenazas en tiempo de ejecución, historial de notificaciones, línea temporal de incidentes, historial de red, estado de VPN / Link Guard / Air-Gap / servicios compartidos / Bluetooth / guardia USB, etc.) siguen funcionando incluso cuando RoamSwitch ha cortado la red de emergencia al detectar una amenaza. Combinadas con un LLM local, permiten investigar la causa in situ durante el corte.
Códigos de motivo de verify_security_findings. En ambas plataformas aparecen failing (sigue aplicándose), passing (sin problema), not_applicable (no aplicable aquí por diseño), not_verifiable (no se puede confirmar de este modo) y unknown_check_id (ese checkId no existe). Solo en Mac se devuelven helper_unavailable (el helper con privilegios no está conectado), gateway_unknown (no se pudo identificar la puerta de enlace), no_baseline (no se puede comparar con la MAC de la puerta de enlace de una red de confianza registrada; si no hay ninguna registrada, la supervisión ARP por MCP siempre devuelve este valor), not_measured (la lista de puertos nunca se ha medido; solo aparece en el informe de la app y normalmente no por MCP), location_unavailable (leer el Wi-Fi requiere el permiso de ubicación) y tool_failed (un comando del sistema no devolvió nada o su salida no permitía concluir si estaba activado o desactivado, por ejemplo SIP con enabled (Custom Configuration)). Solo en Linux se devuelven not_root (no se ejecuta como root, así que no puede leer los datos), daemon_unknown (el estado del daemon no está disponible), tool_missing (falta un comando necesario), tool_timeout (un comando externo no terminó a tiempo y se interrumpió), docker_unreachable (no se puede acceder a Docker) y unconfirmed (la propia comprobación marcó su resultado como no confirmado). Con inconclusive no se puede confirmar ni descartar que la corrección haya funcionado; restablezca el privilegio o la conexión que falta y vuelva a llamar a la herramienta.
Solo run_npm_audit_signatures (registro de npm), que es opcional y exclusiva de Pro en Mac, se comunica con un host externo. run_active_vuln_scan (desactivada por defecto) solo sondea 127.0.0.1, y en Mac get_exposed_ports se limita a enviar un HTTP GET por cada puerto expuesto a 127.0.0.1 para verificar los encabezados. Para averiguar la dirección MAC de la puerta de enlace, las herramientas de diagnóstico de Mac pueden enviar un ping ICMP, normalmente uno (unos pocos si no se resuelve la MAC), a la puerta de enlace de la LAN. En Linux, get_security_report y verify_security_findings no envían nada a la LAN y solo leen la puerta de enlace de las cachés locales (otras herramientas que resuelven de nuevo la MAC de la puerta de enlace, como get_guard_status, pueden enviar un ping).
Cómo consultar a la IA en el trabajo y desarrollo diario
Ejemplos prácticos de prompts y respuestas de IA para auditoría de puertos en desarrollo local, verificación de Wi-Fi público, detección de phishing y más. Copia los prompts directamente en tu IA.
Auditoría de exposición de puertos en servidores locales y DB
Al iniciar Next.js, Vite, Python, Docker, Redis, etc., pide a la IA que audite si los puertos están expuestos accidentalmente en 0.0.0.0 a toda la red local.
• 🚨 Puerto 3000 (node / Next.js): Expuesto externamente en
0.0.0.0:3000• 🚨 Puerto 6379 (redis-server): Expuesto externamente en
0.0.0.0:6379 (sin autenticación; accesible por otros dispositivos en el mismo Wi-Fi)• ✅ Puerto 5432 (postgres): Vinculado a
127.0.0.1:5432 (solo localhost / seguro)💡 Recomendación: Cambia la configuración de Redis a
bind 127.0.0.1 e inicia Next.js con npm run dev -- -H 127.0.0.1.Verificación de seguridad al conectarse a Wi-Fi público
Justo después de conectarte a una red Wi-Fi pública en una cafetería o un hotel, pide a la IA un diagnóstico completo para comprobar si el cortafuegos y la protección ARP están activos.
• 🛡️ Puntuación global: 88 / 100 (Grade: A-)
• 📡 Estado de la red: Red no confiable (Modo fuera de oficina / filtro de paquetes activo)
• ✅ Cortafuegos / Modo invisible: Activado (bloquea paquetes de sondeo externos)
• ✅ Aislamiento automático anti-suplantación ARP: Activado (aislamiento automático ante interceptaciones)
• ⚠️ Acción recomendada: El cifrado FileVault está desactivado. Se recomienda activarlo en Ajustes del Sistema.
Análisis de enlaces sospechosos en correos y chats
Haz que la IA inspeccione de inmediato enlaces sospechosos en correos o mensajes de Slack/Discord completamente en local, sin enviar la URL a servidores externos (Zero Telemetry).
• 🚨 Nivel de riesgo: Dangerous (Peligroso / Puntuación: 8/100)
• ❌ Subdominio suplantador: Finge ser
apple.com, pero el dominio real es login-auth-verify.xyz.• ❌ TLD de alto riesgo:
.xyz se asocia frecuentemente con campañas de phishing efímeras.• 🔒 Zero Telemetry: Inspeccionado localmente en tu Mac sin transferir ningún dato al exterior.
• 🛑 Recomendación: No abras el enlace bajo ninguna circunstancia, elimina y reporta el correo.
Salvaguarda de seguridad autónoma al programar
Cuando encargues a Claude Code o Antigravity configurar servicios o suites de pruebas, permite que ejecuten las herramientas MCP como salvaguarda para verificar que no haya puertos abiertos indebidamente.
1. Servidor Fastify iniciado en el puerto 8080.
2. 🔍 Verificación con RoamSwitch MCP: Se ejecutó
get_exposed_ports y se confirmó que el puerto está vinculado estrictamente a 127.0.0.1:8080 (solo localhost).3. Entorno seguro verificado. Continuando con las pruebas de integración.
Informe de seguridad diario y exportación en Markdown
Genera con un solo clic un informe en Markdown claro y estructurado para políticas de TI, auditorías de la empresa o tu propio registro diario.
## 🛡️ Mac Security Health Report (2026-08-28)
- Puntuación global: 96 / 100 (Grade: A+)
- Estado de defensas principales:
• FileVault: ✅ Activado (APFS Encrypted)
• SIP: ✅ Activado
• Cortafuegos / Modo invisible: ✅ Activado
• Aislamiento automático ARP: ✅ Activado
• Protección contra amenazas DNS: ✅ Activado (Quad9 Secure DNS)
- Acciones recomendadas: Ninguna (excelente estado de seguridad)Comprobación de estado de guards de USB, Bluetooth y descargas
Comprueba que las defensas en tiempo real, como la alerta de USB desconocido, la supervisión de Bluetooth y la protección de descargas, estén operativas.
• 🛡️ Nivel de protección activo: Balanced (Modo estándar de protección)
• ✅ Guardia de almacenamiento USB: Activo (alerta/bloquea memorias USB no registradas)
• ✅ Guardia de Bluetooth: Activo (supervisa la proximidad de dispositivos no emparejados)
• ✅ Protección de descargas Web/Mail: Activo (análisis automático ClamAV de archivos en cuarentena)
• ✅ Protección contra amenazas DNS: Activo (bloquea dominios maliciosos C2 y phishing)
Consultar sobre el uso de la app y significado de alertas
Pregunte a la IA sobre cualquier notificación o especificación técnica (filtro de paquetes, FSEvents, ClamAV, protección USB, etc.) y obtenga respuestas basadas en la base oficial.
• 🚪 Motivo: El servidor inició en
0.0.0.0 (público en LAN). RoamSwitch bloqueó los accesos externos entrantes.• ⚙️ Solución:
1. Recomendado: Inicie con
npm run dev -- -H 127.0.0.1.2. Compartir en red: Autorice el puerto 3000 en la auditoría de puertos.
• 🔍 Análisis del incidente: Un dispositivo falsificó paquetes ARP para suplantar al router (ataque Man-in-the-Middle).
• 🛡️ Defensa automática: RoamSwitch aplicó un aislamiento de emergencia de la interfaz para evitar la interceptación.
• 🛑 Recomendación: No vuelva a conectarse a esa red pública. Continúe trabajando de forma segura mediante anclaje a red.
• 🔌 Motivo de expulsión: Expulsado para evitar robo de datos y ataques de firmware BadUSB.
• ⚙️ Pasos de registro: 1. Abra 'Ajustes' desde el icono de RoamSwitch → 2. Seleccione la pestaña 'Protección USB' → 3. Haga clic en 'Añadir desde dispositivos conectados' → 4. Establezca el permiso en 'Solo lectura (Recomendado)' y guarde.
• ⚠️ Causa: La comunicación XPC con el daemon privilegiado
RoamSwitchHelper se ha interrumpido temporalmente.• 🛠️ Pasos de restauración:
1. Abra Terminal y reinicie el daemon:
sudo killall RoamSwitchHelper2. Reinicie la app RoamSwitch.
3. En 'Ajustes del Sistema' > 'General' > 'Ítems de inicio y extensiones', asegúrese de que
RoamSwitchHelper esté activado.Triaje sin conexión con un LLM local + MCP tras un bloqueo de emergencia Air-Gap
Cuando se activa Air-Gap (bloqueo de red de emergencia) — por ejemplo, al detectar ransomware —, también se corta la comunicación con clientes de IA en la nube como Claude Desktop. Pero el servidor MCP de RoamSwitch sigue funcionando, ya que solo se comunica mediante una tubería de proceso local; combínalo con un LLM local (por ejemplo, mediante Ollama) y podrás seguir diagnosticando sin ningún acceso a la red. La detección de anomalías en registros, la detección de manipulaciones y el cotejo con CVE conocidos son totalmente locales, así que este es precisamente el momento para el que fueron creados: cuando la propia red ha desaparecido.
• 🐛 Señuelo activado: se detectó el cifrado de
/var/www/decoy_invoice.pdf a las 14:32:07; el proceso suspicious_enc (PID 8823) fue congelado y aislado de inmediato• 🔌 Supervisión de puertos (Port Anomaly Guard): sin nuevos bloqueos automáticos en el historial de incidentes — el señuelo activado parece ser el único punto de entrada, sin puertos de puerta trasera adicionales abiertos
• 📜 Correlación de registros (detección de anomalías): un pico de fallos de autenticación de
sshd comienza 12 minutos antes de la activación (pico de frecuencia detectado, Z-score 5,2) — un posible punto de entrada• 🔒 Detección de manipulación (FIM): no se encontró manipulación en ~150 rutas críticas del sistema — sin indicios de que la brecha alcanzara la capa del sistema
• 📦 Verificación de CVE conocidas: cotejado con el mapa de CVE local — sin vulnerabilidades conocidas críticas en los paquetes afectados
💡 Acción recomendada: es probable que la brecha esté confinada a la raíz web. Antes de restaurar desde una copia de seguridad, revisa también individualmente los demás archivos de ese directorio.
Sobre la integración con MCP
Q. ¿De verdad nunca se comunica con el exterior?
A. Así es. El servidor MCP es un proceso local que tu cliente de IA inicia directamente a través de la entrada/salida estándar (stdio) y no envía ninguna telemetría. Los resultados del diagnóstico se calculan al instante en este Mac / Linux. Solo run_npm_audit_signatures (registro de npm), que es opcional y exclusiva de Pro en Mac, se comunica con un host externo. run_active_vuln_scan (desactivada por defecto) solo sondea 127.0.0.1, y en Mac get_exposed_ports se limita a enviar un HTTP GET por cada puerto expuesto a 127.0.0.1 para verificar los encabezados. Para averiguar la dirección MAC de la puerta de enlace, las herramientas de diagnóstico de Mac pueden enviar un ping ICMP, normalmente uno (unos pocos si no se resuelve la MAC), a la puerta de enlace de la LAN. En Linux, get_security_report y verify_security_findings no envían nada a la LAN y solo leen la puerta de enlace de las cachés locales (otras herramientas que resuelven de nuevo la MAC de la puerta de enlace, como get_guard_status, pueden enviar un ping).
Q. ¿Puedo usarlo sin la versión Pro?
A. En Linux, todas las herramientas están disponibles sin coste. Con la versión gratuita de la app de Mac también funcionan la mayoría, pero cuatro son solo Pro y devuelven un error si Pro no está activo: get_ransomware_recovery_snapshots, search_exec_events, get_process_tree y run_npm_audit_signatures. Además, que cada guardia automática esté realmente activa también depende del estado de la licencia Pro, por lo que las herramientas solo pueden confirmar el estado del interruptor en Ajustes.
Q. ¿Qué clientes de IA son compatibles?
A. Cualquier cliente compatible con el transporte stdio de MCP (Model Context Protocol) debería funcionar en general, incluso más allá de los mencionados arriba. Verificado con Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode y Antigravity.
Q. ¿Antigravity muestra un error de «Hook Failure» o telemetría al ejecutar herramientas?
A. Un hook PreToolUse de complementos externos (como la telemetría de Google Cloud) en Antigravity puede bloquear la ejecución. Abra ~/.gemini/config/plugins/.../hooks.json y configúrelo como "enabled": false.
Q. ¿Puedo realizar consultas cuando la conexión de red está bloqueada?
A. Sí, si utiliza un LLM local (con OpenCode mediante Ollama o LM Studio), todo se procesa al 100% en su Mac / Linux y funciona sin conexión incluso durante un aislamiento de red de emergencia. Si utiliza un LLM en la nube (como la API de Claude), cambie a una red segura como anclaje móvil antes de consultar.