Allow customizing spinner "thinking" verbs — static list and dynamic sources

Status Open
Maintainer reply None cached
Activity 3 comments · opened Jul 3, 2026

What

Let users customize the randomized thinking verbs the spinner shows while Claude works (e.g. "Coreographing…", "Shenaniganing…", "Noodling…"). Today there is no way to influence them — spinnerTipsEnabled only controls tip text and prefersReducedMotion disables the animation entirely.

Why

The verbs are a beloved part of the CLI's personality. Letting users add their own — or pull team/project/seasonal-themed ones — makes it more fun and personal. A dynamic source also lets teams share a curated set, or rotate them without editing config.

Proposed

Support multiple source types via settings.json, with a mode to either append to or replace the built-in list:

  1. Static list — inline in settings:
{ "spinnerWords": { "mode": "append", "words": ["Vibing", "Percolating", "Conjuring"] } }
  1. Local file — path to a newline- or JSON-delimited word list, re-read on change:
{ "spinnerWords": { "mode": "replace", "file": "~/.claude/spinner-words.txt" } }
  1. Command — like statusLine, run a script whose stdout is the word list (enables server/API fetch, caching, per-repo logic):
{ "spinnerWords": { "mode": "append", "command": "curl -s https://example.com/spinner-words" } }

All sources fall back to the built-in defaults when unset, empty, or on error (so a failed fetch never leaves the spinner blank).

View original on GitHub ↗

3 Comments

DamianFekete · 1 month ago

The static list works, I'll post the answer from https://github.com/anthropics/claude-code/issues/6814#issuecomment-3816751199 as it it buried there. I wanted to disable it, not add my own.

From ~/.claude/settings.json (mode: append should work as well):

{
  "spinnerVerbs": {
    "mode": "replace",
    "verbs": ["Working"]
  }
}

See spinnerVerbs on https://code.claude.com/docs/en/settings

harkairt · 1 month ago

I also want to be able to specify a separate file

If I want a large or frequently-changing list of verbs (for example, to learn new vocabulary while I work), that list bloats the settings file and gets mixed in with actual configuration. It also makes the verb list effectively static: since it's embedded in settings, there's no clean way to regenerate or refresh it from an external process without rewriting settings.json itself.

eg: I could also dynamically put there some short news headlines and such.

DamianFekete · 1 month ago

I asked Claude if "such a feature should exist." I am not a maintainer; if I were, I would not implement it. I posted my previous answer solely because it would have solved 99% of my problem.

Claude:

No, not as core Claude Code functionality — and here's the case against it: Cost side: Every config option is permanent maintenance burden: docs, tests, backward-compat, support tickets from people whose custom command silently breaks. The "command" mode is the worst offender — running arbitrary shell commands on every spinner tick (or per-session) to fetch decorative text is a real attack surface for approximately zero value. Someone's malicious spinner-words fetch script is now running with your CLI's permissions. It invites scope creep: today it's spinner verbs, tomorrow it's "customize the whole UI copy," "themeable everything." Each increment seems small; the aggregate is a config surface nobody asked to maintain. Value side: The verbs are cosmetic flavor text. The entire audience for "I want my own thinking verbs" is a sliver of a sliver — people who find "Noodling…" mildly annoying or want a personal joke. That's a nice-to-have, not friction anyone's actually blocked by. The one semi-legitimate use case in the thread — "dynamically show news headlines" — is a novelty, not a workflow need. Nobody's productivity depends on it.