[Bug]: Claude account rows no longer show the email (since #8055), so "Account 1, 2, 3" cannot be told apart

Open Beginner friendly
#8,286 2 comments 1 reaction 0 assignees View on GitHub

Maintainers usually reply within 1 day

@afgonullu is already working on this.

Since Nov 7, 2026.

  • #8296 by @afgonullu — open

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

account-pool bug gui
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
  1. Connect two or more Claude (anthropic) OAuth accounts.
  2. Open the Anthropic Claude provider in the dashboard and look at its account list.
  3. Each row reads "Account 1", "Account 2", and so on, with no email.
  4. 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.

Claude account rows labelled Account 1 to Account 3, with no email

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from lidge-jun/opencodex

All issues in lidge-jun/opencodex

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.