[FEATURE]: 'opencode auth login' does not surface providers registered by plugins

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

The opencode auth login provider picker is built entirely from the models.dev provider list. Plugins that register auth for a provider not in that list (custom gateways, third-party services) are loaded and functional, but their providers never appear in the picker. Users have no way to discover them through the normal login flow.

The workaround is passing the provider ID as a positional argument, which assumes users already know the exact ID their plugin registered. That defeats the purpose of having a picker at all.

Providers registered by plugins should be discoverable in the same picker alongside built-in providers.

Plugins specify auth via the auth hook on Hooks (AuthHook type in packages/plugin/src/index.ts), which includes a provider string and methods array. The built-in codex, copilot, and gitlab auth plugins all use this same mechanism.

Steps to reproduce

  1. Install a plugin that sets auth.provider to an ID not in models.dev (e.g. "portkey")
  2. Run opencode auth login
  3. The provider does not appear in the picker