Setup guide

Install, add the widget, pick a profile. A couple of minutes, start to finish.

Before you start

You need macOS 14 or later and a working Claude Code install that you have signed into at least once. Claude Usage reads only what Claude Code already stores on your Mac — it has no account of its own and nothing to sign up for.

Install

With Homebrew:

brew tap saeedkolivand/tap
brew trust --cask saeedkolivand/tap/claude-usage
brew install --cask claude-usage

The trust step is not optional. Since Homebrew 6.0, third-party taps must be trusted explicitly before Homebrew will evaluate their code — a response to a real incident where a compromised tap was used to ship malware. Trusting one cask by name is the narrowest scope; brew trust saeedkolivand/tap would cover everything in the tap, now and in future.

Prefer a download? Grab the .dmg from Releases and drag the app to Applications. Builds are ad-hoc signed rather than notarized, so macOS quarantines them and will call the app damaged on first launch. The cask clears that for you; after a manual install, run:

xattr -dr com.apple.quarantine "/Applications/Claude Usage.app"

First launch

Claude Usage has no Dock icon — it lives in the menu bar. On first run two things happen:

Add the widget

Right-click the desktop, choose Edit Widgets, find Claude Usage, and drag out the size you want. The app must have run at least once for the widget to appear.

A freshly placed widget shows a placeholder for up to a minute. That is expected: macOS creates the widget's sandbox container the first time it runs, and the app fills it on the next poll.

Not showing up at all? Run killall chronod to make macOS rescan its widget extensions.

Configure a widget

Right-click any placed widget and choose Edit Widget. Each one is configured separately, so you can place several with different scopes.

Profile

Which Claude account this widget shows. Most people have one and can ignore this.

Project

Leave it empty for the whole account. Pick a project and the widget narrows to that working directory: today's tokens and cost, its share of the week, and a 7-day chart.

A project-scoped widget has no limit gauges, and that is deliberate rather than missing. The 5-hour and weekly percentages are reported per account, so there is no such thing as a single project's limit.

Settings

Open them from the menu bar popover.

Profile

Which account the menu bar itself shows. A profile is a Claude Code config folder — one logged-in account. Relocating that folder with CLAUDE_CONFIG_DIR is the only way Claude Code supports more than one, so that is what the list looks for: ~/.claude, anything beside it whose name starts with .claude, and folders you add with Add Folder…. A folder counts when it contains a projects directory.

One caveat on macOS. Claude Code stores its token in the login Keychain under a single name, with no per-account variant, so only your default profile can read a token from there. A second profile needs its own .credentials.json inside its config folder. Without one it reports no token rather than borrowing the default account's token and showing you the wrong percentages. Tokens and cost still work either way.

Menu bar shows

Whether the number in the menu bar is the 5-hour window or the weekly one. Past your red threshold it gains a ! prefix — menu bar items are drawn as template images, so colour would be stripped and a symbol is the only signal that survives.

Amber and Red thresholds

Where the gauges change colour, defaulting to 50% and 80%. They also travel to the widgets, so everything agrees.

Open at login

Registers the app as a login item. This needs a properly signed build; on an ad-hoc one the toggle reports the error rather than silently flipping back.

Updates

Shows the running version and whether a newer release exists, checking GitHub four times a day. Check Now forces one. Nothing is ever downloaded or installed for you — update with brew upgrade --cask claude-usage, or the link to the release notes.

User-Agent (Advanced)

Sent to the usage endpoint. It must begin with claude-code/ or the API serves a heavily rate-limited bucket. Only worth touching if the version string ever goes stale.

If something looks wrong

"Sign in with Claude Code"

No usable token. Run claude once and sign in. If you use a non-default profile, check it has its own .credentials.json — see the profile caveat above.

"No connection", or numbers marked outdated

The usage endpoint didn't answer. The app keeps showing the last good figures and labels them outdated rather than blanking the display. It retries on its own; Refresh forces one immediately.

"No Claude Code data found"

No config folder with a projects directory was found. If yours lives somewhere unusual, add it with Add Folder… in Settings.

Tokens and cost look low

Cost is computed from token counts in your local transcripts, so it only covers what Claude Code wrote to disk. On Pro and Max plans it is notional equivalent API spend, not money you were charged.

Still stuck?

Open an issue on GitHub.