Sécurité, validations et autorisations

Vibe Code peut lire des fichiers, modifier du code, exécuter des commandes shell et appeler des outils externes en votre nom. Pour vous garantir un contrôle total sur ce qui s’exécute et ce qui change, Vibe Code repose sur des contrôles en couches :

  • Agents : des profils de configuration ; ils regroupent un prompt système, la sélection d’outils et les règles d'approbation. Ils définissent ce qui est validé automatiquement.
  • Dossiers de confiance : ils déterminent si Vibe peut charger la configuration projet, les compétences et les fichiers d’agent depuis le répertoire courant.
  • Permissions par outil : vous affinez ou assouplissez l’accès pour chaque outil.

Vibe demande également une confirmation à chaque fois qu'un outil tente de lire, écrire ou exécuter une commande en dehors du répertoire de travail et des répertoires ajoutés avec --add-dir, sauf si chaque appel d'outil est approuvé automatiquement (agent auto-approve ou --auto-approve). Vibe demande aussi confirmation avant qu'un outil lise ou modifie les fichiers .env et .envrc, même lorsque la permission de l'outil est always. Un chemin listé dans l'allowlist de l'outil ignore les deux vérifications.

Cette page détaille le fonctionnement de ces contrôles et leurs interactions.

Agents

Agents

L’agent actif définit la façon dont Vibe demande une validation avant d’exécuter des outils ; il peut également modifier le prompt système, le prompt de compaction, le modèle, les outils disponibles et d’autres paramètres.

Utilisez l’un des agents intégrés ci-dessous. Pour changer, définir un agent par défaut ou créer le vôtre, consultez la section Agents dans la CLI ou l’extension VS Code.

AgentComportement d’approbationUsage recommandé
askDemande une validation avant d’exécuter tout outil.Exploration d'une base de code inconnue, ou tout travail où vous souhaitez valider chaque action.
accept-editsPar défaut. Approuve automatiquement les modifications de fichiers. Continue de demander confirmation pour les commandes shell et les autres outils sensibles.Travail quotidien et refactorisations dont la portée est déjà définie.
smart-approveClasse chaque appel d’outil. Exécute ceux qu’il juge sûrs et vous demande une validation pour les appels risqués. Voir Validation intelligente.Travail quotidien avec moins de demandes de validation.
auto-approveValide automatiquement chaque action, y compris les commandes shell. Votre administrateur peut le désactiver.Environnements de confiance et isolés uniquement. À utiliser avec discernement.
Avertissement

En mode programmatique (vibe --prompt …), Vibe utilise votre default_agent comme dans les sessions interactives et désactive les outils interactifs tels que ask_user_question. Personne ne peut répondre à une demande d'approbation : Vibe refuse donc chaque appel d'outil nécessitant une approbation. Passez --auto-approve (ou --yolo) pour approuver chaque appel d'outil — uniquement dans un environnement sandbox. Vibe ignore ces options lorsque votre administrateur définit enable_auto_approve = false.

Validation intelligente

Validation intelligente

La plupart des demandes de validation portent sur des actions que vous auriez approuvées de toute façon. L’agent smart-approve supprime ces demandes et vous garde dans la boucle pour les actions risquées.

Sélectionnez-le avec Shift+Tab, ou démarrez une session avec :

vibe --agent smart-approve
# or
vibe --smart-approve

La validation intelligente se déploie progressivement. Si elle n'apparaît pas lorsque vous appuyez sur Shift+Tab, démarrez Vibe avec l'une des commandes ci-dessus ou définissez default_agent = "smart-approve".

Pour chaque appel d’outil qui nécessiterait sinon une validation, Vibe :

  1. Applique d’abord vos règles de permission. Les commandes autorisées s’exécutent sans vérification, et les commandes bloquées restent bloquées. Voir Permissions par outil.
  2. Réutilise les validations déjà accordées pour le même appel dans la session en cours.
  3. Classe l’appel. Un modèle évalue l’appel à partir de votre demande et des arguments de l’outil. Les appels jugés sûrs s’exécutent immédiatement, avec une note expliquant pourquoi ils ont été validés automatiquement.
  4. Retient les appels risqués. Vibe renvoie la raison à l’agent pour qu’il essaie une approche plus sûre. Il vous demande de confirmer lorsque l’agent enchaîne les appels risqués, répète le même appel, ou lorsque le classifieur ne parvient pas à trancher.

