Las tres formas de desinstalar una app en el Mac, y qué deja cada una
Arrastrarla a la Papelera. Viene incluido, es gratis y elimina el paquete de
la app. Lo que no elimina es nada de lo que la app escribió fuera de sí misma:
preferencias, cachés, contenedores, estados de ventana guardados, Launch Agents,
recibos de instalación y las entradas que aparecen en Privacidad y Seguridad
dentro de Ajustes del Sistema. Para esas últimas macOS no te da ningún botón.
tccutil, la herramienta que las borra, resuelve una app a través de
LaunchServices, así que en cuanto el paquete está en la Papelera responde "No
such bundle identifier" y los permisos concedidos se quedan para siempre en la
base de datos de permisos. Por eso las apps que borraste el año pasado siguen
apareciendo en Accesibilidad.
El desinstalador del propio fabricante. Cuando existe - Adobe, Microsoft, la mayoría de los clientes VPN - es la respuesta correcta, porque el fabricante sabe dónde dejó las cosas. La mayoría de las apps no incluye ninguno.
Un desinstalador aparte. AppCleaner lleva años haciendo esto gratis y es
suficiente si lo que quieres es el paquete más las carpetas evidentes de
~/Library; Pearcleaner es la lectura de código abierto del mismo trabajo.
Unroot está construido alrededor de una pregunta más estrecha:
no qué podemos encontrar, sino qué podemos demostrar y qué podemos devolver a su
sitio. Todo lo que viene a continuación está en la versión publicada.
Dónde busca, y por qué cada fila dice su motivo
Un análisis lee 58 ubicaciones. Las que imaginarías (Application Support,
Preferences, Caches, Containers, Group Containers, Saved Application State) y
las que no: HTTPStorages, WebKit, Cookies, los árboles por usuario bajo
/var/folders, las raíces de plugins de audio, los generadores de QuickLook.
Fuera de tu carpeta personal lee /Library/LaunchDaemons,
/Library/PrivilegedHelperTools, /var/db/receipts y /Users/Shared. Algunas
se leen de forma especial: Application Support un nivel más adentro, porque los
fabricantes anidan ahí y lo que debe proponerse es la carpeta anidada, nunca la
carpeta del fabricante, que se llevaría por delante todos sus productos
hermanos; y los plists de los Launch Agents se comparan por su Label y sus
ProgramArguments en lugar de por el nombre del archivo, porque los fabricantes
lo bautizan con el nombre del daemon.
Luego llega el emparejamiento, que es donde un desinstalador se gana tu
confianza o destruye datos. Un identificador de paquete exacto es certeza. Ese
mismo identificador como tramo completo separado por puntos también lo es, y es
lo que atrapa com.vendor.app.helper; igual que un grupo de apps que la propia
app declaró en su firma de código; igual que una ruta listada en un recibo de
instalación que pkgutil puede demostrar que instaló este paquete. Una
coincidencia por nombre es solo posible, y se califica como tal.
Lo que falta en esa lista es justamente el argumento. Existían reglas para el prefijo del fabricante y para el equipo de firma, y las dos se eliminaron: entre ambas coincidieron 45 veces en dos análisis reales, todas ellas con datos de otra app y ni una sola vez con un resto de verdad. El mismo desarrollador no es la misma app. Y la regla más fuerte se aplica la última: si un archivo está archivado bajo el identificador de otra app instalada, es de esa app, punto. Además cada fila muestra el motivo por el que coincidió, que es la diferencia entre una lista en la que confías y una lista que tienes que creerte.
Tres niveles, y qué llega marcado

Los hallazgos se califican como seguro de eliminar, merece una mirada o delicado, y la calificación responde a una sola pregunta: cuánto cuidado hay que tener con esta fila. Seguro es reversible, está dentro de tu carpeta personal y es sin duda de la app. Merece una mirada es lo que coincidió solo por el nombre, o lo que comparte con una app que aún tienes. Delicado son las entradas del llavero, los ayudantes privilegiados, las extensiones del sistema y todo lo que vive fuera de tu carpeta personal: el único nivel capaz de producir el fallo que asusta a todo el mundo.
La parte contraintuitiva es qué llega marcado, porque no es el nivel seguro. Una fila se marca cuando la coincidencia es certera, no cuando es reversible. Mezclar ambas cosas volvía deshonesto al producto: la licencia de una app vive en el llavero, así que dejar esas filas sin marcar significaba que la eliminación por defecto dejaba la app activada en silencio. Una fila delicada del llavero llega marcada; una coincidencia solo por nombre, no.
La misma pantalla lleva el otro modo. Restablecer conserva la app y elimina
todo lo que guardó, salvo los recibos de instalación, porque si pkgutil olvida
un paquete que sigue instalado rompe su propio actualizador. Las entradas del
llavero se quedan dentro a propósito: una app recién salida de fábrica es una
app con la sesión cerrada.
No se borra nada

