fix(claude-swap-alias-redaction): With Hide Personal Info enabled, the CodexBar menu shows every claude-swap account's non-email la... - #3495
Conversation
…al Info hidePersonalInfo redacted account labels with redactEmail, which wipes the entire value. claude-swap labels are aliases or slot labels by design (identity is the slot, display prefers the alias), so the compact account menu showed anonymous usage numbers with no way to tell accounts apart. Add redactAccountLabel, which redacts only email-shaped substrings and keeps non-email labels, and use it for the account card title and the compact row label. Emails are still fully masked; an 'email · org' label keeps the organization name.
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a973c440f3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let email = PersonalInfoRedactor.redactAccountLabel( | ||
| Self.email(from: input), | ||
| isEnabled: input.hidePersonalInfo) |
There was a problem hiding this comment.
Limit alias-preserving redaction to Claude Swap
When Hide Personal Info is enabled for any non-Claude-Swap card, this shared path now preserves every account identifier that is not shaped like an email. For example, email(from:) explicitly returns Cursor subject IDs such as app-user, while authoritative token and fleet account labels may contain arbitrary user-assigned names; all of these were previously blanked by redactEmail. Gate the alias-preserving behavior on the Claude Swap provider/source (and likewise avoid applying it unconditionally in the shared compact renderer) so the privacy setting continues hiding identities for other account types.
Useful? React with 👍 / 👎.
|
Codex review: needs real behavior proof before merge. Reviewed September 8, 2026, 2:51 AM ET / 06:51 UTC. ClawSweeper reviewWhat this changesThe PR preserves non-email account labels in menu cards and compact rows, adds redaction tests, and includes task metadata. Regression provenancePossible regression — suspected (reviewed change). No predecessor PR is attributed. Merge readiness⛔ Blocked before merge - 9 items remain The menu improvement remains useful and is not implemented on current main. Both previously reported privacy defects remain unresolved, and the supplied validation still lacks after-fix app evidence. Priority: P2 Review scores
Verification
How this fits togetherCodexBar projects provider account information into menu cards and compact account rows. These shared renderers apply the saved Hide Personal Info preference before displaying account identities. flowchart TD
A[Claude swap accounts] --> C[Account labels]
B[Other provider accounts] --> C
C --> E[Shared privacy filtering]
D[Hide Personal Info preference] --> E
E --> F[Menu cards]
E --> G[Compact account rows]
Before merge
Findings
Agent review detailsSecurityNeeds attention: The patch introduces two privacy-display regressions; no additional supply-chain or credential-execution change was found. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep label preservation specific to Claude swap, remove complete email ranges using the established broader detection cases, and preserve other providers’ existing privacy behavior with upgrade coverage. Do we have a high-confidence way to reproduce the issue? Yes, from source: current main sends Claude-swap aliases through a whole-value redactor, producing blank menu labels when privacy is enabled. The proposed regressions are also source-reproducible; no runtime execution was performed. Is this the best way to solve the issue? No. The shared unconditional replacement changes unrelated providers and relies on narrower email detection than the repository already supports; provider-scoped handling with complete-address removal is safer. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against c3f3ea1faf70. LabelsLabel justifications:
EvidenceSecurity concerns:
What I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (1 earlier review cycle)
|
解决什么问题
多账号(claude-swap 4 账号)菜单在"隐藏个人信息"开启时只剩匿名数字,无法分辨哪张卡是哪个账号;要求卡片标题和紧凑行恢复显示账号标识(alias),邮箱仍然遮蔽。
怎么改的
怎么验证
ftask-slug: claude-swap-alias-redaction
ftask-type: fix
base: main
Opened by ftask (sunke's agent-OS). Platform CI is the source of truth.