Skip to main content
Le CLI Devin utilise des fichiers JSON (avec prise en charge des commentaires) comme fichiers de configuration. Cette page documente toutes les options disponibles.

Emplacement des fichiers

Sous Windows, les chemins des fichiers de configuration utilisateur sont %APPDATA%\devin\config.json et %APPDATA%\devin\mcp_config.json (par ex. C:\Users\<you>\AppData\Roaming\devin\config.json), et non ~\.config\devin\.
Les serveurs MCP ont été déplacés vers les fichiers dédiés mcp_config.json dans la version 3000.3 (la version Local 3.6). Les versions antérieures les stockent à la place dans la clé mcpServers des principaux fichiers de configuration ; les versions plus récentes migrent automatiquement au démarrage toutes les entrées mcpServers qui s’y trouvent. Consultez mcpServers.

Référence complète de la configuration


Référence des options

Les options marquées Utilisateur uniquement ne peuvent être définies que dans la configuration utilisateur (~/.config/devin/config.json; %APPDATA%\devin\config.json sous Windows). Seuls permissions, read_config_from et hooks peuvent être définis dans les configurations de projet. mcpServers peut également être défini aux deux niveaux, mais se trouve dans les fichiers dédiés mcp_config.json (voir mcpServers).

agent (utilisateur uniquement)

theme_mode (utilisateur uniquement)

autorisations

Voir Autorisations pour la documentation complète.

mcpServers

Correspondance entre le nom du serveur et sa configuration. Prend en charge à la fois les commandes locales (stdio) et les serveurs HTTP distants. Voir Configuration MCP. Depuis la version v3000.3 (la release Local 3.6), les serveurs MCP sont stockés dans des fichiers dédiés : ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json sous Windows), .devin/mcp_config.json et .devin/mcp_config.local.json. Dans les versions antérieures, la clé mcpServers se trouve directement dans les fichiers de configuration principaux ; les versions plus récentes la migrent automatiquement vers les fichiers dédiés au démarrage.

show_path (utilisateur uniquement)

Affiche le chemin du répertoire de travail actuel dans la bordure du champ de saisie. Lorsque cette option est activée, la bordure supérieure de la zone de saisie affiche votre CWD mis en forme (p. ex. ~/projects/my-app).

unicode_mode (utilisateur uniquement)

Détermine si l’interface du terminal utilise des symboles Unicode ou des alternatives compatibles ASCII. Définissez cette option sur "ascii" si votre terminal ou votre police n’affiche pas correctement les glyphes Unicode (par ex. si le symbole ⏺ s’affiche comme un carré).

show_hints (utilisateur uniquement)

Affiche ponctuellement des astuces entre les échanges (par ex. « Le saviez-vous : utilisez /model pour passer d’un modèle disponible à l’autre »). Utile pour découvrir les fonctionnalités de la CLI ; définissez cette option sur false pour ne plus les afficher une fois que vous vous êtes familiarisé avec elles.

include_gitignored_files (utilisateur uniquement)

Inclut les fichiers ignorés par Git dans les résultats de complétion de l’onglet @. Lorsqu’elle est activée, les fichiers correspondant aux règles de .gitignore apparaissent dans les complétions de mention @. Cette option est utile si vous stockez de la documentation ou d’autres fichiers dans des répertoires ignorés par Git auxquels vous souhaitez faire référence.

respect_gitignore (utilisateur uniquement)

Détermine si l’agent respecte .gitignore lorsqu’il lit ou écrit des fichiers via des outils. Lorsqu’elle est activée, les appels d’outils qui accèdent à des chemins ignorés par Git sont bloqués. Cette option est distincte de include_gitignored_files, qui n’affecte que l’autocomplétion de @ avec la touche Tab.

attribution (utilisateur uniquement)

Détermine si l’agent ajoute une attribution à Devin dans les commits et les pull requests qu’il crée. Lorsqu’elle est activée, le corps des commits et des PR inclut une ligne Generated with [Devin] ainsi qu’un pied de page Co-Authored-By: Devin. Définissez cette option sur false pour omettre les deux, afin qu’aucune attribution à Devin ne soit ajoutée.

