Seguridad
Dónde se guardan las credenciales
En el Mac
Las contraseñas, las frases de contraseña de las claves, las claves de API de los proveedores de IA y la clave de licencia se guardan en el Llavero de macOS. La lista de conexiones en disco no contiene contraseñas, y una clave SSH sigue siendo un archivo en disco.
En iPhone y iPad
Las contraseñas y las claves SSH pegadas se guardan en el Llavero.
iCloud Sync
iCloud Sync está desactivado hasta que lo actives. Los registros van a una base de datos privada en tu propia cuenta iCloud, que TablePro no puede leer, y no llevan contraseñas. Las contraseñas solo se sincronizan si también activas Passwords en el Mac o Sync Passwords en iPhone y iPad, y entonces viajan por el Llavero de iCloud.
Qué recibe TablePro
Las consultas que ejecutas, sus resultados y tus contraseñas no se envían a TablePro. La excepción es una Team Library en la que decidas publicar: recibe la configuración de las conexiones y las consultas guardadas, nunca contraseñas.
Limitaciones que conviene conocer
- En el Mac, la sincronización de contraseñas también lleva las claves de API de los proveedores de IA y la clave de licencia.
- Una fuente de contraseñas como 1Password o un comando de shell ejecuta un programa en tu Mac cada vez que te conectas.
Qué sale de tu dispositivo
A tus servidores y proveedores
Las consultas y los resultados viajan entre la app y tus propios servidores de bases de datos, nunca a través de TablePro. Las solicitudes de IA van directamente al proveedor que añadas.
A TablePro
Sin una licencia activada, la única solicitud de la app para Mac a TablePro es un informe diario de uso, activado por defecto y configurable en los ajustes. En iPhone y iPad no se envía nada a TablePro salvo que actives Share Usage Data. Un informe nunca incluye nombres de host, nombres de usuario, contraseñas, consultas ni filas, y ninguna de las dos apps contiene un informador de fallos ni una biblioteca de analítica de terceros.
Limitaciones que conviene conocer
- La app para Mac envía su primer informe de uso sin preguntar, y nuestro servidor guarda la dirección IP de cada informe y de cada comprobación de licencia.
Cómo te llegan las apps
Firmadas y notarizadas
Las versiones para Mac están firmadas con un Developer ID, usan el Hardened Runtime y están notarizadas por Apple. Las imágenes de disco están en GitHub Releases, cada una con su suma de comprobación SHA-256. El cask de Homebrew descarga la misma imagen y comprueba su SHA-256.
Actualizaciones
La app para Mac se actualiza con Sparkle y, antes de instalar cada actualización, comprueba su firma EdDSA con la clave pública incluida en la app. Esa comprobación no se puede desactivar. Las actualizaciones automáticas sí, en los ajustes o con un perfil de configuración.
Plugins de controladores
Los controladores que no vienen con la app para Mac se descargan de GitHub. Cada uno debe coincidir con el SHA-256 del registro de plugins y tener una firma de código válida: la de TablePro, o el Developer ID de otro desarrollador una vez que aceptas confiar en ese desarrollador por su nombre.
iPhone y iPad
La app para iPhone y iPad está en el App Store, que también entrega sus actualizaciones. Sus controladores vienen integrados y no descarga plugins.
Limitaciones que conviene conocer
- La app para Mac no usa el App Sandbox de macOS: se ejecuta con el acceso a archivos y a la red de tu cuenta de usuario.
- Un plugin de controlador se ejecuta como parte de TablePro y puede leer las credenciales de todas las conexiones que abras.
Qué protege una base de datos de un error
Niveles de Safe Mode
Cada conexión tiene un nivel de Safe Mode: Silent, Alert, Alert (Full), Safe Mode, Safe Mode (Full) y Read-Only. Alert pregunta antes de una escritura, los niveles Safe Mode también piden Touch ID o la contraseña del Mac, los niveles Full preguntan también antes de las lecturas y Read-Only rechaza las escrituras. Una organización puede imponer un nivel mínimo en sus Macs mediante un perfil de configuración. En iPhone y iPad, los niveles son Off, Confirm Writes y Read-Only.
Sentencias destructivas
En todos los niveles del Mac, DROP, TRUNCATE y un DELETE sin WHERE se detienen y preguntan primero, mostrando la sentencia completa.
Limitaciones que conviene conocer
- Safe Mode funciona dentro de TablePro y protege de errores. No es un sandbox ni un sistema de permisos: para una regla que deba cumplirse siempre, usa los privilegios de la propia base de datos.
- Las conexiones nuevas empiezan en Silent, donde las sentencias se ejecutan tal como están, incluido un UPDATE sin WHERE.
- En los modos Edit y Agent del chat, el asistente de IA puede ejecutar sentencias, y en Silent sus escrituras no preguntan. Agent mode, que ocupa toda la ventana, mantiene su conexión en Alert o superior, lo que es un recordatorio, no un bloqueo.
El servidor MCP
Solo local
El servidor MCP solo está en la app para Mac y permanece apagado hasta que lo actives o un cliente que hayas configurado lo inicie. Escucha en 127.0.0.1, sin modo remoto, y los clientes nunca ven una contraseña.
Cómo se aprueba un cliente
Por defecto, cada solicitud necesita un token con un alcance (Read Only, Read & Write o Full Access), y un diálogo en tu Mac te pregunta la primera vez que un cliente accede a una conexión.
Qué puede hacer un cliente
Cada conexión decide qué pueden hacer los clientes externos: Blocked, Read Only (por defecto) o Read & Write. Las escrituras siguen pasando por su nivel de Safe Mode, DROP y TRUNCATE requieren un token Full Access y tu aprobación cada vez, y cada llamada queda registrada en tu Mac.
Limitaciones que conviene conocer
- 127.0.0.1 indica dónde escucha el servidor, no quién puede llegar a él. Cualquier programa de tu Mac puede conectarse, y también una página abierta en claude.ai o app.cursor.com. Cada uno sigue necesitando un token, así que mantén la autenticación obligatoria.
- Lo que un cliente lee, lo envía a su propio servicio de IA según las condiciones de ese servicio.
Código abierto
El código es público
Ambas apps son de código abierto bajo AGPLv3, incluido el código de las funciones de pago. Lo que describe esta página se puede leer en el repositorio, junto con los scripts que firman y notarizan cada versión, y puedes compilar la app para Mac tú mismo.
Informar de una vulnerabilidad
Cómo informar
Escribe a [email protected] o infórmanos en privado en GitHub, en inglés o en vietnamita. No abras un issue, una discusión ni un pull request públicos por una vulnerabilidad.
Qué incluir
Qué está afectado y su versión: la app para Mac, la app para iPhone y iPad, un plugin o este sitio web. Añade la versión de macOS o iOS, el tipo de base de datos si interviene un controlador, los pasos o una prueba de concepto, y qué obtiene un atacante.
Qué versiones reciben correcciones
Solo la última versión de cada app y de cada plugin recibe correcciones de seguridad, así que comprueba que el problema sigue en la última versión antes de informar.