← Todos los artículos

Acceso total al disco en macOS y agentes de IA: lo que dijo Apple

De las guías: Claude Code & Codex CLI

¿Qué dijo Apple sobre Acceso total al disco (Full Disk Access) y qué significa para los agentes de IA? El 2 de octubre de 2026, Apple publicó una breve noticia para desarrolladores, “Updates to Full Disk Access in macOS” (novedades sobre Acceso total al disco en macOS). Allí dice que Acceso total al disco “largely sidesteps” (esquiva en gran medida) los controles que protegen los datos privados de los usuarios, que “Some developers are using Full Disk Access in ways that could put users at risk” (algunos desarrolladores usan Acceso total al disco de formas que podrían poner en riesgo a los usuarios) y que “Going forward, we will introduce additional controls to ensure that users who genuinely wish to grant an app this extraordinary level of access can only do so with very explicit user action.” (en adelante, Apple introducirá controles adicionales para que quien de verdad quiera conceder a una app este nivel extraordinario de acceso solo pueda hacerlo mediante una acción muy explícita). El motivo que da: “As AI agents become increasingly capable and autonomous, the risks associated with this level of access will grow substantially.” (a medida que los agentes de IA ganen capacidad y autonomía, los riesgos de este nivel de acceso crecerán de forma considerable).1 No nombra ninguna versión de macOS, ninguna fecha, ningún mecanismo ni ninguna app. Para quien ejecuta agentes en una Mac, lo que importa hoy es cómo un agente termina con este acceso. Un agente de línea de comandos se ejecuta bajo la terminal que lo lanzó. En la documentación de Apple que leí no hay una regla general al respecto, pero la página de manual de eslogger dice que ejecutar esa herramienta “from an app, including Terminal.app or a third-party terminal emulator, requires the respective app to be authorized for Full Disk Access.” (desde una app, incluidas Terminal.app o una terminal de terceros, exige que esa app esté autorizada para Acceso total al disco).2 Un ingeniero de soporte de Apple, en una publicación del foro, lo resume así: “The tool’s responsible code is Terminal.” (el código responsable de la herramienta es Terminal).3 Si le das Acceso total al disco a tu terminal, cada agente que inicies en ella puede leer lo que la terminal puede leer: Mail, Messages, los datos de Safari y las copias de seguridad de Time Machine, según la lista de Apple.4 Los sandboxes de los proveedores no cambian eso de forma predeterminada. En mi Mac, una lectura que requiere Acceso total al disco funcionó desde el shell del agente, volvió a funcionar dentro del sandbox de solo lectura de Codex y dentro del runtime de sandbox de Anthropic, y solo fue rechazada cuando una regla del sandbox denegaba esa carpeta exacta o cuando lancé la misma lectura fuera de la terminal.5

TL;DR

  • Lo que dijo Apple. El 2 de octubre de 2026, Apple les dijo a los desarrolladores que “will introduce additional controls” (introducirá controles adicionales) para que conceder Acceso total al disco requiera “very explicit user action” (una acción muy explícita del usuario), y señaló a los agentes de IA como el motivo de que el riesgo “will grow substantially” (crezca de forma considerable). La noticia no da versión, fecha ni mecanismo. Las notas de la versión de la beta 3 de macOS 27.2 no traen ninguna línea al respecto. No encontré ninguna entrada de macOS 27.1 en el feed de versiones ni en el índice de notas de la versión del 11 de octubre: el feed lista macOS 27.0.1 (28 de septiembre), que salió sin notas de la versión para desarrolladores, y después la beta 3 de macOS 27.2; las betas de 27.2 habían empezado el 16 de septiembre.16789
  • Qué es Acceso total al disco. Un ajuste de Privacidad y seguridad (Privacy & Security) que permite a una app “access all files on your computer” (acceder a todos los archivos de la computadora), incluidos los datos de Mail, Messages, Safari y Casa, las copias de seguridad de Time Machine y “certain administrative settings for all users on this Mac.” (ciertos ajustes administrativos de todos los usuarios de esta Mac). Una app no puede pedirlo con un aviso; el usuario la agrega a mano, o lo concede un perfil de MDM. En lo que leí, Apple lo ha vinculado tres veces a las herramientas de copia de seguridad y de disco: en la WWDC19, en la WWDC23 y el 2 de octubre.410211121
  • Cómo lo obtienen los agentes. Por dos vías. Un agente de línea de comandos (Claude Code, Codex CLI, Gemini CLI, Hermes Agent, Aider) se evalúa contra la app dentro de la cual se ejecuta, así que una terminal con Acceso total al disco se lo transmite; Apple lo afirma herramienta por herramienta en páginas de manual y por medio de sus ingenieros de soporte en sus foros, nunca como una regla general documentada. Las apps de escritorio de agentes tienen sus propias entradas, y dos proveedores de agentes, Nous Research con Hermes y OpenClaw, les piden a los usuarios que concedan Acceso total al disco para que el agente pueda leer Messages.231314
  • Qué hacen los sandboxes. Los sandboxes Seatbelt de Claude Code, Codex, Gemini CLI y Cursor confinan las escrituras, y todos menos el perfil predeterminado de Gemini CLI confinan la red; sus lecturas predeterminadas son amplias. En mi Mac, los dos sandboxes que ejecuté dejaron intacta la concesión de Acceso total al disco, y según la descripción del control de acceso obligatorio que da el ingeniero de soporte de Apple, ninguno puede añadir una. El sandbox de Claude Code está desactivado de forma predeterminada; el de Codex, activado. En mi Mac, una lectura protegida pasó a través del sandbox de solo lectura de Codex y del runtime de sandbox de Anthropic; dentro de los sandboxes solo se detuvo cuando denegué la carpeta por su nombre.151617185
  • En mi Mac. La lista de Acceso total al disco tiene 75 filas: tres terminales, las apps ChatGPT, Cursor y Xcode, 30 binarios de Claude Code numerados por versión, node y cuatro intérpretes de Python, y la entrada del servidor SSH, entre otras. El shell del agente dentro de Ghostty tenía acceso efectivo; la misma lectura desde un trabajo de launchd, sin ninguna terminal por encima, fue rechazada por TCC.195
  • Qué hacer ahora. Mira quién lo tiene; quítaselo a la terminal en la que ejecutas agentes; nunca se lo des a un intérprete; activa el sandbox del proveedor y deniega las lecturas que no necesitas; ejecuta cualquier agente que lea Messages con un usuario de macOS aparte, o no lo ejecutes; y conserva la aprobación por envío para todo lo que hable en tu nombre. Cada paso de abajo trae su fuente y su costo.420152122
  • Qué podría cambiar. Las palabras de Apple admiten un flujo de concesión más exigente, un alcance más estrecho, un trato distinto para las concesiones que pasan de una app a los programas que lanza, y cambios para las Mac administradas. La sección 7 contrasta cada una con los cambios cercanos que Apple ya hizo en macOS 27 y Xcode 27, junto con la condición de la que depende cada una. Ninguna es un pronóstico.1232425

1. Lo que Apple dijo el 2 de octubre y lo que no dijo

El feed de noticias para desarrolladores de Apple fechó la noticia el viernes 2 de octubre de 2026 a las 09:00:19, hora del Pacífico, entre un aviso del 1 de octubre sobre la expiración de una autoridad de certificación de Developer ID y los anuncios del 5 de octubre sobre iPhone Duo y los recursos de App Store.26 La noticia tiene dos párrafos. La guardé el 11 de octubre y la volví a descargar 19 minutos después; salvo por los apóstrofos curvos frente a los rectos, las dos copias son idénticas, así que no cambió entre mis dos lecturas.1

El primer párrafo plantea el problema. Apple dice que ofrece a los desarrolladores “powerful APIs to build incredible capabilities into their apps for Apple products, backed by a set of controls designed to protect users’ private data,” (API potentes para crear capacidades increíbles en sus apps, respaldadas por un conjunto de controles diseñados para proteger los datos privados de los usuarios) y luego: “Full Disk Access largely sidesteps these controls in order to allow backup apps to function properly on the Mac.” (Acceso total al disco esquiva en gran medida esos controles para que las apps de copia de seguridad funcionen bien en la Mac). La frase siguiente es la acusación: “Some developers are using Full Disk Access in ways that could put users at risk,” (algunos desarrolladores usan Acceso total al disco de formas que podrían poner en riesgo a los usuarios) al exponer “everything on their systems,” (todo lo que hay en sus sistemas), que Apple detalla como “files, mail, messages, and even browsing history,” (archivos, correo, mensajes e incluso el historial de navegación) y al hacerlo “without users’ full knowledge and understanding.” (sin que los usuarios lo sepan ni lo entiendan del todo). El párrafo cierra con personas que nunca aceptaron nada: “For communication apps, this can also compromise the privacy of the people users are communicating with.” (en las apps de comunicación, esto también puede comprometer la privacidad de las personas con las que se comunican los usuarios).1

El segundo párrafo es la promesa y el motivo, citado completo:

“Going forward, we will introduce additional controls to ensure that users who genuinely wish to grant an app this extraordinary level of access can only do so with very explicit user action. Addressing this is critical. As AI agents become increasingly capable and autonomous, the risks associated with this level of access will grow substantially. We are committed to ensuring users clearly understand these risks before granting such access, so they can make informed decisions about their own data and privacy.”1

(En español: en adelante, Apple introducirá controles adicionales para que los usuarios que de verdad quieran conceder a una app este nivel extraordinario de acceso solo puedan hacerlo mediante una acción muy explícita. Resolver esto es fundamental. A medida que los agentes de IA ganen capacidad y autonomía, los riesgos de este nivel de acceso crecerán de forma considerable. Apple se compromete a que los usuarios entiendan con claridad esos riesgos antes de conceder ese acceso, para que tomen decisiones informadas sobre sus propios datos y su privacidad).

Tres cosas de ese párrafo merecen una lectura lenta.

El sujeto es la concesión, no la API. Cada verbo de la promesa se refiere al momento en que un usuario concede el acceso: los usuarios “who genuinely wish to grant an app” (que de verdad quieran concederlo a una app), “very explicit user action” (una acción muy explícita del usuario), entender los riesgos “before granting such access” (antes de conceder ese acceso). Nada en la noticia dice que Acceso total al disco vaya a cubrir menos, que las apps que lo tienen vayan a revisarse o que vaya a desaparecer. Mi lectura, señalada como tal: la noticia describe un cambio en la forma de activar el interruptor y no dice nada, en ningún sentido, sobre lo que el interruptor desbloquea una vez activado.

El motivo son los agentes, pero el objetivo son las apps. Apple nombra a los “AI agents” (agentes de IA) una sola vez, como el motivo de que el riesgo “will grow substantially” (crezca de forma considerable). No dice que los agentes sean las apps que hoy abusan del acceso; esa frase se refiere a “Some developers” (algunos desarrolladores). Tampoco dice cómo un control sobre la concesión a “an app” (una app) alcanzaría a un agente, que en una Mac a menudo no es una app sino un programa de línea de comandos que se ejecuta dentro de una. La sección 3 trata justamente de ese hueco.

“Communication apps” (apps de comunicación) es la categoría que destaca por el daño a terceros. Apple no nombra ninguna app ni ningún desarrollador. La noticia nombra dos tipos de software: las apps de copia de seguridad, como el motivo por el que existe el acceso, y las apps de comunicación, el único tipo que vincula con un daño que va más allá del usuario: las personas al otro lado de una conversación, que no concedieron nada. La sección 3 muestra a dos proveedores de agentes cuyas integraciones con Messages, según su propia documentación, necesitan Acceso total al disco; si Apple tenía en mente a alguno de ellos, la noticia no lo dice, y yo no lo supongo.

Lo que la noticia no dice

Leída por lo que le falta, la noticia no trae:

  • Ni versión de macOS ni fecha. “Going forward” (en adelante) es la única expresión temporal.
  • Ningún mecanismo. Ni diseño de aviso, ni entitlement, ni API, ni regla de App Review, ni cambio en la administración de dispositivos.
  • Nada sobre las concesiones existentes. No dice si las apps que ya están en la lista de Acceso total al disco conservan su lugar ni si se volverá a preguntar a los usuarios.
  • Nada sobre las Mac administradas. No menciona MDM, aunque hoy MDM puede conceder Acceso total al disco (sección 2).
  • Ninguna acción para desarrolladores. Ni plazo, ni enlace a documentación, ni fecha para la que las apps deban cambiar.

Busqué en los lugares donde Apple pondría un mecanismo. El índice de notas de la versión de macOS, leído el 11 de octubre, lista exactamente dos entradas de macOS 27, “macOS 27.2 Golden Gate Beta 3 Release Notes” y “macOS 27 Golden Gate Release Notes”. No encontré ninguna entrada de macOS 27.1 en ese índice ni en el feed de versiones de Apple, leído el mismo día, que lista macOS 27.0.1 (26A434), con fecha del 28 de septiembre, y después la beta 3 de 27.2. La actualización 27.0.1 no tiene página de notas de la versión para desarrolladores; la dirección que usaría esa página devolvió HTTP 404 cuando la probé, igual que las direcciones de 27.1 y de la beta de 27.1.87 Las notas de la beta 3 de 27.2 (la beta, build 26B5101f, tiene fecha del 5 de octubre en el feed de versiones de Apple, tres días después de la noticia) tienen seis secciones (General, AppKit, Display Settings, Notifications, Shortcuts, StoreKit Testing in Xcode), y ninguna menciona Acceso total al disco, TCC ni Privacidad y seguridad; lo más cercano es una línea de AppKit que dice que un valor predeterminado de vista previa para desarrolladores sobre la privacidad del portapapeles “has been removed.” (fue eliminado).67 El boletín para desarrolladores de octubre de Apple, publicado cuatro días después de la noticia, trata los envíos para iPhone Duo, los labs y la documentación, y no dice nada sobre Acceso total al disco ni sobre agentes.27 Las cuatro sesiones de la WWDC26 que Apple archiva en la categoría Privacy & Security, incluida una titulada “Secure your app: mitigate risks to agentic features” (protege tu app: mitiga los riesgos de las funciones agénticas), no mencionan Acceso total al disco.2829

El único otro texto de Apple sobre agentes y acceso a archivos

Un documento de Apple sí habla de permisos de archivos para agentes de IA, y trata de Xcode, no de macOS. Las notas de la versión de Xcode 27 dicen: “Coding Intelligence now includes a new security layer that monitors and controls filesystem access by coding agents and any processes they spawn. This can be enabled in Coding Intelligence settings.” (Coding Intelligence incluye ahora una nueva capa de seguridad que supervisa y controla el acceso al sistema de archivos de los agentes de programación y de cualquier proceso que lancen; se puede activar en los ajustes de Coding Intelligence).24 Esa es la entrada completa. No dice qué permite o bloquea la capa, si está activada de forma predeterminada (la expresión “can be enabled”, se puede activar, sugiere que no), cómo se relaciona con TCC ni si cubre agentes fuera de Xcode. Las mismas notas describen un servidor MCP en vista previa que permite a “code-signed agents” (agentes con firma de código) usar proyectos de un árbol de directorios “for extended periods of time without being asked for additional permissions,” (durante periodos prolongados sin que se les pidan permisos adicionales) y un flag, --unsafe-always-allow-all-agents, que según Apple “is not a recommended configuration for at-desk use.” (no es una configuración recomendada para el uso frente a la computadora).24 Ninguna de las dos entradas menciona Acceso total al disco.

La sesión de la WWDC26 sobre funciones agénticas es lo más parecido a un modelo de amenazas para agentes en el material de Apple que leí. Cita la “Simon Willison’s Lethal Trifecta” (la trifecta letal de Simon Willison), según la cual un usuario corre el mayor peligro cuando un agente tiene “access to private data, exposure to untrusted content, and the ability to externally communicate.” (acceso a datos privados, exposición a contenido no confiable y la capacidad de comunicarse hacia afuera).29 Acceso total al disco reúne la primera de esas tres en un solo interruptor; esa es mi lectura de por qué la noticia de octubre dice que el riesgo crece con los agentes, no el razonamiento declarado de Apple.

2. Qué es Acceso total al disco

El control, en palabras de Apple