subagents_enabled (utilisateur uniquement)

Détermine si l’agent peut déléguer des tâches à des sous-agents. Lorsqu’ils sont désactivés, les outils run_subagent et read_subagent sont supprimés et l’agent effectue donc tout le travail lui-même. Toute modification de ce paramètre est appliquée en temps réel : une session en cours la prend en compte sans redémarrage.
La politique de l’organisation prévaut : si un administrateur a désactivé les sous-agents pour votre organisation (via le paramètre Modèle de sous-agent par défaut), les sous-agents restent désactivés, quel que soit ce paramètre.

keymap (utilisateur uniquement)

Remplacez les raccourcis clavier intégrés de la CLI. Cette section contient un tableau de contextes (global, editor, input, list, …), chacun associant des noms d’actions aux touches qui les déclenchent. Les actions non répertoriées conservent leurs raccourcis intégrés par défaut.
Une spécification de touche est une liste de modificateurs séparés par des - (ctrl, alt, shift), suivie d’un nom de touche (un caractère ou une touche nommée telle que enter, esc, tab, home, page-up, f5). L’ordre des modificateurs n’a pas d’importance et la correspondance ne tient pas compte de la casse, sauf qu’un caractère majuscule seul associe la touche avec Maj ("K" équivaut à "shift-k").
Exécutez /shortcuts pour afficher chaque action avec son identifiant context.action — les mêmes identifiants qu’ici — et modifier les associations de manière interactive. Les associations que vous y définissez sont enregistrées dans cette section.
global.cancel (Ctrl+C) ne peut pas être dissocié. Vous pouvez donc toujours interrompre un agent en cours d’exécution. Les entrées non valides, les contextes ou actions inconnus, ainsi que les dérogations qui entreraient en conflit avec un autre raccourci dans le même contexte, sont signalés au démarrage et remplacés par la valeur par défaut intégrée.

auto_update (utilisateur uniquement)

Contrôle la mise à jour automatique en arrière-plan sur macOS et Linux. Lorsqu’elle est activée, les nouvelles versions sont téléchargées et activées pendant l’exécution de Devin CLI, de sorte que le prochain appel à devin utilise automatiquement la dernière version. La session en cours n’est pas affectée — le remplacement du lien symbolique current ne prend effet qu’au prochain lancement. La mise à jour est conçue pour résister aux interruptions : chaque étape au niveau du système de fichiers est préparée dans un chemin temporaire, puis appliquée via un renommage atomique, et les processus de mise à jour concurrents sont sérialisés à l’aide d’un verrou de fichier. Quitter au milieu d’une mise à jour ne peut pas laisser l’installation dans un état défectueux — vous redémarrerez simplement sur l’ancienne version. S’applique uniquement aux installations gérées par l’utilisateur (curl | bash sur macOS/Linux). Les installations fournies avec un autre produit (p. ex. Windsurf) ignorent ce paramètre et se mettent à jour via leur application hôte.

keymap (utilisateur uniquement)

Redéfinissez les raccourcis clavier. Les dérogations sont définies par contexte, puis par action — l’identifiant context.action affiché pour chaque raccourci dans /shortcuts (p. ex. editor.insert_newline) :
Les dérogations remplacent entièrement les valeurs par défaut intégrées de cette action ; les actions non répertoriées conservent leurs valeurs par défaut. Ctrl+C (annuler) ne peut pas être dissocié. Les entrées non valides (noms inconnus, spécifications de touches incorrectes, valeurs d’un type incorrect ou dérogations en conflit avec une autre association dans le même contexte) sont signalées comme avertissements au démarrage et ignorées — le reste de la configuration est tout de même appliqué. Une spécification de touche se compose de zéro ou plusieurs modificateurs séparés par -, suivis d’un nom de touche (par ex. ctrl-shift-p, alt-enter, f5, K). Modificateurs : ctrl/control/c, alt/meta/option/opt/m, shift/s. Touches nommées : enter, esc, tab, backspace, delete, insert, up, down, left, right, home, end, page-up, page-down, space, f1f24. Tout autre caractère unique associe cette touche (sensible à la casse : K associe Maj+K) ; utilisez - pour la touche moins (ctrl--). Vous pouvez également réattribuer les touches de manière interactive : dans /shortcuts, appuyez sur Enter sur une ligne de raccourci, puis sur la nouvelle touche — la modification est enregistrée dans cette section keymap. Consultez Personnaliser les associations de touches.

