Skip to content

separate hints for disabled vs not installed provider#2441

Open
evgunter wants to merge 1 commit into
mainfrom
ev/provider-error-hint
Open

separate hints for disabled vs not installed provider#2441
evgunter wants to merge 1 commit into
mainfrom
ev/provider-error-hint

Conversation

@evgunter

@evgunter evgunter commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Summary

The Provider 'X' references unknown backend 'X' config error told users to add plugin = "<plugin-name>" to the provider block whenever any plugin was disabled — advice that cannot resolve a backend whose plugin is not installed at all. Users who followed it hit the same error again, and the "Currently disabled plugins" list (which didn't include the missing backend) added to the confusion.

Repro (before)

$ mngr config set --scope local providers.azure.plugin azure
ERROR Invalid configuration: Provider 'azure' references unknown backend 'azure'.
If this backend is provided by a disabled plugin, either enable the plugin or add
plugin = "<plugin-name>" to this provider block. Currently disabled plugins: claude_subagent_proxy

After

Provider 'azure' references unknown backend 'azure'. This plugin is provided by
'imbue-mngr-azure' (Azure Virtual Machines provider backend plugin for mngr). Install
it (e.g. reinstall the mngr uv tool with '--with imbue-mngr-azure') and ensure the
plugin is enabled. If instead this backend is provided by one of the currently disabled
plugins (claude_subagent_proxy), enable that plugin or add plugin = "<plugin-name>" to
this provider block.

Changes

  • config/loader.py _parse_providers: an unregistered backend now leads with the concrete plugin install hint (via the existing catalog-backed get_plugin_install_hint), and only mentions the plugin = path as a secondary "if instead" option, and only when other plugins are disabled. The installed-but-disabled branch (backend name maps directly to a disabled plugin) is unchanged.
  • Updated test_parse_providers_unknown_backend_mentions_disabled_plugins for the new phrasing; added two tests asserting the install hint is primary and that plugin = is not suggested when the plugin is uninstalled.
  • Changelog entry.

Testing

uv run pytest libs/mngr/imbue/mngr/config/loader_test.py -k parse_providers — 18 passed. Full loader_test.py run: 134 passed (40 errors are a local-environment artifact — a fixture runs git init -b main and this machine resolves an old Windows git without -b; unrelated to this change and green in CI sandboxes). Also manually verified all three message paths end-to-end.

🤖 Generated with Claude Code

When a provider references a backend whose plugin is not installed at all,
the "references unknown backend" error previously advised adding
`plugin = "<plugin-name>"` to the block whenever any plugin was disabled.
That advice cannot resolve an uninstalled backend, so users who followed it
hit the same error again, and the "Currently disabled plugins" list (which
omitted the missing backend) added confusion.

The message now leads with the concrete install hint for an unregistered
backend (e.g. naming imbue-mngr-azure) and only mentions the `plugin =`
path as a secondary "if instead" option when other plugins are disabled.
The installed-but-disabled branch is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@evgunter evgunter changed the title Distinguish uninstalled vs disabled backend in provider config error separate hints for disabled vs not installed provider Jul 12, 2026
@evgunter evgunter marked this pull request as ready for review July 12, 2026 03:00
@evgunter evgunter requested a review from joshalbrecht July 12, 2026 03:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant