Skip to main content

Référence du plug-in CLI GitHub Copilot

Recherchez des commandes et des détails de configuration pour les plug-ins CLI.

Remarque

Vous trouverez de l’aide sur l’utilisation de plug-ins en entrant copilot plugin [SUBCOMMAND] --help dans le terminal.

Pour obtenir une vue d’ensemble des plug-ins et de leur fonctionnement sur les Copilot clients, consultez À propos des GitHub Copilot plug-ins.

Commandes CLI

Vous pouvez utiliser les commandes suivantes dans le terminal pour gérer les plug-ins pour Copilot CLI. copilot plugins (au pluriel) est un ancien alias de copilot plugin — les deux renvoient à la même commande.

CommandDescription
copilot plugin install SPECIFICATION (alias add)Installez un plug-in. Consultez la spécification du plug-in pour la commande install ci-dessous.
copilot plugin uninstall NAME (les alias remove, rm)Supprimer un plug-in
copilot plugin listRépertorier les plug-ins installés
copilot plugin update NAMEMettez à jour un plug-in nommé. Permet --all de mettre à jour tous les plug-ins installés à la fois.
copilot plugin enable NAMEActiver un plug-in précédemment désactivé
copilot plugin disable NAMEDésactiver un plug-in sans le désinstaller
copilot plugin marketplace add SPECIFICATIONInscrivez une place de marché. Le nom de la Place de marché, à partir de son marketplace.json manifeste, devient sa clé d’inscription. Il n’existe aucune option permettant de définir un nom local personnalisé.
copilot plugin marketplace listRépertorier les places de marché inscrites
copilot plugin marketplace browse NAMEParcourir les plug-ins de la Place de marché
copilot plugin marketplace update [NAME] (alias refresh)Récupérez à nouveau le catalogue de plug-ins d’une Place de marché. Omettez NAME pour actualiser les catalogues de chaque place de marché enregistrée.
copilot plugin marketplace remove NAMEAnnulez l’inscription d’une place de marché. Refusé si des plug-ins du marketplace sont toujours installés ; passez --force pour également désinstaller ces plug-ins.

Avant que copilot plugin ne soit scindé en commandes distinctes selon la ressource, copilot plugins permettait également d’inspecter et d’activer ou de désactiver des serveurs MCP, des compétences, des instructions et des serveurs de langage à l’aide des indicateurs --kind, --scope, --mcp et --skill. Ces drapeaux de type croisé ont été supprimés. Utilisez plutôt les commandes dédiées copilot lsp, copilot instruction, copilot skill et copilot mcp. copilot plugin list --json émet désormais un tableau plat de plug-ins au lieu de l’objet précédent { plugins, errors } .

Remarque

Un plug-in ou une place de marché épinglé par une organisation ou une stratégie gérée par MDM (enabledPlugins, extraKnownMarketplaces) ne peut pas être réactivé, désactivé ou redirigé localement vers un autre emplacement — la valeur définie par la stratégie prévaut pour cette entrée. Le /plugin tableau de bord marque ces lignes avec une Managed pastille et refuse un commutateur contradictoire. Consultez « GitHub Copilot le répertoire de configuration du CLI ».

Un plugin dont l’activation est actuellement déterminée par l’overlay enabledPlugins du dépôt actuel rejette copilot plugin enable/disable au lieu d’enregistrer discrètement une valeur globale qui n’aurait aucun effet dans ce dépôt. L’erreur nomme le fichier de paramètres qui contrôle réellement le plug-in. Consultez « GitHub Copilot le répertoire de configuration du CLI ».

Spécification du module externe pour la commande install

FormatExempleDescription
Place de marchéplugin@marketplaceModule depuis un marché enregistré
GitHubOWNER/REPORacine d’un GitHub référentiel
GitHub subdirOWNER/REPO:PATH/TO/PLUGINSous-répertoire dans un référentiel
Git URLhttps://github.com/o/r.gitN’importe quelle URL Git
Chemin d’accès local
./my-plugin ou /abs/pathRépertoire local

Options copilot plugin list

OptionDescription
--jsonÉmettez un tableau JSON plat de plug-ins au lieu de texte.
--config-dir=DIRECTORYChemin d’accès au répertoire de configuration. Cette fonction est déconseillée. Utilisez COPILOT_HOME à la place.

Chaque --json ligne a la forme { name, marketplace?, version?, enabled, source, installedFrom? }.

copilot plugin enable/disable options

OptionDescription
--config-dir=DIRECTORYChemin d’accès au répertoire de configuration. Cette fonction est déconseillée. Utilisez COPILOT_HOME à la place.

Options copilot plugin install

Pour installer une compétence au lieu d’un plug-in, utilisez copilot skill add plutôt : il ne s’agit pas d’une installation de plug-in et ne passe pas par une place de marché.

OptionDescription
--config-dir=DIRECTORYChemin d’accès au répertoire de configuration. Cette fonction est déconseillée. Utilisez COPILOT_HOME à la place.

Les serveurs MCP s’installent à partir d’un registre configuré par une stratégie, ce qui nécessite une authentification et une entrée secrète interactive. Utilisez l’affichage en ligne du /mcp tableau de bord ou la copilot mcp add commande pour ajouter des serveurs MCP au lieu de copilot plugin install.

Options copilot plugin update

OptionDescription
--allMettre à jour chaque plug-in installé
--config-dir=DIRECTORYChemin d’accès au répertoire de configuration. Cette fonction est déconseillée. Utilisez COPILOT_HOME à la place.

Remarque

Les plug-ins provenant d’un chemin dans un marketplace local (source de répertoire) sont chargés directement depuis leur répertoire réel ; toute modification de l’un d’eux prend effet sur /restart ou dans une nouvelle session, sans copilot plugin update nécessaire.

Les plug-ins propriétaires — ceux installés à partir des places de marché intégrées copilot-plugins et awesome-copilot — sont automatiquement mis à jour au début de chaque session dans un répertoire de travail de confiance. Désactivez ce comportement avec le autoUpdate paramètre (défini sur false) ou la variable d’environnement COPILOT_AUTO_UPDATE=false . La mise à jour automatique est également ignorée par défaut dans CI. Consultez « GitHub Copilot le répertoire de configuration du CLI ».

Une place de marché que vous avez ajoutée vous-même peut activer la même mise à jour automatique au démarrage de la session en définissant autoUpdate: true sur son entrée extraKnownMarketplaces dans vos paramètres utilisateur. Ce choix d’activation s’applique uniquement aux sessions interactives et -p — les sessions SDK et les sessions serveur ne se mettent pas à jour automatiquement. Il est respecté à partir de vos propres paramètres utilisateur ou des paramètres gérés (GPM/serveur), mais un paramètre au niveau autoUpdate du référentiel est accepté et ignoré. Il ne peut pas activer ou rediriger la mise à jour automatique pour une place de marché. En cas de collision de noms, une place de marché propriétaire intégrée prévaut, puis une entrée gérée (qui remplace l’intégralité de l’entrée utilisateur du même nom ; ainsi, une entrée gérée sans "autoUpdate": true supprime le consentement de l’utilisateur), puis l’entrée propre à l’utilisateur. Consultez les paramètres du référentiel.

En mode interactif, /plugin signale un plug-in installé ou une place de marché lorsqu’une version plus récente est disponible en amont et offre une action de mise à jour à partir du tableau de bord pour l’extraire.

copilot plugin marketplace (alias marketplaces) sous-commandes

Les places de marché par défaut intégrées sont fournies avec le runtime et ne peuvent pas être supprimées.

