Adding Pushover notifications to Claude Code

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 (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, 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:

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

This is then a very small CLI which allows me to call the Pushover API given a set of inputs.

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), 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)

Written by Jamie Tanna's profile image Jamie Tanna on , and last updated on .

Content for this article is shared under the terms of the Creative Commons Attribution Non Commercial Share Alike 4.0 International, and code is shared under the Apache License 2.0.

#blogumentation #ai #llm.

This post was filed under articles.

Interactions with this post

Interactions with this post

Below you can find the interactions that this page has had using WebMention.

Have you written a response to this post? Let me know the URL:

Do you not have a website set up with WebMention capabilities? You can use Comment Parade.