Aller au contenu principal

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 safe permet
  • 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 neutral permet
  • 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’analyse
  • neutral : créer et modifier des fichiers sans supprimer
  • destructive : opérations à risque — toujours avec auto_approve = false
  • yolo : réservé aux environnements jetables (CI/CD, containers)
  • Combinez safety et enabled_tools pour un contrôle granulaire
  • En cas de doute, commencez par safe et montez progressivement