NVIDIA OpenShell somete los permisos de los agentes al control de políticas: qué se puede probar ya
NVIDIA OpenShell es un runtime con licencia Apache para colocar agentes de código y agentes autónomos en sandboxes regulados por políticas. Su idea central no es otro framework de agentes, sino un límite alrededor de archivos, procesos, redes, credenciales y cambios de política.
OpenShell es la parte de código abierto del nuevo intento de NVIDIA por hacer más fácil la contención de agentes autónomos. El proyecto coloca agentes como Codex, Claude Code, OpenCode y GitHub Copilot CLI dentro de sandboxes y después aplica reglas sobre los archivos que pueden tocar, los programas que pueden ejecutar, los destinos de red que pueden alcanzar y las credenciales que pueden utilizar.

Ese enfoque importa porque muchas conversaciones sobre seguridad de agentes siguen empezando por el modelo. OpenShell empieza un nivel más abajo. Parte de la posibilidad de que un modelo interprete mal una petición, siga instrucciones hostiles dentro de un repositorio, ejecute un comando de shell peligroso o delegue trabajo en un proceso hijo. La pregunta pasa a ser qué puede hacer técnicamente la carga de trabajo resultante.
NVIDIA anunció su plataforma más amplia Open Agent Safety Platform el 28 de septiembre de 2026. La plataforma también incluye Sentry, un diseño separado de monitorización y contención vinculado al hardware de NVIDIA. OpenShell es la parte que los desarrolladores pueden inspeccionar y ejecutar sobre varias opciones de infraestructura. Tiene licencia Apache 2.0, pero sigue siendo un proyecto emergente, con complejidad operativa, requisitos del host y un modelo de políticas que necesita pruebas cuidadosas.
El consejo práctico es sencillo: OpenShell merece una prueba en experimentos de seguridad, evaluación local de agentes y flujos de desarrollo controlados. Todavía es pronto para tomar un quickstart exitoso como prueba de que un agente es seguro para producción.
El ángulo actual: el límite del agente es el producto
El repositorio de OpenShell lo describe como un runtime para flotas de agentes autónomos. Es una propuesta distinta de la de un framework de agentes. No decide cómo planifica una tarea un agente, qué modelo debe generar el siguiente paso ni cómo debe estructurar un desarrollador un grafo de orquestación. Se sitúa debajo de un harness existente e intenta mantenerlo dentro de un límite operativo declarado.
La diferencia puede pasar desapercibida porque el proyecto llega durante una oleada de lanzamientos de agentes. Un agente de código típico puede leer un checkout, editar archivos fuente, instalar dependencias, llamar a registros de paquetes, usar Git, acceder a APIs en la nube y lanzar subprocesos. Un prompt puede pedirle que tenga cuidado, pero un prompt no es un mecanismo de aplicación. Un agente que recibe una instrucción maliciosa desde un README o una incidencia conserva la autoridad que le haya concedido el shell que lo rodea.
OpenShell cambia el lugar donde se expresa esa autoridad. El operador escribe la política en YAML. El runtime convierte esa política en controles aplicados por el kernel, el supervisor del sandbox y un proxy de red. El modelo todavía puede tomar una mala decisión, pero esa decisión debe pasar por los permisos concedidos a su carga de trabajo.
Es un ángulo de código abierto más útil que otra lista de modelos compatibles. El proyecto está probando si los permisos de los agentes pueden convertirse en configuración portable y revisable. Si funciona, la misma política puede viajar con una imagen de sandbox o revisarse en un pull request. Si no funciona, el proyecto se convertirá en otra capa de configuración que los desarrolladores esquivan cada vez que interrumpe una tarea.
Qué controla realmente OpenShell
La política central tiene varios dominios y no todos se comportan de la misma manera. Entender esa diferencia temporal es una de las primeras cosas que debe hacer quien evalúe el proyecto.
filesystem_policy define qué rutas se pueden leer y cuáles se pueden escribir. El proyecto utiliza controles basados en Landlock para el acceso al sistema de archivos. La configuración del sistema de archivos y de Landlock se aplica cuando arranca el sandbox, de modo que cambiarla no equivale a cambiar una regla de red sobre una carga de trabajo ya en ejecución. Una política puede permitir que un agente escriba en el directorio del proyecto y en un directorio temporal, mientras mantiene fuera de su vista las credenciales, las claves SSH, los perfiles del navegador y los datos no relacionados del directorio personal.
La sección process controla la identidad y las condiciones de los procesos utilizadas al crear el sandbox. El objetivo es impedir que una carga de trabajo convierta sin más una tarea normal de programación en un ejercicio de escalada de privilegios. Aun así, depende del runtime y de la configuración del host elegidos; un archivo de políticas no elimina las hipótesis de seguridad de Docker, Podman, Kubernetes, una máquina virtual o el sistema operativo que los sostiene.
network_policies controla el acceso saliente. OpenShell utiliza un modelo de denegación por defecto para las conexiones del sandbox y después permite destinos nombrados y, cuando se configura, binarios concretos. Una regla puede distinguir un gestor de paquetes de un comando de shell, o un cliente Git de un cliente HTTP genérico. Así se puede permitir un flujo estrecho sin entregar a todos los procesos la misma salida de red.
La capa de red también puede inspeccionar las peticiones a un nivel superior. El ejemplo de NVIDIA permite que curl lea de la API REST de GitHub y rechaza una petición de escritura. El detalle importante es que permitir un host no equivale necesariamente a permitir todas las operaciones sobre ese host. Una política puede describir un endpoint, un puerto, un protocolo, el binario permitido y el acceso de solo lectura o de escritura.
network_middlewares ofrece otro punto para inspeccionar, transformar o bloquear tráfico. En la práctica, ahí una política puede ser más específica que una regla de firewall convencional. La documentación del proyecto describe controles para tráfico HTTP, GraphQL y Model Context Protocol. Eso no significa que todos los protocolos de aplicación tengan la misma madurez o sean igual de fáciles de expresar; significa que el runtime está diseñado para razonar sobre peticiones, no únicamente sobre direcciones IP y puertos.
Por último, los perfiles de proveedores gestionan las credenciales y el acceso aprobado a servicios. El modelo previsto es que un agente no reciba un secreto sin restricciones para usarlo en cualquier lugar. OpenShell mantiene la credencial real fuera de la carga de trabajo, comprueba el destino y la política, y sustituye la credencial solo para una petición autorizada. Un token de GitHub que puede utilizarse en una ruta de API de solo lectura no debería convertirse automáticamente en un secreto de propósito general disponible para todos los comandos del sandbox.
Ese último límite resulta especialmente importante para los agentes de código. Se puede impedir que una herramienta lea un token local y, al mismo tiempo, concederle un acceso muy acotado a un servicio remoto. El mecanismo no sustituye los permisos propios del servicio. Es un control adicional sobre la forma en que el agente puede utilizarlos.
Una política pequeña informa más que una afirmación de marketing
La manera más útil de evaluar OpenShell es empezar con una tarea deliberadamente aburrida. Crea un sandbox sin acceso de red saliente. Ejecuta una petición inofensiva, como una llamada a la API pública de GitHub. Confirma que la petición se bloquea e inspecciona el registro. Después aplica una política que permita un endpoint de GitHub de solo lectura y repite la petición. Por último, intenta una operación de escritura y confirma que la regla de solo lectura la rechaza.
Una forma simplificada de la política sería esta:
version: 1
filesystem_policy:
include_workdir: true
read_only:
- /usr
- /lib
- /etc
read_write:
- /tmp
landlock:
compatibility: best_effort
network_policies:
github_api:
name: github-api-readonly
endpoints:
- host: api.github.com
port: 443
protocol: rest
enforcement: enforce
access: read-only
binaries:
- path: /usr/bin/curl
Este ejemplo no es una política de producción. Sirve para hacer visible el control. También muestra por qué el proyecto debe evaluarse con pruebas y no con capturas de pantalla. La cuestión no es que exista YAML. La cuestión es si una petición que debería denegarse se deniega con el runtime, la imagen, la ruta del binario, la configuración de credenciales y la configuración del host exactos que un equipo pretende desplegar.
La documentación de OpenShell indica que los controles estáticos quedan fijados al crear el sandbox, mientras que los controles de red pueden cambiar mientras el sandbox está en ejecución. Eso resulta útil para una aprobación incremental: un agente puede empezar sin red, solicitar un servicio específico y recibir una actualización revisada sin reiniciarse. También crea un problema de gobernanza. Un cambio dinámico de política puede ampliar el acceso durante una sesión larga, así que el circuito de aprobación, el rastro de auditoría y el comportamiento de reversión importan tanto como la política inicial.
El proyecto incluye un asesor de políticas y un probador de políticas para revisar el acceso propuesto. La promesa es que un cambio pueda comprobarse en busca de nueva autoridad antes de aplicarse. Es una dirección valiosa, pero la verificación formal de una política no equivale a comprobar que la política expresa la intención del negocio. Una regla formalmente válida todavía puede permitir el repositorio equivocado, el método de API equivocado o una credencial con más capacidad de la que necesita la tarea.
Quién debería probarlo ahora
OpenShell encaja bien con quienes ya ejecutan agentes con una autoridad local significativa y quieren medir la diferencia entre la cautela expresada en un prompt y la aplicación en el runtime. Los ingenieros de seguridad pueden usarlo para construir pruebas reproducibles de escape y exfiltración de agentes. Los equipos de plataforma pueden investigar cómo viajarían las políticas desde el portátil de un desarrollador hasta una pasarela de Kubernetes. Los mantenedores de herramientas de agentes pueden comprobar cómo se comportan sus árboles de procesos, llamadas de red e integraciones con proveedores dentro de un entorno restringido.
También es relevante para desarrolladores que trabajan con repositorios que no han creado ellos. Un código desconocido puede contener scripts de instalación, archivos generados, hooks de dependencias o instrucciones dirigidas a herramientas automatizadas. Un sandbox con un directorio de trabajo estrecho y sin salida predeterminada ofrece un lugar más seguro para inspeccionar ese material. La protección no es absoluta, pero puede reducir las consecuencias de un comando accidental.
Los investigadores que evalúan modelos locales también pueden beneficiarse de la separación. OpenShell puede ejecutar un agente contra inferencia local o basada en la nube y colocar los archivos de la carga de trabajo y sus peticiones salientes detrás de una política. Así, un experimento puede comparar modelos sin cambiar todo el entorno del host en cada ejecución.
Los equipos deben ser más prudentes si buscan un plano de control empresarial listo para usar. El repositorio incluye una pasarela, SDK, gestión de proveedores, comportamiento de auditoría y una ruta de despliegue en Kubernetes, pero unir esas piezas es un proyecto de sistemas. Implica gestión de imágenes, privilegios del runtime, aplicación de red, identidad, secretos, registros, respuesta ante incidentes y propiedad de las políticas. Instalar la CLI no equivale a completar ese trabajo.
El host y el runtime siguen importando
El quickstart actual apunta a Linux, macOS en Apple Silicon y Windows mediante WSL 2 de forma experimental. El proyecto espera una base de contenedores o virtualización como Docker, Podman o la virtualización del host. Kubernetes se admite mediante un despliegue Helm, y el proyecto señala que la capa de red del clúster debe hacer cumplir la política de red pertinente.
Estos requisitos no son notas administrativas. Un sandbox solo es tan sólido como el límite que realmente lo aplica. Un equipo debería documentar qué funciones del kernel están disponibles, qué ocurre cuando Landlock no está disponible, si el motor de contenedores funciona sin root, qué capacidades permanecen en la carga de trabajo, cómo se construyen las imágenes y cómo se autentican las actualizaciones. El mismo YAML puede producir resultados prácticos diferentes cuando cambian las hipótesis del host.
La documentación de políticas del proyecto incluye una configuración de compatibilidad para Landlock. Es una adaptación útil a entornos distintos, pero una opción de compatibilidad permisiva no debe confundirse con una garantía de que todas las restricciones de sistema de archivos previstas estén activas. Un despliegue de producción necesita una comprobación de arranque que falle de forma segura o informe con claridad de una postura de seguridad reducida.
El proxy de red es otra dependencia que debe probarse. Si el agente necesita un registro de paquetes, un proveedor Git, un endpoint de modelos, un gestor de incidencias o un servidor MCP, cada servicio añade superficie de política. Una regla que permita un dominio amplio puede resultar cómoda y, al mismo tiempo, debilitar el motivo de contar con controles por endpoint. Una regla demasiado estrecha puede animar al desarrollador a añadir una excepción general. El diseño operativo debe hacer más fácil el camino acotado que el bypass.
La intermediación de credenciales promete, pero no hace magia
El modelo de proveedores de OpenShell aborda un fallo habitual: entregar a un agente un entorno que contiene todos los tokens disponibles para el usuario. Al mantener las credenciales fuera del sandbox y vincularlas a destinos aprobados, el runtime puede impedir que un token destinado a un servicio se envíe a otro. También puede aplicar una regla de petición de solo lectura aunque el token subyacente permita técnicamente escribir.
Eso no elimina el riesgo de las credenciales. El servicio tiene que emitir tokens sensatos. Un perfil de proveedor debe configurarse correctamente. El proxy debe reconocer el tráfico que se supone que debe inspeccionar. Una credencial autorizada para borrar repositorios sigue siendo peligrosa si la política permite el método de API correspondiente. Y un modelo todavía puede producir una salida dañina dentro del alcance que se le haya concedido.
La mejor prueba es por tanto una matriz, no un único caso exitoso. Comprueba una lectura permitida, una escritura denegada, un host no aprobado, una petición realizada por el binario equivocado, una credencial caducada, una petición malformada, un subproceso y un agente hijo. Comprueba las mismas acciones mediante el SDK o la ruta de integración que utilizará la carga de trabajo real. Después examina la salida de auditoría para determinar si un operador podría reconstruir lo ocurrido.
OpenShell afirma que registra las decisiones de política en un rastro de auditoría del Open Cybersecurity Schema Framework. Es útil para responder a incidentes, pero los registros solo ayudan si se recopilan, conservan, protegen frente a la carga de trabajo y se conectan con la identidad de la persona o automatización que aprobó un cambio. Un registro de demostración local todavía no es un sistema de auditoría empresarial.
Lo que el proyecto no resuelve
OpenShell es contención, no alineación. No puede hacer fiable a un modelo poco fiable, distinguir un error empresarial sutil de una acción válida ni garantizar que una especificación de tarea sea segura. Si un agente tiene permiso para modificar un despliegue de producción, el runtime puede aplicar correctamente ese permiso mientras el modelo realiza un cambio desastroso pero técnicamente autorizado.
Tampoco sustituye a los proveedores de identidad, gestores de secretos, seguridad de endpoints, gestión de vulnerabilidades, controles de la cadena de suministro de software, observabilidad o aprobación humana. El material del propio NVIDIA describe OpenShell como un límite de runtime para agentes que se integra con esos sistemas circundantes. Ese es el modelo mental correcto. El proyecto añade una capa; no vuelve opcional el resto de la pila.
Hay una limitación más básica: la calidad de la política determina el acceso útil. Un agente de desarrollo que no pueda leer los archivos correctos o alcanzar el registro de paquetes adecuado fallará de formas confusas. Un agente de desarrollo con permisos amplios sobre el sistema de archivos y la red puede funcionar con fluidez y recibir, en cambio, poca protección real. El reto de ingeniería consiste en definir la autoridad mínima que permita terminar la tarea y hacer que las excepciones sean explícitas y revisables.
La conversación pública ha planteado la misma preocupación desde otra dirección. La cobertura del anuncio señaló que unos controles restrictivos podrían bloquear trabajo útil y que hacen falta estudios de caso para entender el equilibrio. No es un motivo para descartar el proyecto. Es un motivo para probar flujos de trabajo reales en lugar de repetir la afirmación de que un agente puede quedar aislado en milisegundos.
El componente Sentry, que se presenta por separado, también debe mantenerse conceptualmente separado. NVIDIA lo describe como una capa de monitorización y contención a nivel de hardware, mientras que OpenShell es el runtime abierto y el límite de políticas. Según NVIDIA y la información publicada sobre el lanzamiento, OpenShell puede resultar útil en plataformas de cómputo rivales, incluidas Arm e Intel. Un equipo que evalúe el proyecto de código abierto no debería suponer que recibe automáticamente todas las propiedades de la plataforma NVIDIA más amplia.
Licencia y madurez del proyecto
El repositorio de OpenShell identifica la Apache License 2.0 como su licencia. Es una licencia permisiva habitual en proyectos de infraestructura y herramientas para desarrolladores. Facilita inspeccionar, modificar e integrar el código, sujeto a la licencia y a las condiciones separadas aplicables a materiales recuperados, imágenes de contenedor, modelos, proveedores y componentes de terceros.
El repositorio también contiene una política de seguridad y avisos de terceros. Esos documentos deberían formar parte de una revisión de adopción. El descargo de responsabilidad del proyecto indica que los materiales recuperados o accedidos por el software se rigen por sus propias condiciones y que los usuarios son responsables de comprobar su seguridad, integridad e idoneidad. En términos prácticos, un runtime abierto no hace confiable cada imagen, skill, plugin, modelo o script que se ejecute dentro de él.
La madurez debe juzgarse a partir del historial de versiones e incidencias, no solo de la presencia de una gran empresa detrás del repositorio. OpenShell tiene una superficie amplia: una CLI, una pasarela local, drivers de sandbox, un esquema de políticas, comportamiento del proxy, credenciales de proveedores, SDK, despliegue Helm, enrutamiento de inferencia y skills para agentes. Cada componente plantea preguntas de compatibilidad y seguridad. Los primeros usuarios deberían fijar versiones, mantener un entorno de pruebas desechable, revisar los cambios entre versiones y conservar una vía de reversión.
La telemetría merece una comprobación específica. El repositorio dice que OpenShell recopila por defecto categorías y recuentos operativos anónimos, excluyendo nombres, nombres de host, rutas de archivos, prompts, credenciales, nombres de proveedores, nombres de modelos y contenido del usuario. También documenta maneras de desactivar la telemetría o compilarla fuera. Es una divulgación más útil que el silencio, pero las organizaciones con requisitos estrictos de privacidad deberían verificar la implementación y su configuración de compilación en lugar de confiar solo en un resumen.
Alternativas y complementos
OpenShell no es la única manera de reducir la autoridad de un agente. Un contenedor mínimo sin montajes del host puede bastar para un paso de compilación estrecho. Un contenedor sin root, una microVM, una máquina virtual dedicada, un worker de desarrollo remoto o un trabajo de CI ofrecen distintos compromisos de aislamiento. Las primitivas de Linux, como Landlock y seccomp, también pueden utilizarse directamente cuando un equipo quiere una superficie de control menor.
Esas opciones resuelven partes distintas del problema. Los contenedores y pods proporcionan sustratos de ejecución. Las microVM pueden ofrecer un límite de aislamiento más fuerte a cambio de tiempo de arranque y gestión de imágenes. Los runners de CI son útiles para trabajos repetibles, pero pueden resultar incómodos para el desarrollo interactivo. La política directa del kernel puede ser ligera, aunque deja que los equipos construyan por su cuenta la intermediación de credenciales, la mediación de red, la gestión del ciclo de vida y las convenciones de auditoría.
El argumento de OpenShell es que las cargas de trabajo de agentes necesitan coordinar esas piezas. Una política debería describir no solo qué puede leer el proceso, sino qué ejecutable puede llamar a qué endpoint, qué credencial está vinculada a ese endpoint, cómo cambia una política en ejecución y cómo se registra el resultado. Esa coordinación es la principal razón de existir del proyecto.
Por eso, la comparación correcta no es OpenShell contra Docker. Es OpenShell más un runtime frente a un runtime por sí solo, con la política y la pasarela adicionales medidas contra la complejidad que introducen. Para un comando de compilación no confiable y sencillo, OpenShell puede ser innecesario. Para un agente que puede explorar un repositorio, instalar herramientas, llamar a APIs y lanzar subprocesos durante una sesión larga, la capa adicional puede estar justificada.
Un plan de evaluación sensato
Empieza con un host desechable y un repositorio pequeño. Registra el sistema operativo del host, las funciones del kernel, el motor de contenedores, la versión de OpenShell, la imagen del sandbox, la versión del agente y la configuración del proveedor. No empieces con credenciales de producción ni con un proyecto que contenga secretos no relacionados.
Crea un sandbox de referencia. Confirma qué archivos son visibles, qué rutas se pueden escribir, qué usuario es propietario de los procesos y qué ocurre cuando un comando intenta utilizar la red. Ejecuta las mismas comprobaciones desde el agente, desde un shell lanzado por el agente y desde un proceso hijo.
Añade un servicio cada vez. Un paquete o servicio Git de solo lectura es un comienzo mejor que el acceso web sin restricciones. Prueba el camino positivo y varios caminos negativos. Mantén la política bajo control de versiones, revísala como si fuera código y anota por qué son necesarios cada endpoint y cada binario permitidos.
Después prueba los cambios de política durante una sesión. Confirma qué secciones requieren un sandbox nuevo y cuáles pueden recargarse en caliente. Verifica que una petición denegada siga denegada hasta que se aplique realmente el cambio aprobado. Prueba la reversión y el manejo de fallos. Un sistema de control de acceso debe evaluarse cuando la pasarela no está disponible, una política está malformada, falta un proveedor y una petición de red agota el tiempo de espera.
Por último, simula un incidente. Entrega al agente una instrucción de repositorio que le pida buscar secretos, llamar a un endpoint no aprobado o modificar un archivo fuera del árbol de trabajo. El objetivo no es engañar al modelo por entretenimiento. Es determinar si el límite bloquea la acción, si el error resulta comprensible, si el evento queda registrado y si un operador puede endurecer la política sin destruir la sesión.
El veredicto
NVIDIA OpenShell resulta interesante porque trata la autoridad de los agentes como infraestructura y no como una promesa incrustada en un prompt de sistema. Su código con licencia Apache, sus políticas declarativas, los controles de sistema de archivos respaldados por el kernel, la mediación de red, las credenciales de proveedores y el modelo de pasarela ofrecen a los desarrolladores algo concreto que probar. El proyecto también conecta de forma natural con el ecosistema de código abierto: admite varios harnesses de agentes, expone SDK, documenta una vía para Kubernetes y puede ejecutarse en hardware que no sea de NVIDIA.
La cautela es igual de concreta. El proyecto no es un sistema universal de seguridad, sus políticas pueden ser difíciles de diseñar, sus hipótesis sobre el host deben verificarse y su amplitud funcional eleva el coste de un despliegue cuidadoso. Una regla de red de denegación por defecto solo sirve si las excepciones siguen siendo estrechas. Un sandbox solo sirve si se entienden el host y la imagen. Un intermediario de credenciales solo sirve si se prueban los permisos del proveedor y la inspección de peticiones.
Para los lectores de Open Source Radar, el siguiente paso razonable es una prueba de laboratorio, no una migración a producción. Utiliza OpenShell para construir un arnés de pruebas repetible para los flujos de agentes que actualmente tienen demasiada autoridad. Mide las acciones bloqueadas, los falsos positivos, el comportamiento de arranque, la revisión de políticas, los registros y la recuperación. Si los controles superan ese proceso sin convertir cada tarea en una cola de aprobaciones, OpenShell podría convertirse en una base práctica para desarrollar agentes más seguros. Si no lo hacen, el experimento seguirá mostrando exactamente dónde depende el flujo de trabajo de la autoridad ambiental, y esa es una información que necesita la mayoría de los proyectos de agentes.
Fuentes
- Repositorio y README de NVIDIA OpenShell.
- Políticas de sandbox de OpenShell.
- Add Runtime Controls to AI Agents with NVIDIA OpenShell, blog técnico de NVIDIA.
- Descripción del producto y preguntas frecuentes de NVIDIA OpenShell.
- Licencia de OpenShell.
- Cobertura de Associated Press sobre la plataforma de seguridad.
- Contexto de discusión en la portada de Hacker News.
Comments
Sign in to comment.
No comments yet.