[BUG] Dark mode preference resets to system/light on re-authentication

Resolved 💬 2 comments Opened Apr 15, 2026 by naroberts27 Closed Apr 18, 2026

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

  1. Open Claude desktop app
  2. Go to Settings > Appearance > set theme to Dark
  3. Log out (or let the session expire and re-authenticate)
  4. 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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