My agent used to finish long tasks at 2 AM and just... sit there. I'd either babysit the terminal or come back hours later to find it had been waiting for one yes/no decision the whole time.
The fix took one HTTP request: ntfy.sh — free, no signup. My phone gets the app and subscribes to a private topic; the agent posts to that topic when something actually needs me.
The technical part was the easy 20%. Two things turned out to matter more:
1. Calling discipline
An agent with a notification channel and no rules becomes a spam machine. Ours follows three rules: ping when the task is wrapped up and the owner is away; ping when hard-blocked on something only the owner can decide; stay quiet for everything else — no progress updates, no repeated nagging about the same thing.
2. The pitfalls (seven of them, all hit in production)
If your notifications contain CJK text, passing it straight through the command line turns it into question marks. Nastier ones: hook timeouts killing the request mid-flight (looks exactly like an encoding bug, isn't), notification length limits truncating tables into garbage, and "turn ended" firing when the task wasn't actually done — so the agent sends a victory report while the job is still half-baked.
All seven are written up with fixes in the skill file, so your agent can read it and skip the bruises: github.com/LucioLiu/knock-knock
It's a plain markdown skill — works with Claude Code or any LLM tool that reads files. Uninstall = delete one folder.
Disclosure: my own repo. Curious how others handle the "when should the agent interrupt me" problem — that part still feels underexplored.

Top comments (0)