← All Posts

How to Do Dark Mode Implementation on Claude Code

Claude Code does not have a built-in dark mode setting. As a terminal-based CLI, it inherits the color scheme from your terminal emulator. To get dark mode in Claude Code, you configure dark mode at the terminal level — changes apply instantly without restarting Claude Code. Takes under two minutes on macOS.

  • Who this is for: Developers running Claude Code on macOS or Linux who want a consistent dark theme.
  • Key trade-off: You get full control over colors, but theming lives outside Claude Code itself — in your terminal app or shell config.
  • Data point: Claude Code runs entirely in the terminal; it outputs ANSI color codes that respect your terminal's active palette.

Why Claude Code has no native dark mode toggle

Claude Code is a command-line tool, not a GUI app. It renders output using ANSI escape sequences on top of whatever background and foreground colors your terminal emulator provides. This means your terminal theme is your dark mode setting. There is no claude config set theme dark command to run.

This is actually a benefit: you can use any terminal theme you already have — Dracula, One Dark, Catppuccin Mocha, Tokyo Night — and Claude Code picks it up automatically. No extra configuration step inside Claude Code itself.

How to enable dark mode in Claude Code on macOS

Option 1: Use the built-in macOS Terminal dark profile

  1. Open Terminal (the default macOS terminal app).
  2. Go to Terminal > Settings > Profiles.
  3. Select Pro or Homebrew from the list on the left — both are dark themes.
  4. Click Default to make it the default profile.
  5. Open a new terminal window and run claude. Dark mode is active.

Option 2: Use iTerm2 with a dark color preset

iTerm2 is the most popular terminal for macOS development and ships with several dark presets. According to iTerm2's documentation, you can import any color scheme from the iTerm2 Color Schemes repository, which contains 200+ dark themes.

  1. Install iTerm2 from iterm2.com.
  2. Open iTerm2 > Settings > Profiles > Colors.
  3. Click Color Presets... and choose a dark preset such as Tango Dark or Dark Background.
  4. Alternatively, download a theme like Dracula for iTerm2 and import it via the same menu.
  5. Launch Claude Code — the new colors are applied immediately.

Option 3: Use a modern terminal like Warp or Ghostty

Terminals like Warp and Ghostty have dark mode baked into their interface with a simple toggle in preferences. Both work seamlessly with Claude Code. Warp, in particular, adds a rendered UI layer on top of the terminal while still passing ANSI codes through correctly.

How to enable dark mode in Claude Code on Linux

On Linux, the steps depend on your terminal emulator. The most common options are:

  • GNOME Terminal: Right-click the terminal window, go to Profiles > Edit Profile, and toggle off "Use colors from system theme." Then set a dark background color manually.
  • Alacritty: Edit ~/.config/alacritty/alacritty.toml and set the colors section to a dark palette. The alacritty-theme repository has ready-made dark configs.
  • Kitty: Run kitty +kitten themes to open the built-in theme picker and filter by dark themes.

Does Claude Code respect the system appearance setting on macOS?

Claude Code itself does not read the macOS system-level Light/Dark Mode preference from System Settings. However, if your terminal emulator is configured to automatically switch its color profile when macOS switches between light and dark mode — as iTerm2 supports via its Automatic profile switching feature — then Claude Code will visually switch as well, since it inherits the terminal colors.

To set this up in iTerm2: go to Settings > Profiles, create one profile for dark and one for light, and use Prefs > Profiles > Automatic Profile Switching with the isDark trigger. More detail is in the iTerm2 automatic profile switching docs.

Key things to know about Claude Code's terminal output

Even with a dark terminal background, some Claude Code output may appear differently than expected. A few practical notes:

  • Claude Code uses colors to distinguish tool outputs, file diffs, and status messages. These are controlled by ANSI codes — they will adapt to your terminal's foreground palette, not a hardcoded color.
  • If your dark theme uses a very low-contrast foreground color, some status text may be hard to read. Themes designed for development (Dracula, One Dark Pro, Catppuccin) are tested against CLI tools and are a safe choice.
  • Claude Code's slash commands like /status and /usage output plain text that respects the same terminal colors.
  • If you use Claude Code hooks that produce shell output, that output will also follow your terminal theme.

Monitor your Claude Code usage while you work

Once your terminal is set up and you're deep in a coding session, the last thing you want is a sudden 5-hour usage lockout mid-PR. Usagebar sits in your macOS menu bar and shows your Claude Code usage in real time — no need to switch to a browser tab or run /usage in the terminal.

It sends smart notifications at 50%, 75%, and 90% of your usage window so you always know when to wrap up a task before the limit hits. Credentials are stored securely in macOS Keychain, and the app shows exactly when your usage window resets so you can plan around it.

Pricing is pay-what-you-want, with a free tier available for students. Get Usagebar — instant download, no account required.

Summary: dark mode in Claude Code

Terminal AppDark Mode MethodAuto-switches with macOS?
macOS TerminalProfiles > select dark profile > set as DefaultNo (manual)
iTerm2Profiles > Colors > Color PresetsYes (with auto-switching)
WarpSettings > Appearance > ThemeYes (follows system)
GhosttyConfig file: theme = dark:your-theme,light:your-themeYes (with dark/light config)
Alacritty (Linux)Edit alacritty.toml colors sectionNo (manual)
Kitty (Linux)kitty +kitten themes pickerNo (manual)

Track Your Claude Code Usage

Never hit your usage limits unexpectedly. Usagebar lives in your menu bar and shows your 5-hour and weekly limits at a glance.

Get Usagebar