# Adding Pushover notifications to Claude Code

> Source: <https://www.jvt.me/posts/2026/10/12/claude-pushover/?utm_medium=rss&utm_source=rss>
> Published: 2026-10-12 20:16:30+00:00

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.

Although 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.

Given [the Notification hook](https://code.claude.com/docs/en/hooks#notification), this is actually fairly straightforward.

To get a notification, you need to wire in the hook i.e. my `~/.claude/settings.json` looks like:

```
{
 "hooks": {
 "Notification": [
 {
 "matcher": "",
 "hooks": [
 {
 "type": "command",
 "command": "~/bin/_claude-hook"
 }
 ]
 }
 ]
 }
}
```

Then, my `_claude-hook` is a lightweight wrapper:

``` bash
#!/usr/bin/env bash
source ~/.secrets/claude-hook
claude-hook notification
```

This 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).

In 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.

For 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.

```
-claude-hook notification
+agent-hook claude notification
```

So 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!

(Oddly, this works on my work Mac, but not on my Linux laptop - I need to investigate further)
