A Chrome extension for coding agents
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.
Free and open source. Nothing leaves your machine. Needs Node 18 and Chrome 116 or newer.
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.
"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.
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.
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.
The original. The only agent you can answer from the bubble or your phone.
npx nudge-mascot setup --agent claude-code
~/.claude/settings.json, backed up first, plus the approval hooks that let you reply from the bubbleDetected from ~/.codex or a codex binary.
npx nudge-mascot setup --agent codex
~/.codex/hooks.json: PermissionRequest, PostToolUse, UserPromptSubmit, StopCodex only runs hooks you trust: after setup, type /hooks in Codex and trust the Nudge entries.
Detected from ~/.gemini/settings.json or a gemini binary (Antigravity creates ~/.gemini too, so the folder alone isn't enough).
npx nudge-mascot setup --agent gemini
~/.gemini/settings.json: Notification, AfterAgent, BeforeAgent, AfterToolSome Gemini CLI versions (0.45 to 0.55.1) never fire AfterAgent, so "done" may not arrive there.
Detected from ~/.grok/config.toml or a grok binary.
npx nudge-mascot setup --agent grok
~/.grok/hooks/nudge.json (user hook files are always trusted; uninstall deletes it)Grok also runs the hooks in ~/.claude/settings.json. Nudge spots those copies and drops them, so a Grok turn never shows up as "Claude is done".
The editor's agent and the cursor-agent CLI. Detected from ~/.cursor or a cursor-agent / cursor binary.
npx nudge-mascot setup --agent cursor
~/.cursor/hooks.json (flat version: 1 entries): stop, afterAgentResponse, beforeSubmitPromptCursor has no hook for its approval prompts, so Nudge doesn't fake one. "Done" shows the agent's last reply. Like Grok, Cursor also runs Claude Code's hooks, and Nudge drops those copies.
OpenCode 2 has no shell hooks, only plugins, so Nudge installs a small one. Detected from ~/.config/opencode or an opencode binary.
npx nudge-mascot setup --agent opencode
~/.config/opencode/plugins/nudge.js, that pipes OpenCode's events into the same hookNeeds OpenCode 2 or later. Restart OpenCode after setup so it loads the plugin.
# 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.
nudge-hook.sh grok). OpenCode's plugin pipes its events into the same script. It never blocks the agent.agent hook → curl → relay on 127.0.0.1 → per-agent adapter → WebSocket → extension → Nudge on the tab you're looking at
~/.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.
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.