[Bug]: Claude account rows no longer show the email (since #8055), so "Account 1, 2, 3" cannot be told apart
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 76/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- frontend
Research direction
Start with gui/src/provider-workspace/auth.ts, then trace how ordinalOnly is set in gui/src/hooks/useProviderAccountPools.ts and gui/src/components/provider-workspace/ProviderAuthPanel.tsx. Check the account list, Overview, reset dialogs, and remove confirmation to see where labels are used. Done means Claude accounts show alias, then the masked email, then the ordinal, consistently across those views.
Written by the indexing model from the issue text.
Description
Client or integration
OpenCodex dashboard
Area
Dashboard
Summary
Why did the Claude account rows stop showing the account email?
Since #8055, every Claude (anthropic) OAuth account row in the dashboard is named only by its position: "Account 1", "Account 2", "Account 3". Before that change, each row showed the account's email, so I could see which login and which subscription each row belonged to. Now nothing on the screen tells my three accounts apart (screenshot below).
This matters in daily use:
- Anthropic sometimes asks me to log in again. When that happens, I do not know which of my Claude logins belongs to which row, so I have to try each login until the right row recovers.
- The only workaround I can see is to remove every account, add them back one at a time, and give each one an alias right after login. That is extra work, and on 2.98.0 it would not help anyway: Claude rows ignore the saved alias too (reported in #8196, which was closed automatically for missing details).
- "Account N" is only the current row position. It changes when an account is added or removed, and it cannot be matched against claude.ai, which identifies a subscription by its email.
The server still has the information. On my install, GET /api/oauth/accounts?provider=anthropic returns a masked email for all three accounts. The dashboard drops it: Claude pool rows call oauthAccountDisplayLabel (gui/src/provider-workspace/auth.ts) with ordinalOnly = true (from gui/src/hooks/useProviderAccountPools.ts and gui/src/components/provider-workspace/ProviderAuthPanel.tsx), and that flag removes both the alias and the email. Other OAuth providers still show alias, then email, then the ordinal.
If the reason was privacy, the email is already masked by default (f***[email protected] style), and #3859 / #4160 added privacy.maskEmails so each operator can choose. I would expect Claude rows to follow that same rule.
Expected: Claude rows show the alias when one is set, otherwise the email (masked unless privacy.maskEmails is false), and "Account N" only when neither exists. The same label should appear in Overview, the reset dialogs and the remove confirmation, which today also names the account only by its number.
Reproduction
- Connect two or more Claude (
anthropic) OAuth accounts. - Open the Anthropic Claude provider in the dashboard and look at its account list.
- Each row reads "Account 1", "Account 2", and so on, with no email.
- Call
GET /api/oauth/accounts?provider=anthropic: it returns a masked email for each of those accounts.
Version
2.98.0 (npm global, installed with Volta). The rows showed the email before #8055.
Operating system
macOS 27.0.1 (build 26A434)
Provider and model
anthropic (Claude OAuth account pool, 3 accounts)
Logs or error output
No response
Screenshots and supporting files
Claude account rows on 2.98.0: three accounts, two of them paused, and nothing shows which login each row is.

Redacted configuration
No response
Checks
- I searched existing issues and documentation.
- I removed secrets, tokens, account details, request credentials, and personal data.
- Dominant language
- TypeScript
- Stars
- 16.9k
- Forks
- 1.3k
- Avg merge
- 20h 9m
- Merged PRs (30d)
- 690
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from lidge-jun/opencodex
-
account-pool bug gui
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
lidge-jun/opencodex#8131 · 3 comments ·
Maintainers usually reply within 1 day
-
[Feature]: Surface rate-limit headroom from response headers for API-key providers (OpenAI, Anthropic API, xAI, Groq, Mistral)Possibly taken A pull request linked to this issue is open or already merged. Openaccount-pool enhancement provider
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
-
[Feature]: Show Mistral API and Vibe budget usage from /v1/billing/budgetPossibly taken A pull request linked to this issue is open or already merged. Openenhancement provider
Difficulty 4/5 3-5 days Newbie friendliness 56/100
Maintainers usually reply within 1 day
-
account-pool provider provider-compatibility
Difficulty 5/5 Over a week Newbie friendliness 25/100
lidge-jun/opencodex#8288 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
[Bug][macOS] Dashboard chips render as square corners instead of rounded pills in the desktop appOpenbug gui platform
Difficulty 3/5 1-2 days Newbie friendliness 65/100
lidge-jun/opencodex#8281 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
All issues in lidge-jun/opencodex
Similar issues
-
Difficulty 1/5 1-3 hours Newbie friendliness 86/100
ranxianglei/billion-context#5893 ·
Maintainers usually reply within 1 day
-
stringify escapes leading digits in pseudo-class arguments (:nth-child(1) becomes :nth-child(\31 ))Open
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
enhancement security severity:low
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Battle-Cattle/BCUK-Bot-4#959 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day