Modèle / jeu de données
superagent-ai/superagent avatar
superagent-ai/superagent

superagent-ai/superagent : un SDK de garde-fous pour agents, adossé à une API distante

Superagent protects your AI applications against prompt injections, data leaks, and harmful outputs. Embed safety directly into your app and prove compliance to your customers.

6 748 étoiles963 forksTypeScriptMIT

En bref

De quoi s’agit-il ?
Le dépôt publie des SDK TypeScript et Python autour de quatre primitives (guard, redact, scan, test) et une licence MIT. La lecture du README montre surtout une dépendance forte à un service hébergé et une clé d'API.
À qui s’adresse-t-il ?
Adoptez superagent si vous voulez ajouter une couche de classification et de caviardage sans écrire vos propres règles, et si l'envoi de vos entrées à un service tiers est compatible avec votre politique de données. Évitez-le si votre contrainte est l'inférence entièrement locale ou si vous avez besoin de la fonction test, marquée comme à venir dans le README.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 22 jours.
En quel langage est-il écrit ?
Principalement TypeScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Ce que le paquet safety-agent recouvre réellement

Le README présente quatre fonctions. Guard classe une entrée utilisateur et renvoie une valeur de classification, avec la possibilité de bloquer. Redact supprime les données personnelles, de santé et les secrets d'un texte. Scan analyse un dépôt distant pour y chercher des instructions malveillantes ou un empoisonnement de dépôt. Test lance des scénarios de red team contre un agent en production. Cette dernière est explicitement annotée comme à venir, ce qui réduit le périmètre utilisable aujourd'hui à trois fonctions. Le public visé est l'équipe qui construit un agent avec appels d'outils et qui veut intercepter les entrées avant qu'elles n'atteignent le modèle, puis nettoyer les sorties avant qu'elles ne repartent vers l'utilisateur ou un journal. Ce n'est pas un pare-feu réseau ni un scanner de dépendances : le README parle d'attaques ciblant les agents, pas de vulnérabilités de bibliothèques.

Le trajet d'une entrée entre votre processus et le service

Le mécanisme visible dans les exemples est celui d'un client mince. createClient() construit un objet, puis chaque appel (guard, redact, scan) prend un objet de paramètres et renvoie une promesse. Les exemples Python utilisent await de la même façon, donc le SDK suppose un contexte asynchrone. Rien dans le README ne décrit le classifieur lui-même : ni les catégories de violation, ni le format exact de violation_types, ni le modèle utilisé par défaut. Le seul indice sur l'exécution est la mention d'open-weight models, qui laisse entendre qu'une partie du travail peut tourner sur votre infrastructure, et l'argument de latence de 50 à 100 ms. Le README ne dit pas si ce chiffre correspond à une exécution locale ou à un appel réseau. Autrement dit, l'architecture réelle se lit dans les sous-dossiers du dépôt (sdk/typescript, sdk/python, cli, mcp) plus qu'elle n'est expliquée. Le serveur MCP ouvre un usage depuis Claude Code et Claude Desktop, ce qui suggère qu'une partie du produit est consommable sans écrire de code.

Installation, clé et première requête

Les commandes sont dans le README. Côté Node, npm install safety-agent. Côté Python, uv add safety-agent, ce qui suppose l'outil uv plutôt que pip. La configuration tient en une variable d'environnement, SUPERAGENT_API_KEY, à définir avant l'exécution, par exemple avec export SUPERAGENT_API_KEY=your-key. Le README précise qu'il faut créer un compte sur superagent.sh pour obtenir cette clé, ce qui confirme que le SDK n'est pas autonome. La fonction redact accepte un second paramètre nommé model, avec l'exemple openai/gpt-4o-mini, donc la rédaction s'appuie sur un modèle que vous choisissez et dont le coût vous est probablement facturé. L'appel scan renvoie un objet usage contenant un champ cost, que l'exemple affiche avec quatre décimales. C'est le seul endroit du README où un coût est exposé, et il l'est par appel, pas par mois. Pour un test rapide, la voie la plus courte reste le CLI ou le serveur MCP, tous deux listés dans le tableau des options d'intégration avec un lien vers leur propre README.

Le point faible : la dépendance au service et le silence sur les seuils