Sous-commandeDescription
list [--json]Répertorier chaque place de marché inscrite, y compris les valeurs par défaut intégrées
add SOURCEAjouter une place de marché (owner/repo, owner/repo#refune URL ou un chemin d’accès local)
remove NAME [--force]Supprimer une place de marché ; --force désinstalle également les plug-ins sources à partir de celui-ci
browse NAME [--json]Répertorier les plug-ins proposés par le catalogue d’un marketplace
update [NAME] (alias refresh)Actualisez le catalogue des plugins pour une place de marché, ou pour toutes si NAME est omis

En mode interactif, exécutez /plugin marketplace refresh (alias /plugin marketplace update [NAME]), ou appuyez sur R dans la vue Marketplace du tableau de bord /plugin, pour mettre à jour le catalogue de chaque marketplace enregistré.

plugin.json

Tous les plug-ins se composent d’un répertoire de plug-ins contenant un fichier manifeste nommé plugin.json. Agent Plugins 1.0 requiert le fichier manifeste à la racine du plug-in. Les plug-ins hérités prennent en charge les emplacements alternatifs répertoriés dans Emplacements des fichiers. Consultez « Création d’un plug-in pour GitHub Copilot CLI ».

Copilot CLI prend en charge à la fois l’ancien manifeste de module d’extension et le manifeste d’Agent Plugins 1.0. La valeur exacte https://agent-plugins.org/schemas/1.0.0/plugin.schema.json``$schema active pour un plugin la sémantique Agent Plugins 1.0. Un manifeste sans cette valeur utilise le format hérité et se charge comme avant.

Champs du manifeste Agent Plugins 1.0

Agent Plugins 1.0 définit un schéma de manifeste fermé. Pour connaître les exigences de format complètes, consultez la spécification Agent Plugins 1.0.

Les champs suivants sont autorisés :

ChampTypeObligatoireDescription
$schemaficelleOuiDoit être https://agent-plugins.org/schemas/1.0.0/plugin.schema.json.
nameficelleOuiNom du plug-in. Consultez les contraintes de nom.
versionficelleNonChaîne de version. Le versionnage sémantique est recommandé.
descriptionficelleNonBrève description.
authorobjetNonChamps de chaîne facultatifs name, email et url.
homepageficelleNonPage d’accueil ou documentation du plug-in.
repositoryficelleNonRéférentiel source.
licenseficelleNonIdentificateur de licence. Un identificateur SPDX est recommandé.
keywordschaîne de caractères[]NonMots clés de recherche et de découverte.
extensionsobjetNonDonnées spécifiques au client indexées par un espace de noms de type domaine inversé.

Les champs de niveau supérieur inconnus sont signalés et ignorés. Les champs de chemin d’accès du composant tels que agents, , skills``hooks, mcpServerset lspServers ne sont pas des champs manifeste d’Agent Plugins 1.0.

Contraintes de nom

Un nom Agent Plugins 1.0 doit :

  • Contiennent entre 1 et 64 caractères.
  • Contiennent uniquement des lettres ASCII minuscules, des chiffres, des traits d’union et des points.
  • Début et fin avec un caractère alphanumérique.
  • Ne pas contenir -- ou ...

Composants

Agent Plugins 1.0 définit deux types de composants portables :

  • Compétences dans les sous-répertoires immédiats de skills/ qui contiennent un fichier SKILL.md.
  • Serveurs MCP à la racine du plug-in mcp.json.

Ces emplacements sont fixes et ne peuvent pas être configurés dans plugin.json. La racine mcp.json doit déclarer https://agent-plugins.org/schemas/1.0.0/mcp.schema.json dans son $schema champ. L’interface CLI accepte stdio, streamable-httpet sse les noms de transport MCP.

Pour les serveurs stdio, la CLI fournit PLUGIN_ROOT et PLUGIN_DATA dans l’environnement du sous-processus. Développe ${PLUGIN_DATA} et ${PLUGIN_ROOT} dans les valeurs env, cwd et args du serveur. PLUGIN_DATA pointe vers un répertoire persistant accessible en écriture pour le plug-in installé.

Agent Plugins 1.0 ne définit pas d’agents portables, de hooks, de commandes, de règles ou de serveurs LSP. Celles-ci restent spécifiques au client. Les données de manifeste propres au client doivent figurer dans extensions, indexées à l’aide d’un espace de noms de domaine inversé. Les fichiers spécifiques au client appartiennent à un répertoire de niveau supérieur avec le même espace de noms. Les clients ignorent les espaces de noms qu’ils ne prennent pas en charge.

Copilot CLI lit ses composants spécifiques au client à partir du com.github.copilot répertoire :

ComposantLocation
Agents personnaliséscom.github.copilot/agents/
Commandes slashcom.github.copilot/commands/
Règlescom.github.copilot/rules/
Hookscom.github.copilot/hooks/hooks.json
Serveurs LSPcom.github.copilot/lsp.json

Ces emplacements s’appliquent uniquement aux plug-ins Agent Plugins 1.0. Les anciens plug-ins continuent d’utiliser leurs propres emplacements de composants et champs de chemin d’accès au manifeste.

Fichier exemple Plugins d’agent 1.0 plugin.json

JSON
{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "my-dev-tools",
  "description": "React development utilities",
  "version": "1.2.0",
  "author": {
    "name": "Jane Doe",
    "email": "jane@example.com"
  },
  "license": "MIT",
  "keywords": ["react", "frontend"]
}

Anciens champs du manifeste

Champ obligatoire

ChampTypeDescription
nameficelleNom du plug-in Kebab-case (lettres, chiffres et traits d’union uniquement). Maximum 64 caractères.

Champs de métadonnées facultatifs

ChampTypeDescription
descriptionficelleBrève description. 1024 caractères maxi.
versionficelleVersion sémantique (par exemple, 1.0.0).
authorobjet
name (obligatoire), email (facultatif), url (facultatif).
homepageficelleURL de la page d’accueil du plug-in.
repositoryficelleURL du référentiel source.
licenseficelleIdentificateur de licence (par exemple, MIT).
keywordschaîne de caractères[]Mots clés de recherche.
categoryficelleCatégorie de plug-in.
tagschaîne de caractères[]Balises supplémentaires.

Champs de chemin d’accès du composant

Celles-ci indiquent à l’interface CLI où trouver les composants de votre plug-in. Tous sont facultatifs. Le CLI utilise des conventions par défaut si elles sont omises.

ChampTypePar défautDescription
agentsstring | string[]agents/Chemin(s) d’accès aux répertoires d’agent (.agent.md fichiers).
skillsstring | string[]skills/Chemin(s) vers les répertoires de compétences (SKILL.md fichiers).
commandsstring | string[]Chemin d’accès aux répertoires de commandes.
hooksobjet string |Chemin d’accès vers un fichier de configuration de hooks, ou vers un objet de hooks intégré.
extensionsstring | string[] | objectChemins d’accès aux répertoires d’extension. Permet { paths: [...], exclusive: true } de supprimer les extensions intégrées. Dans les manifestes agent Plugins 1.0, ce champ a une signification différente.
mcpServersobjet string |Chemin d’accès à un fichier de configuration MCP (par exemple, .mcp.json) ou définitions de serveur inline.
lspServersobjet string |Chemin d’accès à un fichier de configuration LSP, ou à des définitions de serveur intégrées.

Configuration du serveur LSP

Pour inclure des serveurs LSP (Language Server Protocol) dans un plug-in, créez un lsp-config/servers.json fichier dans le répertoire du plug-in ou spécifiez un chemin d’accès ou un objet inline à l’aide du lspServers champ dans plugin.json.

Exemple lsp-config/servers.json (ou en ligne via lspServers dans plugin.json):

{
    "lspServers": {
        "my-lsp": {
            "command": "my-language-server",
            "fileExtensions": { ".myext": "mylang" }
        }
    }
}

Pour la prise en charge multiplateforme, utilisez bash et powershell à la place de command :

{
    "lspServers": {
        "my-lsp": {
            "bash": "${PLUGIN_ROOT}/scripts/start-lsp.sh",
            "powershell": "${PLUGIN_ROOT}/scripts/start-lsp.ps1",
            "fileExtensions": { ".myext": "mylang" }
        }
    }
}
ChampTypeObligatoireDescription
commandficelle*Exécutable pour lancer le serveur de langue.
bashficelle*Script Bash pour lancer le serveur (Linux/macOS) ; exécuté via bash -c SCRIPT.
powershellficelle*Script PowerShell pour lancer le serveur (Windows) ; exécuté via pwsh -c SCRIPT.
cwdficelleNonRépertoire de travail. Absolu ou relatif au fichier de configuration. Prend en charge ${PLUGIN_ROOT}.
argschaîne de caractères[]NonArguments à passer à command (ignorés pour bash et powershell).
envobjetNonVariables d’environnement à définir lors de la génération du serveur.
fileExtensionsobjetOuiMappage des extensions de fichier aux ID de langage (par exemple, { ".ts": "typescript" }).
rootUrificelleNonRacine du projet par rapport à la racine de Git (par défaut : .).
initializationOptionsN’importe lequelNonOptions envoyées au serveur dans la requête LSP initialize .

(*) Au moins un de command, bashou powershell est requis. Lorsque les deux bash et powershell sont spécifiés, la plateforme appropriée est sélectionnée automatiquement (PowerShell sur Windows, Bash ailleurs).

Permet ${PLUGIN_ROOT} de référencer des chemins d’accès dans le répertoire du plug-in.

marketplace.json

Vous pouvez créer une place de marché de plug-ins, que les utilisateurs peuvent utiliser pour découvrir et installer vos plug-ins, en créant un marketplace.json fichier et en l’enregistrant dans le .github/plugin/ répertoire du référentiel. Vous pouvez également stocker le marketplace.json fichier dans votre système de fichiers local. Par exemple, l’enregistrement du fichier tel qu’il /PATH/TO/my-marketplace/.github/plugin/marketplace.json vous permet de l’ajouter à l’interface CLI à l’aide de la commande suivante :

copilot plugin marketplace add /PATH/TO/my-marketplace

Remarque

Copilot CLI recherche également le marketplace.json fichier dans le .claude-plugin/ répertoire.

Pour plus d’informations, consultez « Création d’une place de marché de plug-ins pour GitHub Copilot CLI ».

Exemple de fichier marketplace.json

JSON
{
  "name": "my-marketplace",
  "owner": {
    "name": "Your Organization",
    "email": "plugins@example.com"
  },
  "metadata": {
    "description": "Curated plugins for our team",
    "version": "1.0.0"
  },
  "plugins": [
    {
      "name": "frontend-design",
      "description": "Create a professional-looking GUI ...",
      "version": "2.1.0",
      "source": "./plugins/frontend-design"
    },
    {
      "name": "security-checks",
      "description": "Check for potential security vulnerabilities ...",
      "version": "1.3.0",
      "source": "./plugins/security-checks"
    }
  ]
}

Remarque

La valeur du source champ pour chaque plug-in est le chemin d’accès au répertoire du plug-in, par rapport à la racine du référentiel. Il n’est pas nécessaire d’utiliser ./ au début du chemin. Par exemple, "./plugins/plugin-name" et "plugins/plugin-name" résolvent au même répertoire.

Champs marketplace.json

Champs de niveau supérieur

ChampTypeObligatoireDescription
nameficelleOuiNom de la place de marché kebab-case. 64 caractères maxi. Les points sont également acceptés (par exemple, acme.tools) pour les plugins Agent Plugins 1.0.
ownerobjetOui
{ name, email? } — Informations sur le propriétaire de la Place de marché.
pluginstableauOuiListe des entrées de plug-in (voir le tableau ci-dessous).
metadataobjetNon{ description?, version?, pluginRoot? }

Champs d’entrée de plug-in (objets dans le plugins tableau)

ChampTypeObligatoireDescription
nameficelleOuiNom du plug-in Kebab-case. 64 caractères maxi. Les points sont également pris en charge pour les plug-ins Agent Plugins 1.0.
sourceobjet string |OuiOù récupérer le plug-in (chemin relatif, GitHubou URL).
descriptionficelleNonDescription du plug-in. 1024 caractères maxi.
versionficelleNonVersion du plug-in.
authorobjetNon{ name, email?, url? }
homepageficelleNonURL de la page d’accueil du plug-in.
repositoryficelleNonURL du référentiel source.
licenseficelleNonIdentificateur de licence.
keywordschaîne de caractères[]NonMots clés de recherche.
categoryficelleNonCatégorie de plug-in.
tagschaîne de caractères[]NonBalises supplémentaires.
commandsstring | string[]NonChemin d’accès aux répertoires de commandes.
agentsstring | string[]NonChemins d’accès aux répertoires de l’agent.
skillsstring | string[]NonChemins d’accès aux répertoires de compétences.
hooksobjet string |NonChemin d’accès à la configuration des hooks ou à l’objet hooks inclus.
mcpServersobjet string |NonServeurs MCP à activer lorsque le plug-in est installé. Accepte un mappage de serveur inline ou un chemin d’accès à un fichier de configuration JSON. Utilisé lorsque la source du plug-in n’expédie pas sa propre configuration MCP.
lspServersobjet string |NonChemin d’accès à la configuration de LSP ou aux définitions de serveur inline.
strictbooléenNonQuand true (valeur par défaut), les plug-ins doivent se conformer aux règles de schéma et de validation complètes. Lorsque false, la validation assouplie est utilisée, ce qui permet une plus grande flexibilité, en particulier pour les installations directes ou les plug-ins hérités.

Types de sources de plug-in

Le source champ d’une entrée de plug-in accepte une chaîne de chemin d’accès relatif, ou un objet décrivant un référentiel ou une GitHub source d’URL Git :

{
    "source": {
        "source": "github",
        "repo": "owner/repo",
        "ref": "v1.0.0",
        "path": "plugins/my-plugin"
    }
}

Les types de source github et url acceptent tous deux un champ facultatif sha pour fixer les installations à un commit exact, en plus de ref (ou à la place de celui-ci) :

{
    "source": {
        "source": "github",
        "repo": "owner/repo",
        "sha": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
        "path": "plugins/my-plugin"
    }
}

sha doit être un SHA de commit complet à 40 caractères. Fixez à un(e) sha pour des installations reproductibles à l’abri des poussées forcées ou des déplacements de balises/branches.

Emplacements des fichiers

ÉlémentChemin
Plug-ins installés
~/.copilot/installed-plugins/MARKETPLACE/PLUGIN-NAME (installé via une place de marché) et ~/.copilot/installed-plugins/_direct/SOURCE-ID/ (installé directement)
Cache de la Place de marchéRépertoire du cache de plateforme : ~/.cache/copilot/marketplaces/ (Linux), ~/Library/Caches/copilot/marketplaces/ (macOS). Remplaçable avec COPILOT_CACHE_HOME.
Manifeste du plug-inAgent Plugins 1.0 : plugin.json à la racine du plug-in. Extensions héritées : .plugin/plugin.json, plugin.json, .github/plugin/plugin.json ou .claude-plugin/plugin.json (vérifiés dans cet ordre).
Manifest de Marketplace
marketplace.json, .plugin/marketplace.json, ou .github/plugin/marketplace.json ou .claude-plugin/marketplace.json (vérifié dans cet ordre)
AgentsPlug-ins hérités : agents/ (par défaut, substituable dans le manifeste).
CompétencesModules d’extension de l’agent 1.0 : skills/ (corrigé). Plug-ins hérités : skills/ (par défaut, substituable dans le manifeste).
Configuration des hooksPlug-ins hérités : hooks.json ou hooks/hooks.json.
Configuration MCPPlug-ins d’agent 1.0 : mcp.json. Extensions héritées : .mcp.json, .github/mcp.json, ou le champ mcpServers du manifeste.
Configuration de LSPPlug-ins hérités : lsp.json ou .github/lsp.json.
Données de plug-inPour les serveurs MCP Agent Plugins 1.0, ${PLUGIN_DATA} (également disponible en tant que ${COPILOT_PLUGIN_DATA} et ${CLAUDE_PLUGIN_DATA}) pointe vers un répertoire persistant accessible en écriture unique à chaque plug-in installé. Utilisez-le pour les données d’exécution spécifiques au plug-in au lieu de chemins d’accès à l’intérieur du répertoire du cache des plug-ins installés.

Ordre de chargement et priorité

Si vous installez plusieurs plug-ins, il est possible que certains agents, compétences, serveurs MCP ou outils fournis via des serveurs MCP aient des noms en double. Dans ce cas, l’interface CLI détermine le composant à utiliser en fonction d’un ordre de priorité.

  • Les agents et les compétences utilisent la précédence first-found-wins.

    Si vous disposez d’un agent personnalisé ou d’une compétence au niveau du projet portant le même nom ou id que celui d’un plug-in que vous installez, l’agent ou la compétence du plug-in est ignoré en mode silencieux. Le plug-in ne peut pas remplacer les configurations au niveau du projet ou personnelles. Les agents personnalisés sont dédupliqués à l’aide de leur ID, qui est dérivé de son nom de fichier (par exemple, si le fichier est nommé reviewer.agent.md, l’ID de l’agent est reviewer). Les compétences sont dédupliquées par leur champ de nom à l’intérieur du fichier SKILL.md.

  • Les serveurs MCP utilisent la priorité "last-wins".

    Si vous installez un plug-in qui définit un serveur MCP portant le même nom de serveur qu’un serveur MCP que vous avez déjà installé, la définition du plug-in est prioritaire. Vous pouvez utiliser l’option --additional-mcp-config de ligne de commande pour remplacer une configuration de serveur MCP avec le même nom, installée à l’aide d’un plug-in. Si deux plug-ins ou plus déclarent un serveur MCP portant le même nom, l’interface CLI utilise la version du plug-in qui a chargé en dernier et affiche un avertissement nommant chaque plug-in précédent qui l’a défini.

  • Les outils et agents intégrés sont toujours présents et ne peuvent pas être substitués par les composants définis par l’utilisateur.

Le diagramme suivant illustre les règles d’ordre de chargement et de priorité.

┌──────────────────────────────────────────────────────────────────┐
│  BUILT-IN - HARDCODED, ALWAYS PRESENT                            │
│  • tools: bash, view, apply_patch, glob, rg, task, ...           │
│  • agents: explore, task, code-review, general-purpose, research │
└────────────────────────┬─────────────────────────────────────────┘
                         │
  ┌──────────────────────▼──────────────────────────────────────────────┐
  │  CUSTOM AGENTS - FIRST LOADED IS USED (dedup by ID)                 │
  │  1. ~/.copilot/agents/           (user, .github convention)         │
  │  2. <project>/.github/agents/    (project)                          │
  │  3. <parents>/.github/agents/    (inherited, monorepo)              │
  │  4. <project>/.claude/agents/    (project)                          │
  │  5. <parents>/.claude/agents/    (inherited, monorepo)              │
  │  6. PLUGIN: agents/ dirs         (plugin, by install order)         │
  │  7. Remote org/enterprise agents (remote, via API)                  │
  └──────────────────────┬──────────────────────────────────────────────┘
                         │
  ┌──────────────────────▼──────────────────────────────────────────────┐
  │  AGENT SKILLS - FIRST LOADED IS USED (dedup by name)                │
  │  1. <project>/.github/skills/        (project)                      │
  │  2. <project>/.agents/skills/        (project)                      │
  │  3. <project>/.claude/skills/        (project)                      │
  │  4. <parents>/.github/skills/ etc.   (inherited)                    │
  │  5. ~/.copilot/skills/               (personal-copilot)             │
  │  6. ~/.agents/skills/                (personal-agents)              │
  │  7. PLUGIN: skills/ dirs             (plugin)                       │
  │  8. COPILOT_SKILLS_DIRS env + config (custom)                       │
  │  --- then commands (.claude/commands/), skills override commands ---│
  └──────────────────────┬──────────────────────────────────────────────┘
                         │
  ┌──────────────────────▼──────────────────────────────────────────────┐
  │  MCP SERVERS - LAST LOADED IS USED (dedup by server name)           │
  │  1. ~/.copilot/mcp-config.json       (lowest priority)              │
  │  2. PLUGIN: MCP configs              (plugins)                      │
  │  3. --additional-mcp-config flag     (highest priority)             │
  └─────────────────────────────────────────────────────────────────────┘

Lectures complémentaires