← Retour au blog
AiEnviron 7 min de lecture

OpenShell de NVIDIA fait appliquer la politique des agents dans le noyau

Publié le 31 oct. 2026
OpenShell de NVIDIA fait appliquer la politique des agents dans le noyau

OpenShell de NVIDIA a récolté environ 8 000 étoiles GitHub ce mois-ci, ce qui, pour un projet d'infrastructure, représente une quantité d'attention étrange. C'est un runtime pour agents autonomes, écrit en Rust, sous Apache 2.0, et il fait une chose facile à décrire et difficile à construire : il impose au niveau du noyau ce qu'un agent peut toucher, et il vérifie formellement un changement de politique avant de le laisser s'appliquer.

Le problème qu'il traite est celui qui apparaît la première fois qu'on donne de vrais identifiants à un agent. Un agent n'est utile que s'il peut lire des fichiers, installer des paquets, appeler des API et utiliser des secrets. À ce stade, c'est aussi un programme qui a vos clés et votre réseau. La plupart des équipes gèrent ça avec un conteneur et une prière.

À quoi ressemble vraiment l'application

OpenShell exécute chaque agent dans un bac à sable isolé et instrumente le noyau pour vérifier la politique à chaque accès fichier, appel système et connexion réseau, à l'exécution. Les connexions sont contrôlées avant de quitter le bac à sable. Les identifiants ne sont pas remis à l'agent du tout : OpenShell les injecte dans les requêtes destinées aux points de terminaison approuvés, si bien qu'une injection de prompt qui vide l'environnement de l'agent ne renvoie rien d'utile.

La fonction la plus inhabituelle, c'est le démonstrateur de politique. Avant qu'un changement de politique soit approuvé, OpenShell utilise la vérification formelle pour identifier quel nouvel accès ce changement accorderait, par exemple atteindre un nouvel hôte avec des identifiants ou appeler une nouvelle méthode d'API. Ces changements attendent une revue humaine.

C'est une vraie décision de conception, et elle inverse le flux habituel. La plupart des outils de bac à sable vous demandent d'écrire une politique en amont, puis de découvrir douloureusement ce que vous avez oublié. OpenShell laisse l'agent demander l'accès au fil du travail, et vous montre le diff avant qu'il prenne effet. Savoir si c'est mieux dépend de la confiance que vous accordez à votre propre processus de revue à 18 heures un vendredi.

一个半透明的封闭立方体悬浮在暗场中,内部有细密网格与光路,边界清晰

L'installation

Le démarrage rapide tient en une ligne et une commande :

curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh, puis openshell sandbox create --name demo. L'installeur met en place la CLI et une passerelle locale.

Les prérequis sont le premier vrai obstacle : Linux, macOS sur Apple Silicon, ou Windows via WSL 2, que le projet étiquette comme expérimental. Il faut aussi Docker, Podman, ou de la virtualisation hôte disponible. Si votre équipe développe sous Windows sans WSL, ce n'est pas une installation en cinq minutes. Il existe un chemin Windows natif séparé via Microsoft MXC, documenté dans une branche à part, avec ses propres limites, et il vaut la peine de le lire avant de promettre un déploiement Windows.

L'image de bac à sable par défaut est un Ubuntu minimal sans agent installé. Pour faire tourner quelque chose de réel, la documentation détaille l'exécution d'OpenCode contre un modèle OpenRouter gratuit, y compris le moment où l'agent se heurte à un mur et où vous approuvez le nouvel accès dont il a besoin. Cette démonstration est la page la plus utile du dépôt, parce qu'elle montre la boucle d'approbation au lieu de la décrire.

Il y a des SDK si vous voulez le piloter depuis du code : Python via uv add openshell, TypeScript via une installation GitHub Packages, plus Go et Rust. Il y a aussi des compétences d'agent, installables avec npx skills add NVIDIA/OpenShell, qui apprennent à un agent de codage à piloter la CLI et à écrire des politiques. Ce détail est plus intéressant qu'il n'y paraît. Le projet attend de l'agent qu'il aide à configurer sa propre cage, ce qui est soit efficace, soit alarmant, selon que la boucle d'approbation devant le démonstrateur de politique est réellement utilisée.