Acceso total al disco es una fila de Ajustes del Sistema (System Settings) > Privacidad y seguridad. El Manual de uso de la Mac para macOS 27 lo describe así: “Allow apps to access all files on your computer, including data from other apps (for example, Mail, Messages, Safari, and Home), data from Time Machine backups, and certain administrative settings for all users on this Mac.” (permitir que las apps accedan a todos los archivos de la computadora, incluidos los datos de otras apps, como Mail, Messages, Safari y Casa, los datos de las copias de seguridad de Time Machine y ciertos ajustes administrativos de todos los usuarios de esta Mac).4 Las filas de alrededor dicen otra cosa. Calendarios, Contactos, Archivos y carpetas (Files and Folders) y la mayoría de las demás terminan con “The listed apps have requested access.” (las apps de la lista solicitaron acceso). La fila de Acceso total al disco, en cambio, dice “To add an app, click [the Add button] , select the app in the list, then click Open.” (para agregar una app, haz clic en el botón Agregar, selecciona la app en la lista y haz clic en Abrir).4 La diferencia es justamente el punto: las apps piden las demás, y es el usuario quien tiene que ir a buscar esta.

Apple Platform Security dice lo mismo en forma de tabla. Su página sobre el control del acceso de las apps a los archivos lista “Full internal storage access” (acceso completo al almacenamiento interno, su nombre para el mismo control) con una cruz bajo “User prompted by app” (la app le pregunta al usuario) y una marca bajo “User needs to edit system privacy settings” (el usuario debe modificar los ajustes de privacidad del sistema); Archivos y carpetas, en cambio, lo pide la app.10 La referencia de administración de dispositivos, escrita para administradores, describe el servicio como acceso “to all protected files, including system administration files,” (a todos los archivos protegidos, incluidos los de administración del sistema) y la guía de implementación de Apple lo lista como “System Policy All Files”, que “Allows specified apps access to data like Mail, Messages, Safari, Home, Time Machine backups, and certain administrative settings for all users of the Mac.” (permite a las apps indicadas acceder a datos como Mail, Messages, Safari, Casa, las copias de seguridad de Time Machine y ciertos ajustes administrativos de todos los usuarios de la Mac).3031

Hay tres cosas que Apple no publica y que conviene saber antes de razonar sobre este control:

  • No existe una lista completa de lo que protege. Un ingeniero de Developer Technical Support de Apple, en los foros para desarrolladores de Apple (una publicación del personal, no documentación), dice “The exact list of file system locations protected by MAC is not documented and, as illustrated by the list above, can change over time.” (la lista exacta de ubicaciones del sistema de archivos que protege MAC no está documentada y, como muestra la lista anterior, puede cambiar con el tiempo).20 MAC es aquí el control de acceso obligatorio (mandatory access control), el mecanismo que está debajo.
  • No es por usuario. El mismo ingeniero: “Some MAC privileges are per user (Files and Folders) and some are system wide (Full Disk Access).” (algunos privilegios de MAC son por usuario, como Archivos y carpetas, y otros abarcan todo el sistema, como Acceso total al disco).20 Una concesión hecha con una cuenta abierta vale para ese programa en todas las cuentas.
  • TCC es un nombre que Apple usa pero casi no define. El subsistema que guarda estas decisiones es TCC. El encabezado de Endpoint Security del SDK de macOS 27 lo escribe “Transparency, Consent, and Control (TCC)”, un panel de Apple en la WWDC26 dijo “TCC stands for transparency, consent and control” (TCC significa transparencia, consentimiento y control), y la publicación del ingeniero de soporte añade que TCC “has no API surface” (no tiene superficie de API).323320 En la base de datos de TCC de mi Mac, las filas de Acceso total al disco se guardan con el nombre de servicio kTCCServiceSystemPolicyAllFiles. Esa cadena no aparece en ningún documento, página de manual ni encabezado del SDK de Apple que revisé; los nombres documentados de Apple son la clave de perfil SystemPolicyAllFiles y el ancla de ajustes Privacy_AllFiles.19302534

Cómo se concede

Por el usuario, a mano. El usuario abre la fila de Acceso total al disco, hace clic en Agregar y elige la app.4 Apple no documenta ninguna forma de que una app muestre un aviso para pedirlo. Lo que la documentación de Apple ofrece en su lugar es un enlace que lleva al usuario al panel correcto. Para las apps con el entitlement de cliente de Endpoint Security (el encabezado exige el entitlement com.apple.developer.endpoint-security.client a quien llama a es_new_client), el encabezado de Endpoint Security dice “The only supported way to check if an application is properly TCC authorized for Full Disk Access is to call es_new_client and handling ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED,” (la única forma admitida de comprobar si una aplicación tiene la autorización de TCC para Acceso total al disco es llamar a es_new_client y manejar ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED) y que, “To direct the user to the Full Disk Access section in System Settings,” (para llevar al usuario a la sección de Acceso total al disco de Ajustes del Sistema) una app puede abrir x-apple.systempreferences:com.apple.settings.PrivacySecurity.extension?Privacy_AllFiles en macOS 13 y posteriores.25 En la WWDC19, Apple describió el mismo patrón: las apps “can test for authorization using FileManager or POSIX level APIs, and if necessary, can guide the user to the security and privacy preference pane, where the user can then approve the app if that’s what they want.” (pueden comprobar la autorización con FileManager o con API de nivel POSIX y, si hace falta, guiar al usuario al panel de preferencias de seguridad y privacidad, donde puede aprobar la app si así lo quiere).11 En 2018, un desarrollador pidió en los foros de Apple “an API call that causes a prompt to the logged-in user to grant the app Full Disk access because there’s no way to trigger a prompt like that right now, and that’s what backup apps need” (una llamada de API que muestre un aviso al usuario con sesión iniciada para conceder a la app Acceso total al disco, porque hoy no hay forma de lanzar ese aviso y es lo que necesitan las apps de copia de seguridad); el ingeniero de soporte de Apple respondió: “Please do file an enhancement request.” (por favor, presenta una solicitud de mejora).35 En todo lo que leí para este artículo, la documentación de Apple sigue describiendo solo el enlace, ocho años después.

Existe una comodidad. Desde Catalina, un programa rechazado por no tener Acceso total al disco ya aparece en la lista, desactivado: “executables that are denied access to files due to a lack of Full Disk Access approval are now prepopulated unchecked.” (los ejecutables a los que se niega el acceso a archivos por no tener la aprobación de Acceso total al disco ahora aparecen precargados y sin marcar).11 El usuario todavía tiene que activarlo.

Por un perfil de MDM. En una Mac administrada, el payload Privacy Preferences Policy Control (tipo com.apple.TCC.configuration-profile-policy, solo macOS, desde 10.14) puede concederlo. La página de manual de eslogger lo dice sin rodeos: “MDM servers can grant Full Disk Access authorization using the Privacy Preferences Policy Control payload, identified by payload type com.apple.TCC.configuration-profile-policy, and its service dictionary key SystemPolicyAllFiles.” (los servidores MDM pueden conceder la autorización de Acceso total al disco con el payload Privacy Preferences Policy Control, identificado por el tipo com.apple.TCC.configuration-profile-policy, y su clave de diccionario de servicio SystemPolicyAllFiles).236 Cuando la clave Allowed de la entrada de una app es true, la referencia de Apple dice “access is granted” (el acceso se concede) y añade: “The user isn’t prompted and can’t change this value.” (no se le pregunta al usuario y este no puede cambiar el valor).37 El comentario de ejemplo de la propia guía de implementación de Apple para este payload dice “Allows my organization’s app to interact with all files without prompting the user.” (permite que la app de mi organización interactúe con todos los archivos sin preguntarle al usuario).31 Es una asimetría real: para la cámara, el micrófono, la captura de pantalla y la escucha del teclado, la referencia de Apple dice que un perfil “can’t grant” (no puede conceder) el acceso y “can only deny it” (solo puede denegarlo). No dice nada parecido para SystemPolicyAllFiles.30

Dos páginas de Apple no coinciden sobre este payload, y una cambió este año:

  • Supervisión. La guía de implementación dice “Supervision is required if you apply this payload using a device management service.” (la supervisión es obligatoria si aplicas este payload mediante un servicio de administración de dispositivos). La tabla de disponibilidad de la referencia para desarrolladores lista “Requires supervision” (requiere supervisión) como N/A.3136 Informo ambas y no elijo ninguna.
  • macOS 27 dejó obsoleta la parte por app. En la referencia actual, el objeto Identity que usa cada entrada de servicio, Acceso total al disco incluido, está marcado como obsoleto en macOS 27.0, y cada una de sus claves dice “Deprecated: macOS 27+”. La entrada SystemPolicyAllFiles en sí no lleva ninguna marca de obsolescencia.3730 El reemplazo declarativo al que Apple remite otros servicios, la configuración de ajustes de apps, ofrece valores predeterminados de privacidad para accesibilidad, Bluetooth, cámara, dictado, red local, ubicación y micrófono. No tiene ninguna clave de Acceso total al disco, y sus valores predeterminados dependen de un consentimiento: “When set, the app displays a consent prompt listing all the configured defaults.” (cuando se configuran, la app muestra un aviso de consentimiento con todos los valores predeterminados configurados).3839 Apple no relaciona esto con la noticia del 2 de octubre, y yo tampoco; es un hecho que está al lado de la historia.

Por qué existe: las apps de copia de seguridad, tres veces

En cada uno de los tres lugares donde encontré a Apple diciendo para quién es Acceso total al disco, nombró el mismo tipo de software. En la WWDC19, al describir los dos niveles de datos protegidos, Apple puso “things like mail or messages and Safari browsing history” (cosas como el correo, los mensajes y el historial de navegación de Safari) en el segundo nivel y dijo que estos “have a high barrier to access because the files are typically only accessed by specialized apps such as disk management or backup utilities.” (tienen una barrera de acceso alta porque a esos archivos normalmente solo acceden apps especializadas, como las de administración de discos o las utilidades de copia de seguridad).11 En la WWDC23, al presentar la protección de contenedores de apps, Apple dijo “For backup utilities or disk-management tools that have already been granted Full Disk Access, no additional prompt will be shown at time of access, since people have already chosen to allow these apps access to all files.” (a las utilidades de copia de seguridad o herramientas de administración de discos que ya tienen concedido Acceso total al disco no se les mostrará ningún aviso adicional al acceder, porque las personas ya eligieron permitirles el acceso a todos los archivos).12 El 2 de octubre dijo que Acceso total al disco esquiva los controles de datos “in order to allow backup apps to function properly on the Mac.” (para que las apps de copia de seguridad funcionen bien en la Mac).1 Un agente no es una app de copia de seguridad. Esa es toda la tensión en una frase.

De dónde viene

La mayoría de las fuentes de Apple sitúan el origen de Acceso total al disco en macOS Mojave, en 2018. El comunicado de prensa de Apple del 4 de junio de 2018 decía “New data protections require apps to get user permission before using the Mac camera and microphone or accessing personal data like user Mail history and Messages database.” (las nuevas protecciones de datos exigen que las apps obtengan el permiso del usuario antes de usar la cámara y el micrófono de la Mac o de acceder a datos personales como el historial de Mail y la base de datos de Messages).40 Las notas de la versión de Mojave 10.14, todavía en línea, usan el nombre Application Data, que un desarrollador en los foros de Apple, en agosto de 2018, llamó el nombre de las betas anteriores:35 “Apps can’t access protected storage unless they’re added to the Application Data category located in the Privacy tab of System Preferences > Security & Privacy.” (las apps no pueden acceder al almacenamiento protegido a menos que se agreguen a la categoría Application Data de la pestaña Privacidad de Preferencias del Sistema > Seguridad y privacidad).41 El payload de administración de dispositivos y su clave SystemPolicyAllFiles figuran como introducidos en macOS 10.14, y la publicación del ingeniero de soporte de Apple lista “Full Disk Access (macOS 10.14 and later)” (Acceso total al disco, macOS 10.14 y posteriores).3620

Una página de Apple da otra fecha. Apple Platform Security dice “In macOS 10.13 or later, apps that require access to the full storage device need to be explicitly added in System Settings (macOS 13 or later) or System Preferences (macOS 12 or earlier).” (en macOS 10.13 o posterior, las apps que necesitan acceso a todo el dispositivo de almacenamiento deben agregarse de forma explícita en Ajustes del Sistema, en macOS 13 o posterior, o en Preferencias del Sistema, en macOS 12 o anterior).10 Todas las demás fuentes de Apple que leí dicen 10.14. Informo la discrepancia y no elijo ninguna.

Catalina (10.15, lanzado el 7 de octubre de 2019) amplió el conjunto protegido. Su comunicado de prensa decía “new data protections require all apps to get permission before accessing user documents,” (las nuevas protecciones de datos exigen que todas las apps obtengan permiso antes de acceder a los documentos del usuario) y en la WWDC19 Apple añadió las carpetas Escritorio, Documentos y Descargas, iCloud Drive, el almacenamiento en la nube de terceros, los volúmenes extraíbles y los volúmenes de red a la lista que requiere consentimiento, y dijo “the universe of data that requires preapproval for Full Disk Access has been expanded to include trash.” (el universo de datos que requiere aprobación previa de Acceso total al disco se amplió para incluir la papelera).4211 Versiones posteriores añadieron la protección de contenedores de apps (macOS 14) y la protección de contenedores de grupos de apps (macOS 15), ambas sobre apps que leen datos de otras apps; para la primera, Apple dijo que quienes tuvieran Acceso total al disco no verían ningún aviso adicional.2012

macOS 27 volvió a moverse en la misma dirección. Sus notas de la versión dicen que el acceso a “other developer teams’ app data containers and app group containers no longer prompts the user for authorization; such accesses are denied by default and can be managed by the user in Privacy & Security settings,” (los contenedores de datos de apps y de grupos de apps de otros equipos de desarrollo ya no piden autorización al usuario; esos accesos se deniegan de forma predeterminada y el usuario puede administrarlos en los ajustes de Privacidad y seguridad), que “XProtect may now restrict access to app data that is commonly targeted by malicious software,” (XProtect ahora puede restringir el acceso a datos de apps que el malware suele atacar) y, bajo TCC, “Apps can no longer access the local TCC database directly.” (las apps ya no pueden acceder directamente a la base de datos local de TCC).23 En un problema conocido, las propias notas de Apple recomiendan Acceso total al disco como solución provisional: cuando a un proceso sin bundle ID no se le puede dar acceso al contenedor de otro equipo, “Workaround: Consider if the access is necessary. If required, grant Full Disk Access to the process for the duration of the requirement.” (solución alternativa: considera si el acceso es necesario y, si lo es, concede Acceso total al disco al proceso mientras dure esa necesidad).23 El artículo sobre las notas de la versión de macOS 27 y el artículo sobre los contenedores de otros equipos cubren esos cambios en detalle.

3. Cómo lo obtiene un agente

Hay dos formas en que un agente de IA en una Mac termina pudiendo leer lo que protege Acceso total al disco. Se ejecuta dentro de una app que tiene la concesión, o es una app que tiene la concesión. La primera es la forma en que la mayoría de los agentes de línea de comandos lo obtienen, y nadie tiene que hacer clic en nada para el agente en sí.

La vía de la terminal

Cuando escribes claude o codex en una terminal, macOS no pregunta si Claude Code o Codex pueden leer tus mensajes de Messages. Pregunta si la terminal puede. Apple llama “responsible” (responsable) al programa que evalúa, y en ninguna documentación de Apple que encontré se enuncia como regla general cómo se elige. Lo que sí publicó es un conjunto de afirmaciones concretas que apuntan todas en la misma dirección:

  • eslogger(1), incluido en macOS 27: “eslogger requires the responsible process to have been authorized for Full Disk Access,” (eslogger requiere que el proceso responsable tenga autorización de Acceso total al disco) y “Running eslogger from an app, including Terminal.app or a third-party terminal emulator, requires the respective app to be authorized for Full Disk Access in System Preferences > Security & Privacy > Privacy > Full Disk Access.” (ejecutar eslogger desde una app, incluidas Terminal.app o una terminal de terceros, exige que esa app esté autorizada en Acceso total al disco).2
  • tmutil(8): “Full Disk Access privileges can be granted to the Terminal application used to run tmutil from the Privacy tab in the Security & Privacy preference pane.” (los privilegios de Acceso total al disco pueden concederse a la app de terminal con la que se ejecuta tmutil, desde la pestaña Privacidad del panel Seguridad y privacidad).43
  • fdesetup(8): desde macOS 10.15, activar FileVault desde la línea de comandos requiere, entre otras opciones, que “The responsible application is authorized for” (la aplicación responsable esté autorizada para) Acceso total al disco.44
  • La referencia de administración de dispositivos de Apple: “Helper tools embedded within an application bundle automatically inherit the permissions of their enclosing app bundle.” (las herramientas auxiliares incluidas en el paquete de una aplicación heredan automáticamente los permisos del paquete de la app que las contiene).37

