Skip to content

UX: Multi-account per provider (e.g. multiple ChatGPT-Plus / OpenAI / OpenRouter / Anthropic credentials) #25738

Closed as not planned

Description

@MahmoodKhalil57

Use case

Power users frequently have multiple credentials for the same provider:

  • Multiple ChatGPT-Plus subscriptions (personal + family-shared, etc.)
  • Multiple OpenAI API keys (personal + team org + research project)
  • Multiple OpenRouter keys (different accounts for billing isolation, rate-limit pooling)
  • Multiple Anthropic credentials (personal Pro + work API key)
  • Multiple GitHub Copilot accounts (personal + enterprise org membership)

Today the Providers panel is one-credential-per-provider — the Connect button replaces the existing entry rather than appending. The only way to add a second credential of the same provider is via "Custom provider" (which works but loses the tailored OAuth flow opencode has so nicely built for known providers).

Proposed UX

In packages/app/src/components/settings-providers.tsx, the connected providers list currently shows just [Disconnect]. Add a second action [+ Add another] next to it:

[Connected providers]
  OpenAI [OAuth]                        [+ Add another]   [Disconnect]
  OpenRouter [API key]                   [+ Add another]   [Disconnect]

Click flow for [+ Add another]:

  1. Opens a small dialog: "Name this credential" with a sensible suggestion (openai-2, openai-team, etc.)
  2. User confirms or edits the name
  3. Same <DialogConnectProvider> flow that the Connect button uses — OAuth or API key entry as appropriate to the provider
  4. The completed credential is saved under the chosen name (auth.json gets a new entry alongside the existing one)
  5. The new credential appears in the Connected providers list as a separate row

The underlying server already supports this — PUT /auth/{providerID} accepts arbitrary providerID strings, and GET /provider returns each credential as a separate entry. It's purely a UI gap.

Why this matters for the provider tier

For OAuth providers especially, the current workaround (Custom provider with manually-typed base URL + API key) is a noticeable downgrade from the polished per-provider Connect flow. ChatGPT-Plus OAuth, GitHub Copilot device-code, etc. — each has been carefully tailored, and that tailoring should extend to the second credential too.

Existing workaround at the agent layer

I've shipped a chat-tool workaround in cheapcode (an opencode provider package, no fork) that:

  • Exposes cheapcode_account_oauth_add and cheapcode_account_apikey_add as MCP tools
  • For OAuth: auto-launches a private/incognito browser window with the auth URL, polls auth.json for the completion, swaps the new credential under the user-chosen name, restores the user's primary credential
  • For API keys: takes the key in chat, PUTs it directly to opencode's /auth/{name} endpoint
  • Uses opencode's existing OAuth machinery; never reimplements provider auth flows

That confirms the data model already supports multi-credential-per-provider — only the Providers UI needs the additional button to make it discoverable for non-technical users.

Offer

Happy to draft a PR with the [+ Add another] button + a <DialogNameCredential> step that runs before <DialogConnectProvider> if maintainers think the design is acceptable. Wanted to file this first per the contributing guide's note that UI features should go through design review before implementation.

If maintainers prefer a different shape (e.g., a "credentials" sub-tab per provider, or a dropdown menu instead of a separate button), happy to align with that.

Activity

  1. github-actions commented on May 4, 2026

    @github-actions
    Contributor

    This issue doesn't fully meet our contributing guidelines.

    What needs to be fixed:

    • Feature requests must use the [FEATURE]: prefix in the title (e.g. [FEATURE]: Multi-account per provider...)
    • The issue should use the feature request template, which includes a verification checkbox confirming no existing issue covers this request

    Please edit this issue to address the above within 2 hours, or it will be automatically closed.


    This issue might be a duplicate of existing issues. Please check:

    If you believe this was flagged incorrectly, please let a maintainer know.

  2. github-actions commented on May 4, 2026

    @github-actions
    Contributor

    This issue has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window.

    Feel free to open a new issue that follows our issue templates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions