Volver al blog

Vibe Coding: Cuando Confiar Demasiado en la IA Puede Costar Tus Datos

Hola HaWkers, un caso alarmante está circulando en la comunidad de desarrolladores y sirve como una alerta importante. Un usuario de Google Antigravity, herramienta de programación asistida por IA de Google, tuvo todo su drive D borrado por un error de código generado por la propia IA.

¿Confías ciegamente en el código que asistentes de IA generan? Este incidente muestra por qué la revisión humana continúa siendo absolutamente esencial.

Lo Que Pasó

El caso, que viralizó en TabNews y otras comunidades de tecnología, involucra un desarrollador que estaba usando Google Antigravity para automatizar tareas de organización de archivos. La IA generó un script que, en vez de mover archivos para una carpeta específica, acabó borrando recursivamente todo el contenido del drive D.

Detalles del Incidente

Lo que el usuario pidió:

  • Organizar archivos por tipo en carpetas separadas
  • Mover archivos antiguos para una carpeta de backup

Lo que la IA hizo:

  • Generó código con bug crítico en la lógica de rutas
  • El script interpretó la ruta de destino incorrectamente
  • Ejecutó operación de delete recursivo en la raíz del drive

Resultado:

  • Pérdida total de datos del drive D
  • Años de proyectos personales perdidos
  • Backups inexistentes

Qué es Vibe Coding

El término "vibe coding" surgió recientemente para describir la práctica de programar usando asistentes de IA sin realmente entender el código generado. El desarrollador describe lo que quiere, acepta la sugerencia de la IA, y sigue adelante.

Características del Vibe Coding

Flujo típico:

  1. Describir lo que quieres en lenguaje natural
  2. Aceptar el código generado por la IA
  3. Ejecutar sin revisión detallada
  4. Repetir para la próxima tarea

Por qué acontece:

  • Presión por productividad
  • Confianza excesiva en la IA
  • Falta de tiempo para revisión
  • Código parece funcionar al inicio

Perfil de riesgo:

  • Desarrolladores iniciantes sin base para evaluar
  • Profesionales experimentados con exceso de confianza
  • Cualquier persona con plazo apretado

Riesgos Reales del Vibe Coding

El caso del Google Antigravity no es aislado. Existen diversos riesgos al adoptar código de IA sin revisión:

Errores de Lógica

IAs pueden generar código que:

  • Funciona en casos simples pero falla en edge cases
  • Tiene condiciones de carrera no tratadas
  • Loops infinitos en escenarios específicos
  • Off-by-one errors sutiles

Problemas de Seguridad

Código generado por IA frecuentemente:

  • No valida inputs adecuadamente
  • Expone información sensible
  • Usa prácticas de seguridad desactualizadas
  • Ignora principios como least privilege

Operaciones Destructivas

El caso más grave, como vimos:

  • Borrado de archivos incorrecta
  • Sobrescritura de datos importantes
  • Modificaciones irreversibles en base de datos
  • Comandos de sistema con privilegios elevados
// Ejemplo de código peligroso que IA puede generar
// NUNCA ejecutes código así sin revisión!

const fs = require('fs');
const path = require('path');

// Bug sutil: si targetDir es vacío o undefined,
// esto puede borrar a partir de la raíz del sistema
function cleanupOldFiles(sourceDir, targetDir) {
  const files = fs.readdirSync(sourceDir);

  files.forEach(file => {
    const filePath = path.join(sourceDir, file);
    const stats = fs.statSync(filePath);

    if (stats.isDirectory()) {
      // Recursión peligrosa sin validación adecuada
      cleanupOldFiles(filePath, targetDir);
    } else {
      // Si targetDir no es validado, esto es desastroso
      fs.unlinkSync(filePath);
    }
  });
}

Cómo Protegerse

Usar IA para programar es válido y útil, pero requiere cuidados:

1. Siempre Revisa el Código

No importa cuán experimentado seas, siempre lee el código generado:

// BUENAS PRÁCTICAS al trabajar con IA

// 1. Valida TODAS las rutas antes de operaciones de archivo
function safeCleanup(sourceDir, targetDir) {
  // Validaciones esenciales
  if (!sourceDir || !targetDir) {
    throw new Error('Directorios no pueden ser vacíos');
  }

  // Verificar si son rutas absolutas válidas
  if (!path.isAbsolute(sourceDir) || !path.isAbsolute(targetDir)) {
    throw new Error('Usa apenas rutas absolutas');
  }

  // Prevenir operaciones en la raíz del sistema
  const protectedPaths = ['/', '/home', 'C:\\', 'D:\\'];
  if (protectedPaths.includes(sourceDir)) {
    throw new Error('Operación en directorio protegido no permitida');
  }

  // Log antes de cualquier operación destructiva
  console.log(`Operación en: ${sourceDir}`);
  console.log(`Destino: ${targetDir}`);

  // Pedir confirmación para operaciones críticas
  // En producción, implementa confirmación real
}