La afirmación más directa viene de Quinn, ingeniero de Developer Technical Support de Apple, en respuesta a un hilo del foro de junio de 2024 sobre herramientas de línea de comandos y Acceso total al disco. Es una publicación del personal en el sitio de Apple, no documentación, y la señalo así cada vez que la uso. Enumera cuatro casos. Para una herramienta que el usuario ejecuta desde Terminal, “The tool’s responsible code is Terminal.” (el código responsable de la herramienta es Terminal). Para una herramienta ejecutada por SSH, “The tool’s responsible code is the SSH server.” (el código responsable de la herramienta es el servidor SSH). Para un auxiliar lanzado por una app, “The system treats the app as the responsible code.” (el sistema trata a la app como el código responsable). Para un trabajo de launchd, instalarlo con SMAppService convierte a la app en el código responsable; si no, escribe, la lista de propiedades del trabajo debería nombrar la app con AssociatedBundleIdentifiers.3 En el mismo hilo agrega la advertencia que importa a cualquiera que haga planes en torno a esto: “The exact algorithm it uses for this is not documented, has changed in the past, and may well change in the future.” (el algoritmo exacto que usa no está documentado, ha cambiado en el pasado y bien puede cambiar en el futuro).3 Cuando en otro hilo le preguntaron si TCC “is looking for parent process rights” (busca los derechos del proceso padre), prefirió no entrar en detalles porque es “both complex and subject to change.” (complejo y sujeto a cambios).45

El desarrollador que abrió el hilo de junio de 2024 ya había medido el efecto: “When this program is built and executed in Terminal.app with Terminal having FDA, the file opens successfully. Conversely, when FDA is revoked from Terminal and granted to the program, an error occurs due to insufficient privileges.” (cuando el programa se compila y se ejecuta en Terminal.app con Terminal teniendo FDA, el archivo se abre sin problema; en cambio, cuando se le revoca FDA a Terminal y se le concede al programa, se produce un error por privilegios insuficientes).3 Es el informe de un desarrollador, no de Apple. Su primera mitad coincide con lo que medí en mi propia Mac (sección 5): la lectura funcionó con la concesión en la cadena de lanzamiento de la terminal. No probé la segunda mitad; mi control cambió desde dónde se lanzaba la lectura, no qué app tenía la concesión.

De ahí se siguen dos consecuencias, y ninguna es exclusiva de los agentes.

Todo lo que inicias en esa terminal lo obtiene. El agente, el shell que lanza, git, npm install, un ejecutor de pruebas, un servidor MCP lanzado por stdio, un script que el modelo escribió hace un minuto: si se ejecutan bajo la terminal, la terminal es lo que TCC evalúa. El ingeniero de soporte de Apple lo dice directamente sobre los intérpretes: “if you have a script that needs to manipulate files on your desktop, you wouldn’t want to give the interpreter that privilege because then any script could do that.” (si tienes un script que necesita manipular archivos de tu escritorio, no querrías darle ese privilegio al intérprete, porque entonces cualquier script podría hacerlo).20 Una terminal con Acceso total al disco es el mismo problema un nivel más arriba.

Otras apps pueden tomarlo prestado. En 2022, Jeff Johnson publicó “Every unsandboxed app has Full Disk Access if Terminal does” (toda app sin sandbox tiene Acceso total al disco si Terminal lo tiene), con código fuente. Su argumento: “unsandboxed apps can open executable shell scripts in Terminal, and those scripts will execute with the permissions not of the opening app but rather with the permissions of Terminal, i.e. Full Disk Access.” (las apps sin sandbox pueden abrir scripts de shell ejecutables en Terminal, y esos scripts se ejecutan no con los permisos de la app que los abre sino con los de Terminal, es decir, con Acceso total al disco). La técnica, señala, “doesn’t work for sandboxed apps.” (no funciona con apps en sandbox).46 Todas las apps de escritorio de agentes que inspeccioné en mi Mac están fuera del sandbox: la app de Claude y Cursor no llevan el entitlement de App Sandbox, y la app de ChatGPT lo lleva con el valor false.47 Mi lectura, no una afirmación de Johnson: en una Mac donde la terminal tiene Acceso total al disco, cualquiera de esas apps podría alcanzarlo de la misma forma.

¿Qué dicen las propias terminales? No encontré documentación de Ghostty ni de iTerm2 que diga qué obtienen los procesos hijos cuando la terminal tiene Acceso total al disco: las búsquedas de código en GitHub de esa frase en la documentación de Ghostty y en el repositorio de iTerm2 no devolvieron nada. No busqué de la misma forma en la documentación de Terminal de Apple ni en la de Warp.48 Lo que sí muestran las apps es en nombre de quién hablan. Sus cadenas de propósito, leídas de las apps instaladas en mi Mac, están escritas en nombre de lo que se ejecuta dentro de ellas: el aviso de AppleScript de Ghostty dice “A program running within Ghostty would like to use AppleScript,” (un programa que se ejecuta en Ghostty quiere usar AppleScript) y el de iTerm2, “An application in iTerm2 wants to use AppleScript.” (una aplicación en iTerm2 quiere usar AppleScript).47 macOS no tiene cadena de propósito para Acceso total al disco, porque las apps no pueden pedirlo con un aviso, pero las cadenas muestran el diseño: la terminal es la app por la que se le pregunta al usuario.

Los editores con agentes integrados funcionan igual, un nivel más allá. La documentación de Cursor dice “Cursor runs shell commands directly in your terminal,” (Cursor ejecuta los comandos de shell directamente en tu terminal), lo que yo leo, dentro del editor, como la terminal integrada del propio Cursor.49 Según el caso del auxiliar que da el ingeniero de soporte (una herramienta lanzada por una app se le atribuye a la app), Cursor es entonces la app que TCC ve para esos comandos. Esa es mi inferencia; la documentación de Cursor no dice a qué app le atribuye TCC el acceso.318

La vía de SSH

Si manejas un agente por SSH, la terminal del otro extremo no es el código responsable; lo es el servidor SSH. El ingeniero de soporte de Apple: “The tool’s responsible code is the SSH server. You can set Full Disk Access on that using System Settings > General > Sharing > Remote Login > Allow full disk access for remote users.” (el código responsable de la herramienta es el servidor SSH; puedes darle Acceso total al disco en Ajustes del Sistema > General > Compartir > Sesión remota > permitir acceso total al disco a los usuarios remotos).3 La página de manual de eslogger nombra el mismo ajuste.2 La guía de configuración de OpenClaw muestra el cliente del lado de SSH tal como aparece en TCC, /usr/libexec/sshd-keygen-wrapper, y ese mismo cliente figura en la lista de Acceso total al disco de mi Mac.1419

Lo que los proveedores de agentes te piden que hagas

Dos proyectos de agentes les piden a los usuarios, en su propia documentación, que concedan Acceso total al disco para que el agente pueda leer Messages:

  • Hermes Agent (Nous Research). La skill de Apple iMessage figura como “Bundled (installed by default),” (incluida, instalada de forma predeterminada) y sus requisitos dicen “Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)” (concede Acceso total al disco a la terminal) y “Grant Automation permission for Messages.app when prompted.” (concede el permiso de Automatización a Messages.app cuando se te pida).13 Es una instrucción del proveedor para darle Acceso total al disco a la terminal y, con ella, a todo lo que se ejecute en ella. La guía de Hermes cubre el resto del agente.
  • OpenClaw. Su configuración de iMessage dice “Full Disk Access is required for the process context running OpenClaw/imsg” (el contexto de proceso que ejecuta OpenClaw necesita Acceso total al disco, para la base de datos de Messages), “Automation permission is required to send messages through Messages.app,” (el permiso de Automatización es obligatorio para enviar mensajes por Messages.app) y “Permissions are granted per process context.” (los permisos se conceden por contexto de proceso).14 La misma página dice que, para acciones avanzadas como reacciones, ediciones y anular envíos, “System Integrity Protection must be disabled,” (hay que desactivar System Integrity Protection) mientras que el envío y la recepción básicos funcionan sin hacerlo.14 La página de permisos de macOS de OpenClaw da la misma regla para las carpetas Escritorio, Documentos y Descargas: “grant access to the same process context that performs file operations (for example Terminal/iTerm, LaunchAgent-launched app, or SSH process).” (concede el acceso al mismo contexto de proceso que realiza las operaciones de archivos, por ejemplo Terminal/iTerm, una app lanzada por LaunchAgent o un proceso SSH).50

Anthropic documenta un caso más acotado. Las sesiones en segundo plano de Claude Code, según su documentación de agent view, ejecutan un proceso anfitrión que “requests access to protected folders separately from your terminal,” (solicita acceso a las carpetas protegidas por separado de tu terminal) y, si una sesión en segundo plano informa “Operation not permitted” en una ubicación protegida, la solución es “grant access in System Settings under Privacy & Security > Files and Folders, or enable Full Disk Access for the entry.” (conceder el acceso en Ajustes del Sistema, en Privacidad y seguridad > Archivos y carpetas, o activar Acceso total al disco para esa entrada). Con el instalador nativo, dice, “the entry appears as Claude Code and the grant persists across updates.” (la entrada aparece como Claude Code y la concesión se mantiene entre actualizaciones).51 Para el uso de la computadora, Anthropic les pide a los usuarios que comprueben que “your terminal app is listed and enabled” (tu app de terminal figura en la lista y está activada) en Grabación de pantalla, que es de nuevo la vía de la terminal, para otro permiso.52 Ninguna de las páginas de Anthropic sobre sandbox, permisos o seguridad menciona Acceso total al disco.1553

La vía de la app de escritorio

Las apps de escritorio de agentes tienen sus propias filas en Privacidad y seguridad, y lo que piden varía:

  • ChatGPT para Mac (en mi Mac, su bundle ID es com.openai.codex). El 20 de agosto de 2026, OpenAI añadió un plugin de Apple Messages: “On Apple silicon Macs, the Apple Messages plugin in the ChatGPT desktop app can read and search iMessage, SMS, and RCS conversations and prepare or send messages through Messages.” (en las Mac con Apple silicon, el plugin de Apple Messages de la app de escritorio de ChatGPT puede leer y buscar conversaciones de iMessage, SMS y RCS, y preparar o enviar mensajes por Messages).54 La guía de plugins de OpenAI dice solo “Grant the requested macOS permissions before ChatGPT reads Messages.” (concede los permisos de macOS solicitados antes de que ChatGPT lea Messages).22 No encontré ninguna página de OpenAI que nombre el permiso. MacRumors, al informar del lanzamiento, escribió que “For the Messages integration to work, ChatGPT needs Full Disk Access in System Settings, as well as access to contact names and automation tools” (para que funcione la integración con Messages, ChatGPT necesita Acceso total al disco en Ajustes del Sistema, además de acceso a los nombres de los contactos y a las herramientas de automatización); eso es prensa, usada aquí como pista, no como declaración de OpenAI.55 En mi Mac, la app de ChatGPT figura en la tabla de Acceso total al disco.19 La guía de OpenAI también trae la advertencia que yo pondría primero: “Persistent approval removes your final chance to review a message before ChatGPT sends it as you.” (la aprobación persistente elimina tu última oportunidad de revisar un mensaje antes de que ChatGPT lo envíe en tu nombre).22 Para Computer Use, OpenAI pide Grabación de pantalla y Accesibilidad (Accessibility), y dice “File reads, file edits, and shell commands still follow the sandbox and approval settings for the task.” (las lecturas y ediciones de archivos y los comandos de shell siguen sujetos a los ajustes de sandbox y de aprobación de la tarea).56
  • Claude para Mac. No encontré ninguna página de Anthropic que pida Acceso total al disco. El Info.plist de la app en mi Mac declara cadenas de propósito para las carpetas Escritorio, Documentos y Descargas y para Apple Events, entre otras (“Claude needs this so commands you run in Claude can control other apps”, Claude lo necesita para que los comandos que ejecutas en Claude puedan controlar otras apps).47 Su función de entrada rápida pide Grabación de pantalla y Accesibilidad.57
  • Cursor. Ninguna de las dos páginas de Cursor que guardé, Run Modes y Terminal, pide Acceso total al disco; Cursor figura en la tabla de mi Mac.191849
  • Uso de la computadora en Hermes Agent. Accesibilidad y Grabación de pantalla se conceden a la identidad que nombra hermes computer-use doctor, una app controladora aparte, no a la terminal.58
  • VS Code con agentes. No está instalado en mi Mac; no encontré ninguna página de Microsoft sobre Acceso total al disco para sus agentes.4759

Agentes por vía

Agente Cómo llega a los datos protegidos Acceso total al disco en la documentación del proveedor Sandbox del proveedor en macOS, predeterminado
Claude Code (CLI) Vía de la terminal; el anfitrión en segundo plano puede tener su propia entrada Solo la nota sobre sesiones en segundo plano Seatbelt; desactivado de forma predeterminada
Codex CLI Vía de la terminal No encontré nada Seatbelt; activado, workspace-write, red desactivada
ChatGPT para Mac (Codex, Work, Messages, Computer Use) Sus propias entradas “Requested macOS permissions” (permisos de macOS solicitados); Acceso total al disco solo lo nombra la prensa Sandbox y política de aprobación de Codex para los pasos de plugins y de shell; Messages y Computer Use también necesitan permisos de macOS
Claude para Mac Sus propias entradas No encontré nada No documentado para acciones locales en las páginas que leí
Hermes Agent Vía de la terminal Sí: concederlo a la terminal para iMessage Sin backend Seatbelt; local, “no isolation” (sin aislamiento), de forma predeterminada
OpenClaw El contexto de proceso del gateway Sí: obligatorio para el canal de iMessage Backends de sandbox para herramientas (Docker de forma predeterminada); desactivado de forma predeterminada
Gemini CLI Vía de la terminal No encontré nada Perfiles de Seatbelt; desactivado salvo que se active
Aider Vía de la terminal No encontré nada Nada documentado
Cursor (agente y CLI) Editor: la terminal de Cursor, por lo tanto Cursor; CLI: vía de la terminal No encontré nada Seatbelt; lecturas fuera del espacio de trabajo permitidas de forma predeterminada
Agentes de VS Code La terminal del editor, por lo tanto VS Code No encontré nada Sandbox de Agent Host (solo sesiones de Copilot Agent Host); desactivado de forma predeterminada

Las fuentes de cada celda están en las secciones 3 y 4.51166022561361146217481859 Las entradas de la segunda columna para los dos editores son mi inferencia a partir del caso del auxiliar que da el ingeniero de soporte, no afirmaciones de los proveedores. La tercera columna contiene el patrón. Los dos proveedores que nombran Acceso total al disco lo hacen para llegar a Messages, los datos cuya exposición, según Apple, alcanza también a “the people users are communicating with” (las personas con las que se comunican los usuarios); Apple no nombra ningún agente, y no afirmo que se refiriera a estos dos. Todos los demás agentes de línea de comandos llegan a los mismos datos, cuando llegan, sin que su documentación diga que la concesión de la terminal pasa a ellos, porque la concesión le pertenece a la terminal.

4. Lo que hacen los sandboxes de los proveedores y lo que no pueden hacer

Dos capas que no saben nada una de la otra

Todos los agentes de línea de comandos cuya documentación de sandbox para macOS leí lo construyen sobre Seatbelt, el sandbox de procesos del sistema, controlado mediante sandbox-exec: Claude Code (“sandboxing uses the built-in Seatbelt framework”, el sandbox usa el framework Seatbelt integrado), Codex (“On macOS, sandboxing works out of the box using the built-in Seatbelt framework”, en macOS el sandbox funciona de inmediato con el framework Seatbelt integrado), Gemini CLI (“Lightweight, built-in sandboxing using”, sandbox ligero e integrado que usa sandbox-exec) y Cursor (“Cursor uses Seatbelt through”, Cursor usa Seatbelt mediante sandbox-exec).15161718 Acceso total al disco es TCC. El ingeniero de soporte de Apple describe la relación: “App Sandbox and the mandatory access control system are both implemented using macOS’s sandboxing infrastructure,” (App Sandbox y el sistema de control de acceso obligatorio se implementan con la infraestructura de sandbox de macOS) pero el control de acceso obligatorio “is mandatory; it’s not an opt-in like the App Sandbox.” (es obligatorio; no es algo que se elige activar, como App Sandbox).20

Lo que eso significa en la práctica tiene dos mitades. Que un perfil de Seatbelt no puede darle a un proceso una concesión de TCC que su app responsable no tiene se desprende de la descripción del ingeniero de soporte de Apple, según la cual todos los procesos, “including those running as root,” (incluidos los que se ejecutan como root) están sujetos a MAC; no lo probé. La otra mitad la medí en mi Mac en la sección 5: ningún sandbox cambió la concesión de la terminal, y un perfil bloqueó la lectura protegida solo cuando denegaba esa ruta por sí mismo, por su cuenta y en un momento en que TCC habría permitido la lectura.205 Un agente en sandbox dentro de una terminal con Acceso total al disco todavía puede leer Messages si su perfil permite lecturas ahí, y la mayoría de los perfiles predeterminados permiten lecturas casi en todas partes.

