# Tratamiento de datos y privacidad

> Ni telemetría ni autoactualización silenciosa. Los once flujos del paquete npm que pueden enviar datos fuera de tu máquina: qué, a quién, cuándo, con qué consentimiento, y lo que se queda en local.

Canonical: https://bmad-plus.rochetta.fr/es/docs/security/data-handling/
Language: es
BMAD+ version: 0.23.1
Documentation reviewed: 2026-10-19
Author: Laurent Rochetta
License: MIT

Documentación de BMAD+ › [Seguridad y datos](https://bmad-plus.rochetta.fr/es/docs/security/) › Tratamiento de datos y privacidad

Esta página responde a una pregunta: ¿qué puede enviar BMAD+ fuera de mi máquina, a quién y con el visto bueno de quién? La respuesta corta: no tiene telemetría ni autoactualización silenciosa; once flujos del paquete npm pueden llegar a la red o lanzar un programa que lo haga, y cada uno está ligado a una base de consentimiento que tú controlas. La lista no es marketing escrito a mano: se genera a partir de una declaración del registro, y antes de cada versión el job de integración continua recorre el código entregado y falla si falta en la declaración una llamada de red, un oyente o un arranque de proceso, o si uno declarado ya no existe. El texto de referencia es la sección Data handling de `SECURITY.md` en el repositorio de BMAD+; esta página la refleja y explica cómo leerla.

> **Nota · Qué significa «a través de un programa iniciado»** En las tablas, «directamente» significa que un script de BMAD+ hace él mismo la petición. «A través de un programa iniciado» significa que BMAD+ arranca una herramienta (npm, uv o pip, git, Codex CLI, Chromium o un comando que declaraste) y esa herramienta hace el envío. La descarga del propio BMAD+ con `npx` la hace npm y no es uno de los flujos de abajo.

<a id="consent-bases"></a>
## Las cuatro bases de consentimiento

**Cómo leer la columna Consentimiento**

| Base | Significado |
| --- | --- |
| opt-out | Ocurre por defecto según la política del proyecto y puedes desactivarlo. |
| opt-in | Nunca ocurre salvo que lo pidas con una opción, una confirmación o una política explícita. |
| invocation | Solo ocurre cuando tú (o tu asistente, a petición tuya) ejecutas el comando que lo hace, sobre una entrada que proporcionaste. |
| credential | Solo ocurre cuando has definido la clave (o URL) que necesita el proveedor; sin la credencial no se envía nada. |

<a id="the-eleven-flows"></a>
## Los once flujos que pueden salir de la máquina

**Flujos del paquete npm (según SECURITY.md)**

| Flujo | Cómo sale | Qué | A quién | Cuándo | Consentimiento |
| --- | --- | --- | --- | --- | --- |
| `update-check` (cli) | A través de un programa iniciado | El nombre del paquete y el canal (`npm view bmad-plus@latest`) con los metadatos de petición de npm: dirección IP, user agent (versiones de npm, Node.js y del sistema) y cabeceras de sesión de npm. | registry.npmjs.org (la política no admite otro registro) | `bmad-plus update-check`, que los adaptadores generados piden al agente ejecutar una vez por sesión; la respuesta se guarda en caché en `.bmad/update-check.json`. | opt-out: `bmad-plus update-policy --mode off` detiene toda consulta. |
| `update-apply` (cli) | A través de un programa iniciado | La versión exacta pedida, con los metadatos de petición de npm, para descargar el paquete de esa versión. | registry.npmjs.org | `bmad-plus update --latest --yes`, o `--auto` cuando la política del proyecto lo permite. | opt-in: cada ejecución exige `--yes`, o el modo de política `auto` con un rango explícito. |
| `python-provision` (cli) | A través de un programa iniciado | Los nombres y versiones del requirements.txt del pack, con los metadatos de petición del instalador; uv también puede descargar una versión de Python. | pypi.org y files.pythonhosted.org, o el índice configurado para pip o uv en la máquina; github.com (versiones python-build-standalone) cuando uv descarga Python. | `bmad-plus install --provision-python` para un pack Python seleccionado. | opt-in: solo con `--provision-python`; sin él no se crea ningún entorno. |
| `nexus-worker` (cli) | A través de un programa iniciado | Con `codex-exec`, la instrucción de la tarea y sus archivos de entrada (1 MiB como máximo) van a Codex CLI, que los envía al proveedor de modelo de tu propia sesión de Codex. Con `command`, lo que envíe ese comando. | El proveedor de modelo configurado en tu Codex CLI; quien contacte un comando declarado. | `bmad-plus nexus launch` sobre un plan con un contrato de ejecución explícito. | invocation: nada arranca sin un plan que escribiste y un lanzamiento explícito; se rechazan el shell, el entorno y los flags arbitrarios de Codex. |
| `nexus-verifier` (cli) | A través de un programa iniciado | Lo que envíe el comando declarado; se ejecuta con un entorno mínimo de lista blanca. | Quien contacte el comando declarado. | `bmad-plus nexus verify` sobre una tarea de un plan que escribiste. | invocation: el comando y su hash están fijados en el plan; se rechaza un ejecutable cambiado. |
| `uat-page-results` (core) | Directamente | La ejecución: nombre del probador, veredictos de los pasos y notas. | El origen que sirve la página: `bmad-plus uat serve` en 127.0.0.1, o el almacén de artefactos de claude.ai cuando la página se publica como artefacto. | Cada veredicto registrado, cuando se sirve la página; una página abierta desde un archivo guarda los resultados en el navegador. | invocation: el probador elige cómo se abre la página; una página abierta desde un archivo no envía nada. |
| `osint-providers` (osint) | Directamente | La consulta de investigación (nombres, alias, palabras clave y URL sobre el sujeto) y la clave de API de ese proveedor, por HTTPS verificado: el ayudante compartido rechaza cualquier otro esquema y cualquier redirección fuera del host del proveedor. | api.apify.com, api.exa.ai, r.jina.ai, s.jina.ai, deepsearch.jina.ai, api.parallel.ai, api.perplexity.ai, api.tavily.com, la URL MCP de Bright Data que configures. | Cuando el agente Shadow, o `volley.py` repartiendo hacia los demás, ejecuta un script de proveedor durante una investigación. | credential: solo se contacta a un proveedor una vez definida su clave (o la URL MCP de Bright Data); la puerta de base legal de la fase menos 1 precede al perfilado de una persona con nombre. |
| `seo-site-fetch` (seo) | Directamente | Peticiones HTTP de las páginas del sitio auditado, robots.txt y el sitemap, con el user agent que elige la auditoría, desde tu dirección IP. | El sitio que pides auditar (solo direcciones públicas). | `seo_fetch.py` y `seo_crawl.py`, ejecutados por los agentes SEO durante una auditoría. | invocation: solo se descargan la URL que das y sus enlaces internos; se rechazan las direcciones privadas, de bucle local y de enlace local. |
| `seo-google-apis` (seo) | Directamente | La URL u origen auditado, y tu `GOOGLE_API_KEY` en la cabecera `x-goog-api-key`, nunca en la URL de la petición; no se siguen redirecciones. | `www.googleapis.com`, `chromeuxreport.googleapis.com`, `searchconsole.googleapis.com` | `seo_apis.py`, ejecutado durante la fase de rendimiento de una auditoría. | credential: solo cuando `GOOGLE_API_KEY` está definida; sin ella el script devuelve un error y no envía nada. |
| `seo-screenshot` (seo) | A través de un programa iniciado | Las peticiones de Chromium para la página auditada y los recursos que sirve su propio host, con un user agent de navegador, desde tu dirección IP. Los recursos de terceros se bloquean, no se descargan. | El sitio que pides auditar (solo direcciones públicas). | `seo_screenshot.py`, cuando una auditoría pide capturas. | invocation: solo la URL que das, con el Playwright y el Chromium que instalaste; se rechazan las direcciones no públicas, otros hosts y redirecciones fuera del host. |
| `assurance-checks` (cli) | A través de un programa iniciado | Lo que envíe un comando de comprobación declarado; la propia CLI no envía nada. | Quien contacte un comando de comprobación declarado. | `bmad-plus assurance run` sobre un caso que escribiste. | invocation: solo se ejecutan los comandos listados en tu propio archivo de caso, y solo con un `assurance run` explícito; la clave de firma nunca se pasa a una comprobación. |

<a id="what-to-do"></a>
## Hacer menos, a propósito

**Si quieres limitar lo que sale de la máquina**

| Quieres | Haz esto |
| --- | --- |
| Ninguna consulta al registro | `npx bmad-plus update-policy --mode off`. Las instrucciones generadas encuentran entonces que la comprobación está desactivada y continúan la tarea. |
| Comprobar sin petición | `update-check --offline`: no inicia ninguna petición al registro e informa de desconocido. |
| Ningún entorno de Python | No pases `--provision-python`. El pack SEO funciona entonces en modo solo prompts. |
| Ningún dato a un proveedor de modelo mediante Nexus | No escribas un plan con `codex-exec` ni ejecutes `nexus launch`. El flujo gestionado por el anfitrión no envía nada por sí mismo. |
| Ninguna llamada OSINT | No definas ninguna clave de proveedor. Un proveedor solo se contacta cuando su clave está definida. |
| Ningún tráfico SEO | No ejecutes una auditoría SEO y deja `GOOGLE_API_KEY` sin definir para no usar las API de Google. |
| Una página de aceptación que no avisa a nadie | Abre la página construida desde un archivo en vez de publicarla como artefacto: guarda los resultados en el navegador y no envía nada. |

<a id="stays-local"></a>
## Lo que se queda en la máquina

- `npx-launcher` (cli): inicia la CLI en el mismo ejecutable de Node.js, en cada ejecución de `npx bmad-plus`.
- `python-health` (cli): ejecuta el Python propio del entorno de un pack, aislado (`-I`), para confirmar que sus módulos se importan. Cuándo: `bmad-plus doctor` en un proyecto con un pack Python aprovisionado.
- `review-git` (cli): lee el repositorio local con git (rev-parse, merge-base, diff, ls-files, show) para construir un ámbito de revisión.
- `nexus-git` (cli): lee la raíz del repositorio y el commit HEAD con `git rev-parse` para los planes y ejecuciones de Nexus.
- `uat-serve` (cli): sirve una página de receta y guarda sus veredictos, escuchando solo en 127.0.0.1 y rechazando cualquier otra cabecera Host.
- `uat-release-gate` (core): ejecuta la CLI bmad-plus propia del proyecto con el Node.js actual para calificar las ejecuciones de aceptación registradas, cuando el proyecto ejecuta el script de puerta de versión.
- `osint-install` (osint): copia el agente y las habilidades OSINT en un proyecto y luego ejecuta el script de diagnóstico local del pack con el Python del sistema, cuando ejecutas el script de instalación del paquete.

<a id="maintainer-services"></a>
## Servicios del mantenedor, fuera del paquete

El repositorio contiene también dos servicios que el mantenedor despliega en sus propios servidores: el servidor MCP Audit 360° (herramientas de git, GitHub, Gamma, CI, RAG y memoria para los agentes del mantenedor, tras un token de portador y un panel protegido con contraseña) y el monitor de origen (vigila el repositorio BMAD-METHOD y avisa al mantenedor). No están en el paquete npm y los usuarios no los instalan. Sus propios flujos se declaran de la misma manera y los comprueba la misma puerta; `SECURITY.md` los lista completos.

<a id="guarantees"></a>
## Hechos sobre la cadena de suministro y la publicación

- Siete dependencias de ejecución (`@clack/prompts`, `commander`, `design-skill`, `fs-extra`, `js-yaml`, `picocolors`, `semver`). `design-skill` aporta los archivos de habilidades que BMAD+ copia al instalar y un comando de enlace que BMAD+ nunca ejecuta.
- Las dependencias de producción se auditan antes de cada versión; los hallazgos altos y críticos bloquean la publicación. Los requisitos de Python mantenidos se auditan en CI y bloquean la publicación ante hallazgos conocidos.
- Los secretos que usa la automatización del proyecto viven en GitHub Actions Secrets, nunca en el código; el directorio local de secretos está en gitignore; el pipeline limpia los directorios privados antes de la distribución pública.
- Los paquetes npm se construyen a partir de copias de distribución depuradas, sin commit padre ni historial de código fuente. Cada versión conserva su SBOM CycloneDX de producción, su archivo y su manifiesto de integridad como artefactos del workflow, y la integridad del registro debe coincidir con el archivo comprobado antes de desplegar el sitio.
- La publicación usa autenticación OIDC de npm. La procedencia de npm no está activada, porque el repositorio privado de construcción y el de distribución difieren; un inventario o un hash no es una atestación de procedencia, y el proyecto lo dice.
- Las escrituras y borrados rechazan enlaces simbólicos y uniones. Las credenciales nunca se ponen en URL (la clave de Google va en una cabecera). La página de aceptación no carga nada de otro origen.

<a id="report-a-vulnerability"></a>
## Informar de una vulnerabilidad

Usa el reporte privado de vulnerabilidades de GitHub: en el repositorio, pestaña Security, «Report a vulnerability» ([informar de una vulnerabilidad](https://github.com/lrochetta/BMAD-PLUS/security/advisories/new)). El reporte queda privado entre tú y el mantenedor. Si no puedes usarlo, escribe a `l.rochetta@gmail.com` con el asunto `[SECURITY] BMAD+ - Brief description`. Incluye una descripción, los pasos para reproducir, una evaluación del impacto, las versiones afectadas y, opcionalmente, una corrección sugerida. No abras una incidencia pública, no explotes más allá de una prueba de concepto y no divulgues antes de que se publique una corrección. Los reportes válidos se acreditan en el changelog, salvo que prefieran el anonimato.

**Objetivos de respuesta**

| Gravedad | Acuse de recibo | Objetivo de corrección |
| --- | --- | --- |
| Crítica | 24 horas | 72 horas |
| Alta | 48 horas | 7 días |
| Media | 7 días | 30 días |

**Véase también**

- [Confianza y propiedad](https://bmad-plus.rochetta.fr/es/docs/security/trust-and-ownership/)
- [Referencia: update-check](https://bmad-plus.rochetta.fr/es/docs/reference/cli-update-check/)
- [Referencia: update-policy](https://bmad-plus.rochetta.fr/es/docs/reference/cli-update-policy/)
- [Nexus y el backend de procesos](https://bmad-plus.rochetta.fr/es/docs/concepts/nexus-orchestration/)
- [Preguntas frecuentes](https://bmad-plus.rochetta.fr/es/docs/faq/faq/)

[Documentación de BMAD+](https://bmad-plus.rochetta.fr/es/docs/) · [Seguridad y datos](https://bmad-plus.rochetta.fr/es/docs/security/)

[Código en GitHub](https://github.com/lrochetta/BMAD-PLUS)