Un appel jugé risqué ne s’exécute jamais sans votre confirmation. En mode programmatique, où personne ne peut confirmer, les appels risqués sont refusés.

Avertissement

La validation intelligente est un classifieur, pas une sandbox. Un appel qu'elle juge sûr s'exécute avec les mêmes accès que votre compte utilisateur. La validation intelligente réduit les prompts, mais ne limite pas ce que l'agent peut faire. Si vous travaillez avec du code non fiable ou des identifiants sensibles, utilisez l'agent ask ou un environnement isolé.

Choisir le modèle de validation intelligente

Choisir le modèle de validation intelligente

Chaque classification est un appel de modèle distinct. Il n’utilise pas forcément le modèle de votre session. Vibe choisit le modèle du classifieur dans cet ordre :

  1. Le modèle défini par smart_approve dans [utility_models].
  2. Sinon, un petit modèle Mistral rapide, lorsque votre fournisseur Mistral en propose un.
  3. Sinon, le modèle de votre session, plus coûteux par appel.

Définissez smart_approve sur l’alias de l’un de vos préréglages [[models]], ou sur active pour toujours utiliser le modèle de la session :

[utility_models]
smart_approve = "classifier"

[[models]]
name = "mistral-small-latest"
provider = "mistral"
alias = "classifier"

Un modèle plus petit ajoute moins de latence et de coût à chaque appel d’outil. Un modèle plus grand évalue le risque avec plus de soin. Si l’alias ne correspond à aucun modèle configuré, ou si allowed_models l’exclut, Vibe affiche un avertissement et revient à la sélection automatique.

Voir [utility_models] dans la référence de configuration.

Dossiers de confiance

Dossiers de confiance

Un projet peut embarquer sa propre configuration Vibe (agents, compétences, serveurs MCP, permissions d’outils) dans un répertoire .vibe/ à la racine du repository. Comme ces paramètres modifient le comportement de Vibe, Vibe ne les charge que depuis les répertoires que vous avez explicitement approuvés.

Le contenu de confiance comprend l'un des éléments suivants dans le répertoire ou ses ancêtres :

  • Un répertoire .vibe/ contenant un fichier config.toml ou un sous-répertoire agents/, skills/, prompts/, plugins/ ou tools/
  • Un répertoire .agents/skills/ (compétences standard Agent Skills)
  • Un fichier AGENTS.md (instructions d'agent au niveau du projet)

Fonctionnement :

  • Lorsqu'une session interactive démarre dans un répertoire contenant du contenu de confiance que vous n'avez pas approuvé, Vibe demande si le dossier peut être approuvé. Si vous choisissez Ne pas approuver, Vibe pose à nouveau la question la prochaine fois.
  • La boîte de dialogue de confiance liste les fichiers de confiance qu'elle a détectés. Choisissez Approuver le dossier, Approuver tout le dépôt (proposé lorsque vous démarrez Vibe dans un sous-répertoire d'un dépôt git) ou Ne pas approuver. La boîte de dialogue n'analyse pas ces fichiers : relisez-les vous-même.
  • Les dossiers de confiance sont enregistrés dans ~/.vibe/trusted_folders.toml.
  • Si vous refusez ou n’avez pas encore approuvé un dossier, la configuration projet est ignorée et Vibe affiche un avertissement. La configuration utilisateur dans ~/.vibe/ reste active.
Astuce

Avant d’accorder la confiance à un répertoire, traitez sa configuration .vibe/ comme n’importe quel autre code du dépôt : auditez-la, en particulier les définitions de serveurs MCP et les permissions d’outils, car elles peuvent donner accès à des services externes ou à des commandes locales.

Confiance temporaire (CLI)

Confiance temporaire (CLI)

Le flag vibe --trust approuve le dossier de travail pour la seule exécution en cours et ne persiste pas.

Le mode programmatique ne demande jamais de validation de confiance. Utilisez --trust pour accorder une confiance temporaire lors d’un script Vibe.

# Trust the current project for one run, then exit
vibe --trust --prompt "Summarize the project structure"

--worktree approuve également son worktree pour la durée de l'exécution. Vibe charge la configuration du projet depuis les répertoires ajoutés avec --add-dir sans demander d'approbation : n'ajoutez donc que des répertoires de confiance.

Permissions par outil

Permissions par outil

