Strands Box : un bac à sable open source pour agents qui combine isolation du système et « politiques sémantiques », et décide selon les actions passées

Published · AI Daily — AI-assisted deep research, methodology & disclosure

strands-agents/box est un moteur de bac à sable open source pour agents d'IA de l'équipe Strands Agents, écrit en Rust sous licence Apache-2.0. Il associe l'isolation au niveau du système et des politiques permit/forbid en langage Dogwood, exécutées par un moteur hors du processus de l'agent, avec refus par défaut. C'est une préversion pour macOS sur puce Apple uniquement, avec environ 393 étoiles à la rédaction ; aucun audit de sécurité indépendant vu.

strands-agents/box est un projet open source de l'équipe Strands Agents, décrit comme « un moteur de bac à sable open source pour agents d'IA ». Le dépôt est écrit en Rust sous licence Apache-2.0. Il a été créé le 2 octobre 2026, la dernière poussée date du 12 octobre, et il compte environ 393 étoiles et 19 forks à la rédaction. La question est pratique. Quand un agent peut exécuter des commandes, lire et écrire des fichiers, accéder au réseau et appeler des outils extérieurs, comment faire de « ce qu'il peut faire » non plus une phrase dans un prompt, mais une frontière appliquée par un programme ? Le projet ne se lie pas à un agent précis. On choisit le programme ou le binaire à exécuter, on règle son accès dans box.toml et on écrit ses politiques dans policy.dw.

La conception a deux couches. La première est l'isolation du système : les droits d'accès directs de box.toml, par exemple les répertoires lisibles et inscriptibles ou les programmes lançables, sont appliqués par le système d'exploitation hôte. La seconde est la « politique sémantique » dans un langage appelé Dogwood, qui n'a que deux types de règles, permit et forbid. Les opérations vérifiées par le moteur de politiques sont refusées par défaut, un permit correspondant doit les autoriser, et un forbid correspondant l'emporte sur cette autorisation. Ce qui est intéressant, c'est la disposition des pièces. Strands Shell, Monty pour Python, la passerelle de sortie et le courtier MCP envoient chacun leurs opérations au moteur local Dogwood intégré. Ce moteur tourne dans le processus propre de Box, hors du bac à sable de l'agent. L'agent peut envoyer des requêtes aux interpréteurs de Box, mais pas les programmes externes ni les serveurs MCP locaux, et le trafic réseau des programmes externes passe par défaut par la passerelle de Box.

Cette disposition donne plusieurs capacités concrètes. D'abord, les interpréteurs et les passerelles partagent un même historique d'événements, donc les règles peuvent utiliser les actions passées et le temps écoulé. L'exemple du README est la lecture d'un fichier via Shell ou Python qui conduit la passerelle à refuser une requête HTTP sortante ultérieure, ce qui ressemble plus à une vraie fuite de données qu'une simple liste d'adresses autorisées. Ensuite, la passerelle de sortie vérifie les connexions et les requêtes HTTP, y compris méthode et chemin, et le courtier MCP vérifie les appels d'outils configurés et leurs arguments. Troisièmement, la passerelle peut authentifier les requêtes autorisées avec des identifiants d'API configurés ou une signature AWS SigV4, si bien que l'agent ne reçoit pas les secrets sous-jacents. Enfin, chaque décision est enregistrée en OTLP JSON, par défaut dans private/telemetry/records.jsonl sous le répertoire de la box, ce qui aide à l'audit.

Avant de l'utiliser, lisez les limites que le projet indique. C'est une préversion, qui ne gère que l'exécution locale sur macOS avec puce Apple. Le guide demande macOS 15 ou plus, Node.js 22.21 ou plus via Homebrew et l'accès à Claude Opus 5 sur Amazon Bedrock en us-west-2. Le script de téléchargement vérifie la somme de contrôle de la version et décompresse les binaires dans ./box-core sans toucher au PATH ni aux répertoires système. Ensuite, le README dit que les droits directs sur le système de fichiers dans box.toml sont appliqués par le système et ne produisent pas de décisions Dogwood individuelles. Pour appliquer une politique aux opérations sur fichiers, utilisez les interpréteurs et gardez ces fichiers hors des droits directs de l'agent. Enfin, tout cela vient de la description du projet. Nous ne l'avons pas exécuté, et nous n'avons vu ni audit de sécurité indépendant ni test d'intrusion.

Comment le juger ? Pour les équipes qui construisent des agents, il propose un partage clair : le système décide de ce qui peut être touché, le moteur de politiques décide à quelles conditions une action est permise, et les deux sont hors de l'agent. C'est bien plus fiable que d'écrire « merci de ne pas divulguer le mot de passe » dans un prompt, et plus fin qu'un bac à sable à simple liste d'adresses autorisées. Le coût est d'apprendre un nouveau langage de politiques et de faire passer fichiers, réseau et appels d'outils par Box. Il ne tourne pas encore sous Linux ni Windows. Si votre agent touche à des données sensibles, essayez d'abord l'exemple fourni avec le SDK Python de Strands, lisez les enregistrements de décision, puis décidez si cela vaut la peine de changer votre façon d'exécuter les agents.

Sources

FAQ

Quel problème Strands Box résout-il, et comment ?

Il pose deux couches de limites autour du processus qui exécute un agent. La première est un bac à sable du système : box.toml fixe les fichiers, programmes et réseaux que l'agent peut atteindre directement, et le système hôte les applique. La seconde est la politique sémantique : policy.dw contient des règles permit et forbid en Dogwood, jugées par un moteur local hors de l'agent. Les opérations vérifiées par le moteur sont refusées sauf si un permit correspondant les autorise, et un forbid correspondant l'emporte. Box ne dépend d'aucun agent précis : vous choisissez le programme ou le binaire à lancer.

Que veut dire « politique sensible à l'historique » ?

Les interpréteurs et passerelles de Box partagent un même historique d'événements, donc les règles peuvent utiliser les actions passées et le temps écoulé. L'exemple du README : la lecture d'un fichier via Shell ou Python peut amener la passerelle à refuser une requête HTTP sortante ultérieure. La passerelle peut aussi vérifier la méthode et le chemin d'une requête, le courtier MCP vérifie les appels d'outils configurés et leurs arguments, et la passerelle peut ajouter des identifiants d'API ou une signature AWS SigV4 pour que l'agent ne détienne jamais le secret. Chaque décision est enregistrée en OTLP JSON.

Est-ce prêt pour la production, et quelles sont les limites ?

Le projet se présente lui-même comme une préversion. Il ne gère que l'exécution locale sur macOS avec puce Apple. Le guide demande macOS 15 ou plus, Node.js 22.21 ou plus via Homebrew et Claude Opus 5 sur Amazon Bedrock. Autre limite : les droits directs sur le système de fichiers dans box.toml sont appliqués par le système et ne produisent pas de décisions Dogwood. Pour appliquer une politique aux opérations sur fichiers, passez par les interpréteurs de Box et gardez ces fichiers hors des droits directs. Aucun audit indépendant vu : ne l'utilisez pas pour des données de grande valeur sans votre propre revue.