| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- AWS
- Harness Engineering
- 아키텍트
- claude code
- Kubernetes
- OpenClaw
- 클로드코드
- RDS
- typescript
- EKS
- elasticsearch
- 디자인패턴
- go
- AI
- Infra
- logging
- 구조체
- golang
- GIT
- MSA
- GoF
- 오블완
- 감상문
- esbuild
- 티스토리챌린지
- goland
- ai agent
- LLM
- Intellij
- DB
- Today
- Total
Fall in IT.
Claude Code 작업 완료 알림에 작업 내용 포함하기 본문
Claude Code를 여러 세션으로 병렬 운영하다 보면 한 가지 불편함이 생긴다. 작업이 완료될때까지 모니터링해야한다는 점이다.
그래서 필자는 hook과 terminal-notifier 스크립트를 사용해서 작업이 끝나면 알림이 오도록 구성해서 사용하고 있었다.
그런데.... 사용하다보니....
작업이 완료됐다는 알림은 오는데, "작업 완료"라는 메시지만으로는 어떤 세션에서 무엇이 끝났는지 알 방법이 없다.
문제
기본 Stop 훅 설정은 다음과 같다.
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "terminal-notifier -message '작업 완료' -title 'Claude Code' -sound default"
}
]
}
]
}
}
알림에는 항상 동일한 "작업 완료" 문자열만 표시된다. 세션이 많아질수록 알림을 받아도 어떤 작업이 끝난 건지 알 수 없다.
원인
Claude Code의 Stop 훅은 실행 시 이벤트 데이터를 stdin으로 전달한다. 기본 설정에서는 이 데이터를 전혀 사용하지 않는다.
이벤트 JSON 구조는 다음과 같다.
{
"session_id": "...",
"hook_event_name": "Stop",
"last_assistant_message": "V94 마이그레이션 파일을 생성하고 서버를 재시작했습니다...",
"transcript_path": "...",
...
}
last_assistant_message 필드에 Claude의 마지막 응답 전문이 담겨 있다.
해결책
훅 스크립트에서 last_assistant_message의 첫 번째 줄을 추출해 알림 메시지로 사용한다.
1. 스크립트 작성
~/.claude/hooks/terminal-notify.sh:
#!/bin/bash
EVENT=$(cat)
SUMMARY=$(echo "$EVENT" | jq -r '
.last_assistant_message // "" |
split("\\n")[0] |
.[0:100]
' 2>/dev/null)
if [ -z "$SUMMARY" ] || [ "$SUMMARY" = "null" ]; then
SUMMARY="작업 완료"
fi
terminal-notifier -message "$SUMMARY" -title "Claude Code" -sound default
실행 권한을 부여한다.
chmod +x ~/.claude/hooks/terminal-notify.sh
2. settings.json 등록
~/.claude/settings.json의 Stop 훅에 위 스크립트를 등록한다.
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/terminal-notify.sh"
}
]
}
]
}
}
기존 인라인 terminal-notifier 명령이 있다면 위 스크립트 경로로 교체한다.
결과
알림 메시지 예시
| Before | 작업 완료 |
| After | V94 마이그레이션 파일을 생성하고 서버를 재시작했습니다. |
응답의 첫 번째 줄은 대부분 작업 결과 요약 문장이다. 알림만으로 어떤 작업이 끝났는지 즉시 파악할 수 있다. 메시지를 추출할 수 없는 경우에는 "작업 완료"로 폴백된다.
jq가 사전 설치되어 있어야 한다(brew install jq). macOS 외 환경에서는 terminal-notifier 대신 해당 플랫폼의 알림 도구로 교체하면 동일하게 적용된다.
'Artificial Intelligence' 카테고리의 다른 글
| AI 에이전트 시대, 개발자에게 필요한 것은 무엇인가 (0) | 2026.04.13 |
|---|---|
| AI 에이전트 시대, 설계와 TDD의 종말인가 진화인가? (0) | 2026.04.03 |
| [주간 IT 동향] 2026-03-16 ~ 03-19: NVIDIA GTC 2026 총정리, Groq 3 LPU 공개, 에이전트 보안의 "Sudo 레이어" (0) | 2026.03.20 |
| tmux를 사용해서 Claude Code 사용성을 높여보자 (0) | 2026.03.20 |
| AI 에이전트 팀으로 개발 업무 자동화(daily-todo-workflow 설계기) (0) | 2026.03.18 |