notify

Contrôle les notifications du terminal lorsque l’agent a terminé ou requiert une intervention de l’utilisateur. L’interface CLI écrit un caractère BEL (déclenche la sonnerie du terminal ou une alerte visuelle), une séquence d’échappement OSC 9 (déclenche une notification système dans iTerm2 et les terminaux compatibles) et une séquence OSC 777 (notification de bureau dans rxvt-unicode et d’autres terminaux). Les terminaux qui ne reconnaissent pas ces séquences les ignorent sans problème.

read_config_from

Contrôle l’importation depuis les configurations d’autres outils d’IA : Définissez l’option sur false pour désactiver une importation spécifique. null est traité comme true.

proxy (utilisateur uniquement)

Configure la manière dont l’interface CLI achemine son propre trafic HTTP/HTTPS sortant (appels d’API, mises à jour, serveurs MCP, etc.). Cela n’affecte pas le trafic réseau des processus enfants du sandbox (voir sandbox ci-dessous). Le champ mode sélectionne la stratégie de proxy : Exemple — proxy d’entreprise :
Exemple — désactiver le proxy :
Les administrateurs peuvent définir le même bloc proxy dans le fichier de configuration système à l’échelle de la machine. Le paramètre Enterprise est prioritaire, et configurer un proxy dans les deux fichiers constitue une erreur : supprimez la section proxy de votre configuration utilisateur si votre organisation la gère.

sandbox (utilisateur uniquement)

Le filtrage réseau du sandbox est actuellement instable. Si vous avez besoin de cette fonctionnalité, veuillez contacter votre responsable de compte pour connaître le calendrier de stabilisation.
Configurez le filtrage réseau au niveau des domaines pour le sandbox. Lorsque --sandbox est actif et que le filtrage de domaine est configuré, un proxy réseau géré démarre sur l’interface loopback, et le sandbox force tout le trafic des processus enfants à y transiter.
Pour une vue d’ensemble complète du fonctionnement du sandbox — y compris l’application au niveau Enterprise et la manière dont les paramètres Enterprise et utilisateur interagissent — consultez la documentation du sandbox.
L’indicateur --sandbox applique les chemins accessibles en écriture et les règles deny au niveau du système d’exploitation. Les racines accessibles en écriture sont dérivées des périmètres Write(...) accordés ainsi que des répertoires de l’espace de travail ; tout le reste est lisible, à l’exception des chemins masqués par les règles de refus Read(...). Les périmètres Write(...) accordés en cours de session étendent dynamiquement le sandbox pour les commandes suivantes.
Si --sandbox est spécifié mais que l’initialisation du sandbox échoue (par ex., si les outils de sandboxing ne sont pas disponibles sur la plateforme actuelle), la CLI refusera de démarrer au lieu de s’exécuter sans sandbox. Ce comportement de type fail-closed garantit que l’objectif de sécurité de --sandbox n’est jamais contourné silencieusement.
Syntaxe des motifs de domaine : Exemple :
Le filtrage des domaines s’applique lorsque le sandbox est actif (--sandbox). Sans --sandbox, la section sandbox est ignorée.
Pour les Teams Enterprise, les admins peuvent redéfinir les listes de domaines via Team Settings. Les listes d’autorisation Enterprise prévalent (elles remplacent vos allowed_domains locaux), tandis que les listes de refus Enterprise sont additives (elles sont fusionnées avec vos denied_domains locaux).

JSON avec commentaires

Les fichiers de configuration prennent en charge les commentaires de type JavaScript :