La facture opérationnelle

Tout ce qui instrumente le noyau a une histoire de déploiement plus compliquée qu'un pip install, et OpenShell est honnête là-dessus. Il y a une passerelle, un superviseur et le bac à sable lui-même. Pour Kubernetes, vous déployez la passerelle avec Helm et votre CNI doit réellement appliquer les NetworkPolicy, ce qui est une phrase qui a ruiné beaucoup d'après-midi. Si le plugin réseau de votre cluster ignore ces règles, la frontière du bac à sable est un document plutôt qu'un contrôle, et vous ne le découvrirez qu'au moment où quelque chose ira mal.

La numérotation des versions vous dit où il en est. La série 0.1.x a introduit un rythme de publication stable, de nouvelles primitives d'isolation et de nouvelles API, ce qui veut dire que la surface d'API bouge encore. Les équipes qui adoptent maintenant doivent prévoir du travail de mise à jour.

La télémétrie est active par défaut. NVIDIA dit qu'elle se limite à des catégories et des compteurs opérationnels, et qu'elle n'inclut pas les noms de bacs à sable, les noms d'hôtes, les chemins de fichiers, les prompts, les identifiants, les noms de fournisseurs ou de modèles, ni le contenu utilisateur. Vous pouvez la désactiver avec OPENSHELL_TELEMETRY_ENABLED=false sur la passerelle, ou server.telemetryEnabled=false pour les installations Helm. En revue d'entreprise, ce commutateur est la première chose qu'on vous demandera : sachez où il est avant la réunion.

Qui en a besoin maintenant

Si vous faites tourner un agent de codage sur votre portable, vous n'avez pas besoin d'OpenShell. Le rayon d'impact, c'est votre propre machine, et vous avez déjà accepté ce risque en installant l'agent.

Si vous faites tourner une flotte d'agents qui touchent des données de production, des dossiers clients ou un compte cloud avec une vraie facture attachée, le calcul change vite. Le mode de défaillance qui empêche les équipes sécurité de dormir, ce n'est pas un modèle qui dit quelque chose de grossier. C'est un agent muni d'un jeton valide qui fait exactement ce qu'on lui a dit, dans un environnement où « ce qu'on lui a dit » a été influencé par une page web qu'il a lue.

Entre OpenShell et un simple conteneur Docker, la différence est l'emplacement de la frontière de confiance. Un conteneur limite ce qu'un agent peut voir. OpenShell limite ce qu'il peut faire, contrôle le réseau en bordure et garde les identifiants hors de portée de l'agent. C'est une position nettement plus solide, et elle vous coûte une passerelle à exploiter, un fichier de politique à maintenir, et une chose de plus susceptible de vous réveiller la nuit.

Ce qu'il faut surveiller

L'angle de la vérification formelle est la partie que je surveillerais. Si les changements de politique peuvent être contrôlés avant de s'appliquer, la question intéressante devient : ce contrôle est-il utile en pratique ? Attrape-t-il les changements qui comptent, et reste-t-il silencieux sur ceux qui ne comptent pas ? Un démonstrateur qui signale tout se fait cliquer dessus sans lire, et un démonstrateur qui ne signale rien est de la décoration.

NVIDIA a la crédibilité et l'intérêt pour maintenir ça, et le marché de la sécurité des agents est assez grand pour qu'il ne soit pas la seule option. Pour l'instant, si vous construisez la partie d'un produit agent qui décide ce que l'agent a le droit de toucher, c'est l'implémentation la plus concrète qu'on puisse lire. Lire le modèle de politique vaut une heure, même si vous ne l'installez jamais, parce que ça vous force à répondre à une question que la plupart des projets d'agent sautent : ce truc a exactement le droit de faire quoi, et qui en a décidé.

Articles associés