A small macOS menu-bar app, with an optional desktop widget, that shows at a glance what every GitHub Copilot app session is doing: which ones are running, which need you (a question, a plan to approve or a permission prompt), and which have finished or stopped.
It updates within a fraction of a second of a state change and doesn't depend on polling. It reads the Copilot app's local files read-only, so there are no hooks to install and nothing to configure.
Important
Copilot Pulse is now part of Brief Bar, a sibling app with many more features. Brief Bar is the home for ongoing development and future updates. If you only want the Pulse Bar, enable just Pulse Bar in Brief Bar; it works the same as Copilot Pulse.
Note
Copilot Pulse is an independent project. It isn't affiliated with or endorsed by GitHub.
- Menu bar: the Copilot Pulse icon, followed by a symbol and count for each non-empty group: orange ✋ needs you, blue ⚡ running, green ✓ done, red ⚠ stopped. Click it to see every session by group.
- Desktop widget: a widget-style panel in three sizes, on the desktop behind your windows or floating above them. Drag it by its header, and right-click it for settings.
- One click to a session: click any session to open it in the Copilot app.
- Instant: driven by file-system events, so there's no refresh delay.
- Updates itself: once a day, if you allow it, it checks GitHub for a new version, and installs it when you agree. Every update is signed and verified.
- Private: no data collection. Its only network requests are for updates, from GitHub, and nothing about your sessions leaves your Mac.
| Group | Status | When |
|---|---|---|
| Needs you | Waiting for your answer | The agent asked a question (choices are shown) |
| Plan ready for review | The agent finished a plan and waits for approval | |
| Needs permission | A tool call is waiting for your permission | |
| Running | Working | A turn is in progress (the current step is shown) |
| Starting… | The app started a turn and the agent hasn't logged anything yet | |
| Done | Finished | The turn ended normally; shows the agent's summary if there is one |
| Stopped | Interrupted | You cancelled the turn, or it was cut short (for example, the app quit mid-turn) |
| Error | The session failed (the error is shown) | |
| Stopped responding | The log says "mid-turn", the app no longer marks it running, and it has been silent for 90 s | |
| Idle | Idle | Everything else |
Done and Stopped sessions stay highlighted until you've seen them: you open the session (from Copilot Pulse or in the Copilot app), click Clear on its group, or the Keep Finished Sessions For time passes (1 hour by default). Then they move to Idle.
Requires macOS 15 or later, on Apple silicon or Intel.
- Download Copilot-Pulse.zip from the latest release and unzip it.
- Drag Copilot Pulse to your Applications folder before you open it. Opened from Downloads, macOS runs it from a temporary location, and Launch at Login and updates may not work.
- Open it. The app isn't notarized by Apple, so the first time, macOS won't open it because it can't verify it. Click Done, then go to System Settings › Privacy & Security, scroll down to the message that Copilot Pulse was blocked, click Open Anyway and confirm.
- Turn on Launch at Login in its settings. If macOS asks you to allow it, use Allow in Login Items Settings….
The second time you open it, Copilot Pulse asks whether to check for updates automatically. If you allow it, it checks once a day and offers each new version, which it installs and reopens without the Gatekeeper step. Check for Updates… in its settings checks right away. To remove it, quit it and move it to the Trash.
Version 0.1.0 can't update itself. If you have it, download the latest version as above once, and replace the app.
On a Mac that your organization manages, Open Anyway may be missing. You can build Copilot Pulse from source instead.
You need Swift 6 from Xcode or the Command Line Tools (xcode-select --install). An app you
build yourself opens without the Gatekeeper step.
git clone https://github.com/mnsn/copilot-pulse.git
cd copilot-pulse
make install # builds "Copilot Pulse.app", copies it to ~/Applications and launches itThen turn on Launch at Login as above. To remove it, run make uninstall. A copy you build
updates itself too, to the release builds, unless you turn off
Check for Updates Automatically and build each new version yourself.
Open the gear menu in the menu-bar panel, or right-click the widget.
| Setting | Options |
|---|---|
| Show Desktop Widget | on/off |
| Widget Position | On Desktop (Behind Windows) like a real widget, or Floating (Above Windows) |
| Widget Size | Compact (2 rows), Medium (4), Large (8) |
| Keep Finished Sessions For | 15 minutes, 1 hour, 4 hours, 1 day |
| Show Context Usage | off by default: how full each session's context window is, in orange as Copilot nears compacting the conversation |
| Launch at Login | on/off |
| Check for Updates Automatically | on/off (once a day) |
Copilot Pulse collects no data. It reads the Copilot app's files under ~/.copilot read-only and
never changes any of the app's data. All it stores is its own settings and which sessions you've
cleared, in its preferences on your Mac.
Its only network requests are for updates, to this project's releases on GitHub. If you allow automatic checks, it downloads a small file that describes the latest release once a day, and the new version itself when you install it. GitHub sees your IP address and the versions of Copilot Pulse and of Sparkle, the updater it uses. Nothing about your sessions or your Mac is sent, and it accepts no cookies.
The Copilot app and its agents already write every state change to disk: the app to its SQLite database, and each agent to a log file. Copilot Pulse watches those files with FSEvents and kqueue, and rereads only what changed. How it works has the details.
It could. Copilot Pulse relies on the Copilot app's undocumented local files, which can change. If the database layout changes, it falls back to a simpler view, and if it can't read the database at all, it says so in the panel. Please open an issue if that happens.
Questions, plans, permission prompts and the current step come from the agent's log on this Mac. A session without a local log only shows Running, Interrupted or Idle, based on the Copilot app's own flags.
Notarization needs a paid Apple Developer Program membership, which this free project doesn't have. So macOS asks you to allow the app the first time you open it, as described in Install. Each release is built from its tagged source by GitHub Actions, with an attestation you can verify. You can also build it yourself.
Each update, and the file that announces it, is signed with the project's private key. Copilot Pulse installs an update only if both signatures match the public key built into the app. Only the maintainer holds the private key, and so does the release workflow, which can use it only after the maintainer approves the release. SECURITY.md has the details.
The app binary has debugging options, and logs diagnostics to the system log:
APP="/Applications/Copilot Pulse.app/Contents/MacOS/CopilotPulse" # ~/Applications after make install
"$APP" --dump # every session and its status
"$APP" --watch # status changes as they happen
log show --last 10m --info --predicate 'subsystem == "com.asaf.CopilotPulse"' --style compact
log show --last 1d --predicate 'subsystem == "org.sparkle-project.Sparkle"' --style compact # updatesTheir output includes your session names and prompts, so remove anything private before you share it in an issue.
Bug reports, ideas and pull requests are welcome. CONTRIBUTING.md explains how to build, test and try the app with made-up sessions. Please report security issues privately as described in SECURITY.md.
Copyright © 2026 Asaf Manassen. Copilot Pulse is free software, licensed under the GNU General Public License v3.0 or later.
The app includes Sparkle, which is licensed under the MIT license. Sparkle's copyright and license notices, which also cover the code it bundles, are in Resources/Sparkle-LICENSE.txt and inside the app.
GitHub and GitHub Copilot are trademarks of GitHub, Inc.