{"slug": "adding-pushover-notifications-to-claude-code", "title": "Adding Pushover notifications to Claude Code", "summary": "Developer Jamie Tanna wired Claude Code's Notification hook to the Pushover API using a small Go CLI, so he receives phone alerts when an agent is waiting for input. The setup adds a command hook in ~/.claude/settings.json that runs a bash wrapper calling the claude-hook binary, which echoes Claude's message in its first iteration. Tanna noted the approach works on his work Mac but not his Linux laptop, which he still needs to investigate.", "body_md": "There are times that you're away from your machine - or you've got so many terminal sessions you've not seen a notification - to say that your agent is waiting for input.\n\nAlthough there are ways to get first-class support for this - for instance [Claude Code's Remote Control](https://code.claude.com/docs/en/remote-control) (which only works if using a Claude Code subscription, i.e. Bedrock users don't get access to it) - I wanted to write a tiny bit of Go code today, and thought I'd hand-roll some notifications.\n\nGiven [the Notification hook](https://code.claude.com/docs/en/hooks#notification), this is actually fairly straightforward.\n\nTo get a notification, you need to wire in the hook i.e. my `~/.claude/settings.json` looks like:\n\n```\n{\n \"hooks\": {\n \"Notification\": [\n {\n \"matcher\": \"\",\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"~/bin/_claude-hook\"\n }\n ]\n }\n ]\n }\n}\n```\n\nThen, my `_claude-hook` is a lightweight wrapper:\n\n``` bash\n#!/usr/bin/env bash\nsource ~/.secrets/claude-hook\nclaude-hook notification\n```\n\nThis is then a [very small CLI](https://gitlab.com/jamietanna/dotfiles-arch/-/blob/main/go/home/go/src/jvt.me/dotfiles/claude-hook/main.go) which allows me to [call the Pushover API given a set of inputs](https://gitlab.com/jamietanna/dotfiles-arch/-/blob/main/go/home/go/src/jvt.me/dotfiles/claude-hook/notification.go).\n\nIn its first iteration, it echoes the message from Claude - but I'll follow-up to add some more insight into what session it's coming from.\n\nFor now, I'm using a single CLI for Claude Code. If I get back to using multiple harnesses again (especially now `crush` [has at least started to add hooks](https://github.com/charmbracelet/crush/tree/main/docs/hooks)), I'll probably amend this to be i.e.\n\n```\n-claude-hook notification\n+agent-hook claude notification\n```\n\nSo then I can share the same underlying codebase for the multi-agent setup - but there's no point in prematurely optimising when that's not the case!\n\n(Oddly, this works on my work Mac, but not on my Linux laptop - I need to investigate further)", "url": "https://wpnews.pro/news/adding-pushover-notifications-to-claude-code", "canonical_source": "https://www.jvt.me/posts/2026/10/12/claude-pushover/?utm_medium=rss&utm_source=rss", "published_at": "2026-10-12 20:16:30+00:00", "updated_at": "2026-10-12 21:20:26.225033+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Claude Code", "Pushover", "Jamie Tanna", "Go", "crush"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/adding-pushover-notifications-to-claude-code", "markdown": "https://wpnews.pro/news/adding-pushover-notifications-to-claude-code.md", "text": "https://wpnews.pro/news/adding-pushover-notifications-to-claude-code.txt", "jsonld": "https://wpnews.pro/news/adding-pushover-notifications-to-claude-code.jsonld"}}