[Claude Code] terminal-notifier로 작업 완료 알림 받기

2026-03-20 hit count image

Claude Code의 Hooks 기능과 terminal-notifier를 활용하여 작업 완료 시 macOS 데스크톱 알림을 받는 방법을 알아봅니다. Stop Hook과 Notification Hook 설정까지 정리합니다.

generative_ai

개요

Claude Code에 작업을 시켜놓고 다른 일을 하다 보면, 작업이 끝났는지 수시로 터미널을 확인하게 됩니다. Claude Code의 Hooks 기능과 macOS의 terminal-notifier를 연동하면, 작업이 완료되거나 입력이 필요할 때 데스크톱 알림을 자동으로 받을 수 있습니다.

이번 포스트에서는 terminal-notifier 설치부터 Claude Code Hooks 설정까지 단계별로 정리합니다.

Claude Code의 설치 방법과 기본 사용법은 Claude Code 기초 지식과 기본 사용법을 참고해 주세요.

왜 알림이 필요한가?

Claude Code로 코드 작성, 리팩토링, 테스트 작성 등의 작업을 맡기면 완료까지 수십 초에서 수 분이 걸릴 수 있습니다. 이 시간 동안 다른 작업을 하다가도 알림을 받으면 즉시 돌아올 수 있어, 대기 시간 없이 효율적으로 작업을 이어갈 수 있습니다.

특히 다음과 같은 상황에서 유용합니다.

  • Claude가 코드를 작성하는 동안 다른 문서 작업을 하고 있을 때
  • 긴 리팩토링 작업을 맡겨놓고 브라우저에서 다른 일을 하고 있을 때
  • Claude가 권한 확인을 요청하는데 터미널을 보고 있지 않을 때

terminal-notifier 설치

terminal-notifier는 macOS에서 커맨드라인으로 데스크톱 알림을 보낼 수 있는 도구입니다. Homebrew로 간단히 설치할 수 있습니다.

brew install terminal-notifier

설치 확인

설치가 완료되면 아래 명령어로 확인합니다.

terminal-notifier -title '테스트' -message '알림이 정상 작동합니다' -sound default

macOS 화면 우측 상단에 알림이 표시되면 정상적으로 설치된 것입니다.

기본 사용법

terminal-notifier의 주요 옵션은 다음과 같습니다.

옵션설명예시
-title알림 제목-title 'Claude Code'
-subtitle알림 부제-subtitle '작업 완료'
-message알림 본문-message '요청하신 작업이 완료되었습니다'
-sound알림 소리-sound default
-group알림 그룹 ID (같은 그룹은 대체됨)-group 'claude-code'
-open알림 클릭 시 열 URL-open 'https://...'
-appIcon알림 아이콘 이미지-appIcon '/path/to/icon.png'

-group 옵션을 사용하면 같은 그룹의 이전 알림이 새 알림으로 대체되어, 알림 센터가 Claude 알림으로 도배되는 것을 방지할 수 있습니다.

Claude Code Hooks란?

Hooks는 Claude Code에서 특정 이벤트가 발생할 때 자동으로 실행되는 명령어입니다. settings.json에 설정하며, 다양한 이벤트에 셸 명령어를 연결할 수 있습니다.

알림에 활용할 수 있는 주요 Hook 이벤트는 다음과 같습니다.

이벤트발생 시점활용
StopClaude 응답 완료 시작업 완료 알림
Notification사용자 입력이 필요할 때권한 요청, 입력 대기 알림

settings.json 파일 위치

Claude Code의 설정 파일은 용도에 따라 여러 위치에 존재합니다.

범위파일 경로적용 대상
사용자(글로벌)~/.claude/settings.json모든 프로젝트에 적용
프로젝트.claude/settings.json해당 프로젝트 내 모든 협업자
로컬.claude/settings.local.json본인만, 해당 프로젝트에서만

알림 설정은 개인 환경에 따라 다르므로 사용자(글로벌) 설정(~/.claude/settings.json)에 추가하는 것을 권장합니다.

Hook의 구조

Hook은 다음과 같은 구조로 설정합니다.

{
  "hooks": {
    "이벤트명": [
      {
        "matcher": "매칭 패턴",
        "hooks": [
          {
            "type": "command",
            "command": "실행할 셸 명령어"
          }
        ]
      }
    ]
  }
}
  • 이벤트명: Hook이 실행될 이벤트 (Stop, Notification 등)
  • matcher: Hook이 실행될 조건을 필터링하는 패턴입니다. "*"으로 설정하면 모든 경우에 실행됩니다.
  • type: 실행 타입입니다. "command"는 셸 명령어를 실행합니다.
  • command: 실행할 셸 명령어입니다.

Stop Hook — 작업 완료 알림