2. Testa en Ambiente Seguro

Antes de ejecutar scripts que manipulan archivos:

  • Usa una VM o container
  • Crea un directorio de teste con datos ficticios
  • Nunca testes en datos de producción
  • Ten backups actualizados

3. Entiende Lo Que el Código Hace

Aunque uses IA, entiende los conceptos:

// Preguntas a hacer sobre código de IA:

// 1. ¿Cuáles archivos/datos este código accede?
// 2. ¿Qué operaciones destructivas realiza?
// 3. ¿Qué pasa si un parámetro es null/undefined?
// 4. ¿Existen condiciones de carrera?
// 5. ¿Cómo maneja errores?
// 6. ¿Necesita permisos especiales?

4. Implementa Dry Run

Para operaciones críticas, siempre implementa un modo de teste:

function organizeFiles(sourceDir, targetDir, dryRun = true) {
  const files = fs.readdirSync(sourceDir);

  files.forEach(file => {
    const sourcePath = path.join(sourceDir, file);
    const targetPath = path.join(targetDir, file);

    if (dryRun) {
      // En dry run, apenas muestra lo que sería hecho
      console.log(`[DRY RUN] Movería: ${sourcePath} -> ${targetPath}`);
    } else {
      // Operación real
      fs.renameSync(sourcePath, targetPath);
      console.log(`Movido: ${sourcePath} -> ${targetPath}`);
    }
  });
}

// SIEMPRE ejecuta primero con dryRun = true
organizeFiles('/datos/origen', '/datos/destino', true);

// Solo después de validar, ejecuta de verdad
// organizeFiles('/datos/origen', '/datos/destino', false);

Cuándo Usar IA Para Programar

IA es una herramienta poderosa cuando usada correctamente:

Casos Seguros

  • Generar boilerplate y estructuras básicas
  • Escribir testes unitarios
  • Refactorizar código que entiendes
  • Documentar código existente
  • Buscar ejemplos de sintaxis

Casos que Requieren Cautela

  • Operaciones de sistema de archivos
  • Manipulación de base de datos
  • Scripts de deploy
  • Código que maneja autenticación
  • Cualquier operación irreversible

Lecciones del Incidente

Este caso nos enseña lecciones importantes:

Para Desarrolladores

  1. IA no sustituye conocimiento: Necesitas entender lo que el código hace
  2. Revisar no es opcional: Especialmente para operaciones críticas
  3. Backups son esenciales: Siempre ten backup de datos importantes
  4. Testa antes de ejecutar: Dry run y ambientes aislados son tus amigos

Para la Industria

  1. Herramientas necesitan guardrails: IAs deberían alertar sobre operaciones peligrosas
  2. Educación es necesaria: Desarrolladores necesitan ser entrenados para usar IA correctamente
  3. Responsabilidad compartida: ¿Quién es responsable cuando IA causa daños?

Conclusión

El vibe coding puede parecer productivo a corto plazo, pero los riesgos son reales y pueden ser catastróficos. El caso del Google Antigravity es un recordatorio de que, por más avanzada que sea la IA, la responsabilidad final por el código continúa siendo del desarrollador.

Usa IA como herramienta, no como muleta. Entiende el código que ejecutas, testa en ambientes seguros, y mantén backups. La productividad que ganas no vale el riesgo de perder años de trabajo.

Si quieres profundizar tus conocimientos en JavaScript para poder evaluar mejor código de IA, te recomiendo echar un vistazo a otro artículo: Vulnerabilidad Crítica en React y Next.js donde vas a descubrir la importancia de entender seguridad en código.

¡Vamos a por ello! 🦅

🎯 Únete a los Desarrolladores que Están Evolucionando

Miles de desarrolladores ya usan nuestro material para acelerar sus estudios y conquistar mejores posiciones en el mercado.

¿Por qué invertir en conocimiento estructurado?

Aprender de forma organizada y con ejemplos prácticos hace toda diferencia en tu jornada como desarrollador.

Comienza ahora:

  • 1x de R$9,90 en tarjeta
  • o R$9,90 al contado

🚀 Acceder Guía Completa

"Material excelente para quien quiere profundizarse!" - João, Desarrollador

Comentarios (0)

Este artículo aún no tiene comentarios 😢. ¡Sé el primero! 🚀🦅

Añadir comentarios