Niveaux de sécurité : safe, neutral, destructive, yolo
Pourquoi les niveaux de sécurité sont essentiels
Quand vous créez un agent custom dans Mistral Vibe, le champ safety détermine les actions que l’agent est autorisé à entreprendre. C’est votre garde-fou principal : un mauvais réglage peut bloquer un agent légitime ou, à l’inverse, lui donner accès à des opérations dangereuses.
Les quatre niveaux de sécurité forment une échelle progressive, du plus restrictif au plus permissif.
Les 4 niveaux en détail
safe — Lecture seule
Le niveau safe limite l’agent aux opérations de lecture. Il peut explorer votre codebase, analyser des fichiers et produire des rapports, mais ne peut rien modifier.
# Agent d'audit de code
display_name = "Security Auditor"
safety = "safe"
enabled_tools = ["read_file", "grep", "list_dir"]
Autorisé :
- Lire des fichiers
- Rechercher dans le code (grep)
- Lister des répertoires
- Analyser et produire des recommandations
Interdit :
- Écrire ou modifier des fichiers
- Exécuter des commandes shell
- Installer des paquets
Cas d’usage : audits de sécurité, revue de code, analyse d’architecture, planification de refactoring.
neutral — Modifications contrôlées
Le niveau neutral permet les opérations d’écriture standard : créer et modifier des fichiers, mais pas les opérations potentiellement destructrices.
# Agent de refactoring
display_name = "Refactoring Assistant"
safety = "neutral"
enabled_tools = ["read_file", "write_file", "edit_file", "grep"]
Autorisé :
- Tout ce que
safepermet - Créer de nouveaux fichiers
- Modifier des fichiers existants
- Éditions partielles de fichiers
Interdit :
- Supprimer des fichiers
- Exécuter des commandes shell arbitraires
- Modifier les permissions système
Cas d’usage : refactoring, génération de code, documentation, corrections de bugs.
destructive — Opérations à risque
Le niveau destructive donne accès aux opérations qui peuvent causer des pertes de données : suppression de fichiers, exécution shell, modifications système.
# Agent de nettoyage
display_name = "Project Cleaner"
safety = "destructive"
auto_approve = false # TOUJOURS false pour destructive
enabled_tools = ["read_file", "write_file", "bash", "grep", "list_dir"]
Autorisé :
- Tout ce que
neutralpermet - Supprimer des fichiers et dossiers
- Exécuter des commandes shell
- Installer/désinstaller des paquets
- Modifier la configuration système
Recommandation forte : gardez auto_approve = false pour ce niveau. Vous voulez valider chaque action destructrice.
Cas d’usage : nettoyage de projet, migration de dépendances, scripts de déploiement.
yolo — Aucune restriction
Le niveau yolo supprime toutes les barrières de sécurité. L’agent peut tout faire sans aucune vérification.
# Agent CI/CD (environnement jetable uniquement)
display_name = "CI Pipeline"
safety = "yolo"
auto_approve = true
enabled_tools = ["read_file", "write_file", "bash", "grep", "edit_file"]
Autorisé : absolument tout, sans confirmation.
Quand l’utiliser : uniquement dans un environnement jetable — container Docker, branche éphémère, pipeline CI/CD. Jamais sur votre machine de développement avec du code de production.
Choisir le bon niveau
La règle d’or est le principe du moindre privilège : donnez à chaque agent le minimum de permissions nécessaire pour accomplir sa tâche.
# Analyse de code ? → safe
vibe --agent security-auditor
# Refactoring ? → neutral
vibe --agent refactoring-assistant
# Déploiement ? → destructive avec auto_approve = false
vibe --agent deployer
# Pipeline CI dans un container ? → yolo
vibe --agent ci-pipeline
Combiner safety et enabled_tools
Le niveau safety et la liste enabled_tools se complètent. Même avec safety = "destructive", si vous ne listez pas bash dans enabled_tools, l’agent ne pourra pas exécuter de commandes shell.
# Destructive MAIS limité à l'édition de fichiers
safety = "destructive"
enabled_tools = ["read_file", "write_file", "edit_file"]
# Pas de bash, pas de suppression via shell
C’est une approche défensive recommandée : utilisez safety pour le niveau global et enabled_tools pour le contrôle fin.
Scénarios pratiques
Agent de revue de PR
display_name = "PR Reviewer"
safety = "safe"
auto_approve = true
system_prompt = """Analysez les changements et produisez un rapport structuré."""
enabled_tools = ["read_file", "grep", "list_dir"]
Ici, safe + auto_approve = true est sûr : l’agent ne peut que lire.
Agent de migration de base de données
display_name = "DB Migrator"
safety = "destructive"
auto_approve = false
system_prompt = """Générez des migrations SQL avec rollback. Demandez confirmation."""
enabled_tools = ["read_file", "write_file", "bash", "ask_user_question"]
destructive + auto_approve = false : l’agent peut exécuter des commandes, mais vous validez chaque étape.
Points clés à retenir
safe: lecture seule — zéro risque, parfait pour l’analyseneutral: créer et modifier des fichiers sans supprimerdestructive: opérations à risque — toujours avecauto_approve = falseyolo: réservé aux environnements jetables (CI/CD, containers)- Combinez
safetyetenabled_toolspour un contrôle granulaire - En cas de doute, commencez par
safeet montez progressivement