Claude Code Channels 공개 - Telegram/Discord로 작업 지시 가능
(code.claude.com)- MCP 서버를 통해 외부 메시지·알림·웹훅을 실행 중인 세션에 푸시 가능
- 핵심은 스마트폰에서 Telegram이나 Discord로 Claude Code에 직접 메시지를 보내 작업을 지시하고 결과를 받아볼 수 있다는 것
- 양방향 통신을 지원하여 Claude가 이벤트를 읽고 같은 채널로 응답을 전송하는 채팅 브릿지 형태로 동작
- 세션이 열려 있는 동안만 이벤트가 도착하므로, 상시 운용 시 백그라운드 프로세스나 영구 터미널에서 Claude를 실행해야 함
- Team/Enterprise 플랜은 기본 비활성 상태이며, 관리자가 managed settings에서 명시적으로 활성화 필요
채널 개요
- 채널은 Claude Code 세션에 외부 이벤트를 푸시하는 MCP 서버로, 터미널 앞에 없는 동안에도 CI 결과, 채팅 메시지, 모니터링 이벤트 등에 Claude가 반응 가능
- 실질적인 사용 시나리오: 컴퓨터 앞을 떠나 있어도 휴대폰의 Telegram이나 Discord 앱에서 Claude Code에 직접 명령을 보내고, Claude가 작업을 수행한 뒤 결과를 같은 채팅으로 돌려받는 구조
- 리서치 프리뷰 상태이며, claude.ai 로그인이 필요하고 Console 및 API 키 인증은 미지원
- 이벤트는 세션이 열려 있는 동안만 도착하므로, 상시 운용을 위해서는 백그라운드 프로세스나 영구 터미널에서 실행 필요
지원 채널
- 현재 Telegram과 Discord 두 가지 플러그인을 공식 지원하며, 모든 채널 플러그인은 Bun 런타임 필요
- 설치 흐름은 공통:
/plugin install <name>@claude-plugins-official→/<name>:configure명령으로 인증 정보 설정 →claude --channels plugin:<name>@claude-plugins-official로 재시작 - Telegram은 BotFather에서 발급한 봇 토큰이 필요하고,
/telegram:configure <token>후 페어링 진행- Telegram 설정 가이드: README
- Discord는 Developer Portal에서 Message Content Intent가 활성화된 봇을 만들고,
/discord:configure <token>후 페어링 진행- Discord 설정 가이드: README
- 플러그인이 없는 시스템을 위해 커스텀 채널 직접 빌드도 가능
Quickstart - fakechat 데모
- fakechat은 공식 지원 데모 채널로, localhost에서 채팅 UI를 실행하며 인증이나 외부 서비스 설정 불필요
- 사전 요건: Claude Code가 claude.ai 계정으로 설치·인증된 상태, Bun 설치 완료, Team/Enterprise 사용자는 관리자가 채널 활성화 필요
- 설치 단계:
-
/plugin install fakechat@claude-plugins-official로 플러그인 설치 - Claude Code 종료 후
claude --channels plugin:fakechat@claude-plugins-official로 재시작 -
http://localhost:8787에서 fakechat UI를 열고 메시지 입력
-
- 메시지는
<channel source="fakechat">이벤트로 Claude Code 세션에 도착하고, Claude가 작업 수행 후 reply 도구를 호출해 답변을 채팅 UI에 표시 - 터미널 부재 시 권한 프롬프트가 뜨면 세션이 일시 중지되며, 무인 운용 시
--dangerously-skip-permissions플래그로 우회 가능하나 신뢰할 수 있는 환경에서만 사용 권장 -
--channels에 여러 플러그인을 공백으로 구분하여 동시에 전달 가능
보안
- 모든 승인된 채널 플러그인은 발신자 허용 목록(sender allowlist) 을 유지하며, 등록되지 않은 발신자의 메시지는 자동으로 무시
- Telegram과 Discord는 페어링 방식으로 허용 목록을 구성: 봇에 DM을 보내면 코드가 응답으로 오고, Claude Code 세션에서 해당 코드를 승인하면 ID가 추가
-
.mcp.json에 등록된 것만으로는 메시지 푸시 불가능하며, 반드시--channels플래그에도 명시되어야 함 - 세션별로
--channels로 활성화할 서버를 직접 제어하고, Team/Enterprise 플랜에서는 조직 차원의 channelsEnabled 설정으로 가용성 관리
Enterprise 제어
- 채널 기능은 managed settings의
channelsEnabled설정으로 제어 - Pro/Max(조직 미소속) 플랜은 채널 기본 사용 가능하며, 사용자가 세션별로
--channels로 옵트인 - Team/Enterprise 플랜은 관리자가 명시적으로 활성화하기 전까지 채널 비활성 상태
- 관리자는 claude.ai → Admin settings → Claude Code → Channels에서 활성화하거나, managed settings에서
channelsEnabled를true로 설정 - 비활성 상태에서도 MCP 서버 연결과 도구 사용은 가능하지만 채널 메시지는 도착하지 않으며, 시작 시 경고가 표시
리서치 프리뷰
- 현재 리서치 프리뷰 단계로 점진적 롤아웃 중이며,
--channels플래그 문법과 프로토콜 계약이 피드백에 따라 변경될 수 있음 - 프리뷰 기간 동안
--channels는 Anthropic이 관리하는 허용 목록에 있는 플러그인만 수용 - 허용 목록에 없는 플러그인 전달 시 Claude Code는 정상 시작되나 채널은 등록되지 않고, 시작 알림에 이유가 표시
- 직접 빌드한 채널 테스트 시
--dangerously-load-development-channels플래그 사용 - 이슈나 피드백은 Claude Code GitHub 리포지토리에서 보고 가능
다음 단계
- 플러그인이 없는 시스템을 위한 커스텀 채널 빌드 가이드 제공
- 이벤트 포워딩 대신 로컬 세션을 모바일에서 제어하는 Remote Control 기능
- 푸시 이벤트 대신 타이머 기반 폴링을 수행하는 Scheduled Tasks 기능
그런데 한 세션에서만 채팅이 오래도록 유지된다면 context rot, lost-in-the-middle 같은 문제가 따라 올텐데.. 사용자가 주기적으로 /clean 해줘야 하는걸까요? 아니면 메모리 기능 달아두고 세션을 자동으로 갈아끼워 주려나..?