Claude가 내 Microsoft Teams 메시지에 자동으로 답장하게 만들었습니다
I made Claude respond to my Microsoft Teams messages
TL;DR Highlight
Graph API나 Azure AD 없이 bat/sh 스크립트 하나로 Claude가 Teams 메시지를 2분마다 확인하고 로컬 코드베이스 컨텍스트를 참고해 자동 답장하는 에이전트를 구현한 사례입니다.
Who Should Read
업무 중 Teams 메시지 때문에 집중이 자주 끊기는 개발자, 또는 Claude를 브라우저 기반 메신저와 연동하는 자동화 에이전트를 만들고 싶은 개발자.
Core Mechanics
- Graph API, webhooks, Azure AD 같은 복잡한 공식 통합 방법을 전혀 쓰지 않고, `claude -p` 명령어를 `--chrome` 플래그와 함께 루프로 돌리는 bat(Windows) 또는 sh(Linux/Mac) 스크립트로 구현했습니다.
- Claude가 2분마다 브라우저에서 Teams를 열어 읽지 않은 메시지를 확인하고 자동으로 답장하는 방식으로 동작합니다.
- BRAIN.md 파일로 에이전트의 행동 규칙(누구에게 답장할지, 누구는 무시할지, 접근 가능한 웹사이트, 안전 제한)을 정의하고, SOUL.md 파일로 답장의 성격과 톤을 별도로 제어하는 구조입니다.
- 로컬 저장소(repo)에 대한 읽기 권한을 부여해서 누군가 코드나 아키텍처에 대해 질문하면 '나중에 알려줄게'가 아닌 실제 유용한 답변을 줄 수 있습니다.
- Teams뿐만 아니라 Slack, Discord, Google Chat 등 브라우저 기반 메신저 플랫폼이면 모두 적용 가능하며, BRAIN.md의 URL과 인터랙션 단계만 바꿔주면 됩니다.
- 작성자 본인도 '재미로 만든 것'이라고 밝혔고, 에이전트 특성상 프롬프트 인젝션 공격에 취약하므로 사용 시 주의가 필요합니다.
Evidence
- 작성자는 업무 중 Teams 알림에 집중이 끊기는 실제 문제를 해결하기 위해 만들었으며, 코드/아키텍처 질문에 로컬 repo를 참고한 실질적인 답변을 제공하는 것을 목표로 삼았습니다.
- 공식 API 통합 없이 브라우저 자동화만으로 구현한 '우회 접근법'이라 설정이 간단하지만, 프롬프트 인젝션 등 보안 리스크가 존재한다고 작성자 스스로 경고하고 있습니다.
- GitHub에 실제 코드(son-of-claude)를 공개했으며, BRAIN.md와 SOUL.md 두 마크다운 파일만 수정하면 다른 메신저 환경에도 바로 적용할 수 있는 구조입니다.
How to Apply
- GitHub 저장소(https://github.com/asarnaout/son-of-claude)를 클론한 뒤, BRAIN.md에 Teams URL과 '누구에게 답장할지/무시할지' 규칙을 설정하고, SOUL.md에 원하는 말투와 페르소나를 작성한 후 bat 또는 sh 스크립트를 실행하면 2분 단위 자동 응답이 시작됩니다.
- Slack이나 Google Chat에 적용하려면 BRAIN.md 안의 URL과 인터랙션 단계(메시지 확인 방법, 입력창 클릭 순서 등)만 해당 플랫폼에 맞게 수정하면 됩니다.
- 로컬 코드베이스 컨텍스트가 필요한 경우, 스크립트 실행 시 Claude가 접근할 repo 경로를 BRAIN.md의 허용 경로 목록에 추가하면 됩니다. 단, 외부 메시지를 통한 프롬프트 인젝션 위험을 감안해 민감한 프로덕션 코드 접근은 제한하는 것을 권장합니다.
Code Example
snippet
# 동작 방식 개요 (실제 스크립트는 GitHub 참고)
# Windows: run.bat
:loop
claude -p --chrome "BRAIN.md와 SOUL.md 규칙에 따라 Teams 열고 메시지 확인 후 답장"
timeout /t 120
goto loop
# BRAIN.md 예시 구조
## 규칙
- 응답 대상: [팀원 이름 목록]
- 무시 대상: [봇, 특정 채널]
- 접근 허용 URL: https://teams.microsoft.com
- 접근 허용 로컬 경로: C:/projects/my-repo
- 안전 제한: 민감 정보 전송 금지
# SOUL.md 예시 구조
## 페르소나
- 톤: 친근하지만 전문적
- 코드 질문 시: 실제 코드 참조 후 구체적으로 답변
- 모르는 내용: 솔직하게 모른다고 답변Terminology
Graph APIMicrosoft가 제공하는 공식 REST API로, Teams/Outlook/OneDrive 등 Microsoft 365 서비스 데이터에 프로그래밍 방식으로 접근할 때 사용합니다. 설정이 복잡해 이 프로젝트에서는 사용하지 않았습니다.
프롬프트 인젝션(Prompt Injection)외부 입력(예: 누군가가 보낸 메시지)에 악의적인 지시를 숨겨서 AI 에이전트가 원래 의도와 다른 행동을 하도록 유도하는 공격 기법입니다. 자동화 에이전트에서 특히 위험합니다.
claude -p --chromeAnthropic의 Claude CLI에서 브라우저(Chrome)를 제어하며 프롬프트를 실행하는 명령어 플래그입니다. 이를 통해 Claude가 실제 브라우저 화면을 보고 조작할 수 있습니다.
Azure ADMicrosoft의 클라우드 기반 ID 및 접근 관리 서비스로, Teams 같은 기업 앱에 API 접근 권한을 부여할 때 인증/인가에 사용됩니다. 설정에 관리자 권한과 복잡한 절차가 필요합니다.