Lo eliminado va a una única carpeta fechada dentro de tu Papelera - Unroot - Spectacle - 2026-08-21 11-01-33 - cada cosa en su propia ranura numerada, para
que com.vendor.app.plist de ~/Library/Preferences no sobrescriba en silencio
el de /Library/Preferences.
Que sea una carpeta en vez de cuatrocientos elementos sueltos es mitad
legibilidad y mitad capacidad: el "Devolver" del Finder solo restaura el primer
elemento de un lote, y no existe una API pública para restaurar mediante código,
así que un deshacer construido encima sería una promesa que el sistema no puede
cumplir. Junto a los archivos está unroot-manifest.json, una lista simple de
dónde vino cada elemento. Es lo que lee Deshacer, y sigue siendo legible aunque
Unroot ya no esté.
Hay una parte de una eliminación que sí es definitiva, y el pie de página la cuenta en rojo. Una entrada del llavero no es un archivo, así que no se puede mover a una carpeta; borrarla cierra la sesión de la app y se lleva cualquier licencia que guardara. La hoja de confirmación no las cuenta, las nombra una a una, porque un número no es un consentimiento.
Un deshacer que sobrevive a un cierre inesperado
El manifiesto solo puede registrar lo que se observó que salió bien, así que solo puede escribirse después de la ejecución - y un fallo a mitad dejaría archivos movidos sin ningún registro de dónde venían, que es exactamente la promesa que el manifiesto existe para cumplir. Por eso, antes de mover nada, se escribe en la misma carpeta un diario con todas las entradas previstas, y una ejecución completa lo borra. Un diario sin manifiesto es, por tanto, la firma de una eliminación interrumpida, y el siguiente arranque reconstruye el manifiesto a partir de él, quedándose solo con las entradas cuyos archivos están demostrablemente en su ranura.
Deshacer es entonces una reproducción en orden inverso. Si ahora hay otra cosa
en la ruta original - reinstalaste la app - la restauración se desvía a un
hermano numerado en lugar de sobrescribir, porque deshacer no debe destruir nada
para salir bien. Los trabajos de launchd no solo se devuelven a su sitio, se
vuelven a arrancar: dejar el plist en su lugar pero el daemon descargado
restauraría los archivos y, en silencio, no el comportamiento. Las dos
direcciones pasan por una política que asume que todo lo anterior se equivocó:
/System, las carpetas del llavero, iCloud Drive y tus carpetas Documentos,
Escritorio, Descargas, Imágenes, Películas y Música no pueden ser nunca un
extremo, coincida lo que coincida.
El único paso que Deshacer no devuelve es el restablecimiento de permisos, y la app lo dice en la propia fila y no en una nota al pie: los permisos se restablecen, no se recuperan. Cada app vuelve a pedirlos la próxima vez.
Nada de eso caduca. Cada eliminación que Unroot ha hecho sigue en una pantalla, con el espacio que ocupa su carpeta, así que una eliminación de hace dos meses se deshace igual que la de hace dos minutos. Y si todavía puede deshacerse lo decide una mirada al disco, no una marca escrita entonces.
Guardarlo todo significa una Papelera llena de carpetas de cuarentena. Vaciarla es la respuesta normal; si prefieres ser selectivo, Unroot borra una carpeta concreta cuando se lo pides. Es el único punto de la app que borra algo, así que está vallado: tres comprobaciones de que la ruta es de verdad una de sus propias carpetas, y un barrido automático que sigue apagado hasta que tú lo enciendas.
Las entradas de permisos que nadie puede borrar a mano
Antes de que elimines nada, Unroot lee la base de datos de permisos - en modo
solo lectura, con el mismo Acceso Total al Disco que ya necesita para ver
~/Library - y te enseña qué tenía concedido la app. Accesibilidad, Acceso
Total al Disco, Grabación de Pantalla, Monitorización de Entrada, Automatización
y unos veinticinco permisos más se resuelven por su nombre, unos treinta tipos de
permiso en total. Casi ninguna otra cosa te enseña esto, y es el mejor argumento
que hay para explicar por qué importa el orden de una eliminación.
Porque importa. El restablecimiento tiene que ejecutarse mientras el paquete sigue en el disco, así que el paquete se mueve el último: después de descargar los trabajos de launchd y de borrar las entradas del llavero. Quitarlo primero es el error sin vuelta atrás, y es la razón de que tantas apps desinstaladas sigan rondando por Ajustes del Sistema.
Después el informe vuelve a leer la base de datos en lugar de dar por hecho que las herramientas funcionaron. Se sabe que macOS rechaza algunos restablecimientos de Acceso Total al Disco, así que el informe o bien dice que los permisos están verificados y limpios, o bien nombra el que sobrevivió y te pide que lo quites a mano.
Las apps en ejecución se resuelven antes que todo eso. A cada una se le pide que salga, y si se niega recibes una decisión en lugar de un cierre forzado silencioso: forzarla, u omitir esa app y dejar intactos todos sus archivos.
Apps que borraste hace años, y lo que dejaron corriendo

