I made Claude respond to my Microsoft Teams messages
TL;DR Highlight
No Graph API, no Azure AD — just a bat/sh script that has Claude check Teams messages every 2 minutes and auto-reply using local codebase context.
Who Should Read
Developers whose focus gets broken by Teams messages, or anyone wanting to build a browser-based messenger automation agent with Claude.
Core Mechanics
- Built without any complex official integration (Graph API, webhooks, Azure AD) — just a `claude -p` command in a loop with a `--chrome` flag, implemented as a bat (Windows) or sh (Linux/Mac) script.
- Claude opens Teams in the browser every 2 minutes, checks unread messages, and auto-replies.
- BRAIN.md defines the agent's behavior rules (who to reply to, who to ignore, accessible websites, safety limits), while SOUL.md separately controls the reply personality and tone.
- Read access to local repos means when someone asks about code or architecture, the response is actually useful rather than 'I'll get back to you later.'
- Works with any browser-based messenger platform — Teams, Slack, Discord, Google Chat — just swap the URL and interaction steps in BRAIN.md.
- The author admits it was 'built for fun' and warns that the agent is inherently vulnerable to prompt injection attacks.
Evidence
- The author built it to solve the real problem of focus disruption from Teams notifications, aiming to provide substantive answers about code/architecture by referencing local repos.
- A 'workaround approach' using only browser automation with no official API integration — setup is simple but security risks like prompt injection exist, as the author themselves warns.
- Actual code (son-of-claude) is published on GitHub with a structure where just modifying two markdown files (BRAIN.md and SOUL.md) adapts it to other messenger environments.
How to Apply
- Clone the GitHub repo (https://github.com/asarnaout/son-of-claude), set Teams URL and 'who to reply/ignore' rules in BRAIN.md, write your desired tone and persona in SOUL.md, then run the bat or sh script for 2-minute auto-reply cycles.
- To adapt for Slack or Google Chat, just modify the URL and interaction steps (how to check messages, click input fields, etc.) in BRAIN.md for the target platform.
- If local codebase context is needed, add the repo path to BRAIN.md's allowed paths. However, consider prompt injection risks from external messages and restrict access to sensitive production code.
Code Example
snippet
# Behavioral overview (see GitHub for actual scripts)
# Windows: run.bat
:loop
claude -p --chrome "Follow BRAIN.md and SOUL.md rules: open Teams, check messages, and reply"
timeout /t 120
goto loop
# BRAIN.md example structure
## Rules
- Respond to: [team member name list]
- Ignore: [bots, specific channels]
- Allowed URLs: https://teams.microsoft.com
- Allowed local paths: C:/projects/my-repo
- Safety constraints: do not transmit sensitive information
# SOUL.md example structure
## Persona
- Tone: friendly but professional
- For code questions: reference actual code and answer specifically
- For unknown topics: honestly reply that you don't knowTerminology
Graph APIMicrosoft's official REST API for programmatic access to Microsoft 365 services like Teams/Outlook/OneDrive. Complex to set up, which is why this project skipped it.
Prompt InjectionAn attack technique where malicious instructions are hidden in external input (e.g., someone's message) to make an AI agent behave contrary to its intended purpose. Especially dangerous for automation agents.
claude -p --chromeA Claude CLI command flag that controls the browser (Chrome) while executing prompts. Enables Claude to see and interact with actual browser screens.
Azure ADMicrosoft's cloud-based identity and access management service, used for authentication/authorization when granting API access to enterprise apps like Teams. Requires admin privileges and complex setup.