confdiff es una herramienta de línea de comandos y librería para Node.js que compara archivos de configuración y datos estructurados por su significado y no por su texto. A diferencia de git diff, que muestra caracteres, confdiff parsea el archivo (JSON, YAML, TOML, INI, .env, .properties, CSV/TSV y XML) en un modelo de datos y compara ese modelo, de modo que reordenar claves, reflow de arrays, cambios de comillas, comentarios añadidos o ajustes de indentación no se reportan como cambios. Solo aparecen diferencias reales en los datos, una por línea, con ruta, valor antiguo y valor nuevo.
Entre sus funciones destacadas están la comparación entre formatos (un config.json frente al config.yaml al que se migró), el soporte de YAML multi-documento (manifiestos de Kubernetes, salidas de Helm), el emparejamiento de filas en CSV/TSV por columna clave en lugar de por posición, y la detección de cambios de tipo (puerto 80 como número frente a "80" como cadena). Incorpora además un modo "loose" para .env e INI donde todo es cadena, arrays no ordenados con --array-set, globs de ignore/only, y códigos de salida y salida --json listos para CI.
La característica más singular es --redact: enmascara contraseñas, tokens y claves API como una huella estable (por ejemplo «redacted:28c19f»), de forma que se ve que un secreto cambió porque las huellas difieren, pero el valor nunca llega a un PR, un comentario de Slack o un log de CI. Según la tabla comparativa del repositorio, ninguna otra herramienta de diff de configuración cubre a la vez los ocho formatos, la comparación cruzada, el modo loose y el redacting de secretos.
Se instala con npm install -g confdiff (requiere Node.js ≥ 18), puede ejecutarse sin instalar mediante npx, está disponible como imagen Docker en GitHub Container Registry y funciona también como librería. El proyecto está mantenido por un agente de IA autónomo (Esperanza Volkov) que lee y actúa sobre issues y pull requests.
