Skip to main content
Le système d’autorisation détermine quelles actions l’agent peut effectuer sans vous demander votre approbation. Vous pouvez préapprouver les actions sûres, bloquer les actions dangereuses et toujours demander une confirmation pour les opérations sensibles.

Comportement par défaut des autorisations

Devin CLI utilise un système d’autorisations à plusieurs niveaux pour concilier puissance et sécurité. Le comportement par défaut dépend du mode actuel : Chaque cellule indique si cet outil s’exécute automatiquement (Auto, sans confirmation) ou attend votre approbation (Prompt) dans ce mode : En mode Normal (par défaut), les opérations en lecture seule sont approuvées automatiquement, tandis que les écritures et les commandes shell nécessitent votre approbation explicite. Chaque fois que vous approuvez une action, vous pouvez choisir de l’autoriser une seule fois, pour la session ou de façon permanente pour le projet. En mode Accept Edits, les modifications de fichiers dans l’espace de travail sont approuvées automatiquement, mais les commandes shell et les écritures en dehors de l’espace de travail nécessitent toujours une confirmation. En mode Smart, les modifications dans l’espace de travail sont approuvées automatiquement comme en mode Accept Edits, et toutes les autres actions sont évaluées par un modèle rapide qui ne les exécute automatiquement que lorsqu’elles sont clairement sûres. Toute autre action nécessite une confirmation comme d’habitude. Consultez le mode Smart ci-dessous. En mode Bypass, tous les appels aux outils sont approuvés automatiquement, sans confirmation. En mode Autonomous, les commandes shell et les requêtes réseau sont approuvées automatiquement, car le sandbox au niveau du système d’exploitation limite ce à quoi elles peuvent accéder. Les modifications directes de fichiers via les outils edit/write nécessitent toujours une confirmation, car ces outils fonctionnent en dehors du sandbox. Autonomous n’est disponible que lorsque le sandbox au niveau du système d’exploitation est actif.
Les modes Smart, Bypass et Autonomous ne remplacent pas les autorisations au niveau de l’organisation. Les règles de refus et de demande imposées par les admins, configurées via Team Settings, restent actives quel que soit le mode d’autorisation de l’utilisateur. Consultez Precedence pour plus de détails.

Mode Smart

Smart se situe entre Accept Edits et Bypass. Les modifications de fichiers dans l’espace de travail sont automatiquement approuvées, exactement comme avec Accept Edits. Pour toute autre action — commandes shell, requêtes web, outils MCP, écritures en dehors de l’espace de travail — un modèle rapide détermine si l’action peut être exécutée sans supervision. Si elle est clairement sûre, elle s’exécute sans prompt ; dans le cas contraire, ou si le modèle est incertain ou indisponible, vous recevez le prompt d’approbation normal.
Vous pouvez également passer au mode Smart avec Shift+Tab, le sélectionner dans le sélecteur de mode ou démarrer dans ce mode :
L’évaluation du modèle se limite aux tâches de développement courantes : build, tests, linting, formatage et inspection du projet. Certaines catégories ne sont jamais approuvées automatiquement en mode Smart, quelle que soit l’évaluation du modèle :
  • Installation de packages (npm install, pip install, cargo install, brew install, …)
  • Opérations git qui modifient l’état (les sous-commandes en lecture seule, comme git status, restent éligibles)
  • rm, sudo et autres commandes destructrices ou permettant une élévation de privilèges
  • kubectl delete et opérations destructrices via des CLI cloud (aws, gcloud, az, terraform, …)
  • Toute opération qui lit ou écrit des fichiers dotenv, des clés, la configuration Git ou la configuration propre de l’agent
Smart se distingue des modes voisins par les actions qu’il délègue :
Vos propres règles restent prioritaires. L’évaluation de Smart s’applique uniquement lorsqu’aucune règle ne décide déjà de l’action : une règle deny bloque donc l’action et une règle ask demande toujours une approbation, exactement comme décrit dans Fonctionnement des autorisations. Les règles deny et ask au niveau de l’organisation ne sont pas non plus affectées.
Le mode Smart est déployé progressivement ; il est donc possible qu’il n’apparaisse pas encore dans votre sélecteur de mode ou dans le cycle Shift+Tab.

