Fonts and themes for agent CLIs
Claude Code and Antigravity draw far more than letters: bullets for every tool call, a spinner while they work, check marks, arrows and panel borders. When your terminal font doesn’t have one of those symbols, macOS quietly borrows it from another font. Nothing breaks, but the spinner changes weight mid-animation, markers sit at a different height from the text beside them, and a symbol that comes out too wide pushes the rest of its row out of line.
Most font advice for these tools is about looks. This page is about whether the symbols are there at all. Everything below was measured in September 2026 against Claude Code 2.1.274 and the Antigravity CLI 1.2.5, on macOS, in Incise’s built-in terminal.
The short version
JuliaMono
Complete, and essentially the same cell width as Menlo, so nothing else on screen shifts.
brew install --cask font-juliamonoIosevka Term
Complete and about 17% narrower, so you fit noticeably more columns.
brew install --cask font-iosevkaIosevka Nerd Font Mono
Complete, plus the Nerd Font icons many shell prompts use.
brew install --cask font-iosevka-nerd-fontThose three are the only fonts we tested with all 50 symbols at the correct width. The usual recommendation, JetBrains Mono, and the macOS default, Menlo, both leave gaps. Plain Iosevka has everything but draws a lot of it too wide, so make sure you pick Iosevka Term.
What these tools actually draw
We found these by searching the Claude Code and Antigravity programs themselves, not by guessing from screenshots. The two tools differ: only Claude Code uses the ✻ spinner and the ⏺ tool marker, while Antigravity leans heavily on box drawing. The fonts below are scored against both sets together, so a full score is safe for either tool.
What Incise already takes care of
Incise’s terminal draws box-drawing lines and block elements such as ─ │ ╭ ╮ █ ▌ itself, instead of taking them from your font. Panel borders join up cleanly and progress bars stay solid whatever font you choose, so the font only has to supply the markers, spinners, check marks and arrows.
How 13 fonts compare
Coverage comes from each font’s own character map. Width compares every symbol with the letter M at 13pt, so “too wide” means a symbol takes more than one terminal cell. This measures completeness, not looks: a font with every symbol can still be one you don’t enjoy reading.
| Font | Symbols | Missing | Verdict |
|---|---|---|---|
| JuliaMonoComplete, and essentially the same cell width as Menlo, so nothing else on screen shifts. | 50/50 | none | Recommended |
| Iosevka TermComplete and about 17% narrower, so you fit noticeably more columns. | 50/50 | none | Recommended |
| Iosevka Nerd Font MonoComplete, plus the Nerd Font icons many shell prompts use. | 50/50 | none | Recommended |
| IosevkaHas every symbol but draws 20 of them double-width, which misaligns rows. Choose Iosevka Term instead. | 50/5020 too wide | none | Avoid |
| MesloLGS Nerd Font MonoClose. Only Claude Code's tool and result markers are borrowed. | 47/50 | ⏺⎿⏵ | Has gaps |
| Maple Mono NFMissing most of Claude Code's spinner. | 44/50 | ⏺⏵✻✽✢✳ | Has gaps |
| JetBrainsMono Nerd Font MonoThe most common recommendation, but missing the markers on nearly every line of Claude Code output. | 41/50 | ⏺⎿⏵✻✽✢✳✔✘ | Has gaps |
| Cascadia MonoBorrows the whole Claude Code spinner and several status marks. | 38/50 | ⏺⎿⏵✻✽✢✶✳✔✘✗⚠ | Avoid |
| FiraCode Nerd Font MonoSame gaps as Cascadia Mono. | 38/50 | ⏺⎿⏵✻✽✢✶✳✔✘✗⚠ | Avoid |
| MenloThe macOS default. Fine for Claude Code's spinner, but has no braille spinner frames. | 37/50 | ⏺⎿⏵ + braille spinner | Has gaps |
| DejaVu Sans MonoSame coverage as Menlo. | 37/50 | ⏺⎿⏵ + braille spinner | Has gaps |
| Hack Nerd Font MonoBorrows the spinner and every check mark. | 37/50 | ⏺⎿⏵✻✽✢✶✳✔✘✓✗⚠ | Avoid |
| Intel One MonoDesigned with low-vision developers, and still worth it if that is why you want it. Expect most agent symbols to come from another font. | 19/50 | ⏺⎿❯⏵✻✽✢✶✳✔✘✗●○◉◯⚠↑↓←→ + braille spinner | Has gaps |
For Nerd Fonts we tested the Mono variant, which is the one meant for terminals. Fonts get updated, so treat these results as a snapshot from September 2026. The check below lets you test any font yourself.
Set it up in Incise
- Install the font. All of the ones above are in Homebrew’s own cask repository, so there’s no tap to add:
brew install --cask font-juliamono - Open Incise ▸ Settings… and choose the Terminal tab.
- Set Font to Custom, click the font button beneath it, and pick the font and size.
- Choose a color scheme from the list on the left, with a preview beside it. It applies to open terminal tabs straight away.
If a font you just installed isn’t offered, quit and reopen Incise. The terminal is part of the free Homebrew and direct-download editions; the Mac App Store edition doesn’t have one.
Check your own font
Paste this into your terminal. Every symbol should match the weight and height of the letters around it. One that looks lighter, bolder or out of place is being borrowed from another font. On the last two lines, the | marks should line up exactly. If they don’t, a symbol is too wide.
printf '%s\n' \ 'Claude Code ⏺ ⎿ ❯ ⏵ ✻ ✽ ✢ ✶ ✳ ✔ ✘ ● ○' \ 'Antigravity ⎿ ✓ ✗ ⚠ ○ ◉' \ 'Spinner ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏' \ 'Arrows ↑ ↓ ← → …' \ 'Width |⏺|⎿|✻|✔|●|⠋|↑|' \ ' |M|M|M|M|M|M|M|'
Color schemes
Incise ships 25 terminal color schemes, plus Follow Editor Theme, which matches your editor’s theme and font. A scheme sets the background and the 16 ANSI colors that git, shell prompts, ls, test runners and most other command-line tools draw with.
Claude Code is a partial exception. Its standard dark and light themes bring their own colors, so what matters there is choosing the Claude Code theme that matches your scheme: run /theme and pick dark for a dark scheme, light for a light one. Its two “ANSI colors only” themes use your scheme’s palette directly, so the table below applies to them too.
The numbers are contrast ratios against each scheme’s background, computed from the exact palettes Incise ships. Higher is easier to read; 4.5:1 is the usual minimum for body text, and anything under it is highlighted. Dim is ANSI bright black, the color most tools use for secondary text such as hints, timestamps and file paths.
| Scheme | Text | Dim | Red | Green |
|---|---|---|---|---|
| Ayu Dark | 10.3 | 3.5 | 6.3 | 11.0 |
| Ayu Mirage | 9.5 | 2.8 | 5.9 | 9.0 |
| Catppuccin Mocha | 11.3 | 2.5 | 7.1 | 11.0 |
| Cobalt2 | 15.3 | 2.0 | 3.8 | 8.5 |
| Dracula | 13.4 | 3.0 | 4.5 | 10.4 |
| Everforest Dark | 8.6 | 6.5 | 5.3 | 7.3 |
| GitHub Dark | 16.0 | 4.1 | 7.5 | 7.4 |
| GitHub Lightlight | 14.7 | 2.7 | 4.6 | 4.6 |
| Gruvbox Dark | 10.7 | 4.0 | 2.7 | 4.8 |
| Gruvbox Material | 8.2 | 3.0 | 4.7 | 6.7 |
| Iceberg Dark | 10.6 | 3.6 | 6.1 | 9.0 |
| Kanagawa Wave | 11.3 | 3.3 | 3.2 | 4.8 |
| Material Darker | 15.6 | 2.1 | 5.2 | 11.7 |
| Monokai | 13.9 | 3.0 | 3.9 | 9.6 |
| Monokai Pro | 13.8 | 2.9 | 4.9 | 8.9 |
| Night Owl | 13.5 | 2.5 | 5.3 | 9.9 |
| Nord | 9.2 | 1.7 | 3.1 | 6.1 |
| One Dark | 6.6 | 2.3 | 4.4 | 6.9 |
| Rosé Pine Moon | 11.9 | 3.0 | 5.4 | 4.3 |
| Snazzy | 13.8 | 2.2 | 4.7 | 12.0 |
| Solarized Dark | 4.7 | 1.0 | 3.2 | 4.7 |
| Solarized Lightlight | 4.1 | 13.9 | 4.3 | 3.0 |
| Tokyo Night | 10.6 | 1.9 | 6.5 | 9.4 |
| Tokyo Night Storm | 9.0 | 2.0 | 5.5 | 8.0 |
| Tomorrow Night | 9.8 | 5.7 | 4.5 | 8.2 |
Watch the Dim column. Almost every scheme keeps body text very readable, but dim text is where they fall down. In Solarized Dark it is exactly the background color, so hints and paths in 16-color tools disappear completely, and Nord, Tokyo Night and Cobalt2 are not far behind. Everforest Dark and Tomorrow Night are the dark schemes that keep it readable.
Red and green carry diffs and errors. Gruvbox Dark, Nord, Kanagawa Wave and Solarized Dark have the weakest red, which is worth knowing if you read a lot of failing test output.