Policy-driven enabledPlugins installs the plugin but persists "enabled": false, so it never activates (1.0.83) — reproduces via device/MDM and repo-level settings
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
Direção de pesquisa
Comece reproduzindo o fluxo de políticas com managed-settings.json e .github/copilot/settings.json; em seguida, inspecione o caminho de inicialização interativa e o ~/.copilot/config.json resultante. Compare as entradas orientadas por políticas com as entradas das configurações do usuário e use copilot plugins list e copilot plugins update --all para verificar o comportamento. Considera-se concluído quando uma entrada de enabledPlugins é instalada com enabled: true e seus skills estão ativos em uma inicialização interativa subsequente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Describe the bug
A policy/configuration-driven enabledPlugins entry installs the named plugin to disk, but records it in ~/.copilot/config.json as "enabled": false. The plugin's skills never activate, and the state does not self-correct on subsequent interactive starts. There is no error or warning.
This reproduces via two independent delivery channels, which suggests the defect is in the shared policy-install path rather than in any one channel:
- Device/MDM —
%ProgramFiles%\GitHubCopilot\managed-settings.json(source=mdm) - Repository/folder-level —
.github/copilot/settings.jsonin a trusted folder, with no managed policy present at all (effective policy resolved: source=none)
In both cases the plugin is fetched and written to disk correctly and then left inert.
This is the same symptom as #4283 (closed as completed on 2026-09-03, no fix version stated), which was reported against the server-managed channel. It is distinct from #4039: there the plugin was marked installed/enabled but never synced to disk — here the sync to disk succeeds and the enablement flag is the thing that is wrong.
Affected version
GitHub Copilot CLI 1.0.83 (Windows, x86_64). Latest published at time of writing (npm view @github/copilot version → 1.0.83).
Steps to reproduce the behavior
-
Create
%ProgramFiles%\GitHubCopilot\managed-settings.json, owned byBUILTIN\Administrators:{ "extraKnownMarketplaces": { "example-marketplace": { "source": { "source": "github", "repo": "org-name/marketplace-repo" }, "autoUpdate": true } }, "enabledPlugins": { "example-plugin@example-marketplace": true } }org-name/marketplace-repois a private repository the signed-in user has access to.example-pluginis not installed and does not appear in~/.copilot/settings.json. -
Start an interactive session from a folder listed in
trustedFoldersin~/.copilot/config.json(auto-install does not fire in-pmode, cf. #4507):copilot --log-level debug --log-dir <dir> -
Confirm from the log that the policy loaded:
[managedSettings] device MDM policy loaded: bypassDisabled=false, keys=[enabledPlugins,extraKnownMarketplaces] [managedSettings] effective policy resolved: source=mdm, bypassDisabled=false, serverFetchFailed=false, ... -
Exit the session, then inspect the install directory and
~/.copilot/config.json. -
Start a second interactive session in the same folder and re-inspect.
Expected behavior
example-plugin@example-marketplace is installed and enabled, and the skills it contributes are available.
Actual behavior
The plugin is installed, with its skills present on disk:
~/.copilot/installed-plugins/example-marketplace/example-plugin/
├── .claude-plugin/plugin.json
└── skills/<skill-name>
But ~/.copilot/config.json records it as disabled:
{
"name": "example-plugin",
"marketplace": "example-marketplace",
"installed_at": "...",
"cache_path": "...",
"source_sha": "...",
"enabled": false
}
Consequences observed:
- The skill it contributes does not appear in
copilot plugins listand is not active in-session. - A second interactive start leaves
enabled: falseunchanged. - Plugins that appear in the user's own
settings.jsonshow"enabled": truein the sameconfig.json, so only the policy-driven entry is affected. copilot plugins update --allreportsProcessed 8 installed pluginsand does not consider the policy-named plugin.
Additional context
- The same policy file's
modelkey is enforced — the session switched to the model named in policy — so the device channel is being honoured and parsed correctly (keys=[enabledPlugins,extraKnownMarketplaces,model]). The defect is specific to the enablement flag for policy-installed plugins. - Practical impact for an enterprise rollout: a policy can place a plugin on every machine and leave it inert. Plugins whose value is in the hooks they contribute silently never run, so presence on disk is not a usable success signal — the
enabledflag inconfig.jsonhas to be checked instead. That makes the failure easy to mistake for a successful deployment. - The documented semantics for the key are "Defines plugins that are automatically installed or blocked for all enterprise users", which reads as covering enablement as well as installation.
- Linguagem predominante
- Shell
- Estrelas
- 11.2k
- Forks
- 1.9k
- Merge médio
- 14h 16min
- PRs com merge (30d)
- 6
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/copilot-cli
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
github/copilot-cli#4909 ·
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
github/copilot-cli#4906 ·
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
github/copilot-cli#4729 ·
-
area:sessions
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
github/copilot-cli#4712 ·
Todas as issues de github/copilot-cli
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
community-scripts/ProxmoxVE#17425 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
danielmiessler/LifeOS#2218 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
conda-forge/python-feedstock#934 ·
-
docs(agents): strengthen the no-backslash-escaped-backticks rule with an issue-creation example Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100