Una trampa de nombres: el propio código fuente de Codex tiene una función llamada has_full_disk_read_access, y cuando devuelve true y no hay raíces ilegibles configuradas, el perfil de Seatbelt generado permite file-read* en todas partes; con esas raíces, construye una política de lectura que las excluye.63 Es el término de Codex para una política de lectura amplia de Seatbelt. No es el Acceso total al disco de Apple y no lo concede.

Claude Code (Anthropic)

  • Sandbox: desactivado de forma predeterminada. “The sandbox is off by default. To turn it on, run /sandbox in a session, as Get started shows, or set sandbox.enabled to true in a settings file.” (el sandbox está desactivado de forma predeterminada; para activarlo, ejecuta /sandbox en una sesión o pon sandbox.enabled en true en un archivo de configuración).15
  • Valores predeterminados cuando está activado. Las escrituras van a “The working directory, a per-user temp directory, and directories you’ve added.” (el directorio de trabajo, un directorio temporal por usuario y los directorios que agregaste). Las lecturas cubren “Most of the machine, including credential files.” (la mayor parte de la máquina, incluidos los archivos de credenciales). Para la red: “No direct route out” (sin salida directa); las conexiones pasan por un proxy local cuyos dominios permitidos “start empty.” (empiezan vacíos).15 El sandbox está construido sobre “the open source @anthropic-ai/sandbox-runtime package.” (el paquete de código abierto @anthropic-ai/sandbox-runtime).15
  • Dos modos de sandbox. Aprobación automática y permisos normales; “In both, the sandbox enforces the same filesystem and network restrictions; the difference is only in whether sandboxed commands are auto-approved or require explicit permission.” (en ambos, el sandbox aplica las mismas restricciones de sistema de archivos y de red; la única diferencia es si los comandos en sandbox se aprueban solos o requieren permiso explícito).15
  • Lo que queda fuera. Las herramientas integradas de archivos y web “follow permission rules instead. A denyRead entry doesn’t stop the Read tool,” (siguen en cambio las reglas de permisos; una entrada denyRead no detiene la herramienta Read) y “command hooks, local MCP servers, plugin monitors, LSP servers, and helper commands such as your status line command and apiKeyHelper run with your full access.” (los hooks de comandos, los servidores MCP locales, los monitores de plugins, los servidores LSP y los comandos auxiliares, como el de tu línea de estado y apiKeyHelper, se ejecutan con todo tu acceso).15 Los comandos que fallan pueden reintentarse fuera del sandbox salvo que allowUnsandboxedCommands sea false.15
  • Restringir las lecturas. sandbox.filesystem.denyRead y allowRead o, para “deny sandboxed commands read access to home directories and mounted volumes while keeping the working directories readable, set permissions.blockReadsOutsideWorkingDirectories.” (negar a los comandos en sandbox la lectura de los directorios de inicio y de los volúmenes montados sin dejar de poder leer los directorios de trabajo, configura permissions.blockReadsOutsideWorkingDirectories).15
  • Apple Events. “The sandbox blocks Apple Events by default,” (el sandbox bloquea Apple Events de forma predeterminada) y activar allowAppleEvents “removes code-execution isolation.” (elimina el aislamiento de la ejecución de código).15
  • Modos de permisos, un control aparte: default (con la etiqueta Manual), acceptEdits, plan, auto, dontAsk y bypassPermissions. Sobre el último, Anthropic dice “Only use this mode in isolated environments like containers or VMs where Claude Code can’t cause damage.” (usa este modo solo en entornos aislados, como contenedores o máquinas virtuales, donde Claude Code no pueda causar daños).53

La guía de Claude Code cubre los archivos de configuración donde viven estas claves.

Codex CLI (OpenAI)

  • Sandbox: activado de forma predeterminada. “The default permissions mode applies sandboxing automatically,” (el modo de permisos predeterminado aplica el sandbox automáticamente) y “The sandbox applies to spawned commands, not just to built-in file operations.” (el sandbox se aplica a los comandos que se lanzan, no solo a las operaciones de archivos integradas).16
  • Tres modos. read-only: “The agent can inspect files, but it can’t edit files or run commands without approval.” (el agente puede inspeccionar archivos, pero no puede editarlos ni ejecutar comandos sin aprobación). workspace-write: el agente puede “read files, edit within the workspace, and run routine local commands inside that boundary. This is the default low-friction mode for local work.” (leer archivos, editar dentro del espacio de trabajo y ejecutar comandos locales habituales dentro de ese límite; es el modo predeterminado de baja fricción para el trabajo local). danger-full-access: “The agent runs without sandbox restrictions.” (el agente se ejecuta sin restricciones de sandbox).16
  • Red desactivada de forma predeterminada. “By default, the agent runs with network access turned off,” (de forma predeterminada, el agente se ejecuta con el acceso a la red desactivado) y workspace-write “keeps network access turned off unless you enable it in your configuration.” (mantiene el acceso a la red desactivado a menos que lo actives en tu configuración).60
  • Acceso total. OpenAI lo define como sandbox_mode = "danger-full-access" junto con approval_policy = "never", y el menú de la app de escritorio lo describe como acceso sin restricciones a “the internet and any file on your computer.” (internet y cualquier archivo de tu computadora).16
  • La documentación no detalla las lecturas. La única afirmación de OpenAI sobre el alcance es que el sandbox “limits what it can touch (typically to the current workspace).” (limita lo que puede tocar, normalmente al espacio de trabajo actual).60 No da el alcance de lectura de read-only ni de workspace-write, y en mi Mac la ejecución 2 (read-only) y la ejecución 2c (mi configuración, sin modo definido) leyeron un archivo muy alejado del espacio de trabajo, uno que necesita Acceso total al disco.5 El código fuente muestra por qué: la política base de Seatbelt empieza con (deny default) y anota que “child processes inherit the policy of their parent,” (los procesos hijos heredan la política de su padre) y, con acceso de lectura total y sin raíces ilegibles, el perfil añade (allow file-read*).63 Hay formas de restringir: los perfiles de permisos aceptan "read", "write" o "deny" por ruta, y los administradores tienen permissions.filesystem.deny_read en requirements.toml, “Admin-enforced filesystem read denials” (denegaciones de lectura del sistema de archivos impuestas por el administrador); OpenAI dice que “users cannot weaken them with local config.” (los usuarios no pueden debilitarlas con su configuración local).21

La guía de Codex cubre a fondo los perfiles y las políticas de aprobación.

Hermes Agent (Nous Research)

  • Sin sandbox de macOS; siete backends. “Hermes supports seven terminal backends” (Hermes admite siete backends de terminal): local, docker, ssh, modal, daytona, vercel_sandbox y singularity.61
  • Predeterminado: local, sin aislamiento. “The default. Commands run directly on your machine with no isolation,” (el predeterminado; los comandos se ejecutan directamente en tu máquina sin aislamiento) y “By default, local tool subprocesses keep your real OS-user HOME.” (de forma predeterminada, los subprocesos locales de las herramientas conservan el HOME real de tu usuario del sistema).61
  • Las reglas de comandos no son un sandbox. “Deny rules are a shell-command policy, not a complete shell interpreter or an OS capability sandbox.” (las reglas de denegación son una política de comandos de shell, no un intérprete de shell completo ni un sandbox de capacidades del sistema operativo).64
  • Los contenedores son el límite. “For production gateway deployments, use docker, modal, daytona, or vercel_sandbox backend to isolate agent commands from your host system.” (para despliegues de gateway en producción, usa el backend docker, modal, daytona o vercel_sandbox para aislar los comandos del agente de tu sistema anfitrión).64

Con el backend predeterminado, un agente de Hermes lee todo lo que puede leer su terminal, y su skill de iMessage incluida te pide que le des Acceso total al disco a esa terminal.13

OpenClaw

  • Sandbox: desactivado de forma predeterminada, y solo para herramientas. “Sandboxing is off by default,” (el sandbox está desactivado de forma predeterminada) y “The Gateway process always stays on the host; only tool execution moves into the sandbox when enabled.” (el proceso del Gateway siempre se queda en el anfitrión; solo la ejecución de herramientas pasa al sandbox cuando está activado). OpenClaw lo dice con franqueza: “This is not a perfect security boundary, but it materially limits filesystem and process access when the model does something dumb.” (no es un límite de seguridad perfecto, pero limita de forma sustancial el acceso al sistema de archivos y a los procesos cuando el modelo hace una tontería).62
  • Modos. agents.defaults.sandbox.mode acepta off (el predeterminado), non-main o all; el backend predeterminado es docker, con podman, ssh, openshell y crabbox como alternativas; la red de Docker es none de forma predeterminada.65
  • Acceso al espacio de trabajo. none (el predeterminado), ro o rw.66
  • Vía de escape. tools.elevated es, en palabras de OpenClaw, “an explicit escape hatch” (una vía de escape explícita) que ejecuta exec fuera del sandbox.62

El Acceso total al disco del canal de iMessage le pertenece al contexto de proceso del gateway, que nunca pasa al sandbox.1462

Los demás, en breve

  • Gemini CLI. Desactivado salvo que se active con -s, una variable de entorno o un ajuste. En macOS, el perfil de Seatbelt predeterminado, permissive-open, “denies operations by default; confines writes to the project directory while allowing broad file reads and network access” (deniega operaciones de forma predeterminada; confina las escrituras al directorio del proyecto y permite lecturas amplias de archivos y el acceso a la red); el propio archivo del perfil dice (allow file-read*). strict-open y strict-proxied añaden restricciones de lectura.17
  • Cursor. Seatbelt para “the full subprocess tree” (todo el árbol de subprocesos); la red, “Blocked by default” (bloqueada de forma predeterminada); pero Read Access tiene System como valor predeterminado: “The agent can read files outside the workspace without approval. This is the default.” (el agente puede leer archivos fuera del espacio de trabajo sin aprobación; es el valor predeterminado). El propio ajuste Read Access requiere Cursor 3.23 o posterior.18
  • VS Code. chat.agent.sandbox.enabled, que se aplica solo a las sesiones de Copilot Agent Host, acepta off u on y tiene off como valor predeterminado, y Microsoft declara el límite sin rodeos: “Sandboxing is not a virtual machine or user-account boundary, and it does not replace endpoint security.” (el sandbox no es un límite de máquina virtual ni de cuenta de usuario, y no reemplaza la seguridad de endpoints).59
  • Aider. No hay sandbox documentado.48

La capa Seatbelt también ha tenido agujeros

Investigadores de Accomplish publicaron cinco escapes de sandbox contra herramientas de agentes, en cuatro informes fechados entre el 23 de julio y el 15 de septiembre de 2026. Cuatro se corrigieron antes de la publicación; el quinto se reportó a Anthropic y se cerró como “Informative” (informativo). Contra Claude Code, con el sandbox activado y el modo de permisos más estricto, un comando de un repositorio “ran on our Mac anyway, outside the sandbox, with no permission prompt” (se ejecutó en nuestra Mac de todos modos, fuera del sandbox, sin aviso de permisos); Anthropic lo corrigió en 2.1.247.67 Contra la CLI de Cursor, la misma causa raíz: “the Seatbelt profile wraps only the shell tool, while the harness’s own internal git runs unsandboxed and honors repository-supplied core.fsmonitor hooks.” (el perfil de Seatbelt envuelve solo la herramienta de shell, mientras que el git interno del propio harness se ejecuta sin sandbox y respeta los hooks core.fsmonitor que aporta el repositorio).68 Contra Codex, dos escapes reportados el 12 de agosto de 2026, “Both were fixed inside of eight days” (ambos se corrigieron en menos de ocho días); en uno, “launchd starts the application unsandboxed, outside Codex’s process tree.” (launchd inicia la aplicación sin sandbox, fuera del árbol de procesos de Codex).69 Contra la máquina virtual de Claude Cowork, un escape a un montaje de lectura y escritura del anfitrión, desde el cual “reads and writes the host Mac’s filesystem directly, as the logged-in desktop user.” (lee y escribe directamente en el sistema de archivos de la Mac anfitriona, como el usuario con sesión iniciada).70 Ninguno de los cuatro informes lee datos protegidos por Acceso total al disco. Mi lectura, no una afirmación de los investigadores: un proceso que escapa de Seatbelt pero se queda en la cadena de lanzamiento de la terminal conserva las concesiones de TCC de la terminal, así que, en una Mac cuya terminal tiene Acceso total al disco, ese tipo de escape también llega a los datos protegidos por Acceso total al disco. No encontré ningún análisis posterior, aviso de seguridad ni informe de investigadores sobre un agente que leyera Mail, Messages o datos del navegador mediante una concesión de Acceso total al disco en contra de la voluntad del usuario.

5. En mi Mac: qué tiene Acceso total al disco y cómo lo sé

Todo lo de esta sección es una medición mía en mi propia Mac, hecha el 11 de octubre de 2026 desde una sesión de Claude Code: macOS 27.0, build 26A428, con System Integrity Protection activado. Todos los comandos menos dos fueron de solo lectura: una prueba envió un trabajo de launchd, que escribió su salida en dos archivos, y luego quitó el trabajo; otra instaló sandbox-runtime 0.0.79 de Anthropic con npx -y para ejecutarlo, con dos archivos de configuración provisionales escritos para sus ejecuciones. Las sondas de escritura dentro de los sandboxes fueron intentos, y los sandboxes las rechazaron; las sondas de red fueron intentos que fallaron, por una causa que el registro no establece. No cambié ningún ajuste ni concedí o revoqué nada.195 Describo lo que encontré con nombres de apps y servicios. Cuando la evidencia muestra que un programa está en la lista de Acceso total al disco, digo que figura en la lista; digo que tiene acceso solo cuando una lectura muestra que el acceso funciona.

La cadena de lanzamiento del agente

El shell en el que Claude Code ejecuta comandos es un zsh, iniciado por claude, iniciado por mi shell de inicio de sesión, iniciado por login, iniciado por Ghostty, la app de terminal; el entorno informa TERM_PROGRAM como ghostty.19 Según la regla del ingeniero de soporte de Apple, el código responsable de todo lo que hay en esa cadena es Ghostty.3

Cómo leer la lista

En lo que revisé, macOS no documenta ningún comando que liste quién tiene Acceso total al disco: tccutil tiene exactamente un comando, reset.34 La lista vive en las bases de datos de TCC. Desde el shell del agente, la base de datos por usuario no se pudo abrir, y su carpeta no apareció en un listado de la carpeta Application Support del usuario. No sé por qué. Las notas de la versión de macOS 27 dicen “Apps can no longer access the local TCC database directly,” (las apps ya no pueden acceder directamente a la base de datos local de TCC) lo que podría ser el motivo, pero la nota no dice a qué base de datos se refiere, así que lo dejo sin explicar.1923

La base de datos de todo el sistema sí se abrió. Seleccioné solo dos columnas, el servicio y el cliente, filtré por el servicio de Acceso total al disco y nunca leí la columna que registra si cada interruptor está activado. Devolvió 75 filas.19 Poder abrirla ya es en sí una evidencia. En 2022, Jeff Johnson mostró que Terminal con Acceso total al disco “can read or write any restricted files, including the TCC database itself” (puede leer o escribir cualquier archivo restringido, incluida la propia base de datos de TCC); lo mostró con la base de datos por usuario, y la prueba de control de más abajo muestra lo mismo para la base de datos del sistema en esta Mac.465 También significa que en macOS 27.0, pese a la nota de la versión citada arriba, la base de datos de TCC del sistema todavía podía leerla directamente un proceso cuya cadena de lanzamiento tenía la concesión.1923

Las 75 filas de Acceso total al disco de la Mac del autor, un cuadrado por fila, agrupadas por tipo: 30 binarios de Claude Code, cada uno de una versión distinta, el más antiguo 2.1.177 y el más reciente 2.1.296; 25 apps, auxiliares y actualizadores de terceros; 5 intérpretes, node y cuatro versiones de python3; 5 compilaciones de desarrollo del propio autor; 3 apps y servicios de Apple más; 3 terminales, Terminal, iTerm2 y Ghostty; 3 anfitriones de agentes, ChatGPT, Cursor y Xcode; y 1 entrada del servidor SSH para Sesión remota. En azul, las 42 filas bajo las que o a través de las que puede ejecutarse un agente; en gris, las otras 33

