Claude Code Lightbar for Mac OS Claude Code Lightbar for Mac OS, a full-width red bar that displays Claude Code session status across all screens, is now available in version 1.0 exclusively for macOS. The bar shows a solid red when a session is busy, pulses when user input is needed, and disappears when a turn finishes, driven by Claude Code hooks via a local Swift app and LaunchAgent. Version 1.0 · macOS only uses AppKit + launchd ; there is no Windows or Linux build . A full-width red bar along one edge of every screen that tells you, from across the room, what Claude Code is doing. It sits on the top edge by default position, thickness, and color are all changeable — see Configuration configuration . Solid red bar — at least one session is busy Claude working . Pulsing red bar — a session needs a response from you now a permission prompt, or Claude blocked waiting for input . No bar — a turn simply finished, or nothing running. Busy wins: if any session is still working the bar is solid; it pulses only when one has an active prompt for you a permission request or an explicit question . A turn that just finishes clears the bar. The bar is click-through it never intercepts your mouse and floats above everything, including fullscreen apps, on every Space and every monitor. Note: pulsing is driven by Claude Code's Notification hook, which fires for a real prompt a permission request, etc. . The ~60sidlenotification is deliberately ignored hook.sh filters the "waiting for your input" message , so the bar never blinks just because a finished session is sitting there. One consequence: Claude Code has no distinct event for "ended a turn with a question," so a plain conversational question at the end of a turn reads as done no bar — only actual prompts pulse. Structured AskUserQuestion promptsdopulse, via a PreToolUse / PostToolUse hook on that tool. Left: solid red along the bottom edge = Claude is working; it pulses when Claude needs a response from you. Right: the menu-bar menu for live configuration. macOS uses AppKit + launchd . Xcode Command Line Tools — provides swiftc to build. Install with: xcode-select --install Claude Code CLI — this is driven by Claude Code https://docs.anthropic.com/en/docs/claude-code hooks. It works with any locally-running Claude Code terminal or IDE extension . It does not work with cloud sessions claude.ai/code — those run remotely and can't reach your local machine. No other dependencies: no Homebrew, no jq , no runtime. Just the system Swift compiler and plutil built into macOS . git clone https://github.com/gregsramblings/claude-status-bar.git cd claude-status-bar ./install.sh install.sh builds the app, installs a run-at-login LaunchAgent paths derived from wherever you cloned — nothing hardcoded , starts it, then prints a hooks block . Copy that block into ~/.claude/settings.json merge it into the top-level JSON object; if you already have a "hooks" key, add the four events to it . The block looks like this, with real paths filled in: "hooks": { "UserPromptSubmit": { "hooks": { "type": "command", "command": "bash /path/to/claude-status-bar/hook.sh busy" } } , "Stop": { "hooks": { "type": "command", "command": "bash /path/to/claude-status-bar/hook.sh waiting" } } , "Notification": { "hooks": { "type": "command", "command": "bash /path/to/claude-status-bar/hook.sh needs input" } } , "SessionEnd": { "hooks": { "type": "command", "command": "bash /path/to/claude-status-bar/hook.sh end" } } } Then start a new Claude Code session and give it something to do — the red bar appears while it works. Hooks load at session start, so already-open sessions won't drive the bar until restarted. echo '{"session id":"test"}' | ./hook.sh busy bar should appear echo '{"session id":"test"}' | ./hook.sh end bar should disappear ./uninstall.sh Stops and removes the LaunchAgent and the state directory. It intentionally does not edit settings.json — remove the four ccbar hooks entries yourself, then delete the repo folder. - Claude Code hooks fire on state change and run hook.sh , which writes one small JSON file per session into ~/.claude/ccbar/state/