How to Get a Phone Call When Claude Code Finishes (or Gets Stuck)
You kicked off a long Claude Code run, switched to something else, and came back forty minutes later to find it had been sitting on a single yes/no question the whole time. The work wasn't hard. It just needed you, and you weren't looking.
This is the tax on running an autonomous coding agent: it can work for a long time without you, right up until the moment it can't — and then it waits, silently, in a terminal you're no longer watching.
This guide covers every practical way to close that gap, from the thirty-second terminal bell to a phone that actually rings, and where each one is the right call.
The two moments you actually want to know about
There are only two events worth interrupting your day for:
- The agent finished. The run is done (or it failed) and there's nothing more to do until you look.
- The agent is blocked. It hit a decision it won't make on its own — an approval, an ambiguous requirement, a destructive command — and it's waiting for an answer before it continues.
The first is a notification. You'll get to it when you get to it. The second is an escalation: every minute you don't answer is a minute of idle agent. Most notification setups only solve the first and quietly ignore the second, which is the one that costs you real time.
Option 1: The terminal bell (30 seconds, only works if you're there)
Claude Code can ring your terminal's audible bell when it needs attention. It's the lowest-effort option and worth turning on regardless.
The catch is in the name: it's a terminal bell. You only hear it if you're at the machine with the window focused (or at least audible). It does nothing for a run you've walked away from — which is exactly when you needed it. Treat it as a nice-to-have for when you're nearby, not as a safety net.
Option 2: Desktop notifications (still tied to the machine)
A step up: fire an OS-level desktop notification when the agent stops. You'll see a banner even if the terminal is in the background.
Better, but still local. If you left the laptop to make coffee, walked to a meeting, or closed the lid, the banner lands on a screen nobody's looking at. Good for context-switching at your desk; useless the moment you leave it.
Option 3: Push to your phone via a hook (ntfy, Pushover, Slack, Telegram)
Now we're off the machine. Claude Code's hooks let you run a command when specific events fire — including when the agent stops or when it's waiting on you. Point that command at a push service and the alert follows you off your desk:
- ntfy.sh — open-source pub-sub push; free, self-hostable, phone app.
- Pushover — one-time paid, reliable push.
- Slack / Telegram — post to a channel or bot via a webhook.
This is a genuine improvement: the alert reaches your pocket. But every one of these is one-way. The notification tells you something happened; it can't take your answer. You still have to stop what you're doing, find the machine, read the context, and type a reply into the terminal before the agent moves. For "it finished," that's fine. For "it's blocked on a decision," you've been notified of a problem you still have to walk back to solve.
Option 4: A phone call that takes your answer — AgentCall
For the blocked case, the useful escalation isn't a louder alert. It's a two-way channel that resolves the decision on the spot.
That's what AgentCall is. It's a pure-MCP voice bridge: when your agent needs a decision, an approval, or a next step, your phone rings. You pick up, the agent tells you what it's stuck on in its own words, you talk it through, and it keeps working — all in one call. The spoken answer you give is the agent's answer; there's no going back to the terminal to type it in.
A few things that matter for this specific problem:
- It's genuinely two-way. The reply you speak becomes the result the agent was blocked on. You unblock a forty-minute stall in a thirty-second call.
- It's not an AI on the phone. There's no chatbot between you and your agent. Your speech is transcribed to text and handed to the agent; the agent's words are spoken back to you. It never puts words in your agent's mouth.
- You set what "when it matters" means. Standing rules — in plain language — decide which events warrant a ring: irreversible actions, explicit approvals, completion, failures. Everything else stays out of your day.
- Destructive commands get a spoken confirmation. Because transcription can mishear, the agent confirms irreversible instructions out loud before acting — so a misheard "drop the table" doesn't become a dropped table.
- Miss it and nothing breaks. If you don't pick up within a few minutes, the agent is simply told the call went unanswered and proceeds with its best judgment. The missed call is in your History, and with voicemail on, the agent can leave a short message.
- Your code never leaves your machine. AgentCall never sees your repo, terminal, or files — only the words your agent chooses to say out loud, and only to your signed-in devices.
Connecting is one command:
claude mcp add --transport http --scope user agentcall https://agentcall.io/api/mcpSign in with Google in the browser, add AgentCall to your phone's home screen so it can ring you, and place a test call from the Quickstart. It's free while in beta, speech minutes included — no card, no trial clock.
Note on the name: AgentCall.io is voice escalation for coding agents. It is not agentcall.co, which is an unrelated programmable SMS/voice API for building telephony into apps. Different product, different job.
Which one should you use?
- At your desk, nearby: terminal bell or desktop notification. Free, instant, good enough when you're in the room.
- Away from the machine, "just tell me when it's done": a hook into ntfy / Pushover / Slack. A one-way ping to your pocket is exactly right for completion and failure alerts.
- Away from the machine, "it's blocked and I need to decide": a phone call. When idle-agent minutes are the cost, an escalation you can answer beats an alert you have to walk back to.
Most people end up running two tiers: a cheap push for "finished," and a ringing phone for "needs a decision now." Set the standing rules once and you stop babysitting the terminal.
Next: Connect AgentCall to Claude Code in one command → · How the Stop hook fits in →