Clasifiqué las 75 filas con una regla por tipo, aplicadas en orden: los tres bundle IDs de terminales; cualquier ruta de cliente a un binario de Claude Code numerado por versión; los bundle IDs de ChatGPT, Cursor y Xcode; cualquier ruta de intérprete node o python3.x; el cliente del servidor SSH; cualquier cliente que empiece por com.apple. o /System/; mis propias compilaciones de desarrollo; y todo lo demás.1947 Lo que hay en cada grupo:

  • Terminales (3). Terminal, iTerm2 y Ghostty figuran en la lista.
  • Claude Code (30). Treinta filas separadas, cada una con la ruta a una versión del binario de Claude Code, de 2.1.177 a 2.1.296, la versión que ejecutaba esta sesión.1947 Anthropic dice que, con el instalador nativo, la entrada del anfitrión de sesiones en segundo plano “appears as Claude Code and the grant persists across updates.” (aparece como Claude Code y la concesión se mantiene entre actualizaciones).51 La base de datos, en esta Mac, guarda una fila por versión. No comprobé cómo las muestra Ajustes del Sistema ni si cada interruptor está activado. Mi lectura, sin verificar: son las solicitudes del anfitrión de sesiones en segundo plano, una por actualización.
  • Anfitriones de agentes (3). La app de ChatGPT (bundle ID com.openai.codex), Cursor y Xcode.1947 Xcode está aquí porque Xcode 27 aloja agentes: sus notas de la versión dicen “Agents in Xcode can now be extended with plugins that contain skills, MCP servers, and ACP agent configurations” (los agentes de Xcode ahora pueden ampliarse con plugins que contienen skills, servidores MCP y configuraciones de agentes ACP) y añaden compatibilidad con el Agent Client Protocol.24 No está documentado si TCC le atribuye a Xcode los procesos que lanzan esos agentes, y Xcode puede no comportarse como una terminal. En 2024, al ingeniero de soporte de Apple le preguntaron por qué la concesión propia de una herramienta solo se respetaba cuando la ejecutaba Xcode, y respondió que “Xcode runs the tool in a way that makes it clear to the system that Xcode is not the responsible code for this process” (Xcode ejecuta la herramienta de una forma que le deja claro al sistema que Xcode no es el código responsable de ese proceso); al examinar la cadena bajo el depurador de Xcode, escribió “I expect that one of these is breaking TCC’s responsible code search” (supongo que uno de estos rompe la búsqueda del código responsable de TCC) y agregó: “I suspect that’s deliberate.” (sospecho que es intencional).3 Así que Xcode figura en la lista y aloja agentes, pero para las herramientas que ejecuta, el ingeniero de Apple describe lo contrario de la regla de la terminal.
  • Intérpretes (5). Un node de Homebrew y cuatro intérpretes de Python de Homebrew. El ingeniero de soporte de Apple advierte justamente contra esto: darle al intérprete el privilegio, “then any script could do that.” (y entonces cualquier script podría hacerlo).20 OpenClaw da la misma advertencia sobre node para Accesibilidad: tratar esa entrada “as broad permission for that Node runtime, not as permission for one npm package.” (como un permiso amplio para ese runtime de Node, no como un permiso para un solo paquete de npm).50
  • SSH (1). sshd-keygen-wrapper, el cliente del lado del servidor SSH, que entiendo que es la entrada que controla “Allow full disk access for remote users” (permitir acceso total al disco a los usuarios remotos).193
  • Otras de Apple (3), mis propias compilaciones (5), todo lo demás (25). El último grupo incluye utilidades de disco y de limpieza, una suite de seguridad, clientes de VPN y de almacenamiento en la nube, actualizadores, software de impresoras, juegos, una app de videoconferencias y una app de mensajería. Algunas son utilidades de disco, el otro tipo de software que nombra Apple; ninguna de las 75 es una app de copia de seguridad.

Cuarenta y dos de las 75 filas son algo bajo lo que o a través de lo que puede ejecutarse un agente. Ninguna es una app de copia de seguridad.

Siete ejecuciones: el sandbox y la concesión son capas separadas

Para ver qué capa decide, ejecuté una sola sonda, la lectura de una fila de esa base de datos del sistema, en distintas condiciones, más una sonda de escritura dentro de ambos sandboxes y una sonda de red dentro de sandbox-runtime.5

Una tabla de siete ejecuciones en la Mac del autor, macOS 27.0, 11 de octubre de 2026. Ejecución 1, el shell del agente en Ghostty sin sandbox: la lectura de la base de datos de TCC devolvió la fila. Ejecución 2, dentro del sandbox Seatbelt de solo lectura de Codex: devolvió la fila. Ejecución 2b, el mismo sandbox, una escritura fuera del espacio de trabajo: rechazada por Seatbelt. Ejecución 2c, Codex con la configuración del autor: devolvió la fila. Ejecución 3a, sandbox-runtime de Anthropic sin denegación de lectura: devolvió la fila. Ejecución 3b, sandbox-runtime denegando la lectura de la carpeta de TCC: rechazada por Seatbelt. Ejecución 4, la misma lectura desde un trabajo de launchd sin Ghostty en su cadena de lanzamiento: rechazada por TCC

  1. El shell del agente, sin sandbox. La lectura devolvió la fila.
  2. Dentro del sandbox Seatbelt de Codex CLI 0.154.0, modo read-only. La lectura devolvió la fila. El mismo sandbox rechazó un touch fuera del espacio de trabajo con “Operation not permitted” (ejecución 2b), así que el sandbox funcionaba; simplemente no detiene las lecturas ahí. Con mi propia configuración de Codex, que no define ningún modo de sandbox y activa el acceso a la red, la lectura también devolvió la fila (ejecución 2c).
  3. Dentro de sandbox-runtime 0.0.79 de Anthropic, el paquete sobre el que está construido el sandbox de Claude Code, sin denegación de lectura (ejecución 3a): la lectura devolvió la fila, mientras que la escritura fuera de la carpeta permitida fue rechazada y una solicitud de red falló (curl con código de salida 56; el registro no muestra por qué). Con denyRead apuntando a la carpeta de TCC (ejecución 3b), la lectura falló con “authorization denied”.
  4. El control. La misma lectura con sqlite3, enviada como trabajo de launchd, de modo que ni Ghostty ni Claude Code estuvieran en ningún punto de su cadena de lanzamiento: “authorization denied”.5

El control es lo que da sentido al resto. El archivo de la base de datos pertenece a root y, por su modo, cualquiera puede leerlo (-rw-r--r--), así que no fueron los permisos de archivo los que rechazaron la ejecución 4; fue TCC.195 El mismo binario, el mismo archivo, el mismo usuario: funcionó desde el shell del agente y falló fuera de él. Lo que tenía el shell del agente lo tenía por su cadena de lanzamiento. La regla del ingeniero de soporte señala a la terminal como el código responsable de esa cadena.3 Hay una salvedad que no puedo eliminar con estos datos: la cadena también contiene un proceso claude, y los binarios de Claude Code también figuran en la lista; en las ejecuciones 3a y 3b, un proceso node ejecutó el runtime del sandbox, y también figura un node de Homebrew, aunque no quedó registrado qué node usó npx. Mi medición muestra que el acceso viene de la cadena, y la regla del ingeniero de soporte dice que viene de la terminal; no demuestra por separado que la fila de Ghostty, y no una de Claude Code o de node, sea la que usó TCC. El ingeniero de soporte de Apple dice que el algoritmo no está documentado.3

Las ejecuciones 3b y 4 imprimen el mismo error, aunque las rechazaron capas distintas. Quien lea “authorization denied” en la salida de un agente no puede saber por el mensaje si dijo que no el sandbox o TCC.5

Pruébalo en tu Mac

Desde el shell que usa tu agente, esto imprime la lista de Acceso total al disco cuando la cadena de lanzamiento de ese shell tiene Acceso total al disco. Falla con “authorization denied” cuando la cadena no lo tiene, o cuando una regla de sandbox deniega la carpeta, como en la ejecución 3b. Lee dos columnas y no cambia nada. Los resultados son filas, no estados de los interruptores.

# Run from the same terminal (or editor terminal) you run agents in.
sqlite3 -readonly "/Library/Application Support/com.apple.TCC/TCC.db" \
  "SELECT service, client FROM access WHERE service='kTCCServiceSystemPolicyAllFiles';"
echo "exit=$?"

Esta es la consulta que ejecuté en macOS 27.0, palabra por palabra.19 Para ver a qué app le atribuyó TCC un acceso, la guía de implementación de Apple da un flujo de registro, log stream --debug --predicate 'subsystem == "com.apple.TCC" AND eventMessage BEGINSWITH "AttributionChain"', ofrecido “to try to identify” (para intentar identificar) en tiempo real la app o el binario responsable.31 No lo ejecuté para estas mediciones, y por eso la sección 5 no puede decir si decidió la fila de Ghostty u otra de la cadena. La consulta a la base de datos de arriba podría dejar de funcionar en una versión futura. Apple no documenta ni el archivo ni su esquema, y las notas de macOS 27 ya dicen que las apps “can no longer access the local TCC database directly.” (ya no pueden acceder directamente a la base de datos local de TCC).23

6. Qué hacer ahora

Hasta mis lecturas del 11 de octubre, no encontré ningún mecanismo publicado ni ninguna nota de la versión sobre los nuevos controles, así que nada de esto es una migración. Es lo que yo haría hoy en cualquier Mac que ejecute agentes, con la fuente de cada paso y lo que cuesta. Todavía no lo hice todo en mi propia Mac; la sección 5 es la foto del antes.

1. Mira quién tiene Acceso total al disco. Abre Ajustes del Sistema > Privacidad y seguridad > Acceso total al disco y lee la lista.4 Busca terminales, editores, apps de agentes, binarios de agentes, intérpretes y cualquier cosa que no reconozcas. Desde un shell, la consulta de la sección 5 imprime la lista si ese shell ya tiene el acceso, lo que de paso sirve para comprobar si el shell de tu agente lo tiene; un fallo también puede deberse a una regla de sandbox que deniega la carpeta, como en la ejecución 3b.5 Costo: ninguno. Recuerda que una app que figura en la lista no necesariamente está activada.

2. Quítaselo a la terminal en la que ejecutas agentes. Este es el paso que más cambia las cosas. El código responsable de una herramienta de línea de comandos es la terminal, así que la concesión de la terminal es la concesión del agente.32 Si necesitas Acceso total al disco para tareas de copia de seguridad o de administración desde la línea de comandos, que es para lo que lo documentan tmutil y fdesetup, ten una segunda app de terminal con la concesión y nunca inicies un agente en ella.4344 (Esta última parte es sugerencia mía, no de Apple. Jeff Johnson demostró con la Terminal de Apple que una app sin sandbox puede tomar prestada su concesión abriendo un script en ella; según mi lectura, lo mismo podría aplicarse a una segunda app de terminal que abra scripts.46) Costo: las ubicaciones protegidas empiezan a fallar con “Operation not permitted” y vuelven los avisos de Archivos y carpetas. El control por carpeta de Apple cubre “Desktop, Documents, Downloads, network volumes, and removable volumes.” (Escritorio, Documentos, Descargas, volúmenes de red y volúmenes extraíbles).10 Anthropic documenta el mismo fallo para las sesiones en segundo plano de Claude Code y su solución, una concesión de Archivos y carpetas para esa entrada.51 OpenClaw sugiere mantener los archivos dentro de su espacio de trabajo para evitar concesiones por carpeta.50

3. Revisa las entradas propias del agente. El anfitrión en segundo plano de Claude Code solicita acceso “separately from your terminal” (por separado de tu terminal) y puede tener su propia entrada de Acceso total al disco.51 En mi Mac figuran 30 binarios de Claude Code numerados por versión, que leo, sin verificarlo, como las entradas de ese anfitrión.19 Quita las que no tenías intención de conceder y, donde una sesión en segundo plano necesite una carpeta, concede Archivos y carpetas en su lugar. Las apps de agentes también tienen filas propias; en mi Mac figuran las apps ChatGPT, Cursor y Xcode.19 Costo: una sesión en segundo plano que lee carpetas protegidas falla hasta que concedes el acceso más acotado.

4. Nunca se lo concedas a un intérprete. El ingeniero de soporte de Apple: “if you have a script that needs to manipulate files on your desktop, you wouldn’t want to give the interpreter that privilege because then any script could do that.” (si tienes un script que necesita manipular archivos de tu escritorio, no querrías darle ese privilegio al intérprete, porque entonces cualquier script podría hacerlo). Su solución es “package your script as a standalone program that MAC can use for its tracking.” (empaquetar tu script como un programa independiente que MAC pueda usar para su seguimiento).20 La fila propia de un intérprete cuenta allí donde el intérprete es el código responsable, por ejemplo un script ejecutado como trabajo de launchd sin ninguna app asociada; entonces todo script de Python o de Node lanzado así con ese intérprete, servidores MCP incluidos, obtiene la concesión completa.32 Costo: para un script que de verdad necesita el acceso, su “easiest solution” (solución más sencilla) es empaquetarlo como un programa independiente que MAC pueda rastrear, algo que, según él, AppleScript facilita y los scripts de shell no.20

5. Activa el sandbox del proveedor y deniega las lecturas que no necesitas. Los valores predeterminados leen de forma amplia, así que activar el sandbox es necesario pero no suficiente.

  • Claude Code: sandbox.enabled, luego permissions.blockReadsOutsideWorkingDirectories (o reglas sandbox.filesystem.denyRead), y "allowUnsandboxedCommands": false para eliminar el reintento fuera del sandbox.15 Recuerda que la herramienta Read, los hooks y los servidores MCP quedan fuera de él.15 Costo: las herramientas que necesitan otras rutas u otros hosts fallan hasta que las permites, y cada entrada de excludedCommands vuelve a abrir el hueco.15
  • Codex: quédate en workspace-write o read-only; evita danger-full-access; añade reglas de lectura "deny" a un perfil de permisos o, para un equipo, define permissions.filesystem.deny_read en requirements.toml, el archivo impuesto por el administrador, para que los usuarios no puedan debilitarlo.1621 Costo: los comandos que necesitan la red requieren aprobación o network_access.60
  • Gemini CLI: ejecútalo con -s y SEATBELT_PROFILE=strict-open o strict-proxied, los dos perfiles que la documentación describe como restrictivos para las lecturas.17 Costo: esos perfiles restringen tanto las lecturas como las escrituras, así que las herramientas que leen fuera del proyecto fallan con ellos hasta que eliges un perfil más permisivo.
  • Cursor: cambia Read Access de System a Workspace; el ajuste requiere Cursor 3.23 o posterior, y el Cursor de mi Mac es la 3.19.7.1847 Costo: las lecturas de archivos fuera del espacio de trabajo piden confirmación primero, y los comandos en sandbox solo ven el espacio de trabajo, tu Read Allowlist y las rutas del sistema que necesitan las herramientas comunes.18
  • VS Code: activa chat.agent.sandbox.enabled; cubre solo las sesiones de Copilot Agent Host, “not the Local chat harness or the custom terminal tool override.” (no el harness de chat local ni la sustitución personalizada de la herramienta de terminal).59 Costo: los comandos que necesitan rutas o herramientas fuera de sus valores predeterminados tienen que permitirse, e incluso así Microsoft dice que “not a virtual machine or user-account boundary” (no es un límite de máquina virtual ni de cuenta de usuario) y deja abierta la red saliente de forma predeterminada, así que estrecha el hueco en lugar de cerrarlo.59
  • Hermes Agent y OpenClaw: usa un backend de contenedores. Hermes recomienda uno para los gateways en producción; el sandbox de OpenClaw está desactivado de forma predeterminada y, en sus palabras, es “not a perfect security boundary” (no es un límite de seguridad perfecto), aunque dice que el sandbox “materially limits filesystem and process access.” (limita de forma sustancial el acceso al sistema de archivos y a los procesos).6462 Costo: los comandos que se ejecutan en el contenedor pierden el acceso sin restricciones al anfitrión (Hermes describe los backends como una forma de aislar “agent commands from your host system”, los comandos del agente de tu sistema anfitrión), pero los archivos montados o sincronizados siguen al alcance: los backends Docker y Singularity de Hermes usan bind mounts, una “live host filesystem view” (vista en vivo del sistema de archivos del anfitrión), su ajuste docker_volumes comparte directorios del anfitrión, y el acceso al espacio de trabajo de OpenClaw puede ser ro o rw además del predeterminado none.646166 El costo es proporcionar de forma explícita los archivos que necesita una tarea y auditar esos montajes. Lo que no cubre: el gateway de OpenClaw se queda en el anfitrión, así que un canal de iMessage configurado conserva el Acceso total al disco del contexto de proceso del gateway; meter las herramientas en contenedores no elimina esa exposición.6214 La skill de iMessage de Hermes lista requisitos del anfitrión (Messages con sesión iniciada, imsg instalado, Acceso total al disco para la terminal); no encontré ninguna página de Hermes sobre cómo se comporta la skill con un backend de contenedores.13