Mode Autonomous

Autonomous est le mode d’autorisation associé à l’option --sandbox. En pratique, il correspond approximativement à « Accept Edits dans l’espace de travail actuel », avec en plus la possibilité d’exécuter n’importe quelle commande shell, les deux étant confinés par le sandbox au niveau du système d’exploitation. Lorsque le sandbox est actif :
  • C’est le seul mode d’autorisation disponible. Les modes Normal, Accept Edits, Smart et Bypass sont masqués dans les sessions sandbox. Le mode Plan reste disponible.
  • Les commandes shell et les requêtes réseau sont automatiquement approuvées au lieu d’afficher une demande de confirmation, car le sandbox contrôle ce qu’elles peuvent lire, écrire et atteindre sur le réseau.
  • Les modifications directes de fichiers via les outils edit et write continuent de demander une confirmation. Ces outils s’exécutent dans le processus CLI plutôt qu’à l’intérieur du sandbox, et ne peuvent donc pas être confinés par celui-ci. Accorder un périmètre Write(...) dans le prompt étend dynamiquement le sandbox afin que les commandes shell suivantes puissent y écrire.
  • Les périmètres Write(...) accordés en cours de session étendent dynamiquement le sandbox pour les commandes suivantes. Les approbations Read(...) accordées en cours de session affectent uniquement les propres outils de l’agent ; les chemins masqués par les règles de refus Read(...) restent masqués pendant toute la session.
Utilisez Bypass lorsque vous voulez une exécution sans restriction, sans isolation au niveau du système d’exploitation ; utilisez --sandbox (qui sélectionne Autonomous) lorsque vous voulez une exécution non supervisée avec des restrictions imposées par le système d’exploitation sur l’accès au système de fichiers et au réseau. Consultez la référence de configuration du sandbox pour en savoir plus sur les racines accessibles en écriture, les règles de refus et le filtrage des domaines, ainsi que Team Settings → Sandbox Enforcement pour les contrôles au niveau Enterprise.

Fonctionnement des autorisations

Lorsque l’agent appelle un outil, le système d’autorisations évalue vos règles par ordre de priorité :
  1. Règles de refus — Vérifiées en premier. En cas de correspondance, l’action est bloquée immédiatement.
  2. Règles de demande — Vérifiées en deuxième. En cas de correspondance, une confirmation vous est toujours demandée (cela prévaut sur toute règle d’autorisation).
  3. Règles d’autorisation — Vérifiées en dernier. En cas de correspondance, l’action s’exécute sans demander de confirmation.
  4. Par défaut — Si aucune règle ne correspond, une approbation vous est demandée.
Comme les refus sont vérifiés avant les demandes, et les demandes avant les autorisations, une règle de refus l’emporte toujours. Si le même périmètre correspond à la fois à une règle de refus et à une règle de demande, c’est la règle de refus qui s’applique.

Configuration

Ajoutez des autorisations dans la section permissions de votre fichier de configuration :
Sous Windows, le chemin du fichier de configuration utilisateur est %APPDATA%\devin\config.json (généralement C:\Users\<you>\AppData\Roaming\devin\config.json) et non ~/.config/devin/config.json. Consultez Fichier de configuration pour plus de détails.

Syntaxe des autorisations

Il existe deux types de critères de correspondance pour les autorisations : basés sur le périmètre (qui contrôlent les chemins/commandes/URL accessibles) et basés sur les outils (qui contrôlent les outils pouvant être utilisés).

Autorisations basées sur le périmètre

Read(glob)

