Configure your terminal for Claude Code changedterminal-config
Nearest release: v2.1.304, published an hour after upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 19 Oct 2026 18:23 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 20 Oct 2026 18:37 UTC.
Upstream edited
Recorded here
Lines+158added
Lines−164removed
From line
44
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits25to this page, all time
The whole hunk
from line 44, old and new numbered
/
from line 44
4444
4545Some Claude Code shortcuts use the Option key, such as Option+Enter for a newline or Option+P to switch models. On macOS, most terminals do not send Option as a modifier by default, so these shortcuts do nothing until you enable it. The terminal setting for this is usually labeled "Use Option as Meta Key"; Meta is the historical Unix name for the key now labeled Option or Alt.
4646
47<Tabs>
48 <Tab title="Apple Terminal">
49 Open Settings → Profiles → Keyboard and check "Use Option as Meta Key".
47**Apple Terminal**
5048
51 If you accepted Claude Code's first-run terminal setup prompt, this is already done. That prompt runs `/terminal-setup` for you, which enables Option as Meta and turns off the audible bell in your Apple Terminal profile.
49Open Settings → Profiles → Keyboard and check "Use Option as Meta Key".
5250
53 In [screen reader mode](/docs/en/accessibility), `/terminal-setup` leaves the bell setting unchanged so the terminal bell stays audible. If an earlier run turned the bell off, turn it back on under Settings → Profiles → Advanced → "Audible bell".
54 </Tab>
51If you accepted Claude Code's first-run terminal setup prompt, this is already done. That prompt runs `/terminal-setup` for you, which enables Option as Meta and turns off the audible bell in your Apple Terminal profile.
5552
56 <Tab title="iTerm2">
57 Open Settings → Profiles → Keys → General and set Left Option key and Right Option key to "Esc+".
53In [screen reader mode](/docs/en/accessibility), `/terminal-setup` leaves the bell setting unchanged so the terminal bell stays audible. If an earlier run turned the bell off, turn it back on under Settings → Profiles → Advanced → "Audible bell".
5854
59 Running `/terminal-setup` in iTerm2 enables "Applications in terminal may access clipboard" under Settings → General → Selection so the `/copy` command can write to your system clipboard. The command detects iTerm2 even when run from inside tmux. Restart iTerm2 for the change to take effect.
60 </Tab>
55**iTerm2**
6156
62 <Tab title="VS Code">
63 Add `"terminal.integrated.macOptionIsMeta": true` to your VS Code settings.
64 </Tab>
65</Tabs>
57Open Settings → Profiles → Keys → General and set Left Option key and Right Option key to "Esc+".
6658
59Running `/terminal-setup` in iTerm2 enables "Applications in terminal may access clipboard" under Settings → General → Selection so the `/copy` command can write to your system clipboard. The command detects iTerm2 even when run from inside tmux. Restart iTerm2 for the change to take effect.
60
61**VS Code**
62
63Add `"terminal.integrated.macOptionIsMeta": true` to your VS Code settings.
64
6765For Ghostty, Kitty, and other terminals, look for an Option-as-Alt or Option-as-Meta setting in the terminal's configuration file.
6866
6967## Get a terminal bell or notification
from line 78
8078
8179The desktop notification reaches your local machine over SSH, so a remote session can still alert you. Ghostty and Kitty forward it to your OS notification center without further setup. iTerm2 requires you to enable forwarding:
8280
83<Steps>
84 <Step title="Open iTerm2 notification settings">
85 Go to Settings → Profiles → Terminal.
86 </Step>
81**1. Open iTerm2 notification settings**
8782
88 <Step title="Enable alerts">
89 Check "Notification Center Alerts", then click "Filter Alerts" and enable "Send escape sequence-generated alerts".
90 </Step>
91</Steps>
83Go to Settings → Profiles → Terminal.
9284
85**2. Enable alerts**
86
87Check "Notification Center Alerts", then click "Filter Alerts" and enable "Send escape sequence-generated alerts".
88
9389If notifications still do not appear, confirm that your terminal application has notification permission in your OS settings, and if you are running inside tmux, [enable passthrough](#configure-tmux).
9490
9591### Play a sound with a Notification hook
from line 173
177173
178174The reference below covers the tokens you can set in `overrides`. The interactive editor in `/theme` shows the same tokens with a live preview, plus a few single-purpose accents such as onboarding screen colors that are omitted here.
179175
180<Accordion title="Color token reference">
181 The following example combines tokens from several of the groups below: the brand accent, the plan mode border, the diff backgrounds, and the message background.
176> **Color token reference**
177>
178> The following example combines tokens from several of the groups below: the brand accent, the plan mode border, the diff backgrounds, and the message background.
179>
180> ```json ~/.claude/themes/midnight.json theme={null}
181> {
182> "name": "Midnight",
183> "base": "dark",
184> "overrides": {
185> "claude": "#a78bfa",
186> "planMode": "#38bdf8",
187> "diffAdded": "#14532d",
188> "diffRemoved": "#7f1d1d",
189> "userMessageBackground": "#1e1b4b"
190> }
191> }
192> ```
193>
194> #### Text and accent colors
195>
196> Control the primary brand accent and the foreground text shades used throughout the interface.
197>
198> | Token | Controls |
199> | :- | :- |
200> | `claude` | Primary brand accent, used for the spinner and assistant label |
201> | `text` | Default foreground text |
202> | `inverseText` | Text drawn on top of a colored background, such as status badges |
203> | `inactive` | Secondary text such as hints, timestamps, and disabled items |
204> | `subtle` | Faint borders and de-emphasized secondary text |
205> | `suggestion` | Autocomplete suggestions and selection highlight in pickers |
206> | `permission` | Dialog borders, including permission prompts and pickers |
207> | `remember` | Memory and `CLAUDE.md` indicators |
208>
209> #### Status colors
210>
211> Signal success, failure, and warning states across messages and indicators.
212>
213> | Token | Controls |
214> | :- | :- |
215> | `success` | Success messages and passing checks |
216> | `error` | Error messages and failures |
217> | `warning` | Warnings, caution messages, and the auto mode indicator |
218> | `merged` | Merged pull request status |
219>
220> #### Input box and mode indicators
221>
222> Set the input box border color and the accent shown while a permission mode or indicator is active.
223>
224> | Token | Controls |
225> | :- | :- |
226> | `promptBorder` | Input box border |
227> | `planMode` | Plan mode accent, plan messages, and plan-mode dialogs |
228> | `autoAccept` | Accept-edits mode accent |
229> | `bashBorder` | Input box border when entering a `!` shell command |
230> | `ide` | IDE connection indicator |
231> | `fastMode` | Fast mode indicator |
232> | `effortUltra` | The `ultracode` tag on the input box border while [ultracode](/docs/en/model-config#adjust-effort-level) is on. Your override of this color takes effect on Claude Code v2.1.239 or later |
233>
234> #### Diff rendering
235>
236> Color added and removed code in file edits and reviews.
237>
238> | Token | Controls |
239> | :- | :- |
240> | `diffAdded` | Background of added lines |
241> | `diffRemoved` | Background of removed lines |
242> | `diffAddedDimmed` | Background of added lines in the dimmed diff shown after you reject an edit |
243> | `diffRemovedDimmed` | Background of removed lines in the dimmed diff shown after you reject an edit |
244> | `diffAddedWord` | Word-level highlight within an added line |
245> | `diffRemovedWord` | Word-level highlight within a removed line |
246>
247> #### Fullscreen mode
248>
249> Claude Code uses `userMessageBackgroundHover`, `selectionBg`, and `composerSidebarBackground` only in [fullscreen rendering mode](/docs/en/fullscreen). It paints `userMessageBackground`, `bashMessageBackgroundColor`, and `memoryBackgroundColor` in both the default and fullscreen renderers.
250>
251> | Token | Controls |
252> | :- | :- |
253> | `userMessageBackground` | Background behind your messages in the transcript |
254> | `userMessageBackgroundHover` | Background behind a message while hovered or expanded |
255> | `bashMessageBackgroundColor` | Background behind `!` shell command entries in the transcript |
256> | `memoryBackgroundColor` | Background behind `#` memory entries in the transcript |
257> | `selectionBg` | Background of text selected with the mouse |
258> | `composerSidebarBackground` | Background of the panel beside the conversation, such as the [diff panel](/docs/en/fullscreen#watch-your-changes-in-the-diff-panel) or a [mod's pane](/docs/en/plugins/mods/interface) |
259>
260> #### Usage meter and speaker labels
261>
262> Adjust the bar shown in the `/usage` view and the labels that distinguish your messages from Claude's.
263>
264> | Token | Controls |
265> | :- | :- |
266> | `rate_limit_fill` | Filled portion of the usage meter |
267> | `rate_limit_empty` | Unfilled portion of the usage meter |
268> | `briefLabelYou` | Color of the `You` label on your messages |
269> | `briefLabelClaude` | Color of the `Claude` label on assistant messages |
270>
271> #### Shimmer variants and subagent colors
272>
273> Several tokens have a paired shimmer variant that supplies the lighter color used in the spinner's animated gradient. Override the shimmer alongside its base token if the animation looks mismatched.
274>
275> * `claude` and `claudeShimmer`
276> * `warning` and `warningShimmer`
277> * `permission` and `permissionShimmer`
278> * `promptBorder` and `promptBorderShimmer`
279> * `inactive` and `inactiveShimmer`
280> * `fastMode` and `fastModeShimmer`
281>
282> Each [subagent](/docs/en/sub-agents) and parallel task is shown in one of eight named colors so you can tell them apart in the transcript. The token names follow the pattern `<color>_FOR_SUBAGENTS_ONLY`, where `<color>` is `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, or `cyan`. Override these to change what each named color looks like. For example, a subagent with `color: blue` in its definition is drawn using the `blue_FOR_SUBAGENTS_ONLY` value.
283>
284> Claude Code renders the [`ultrathink`](/docs/en/model-config#use-ultrathink-for-one-off-deep-reasoning) keyword in the prompt input with a seven-color rainbow gradient. The token names follow the pattern `rainbow_<color>` and `rainbow_<color>_shimmer`, where `<color>` is `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, or `violet`.
182285
183 ```json ~/.claude/themes/midnight.json theme={null}
184 {
185 "name": "Midnight",
186 "base": "dark",
187 "overrides": {
188 "claude": "#a78bfa",
189 "planMode": "#38bdf8",
190 "diffAdded": "#14532d",
191 "diffRemoved": "#7f1d1d",
192 "userMessageBackground": "#1e1b4b"
193 }
194 }
195 ```
196
197 #### Text and accent colors
198
199 Control the primary brand accent and the foreground text shades used throughout the interface.
200
201 | Token | Controls |
202 | :- | :- |
203 | `claude` | Primary brand accent, used for the spinner and assistant label |
204 | `text` | Default foreground text |
205 | `inverseText` | Text drawn on top of a colored background, such as status badges |
206 | `inactive` | Secondary text such as hints, timestamps, and disabled items |
207 | `subtle` | Faint borders and de-emphasized secondary text |
208 | `suggestion` | Autocomplete suggestions and selection highlight in pickers |
209 | `permission` | Dialog borders, including permission prompts and pickers |
210 | `remember` | Memory and `CLAUDE.md` indicators |
211
212 #### Status colors
213
214 Signal success, failure, and warning states across messages and indicators.
215
216 | Token | Controls |
217 | :- | :- |
218 | `success` | Success messages and passing checks |
219 | `error` | Error messages and failures |
220 | `warning` | Warnings, caution messages, and the auto mode indicator |
221 | `merged` | Merged pull request status |
222
223 #### Input box and mode indicators
224
225 Set the input box border color and the accent shown while a permission mode or indicator is active.
226
227 | Token | Controls |
228 | :- | :- |
229 | `promptBorder` | Input box border |
230 | `planMode` | Plan mode accent, plan messages, and plan-mode dialogs |
231 | `autoAccept` | Accept-edits mode accent |
232 | `bashBorder` | Input box border when entering a `!` shell command |
233 | `ide` | IDE connection indicator |
234 | `fastMode` | Fast mode indicator |
235 | `effortUltra` | The `ultracode` tag on the input box border while [ultracode](/docs/en/model-config#adjust-effort-level) is on. Your override of this color takes effect on Claude Code v2.1.239 or later |
236
237 #### Diff rendering
238
239 Color added and removed code in file edits and reviews.
240
241 | Token | Controls |
242 | :- | :- |
243 | `diffAdded` | Background of added lines |
244 | `diffRemoved` | Background of removed lines |
245 | `diffAddedDimmed` | Background of added lines in the dimmed diff shown after you reject an edit |
246 | `diffRemovedDimmed` | Background of removed lines in the dimmed diff shown after you reject an edit |
247 | `diffAddedWord` | Word-level highlight within an added line |
248 | `diffRemovedWord` | Word-level highlight within a removed line |
249
250 #### Fullscreen mode
251
252 Claude Code uses `userMessageBackgroundHover`, `selectionBg`, and `composerSidebarBackground` only in [fullscreen rendering mode](/docs/en/fullscreen). It paints `userMessageBackground`, `bashMessageBackgroundColor`, and `memoryBackgroundColor` in both the default and fullscreen renderers.
253
254 | Token | Controls |
255 | :- | :- |
256 | `userMessageBackground` | Background behind your messages in the transcript |
257 | `userMessageBackgroundHover` | Background behind a message while hovered or expanded |
258 | `bashMessageBackgroundColor` | Background behind `!` shell command entries in the transcript |
259 | `memoryBackgroundColor` | Background behind `#` memory entries in the transcript |
260 | `selectionBg` | Background of text selected with the mouse |
261 | `composerSidebarBackground` | Background of the panel beside the conversation, such as the [diff panel](/docs/en/fullscreen#watch-your-changes-in-the-diff-panel) or a [mod's pane](/docs/en/plugins/mods/interface) |
262
263 #### Usage meter and speaker labels
264
265 Adjust the bar shown in the `/usage` view and the labels that distinguish your messages from Claude's.
266
267 | Token | Controls |
268 | :- | :- |
269 | `rate_limit_fill` | Filled portion of the usage meter |
270 | `rate_limit_empty` | Unfilled portion of the usage meter |
271 | `briefLabelYou` | Color of the `You` label on your messages |
272 | `briefLabelClaude` | Color of the `Claude` label on assistant messages |
273
274 #### Shimmer variants and subagent colors
275
276 Several tokens have a paired shimmer variant that supplies the lighter color used in the spinner's animated gradient. Override the shimmer alongside its base token if the animation looks mismatched.
277
278 * `claude` and `claudeShimmer`
279 * `warning` and `warningShimmer`
280 * `permission` and `permissionShimmer`
281 * `promptBorder` and `promptBorderShimmer`
282 * `inactive` and `inactiveShimmer`
283 * `fastMode` and `fastModeShimmer`
284
285 Each [subagent](/docs/en/sub-agents) and parallel task is shown in one of eight named colors so you can tell them apart in the transcript. The token names follow the pattern `<color>_FOR_SUBAGENTS_ONLY`, where `<color>` is `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, or `cyan`. Override these to change what each named color looks like. For example, a subagent with `color: blue` in its definition is drawn using the `blue_FOR_SUBAGENTS_ONLY` value.
286
287 Claude Code renders the [`ultrathink`](/docs/en/model-config#use-ultrathink-for-one-off-deep-reasoning) keyword in the prompt input with a seven-color rainbow gradient. The token names follow the pattern `rainbow_<color>` and `rainbow_<color>_shimmer`, where `<color>` is `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, or `violet`.
288</Accordion>
289
290286## Switch to fullscreen rendering
291287
292288In [screen reader mode](/docs/en/accessibility), this section doesn't apply. Claude Code always renders as plain scrolling text except in attached [background sessions](/docs/en/agent-view), and if you run `/tui fullscreen` in any other session, Claude Code prints an explanation instead of switching.
from line 293
297293
298294Run `/tui fullscreen` to switch and save the preference. Your conversation relaunches intact and future sessions start in fullscreen unless a [fullscreen start fails](/docs/en/fullscreen#fullscreen-renderer-didnt-finish-starting). You can also set the `CLAUDE_CODE_NO_FLICKER` environment variable before starting Claude Code:
299295
300<CodeGroup>
301 ```bash Bash and Zsh theme={null}
302 CLAUDE_CODE_NO_FLICKER=1 claude
303 ```
296```bash Bash and Zsh theme={null}
297CLAUDE_CODE_NO_FLICKER=1 claude
298```
304299
305 ```powershell PowerShell theme={null}
306 $env:CLAUDE_CODE_NO_FLICKER = "1"; claude
307 ```
300```powershell PowerShell theme={null}
301$env:CLAUDE_CODE_NO_FLICKER = "1"; claude
302```
308303
309 ```json ~/.claude/settings.json theme={null}
310 {
311 "env": {
312 "CLAUDE_CODE_NO_FLICKER": "1"
313 }
304```json ~/.claude/settings.json theme={null}
305{
306 "env": {
307 "CLAUDE_CODE_NO_FLICKER": "1"
314308 }
315 ```
316</CodeGroup>
309}
310```
317311
318312## Cap response width in wide terminals
319313
No line in this hunk matches that.