El límite: en mi Mac, ningún sandbox cambió la concesión de Acceso total al disco; un sandbox bloqueó la lectura protegida solo cuando su perfil denegaba esa ruta por su nombre, y las capas Seatbelt de Claude Code, de la CLI de Cursor y de Codex han tenido escapes publicados, ya corregidos.5676869

6. Pon un agente que lee Messages en su propio usuario de macOS, o prescinde de él. El propio consejo de despliegue de OpenClaw para su bot de iMessage es “Use a dedicated Apple ID and macOS user so bot traffic is isolated from your personal Messages profile.” (usa un Apple ID y un usuario de macOS dedicados para que el tráfico del bot quede aislado de tu perfil personal de Messages).71 Haz que ese usuario sea una cuenta Estándar: Apple dice que los usuarios estándar “can install apps and change their own settings, but can’t add other users or change other users’ settings.” (pueden instalar apps y cambiar sus propios ajustes, pero no pueden agregar otros usuarios ni cambiar los ajustes de otros usuarios).72 En mi Mac, mis carpetas Library, Mail y Messages de usuario solo las puedo leer yo según sus modos de archivo, así que un proceso que se ejecute como otro usuario estándar queda rechazado por los permisos de archivo ordinarios antes de que se consulte a TCC; es mi inferencia a partir de los modos, no una prueba que haya hecho.19 Dos salvedades: el ingeniero de soporte de Apple dice que Acceso total al disco es “system wide” (de todo el sistema), no por usuario, así que una app que lo tiene concedido en una cuenta lo tiene en todas; y la guía de Apple dice que el ajuste alcanza “certain administrative settings for all users on this Mac.” (ciertos ajustes administrativos de todos los usuarios de esta Mac).204 Costo: un segundo inicio de sesión, un segundo llavero y otro conjunto de ajustes, y un agente que no ve los archivos de tu cuenta principal a menos que los compartas.

7. Desactiva “Allow full disk access for remote users” (permitir acceso total al disco a los usuarios remotos) si no lo necesitas. Si manejas agentes por SSH, el servidor SSH es el código responsable y este ajuste es su concesión.3 En mi Mac, su cliente figura en la lista.19 Costo: los shells remotos pierden el acceso a las ubicaciones protegidas.

8. Conserva la aprobación por acción para todo lo que hable en tu nombre. OpenAI: “Persistent approval removes your final chance to review a message before ChatGPT sends it as you. Use it only when you accept that risk.” (la aprobación persistente elimina tu última oportunidad de revisar un mensaje antes de que ChatGPT lo envíe en tu nombre; úsala solo si aceptas ese riesgo).22 Anthropic: reserva bypassPermissions para “isolated environments like containers or VMs.” (entornos aislados como contenedores o máquinas virtuales).53 Costo: más clics, que es justamente la idea.

9. Si administras Macs, audita lo que conceden tus perfiles. Un perfil Privacy Preferences Policy Control puede conceder SystemPolicyAllFiles a cualquier bundle ID o ruta, una terminal incluida, y “The user isn’t prompted and can’t change this value.” (no se le pregunta al usuario y este no puede cambiar el valor).237 En macOS 27, la parte por app de ese payload está marcada como obsoleta, y el reemplazo declarativo no tiene ninguna clave de Acceso total al disco.3738 No encontré ninguna forma documentada por Apple de que MDM informe del Acceso total al disco que un usuario concedió a mano. Costo: los perfiles que encuentres pueden ser imprescindibles para un agente de copia de seguridad o de seguridad; el propio ejemplo de Apple concede acceso a la app de una organización “without prompting the user.” (sin preguntarle al usuario).31

La guía de loop engineering cubre la ejecución de agentes sin supervisión; cada paso de arriba se aplica con más fuerza cuando no hay nadie frente al teclado para leer un aviso.

7. Qué podría cambiar: una lectura, con condiciones

Todo lo de esta sección es mi lectura de las palabras de Apple y de los cambios que Apple ya publicó junto a ellas. Apple no anunció ningún mecanismo, y yo no pronostico ninguno. Cada forma de abajo es algo que el texto del 2 de octubre permite, la evidencia que la hace más o menos plausible y la condición bajo la cual afectaría a los agentes.

Un flujo de concesión más exigente. Los verbos del propio texto se refieren a conceder: los usuarios “who genuinely wish to grant an app this extraordinary level of access can only do so with very explicit user action,” (que de verdad quieran conceder a una app este nivel extraordinario de acceso solo podrán hacerlo mediante una acción muy explícita) y deberían “clearly understand these risks before granting such access.” (entender con claridad esos riesgos antes de conceder ese acceso).1 Apple ya publicó antes un consentimiento con explicación: los ajustes declarativos de apps de macOS 27 les muestran a los usuarios un aviso de consentimiento con la justificación obligatoria de una organización antes de aplicar valores predeterminados de privacidad.3938 Condición: si el nuevo control se aplica solo a las concesiones nuevas, una terminal que ya tiene Acceso total al disco lo conserva, y los agentes que se ejecutan en ella no se ven afectados hasta que el usuario lo restablezca. Si se aplica a las concesiones existentes, toda terminal que tenga Acceso total al disco también se ve afectada. La noticia no dice ni una cosa ni la otra.

Un alcance más estrecho. Apple podría dejar el interruptor tal como está y sacar datos de debajo de él. Apple ya redibujó estas líneas antes: Catalina añadió la Papelera a lo que necesita Acceso total al disco, macOS 14 y 15 pusieron los contenedores de apps y los contenedores de grupos detrás de protecciones propias, y macOS 27 deniega de forma predeterminada los contenedores de otros equipos y permite que XProtect restrinja “app data that is commonly targeted by malicious software.” (los datos de apps que el malware suele atacar).112023 Condición: si Apple pone los datos de Mail, Messages o Safari detrás de un control propio que Acceso total al disco no cubra, la vía de la terminal deja de llegar a ellos incluso donde la terminal conserva Acceso total al disco. La noticia no menciona ninguna restricción; su expresión “this extraordinary level of access” (este nivel extraordinario de acceso) describe la concesión tal como es.

Un trato distinto para las concesiones heredadas. El hueco entre “grant an app” (conceder a una app) y un agente que es hijo de una app es el tema de este artículo, y Apple tiene dos piezas ya colocadas que podrían abordarlo. Xcode 27 ya tiene “a new security layer that monitors and controls filesystem access by coding agents and any processes they spawn,” (una nueva capa de seguridad que supervisa y controla el acceso al sistema de archivos de los agentes de programación y de cualquier proceso que lancen) y Endpoint Security de macOS 27 añade es_new_descendants_client, que observa solo “the entire subtree rooted at the calling process” (todo el subárbol cuya raíz es el proceso que llama) y que, según su encabezado, “Does NOT require TCC approval,” (NO requiere la aprobación de TCC) aunque, igual que es_new_client, requiere el entitlement com.apple.developer.endpoint-security.client.2425 El ingeniero de soporte de Apple añadió este último a su publicación sobre permisos de archivos el 18 de septiembre de 2026.20 Ninguno de los dos textos se relaciona con Acceso total al disco. Condición, como lectura mía: un control sobre “an app” (una app) recae en la terminal, y cada agente que se ejecuta en ella sigue heredando el resultado, a menos que Apple cambie la atribución del código responsable, que su ingeniero llama no documentada y “subject to change” (sujeta a cambios), o vincule el nuevo control a algo como el cliente de descendientes. Ninguno de los dos textos dice que lo hará.

Las Mac administradas. MDM puede conceder hoy Acceso total al disco sin preguntarle al usuario.37 En macOS 27, la parte por app de ese payload está obsoleta y su reemplazo declarativo no tiene ninguna clave de Acceso total al disco.3738 Condición: si la “very explicit user action” (acción muy explícita del usuario) se aplica a las concesiones por MDM, una concesión silenciosa mediante un perfil dejaría de ser posible; si no, las Mac administradas conservan la vía silenciosa. Apple no dijo nada sobre ninguno de los dos puntos, y no vinculó la obsolescencia de macOS 27 con la noticia del 2 de octubre.

Cuándo. La noticia dice “Going forward” (en adelante). Las notas de la beta 3 de macOS 27.2, para una beta fechada tres días después, no traen nada al respecto, y no encontré ninguna entrada de macOS 27.1 en el feed de versiones ni en el índice de notas de la versión del 11 de octubre: el feed lista 27.0.1 (28 de septiembre) y después la beta 3 de 27.2, tras empezar las betas de 27.2 el 16 de septiembre, y el índice de notas de la versión lista solo 27 y la beta 3 de 27.2.6879 Apple puso la obsolescencia de TCC de este año, “Apps can no longer access the local TCC database directly” (las apps ya no pueden acceder directamente a la base de datos local de TCC), en las notas de la versión de macOS 27, bajo un encabezado de TCC.23 Condición: si los nuevos controles llegan en una versión que tenga notas para desarrolladores, esas notas son donde Apple puso la obsolescencia de TCC de este año, y voy a leer las notas de cada beta de macOS 27.x en busca de una línea. Pero macOS 27.0.1 ya salió sin ninguna nota de la versión para desarrolladores, así que un cambio también podría llegar en una versión menor sin ninguna línea en ninguna página de notas.78 Si llegan con macOS 28, una sesión de la WWDC o las notas de la versión de una beta es donde Apple ha descrito antes cambios así: la WWDC19 para las protecciones de Catalina, las notas de macOS 27 para la obsolescencia de TCC de este año.1123 En cualquier caso, los pasos de la sección 6 no dependen de la respuesta.

Conclusiones clave

Si ejecutas agentes en una Mac

  • Apple dijo el 2 de octubre que conceder Acceso total al disco requerirá una “very explicit user action” (acción muy explícita del usuario) y nombró a los agentes de IA como el motivo. No dio versión, fecha ni mecanismo.1
  • Tu agente de línea de comandos tiene lo que tenga tu terminal. Las páginas de manual de Apple y su ingeniero de soporte dicen que la terminal es el código responsable; Apple no documenta ninguna regla general.23
  • Un sandbox de proveedor no es un control de Acceso total al disco. En mi Mac, una lectura protegida atravesó el sandbox de solo lectura de Codex y el runtime de sandbox de Anthropic; solo la detuvieron una denegación de lectura sobre la carpeta exacta o el lanzamiento fuera de la terminal.5
  • Quítale Acceso total al disco a la terminal en la que ejecutas agentes, nunca se lo des a node ni a python, y activa las restricciones de lectura, no solo el sandbox.201521
  • Si un agente lee Messages, dale su propio usuario de macOS y conserva la aprobación por envío.7122

Si desarrollas agentes o apps de agentes

  • No les pidas a los usuarios que concedan Acceso total al disco a su terminal o al proceso de tu agente. Dos proveedores lo hacen hoy, para Messages.1314
  • La vía documentada de Apple es un enlace al panel, no un aviso; el interruptor es del usuario, y Apple dice que activarlo requerirá una acción muy explícita del usuario.251
  • Di en tu documentación qué lee tu sandbox de forma predeterminada. La documentación de Codex dice que su sandbox “limits what it can touch (typically to the current workspace)” (limita lo que puede tocar, normalmente al espacio de trabajo actual); su código fuente y mis ejecuciones muestran lecturas que llegan mucho más allá del espacio de trabajo.60635

Preguntas frecuentes

¿Qué es Acceso total al disco en una Mac?

Un ajuste de Ajustes del Sistema > Privacidad y seguridad que permite a una app “access all files on your computer, including data from other apps (for example, Mail, Messages, Safari, and Home), data from Time Machine backups, and certain administrative settings for all users on this Mac.” (acceder a todos los archivos de la computadora, incluidos los datos de otras apps, como Mail, Messages, Safari y Casa, los datos de las copias de seguridad de Time Machine y ciertos ajustes administrativos de todos los usuarios de esta Mac). Las apps no pueden pedirlo con un aviso; el usuario las agrega con el botón Agregar, o lo concede un perfil de MDM.4102

¿Qué anunció Apple sobre Acceso total al disco en octubre de 2026?

Una noticia para desarrolladores fechada el 2 de octubre de 2026, “Updates to Full Disk Access in macOS”, dice que Apple “will introduce additional controls” (introducirá controles adicionales) para que los usuarios que quieran conceder este acceso a una app “can only do so with very explicit user action,” (solo puedan hacerlo mediante una acción muy explícita) porque “As AI agents become increasingly capable and autonomous, the risks associated with this level of access will grow substantially.” (a medida que los agentes de IA ganen capacidad y autonomía, los riesgos de este nivel de acceso crecerán de forma considerable). No nombra ninguna versión de macOS, fecha ni mecanismo.1

¿Claude Code o Codex obtienen Acceso total al disco de mi terminal?

Sí, si la terminal lo tiene. Una herramienta ejecutada desde una terminal se evalúa contra la terminal; la página de manual de eslogger de Apple dice que ejecutarla desde “Terminal.app or a third-party terminal emulator” (Terminal.app o una terminal de terceros) requiere que esa app esté autorizada, y el ingeniero de soporte de Apple escribe en una publicación del foro: “The tool’s responsible code is Terminal.” (el código responsable de la herramienta es Terminal). En mi Mac, una lectura que requiere Acceso total al disco funcionó desde el shell de Claude Code dentro de Ghostty y falló cuando se lanzó fuera de él.235

¿El sandbox de Claude Code o de Codex impide que un agente lea mis mensajes de Messages?

No de forma predeterminada. Ambos sandboxes usan Seatbelt, que es independiente de Acceso total al disco. El sandbox de Claude Code está desactivado de forma predeterminada y, cuando está activado, lee “Most of the machine” (la mayor parte de la máquina). El de Codex está activado, y su modo de solo lectura leyó en mi Mac un archivo protegido por Acceso total al disco. Deniega las lecturas de forma explícita: permissions.blockReadsOutsideWorkingDirectories en Claude Code, reglas "deny" en un perfil de permisos de Codex.15215

¿Cómo veo qué apps tienen Acceso total al disco?

Abre Ajustes del Sistema > Privacidad y seguridad > Acceso total al disco.4 tccutil no puede listarlo; su único comando es reset.34 Desde una terminal que ya tenga Acceso total al disco, una lectura de la base de datos de TCC del sistema lista los clientes, como en la sección 5; un fallo con “authorization denied” significa que tu shell no tiene el acceso o que una regla de sandbox denegó la lectura.195

¿Debería quitarle Acceso total al disco a Terminal?

Si ejecutas agentes en ella, sí. Ten una terminal aparte con la concesión para comandos de copia de seguridad o de administración como tmutil, y nunca inicies un agente ahí. Espera avisos de Archivos y carpetas y errores “Operation not permitted” en la terminal a la que se lo quites.431051

¿Cuándo llegarán los nuevos controles de Acceso total al disco de Apple?

Apple no lo dijo. La noticia del 2 de octubre dice “Going forward” (en adelante), las notas de la versión de la beta 3 de macOS 27.2 no lo mencionan, y no encontré ninguna entrada de macOS 27.1 en el feed de versiones ni en el índice de notas de la versión del 11 de octubre: el feed lista macOS 27.0.1 (28 de septiembre), que salió sin notas de la versión para desarrolladores, y después la beta 3 de macOS 27.2; las betas de 27.2 habían empezado el 16 de septiembre.16789

