IdlePal for Cursor.
IdlePal for Cursor adds two hooks to ~/.cursor/hooks.json with a one-line install script. Pip wakes up in your notch when you send Cursor's agent a prompt and the panel tucks away when the agent stops. Cursor's hooks give IdlePal only those two signals, so there is no needs-you alert for Cursor.
Signals from Cursor: started and finished. Nothing else leaves the hook.
Set up IdlePal for Cursor
Install IdlePal from the Mac App Store.
Coming this winter for macOS 14 or later. Leave your email at the bottom of this page.
Run in Terminal.
curl -fsSL https://raw.githubusercontent.com/initiums/idlepal-integrations/main/cursor/install.sh | shAt launchThat's it.
It adds two hooks to ~/.cursor/hooks.json and keeps your other hooks. Quit Cursor with ⌘Q and open it again so it loads them.
What Cursor tells IdlePal, and what it doesn't
Each Cursor event runs open -g "idlepal://…" on your Mac with one signal and a session ID. Nothing goes over the network, and the hook never reads your prompts, code or output.
| Cursor event | IdlePal hears | What happens |
|---|---|---|
beforeSubmitPrompt | started | You sent the agent a prompt. IdlePal's hook answers {"continue": true}, so your prompt always goes through. |
stop | finished | The agent's run ended. If you never clicked the panel, it closes. If you did, a green banner says Cursor finished. |
Cursor has no needs-you signal in IdlePal. When the agent stops to ask you to approve a command, Pip stays awake and the panel stays where it is. Keep an eye on Cursor for approvals.
Where the install script writes
~/.cursor/hooks.json- Two entries are added, one for beforeSubmitPrompt and one for stop. Every other hook in the file is kept. Running the installer again replaces the IdlePal entries instead of adding duplicates.
~/.cursor/hooks.json.bak-idlepal- A copy of your file from before the change, written on every install and uninstall.
~/.cursor/hooks/idlepal-signal.sh- The script the hooks run. It reads only the conversation_id from Cursor's hook input, runs open -g "idlepal://…" and always exits 0.
If ~/.cursor/hooks.json isn't valid JSON, the installer stops and leaves it unchanged. Fix the file, then run the command again.
Several Cursor windows and chats
The hook passes Cursor's conversation_id, so each agent chat counts as its own session, whether it's a second chat in one window or another Cursor window. The panel stays down until the last one stops. The hooks live in your home folder, so they apply to every project you open in Cursor.
Remove IdlePal from Cursor
curl -fsSL https://raw.githubusercontent.com/initiums/idlepal-integrations/main/cursor/install.sh | sh -s uninstallAt launchIdlePal keeps working without it: press ⌥⌘G or click the menu bar icon and Pip is there.
Troubleshooting IdlePal in Cursor
- Open IdlePal's Settings → AI agents. If Cursor says "Not connected yet", no hook has fired: quit Cursor with ⌘Q, open it again and send the agent a prompt.
- Open ~/.cursor/hooks.json and check for two lines that mention idlepal-signal.sh. If they're missing, run the install command again.
- Check "Open when an agent starts working" is on in IdlePal's settings.
- Pip wakes for prompts you send to Cursor's agent chat.
- Cursor connected to a remote machine over SSH runs the hook there, where it can't reach the app on your Mac.
Questions about IdlePal for Cursor
Does IdlePal tell me when Cursor needs my approval?
No. IdlePal listens to Cursor's beforeSubmitPrompt and stop hooks only, so it hears started and finished. When Cursor's agent waits for you to approve a command, you'll see that in Cursor, not in the notch.
Will the IdlePal installer overwrite my Cursor hooks.json?
No. It adds two entries and keeps every other hook. Before each change it saves a copy as ~/.cursor/hooks.json.bak-idlepal, and if the file isn't valid JSON it leaves it alone.
Does IdlePal for Cursor work with several Cursor windows?
Yes. Each agent chat has its own conversation_id, so IdlePal tracks them separately and keeps the panel down until the last Cursor agent stops.
Does IdlePal read my code in Cursor?
No. The hook reads Cursor's input only to find the conversation_id, then runs open -g on your Mac. Your prompts, files and the agent's answers never reach IdlePal.
Get Pip first.
One email when IdlePal is on the Mac App Store. Nothing else.
Buttondown opens in a new tab to confirm. Unsubscribe any time.
macOS 14 or later. Best on a MacBook with a notch.