Le dépôt est sous MIT, mais la bibliothèque n'est qu'une façade. Si le service superagent.sh est indisponible, ou si la clé expire, guard et redact échouent dans votre chemin de requête. Le README ne documente ni comportement de repli, ni mode dégradé, ni politique de nouvelle tentative. C'est une limite de conception, pas un détail d'implémentation : un garde-fou placé en amont du modèle devient un point de défaillance unique. Deuxième angle mort, les seuils. Le README montre une comparaison result.classification === "block" sans indiquer les autres valeurs possibles, ni comment ajuster la sensibilité, ni ce qui se passe pour une entrée limite. Troisième angle mort, la confidentialité : l'appel redact envoie le texte à traiter, donc potentiellement les données que vous cherchez justement à protéger, vers un composant dont le README ne décrit pas l'hébergement. Le README affirme que Guard peut tourner sur votre infrastructure, mais ne donne aucune commande pour le faire. Tant que cette partie n'est pas documentée dans les fichiers liés, considérez que l'exécution locale est une intention, pas une capacité vérifiable.

Ce que scan apporte que les analyseurs statiques n'apportent pas

Scan prend une URL de dépôt et renvoie un rapport de sécurité. L'angle est différent de celui d'un analyseur de code classique : il cherche des instructions destinées à un agent, par exemple un fichier de configuration ou un commentaire qui détournerait le comportement d'un assistant qui lit le dépôt. C'est un scénario concret quand un agent a accès à un dépôt externe ou à de la documentation tierce. La contrepartie est le coût par analyse, exposé via usage.cost. Pour un dépôt analysé à chaque commit, cette facturation à l'appel change l'économie par rapport à un outil installé localement, où le coût marginal est nul. Le README ne précise ni la taille de dépôt supportée, ni les langages couverts, ni le format exact du rapport renvoyé dans result.result. Ces trois inconnues suffisent à justifier un essai sur un dépôt jetable avant toute intégration en CI.

Face à quoi on le compare vraiment

L'alternative la plus proche n'est pas un produit concurrent mais une bibliothèque de validation locale, du type de celles qu'on branche autour d'un appel de modèle pour filtrer les entrées et masquer les données sensibles. La différence tient à l'endroit où vit la logique. Une bibliothèque locale vous laisse définir vos propres expressions régulières, vos listes de motifs et vos seuils, et vous facture zéro par appel, au prix d'un travail de maintenance et d'une couverture forcément limitée à ce que vous avez anticipé. Le SDK de superagent déplace ce travail vers un classifieur maintenu par l'éditeur, ce qui couvre des formulations que vos règles n'attraperaient pas, mais introduit un appel réseau, un coût unitaire et une dépendance externe. Le choix se joue donc sur la sensibilité des données et sur la tolérance à la latence ajoutée. Un agent qui traite des dossiers médicaux et un agent qui reformule des tickets internes n'ont pas la même réponse à cette question.

Maintenance, versions et implications de licence

Le dépôt publie des versions séparées par langage : les tags node-v0.0.9 et rust-v0.0.8 puis rust-v0.0.9 datent de septembre 2025, tandis que le dernier push sur main est daté du 25 août 2026. Le décalage entre les deux dates mérite un coup d'œil sur le journal des commits avant de figer une version, car il peut signaler du travail non publié ou une publication moins fréquente que les commits. La présence de tags rust-* alors que le README ne documente que TypeScript et Python indique des composants Rust dans l'arborescence, sans que le README en décrive l'usage. La licence affichée est MIT, ce qui autorise en principe la réutilisation et la modification, mais ce constat porte sur la racine du dépôt : pour un composant Rust ou pour les modèles publiés sur HuggingFace, il faut lire la licence propre à chaque artefact, car elle peut différer. Le coût de mise à jour se concentre sur deux points : les changements de forme des objets renvoyés par guard et redact, que le README illustre par des exemples sans figer de schéma, et le suivi de la variable SUPERAGENT_API_KEY si l'authentification évolue. Aucun de ces deux points n'est couvert par une promesse de compatibilité dans le matériel fourni.

Conclusion éditoriale

Adoptez superagent si vous voulez ajouter une couche de classification et de caviardage sans écrire vos propres règles, et si l'envoi de vos entrées à un service tiers est compatible avec votre politique de données. Évitez-le si votre contrainte est l'inférence entièrement locale ou si vous avez besoin de la fonction test, marquée comme à venir dans le README. Avant de vous engager, vérifiez trois choses dans le dépôt : le contenu réel de sdk/typescript/README.md et sdk/python/README.md, les modèles publiés sur la page HuggingFace superagent-ai, et la licence des artefacts Rust associés aux tags rust-v0.0.9, qui peuvent différer du MIT affiché à la racine.

Sources officielles

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. superagent-ai/superagent on GitHub
Notes de la communauté

Notes de la communauté