Claude가 응답을 완료(작업이 끝남)했을 때 알림을 보내는 설정입니다.

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '작업 완료' -message '요청하신 작업이 완료되었습니다' -sound default -group 'claude-code'"
          }
        ]
      }
    ]
  }
}

이 설정을 적용하면 Claude에게 어떤 작업을 맡기든, 작업이 끝나는 순간 macOS 데스크톱 알림이 표시됩니다.

각 옵션 설명:

  • -title 'Claude Code': 알림 상단에 Claude Code라는 제목이 표시됩니다.
  • -subtitle '작업 완료': 제목 아래에 작업 완료라는 부제가 표시됩니다.
  • -message '요청하신 작업이 완료되었습니다': 알림 본문 메시지입니다.
  • -sound default: macOS 기본 알림 소리가 재생됩니다. 다른 작업에 집중하고 있어도 소리로 인지할 수 있습니다.
  • -group 'claude-code': 같은 그룹 ID의 알림을 하나로 묶습니다. 연속으로 여러 작업을 시키더라도 알림이 쌓이지 않고 최신 알림으로 대체됩니다.

Notification Hook — 입력 대기 알림

Claude가 사용자의 입력을 기다리고 있을 때(권한 요청, 질문 등) 알림을 보내는 설정입니다.

{
  "hooks": {
    "Notification": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '입력 대기중' -message '권한 요청 또는 입력 대기 중입니다' -sound default -group 'claude-code'"
          }
        ]
      }
    ]
  }
}

Claude Code의 기본 모드(Edit 모드)에서는 파일 수정, 명령어 실행 등에 사용자의 권한 승인이 필요합니다. 이때 Notification Hook이 없으면 Claude가 권한 확인을 요청하며 멈춰있는 것을 모르고 계속 기다리게 될 수 있습니다.

이 설정을 적용하면 Claude가 입력을 기다리는 순간 바로 알림이 오므로, 빠르게 돌아와 승인하고 작업을 이어갈 수 있습니다.

전체 설정

Stop Hook과 Notification Hook을 합친 전체 ~/.claude/settings.json 설정입니다.

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '작업 완료' -message '요청하신 작업이 완료되었습니다' -sound default -group 'claude-code'"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '입력 대기중' -message '권한 요청 또는 입력 대기 중입니다' -sound default -group 'claude-code'"
          }
        ]
      }
    ]
  }
}

두 Hook을 함께 설정하면 다음과 같은 흐름으로 알림을 받을 수 있습니다.

  1. Claude에게 작업을 맡기고 다른 일을 합니다.
  2. Claude가 권한 확인이 필요하면 → “입력 대기중” 알림이 옵니다.
  3. 권한을 승인하고 다시 다른 일을 합니다.
  4. Claude가 작업을 완료하면 → “작업 완료” 알림이 옵니다.

이 두 가지 알림만으로 Claude의 상태를 터미널을 확인하지 않고도 파악할 수 있습니다.

설정 확인

설정이 제대로 적용되었는지 Claude Code 내에서 확인할 수 있습니다.

/hooks

/hooks 명령어를 실행하면 현재 설정된 Hook 목록을 확인할 수 있습니다.

또는 아래의 명령어로 설정 파일의 내용을 직접 확인할 수 있습니다.

cat ~/.claude/settings.json

설정 파일을 수정한 후에는 Claude Code를 재시작할 필요 없이 바로 적용됩니다.

macOS 알림 권한 설정

terminal-notifier 알림이 표시되지 않는 경우, macOS의 알림 권한 설정을 확인해야 합니다.

  1. 시스템 설정 > 알림 으로 이동합니다.
  2. 앱 목록에서 terminal-notifier를 찾습니다.
  3. 알림 허용이 켜져 있는지 확인합니다.
  4. 알림 유형이 배너 또는 알림으로 설정되어 있는지 확인합니다.

처음 terminal-notifier를 실행하면 macOS가 알림 권한을 묻는 팝업을 표시합니다. 허용을 선택해야 알림이 정상적으로 표시됩니다.

**방해금지 모드(집중 모드)**가 활성화되어 있으면 알림이 표시되지 않을 수 있으니, 필요한 경우 terminal-notifier를 집중 모드의 허용 앱에 추가해 주세요.

완료

이것으로 Claude Code에서 terminal-notifier를 활용한 알림 설정 방법에 대해 알아보았습니다. Stop Hook과 Notification Hook 두 가지만 설정하면, 작업 완료와 입력 대기 상태를 놓치지 않고 효율적으로 작업할 수 있습니다.

Claude Code에 작업을 맡기고 다른 일에 집중할 수 있게 되니, 아직 설정하지 않으신 분은 꼭 적용해 보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.



SHARE
Twitter Facebook RSS