Customize the Claude Code spinner tips with live jokes, quotes, facts, or anything you want — no more "Tip: Connect Claude to your IDE".
Claude Code shows a rotating tip while it thinks. I got bored of seeing that since i spend a lot of time on Claude code everyday. This tool replaces those with fresh content fetched from the internet. Works with any Claude Code session automatically — run it once and it persists.
Quick start
git clone https://github.com/vipulawl/claude-tips.git
cd claude-tips
python3 claude_tips.py --provider jokesThat's it. Open any Claude Code session and you'll see jokes instead of tips.
How it works
Claude Code reads ~/.claude/settings.json at startup. This tool writes a spinnerTipsOverride key there with your content. No monkey-patching, no process injection — just a native Claude Code setting.
{
"spinnerTipsOverride": {
"tips": ["Why did the API return 418? It's a teapot.", "..."],
"excludeDefault": true
}
}Does it persist across sessions?
Yes. Run the script once and the tips stay until you reset them. The only reason to re-run is if you want a fresh batch of jokes/quotes.
To auto-refresh every time you open a terminal, add this to your ~/.zshrc:
(cd ~/claude-tips && python3 claude_tips.py --provider jokes --count 15 > /dev/null 2>&1 &)
Or set up a cron job to refresh hourly:
0 * * * * cd ~/claude-tips && python3 claude_tips.py --provider jokes --count 15
Built-in providers
| Provider | Source | API key needed |
|---|---|---|
jokes |
JokeAPI — clean, programmer-friendly | No |
quotes |
ZenQuotes | No |
facts |
UselessFacts | No |
custom |
Your own list via --tips |
No |
All built-in providers are free with no API key required.
Usage
# jokes (default) python3 claude_tips.py --provider jokes # quotes python3 claude_tips.py --provider quotes --count 15 # random facts python3 claude_tips.py --provider facts --count 5 # your own list python3 claude_tips.py --provider custom --tips "Tip one" "Tip two" "Tip three" # mix with Claude's default tips instead of replacing them python3 claude_tips.py --provider jokes --keep-default # auto-refresh every hour (keeps tips fresh) python3 claude_tips.py --provider jokes --watch --interval 3600 # disable all tips entirely python3 claude_tips.py --disable # restore Claude's original default tips python3 claude_tips.py --reset
Adding your own provider
Create a Python file with a fetch function:
# my_provider.py import urllib.request, json def fetch(count: int) -> list[str]: # fetch from wherever you want — news API, RSS, a local file, anything data = json.loads(urllib.request.urlopen("https://your-api.com/endpoint").read()) return [item["text"] for item in data[:count]]
Run it:
python3 claude_tips.py --provider-file my_provider.py
The only requirement is that fetch(count: int) -> list[str] is defined in the file.
All CLI flags
| Flag | Default | Description |
|---|---|---|
--provider |
jokes |
Content provider: jokes, quotes, facts, custom |
--provider-file |
— | Path to a Python file defining fetch(count) -> list[str] |
--count |
10 |
Number of tips to fetch |
--tips |
— | Tip strings for --provider custom |
--keep-default |
false | Mix with Claude's built-in tips instead of replacing |
--watch |
false | Keep running, refresh on --interval |
--interval |
3600 |
Seconds between refreshes in watch mode |
--disable |
— | Turn off all spinner tips |
--reset |
— | Restore Claude's original default tips |
Requirements
- Python 3.9+
- Claude Code CLI
- No third-party packages — uses stdlib only (
urllib,json,pathlib)
License
MIT
























