[PR #9827] feat: add multi-account support for providers #13233

Closed
opened 2026-02-16 18:18:06 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/anomalyco/opencode/pull/9827

State: closed
Merged: No


Summary

Allow users to connect multiple accounts for the same provider (e.g., two OpenAI accounts or two GitHub Copilot accounts with different credentials).

Changes

  • Add label field to auth schema for account identification
  • Store aliased accounts with keys like openai:Work
  • Aliased providers inherit models from base provider
  • Fix SDK caching to use separate instances per provider ID
  • Add UI flow for "Add another account" when provider is already connected
  • Pass label through OAuth and API auth flows

How it works

  1. User presses p to connect a provider
  2. If provider is already connected, shows account management submenu
  3. "Add another account" prompts for a label (e.g., "Work", "Personal")
  4. Auth is stored under aliased key (e.g., github-copilot:Work)
  5. Provider appears in model selector as "GitHub Copilot (Work)"
  6. Each account has its own credentials but inherits models from base provider

Files changed

  • packages/opencode/src/auth/index.ts - Added label field and helper functions
  • packages/opencode/src/provider/provider.ts - Aliased provider loading + SDK cache fix
  • packages/opencode/src/provider/auth.ts - Label support in OAuth flow
  • packages/opencode/src/provider/models.ts - Schema updates
  • packages/opencode/src/server/routes/provider.ts - API label parameter
  • packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx - UI for managing accounts
  • packages/sdk/js/src/v2/gen/* - Regenerated SDK types
**Original Pull Request:** https://github.com/anomalyco/opencode/pull/9827 **State:** closed **Merged:** No --- ## Summary Allow users to connect multiple accounts for the same provider (e.g., two OpenAI accounts or two GitHub Copilot accounts with different credentials). ## Changes - Add `label` field to auth schema for account identification - Store aliased accounts with keys like `openai:Work` - Aliased providers inherit models from base provider - Fix SDK caching to use separate instances per provider ID - Add UI flow for "Add another account" when provider is already connected - Pass label through OAuth and API auth flows ## How it works 1. User presses `p` to connect a provider 2. If provider is already connected, shows account management submenu 3. "Add another account" prompts for a label (e.g., "Work", "Personal") 4. Auth is stored under aliased key (e.g., `github-copilot:Work`) 5. Provider appears in model selector as "GitHub Copilot (Work)" 6. Each account has its own credentials but inherits models from base provider ## Files changed - `packages/opencode/src/auth/index.ts` - Added label field and helper functions - `packages/opencode/src/provider/provider.ts` - Aliased provider loading + SDK cache fix - `packages/opencode/src/provider/auth.ts` - Label support in OAuth flow - `packages/opencode/src/provider/models.ts` - Schema updates - `packages/opencode/src/server/routes/provider.ts` - API label parameter - `packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx` - UI for managing accounts - `packages/sdk/js/src/v2/gen/*` - Regenerated SDK types
yindo added the pull-request label 2026-02-16 18:18:06 -05:00
yindo closed this issue 2026-02-16 18:18:06 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#13233