When You're
The Blocker

A push notification hook for Amplifier, built by Amplifier

Amplifier · Hooks · Notifications

Amplifier runs for a long time alone — but you keep watching for the moment it needs you

A long autonomous session is only truly "walk away" if something tells you when the agent is actually blocked on a human. Until then, you babysit the terminal.

amplifier-hooks-notifications is that missing signal — and it's tiny.

The whole hook is one 180-line Python file — and Amplifier co-authored every commit

Shipped and public as robotdad/amplifier-hooks-notifications, a "Push notification hook for Amplifier events via ntfy.sh." The repo tracks just three files.

A tool small enough to build its own notifier. So why isn't it simpler still?

180
lines in __init__.py — the entire module
3
tracked files: README, pyproject, __init__.py
5
commits, all by Marc Goodner + the Amplifier bot
v0.1.0
requires Python ≥3.11, amplifier-core ≥0.1.0

Naive alerting is worthless — a ping on every tool call is just noise you learn to ignore

The hard problem was never sending notifications. It's sending the RIGHT one, so signal survives contact with a long, busy session.

The design's whole job: keep the alert meaningful. Here's how it does that.

Notify on everything
ping · ping · ping · ping · ping…

You mute it by lunch.

Notify only when it counts
— — "waiting for your input" —

You look up, because it earned it.

By default it stays quiet, firing on only two lifecycle events

The default enabled_events is exactly tool:error and session:end — not every sub-step. Restraint by default is what makes each alert mean something.

Quiet by design — and just as importantly, safe by design.

# default constructor config enabled_events = ["tool:error", "session:end"] notify_on_ask_user = True # these are real amplifier-core events: # SESSION_START / SESSION_END # TOOL_POST / PROMPT_SUBMIT

Fire-and-forget at low priority 90 — it can never become the thing that costs you a session

It launches the notify script as an async subprocess and doesn't wait. It runs at priority 90 (low), after other hooks, and swallows its own errors.

Never blocks, never interferes, never breaks a run. Now — what does it actually say?

The team dropped "N tool calls executed" for "Re: {your prompt}"

Commit 2e4dd0d replaced a raw tool-count message with a prompt preview; follow-up 71e08fb caches the prompt from session:start so session:end can name it.

One glance tells you which session finished. Meaning beats volume — and that sets up the climax.

Before — a raw metric
Session ended. {tool_count} tool calls executed.
After — a meaningful signal
Session Complete — Re: {preview}

When Amplifier asks a question, a high-priority push lands on whatever device you're at

On tool:post, if the tool is AskUserQuestion, it sends a high-priority alert. Delivered via a portable 3-arg notify script.

The one moment a human is the blocker becomes unmissable — "walk away" finally means walk away.

Priority: High
User Input Needed
Amplifier is waiting for your input
Delivered fire-and-forget via a 3-arg notify <message> <title> <priority> script — ntfy.sh to your phone, or native macOS, Linux, Windows.
The Takeaway

One small hook turns "run it and hover" into "run it and leave"

You get pulled back only when it's actually your turn. The generalized pattern: targeted, low-noise notifications are what make async agent work real.

Status: Shipped & public — robotdad/amplifier-hooks-notifications
Sources

Research Methodology

Data as of: 2026-01-06 (last commit 71e08fb). Feature status: Shipped and public.

Source repo: robotdad/amplifier-hooks-notifications (cloned at /tmp/ahn); event system cross-checked in microsoft/amplifier-core.

Commands run:

Primary contributors: Marc Goodner (all 5 commits), co-authored by the Amplifier bot on every commit.

Gaps: Real-world adoption / user counts are not verifiable from the repo (none stated). ntfy.sh delivery latency ("across the room" timing) is inherent to ntfy.sh, not benchmarked here. The module has no dedup/one-notification-per-run counter; it can fire on multiple configured events.

More Amplifier Stories