Au-delà des modes d'agent, vous pouvez restreindre ou élargir les permissions d'outils individuels dans config.toml. Cela s'applique aux outils intégrés (read_file, write_file, edit, bash, etc.) ainsi qu'aux outils MCP et aux connecteurs.

Note

Certains outils intégrés ont été renommés : read devient read_file et search_replace devient edit. Vibe migre automatiquement les anciens noms dans vos fichiers de configuration.

Activer ou désactiver des outils

Activer ou désactiver des outils

Activez/désactivez globalement des outils par nom exact, motif ou regex :

# Only allow reading files and loading skills
enabled_tools = ["read_file", "skill"]

# Or disable a specific class of tools
disabled_tools = ["bash"]
Définir les permissions par outil

Définir les permissions par outil

Définissez si Vibe doit demander confirmation avant d'utiliser un outil, toujours l'autoriser ou ne jamais l'autoriser :

[tools.read_file]
permission = "always"

[tools.bash]
permission = "ask"

[tools.write_file]
permission = "never"
Listes d’autorisation et de blocage Bash

Listes d’autorisation et de blocage Bash

Pour l'outil bash, vous pouvez aussi autoriser ou bloquer des commandes spécifiques par préfixe. Certaines commandes en lecture seule (ls, pwd, cat, git status, etc.) sont autorisées automatiquement par défaut. Définissez allowlist et denylist pour choisir les commandes que Vibe exécute toujours ou bloque toujours. Chaque paramètre remplace sa liste par défaut ; incluez donc les commandes par défaut que vous souhaitez conserver :

[tools.bash]
permission = "ask"
allowlist = ["git status", "pnpm test"]
denylist = ["rm -rf"]
Outils MCP et connecteurs

Outils MCP et connecteurs

Les outils MCP sont référencés comme {server_name}_{tool_name}. Par exemple, pour autoriser systématiquement un outil get exposé par un serveur MCP nommé fetch_server :

[tools.fetch_server_get]
permission = "always"

Consultez Serveurs MCP pour la configuration complète, et Configuration pour la priorité entre réglages utilisateur et projet.

Modèle d’approbation

Modèle d’approbation

Le modèle de validation est cohérent sur la CLI, l’extension VS Code et Vibe Code Web. L’interface de validation diffère selon la surface :

Les demandes d'approbation s'affichent en bas du terminal. Utilisez le clavier ou cliquez sur une option :

ToucheAction
1 ou yAutoriser l'action une seule fois.
2Autoriser pour le reste de la session.
3Toujours autoriser.
4, n ou ÉchapRefuser l'action.
Flèche haut / Flèche basNaviguer entre les options d'approbation.
EntréeChoisir l'option en surbrillance.

La couleur de la bordure du champ de saisie indique l'agent actif. Changez d'agent en cours de session avec Shift+Tab ou redémarrez avec vibe --agent <name>.

Bonnes pratiques

Bonnes pratiques

  • Démarrez en mode ask ou avec un agent de planification pour une base de code inconnue. Vérifiez chaque action, ou convenez d'un plan, avant d'accorder des accès d'édition ou de shell plus étendus.
  • Validez vos commits avant les opérations risquées. Cela permet un retour immédiat en arrière (git reset --hard).
  • Utilisez accept-edits pour les refactorings de portée délimitée et vérifiez le diff avant de valider.
  • Utilisez smart-approve pour réduire les demandes de validation au quotidien. Il demande toujours une confirmation avant les actions risquées, mais ce n’est pas une sandbox.
  • Réservez auto-approve aux environnements temporaires (conteneurs, runners CI, VMs éphémères). Ne l’utilisez jamais sur des machines contenant des clés SSH, identifiants cloud ou accès production.
  • Faites confiance de façon réfléchie. Vérifiez la configuration .vibe/ d’un dépôt lors de la première utilisation, et après chaque modification.
  • Renforcez la sécurité des outils MCP et connecteurs. Tout ce qui interagit avec des systèmes externes devrait être en permission = "ask" même sous accept-edits.
  • Versionnez votre configuration .vibe/ afin que l’équipe puisse relire et reproduire les décisions de sécurité.
  • Révoquez les accès devenus inutiles. Les connexions GitHub dans Vibe Code Web, les identifiants MCP ou les autorisations de connecteurs doivent être supprimés à la fin d’un projet.