La otra mitad de un emparejador estrecho es que los restos de apps que ya no están no tienen dónde aparecer. Así que tienen su propio barrido, y es deliberadamente conservador. Lista únicamente cosas con forma de identificador - un nombre con al menos tres tramos separados por puntos y sin espacios - porque una carpeta con el nombre de una empresa podría pertenecer a cualquier cosa, y adivinar es la manera en que un desinstalador borra algo que no debía tocar.
Solo llegan marcadas las cachés y los registros. Los datos y ajustes de las apps no, y la pantalla explica por qué: parte de lo que aparece es caché escrita por un framework dentro de una app que sí sigues usando, y desde fuera se ve idéntica. Esta lista es un punto de partida, no un veredicto.
Un archivo que sobra está quieto. Un launch agent que sobra no lo está, y por eso
una app que quitaste hace años puede seguir dejando un ítem en segundo plano en
Ajustes del Sistema que los propios Ajustes del Sistema no te dejan quitar. Así
que la misma idea se apunta a launchd: una pantalla lista todo lo que arranca sin
que se lo pidan - launch agents, daemons y los trabajos de inicio que las apps
registran mediante SMAppService - y dice de quién es cada uno.
Solo se pueden seleccionar en bloque aquellos cuyo programa falta, y esa
contención es el diseño. Un trabajo como com.docker.vmnetd comparte prefijo de
fabricante con una app que todavía tienes; clasificarlo como relacionado en vez de
huérfano existe justamente para mantener algo vivo fuera de una lista titulada
"seguro de eliminar". Un trabajo que aún tiene un programa que ejecutar nunca es
huérfano, por abandonado que suene su nombre.
Lo que no hace a propósito
Necesita Acceso Total al Disco, activado a mano, porque macOS no deja ninguna vía para que una app lo pida; sin él un análisis se ejecuta igual, pero solo cubre las ubicaciones fuera de tu carpeta personal, y lo dice en vez de dejar que una lista corta pase por una lista limpia. Eliminar algo fuera de tu carpeta personal te pide la contraseña de administrador una vez.
Hay trabajos que rechaza de plano: el software de la propia Apple, él mismo y las extensiones del sistema, que reciben una sección titulada "Unroot no puede eliminar esto" con el sitio exacto donde hacerlo tú.
No se instala en tu barra de menús y nada espera a que arrastres una app a la
Papelera: Unroot analiza cuando lo abres y el resto del tiempo no hace
absolutamente nada. La única pieza residente es una extensión del Finder, y está
apagada hasta que la enciendes en Ajustes del Sistema -> Extensiones -> Finder.
A partir de ahí, hacer clic derecho en una app ofrece desinstalarla. Conviene
saber dónde aparece, porque macOS no es consistente: en ~/Applications es una
opción de primer nivel que nombra la app, y en todo lo demás - incluido
/Applications, que es donde vive la mayoría de las apps - está dentro del
submenú Servicios, bajo un más escueto "Uninstall with Unroot". No
elimina nada por su cuenta: le pasa tu selección a la app y se abre la misma
pantalla de revisión.
Tampoco es un limpiador de disco. Busca los rastros de una app que tú nombras y no "cosas que podrías liberar", y nunca se acerca a la cuenta de otro usuario.
Y no hay versión en la Mac App Store, porque leer ~/Library, restablecer
entradas de permisos y mover archivos propiedad de root son cosas imposibles desde
dentro de un sandbox.
Qué cuesta y qué más mirar
Unroot necesita macOS 14 o posterior, funciona en Apple Silicon e Intel y ocupa unos 10 MB. Es de pago voluntario con un precio sugerido de 4,99 dólares
- una cantidad que incluye el cero de verdad - y la licencia es permanente en cualquier caso. La ficha completa está en la página de Unroot.
Si lo que persigues es espacio en disco y no una app concreta, el vecino es Sweep: ordena la carpeta de Descargas con las reglas que tú escribas y tira los instaladores con más de un mes, contado función por función en ordenar archivos automáticamente en el Mac. Hay un repaso al resto en apps de utilidades para Mac.