Skip to content

Crawl: Support multiple configured GitHub Enterprise instances #9003

Description

@TylerLeonhardt

Goal

Adopt the multi-instance GitHub Enterprise authentication introduced by microsoft/vscode#338080 without requiring a multi-client redesign of this extension.

This is the Crawl phase: users can configure several Enterprise instances and select which Enterprise account this extension uses, alongside their separate GitHub.com account.

Implementation: #8996. This issue should close when that PR merges.

Scope

  • Honor github-enterprise.uris, including explicit [], normal configuration precedence, and workspace trust. Read the deprecated github-enterprise.uri only when no eligible plural value is configured.
  • Make setup additive and cancellation-safe. Write only the plural setting, preserve existing instances, and avoid automatic settings or credential migration.
  • Continue deriving authenticated API destinations from the selected session's authorizationServer, never from list order or an unrelated remote paired with a token.
  • Keep one selected Enterprise account/client and one separate GitHub.com account/client. Repositories on other Enterprise instances remain unavailable until the user selects the appropriate account.
  • Explain mismatched or missing account preferences in both the Pull Requests and Login views. Provide Select Account scoped to GitHub Pull Requests and the Enterprise provider; start sign-in if no Enterprise accounts exist.
  • Keep guidance concise and naturally wrapping, preserve public sign-in, and avoid remote discovery/network work during view rendering.
  • Refresh account-sensitive views and caches when selection changes; reordering the configured list must not switch the active account, and removing an instance must not delete saved sign-ins.
  • Require VS Code ^1.141.0; Insiders users are expected to stay current.

Acceptance

  • GitHub.com plus Enterprise A works while Enterprise B is configured but not selected; B has actionable guidance rather than an apparently empty successful result.
  • Switching A to B updates repository availability without reloading or exposing stale A data as B data. Colliding native account IDs do not bypass issuer checks.
  • Legacy-only settings, plural precedence, explicit empty lists, invalid configuration, cancellation, and trust changes behave consistently with the built-in provider.
  • Public sign-in remains usable when Enterprise configuration is invalid, and both views remain responsive while unrelated discovery is pending.
  • Tests cover configuration/setup, account selection and routing, switching, and view behavior; the one-selected-Enterprise-account limitation is documented.

Out of scope

Simultaneous clients for different Enterprise hosts (Walk) and multiple accounts on the same host, including GitHub.com (Run).

Implementation specification and exploratory scenarios.

Follow-ups

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions