Las herramientas de codificación de IA cambian qué sale de tu máquina, quién puede leer un prompt, y qué termina en un pull request. Esta lista de verificación le da a un equipo de desarrollo una respuesta repetible a «¿es seguro pegar esto?» y «¿es seguro hacer merge de esto?», sin leer cada página de términos del proveedor desde cero. Cada afirmación de política de datos debajo está respaldada por una fuente oficial; cualquier cosa que no pudimos verificar está marcada en su lugar en lugar de adivinada.
Privacidad de datos: qué sale de la máquina
Cada asistente de IA envía prompts y contexto a servidores de un proveedor. La verdadera pregunta es qué pasa después, y cuál configuración controla eso.
| Verificación | Por qué | Cómo verificar |
|---|---|---|
| Privacy Mode de Cursor está activado, o aplicado a nivel de equipo | Cursor declara que el código no se usa para entrenamiento por Cursor o sus proveedores de modelo, bajo acuerdos de retención cero de datos (ZDR) | Settings → General → Privacy Mode; administradores lo aplican desde el panel de equipo |
| Conoces qué modelos de Cursor quedan fuera de ZDR | Algunos modelos necesitan retención del lado del proveedor para revisión de seguridad y aprobación de administrador incluso con Privacy Mode activado | Ver «Models with data retention» en documentos empresariales de privacidad de Cursor |
| Exclusión de contenido de Copilot cubre rutas pesadas de secretos | Las rutas excluidas quedan fuera de sugerencias inline y Copilot Chat en el IDE | Repo Settings → Copilot → Content exclusion, o una regla "*": ["/.env"] a nivel de org |
| Conoces la brecha de exclusión de contenido | Copilot CLI y modo agente en Copilot Chat no soportan exclusión de contenido, según documentos de GitHub | Trata sesiones de CLI y agente como no protegidas por esa configuración |
| Workspace de ChatGPT es Business/Enterprise/Edu para trabajo de cliente | El predeterminado de OpenAI es no entrenar en entradas/salidas de estos workspaces o la API; cuentas personales difieren | Verifica el tipo de workspace antes de pegar material de cliente |
| La excepción de botón de retroalimentación en cuentas personales es conocida | En Free/Plus/Pro, un pulgar arriba/abajo puede dejar que OpenAI use esa conversación completa incluso después de una exclusión general | No califiques una conversación que contiene algo sensible en una cuenta personal |
| Uso de Claude para trabajo de cliente es Team/Enterprise/API | Anthropic declara no entrenar por defecto en estos planes; Free/Pro/Max de consumidor (incluyendo Claude Code de ellos) puede optar por participar | code.claude.com/docs/en/data-usage |
| Ubicación de transcripción de Claude Code es revisada | Las transcripciones viven en plaintext bajo ~/.claude/projects/ por 30 días por defecto, ajustable vía cleanupPeriodDays |
Acorta retención en una máquina compartida o de cliente |
| PII se elimina antes de pegar en cualquier lugar arriba | Una promesa de política de entrenamiento no es una promesa de control de acceso; los clasificadores de seguridad aún pueden ver contenido marcado | Redacta nombres, emails, IDs de cuenta de logs antes de pegar |
Eso es un problema de configuración, no una razón para evitar estas herramientas. La hoja de trucos de Cursor cubre dónde estos controles viven día a día.
Secretos: nunca en prompts, atrapados antes de que se vayan
Una política de entrenamiento es irrelevante si un secreto ya salió de tu máquina en un commit o un log pegado.
| Verificación | Por qué | Cómo verificar |
|---|---|---|
| Ningún secreto es tipado o pegado en un prompt | Cualquier herramienta de chat puede retener texto marcado independientemente de configuraciones de entrenamiento | Grep exportaciones de prompt para AKIA, -----BEGIN, Bearer, password= |
.env* y archivos de credenciales están en .gitignore |
Evita el commit accidental más común antes de que se necesite un scanner | git check-ignore -v .env imprime un coincidencia |
| gitleaks se ejecuta pre-commit | Atrapa un secreto hardcodeado antes de que salga de tu máquina, independiente de cualquier herramienta de IA | pre-commit run gitleaks --all-files falla en un secreto de prueba plantado |
| gitleaks también escanea el historial de git | Un secreto removido después es aún legible en el historial a menos que sea reescrito | gitleaks git -v --redact escanea patches vía git log -p |
Un hook de Claude Code/Cursor bloquea lecturas de .env |
Evita que un agente jale contenidos de archivo secreto en su propio contexto, no solo bloqueando ediciones | Pide al agente abrir .env; la llamada debe ser denegada. Setup completo: guía de hooks de Claude Code |
| CI ejecuta su propio escaneo de secreto como respaldo | Atrapa --no-verify, un commit de web-UI, o un hook local faltante |
Un trabajo gitleaks (o equivalente) en pull_request y push |
Validación de código generado
Código de IA suena tan confiado erróneamente como correctamente. Porta como cualquier otro diff, más una verificación que esta fuente necesita.
| Verificación | Por qué | Cómo verificar |
|---|---|---|
| Cada función generada envía con una prueba de pase | Confianza en tono no tiene correlación con corrección | CI bloquea merge sin una prueba; ver TDD asistido por IA |
| El mismo linter/SAST se ejecuta en diffs authored por IA | Ninguna exención de IA hace un diff más seguro; velocidad de revisión es el riesgo real | Ninguna exclusión de ruta para commits marcados por IA en CI |
| Nuevos nombres de dependencia son verificados contra el registro real | Un modelo puede nombrar un paquete que no existe — una dependencia alucinada o «slopsquatted» que un atacante puede registrar | npm view <package> o pip index versions <package> antes de instalar |
| Dependencias verificadas son fijadas, no ranged | Un rango unfijado puede resolver a una liberación posterior que nadie revisó | Fija en package.json/requirements.txt, commitea el lockfile |
| Bloques generados distintivos obtienen una verificación de licencia | Un snippet puede reproducir estrechamente una fuente licenciada y llevar su licencia | Busca una coincidencia cercana antes de enviar un bloque largo, estilísticamente específico |
Controles de alucinación
Una alucinación es un hecho erróneo entregado tan confidentemente como uno correcto. Estos controles son sobre dónde un humano vuelve al bucle.
| Verificación | Por qué | Cómo verificar |
|---|---|---|
| Agente cita una fuente para reclamos de API/flag/limit | Reduce, no elimina, respuestas confidentemente erróneas sobre detalles de versión | Pregunta «qué página de doc dice eso» antes de actuar en ello |
| Un humano revisa el diff actual, no un resumen | Los resúmenes omiten el detalle que importa | git diff en el commit, no la descripción del agente |
| Auto-merge/auto-apply está apagado para cambios de agente | Elimina el checkpoint más probable de atrapar una alucinación | Protección de rama requiere revisión humana aprobada |
| Agente es dicho decir «unknown», no adivinar | Un hecho faltante disfrazado como respuesta confiada es el tipo costoso | Prompt: «If a required fact is missing, list it under Unknown.» Ver flujo de trabajo agentico de validación |
Cadena de suministro: servidores MCP como código de terceros
Un servidor MCP es un programa que el host lanza y confía con acceso de herramienta. El protocolo no lo coloca en sandbox — tú lo haces.
| Verificación | Por qué | Cómo verificar |
|---|---|---|
| Cada servidor MCP se trata como código de terceros | Un servidor stdio comparte el dominio de confianza del host; las propias notas de seguridad del protocolo dicen que no hay sandbox | Revisa fuente/editor antes de aprobar; ver Servidores MCP explicados |
Servidor se fija a una versión, no latest |
Un servidor unfijado puede cambiar comportamiento o permisos después de aprobación | Fija command/args a una versión etiquetada en mcp.json |
| Permisos y herramientas alcanzables se revisan primero | Un servidor descuidado puede dirigir cómo el agente usa cada otra herramienta en la sesión | /mcp en Claude Code, o Output → MCP Logs en Cursor |
Secretos viven en el bloque env propio del servidor |
Un perfil de shell compartido es legible por cada proceso que el host lanza | Verifica entrada env del servidor, no .bashrc/.zshrc |
| Servidores remotos usan tokens de corta vida sobre HTTPS | Un token de larga vida en un archivo config es una fuga permanente, la misma clase de riesgo que acceso demasiado amplio (ver docker-sock-permission-denied) | Config referencia ${env:NAME}, nunca un token crudo |
Regulaciones a ser consciente de
Solo informativo, no asesoramiento legal — consulta con consejo antes de hacer un reclamo de cumplimiento a un cliente o regulador.
| Verificación | Por qué | Cómo verificar |
|---|---|---|
| Sabes si eres proveedor de «modelo de IA de propósito general» bajo EU AI Act | Fine-tuning, hospedaje, o redistribución de un modelo GPAI puede disparar obligaciones de Artículo 53 — documentos técnicos, política de derechos de autor, resumen público de contenido de entrenamiento | Página de obligaciones GPAI de EU Digital Strategy; AI Act Service Desk Artículo 53 |
| El nivel «riesgo sistémico» se conoce como separado y más pesado | Solo modelos clasificados por Comisión de riesgo sistémico deben evaluación, reporte de incidentes, y obligaciones de ciberseguridad bajo Artículo 55 | AI Act Service Desk FAQ en riesgo sistémico |
| Un campo de prompt que puede identificar a una persona es GDPR datos personales | Artículo 4(1) lo define ampliamente: un nombre, email, ID de dispositivo, o nota identificadora todos califican | EUR-Lex Artículo 4(1) |
| La línea «sin entrenamiento» de un proveedor se lee como política de entrenamiento, no garantía de cumplimiento | Cubre solo el procesamiento del proveedor; tu org es usualmente aún el controlador por cómo datos llegaron ahí | Verifica quién está nombrado «controlador» en el DPA del proveedor, no solo la página de marketing |
Plantilla de política de equipo
Pega en AI_POLICY.md; ajusta nombres de herramientas y niveles de plan a tus licencias de org.
# Política de Uso de Herramientas de IA
## Alcance
Claude Code, Cursor, GitHub Copilot, ChatGPT — cualquiera trabajando en este
repositorio o en entregas de cliente.
## Cuentas aprobadas
- Cuentas solo comercial/Team/Enterprise para trabajo de cliente o producción.
- Cuentas personales son solo para aprender y código abierto.
- Confirma Privacy Mode / content exclusion / workspace type antes de
tocar código o datos nuevos de cliente.
## Nunca pegues
- Credenciales, claves de API, tokens, kubeconfigs, claves privadas.
- PII de cliente: nombres, emails, IDs de cuenta, notas identificadoras.
- Cualquier cosa bajo una ruta .gitignore o Copilot content-exclusion.
## Código generado
- Envía con una prueba, pasa la puerta lint/SAST existente.
- Nuevas dependencias verificadas en el registro real, luego fijadas.
- Un humano revisa el diff antes del merge. No auto-merge.
## Servidores MCP
- Revisados por fuente, permisos, y versión fijada antes de que cualquier
miembro del equipo se conecte.
- Secretos viven en config de env propio del servidor, nunca un shell compartido.
## Incidentes
- Un secreto pegado es una credencial filtrada: rótalo inmediatamente.
- Reporta una dependencia alucinada sospechosa, o un diff de IA merged
que rompió algo, a #eng-incidents el mismo día.
## Revisión
Revisado trimestralmente cuando términos de proveedor cambian.
Patrones que reutilizarás
- Escaneo de secreto pre-commit:
pre-commit install && pre-commit run gitleaks --all-files - Escanea historial git completo:
gitleaks git -v --redact - Omite el hook a propósito:
SKIP=gitleaks git commit -m "..." - Bloquea lecturas de
.enven un hookPreToolUsede Claude Code (matcher^Read$):jq -r '.tool_input.file_path' | grep -qE '\.env(\.|$)' && exit 2 || exit 0 - Verifica que un paquete exista antes de instalar:
npm view <package>opip index versions <package> - Fija un servidor MCP en lugar de
latest: usa una etiqueta exacta encommand/args - Fuerza «unknown» sobre una adivinanza: «If a required fact is missing, list it under Unknown. Do not fill it in.»
Preguntas frecuentes
¿El modo de privacidad de Cursor evita que mi código se use para entrenamiento?
Con Privacy Mode activado, Cursor dice que tu código no se usa para entrenamiento por Cursor o por los proveedores de IA que llama, bajo acuerdos de retención cero de datos. Algunos modelos caen fuera de ese acuerdo y necesitan aprobación de administrador separada. Privacy Mode está desactivado por defecto para individuos y activado por defecto para equipos Enterprise.
¿GitHub Copilot ve archivos que he excluido, incluyendo en modo agente?
La exclusión de contenido del repositorio y organización evita que rutas excluidas lleguen a sugerencias inline y Copilot Chat en el IDE. Los documentos de GitHub dicen que Copilot CLI y modo agente en Copilot Chat no soportan exclusión de contenido, así que trata sesiones de agente y CLI como no protegidas por ese control.
¿Los datos de ChatGPT Team o Enterprise se usan para entrenar modelos de OpenAI?
Por defecto, OpenAI no usa entradas o salidas de ChatGPT Business, Enterprise, Edu, o la API para entrenar modelos. Una organización puede optar por participar. En cuentas personales Free, Plus, o Pro, enviar retroalimentación de pulgar arriba o pulgar abajo aún puede dejar que OpenAI use esa conversación incluso después de una exclusión general.
¿Cómo difiere la política de datos de Claude Code entre un plan personal y un plan Team o Enterprise?
En una cuenta personal Free, Pro, o Max, elige si tus chats y sesiones de codificación mejoran futuros modelos. En cuentas Team, Enterprise, API, y Claude Gov, Anthropic no entrena en tu código o prompts a menos que la organización explícitamente opte por participar, por ejemplo a través del Programa de Socio de Desarrollo.
¿Cómo atrapo una dependencia generada por IA que realmente no existe?
Busca el paquete en el registro real antes de instalarlo. Para npm, ejecuta npm view <package>; para pip, ejecuta pip index versions <package>. Una búsqueda fallida significa no instalar — un nombre no existente es también un slot que un atacante puede registrar y enviar malware bajo.
Cómo se verificó esta guía
Escrita a mano a partir de la documentación oficial, con cada comando comprobado de nuevo y una segunda revisión antes de publicar. Última revisión: .
Fuentes oficiales consultadas para este artículo
- cursor.com/help/security-and-privacy/privacy
- cursor.com/data-use
- cursor.com/docs/enterprise/privacy-and-data-governance
- docs.github.com/en/copilot/how-tos/configure-content-exclusion/exclude-content-from-copilot
- docs.github.com/en/copilot/concepts/context/content-exclusion
- openai.com/enterprise-privacy/
- help.openai.com/en/articles/5722486-how-your-data-is-used-to-improve-model-performance
- privacy.claude.com/en/articles/10023580-is-my-data-used-for-model-training
- privacy.claude.com/en/articles/9267385-does-anthropic-act-as-a-data-processor-or-controller
- code.claude.com/docs/en/data-usage
- code.claude.com/docs/en/zero-data-retention
- github.com/gitleaks/gitleaks/blob/master/README.md
- digital-strategy.ec.europa.eu/en/factpages/general-purpose-ai-obligations-under-ai-act
- ai-act-service-desk.ec.europa.eu/en/ai-act/article-53
- eur-lex.europa.eu/eli/reg/2016/679/art_4/oj/eng

