By m1ckc3s
Monitor Claude Code session activity directly from the menu bar, with an animated indicator showing when the CLI is running and an elapsed timer for active sessions, while automatically logging session start/end times and tool call events for analytics.
A tiny macOS menu bar app that shows Claude Code's live status: an animated Claude icon while it's thinking or running a tool, a yellow dot when it's awaiting your permission, and the elapsed time of the current turn. Lightweight, no window, no dock icon, no usage dashboards.
Built so you can tab away during a long "thinking" stretch and still see, at a glance, whether Claude is working, waiting on you, or done.
Signed and notarized. Open it, drag the app to Applications, launch once.
1m 1s timer.Editing, Reading, Running command, Using tool, …).Everything is controlled from the menu:
1m 1s clock.| Surface | Tracked? |
|---|---|
| Claude Code CLI (terminal) | ✅ |
| Claude Code Desktop — Code tab | ✅ |
| Cursor (Claude Code extension) | ✅ |
| Claude Desktop — Chat tab | ❌ |
| Cowork | ❌ |
🟡 The "Awaiting permission" dot only fires in the CLI. The Desktop app handles permission prompts in-window and doesn't emit the notification hook, so the dot won't show there.
ClaudeStatusBar.dmg from Releases.Download the latest DMG and drag it into Applications (choose Replace). Launch it once, it refreshes its hooks on a version change, then restart Claude Code to pick them up.
Installs the hooks (status + open/close lifecycle) automatically from inside Claude Code:
/plugin marketplace add m1ckc3s/claude-status-bar
/plugin install claude-status-bar@claude-status-bar
The plugin installs the hooks but not the app itself, so drag Claude Status Bar into Applications once (from the DMG). The plugin launches it automatically on session start.
The app is stateless. Claude Code hooks write the current status to ~/.claude/statusbar/state.json; the app polls that file every 0.4s and renders the icon and label. SessionStart launches it; it self-quits once the Claude desktop app is closed and no Claude Code session is active (each active session is a file under ~/.claude/statusbar/sessions.d/).
The installer merges its hooks into ~/.claude/settings.json (backing it up first), and the app's only network call is a once-a-day GitHub release check (details).
node "/Applications/ClaudeStatusBar.app/Contents/Resources/uninstall.js" # removes only our hooks
Then drag the app to the Trash.
This is an unofficial, open-source side project. It is not affiliated with, endorsed by, or sponsored by Anthropic. "Claude" and the Claude spark logo are trademarks of Anthropic, used here nominatively. This project is MIT licensed, but that covers the source code only and conveys no rights to Anthropic's trademarks or brand.
If I'm violating or impeding your trademark, DM me on X (@mickces) and I'll rename this repo. This is a free side project; I'm not monetizing it.
MIT
Matches all tools
Hooks run on every tool call, not just specific ones
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub m1ckc3s/claude-status-bar --plugin claude-status-barLightweight Claude Code status-line monitor with switchable styles, themes, and slash commands. v3.14.1 lowers the projection red line to 85% (yellow now 70–84) so a 7d window heading for →99% reads red instead of merely warm. v3.14.0 colours the 5h/7d bars by where usage is HEADED, not where it is now: once an end-of-window projection exists, the bar fill, label, and reset clock take their severity from the projected % against the cap (green <80, yellow 80–99, red ≥100) while the fill length still shows current usage — so a 7d window at 24% but on track for →96% reads yellow instead of a falsely-healthy green (all three styles). It also fixes the →NN% projection reading far too low for the first ~15 min after a reset (it was seeded from the used=0 first tick and lagged); it now holds `→--` until MIN_ELAPSED, then seeds from the first trustworthy reading. v3.13.3–v3.13.5 fix the 5h/7d bars sticking at a stale high % after Anthropic re-baselines usage mid-window (e.g. weekly limit raised): the cross-session merge now accepts an official downward revision once the old reading goes unconfirmed for 120s, idle windows replaying hours-old rate_limits blobs (expired 5h reset) can no longer overwrite or re-confirm the shared reading, and the →NN% projection drops its old-denominator samples and relearns after a re-baseline instead of freezing for the rest of the window. v3.13.0 adds a ⚙ session-mode line — effort (low/medium/high/xhigh/max/ultracode/auto) · thinking · fast · output-style — with a distinct static colour gradient per effort tier. v3.12.0 adds an always-on end-of-window projection (→NN%, learned from your local work rhythm) + an at-risk `⚠eta` forecast after each reset timer, session lines on by default, and a faint on-bar version that shows a `↑` hint when a newer release is on PyPI. v3.10.0 adds an opt-in live-activity line (in-progress todo, active tool, completed-tool rollup), git ahead/behind + session duration/lines on the project line, running-subagent lines, an opt-in `bar_shimmer` starfield on the battery bars, and a self-hosted plugin marketplace — plus a reliability fix so auto-update actually runs in daemon mode (detached, non-blocking) and the cache countdown is now per-session-correct. v3.9.0 makes the `cache` countdown auto-detect the real prompt-cache TTL (5m vs 1h) from the transcript, fixing a ~55-minute early `cache COLD` for Claude subscription users (Claude Code requests the 1-hour TTL automatically). v3.7.0 defends against status-line hijacking: a new `cs --setup --project [PATH]` writes a project-level override so another tool stealing the global `~/.claude/settings.json` slot can't kick `cs` out of this project; when displacement is detected, the bar also surfaces a one-line warning. v3.6.0 makes daemon (fast) mode the default for `cs --setup` — under 1% CPU continuously instead of ~3% inline at refreshInterval=1; pass `--inline` to opt back. Requires the `cs` CLI from PyPI (`pip install claude-statusbar` or `uv tool install claude-statusbar`).
A Claude Code statusline that shows reasoning effort (⚡) and thinking (💡). 5 presets (xsmall-xlarge), Catppuccin theme, no Node/Nerd Font, native PowerShell on Windows.
Real-time session dashboard for Claude Code — cost tracking, analytics, and smart alerts
Real-time statusline HUD for Claude Code - context health, tool activity, agent tracking, and todo progress
Claude Code statusline showing info at a glance: tokens, context, model, subagents, burn rate, skills, plugins, OpenSpec specs, task lists, and more
A comprehensive statusline dashboard for Claude Code — session summary, quota bars, agent tracker, MCP health, message history, and more. All at a glance, no slash commands needed.