Hide Email Address toggle does not mask email in the UI

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

When “Hide Email Address” is enabled in Settings → Privacy, the email address remains fully visible in the Cursor UI (e.g. bottom-left profile area) instead of being partially masked.

The setting description says: “Partially mask your email address in the Cursor user interface” — but toggling it ON has no effect on the displayed email.

Steps to Reproduce

  1. Open Cursor IDE
  2. Go to Settings → Privacy
  3. Turn ON “Hide Email Address”
  4. Check the bottom-left profile/account area
  5. Observe: email address is still shown in full, not masked
  6. Toggle OFF and ON again — display does not change

Expected Behavior

When “Hide Email Address” is ON, the email address should be partially masked in the Cursor UI (e.g. n***@domain.com), including the bottom-left profile area.

Screenshots / Screen Recordings

Operating System

Windows 10/11

Version Information

OS: Windows 10.0.26200
Plan: Ultra Plan
(Please fill in Cursor IDE version from Menu → About Cursor → Copy before posting)

Additional Information

Screenshot attached showing: Settings → Privacy with “Hide Email Address” toggle ON, while the bottom-left profile area still displays the full email address unmasked.

This is a privacy setting that appears to have no effect on the UI.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey @ll1

It would help if you filled this out! I can’t reproduce on my Windows machine using 3.9.16.

Could you also check if it takes effect after a window reload (Ctrl + Shift + P > Reload Window)?

Thanks @Colin for looking into this!

**Version Information**

```
Version: 3.9.16 (user setup)
VS Code Extension API: 1.105.1
Commit: 042b3c1a4c53f2c3808067f519fbfc67b72cad80
Date: 2026-06-27T06:41:01.941Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.256
OS: Windows_NT x64 10.0.26200
```

**Reload Window test**

I tried **Reload Window** (`Ctrl+Shift+P` → “Reload Window”) after enabling “Hide Email Address”, but the email address is still fully visible in the UI (e.g. bottom-left profile area). Same behavior as before the reload.

Thanks! Can you also try Ctrl + Shift + P > Toggle Dev Tools, browse the Console, and see if there are any errors when you flip the toggle?

Thanks @Colin — done! Here’s what I found after more digging:

**1. DevTools Console test**

Cleared the Console, then toggled **Hide Email Address** OFF → ON → OFF several times. No new errors or warnings appeared at toggle time, and the email in the bottom-left profile area stayed fully visible each time. (Only pre-existing unrelated noise: TrustedTypes errors on startup, `[GlassDiffService]` git warnings, `[Violation]` reflow perf notes.)

**2. The setting IS saved and propagated (trace log evidence)**

I restarted with `Cursor.exe --log trace --verbose` and flipped the toggle 6 times. `renderer.log` shows a matching entry for every single flip, with no errors:

```
2026-07-02 23:58:17.921 [debug] Configuration keys changed in USER target cursor.general.emailPrivacyEnabled
2026-07-02 23:58:18.760 [debug] Configuration keys changed in USER target cursor.general.emailPrivacyEnabled
(6 entries total — one per toggle flip)
```

And `%APPDATA%\Cursor\User\settings.json` now contains:

```json
“cursor.general.emailPrivacyEnabled”: true
```

So this doesn’t look like a save/persistence problem — the config change is written to settings.json and broadcast by the configuration service, but the UI never applies the mask (silent failure, nothing in the Console).

**3. Located the exact UI element (DOM inspection)**

Walking the DOM for text nodes that look like an email finds exactly one UI element rendering it (excluding my own chat text): a plain text span inside the bottom-left **Account menu** button of the Glass sidebar footer:

```
span.ui-text ← renders the raw email, no mask
└ div.ui-sidebar-menu-button-content
└ div[aria-label=“Account menu”].ui-sidebar-menu-button
└ div.glass-sidebar-footer-account-menu
└ nav[data-component=“workspace-sidebar”]
```

Since the setting itself is saved and broadcast correctly (see #2), it looks like this sidebar-footer account component displays the account display name, and when the profile has no explicit display name (so it falls back to the email address), the masking isn’t applied on that path.

**4. Possibly relevant environment difference**

My window runs the Glass layout — the trace log shows `glassMode: true`, `isGlass: true`, `clientLayoutTag: “glass”`. Could that explain why it doesn’t reproduce on your machine if you tested on the classic layout?

Happy to attach the full trace logs or a screen recording if useful.

Hey @ll1!

Actually, I think this might be something much simpler.

When you have a name configured on https://cursor.com/dashboard/settings, it replaces the e-mail address in the UI.

If you’ve set your name to be your e-mail address, toggling on the setting to hide your e-mail address will not perform any redaction (because it’s not your e-mail anymore, it’s your name).

Thanks @Colin — you were absolutely right, and this one is on me.

My display name on https://cursor.com/dashboard/settings was literally set to my email address, so the UI was showing my *name*, not my email — and the Hide Email Address toggle correctly had nothing to mask.

I changed the name and the issue is resolved. Sorry for the wild goose chase (and thanks for sticking with the debugging)!