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
- Configuration utilisateur
- Configuration du projet
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
mcpServers
~/.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 surfalse 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 ligneGenerated 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 outilsrun_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").
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’identifiantcontext.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, f1–f24. 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
read_config_from
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 (voirsandbox ci-dessous).
Le champ mode sélectionne la stratégie de proxy :
Exemple — proxy d’entreprise :
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)
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.
--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).
