2026년 Telegram으로 휴대폰에서 Claude Code 제어하기
Markdown단계별 안내: Telegram 봇을 만들고 Claude Code Channels 플러그인을 설치한 뒤 허용 목록으로 보호하고 VPS에서 24시간 내내 실행하세요. 명령어를 따라 할 수 있는 완성된 가이드입니다.
전체 글 읽기
핵심 사항
Claude Code Channels는 2026년 3월 20일 기준 Anthropic의 공식 플러그인입니다. BotFather를 통해 봇을 만들고, 명령어 하나로 플러그인을 설치한 다음, --channels 플래그를 사용해 Claude를 다시 시작하고 휴대폰에서 봇에 메시지를 보내세요. Claude는 로컬 세션에서 메시지를 직접 읽고, 파일을 수정한 뒤 Telegram으로 답장합니다. 24시간 내내 작동하게 하려면 세션을 자체 VPS로 옮겨 systemd로 실행하세요.
도구 설정에 관한 자료는 Ailoot 문서에서 더 확인할 수 있습니다.
Claude Code Channels란 무엇이며 왜 필요한가요
핵심 사항
Channels는 Telegram, Discord 또는 iMessage의 메시지를 이미 실행 중인 Claude Code 세션으로 전달하는 MCP 플러그인입니다. 세션은 메시지를 일반적인 사용자 요청처럼 받아 로컬 파일을 다루고 같은 채팅방에서 답합니다. 노트북은 켜 둔 채 휴대폰으로 다른 일을 할 수 있습니다.
2026년 3월 20일, Anthropic은 Claude 세션과 메시징 앱을 연결하는 공식 플러그인 Claude Code Channels를 출시했습니다. Telegram, Discord, iMessage를 지원합니다. 이 기능은 리서치 프리뷰 단계입니다. 문서는 code.claude.com/docs/en/channels에 있으며, 플러그인 소스 코드는 공개 저장소 anthropics/claude-plugins-official에 있습니다.
간단히 말해 휴대폰과 Claude Code 세션 사이의 ‘채팅 브리지’입니다. 봇에 “가격 표 다시 작성하는 작업을 계속해. business/products/practicum/README.md에서 다음 기수 날짜를 업데이트해”라고 메시지를 보내면 봇이 VPS의 세션으로 전달합니다. Claude는 컨텍스트를 불러오고 파일을 수정한 뒤 변경 사항을 커밋하고 Telegram으로 “완료했어요. 커밋을 확인해 보세요”라고 답합니다. 노트북은 집에서 닫혀 있습니다.
⚠️ 리서치 프리뷰의 주요 제한 사항: Channels는 MCP 브리지입니다. 세션은 내 컴퓨터나 VPS에서 실행 중이어야 합니다. 세션이 닫히면 메시지를 받을 수 없습니다. 따라서 24시간 작동은 별도로 설정해야 합니다(아래 VPS 섹션 참고).
Channels는 다른 원격 작업 방식과 어떻게 다른가요
Anthropic은 공식 문서에서 직접 비교 표를 제공합니다. 이를 바탕으로 정리한 내용은 다음과 같습니다.
| 기능 | 하는 일 | 선택할 때 |
|---|---|---|
| 웹에서 Claude Code 사용 | 새 클라우드 샌드박스에서 작업을 실행하고 GitHub에서 저장소를 복제합니다 | 독립적인 백그라운드 작업을 맡긴 뒤 나중에 확인할 때 |
| Slack 통합 | @Claude가 언급되면 스레드에서 웹 세션을 시작합니다 | 팀 대화에서 바로 작업을 시작할 때 |
| 일반 MCP 서버 | 작업 중 Claude가 호출하며, 세션으로 무언가를 푸시하지는 않습니다 | Claude에 외부 시스템 접근 권한을 필요할 때 제공할 때 |
| Remote Control | claude.ai 또는 모바일 앱에서 로컬 세션을 제어합니다 | 휴대폰 화면에서 기존 세션을 조작할 때 |
| Channels ⭐ | Claude가 아닌 출처의 이벤트를 이미 실행 중인 로컬 세션으로 푸시합니다 | 휴대폰으로 질문을 보내 채팅에서 답을 받거나 CI의 웹훅을 받을 때 |
Channels와 Remote Control의 주요 차이는 다음과 같습니다. Remote Control은 “휴대폰으로 터미널을 들여다보는 것”입니다. 말 그대로 커서를 보고 버튼을 누릅니다. Channels는 로컬 Claude 세션을 두뇌로 쓰는 챗봇입니다. Remote Control에서는 터미널을 봅니다. Channels에서는 내 파일을 읽는 상대에게 메시지를 보냅니다.
화면에서 완전히 제어해야 한다면 Remote Control을 사용하세요. “질문을 보내고, 하루를 보내다가 답을 받는” 방식이 좋다면 Channels를 사용하세요. 저는 둘 다 씁니다. 중요한 변경 사항을 승인해야 할 때는 Remote Control을, 작업을 믿고 저녁 시간을 되찾고 싶을 때는 Channels를 사용합니다.
시작하기 전에 필요한 것
핵심 사항
Claude Code v2.1.80 이상, 지원 claude.ai 인증이나 Console API 키, 설치된 Bun, Telegram 접근이 필요합니다. 24시간 실행하려면 Ubuntu 또는 Debian을 실행하는 VPS가 필요합니다. macOS, Linux, WSL에서 모두 같은 방식으로 작동합니다.
명령어를 살펴보기 전에 다음 목록을 확인하세요.
- Anthropic 계정. Pro, Max, Team 또는 Enterprise가 필요합니다. Channels는 무료 요금제에서 사용할 수 없습니다. Console API 키도 지원됩니다. 관리 설정을 배포하는 Console 조직이면 채널이 켜졌는지 확인하세요.
- Claude Code v2.1.80 이상.
claude --version으로 확인하세요. 이전 버전이라면claude update또는npm install -g @anthropic-ai/claude-code@latest로 업데이트하세요. - Bun. Channels 플러그인은 Node 스크립트가 아니라 Bun 스크립트입니다.
bun --version으로 확인하세요. 설치되어 있지 않으면curl -fsSL https://bun.sh/install | bash를 실행한 다음source ~/.bashrc를 실행하세요. - Telegram 계정. 어떤 계정이든 괜찮습니다. 휴대폰에서 로그인되어 있기만 하면 됩니다.
- Team/Enterprise 요금제를 사용한다면, 관리자에게 관리 설정 또는 admin-settings/claude-code를 통해
channelsEnabled를 활성화해 달라고 요청하세요. 조직에서는 기본적으로 비활성화되어 있습니다.
Bun을 처음 들어봤더라도 걱정하지 마세요. Bun은 Node와 같은 대체 JavaScript 런타임입니다. Anthropic은 더 빨리 시작되고 단일 바이너리로 패키징하기 쉬워 Channels 플러그인에 Bun을 선택했습니다. 한 번 설치하고 나면 신경 쓸 필요가 없습니다.
⚠️ Channels는 아직 기업용 Bedrock / Google Vertex / Azure Foundry에서 작동하지 않습니다. claude.ai 인증 또는 Anthropic Console에서만 사용할 수 있습니다.
1단계. BotFather를 통해 Telegram 봇 만들기
핵심 사항
Telegram에서 @BotFather를 열고 /newbot 명령어를 보낸 다음 이름과 사용자 이름을 선택하세요(사용자 이름은 bot으로 끝나야 합니다). 그러면 12345678:AAH... 형식의 토큰을 받습니다. 토큰은 봇의 비밀번호이므로 안전하게 보관하세요. 토큰을 본 사람은 누구나 봇으로 메시지를 보내고 Claude에 보낸 메시지를 가로챌 수도 있습니다.
BotFather가 모든 작업을 처리하므로 버튼 다섯 개만 누르면 됩니다. 단계는 다음과 같습니다.
- Telegram에서 @BotFather를 여세요(휴대폰으로 해도 됩니다. 나머지 설정도 휴대폰에서 할 수 있습니다).
- 처음이라면 “Start”를 누르세요.
/newbot명령어를 보내세요.- BotFather가 “좋습니다. 새 봇을 만들겠습니다. 이름을 어떻게 할까요?”라고 물으면 표시 이름을 입력하세요. 예:
내 어시스턴트 - Claude Code. - 다음으로 사용자 이름을 물어봅니다. Telegram 전체에서 고유해야 하며
bot으로 끝나야 합니다. 예:my_claude_bot또는my_dev_bot. - BotFather가 다음과 같은 메시지를 보냅니다.
Done! Congratulations on your new bot. You will find it at
'<OFFICIAL_URL>'.
Use this token to access the HTTP API:
1234567890:AAHzlAU...
Keep your token secure and store it safely, it can be used by anyone to control your bot.
토큰을 복사하세요. 2분 뒤에 필요합니다.
⚠️ 토큰 보안. 봇 토큰은 봇을 완전히 제어할 수 있게 해 줍니다. 토큰이 유출되면 누구나 봇으로 메시지를 보내고 (잠재적으로) Claude에 보내는 메시지를 가로챌 수 있습니다. 저장소에 공개하거나 코드에 붙여 넣거나 채팅으로 보내지 마세요. 저는 토큰을 ~/.claude/channels/telegram/.env에 저장합니다. 다음 단계에서 플러그인이 해당 위치에 저장합니다.
2단계. Claude Code에 Telegram 플러그인 설치하기
핵심 사항
평소처럼 Claude Code를 시작한 다음 세션에 /plugin install telegram@claude-plugins-official을 입력하세요. 플러그인을 찾을 수 없다면 먼저 /plugin marketplace add anthropics/claude-plugins-official로 공식 마켓플레이스를 추가하세요. 설치가 끝나면 /reload-plugins를 실행해 현재 세션에서 플러그인 명령어를 활성화하세요.
평소 Claude와 함께 작업하는 폴더에서 터미널을 열고 다음을 실행하세요.
claude
세션에 슬래시 명령어를 입력하세요.
/plugin install telegram@claude-plugins-official
Claude가 “Plugin not found in any marketplace”라고 답하면 클라이언트가 공식 마켓플레이스를 모르는 것입니다. 다음 명령어로 추가하세요.
/plugin marketplace add anthropics/claude-plugins-official
이전에 추가했다면 다음 명령어로 업데이트하세요.
/plugin marketplace update claude-plugins-official
설치가 성공하면 플러그인을 다시 불러와 명령어를 활성화하세요.
/reload-plugins
이제 /telegram:configure, /telegram:access와 같은 슬래시 명령어가 표시되어야 합니다. 확인하려면 /help를 입력하세요. 목록에 telegram 섹션이 있어야 합니다.
3단계. 토큰을 플러그인에 연결하기
핵심 사항
Claude 세션에서 1단계에서 받은 토큰과 함께 /telegram:configure <token>을 입력하세요. 이 명령어는 토큰을 ~/.claude/channels/telegram/.env에 저장합니다(사용자 계정만 접근 가능). 또는 Claude를 실행하기 전에 셸에서 TELEGRAM_BOT_TOKEN 환경 변수를 설정할 수 있습니다. 저는 운영 환경에서 두 번째 방법을 씁니다. systemd로 관리하기 쉽고 저장소에 ~/.claude/가 포함되는 일을 피할 수 있습니다.
Claude 세션에서 다음을 입력하세요.
/telegram:configure 1234567890:AAHzlAU...
이 명령어는 토큰을 ~/.claude/channels/telegram/.env에 저장합니다. 파일은 사용자 계정만 접근할 수 있도록 되어 있으므로(chmod 600) 걱정할 필요가 없습니다.
또는 환경 변수를 통해 토큰을 설정할 수 있습니다. systemd나 Docker로 Claude를 배포하면서 대화형 명령어를 사용하고 싶지 않을 때 유용합니다.
export TELEGRAM_BOT_TOKEN="1234567890:AAHzlAU..."
claude --channels plugin:telegram@claude-plugins-official
⚠️ 운영 환경에서는 홈 디렉터리 ~/에 .env 파일을 두는 대신 항상 환경 변수를 사용합니다. systemd를 통해 비밀 정보를 관리하기 쉬워지고(Environment=TELEGRAM_BOT_TOKEN=...), 실수로 ~/.claude/를 저장소에 포함하는 일을 막을 수 있습니다.
4단계. --channels 플래그를 사용해 Claude 다시 시작하기
핵심 사항
세션을 종료하고(exit 또는 Ctrl+D) --channels plugin:telegram@claude-plugins-official 플래그를 붙여 다시 실행하세요. 이 플래그는 플러그인을 활성화하고 새 메시지를 확인하도록 Claude가 Telegram API를 폴링하게 합니다. 플래그가 없으면 봇은 있지만 아무 응답도 하지 않습니다. 플러그인이 비활성 상태이고 폴링도 시작되지 않았기 때문입니다.
가장 중요한 내용이자 처음 실행할 때 많은 사람이 놓치는 부분입니다. 플러그인만 설치해서는 충분하지 않습니다. 봇이 실제로 메시지를 받기 시작하려면 명시적인 플래그를 사용해 Claude를 실행해야 합니다.
claude --channels plugin:telegram@claude-plugins-official
플래그가 없으면 세션은 평소처럼 작동하지만 Telegram 플러그인은 비활성 상태입니다. 플래그를 사용하면 Claude가 플러그인의 MCP 서버를 시작하고 Telegram API 폴링을 시작해 봇으로 보낸 메시지에 응답합니다.
실행한 뒤 터미널에 다음과 같은 내용이 표시되어야 합니다.
✻ Welcome to Claude Code 2.1.80
Channels: telegram@claude-plugins-official (active)
Polling for messages...
channels 관련 줄이 표시되지 않으면 플래그가 적용되지 않은 것입니다. Claude Code가 버전 2.1.80+인지, 플러그인이 실제로 설치되었는지 확인하세요(세션 안에서 /plugin list).
⚠️ 편리한 팁. 저는 ~/.zshrc에 별칭을 추가했습니다.
alias claude-tg="claude --channels plugin:telegram@claude-plugins-official"
그러면 claude-tg만 실행하면 됩니다. 여러 플러그인을 공백으로 구분해 전달할 수도 있습니다. --channels plugin:telegram@... plugin:discord@....
5단계. 계정을 페어링하고 다른 사용자는 차단하기
핵심 사항
Telegram에서 봇을 열고 아무 메시지나 보내세요. 봇이 6자리 페어링 코드를 답장으로 보냅니다. 터미널로 돌아가 /telegram:access pair <code>를 입력하세요. 그런 다음 허용 목록으로 접근을 제한해야 합니다. /telegram:access policy allowlist. 허용하려는 사람의 페어링 코드만 승인하세요. 발신자 허용 목록은 세션에 접근할 수 있는 사람을 제어합니다.
승인된 발신자는 세션의 파일과 도구에 동작을 요청할 수 있습니다. 의도한 계정만 페어링하고 발신자 정책을 제한한 뒤 봇에 의존하세요.
단계:
- Telegram에서 봇을 여세요. 사용자 이름
@my_claude_bot으로 검색하거나 BotFather 답장에 포함된 링크를 여세요. “Start”를 누르세요. - 봇에 아무 메시지나 보내세요. 예를 들면
hi. - 봇이 페어링 코드를 답장으로 보냅니다. 다음과 같은 형식입니다.
Hi! To pair this account, run in your Claude Code session:
/telegram:access pair 847291
This code is valid for 5 minutes.
- 터미널로 돌아가세요. Claude 세션에서 답장에 나온 명령어를 입력하세요.
/telegram:access pair 847291
Claude가 “Account paired”라고 답합니다. 이제 Telegram 계정으로 명령을 보낼 수 있습니다.
- allowlist 정책을 활성화하세요. 이미 페어링한 계정을 제외한 모든 계정을 차단합니다.
/telegram:access policy allowlist
이제 다른 계정에서 온 메시지는 아무 알림 없이 무시됩니다. 터미널에 표시되지 않고 봇도 답하지 않습니다. 마치 메시지가 없었던 것처럼 처리됩니다.
설정 중 모르는 페어링 요청을 승인하지 마세요. 응답 성공만으로 발신자 정책이 올바르다고 가정하지 마세요.
다른 사람(예를 들어 프로젝트 파트너)을 추가해야 한다면 다음을 사용하세요.
/telegram:access pair <code from their account>
먼저 상대방이 봇에 메시지를 보내 코드를 받은 다음 나에게 전달해야 합니다. 이 방법으로만 추가할 수 있습니다.
Ailoot 문서에서 다른 가이드도 확인해 보세요.
Claude Code 설치 npm 명령과 자체 VPS의 24시간 봇 운영
핵심 사항
노트북이 켜져 있는 동안에는 로컬 세션이 실행되지만, 덮개를 닫으면 봇이 응답을 멈춥니다. 언제든 Claude가 답하도록 하려면 세션을 자체 VPS로 옮기세요. Claude Code와 Bun을 설치하고 같은 전용 Unix 사용자로 인증·플러그인 설치·페어링한 뒤 systemd로 구성하세요. Coolify 서버에서도 문제없이 실행됩니다.
봇이 “노트북을 한 시간 켜서 잠깐 사용하는” 것이 아니라 “하루 종일 살아 있게” 하려면 세션이 계속 실행되어야 합니다. 로컬에서는 tmux로 할 수도 있지만 VPS가 더 간단하고 안정적입니다.
한 가지 설정 예에서는 웹사이트도 호스팅하는 Coolify VPS를 사용합니다(Coolify를 통해 게시하는 가이드에서 자세한 내용 확인). Claude는 메모리를 많이 쓰지 않으므로 같은 서버를 사용할 수 있습니다. VPS가 없다면 월 4–5유로 정도의 가장 저렴한 VPS를 이용하세요. 예를 들어 Hetzner CX11 / Yandex Cloud / Selectel 등이 있습니다.
1단계: VPS에 시스템 설치하기
먼저 관리자로 전용 Unix 계정과 작업 공간을 만드세요. 기존 계정을 재사용하면 홈과 소유권을 확인하세요.
sudo useradd --create-home --shell /bin/bash claude
sudo install -d -o claude -g claude /home/claude/workspace
sudo -iu claude
root 홈이 아닌 claude 로그인 셸에서 계속하세요. 공식 Bun 설치와 Claude Code 기본 설치를 사용하세요.
curl -fsSL https://bun.sh/install | bash
curl -fsSL https://claude.ai/install.sh | bash
같은 사용자의 새 로그인 셸을 열어 PATH를 적용하고 계정·실행 경로를 확인하세요.
whoami
printf '%s\n' "$HOME"
command -v bun
command -v claude
bun --version
claude --version
cd /home/claude/workspace
claude
whoami는 claude, HOME은 /home/claude여야 합니다. command -v의 절대 경로를 기록해 실제 Claude 경로를 ExecStart에 쓰고 Bun 폴더를 서비스 PATH에 넣으세요. 하나라도 없으면 멈추세요.
2단계: 같은 서비스 사용자로 인증·설치·페어링
같은 대화형 세션에서 로그인한 뒤 위의 2–5단계를 반복하세요. Telegram 플러그인을 user 범위에 설치하고 토큰 설정, --channels 재시작, 페어링, policy allowlist를 적용하세요. 서비스 설정 전에 메시지·응답을 시험하고 root 설정·자격 증명을 복사하지 마세요.
claude.ai 구독과 Console API 키 모두 지원됩니다. Team/Enterprise는 조직 활성화가 필요하고 관리 Console도 채널 설정을 충족해야 합니다. Console은 구독이 아닌 API 과금입니다. 대화형에서 서비스로 옮겨도 계정·인증 방식을 유지하세요.
3단계: systemd로 세션 관리하기
서비스 사용자 셸을 나와 관리자로 unit을 만드세요. 아래는 확인 경로가 /home/claude/.local/bin/claude와 /home/claude/.bun/bin/bun인 경우이며 다르면 실제 출력으로 바꾸세요. 같은 인증 환경과 토큰을 제공하고 unit은 관리자만 읽게 하며 비밀을 커밋하지 마세요. 자동 시작·비정상 종료 재시작용 서비스 파일입니다.
cat > /etc/systemd/system/claude-code.service <<'EOF'
[Unit]
Description=Claude Code with Telegram channel
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=claude
WorkingDirectory=/home/claude/workspace
Environment="HOME=/home/claude"
Environment="TELEGRAM_BOT_TOKEN=1234567890:AAH..."
Environment="PATH=/home/claude/.local/bin:/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/claude/.local/bin/claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable claude-code
systemctl start claude-code
다음 설정을 활성화했습니다.
Type=simple— 단순 모드입니다. systemd는 프로세스가 시작되자마자 실행된 것으로 간주합니다.User=claude— root가 아닌 별도 사용자 계정으로 실행합니다. 더 안전합니다.WorkingDirectory=/home/claude/workspace— 준비한 서비스 사용자 소유 작업 공간입니다. 시작 전에 저장소를 두고 root 소유 복제본이나 root 홈에서 실행하지 마세요.Environment=TELEGRAM_BOT_TOKEN=...— 토큰을 프로세스에 직접 전달합니다..env파일은 필요하지 않습니다.--dangerously-skip-permissions— 무인 실행에 필수입니다. 이 플래그가 없으면 Claude는 모든 작업 전에 터미널에서 “예/아니요”를 기다리며 세션이 멈춥니다. 허용 목록은 발신자 신원만 확인하고 명령의 안전을 보장하지 않습니다. 파일·키·네트워크를 의도적으로 제한한 격리 환경에서만 이 우회를 사용하세요.Restart=on-failure— 프로세스가 비정상 종료되면(Claude가 충돌하거나 네트워크가 끊기면) systemd가 10초 후 다시 실행합니다.
다음 명령어로 로그를 확인하세요.
journalctl -u claude-code -f
문제가 생기면 journalctl -u claude-code -n 100으로 최근 100줄을 확인할 수 있습니다.
4단계: 봇이 작동하는지 확인하기
대화형 설정에서 실제 Telegram 응답을 받은 뒤에만 서비스를 시작하세요. 같은 봇에 페어링한 계정으로 무해한 메시지를 보내 응답과 서비스 로그를 확인하세요. 수동으로만 작동하면 Unix 사용자, HOME, 작업 공간, 실행 경로, PATH, 인증 환경을 먼저 비교하세요.
이후 페어링 변경은 서비스를 중지하고 sudo -iu claude로 로그인해 /home/claude/workspace에서 같은 채널을 대화형 실행하세요. 페어링·allowlist 후 종료하고 서비스를 시작하세요. 같은 봇의 두 poller를 동시에 실행하지 마세요. journalctl은 로그 읽기이며 Claude 입력창이 아닙니다.
운영 서버에서 주의할 점 5가지와 해결 방법
핵심 사항
일주일간 운영 환경을 설정하면서 겪은 문제를 정리했습니다. systemd에서 Bun을 찾지 못하거나, 오랜 유휴 시간 뒤 long polling이 끊기거나, Max 요금제 한도가 한낮에 소진되거나, --dangerously-skip-permissions로 정보가 유출되거나, 재설치 후 allowlist를 잊는 경우입니다. 각 문제는 한 줄 설정으로 해결할 수 있지만, 미리 알지 못하면 며칠 안에 맞닥뜨리게 됩니다.
1. Bun이 systemd의 PATH에 없음
systemd는 최소 환경에서 프로세스를 시작하므로 ~/.bashrc에 있는 변수를 보지 못합니다. Bun을 root 홈에만 설치하고 User=claude로 서비스가 실행된다면 그 설치나 root 셸 PATH를 상속하지 않습니다.
해결 방법. Bun을 시스템 전체에 설치하거나(/usr/local/bin/bun) PATH를 명시적으로 전달하세요.
Environment="PATH=/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
2. 오랜 유휴 시간 뒤 세션의 Telegram API TCP 연결이 끊김
6–12시간 동안 유휴 상태가 이어지면 봇이 “조용해질” 수 있습니다. 메시지는 Telegram으로 전송되지만 플러그인이 받지 못합니다. long polling의 특이한 동작입니다.
해결 방법. systemd에 정기 재시작을 추가하세요(24시간마다).
Restart=always
RuntimeMaxSec=86400
또는 cron 작업을 설정하세요. 0 5 * * * systemctl restart claude-code (오전 5시에 재시작).
3. Claude Max 한도가 한낮에 소진됨
Telegram으로 Claude를 많이 사용한다면 Max 5x 요금제(약 $100/월)에서 4–6시간 만에 한도에 도달할 수 있습니다. Telegram 요청도 일반 터미널의 요청과 다르지 않습니다. 동일한 예산을 사용합니다.
해결 방법. “봇이 응답하지 않음 — /stats 확인”이라는 알림을 설정하세요. 한도에 도달하면 초기화될 때까지 기다리거나 Max 20x($200/월)로 업그레이드하세요. 토큰 절약 가이드와 Sonnet 및 Opus 모델 가이드가 도움이 될 수 있습니다.
4. allowlist를 사용해도 --dangerously-skip-permissions는 위험함
이 플래그는 모든 확인 절차를 비활성화합니다. Telegram으로 내가 보내는 명령은 무엇이든 질문 없이 실행됩니다. 파일 삭제, 외부 요청 전송 등 모든 작업이 가능합니다. 한 번은 Claude에게 “불필요한 console.log 문을 제거해”라고 요청했는데, 코드 정리에 열중한 Claude가 운영 스크립트의 디버그 로그 절반을 지워 버렸습니다. git으로 복구했지만 이미 문제가 발생한 뒤였습니다.
해결 방법. 중요한 프로젝트를 작업 중이라면 --dangerously-skip-permissions를 활성화하지 마세요. 대신 Remote Control로 세션을 실행하세요. 권한 요청이 휴대폰에 도착하므로 직접 승인할 수 있습니다. --dangerously-skip-permissions를 사용하는 Channels는 초안 작성, 리팩터링, 테스트에 적합합니다.
5. 재설치 후 allowlist가 ‘망가짐’
allowlist는 ~/.claude/channels/telegram/에 저장됩니다. 새 VPS로 옮기거나 Claude를 재설치하거나 사용자를 바꾸면 기존 페어링 정보가 불러와지지 않습니다. 기존 발신자 목록이 없으므로 새 인스턴스가 예전 접근 정책을 가졌다고 가정하지 마세요.
해결 방법. 이동하기 전에 ~/.claude/channels/telegram/을 백업하세요. 이동 후에는 해당 데이터를 복원하세요. 또는 재설치 직후 다시 페어링하고 봇을 시작한 뒤 policy allowlist를 설정하기까지 1분도 비워 두지 마세요.
Channels와 Remote Control 중 무엇을 선택해야 할까요?
핵심 사항
Channels를 사용하면 Claude 세션이 채팅에서 답하고 휴대폰에서 프롬프트를 보낼 수 있습니다. Remote Control은 터미널 화면을 휴대폰으로 보여 주고 버튼으로 세션을 조작합니다. “물어보고 계속하기”에는 Channels가 편리하고, Claude가 무엇을 하는지 확인하고 위험한 작업을 하나씩 승인해야 하는 중요한 단계에는 Remote Control이 적합합니다.
Anthropic은 두 기능을 거의 동시에 출시했습니다. Remote Control은 2026년 2월 25일, Channels는 2026년 3월 20일에 출시됐습니다. 두 기능은 서로 중복되지 않습니다. 해결하려는 문제가 다릅니다.
| 상황 | Channels | Remote Control |
|---|---|---|
| 외출 중 “어제 커밋은 뭐였지?”라고 묻기 | ✅ 적합 | 과도함 — 전체 화면이 필요함 |
| 파일 변경 승인하기 | ⚠️ --dangerously-skip-permissions를 통한 맹목적 승인 | ✅ Claude가 하려는 작업을 확인할 수 있음 |
| Claude를 24시간 실행하기 | ✅ VPS + systemd 설정 | ⚠️ 노트북을 켜 둬야 함 |
| 휴대폰에서 프롬프트 두어 개만 보내기 | ⚠️ 과도함 — 봇, 토큰, 플러그인이 필요함 | ✅ QR 코드 하나면 됨 |
| CI / Sentry 웹훅 받기 | ✅ 기본 사용 사례 | ❌ 이 용도는 아님 |
| 여러 사람이 있는 팀 | ✅ 여러 계정을 위한 allowlist | ⚠️ 세션 소유자만 가능 |
| Anthropic 클라우드에 파일을 보내지 않기 | ✅ MCP를 통한 텍스트만 사용 | ✅ 여기서도 텍스트만 사용 |
저는 두 기능을 다음과 같이 나눠 씁니다. 노트북에서 떨어져 있을 때의 비동기 작업, CI 알림, 통합에는 Channels를 사용합니다. Claude가 무엇을 하는지 보거나 위험한 단계를 승인해야 할 때는 Remote Control을 사용합니다.
둘 다 동시에 사용할 수 있습니다. Telegram 봇은 빠르게 “물어보고 답을 받는” 채널을 제공하고 Remote Control은 “중요한 작업을 제어하는” 채널을 제공합니다. 두 기능은 Claude 한도를 공유합니다.
FAQ
핵심 사항
Channels에 관해 자주 묻는 질문 7가지입니다. 여러 봇 연결, 터미널을 닫으면 어떻게 되는지, CI 웹훅, Telegram과 Discord의 차이, Team 요금제 제한, 휴대폰에서 Claude가 볼 수 있는 정보, 무료 요금제에 대한 내용입니다. Ailoot 문서에서 더 많은 자료를 확인할 수 있습니다.
여러 봇을 동시에 연결할 수 있나요?
네. --channels 플래그는 공백으로 구분한 목록을 받습니다. --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official. 하나의 Claude 세션이 두 채팅방 모두에 답합니다.
터미널을 닫으면 어떻게 되나요?
세션이 닫히고 플러그인이 중지되며 봇은 응답을 멈춥니다. VPS에서는 systemd가 세션을 계속 실행합니다. 로컬 컴퓨터에서는 노트북을 닫으면 claude가 몇 초 안에 SIGHUP으로 연결을 끊습니다.
CI 또는 Sentry에서 알림을 받을 수 있나요?
네. Channels는 양방향 채널입니다. Channels Reference를 이용해 웹훅을 세션으로 전달하는 자체 플러그인을 작성할 수 있습니다. Claude가 이벤트를 실시간으로 확인하고 응답합니다.
Telegram은 Discord보다 제한적인 점이 있나요?
기본 기능은 같습니다. Discord에서는 봇 설정에서 Message Content Intent가 필요합니다. iMessage는 macOS에서만 작동하며 ~/Library/Messages/chat.db 데이터베이스를 직접 읽습니다. Telegram은 어디서나 사용할 수 있습니다.
Team 요금제를 사용한다면 무엇을 해야 하나요?
조직 관리자가 관리 설정 또는 admin-settings/claude-code를 통해 channelsEnabled: true를 활성화해야 합니다. 활성화하지 않으면 플러그인은 연결되지만 메시지가 전달되지 않으며 터미널 시작 시 경고가 표시됩니다.
휴대폰에서 Claude가 볼 수 있는 것은 무엇인가요? Telegram 채팅 자체도 볼 수 있나요?
아니요. Claude는 봇에 보낸 메시지만 볼 수 있습니다. Telegram 대화 기록, 채팅 목록, 연락처에는 접근할 수 없습니다. MCP 플러그인은 Telegram Bot API를 통해 봇에 보낸 메시지만 읽습니다.
Pro/Max 구독 없이 Channels를 통해 Claude를 실행할 수 있나요?
Console API 키도 지원되며 해당 조직의 API 요금으로 청구됩니다. 무료 claude.ai는 여기서 설명한 구독 경로가 아닙니다. Team/Enterprise와 관리 Console 조직은 채널 활성화 설정을 충족해야 합니다.
다음에 할 일
핵심 사항
봇 설정이 끝났고 allowlist가 활성화됐으며 세션은 VPS에서 실행 중입니다. 이제 Channels를 일상에 포함해 보세요. GitHub Actions와 Sentry의 웹훅을 연결하고, 반복 작업을 위해 Routines와 함께 사용하고, 봇 상태를 확인하는 모니터를 설정하세요. 각 단계는 15–30분 정도 걸리며 관측 가능성의 공백 하나를 메웁니다.
봇이 안정적으로 실행되기 시작하면 Channels를 최대한 활용하기 위해 다음 단계를 진행해 보세요.
- CI 웹훅을 연결하세요. GitHub Actions / GitLab CI를 사용한다면 Channels 플러그인을 설정해 빌드 결과를 세션으로 바로 전달할 수 있습니다. push 직후 Claude가 “테스트 실패”를 확인하고 해결책을 제안합니다. channels-reference 문서를 참고하세요.
- Routines와 함께 사용하세요. 같은 세션에서 정기 작업을 위해 Routines를 실행할 수 있습니다. 아침에 봇이 “좋은 아침이에요. 프로젝트 요약을 보내드립니다”라고 먼저 보내면 휴대폰에서 “매출 보고서를 만들어”라고 답할 수 있습니다.
- 봇 모니터를 설정하세요. 봇이 응답을 멈추면 알고 싶습니다. VPS의 작은 cron 스크립트가 한 시간에 한 번 Telegram 봇에 신호를 보냅니다. 봇이 답하지 않으면 별도의 채널로 알림을 보냅니다. 이 기능이 없으면 봇이 새벽 4시에 멈춰도 정오까지 알지 못할 수 있습니다.
- hooks를 고려하세요. Hooks는 Claude 이벤트(도구 시작, 메시지 완료)에 반응합니다. Hooks와 Channels를 함께 쓰면 “Claude가 작업 N을 완료했습니다”와 같은 Telegram 알림을 자동으로 보낼 수 있습니다.
Channels를 모든 곳에 덧붙이지는 마세요. 외출 중이거나 카페에 있을 때 작업을 확인하기 좋은 방법입니다. 정말 깊이 생각해야 할 때는 노트북을 열고 자리에 앉으세요. 외출 중이나 이동 중에 “아, 이것도 물어봐야 하는데 노트북을 열어야겠네”라고 생각하지 않도록 Channels가 마음을 가볍게 해 줍니다.
출처
- channels를 사용해 실행 중인 세션에 이벤트 푸시하기 - Claude Code 문서
- GitHub의 anthropics/claude-plugins-official - Telegram, Discord, iMessage, fakechat 플러그인 소스 코드
- Remote Control로 어떤 기기에서든 로컬 세션 이어서 사용하기 - Claude Code 문서
도구 활용에 관한 자료는 Ailoot 문서를 참고하세요.
자세히 보기
2026년 Telegram으로 휴대폰에서 Claude Code 제어하기: 자주 묻는 질문
Telegram 봇이 수동으로 되는데 서비스로는 실패하면 왜 그런가요?
성공한 대화형 실행과 서비스의 Unix 사용자, HOME, 작업 공간, Claude 경로, Bun PATH, 인증 환경을 비교하세요. 같은 서비스 사용자로 설치·설정·페어링해야 하며 root 상태는 별도입니다.
Channels에서 Console 키로 Pro·Max 로그인을 대신할 수 있나요?
네. Console API 키 인증은 지원되며 Console API 과금입니다. 필요한 조직 채널 설정을 확인하고 실행 계정에서 토큰, 페어링, 발신자 허용 목록을 완료하세요.