Fuentes


  1. Apple Developer, News, “Updates to Full Disk Access in macOS”, con fecha del 2 de octubre de 2026. Descargada el 11 de octubre de 2026 a las 17:28 UTC y de nuevo a las 17:47 UTC; el texto de las dos copias es idéntico salvo por el estilo de los apóstrofos. Los dos párrafos completos: Acceso total al disco “largely sidesteps” los controles de datos “in order to allow backup apps to function properly on the Mac”; “Some developers are using Full Disk Access in ways that could put users at risk”; los archivos, el correo, los mensajes y el historial de navegación; las apps de comunicación y “the people users are communicating with”; “Going forward, we will introduce additional controls”; “very explicit user action”; los agentes de IA como el motivo de que el riesgo “will grow substantially”. No nombra versión, fecha, mecanismo ni app. ↩↩↩↩↩↩↩↩↩↩↩↩↩

  2. Apple, página de manual eslogger(1), incluida con el SDK de macOS 27.0 en Xcode; leída localmente el 11 de octubre de 2026. Sección TCC AUTHORIZATION: “eslogger requires the responsible process to have been authorized for Full Disk Access”; ejecutarlo “from an app, including Terminal.app or a third-party terminal emulator, requires the respective app to be authorized for Full Disk Access”; el ajuste de Sesión remota para las sesiones SSH; y “MDM servers can grant Full Disk Access authorization” mediante la clave SystemPolicyAllFiles del payload Privacy Preferences Policy Control. ↩↩↩↩↩↩↩↩↩↩↩↩

  3. Apple Developer Forums, “How to grant command line tools full disk access”, hilo creado en junio de 2024; respuestas de Quinn “The Eskimo!”, Apple Developer Technical Support, junio de 2024. Una publicación del personal, no documentación. Descargado el 11 de octubre de 2026 a las 17:55 UTC. Los cuatro casos de código responsable (“The tool’s responsible code is Terminal,” “The tool’s responsible code is the SSH server,” con el ajuste “Allow full disk access for remote users”, “The system treats the app as the responsible code,” y el caso de launchd: “If the daemon or agent was installed by SMAppService, that makes the app the responsible code. Otherwise, the daemon or agent should include AssociatedBundleIdentifiers in its launchd property list”); la advertencia de que el algoritmo “is not documented, has changed in the past, and may well change in the future”; el informe del autor original de que un programa ejecutado en Terminal, con Terminal teniendo Acceso total al disco, abrió el archivo, y falló cuando la concesión pasó de Terminal al programa; y las notas de Quinn sobre las herramientas que ejecuta Xcode: “Xcode runs the tool in a way that makes it clear to the system that Xcode is not the responsible code for this process,” y, para una herramienta bajo el depurador de Xcode (Xcode 15.4 en macOS 14.4.1), “I expect that one of these is breaking TCC’s responsible code search,” y agrega “I suspect that’s deliberate.” ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  4. Apple, Manual de uso de la Mac (macOS 27), “Change Privacy & Security settings on Mac”. Descargado el 11 de octubre de 2026 a las 17:37 UTC. La fila de Acceso total al disco (“Allow apps to access all files on your computer,” con Mail, Messages, Safari, Casa, las copias de seguridad de Time Machine y “certain administrative settings for all users on this Mac”) y su instrucción de agregar una app con el botón Agregar; el “The listed apps have requested access.” de las demás filas. ↩↩↩↩↩↩↩↩↩↩

  5. Medición del autor en la Mac del autor (macOS 27.0, build 26A428, System Integrity Protection activado), 11 de octubre de 2026, 17:40 UTC, desde una sesión de Claude Code en Ghostty. Todos los comandos de solo lectura salvo dos: un trabajo de launchd enviado y quitado (su salida escrita en dos archivos), y sandbox-runtime 0.0.79 de Anthropic instalado con npx -y para la prueba, con dos archivos de configuración provisionales (srt-a.json, srt-b.json) escritos para sus ejecuciones. Las sondas de escritura fueron intentos, que los sandboxes rechazaron; las sondas de red fallaron (000 curl_exit=56), sin diagnóstico y sin un control fuera del sandbox que permita establecer por qué. Las siete ejecuciones de la sección 5: una lectura de una sola fila de la base de datos de TCC del sistema desde el shell del agente (fila devuelta); dentro del sandbox Seatbelt de Codex CLI 0.154.0 en modo read-only (fila devuelta; una escritura fuera del espacio de trabajo rechazada con “Operation not permitted”); con la configuración de Codex del autor (fila devuelta); dentro de sandbox-runtime 0.0.79 de Anthropic sin denegación de lectura (fila devuelta; escritura rechazada; solicitud de red fallida) y con denyRead sobre la carpeta de TCC (“authorization denied”); y la misma lectura como trabajo de launchd sin Ghostty en su cadena (“authorization denied”). ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  6. Apple Developer Documentation, “macOS 27.2 Golden Gate Beta 3 Release Notes”. Descargado el 11 de octubre de 2026 a las 17:35 UTC. Seis secciones: General, AppKit, Display Settings, Notifications, Shortcuts, StoreKit Testing in Xcode; ninguna línea sobre Acceso total al disco, TCC o Privacidad y seguridad; la línea de AppKit sobre el valor predeterminado EnablePasteboardPrivacyDeveloperPreview eliminado. ↩↩↩↩

  7. Apple Developer, feed RSS de Releases. Descargado el 11 de octubre de 2026 a las 17:28 UTC. “macOS 27.2 beta 3 (26B5101f)” con fecha del lunes 5 de octubre de 2026; “macOS 27.0.1 (26A434)” con fecha del lunes 28 de septiembre de 2026; ningún ítem de macOS 27.1. ↩↩↩↩↩↩

  8. Apple Developer Documentation, “macOS Release Notes”, descargado el 11 de octubre de 2026 a las 17:35 UTC: bajo macOS 27, solo “macOS 27.2 Golden Gate Beta 3 Release Notes” y “macOS 27 Golden Gate Release Notes”. Las direcciones macos-release-notes/macos-27_0_1-release-notes, macos-27_1-release-notes y macos-27_1-beta-release-notes devolvieron HTTP 404 a las 17:31 UTC. ↩↩↩↩↩

  9. Apple Developer, News, página de índice. Descargada el 11 de octubre de 2026 a las 17:41 UTC. “Get ready with the latest beta releases”, con fecha del 16 de septiembre de 2026: “The beta versions of iOS 27.2, iPadOS 27.2, macOS 27.2, tvOS 27.2, visionOS 27.2, and watchOS 27.2 are now available.” ↩↩↩

  10. Apple Platform Security, “Controlling app access to files in macOS”. Descargado el 11 de octubre de 2026 a las 17:36 UTC. “Full internal storage access”: la app no pregunta; el usuario modifica los ajustes de privacidad del sistema. Archivos y carpetas, que pide la app, “Includes Desktop, Documents, Downloads, network volumes, and removable volumes.” La frase que sitúa el acceso al almacenamiento completo en “macOS 10.13 or later”. ↩↩↩↩↩↩

  11. Apple, sesión 701 de la WWDC19, “Advances in macOS Security”, transcripción en la página. Descargada el 11 de octubre de 2026 a las 17:40 UTC. Los dos niveles de datos protegidos, con el correo, los mensajes y el historial de navegación de Safari detrás de “a high barrier to access” para “disk management or backup utilities”; las ubicaciones de Catalina que requieren consentimiento; los auxiliares “prepopulated unchecked”; la Papelera añadida a lo que necesita aprobación previa; las apps “can guide the user to the security and privacy preference pane”. ↩↩↩↩↩↩↩

  12. Apple, sesión 10053 de la WWDC23, “What’s new in privacy”, transcripción en la página. Descargada el 11 de octubre de 2026 a las 17:40 UTC. La protección de contenedores de apps, y “For backup utilities or disk-management tools that have already been granted Full Disk Access, no additional prompt will be shown at time of access.” ↩↩↩

  13. Nous Research, documentación de Hermes Agent, Apple iMessage skill. Descargada el 11 de octubre de 2026 a las 17:41 UTC. “Bundled (installed by default)”; los requisitos incluyen “macOS with Messages.app signed in”, instalar imsg, “Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)” y “Grant Automation permission for Messages.app when prompted.” ↩↩↩↩↩↩

  14. Documentación de OpenClaw, “iMessage setup”. Descargada el 11 de octubre de 2026 a las 17:42 UTC. “Full Disk Access is required for the process context running OpenClaw/imsg” para el acceso a la base de datos de Messages; Automatización para enviar; “Permissions are granted per process context”; System Integrity Protection debe desactivarse para las acciones avanzadas; y una fila de TCC de ejemplo que muestra /usr/libexec/sshd-keygen-wrapper como cliente de un contexto SSH. ↩↩↩↩↩↩↩↩

  15. Anthropic, Claude Code Docs, “Configure the sandboxed Bash tool”. Descargada el 11 de octubre de 2026 a las 17:35 UTC. “The sandbox is off by default”; la tabla de valores predeterminados (escrituras en el directorio de trabajo, el temporal y los directorios añadidos; lecturas de “Most of the machine, including credential files”; red a través de un proxy con dominios permitidos que “start empty”); construido sobre @anthropic-ai/sandbox-runtime; Seatbelt en macOS; los dos modos de sandbox; lo que se ejecuta fuera de él (herramientas integradas de archivos y web; hooks, servidores MCP locales, monitores de plugins, servidores LSP, comandos auxiliares); el reintento fuera del sandbox y allowUnsandboxedCommands; denyRead, allowRead, blockReadsOutsideWorkingDirectories, excludedCommands; Apple Events bloqueados de forma predeterminada. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  16. OpenAI, documentación de Codex, “Sandbox” (servida desde learn.chatgpt.com). Descargada el 11 de octubre de 2026 a las 17:36 UTC. Sandbox activado de forma predeterminada; Seatbelt en macOS; se aplica a los comandos lanzados; los modos read-only, workspace-write y danger-full-access en palabras de OpenAI; el acceso total definido como danger-full-access con approval_policy = "never"; la etiqueta “Full access” del menú de escritorio. ↩↩↩↩↩↩↩

  17. Google, Gemini CLI, docs/cli/sandbox.md y el perfil de Seatbelt permissive-open, en el commit 9b6e026. Descargados el 11 de octubre de 2026 a las 17:43 UTC. Activación con -s, GEMINI_SANDBOX o la configuración; Seatbelt mediante sandbox-exec; los seis perfiles, permissive-open como predeterminado (“allowing broad file reads and network access”), strict-open y strict-proxied con restricciones de lectura; el (allow file-read*) del perfil. ↩↩↩↩↩

  18. Documentación de Cursor, “Run Modes”. Descargada el 11 de octubre de 2026 a las 17:50 UTC. Seatbelt mediante sandbox-exec para “the full subprocess tree”; red “Blocked by default”; los modos de Read Access, System como predeterminado (“The agent can read files outside the workspace without approval”) y Workspace, que pregunta antes de leer fuera del espacio de trabajo; “Read access requires Cursor 3.23 or later”; algunos comandos “bypass the sandbox”. ↩↩↩↩↩↩↩↩

  19. Medición del autor en la Mac del autor (macOS 27.0, build 26A428, System Integrity Protection activado), 11 de octubre de 2026, 17:32 UTC, con una comprobación de modos de archivo añadida a las 18:09 UTC; de solo lectura. La cadena de lanzamiento del shell del agente (zsh, claude, shell de inicio de sesión, login, Ghostty; TERM_PROGRAM ghostty); la base de datos de TCC por usuario, imposible de abrir; el modo de la base de datos de TCC del sistema (-rw-r--r--, root) y sus 75 filas de kTCCServiceSystemPolicyAllFiles, solo las columnas de servicio y cliente: Terminal, iTerm2, Ghostty, la app de ChatGPT (com.openai.codex), Cursor, Xcode, 30 binarios de versiones de Claude Code de 2.1.177 a 2.1.296, el node de Homebrew y cuatro intérpretes de Python, sshd-keygen-wrapper, otras tres entradas de Apple, cinco compilaciones propias del autor y otros 25 clientes de terceros. Los modos de las carpetas Library, Mail y Messages del usuario (solo el propietario). Las rutas de clientes bajo la carpeta de inicio no se reproducen aquí. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  20. Apple Developer Forums, “On File System Permissions”, de Quinn “The Eskimo!”, Apple Developer Technical Support; publicado por primera vez el 26 de abril de 2021 y revisado el 18 de septiembre de 2026 para añadir es_new_descendants_client. Una publicación del personal, no documentación. Descargada el 11 de octubre de 2026 a las 17:56 UTC. “The exact list of file system locations protected by MAC is not documented”; la lista que incluye “Full Disk Access (macOS 10.14 and later)”, la protección de contenedores de apps (macOS 14) y la protección de contenedores de grupos de apps (macOS 15); “Some MAC privileges are per user (Files and Folders) and some are system wide (Full Disk Access)”; TCC “has no API surface”; MAC “is mandatory; it’s not an opt-in like the App Sandbox”; el código responsable; la advertencia sobre los intérpretes y el consejo de “package your script as a standalone program”. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  21. OpenAI, documentación de Codex, “Configuration Reference”. Descargada el 11 de octubre de 2026 a las 17:37 UTC. Perfiles de permisos con "read" | "write" | "deny" por ruta; permissions.filesystem.deny_read, “Admin-enforced filesystem read denials”, que “users cannot weaken them with local config”; requirements.toml descrito como “an admin-enforced configuration file that constrains security-sensitive settings users can’t override.” ↩↩↩↩↩

  22. OpenAI, documentación de ChatGPT, “Plugins”, sección Apple Messages. Descargada el 11 de octubre de 2026 a las 17:45 UTC. “Grant the requested macOS permissions before ChatGPT reads Messages”; aprobación por envío de forma predeterminada; “Persistent approval removes your final chance to review a message before ChatGPT sends it as you”; Apple Messages solo funciona en la Mac; los administradores pueden desactivarlo mediante el control de Computer Use; “When a plugin capability runs through a Codex host, the host’s sandbox and approval policy applies.” ↩↩↩↩↩↩

  23. Apple Developer Documentation, “macOS 27 Golden Gate Release Notes”. Descargada el 11 de octubre de 2026 a las 17:35 UTC. System Integrity Protection: los contenedores de datos de apps y de grupos de apps de otros equipos, denegados de forma predeterminada sin aviso (161835690); XProtect puede restringir datos de apps (178668601). Obsolescencia de TCC: “Apps can no longer access the local TCC database directly” (90775556). Problema conocido de Privacy & Security Settings (184660124) con la solución alternativa de “grant Full Disk Access to the process for the duration of the requirement.” ↩↩↩↩↩↩↩↩↩

  24. Apple Developer Documentation, “Xcode 27 Release Notes”. Descargada el 11 de octubre de 2026 a las 17:45 UTC. “Agents in Xcode can now be extended with plugins that contain skills, MCP servers, and ACP agent configurations” (178289210); compatibilidad con el Agent Client Protocol (178294840); la “new security layer that monitors and controls filesystem access by coding agents and any processes they spawn” de Coding Intelligence, que “can be enabled in Coding Intelligence settings” (178289431); la vista previa del servidor MCP de la Beta 5 para “code-signed agents” y el flag --unsafe-always-allow-all-agents, “not a recommended configuration for at-desk use” (181836944). ↩↩↩↩↩

  25. Apple, SDK de macOS 27.0 (build del SDK de Xcode 26A425), encabezado EndpointSecurity/ESClient.h, leído localmente el 11 de octubre de 2026. es_new_client: “Callers are required to be entitled with com.apple.developer.endpoint-security.client”; “The only supported way to check if an application is properly TCC authorized for Full Disk Access”, y las URL de ajustes Privacy_AllFiles “To direct the user to the Full Disk Access section in System Settings.” es_new_descendants_client, disponible desde macOS 27.0: eventos para “the entire subtree rooted at the calling process”, “Does NOT require TCC approval”, con “@note Requires the com.apple.developer.endpoint-security.client entitlement.” ↩↩↩↩↩

  26. Apple Developer, feed RSS de News. Descargado el 11 de octubre de 2026 a las 17:41 UTC. “Updates to Full Disk Access in macOS” con fecha del viernes 2 de octubre de 2026, 09:00:19 PDT; vecinos: el aviso de expiración de la Developer ID Sub-CA (1 de octubre), los ítems de recursos de App Store y de iPhone Duo (5 de octubre) y “Hello Developer: October 2026” (6 de octubre). ↩

  27. Apple Developer, “Hello Developer: October 2026”, publicado el 6 de octubre de 2026. Descargado el 11 de octubre de 2026 a las 17:46 UTC. Envíos para iPhone Duo y Group Labs, eventos, documentación localizada y otros temas; ninguna mención de Acceso total al disco ni de agentes. ↩

  28. Apple Developer, videos de Privacy & Security. Descargado el 11 de octubre de 2026 a las 17:41 UTC. Las sesiones de la WWDC26 listadas: “Meet Trust Insights”, “Secure your app: mitigate risks to agentic features”, “Secure your apps with App Attest” y “Privacy and Security Group Lab”; ninguna de sus transcripciones contiene “Full Disk”. ↩

  29. Apple, sesión 347 de la WWDC26, “Secure your app: mitigate risks to agentic features”, transcripción en la página. Descargada el 11 de octubre de 2026 a las 17:41 UTC. La inyección indirecta de prompts, las mitigaciones de Foundation Models y App Intents, y la “Simon Willison’s Lethal Trifecta”: “access to private data, exposure to untrusted content, and the ability to externally communicate.” Ninguna mención de Acceso total al disco, TCC ni permisos del sistema de archivos para agentes. ↩↩

  30. Apple Developer Documentation, DeviceManagement, “PrivacyPreferencesPolicyControl.Services”. Descargado el 11 de octubre de 2026 a las 17:35 UTC. SystemPolicyAllFiles: “Allows the application access to all protected files, including system administration files”, sin marca de obsolescencia; Camera, Microphone, ListenEvent y ScreenCapture: un perfil “can’t grant” el acceso y “can only deny it”; varios servicios marcados como obsoletos para macOS 27. ↩↩↩↩

  31. Apple Platform Deployment, “Privacy Preferences Policy Control device management payload settings for Apple devices”. Descargado el 11 de octubre de 2026 a las 17:38 UTC. “Supervision is required if you apply this payload using a device management service”; “System Policy All Files” con su lista de datos; el comentario de ejemplo que concede a la app de una organización acceso a todos los archivos “without prompting the user”; y el predicado de log stream sobre los mensajes “AttributionChain” del subsistema de TCC, ofrecido para identificar la app o el binario responsable. ↩↩↩↩↩

  32. Apple, SDK de macOS 27.0, encabezado EndpointSecurity/ESTypes.h, leído localmente el 11 de octubre de 2026. ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED: “The caller lacks Transparency, Consent, and Control (TCC) approval from the user.” ↩

  33. Apple, sesión 8009 de la WWDC26, “Privacy and Security Group Lab”, transcripción en la página. Descargada el 11 de octubre de 2026 a las 17:41 UTC. Un panelista de Apple: “So TCC stands for transparency, consent and control.” Ninguna mención de Acceso total al disco. ↩

  34. Apple, página de manual tccutil(1), macOS 27.0 (con fecha del 3 de abril de 2012), leída localmente el 11 de octubre de 2026. Un comando, reset; los ejemplos nombran solo AddressBook y All; ninguna lista de servicios. ↩↩↩

  35. Apple Developer Forums, “The Rules for Full Disk Access”, página 1, agosto y septiembre de 2018. Descargado el 11 de octubre de 2026 a las 17:44 UTC. La publicación de un desarrollador de agosto de 2018 se refiere a “Full Disk Access (previously Application Data in earlier betas)”; un desarrollador pide “an API call that causes a prompt to the logged-in user to grant the app Full Disk access”; Apple Developer Technical Support responde “Please do file an enhancement request” y, en septiembre, describe que los auxiliares incluidos en el paquete quedan cubiertos por la concesión de la app padre y que los auxiliares externos necesitan la suya. ↩↩

  36. Apple Developer Documentation, DeviceManagement, “PrivacyPreferencesPolicyControl”. Descargado el 11 de octubre de 2026 a las 17:35 UTC. Tipo de payload com.apple.TCC.configuration-profile-policy; macOS, introducido en 10.14; “Requires supervision” N/A; requiere MDM aprobado por el usuario. ↩↩↩

  37. Apple Developer Documentation, DeviceManagement, “PrivacyPreferencesPolicyControl.Services.Identity”. Descargado el 11 de octubre de 2026 a las 17:35 UTC. Obsoleto en macOS 27.0, cada clave “Deprecated: macOS 27+”; Allowed: “The user isn’t prompted and can’t change this value”; identificadores por bundle ID o ruta; “Helper tools embedded within an application bundle automatically inherit the permissions of their enclosing app bundle.” ↩↩↩↩↩↩↩

  38. Apple Developer Documentation, DeviceManagement, “AppSettingsAppDictionaryObject”, introducido en macOS 27. Descargado el 11 de octubre de 2026 a las 17:36 UTC. Valores predeterminados de privacidad para Accessibility, Bluetooth, Camera, Dictation, LocalNetwork, Location, LocationAccuracy y Microphone, y una OrganizationJustification obligatoria que se muestra en el aviso de consentimiento; ninguna clave de Acceso total al disco. ↩↩↩↩

  39. Apple Developer Documentation, DeviceManagement, “AppSettings”. Descargado el 11 de octubre de 2026 a las 17:35 UTC. Valores predeterminados de permisos de privacidad: “When set, the app displays a consent prompt listing all the configured defaults”; Allow o Not Now; “Only AppKit-based apps on macOS support this feature.” ↩↩

  40. Apple Newsroom, “Apple introduces macOS Mojave”, comunicado de prensa, 4 de junio de 2018. Descargado el 11 de octubre de 2026 a las 17:48 UTC. “New data protections require apps to get user permission before using the Mac camera and microphone or accessing personal data like user Mail history and Messages database.” ↩

  41. Apple Developer Documentation, “macOS Mojave 10.14 Release Notes”. Descargado el 11 de octubre de 2026 a las 17:41 UTC. Privacy, New Features: el almacenamiento protegido requiere que la app se agregue a la categoría “Application Data” (39798760). ↩

  42. Apple Newsroom, “macOS Catalina is available today”, 7 de octubre de 2019. Descargado el 11 de octubre de 2026 a las 17:47 UTC. “new data protections require all apps to get permission before accessing user documents.” ↩

  43. Apple, página de manual tmutil(8), SDK de macOS 27.0, leída localmente el 11 de octubre de 2026. “Full Disk Access privileges can be granted to the Terminal application used to run tmutil.” ↩↩↩

  44. Apple, página de manual fdesetup(8), SDK de macOS 27.0, leída localmente el 11 de octubre de 2026. AUTHORIZATION POLICY: a partir de macOS 10.15, activar FileVault requiere, entre otras opciones, que la aplicación responsable esté autorizada para Acceso total al disco. ↩↩

  45. Apple Developer Forums, “Which application is taken in consideration with TCC”, noviembre de 2023. Descargado el 11 de octubre de 2026 a las 17:43 UTC. Un desarrollador pregunta si TCC “is looking for parent process rights”; Apple Developer Technical Support remite a “On File System Permissions” y declina dar detalles por ser “both complex and subject to change.” ↩

  46. Jeff Johnson, “Every unsandboxed app has Full Disk Access if Terminal does”, 22 de septiembre de 2022, con código fuente. Descargado el 11 de octubre de 2026 a las 17:59 UTC. Terminal con Acceso total al disco “can read or write any restricted files, including the TCC database itself” (su ejemplo es la base de datos por usuario); las apps sin sandbox pueden abrir en Terminal scripts que se ejecutan con los permisos de Terminal; la técnica “doesn’t work for sandboxed apps.” ↩↩↩

  47. Inspección del autor de las apps instaladas en la Mac del autor, 11 de octubre de 2026, 17:33 UTC; de solo lectura. Versiones: Claude Code 2.1.296, Codex CLI 0.154.0, Gemini CLI 0.19.4, Hermes Agent 0.14.0; Aider y OpenClaw no instalados; VS Code no instalado. Cadenas de propósito del Info.plist y entitlement de App Sandbox de la app de Claude (2.31226.0, sin entitlement de sandbox; cadenas de carpetas y de Apple Events), ChatGPT (com.openai.codex 26.715.72359, app-sandbox false), Cursor (3.19.7, sin entitlement), Ghostty 1.3.1 (“A program running within Ghostty would like to use AppleScript.”) e iTerm2 3.6.6 (“An application in iTerm2 wants to use AppleScript.”), ninguna de las dos en sandbox. ↩↩↩↩↩↩↩↩

  48. Búsquedas de código del autor en GitHub, 11 de octubre de 2026, 18:12 UTC: la documentación de Aider para “sandbox” y su repositorio para “Full Disk Access”, la documentación de Ghostty y el repositorio de iTerm2 para “Full Disk Access”; cero resultados en cada caso. La búsqueda de código no indexa todo. ↩↩↩

  49. Documentación de Cursor, “Terminal”, herramientas del agente. Descargada el 11 de octubre de 2026 a las 17:50 UTC. “Cursor runs shell commands directly in your terminal”; el Run Mode controla cuándo se ejecutan los comandos, cuándo pregunta Cursor y cuándo entran en el sandbox. ↩↩

  50. Documentación de OpenClaw, “macOS permissions”. Descargada el 11 de octubre de 2026 a las 17:42 UTC. Conceder el acceso “to the same process context that performs file operations”; tratar una entrada de node “as broad permission for that Node runtime, not as permission for one npm package”; mover los archivos al espacio de trabajo de OpenClaw para evitar concesiones por carpeta. ↩↩↩

  51. Anthropic, Claude Code Docs, “Manage multiple agents with agent view”. Descargada el 11 de octubre de 2026 a las 17:36 UTC. En macOS, el anfitrión de sesiones en segundo plano “requests access to protected folders separately from your terminal”; ante “Operation not permitted”, conceder Archivos y carpetas “or enable Full Disk Access for the entry”; con el instalador nativo, la entrada “appears as Claude Code and the grant persists across updates”, mientras que las instalaciones con Homebrew o npm muestran la ruta del binario. ↩↩↩↩↩↩

  52. Anthropic, Claude Code Docs, “Let Claude use your computer from the CLI”. Descargada el 11 de octubre de 2026 a las 17:49 UTC. Accesibilidad y Grabación de pantalla; si el aviso persiste, confirmar que “your terminal app is listed and enabled” en Grabación de pantalla. ↩

  53. Anthropic, Claude Code Docs, “Configure permissions”. Descargada el 11 de octubre de 2026 a las 17:35 UTC. Modos de permisos default (con la etiqueta Manual), acceptEdits, plan, auto, dontAsk, bypassPermissions; usar bypassPermissions solo “in isolated environments like containers or VMs where Claude Code can’t cause damage.” Ninguna mención de Acceso total al disco. ↩↩↩

  54. OpenAI Help Center, “ChatGPT release notes”, entrada del 20 de agosto de 2026. Descargada el 11 de octubre de 2026 a las 17:47 UTC. El plugin de Apple Messages “can read and search iMessage, SMS, and RCS conversations and prepare or send messages through Messages”; aprobación antes de enviar de forma predeterminada. ↩

  55. MacRumors, Juli Clover, “ChatGPT Can Now Read and Send iMessages on Mac”, 20 de agosto de 2026. Descargado el 11 de octubre de 2026 a las 17:48 UTC. Prensa, usada como pista: “ChatGPT needs Full Disk Access in System Settings, as well as access to contact names and automation tools.” ↩

  56. OpenAI, documentación de ChatGPT, “Computer Use”. Descargada el 11 de octubre de 2026 a las 17:48 UTC. Grabación de pantalla y Accesibilidad en macOS; permisos del sistema separados de las aprobaciones de la app; “File reads, file edits, and shell commands still follow the sandbox and approval settings for the task.” ↩↩

  57. Anthropic, Claude Help Center, “Use quick entry with Claude Desktop on Mac”. Descargado el 11 de octubre de 2026 a las 17:49 UTC. Grabación de pantalla “Required to capture screenshots and share application windows”; Accesibilidad “Required for quick entry functionality.” ↩

  58. Nous Research, documentación de Hermes Agent, “Computer Use”. Descargada el 11 de octubre de 2026 a las 17:42 UTC. Accesibilidad y Grabación de pantalla se conceden a “the identity named by hermes computer-use doctor”, la app CuaDriver. ↩

  59. Microsoft, documentación de VS Code, “Sandbox Copilot Agent Host sessions”. Descargada el 11 de octubre de 2026 a las 17:50 UTC. chat.agent.sandbox.enabled desactivado de forma predeterminada, aplicable a la implementación de herramientas predeterminada de Agent Host, “not the Local chat harness or the custom terminal tool override”; “Sandboxing is not a virtual machine or user-account boundary, and it does not replace endpoint security”; la red saliente no se bloquea de forma predeterminada; allowDevToolAccess es true de forma predeterminada. Ninguna mención de Acceso total al disco. ↩↩↩↩↩

  60. OpenAI, documentación de Codex, “Agent approvals & security”. Descargada el 11 de octubre de 2026 a las 17:37 UTC. “By default, the agent runs with network access turned off”, con un sandbox impuesto por el sistema operativo que “limits what it can touch (typically to the current workspace)”; workspace-write la mantiene desactivada salvo que se configure; Seatbelt y sandbox-exec en macOS; --dangerously-bypass-approvals-and-sandbox. ↩↩↩↩↩

  61. Nous Research, documentación de Hermes Agent, “Hermes Agent Configuration”. Descargada el 11 de octubre de 2026 a las 17:41 UTC. Siete backends de terminal; local, “The default. Commands run directly on your machine with no isolation”; los subprocesos locales conservan el HOME real; Docker y Singularity “use bind mounts (live host filesystem view)”; docker_volumes “lets you share host directories with the container.” ↩↩↩↩

  62. Documentación de OpenClaw, “Sandboxing”. Descargada el 11 de octubre de 2026 a las 17:42 UTC. “Sandboxing is off by default”; el gateway se queda en el anfitrión y solo se mueve la ejecución de herramientas; “not a perfect security boundary”; tools.elevated como “an explicit escape hatch.” ↩↩↩↩↩↩

  63. OpenAI, código fuente de Codex en el commit 72f999e: seatbelt_base_policy.sbpl y seatbelt.rs. Descargado el 11 de octubre de 2026 a las 17:37 UTC. El (deny default) de la política base y “child processes inherit the policy of their parent”; has_full_disk_read_access, que produce (allow file-read*) cuando no hay raíces ilegibles definidas y, en caso contrario, una política de lectura que las excluye; sandbox-exec fijado en /usr/bin. ↩↩↩

  64. Nous Research, documentación de Hermes Agent, “Security”. Descargada el 11 de octubre de 2026 a las 17:41 UTC. “Deny rules are a shell-command policy, not a complete shell interpreter or an OS capability sandbox”; los backends de contenedores como límite de seguridad; backends de contenedores recomendados para los gateways en producción. ↩↩↩↩

  65. Documentación de OpenClaw, “Modes, scope, and backend”. Descargada el 11 de octubre de 2026 a las 17:43 UTC. agents.defaults.sandbox.mode: off (predeterminado), non-main, all; backends docker (predeterminado), podman, ssh, openshell, crabbox; red de Docker none de forma predeterminada. ↩

  66. Documentación de OpenClaw, “Workspace access”. Descargada el 11 de octubre de 2026 a las 17:43 UTC. none (predeterminado): las herramientas leen y escriben en un espacio de trabajo aislado del sandbox, y “the agent workspace is not exposed”; ro; rw. ↩↩

  67. Accomplish, “Beltdown: Escaping the Claude Code sandbox”, 11 de septiembre de 2026. Descargado el 11 de octubre de 2026 a las 18:07 UTC. Con el sandbox activado y el modo de permisos más estricto, un comando de un repositorio se ejecutó fuera del sandbox sin aviso; corregido en Claude Code 2.1.247. ↩↩

  68. Accomplish, “Beltdown2: Escaping the Cursor CLI sandbox”, 12 de septiembre de 2026. Descargado el 11 de octubre de 2026 a las 18:06 UTC. El perfil de Seatbelt envuelve solo la herramienta de shell, mientras que el git propio del harness se ejecuta sin sandbox; corregido en Cursor CLI 2026.08.04-aaa8809. ↩↩

  69. Accomplish, “Escaping the OpenAI Codex sandbox, twice”, 15 de septiembre de 2026. Descargado el 11 de octubre de 2026 a las 18:06 UTC. Dos escapes reportados el 12 de agosto de 2026, “Both were fixed inside of eight days”; en uno, launchd inicia una aplicación “outside Codex’s process tree.” ↩↩

  70. Accomplish, “SharedRoot: Escaping the Claude Cowork sandbox”, 23 de julio de 2026. Descargado el 11 de octubre de 2026 a las 18:03 UTC. Un escape de la máquina virtual a un montaje de lectura y escritura del sistema de archivos del anfitrión, que lee y escribe en él “as the logged-in desktop user”; reportado a Anthropic y cerrado como “Informative”. El informe no prueba ubicaciones protegidas por TCC. ↩

  71. Documentación de OpenClaw, “iMessage deployment patterns”. Descargada el 11 de octubre de 2026 a las 17:42 UTC. “Use a dedicated Apple ID and macOS user so bot traffic is isolated from your personal Messages profile.” ↩↩

  72. Apple, Manual de uso de la Mac, “Change Users & Groups settings on Mac”. Descargado el 11 de octubre de 2026 a las 18:08 UTC. Los usuarios estándar “can install apps and change their own settings, but can’t add other users or change other users’ settings.” ↩

Artículos relacionados

El intérprete de fuentes de Apple ahora es Swift, y un 13 % más rápido

Apple reescribió el intérprete de hinting de TrueType de C a Swift: memoria segura, un 13 % más rápido y liberado como c…

11 min de lectura

Container Machines: un entorno Linux persistente en Mac

La herramienta container de Apple llega a 1.0 con container machine: un entorno Linux rápido y persistente en macOS, con…

14 min de lectura

Rutas en pixel art: conexiones de mapa y distritos en el iPhone

Cómo construyen Pokémon, Stardew y Animal Crossing la tierra entre pueblos, medido en el código: rutas, costuras, garita…

130 min de lectura