Quick answer
Install Agentfy from the App Store, sign in, and grab your token. The recommended way to connect is the open-source Agentfy plugin — install it in Claude Code, paste your token into its config dialog, and it wires up the hooks for you. (The copy/paste setup prompt still works on older Claude Code.) From then on your iPhone gets a push the moment Claude needs permission, finishes, or errors out — no terminal-watching required.
You start a Claude Code session. You ask it to refactor your auth module. It's going to take a few minutes, so you grab a coffee. When you get back, Claude's been sitting on a permission prompt for eight minutes — eight minutes of dead time because you weren't staring at your terminal.
That's the core friction of working with coding agents. You want Claude doing the heavy lifting, but you have to be available the moment it needs you. Step away and you risk wasting time; stay glued to the terminal and you've lost the whole point of delegating. (If the idea of letting an agent drive is new to you, here's what vibe coding actually means.)
Here's how to fix it: push notifications for Claude Code, straight to your iPhone.
What you need
- An iPhone running iOS 18 or later
- Claude Code installed on your Mac or dev machine
- Agentfy from the App Store (free)
That's the whole shopping list. There's no menu-bar app to install on your Mac, no proxy, and no account to wire into Claude beyond installing the plugin (or pasting a single prompt on older Claude Code). The connection runs over Claude Code's built-in hooks, which we'll get to in a second.
Step 1: Download Agentfy
Grab Agentfy from the App Store. Open it and sign in — it takes a few seconds. Once you're in, you'll see a unique webhook URL in your settings. That URL is what connects Claude Code to your phone: your terminal posts session events to it, and Agentfy turns them into notifications.
Keep that URL private. Anyone with it could push notifications to your device, so treat it like a token — which is exactly what it is. If it ever leaks, you can regenerate it from the app's settings (more on that in troubleshooting).
Step 2: Connect Claude Code
Agentfy runs off Claude Code hooks — a built-in feature that lets Claude Code fire an event whenever something happens in a session, like finishing a task or pausing for permission. Hooks are just shell commands Claude runs at defined lifecycle points, so connecting Agentfy means pointing a few of those hooks at your webhook URL. You have a few ways to do it, easiest first.
Option A: Install the plugin (recommended)
The Agentfy plugin is the fastest, most reliable path — it's open source, and it registers the hooks for you. From your terminal:
claude plugin marketplace add ibrillantes/claude-code-plugin
claude plugin install agentfy@agentfy --config api_token=<YOUR_TOKEN>
Then run /reload-plugins inside Claude Code. (You can also do the whole thing inside Claude Code with /plugin marketplace add ibrillantes/claude-code-plugin followed by /plugin install agentfy@agentfy.) The plugin collects your token — via the config dialog when you install from inside Claude Code, or the --config flag above — and stores it in your OS keychain, never in a plaintext file. Because it's open source, you can read exactly what it sends before you install.
Option B: Paste a prompt
On an older Claude Code without plugin support, the app also gives you a ready-made prompt. Copy it, paste it into any Claude Code session, and Claude will configure your ~/.claude/settings.json automatically. One prompt, done — the whole thing takes under a minute, and Claude even tells you when the hooks are wired up.
Option C: Edit settings.json manually
If you prefer hands-on setup, add the webhook to your hooks config directly:
// ~/.claude/settings.json
{
"hooks": {
"Stop": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "curl -s -X POST YOUR_AGENTFY_URL..."
}]
}]
}
}
Replace YOUR_AGENTFY_URL with the webhook URL from your Agentfy app settings. The app shows the full configuration — including hooks for Stop, SessionStart, Notification, and PermissionRequest. Each event maps to something you'll see on your phone: Stop means a task finished, Notification and PermissionRequest mean Claude is waiting on you, and SessionStart lets the app track a new agent the moment it spins up.
Hooks live in ~/.claude/settings.json (global) or a project's .claude/settings.json (per-repo). The global file applies to every session on your machine, so configuring it once covers all your projects. Want the full breakdown of which events fire when? See the complete guide to Claude Code hooks.
Step 3: That's it
Your Claude Code agents now report to your phone. Here's what you'll see:
- Push notifications — the moment Claude needs permission, finishes a task, or hits an error
- Live Activities on your lock screen — see all your agent statuses without unlocking your phone
- Dynamic Island — at-a-glance status for the agent that needs you most
No more alt-tabbing to a terminal just to check whether Claude is still cooking. You'll find out from your pocket.
What notifications do you get?
Agentfy sends you a push whenever an agent enters the "Your Move" state — meaning Claude stopped and is waiting on you. That includes:
- Permission requests — "Allow: npm test?", "Allow: rm -rf dist/"
- Task completions — Claude finished what you asked
- Errors — something went wrong and Claude needs guidance
- Custom notifications — when Claude explicitly notifies you about something
You don't get spammed with every tool call or file read. Only the moments that actually need your attention. That signal-to-noise ratio is the whole point: a notification from Agentfy always means "go look," never "FYI."
Stop babysitting your terminal
Agentfy pushes Claude Code status to your iPhone — Live Activities, Dynamic Island, and instant alerts.
Tracking multiple agents
Running Claude Code in three terminals across two projects? Agentfy tracks them all. The dashboard shows which agents are cooking, which need you, and which are new — across unlimited terminals. Live Activities on your lock screen give you the consolidated view: "2 cooking · 1 needs you."
This is where running notifications to your phone really pays off. One agent is easy to babysit; four is not. If you regularly fan work out across sessions, the parallel agents guide covers how to keep them isolated so they don't clobber each other — and how a single monitor keeps the whole fleet glanceable.
Live Activities and the Dynamic Island
Push notifications are great for the moment something happens, but they disappear once you swipe them away. Live Activities are the persistent version: a live status pill on your lock screen and, on iPhone 14 Pro and later, in the Dynamic Island. Instead of unlocking to check, you glance down and see the rollup of every session in real time.
Live Activities are a Pro feature, and they're the thing most people upgrade for once they're running agents regularly. The full breakdown of how the lock-screen and Dynamic Island views behave is in Claude Code Live Activities and Dynamic Island.
Privacy and what gets sent
Agentfy receives session state data from Claude Code hooks. That means:
- Session ID and project name
- Current state (working, needs input, done)
- Tool name and permission context (e.g., "Bash: npm test")
It does not receive your actual code, full prompts, or file contents. There's an optional "Prompt Preview" feature that shows the first 30 characters of your prompt — it's off by default, and you can toggle it anytime. Because the connection is just an outbound HTTPS request from your machine to a webhook, nothing inbound ever touches your terminal.
Troubleshooting
If notifications aren't coming through:
- If you installed the plugin, run
/reload-pluginsand confirm it's active withclaude plugin list— plugin hooks live inside the plugin, so they won't show up in yoursettings.json - If you set hooks up by hand, run
cat ~/.claude/settings.jsonand check for the Agentfy webhook URL - Restart Claude Code if you just edited
settings.json(use/resumeto continue your conversation); if you use the plugin, run/reload-pluginsinstead - Check that notifications are enabled for Agentfy in your iPhone Settings
- If all else fails, go to Settings > Having Issues in the app and tap "Regenerate Token", then reinstall the plugin with the new token (or re-run the setup prompt if you configured hooks that way)
The single most common reason notifications go silent is a hook that got added to one project but not the global config — so one terminal pings you and another doesn't. If something's not firing, walk through Claude Code notifications not working for the full diagnostic checklist.
Free vs Pro
Agentfy is free to download and use. Free users get 25 push notifications per month. If you're running agents heavily and need unlimited notifications plus Live Activity support, Pro is available as a monthly, yearly, or one-time lifetime purchase — no subscription lock-in if you'd rather pay once.
To be clear about scope: Agentfy is monitoring-only. It reads the hook events your terminals emit and surfaces them on your phone. It never runs agents, sends keystrokes, or approves prompts for you — you stay in control of every session, and Agentfy just makes sure the right one gets your attention at the right moment.