[BUG] Dark mode preference resets to system/light on re-authentication
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Summary
The dark mode preference (Settings > Appearance > Dark) does not persist
across logouts or re-authentication. Every time the app resets auth, the
theme reverts to "system" (light).
Actual Behavior
config.json (~/Library/Application Support/Claude/config.json) has
"userThemeMode" overwritten to "system" on every login/auth refresh,
discarding the user's saved preference.
Environment
- macOS Tahoe Version 26.3 (25D125)
- Claude desktop app: Claude 1.2773.0 (884b37) 2026-04-15T14:32:09.000Z
- System appearance: Light (user intentionally not using macOS dark mode)
Workaround
Manually editing config.json or using a file watcher to re-apply the
preference after each auth reset.
What Should Happen?
Expected Behavior
Theme preference should persist server-side and restore correctly after
re-authentication.
Error Messages/Logs
No error messages are shown. The reset happens silently on re-authentication.
Relevant log snippet from ~/Library/Logs/Claude/main.log:
[info] Trying to load oauth token cache
[info] [oauth] token cache location: ~/Library/Application Support/Claude/config.json
[info] [oauth] loaded token cache from disk
The OAuth token and userThemeMode preference share the same config.json file.
On re-auth, the app overwrites userThemeMode back to "system" without logging
the change. Confirmed by manually inspecting the file before and after login.
Steps to Reproduce
Steps to Reproduce
- Open Claude desktop app
- Go to Settings > Appearance > set theme to Dark
- Log out (or let the session expire and re-authenticate)
- Theme reverts to system/light mode
Expected Behavior
Theme preference should persist server-side and restore correctly after
re-authentication.
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
1.2773.0
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
Configuration file (~/Library/Application Support/Claude/config.json — redacted):
{
"locale": "en-US",
"userThemeMode": "system",
"hasTrackedInitialActivation": true
}
(userThemeMode is set to "system" after every re-auth, regardless of user preference)
App version: 1.2773.0
macOS version: 26.3 (Build 25D125)
Root cause hypothesis:
userThemeMode and the OAuth token cache live in the same config.json. On re-authentication, the app writes a fresh config with "userThemeMode": "system" as the default, overwriting the user's saved preference. No error is logged — the reset is silent.
Workaround used:
macOS LaunchAgent watching config.json via WatchPaths, re-applying "userThemeMode": "dark" whenever the file changes. Shouldn't be necessary.
Screenshots: Not applicable — the bug is a silent file overwrite, not a visual glitch. You could show the before/after of config.json if you want to illustrate it, but the file content above covers it.
No repo to link — this is in the closed-source desktop app.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