Skip to content
← All guides
Guide

Claude Code Notifications: Every Way to Get Alerted (Bell, Hooks, Slack, Push, Phone)

September 21, 2026

When you run Claude Code for anything longer than a coffee break, one question decides how much of your day it eats: how do you find out the moment it needs you? There's a whole ladder of options, from a built-in beep to a ringing phone, and the right rung depends on one thing — whether you just want to know, or whether you need to answer.

This page compares every practical method by category — notification mechanisms, not brands — and says plainly where each one is the best choice. No invented benchmarks; just how they actually behave.

Scope note up front: this is about getting notified by a coding agent. It is not about agentcall.co or the npm agentcall package, which are an unrelated programmable SMS/voice API for building telephony into your own app — a different product for a different job. Everything below is about reaching you when Claude Code (or Codex) needs a human.

The one question that sorts every option

Before the table: the decision that matters is one-way vs. two-way.

  • A one-way alert tells you something happened. You still have to go back to the machine and type the answer before the agent moves.
  • A two-way channel takes your answer on the spot, so the agent unblocks without you returning to the terminal.

For "the run finished," one-way is perfectly fine — you'll look when you look. For "the agent is blocked on a decision," every minute you spend getting back to the keyboard is a minute of idle agent. That's the case where two-way earns its keep.

The methods, compared

Terminal bell

  • Reaches you where: only at the machine, window focused/audible.
  • One-way or two-way: one-way.
  • Setup: a setting toggle.
  • Best for: you're at your desk and just want a nudge when the terminal is in the background.
  • Falls down when: you've walked away — which is exactly when you needed it.

Desktop / OS notification (via a hook)

  • Reaches you where: the machine's screen, even in the background.
  • One-way or two-way: one-way.
  • Setup: a Stop/Notification hook running osascript / notify-send.
  • Best for: context-switching at your desk between tasks.
  • Falls down when: you've left the room; the banner lands where nobody's looking.

Push to phone — ntfy.sh

  • Reaches you where: your phone, anywhere.
  • One-way or two-way: one-way.
  • Setup: a hook that curls your ntfy topic; open-source, free, self-hostable.
  • Best for: "just tell me when it's done" while you're away from the machine, on a budget.
  • Falls down when: the agent is blocked — you're notified of a decision you still have to walk back to make.

Push to phone — Pushover

  • Reaches you where: your phone, anywhere.
  • One-way or two-way: one-way.
  • Setup: a hook that curls the Pushover API; one-time paid.
  • Best for: the same "tell me when it's done," with a polished app and reliable delivery.
  • Falls down when: same as ntfy — it can alert, not answer.

Slack / Telegram message (via webhook)

  • Reaches you where: wherever you have Slack/Telegram — often a shared channel.
  • One-way or two-way: effectively one-way for unblocking the agent (you read it, then go to the terminal).
  • Setup: a hook posting to an incoming webhook or bot.
  • Best for: team visibility, or you already live in Slack all day.
  • Falls down when: a chat ping is easy to scroll past. A message in a busy channel is not "a decision made now" — and it still doesn't carry your reply back into the run.

Phone call — AgentCall

  • Reaches you where: your phone rings, anywhere.
  • One-way or two-way: two-way — you speak the answer and it becomes the agent's answer.
  • Setup: one claude mcp add command; sign in with Google; add to home screen.
  • Best for: the blocked case — a decision, an approval, or a destructive command that shouldn't wait.
  • Falls down when: honestly, for pure "it finished, no action needed" a silent push is lighter-weight; a call is the tool for decisions, not FYIs.

Why a ringing phone is a different category

The push services above are all good at what they do — they get a one-way alert off your machine and into your pocket. AgentCall is solving the other half: the moments where the agent needs an answer, not just your awareness.

It's a pure-MCP voice bridge. When your agent hits a decision it won't make alone, your phone rings; it explains the situation in its own words; you talk it through; it keeps working. A short voice exchange also resolves more than typed back-and-forth — you can ask a follow-up and interrupt mid-answer (barge-in is on by default). What makes it fit this job:

  • The reply is the result. There's no returning to the terminal — the words you speak are handed straight to the agent as the answer it was waiting on.
  • No AI in the middle. AgentCall never generates words your agent didn't say. Your speech becomes text for the agent; the agent's text becomes speech for you.
  • You define "when it matters." Standing rules in plain language decide what rings you — irreversible actions, approvals, completion, failures — so it isn't noise.
  • Mishearing can't cause damage. Because transcription is treated as untrusted, the agent confirms destructive instructions out loud before acting.
  • Miss it and nothing breaks. No answer within a few minutes and the agent is told the call went unanswered and proceeds on its best judgment; the missed call is in History, with optional voicemail.
  • Your code stays put. AgentCall never sees your repo, terminal, or files — only the words your agent chooses to speak, only to your signed-in devices.
bash
claude mcp add --transport http --scope user agentcall https://agentcall.io/api/mcp

Free while in beta, speech minutes included — no card, no trial clock. Claude Code is the tested client; Codex CLI works in beta.

The setup most people land on

You don't pick one rung — you pick two:

  1. A cheap one-way push for "finished." Terminal bell when you're there; ntfy / Pushover / Slack via a hook when you're not. Perfect for completion and failure alerts.
  2. A phone call for "needs a decision now." Because the cost of the blocked case is idle-agent time, and the only thing that fixes it is a channel that takes your answer.

Set the standing rules once, wire the hook once, and Claude Code stops being something you have to sit and watch.

Next: Get notified when Claude Code finishes or gets stuck → · Wire it to the Stop hook → · Connect in one command →