Contrôle l’accès en lecture aux fichiers. Le motif glob correspond aux chemins de fichiers.
Les chemins de répertoire correspondent automatiquement à tous les fichiers qu’ils contiennent.
Contrôle l’accès en écriture et en modification des fichiers.
Contrôle l’exécution des commandes shell. S’applique aux commandes qui commencent par le préfixe donné.
Exec(git) correspond à “git”, “git status”, “git commit -m ‘msg’” mais PAS à “gitk” ni à “github-cli”. Le préfixe doit correspondre à un mot complet.
Contrôle l’accès aux requêtes HTTP fetch à l’aide de motifs d’URL.
Les motifs d’URL suivent la norme WHATWG URL Pattern. Le raccourci domain: correspond à n’importe quel chemin sur le domaine exact.

Autorisations par outil

Faites correspondre le nom de l’outil pour contrôler des outils entiers :
Noms des outils disponibles : read, edit, grep, glob, exec

Autorisations des outils du serveur MCP

Contrôlez l’accès aux outils du serveur MCP :

Motifs de chemin

Les motifs glob dans Read() et Write() prennent en charge : Exemples :
Utilisez un préfixe de chemin absolu (par ex., Read(/**)) lorsque vous souhaitez inclure tous les fichiers du système. Un simple Read(**) sans / au début est interprété par rapport à votre répertoire de travail actuel ; il ne correspond donc qu’aux fichiers situés dans ce répertoire — et non à ceux auxquels on accède ailleurs via des chemins absolus.

Options de persistance

Lorsque l’agent demande une autorisation pendant une session, vous pouvez choisir comment enregistrer votre décision : Les prompts Command proposent explicitement les deux périmètres : « Oui, toujours autoriser les commandes <cmd> dans <project> » enregistre l’autorisation pour le projet actuel, tandis que « Oui, toujours autoriser les commandes <cmd> dans tous les projets » l’enregistre dans votre configuration utilisateur afin qu’elle s’applique partout. Les prompts de requête Web pour une URL ou un domaine spécifique proposent une option équivalente, « Oui, toujours autoriser toutes les requêtes Web », qui ajoute les requêtes Web à la liste d’autorisation en une seule étape.

Modifier une commande avant de l’approuver

Les invites d’approbation de Command ne se limitent pas à un simple oui ou non. En plus des options d’approbation, une invite de commande propose :

Autorisations au niveau du serveur MCP

Lorsqu’une demande d’autorisation s’affiche pour un outil MCP spécifique (p. ex., list_issues sur le serveur Figma), l’invite d’autorisation propose également des options plus larges à l’échelle du serveur : Cela vous permet d’accorder rapidement un accès général à un serveur MCP de confiance sans devoir approuver chaque outil individuellement.

Ordre de priorité

Lorsque plusieurs sources d’autorisation définissent des règles, elles sont fusionnées selon l’ordre de priorité suivant (de la plus élevée à la plus faible) :
  1. Settings de l’organisation/de la Team (si Enterprise)
  2. Autorisations au niveau de la session (approbations interactives)
  3. Configuration locale du projet (.devin/config.local.json)
  4. Configuration du projet (.devin/config.json)
  5. Configuration utilisateur (~/.config/devin/config.json ; %APPDATA%\devin\config.json sous Windows)
Les refus définis au niveau de l’organisation ne peuvent pas être remplacés par la configuration du projet ou de l’utilisateur. Cela garantit l’application des politiques Enterprise.

Exemples

Configuration de développement minimale

Autorisez les opérations courantes en lecture seule et demandez une confirmation pour tout le reste :

Confiance totale pour un projet

Approuvez automatiquement la plupart des opérations dans le projet :

Enterprise verrouillée

Limiter aux seules opérations sûres spécifiques, et toujours demander une confirmation avant toute écriture :
Dans cet exemple, les écritures dans .env* sont purement et simplement refusées, toutes les autres écritures demandent systématiquement confirmation à l’utilisateur, et seules quelques commandes en lecture seule sont approuvées automatiquement. Comme deny est vérifié avant ask, le refus de .env* prévaut sur la règle Write(**) ask.