Nudge

A Chrome extension for coding agents

Your agent is waiting on you. Nudge makes sure you notice.

You start a task, tab over to the browser for a second, and come back ten minutes later to find Claude (or Codex, or Grok) sitting on a question. Nudge puts a small pixel mascot on whatever tab you're reading, with the question in a bubble. Ignore it and it gets annoyed.

That's Nudge in the corner. This page just pretended your agent asked you something. Keep reading and see what happens.

npx nudge-mascot setup

Free and open source. Nothing leaves your machine. Needs Node 18 and Chrome 116 or newer.

The longer you ignore it, the harder it tries

Questions and permissions block Claude until you answer, so those escalate. Pick a level to see it live. On this page the clock is sped up; the real timings are shown.

Clock runs only while this tab is visible, same as the extension and the terminal.

"Done" nudges never escalate; they auto-dismiss after 20 seconds. Pick Gentle (levels 1 and 2), Full Chaos (adds the alarm), or Off. From level 1 there's a Snooze button.

What shows up, and when

Nudge follows you: switch tabs or windows and it reappears there with the same countdown. Dismiss it once and it's gone everywhere. Answer in the terminal and it's gone too.

Works with six coding agents

Every agent runs the same tiny hook. The relay picks an adapter for that agent and turns its event into the one shape the bubble understands, so badges, Jump to terminal, the session switcher and the waiting stats work the same everywhere. setup with no flags installs hooks for every agent it finds; pick one below to install just that.

Claude Code Verified in daily use

The original. The only agent you can answer from the bubble or your phone.

npx nudge-mascot setup --agent claude-code
Hooks go in
~/.claude/settings.json, backed up first, plus the approval hooks that let you reply from the bubble
Nudges
questionpermissiondoneidle
Answer from
The bubble (Allow / Deny, pick an option), your phone once paired, or the terminal
# every agent found on this machine
npx nudge-mascot setup
# or name them, comma-separated
npx nudge-mascot setup --agent claude-code,grok,opencode
# a fake nudge from one agent, hook status for all, remove everything
npx nudge-mascot test permission --agent cursor
npx nudge-mascot status
npx nudge-mascot uninstall

Restart running agent sessions after setup; they read hooks at startup. "Built from the docs / source" means the adapter follows that agent's published hook format but hasn't been confirmed against a live install yet. Tell us if yours behaves differently.

How it works

  1. Your agent fires a hookClaude Code, Codex, Gemini CLI, Grok Build and Cursor run one small shell script that forwards the event with curl and names the agent (nudge-hook.sh grok). OpenCode's plugin pipes its events into the same script. It never blocks the agent.
  2. A relay on your machine turns it into one eventA zero-dependency Node server bound to 127.0.0.1 picks that agent's adapter and maps the payload to the shared shape: a question, permission, done or idle nudge. It accepts connections from the extension only and rejects any web page.
  3. The extension draws Nudge on your active tabThe sprite and bubble live in a closed shadow root, so page styles can't touch them and the script never reads the page.

agent hook → curl → relay on 127.0.0.1 → per-agent adapter → WebSocket → extension → Nudge on the tab you're looking at

Private by construction

No serversThe relay runs on localhost. There is no account and no cloud.
No page accessThe content script only draws the mascot. It never reads what's on the tab.
No analyticsMessages are clipped to 1,200 characters before they leave the relay. Nothing is logged anywhere else.

Install in two steps

  1. Add the extension to ChromeClick "Add to Chrome" on the Web Store listing. The extension opens a setup page with one command to copy.
  2. Run that command in your terminalIt adds Nudge's hooks to every agent it finds (Claude Code's ~/.claude/settings.json, Codex, Gemini CLI, Grok Build, Cursor, OpenCode), backing up each config first. It also starts the local relay and keeps it running at login. Then restart any open agent session. To pick agents, add --agent: see Works with six coding agents.
npx nudge-mascot setup

To check it works, run npx nudge-mascot test or press Preview nudge in the extension popup. Nudge pops up on the current tab.

Then just keep working

Coming next

Shipped since launch: answering Claude Code from the bubble or your phone, Jump to terminal, the session switcher, weekly waiting stats, and adapters for Codex, Gemini CLI, Grok Build, Cursor and OpenCode.

Next: mascot and sound packs, answering the other agents from the bubble where their hooks allow it, desktop apps on the same relay, and a Firefox port.