Claude Code는 터미널 기반 에이전틱 코딩 도구로, 개발자가 복잡한 리팩터링이나 테스트 실행을 맡기면 자율적으로 코드베이스를 탐색하고 작업을 수행한다. 문제는 이 모든 과정이 터미널 앞에 앉아 있어야만 가능했다는 점이다. 긴 빌드가 돌아가는 동안 자리를 비우면 권한 프롬프트에서 세션이 멈추고, 중간에 새로운 맥락을 전달할 방법도 없었다.
2026년 3월 20일, Anthropic은 이 문제를 정면으로 해결하는 Claude Code Channels를 리서치 프리뷰로 공개했다. Channels는 MCP(Model Context Protocol) 서버를 매개로 텔레그램이나 디스코드 같은 메시징 앱에서 실행 중인 Claude Code 세션에 메시지를 보내고, Claude가 작업을 처리한 뒤 같은 채널로 응답을 돌려보내는 양방향 통신 구조다.
이 기능이 중요한 이유는 개발자의 작업 패턴 자체가 바뀌기 때문이다. 리팩터링을 시작하고 외출한 뒤 텔레그램으로 진행 상황을 확인하거나, 출퇴근길에 빌드 실패 알림을 받고 바로 수정 지시를 보내는 흐름이 가능해진다. 이전까지 이런 워크플로는 OpenClaw 같은 외부 오픈소스 에이전트를 자체 서버에 구축해야만 가능했는데, Channels가 그 핵심 기능을 Claude Code 안에 네이티브로 탑재한 셈이다.
이 문서에서는 Channels의 기술 구조, 텔레그램·디스코드 설정 절차, 보안 메커니즘, OpenClaw와의 비교, 엔터프라이즈 설정, 현재 제약사항까지 개발자가 도입 판단에 필요한 정보를 모두 다룬다.
1. Channels의 기술 구조와 작동 원리
Channels의 핵심은 MCP 서버가 외부 메시징 플랫폼과 Claude Code 세션 사이에서 양방향 브릿지 역할을 한다는 점이다. Anthropic이 2024년에 오픈소스로 공개하고 이후 Linux Foundation에 기부한 MCP는 AI 모델이 외부 도구·데이터와 표준화된 방식으로 통신하는 프로토콜이다. Channels는 이 MCP 위에 claude/channel이라는 실험적 capability를 추가해 이벤트 푸시를 가능하게 만들었다.
1.1 메시지 흐름
- 개발자가 claude --channels plugin:telegram@claude-plugins-official 명령으로 Claude Code를 시작하면, Bun 런타임 위에서 텔레그램 플러그인이 MCP 서버로 실행된다
- 이 MCP 서버는 텔레그램 봇 API를 폴링하면서 새 메시지를 감시한다
- 개발자가 텔레그램에서 봇에게 DM을 보내면, 플러그인이 해당 메시지를 notifications/claude/channel 이벤트로 변환해 Claude Code 세션에 주입한다
- Claude는 이벤트를 읽고, 코드 실행·테스트·파일 수정 등 필요한 작업을 처리한 뒤, 플러그인이 노출한 reply 도구를 호출해 텔레그램으로 응답을 돌려보낸다
이 과정에서 Claude Code 터미널에는 인바운드 메시지와 도구 호출 확인만 표시되고, 실제 응답 텍스트는 텔레그램 쪽에 나타난다. 디스코드도 동일한 구조로 작동하며, 봇 생성과 토큰 설정 과정만 플랫폼에 맞게 달라진다.
1.2 핵심 기술 요구사항
| 항목 | 요구사항 |
|---|---|
| Claude Code 버전 | v2.1.80 이상 |
| 런타임 | Bun (사전 빌드 플러그인 기준) |
| 인증 | claude.ai 로그인 필수 (Console, API 키 인증 미지원) |
| 플랜 | Pro, Max, Team, Enterprise |
| 세션 상태 | 세션이 열려 있어야 메시지 수신 가능 |
핵심 포인트: Channels는 클라우드 서비스가 아니다. Claude Code는 여전히 로컬 머신에서 실행되며, 채널은 메시징 앱과 로컬 세션을 잇는 브릿지일 뿐이다. 터미널을 닫으면 채널도 꺼진다.
2. 텔레그램·디스코드 설정 절차
Channels를 실제로 사용하려면 플랫폼별 봇을 생성하고, Claude Code에 플러그인을 설치한 뒤, 페어링 코드로 계정을 연결하는 과정을 거친다.
2.1 텔레그램 설정
- 텔레그램에서 BotFather를 열고 /newbot 명령을 보내 봇을 생성한다. 봇 이름과 bot으로 끝나는 고유 사용자명을 지정하면 봇 토큰을 발급받는다
- Claude Code 세션에서 /plugin install telegram@claude-plugins-official 명령으로 플러그인을 설치한다. 플러그인을 찾을 수 없다는 메시지가 나오면 /plugin marketplace add anthropics/claude-plugins-official을 먼저 실행한다
- /telegram:configure 명령으로 봇 토큰을 저장한다. 토큰은 ~/.claude/channels/telegram/.env에 기록되며, 셸 환경변수 TELEGRAM_BOT_TOKEN으로도 설정 가능하다
- Claude Code를 종료하고 claude --channels plugin:telegram@claude-plugins-official 명령으로 재시작한다. 이 시점부터 텔레그램 플러그인이 봇 메시지를 폴링하기 시작한다
- 텔레그램에서 봇에게 아무 메시지를 보내면 페어링 코드가 돌아온다. Claude Code에서 /telegram:access pair 를 실행해 계정을 연결하고, /telegram:access policy allowlist로 발신자 허용 목록을 잠근다
2.2 디스코드 설정
- Discord Developer Portal에서 새 애플리케이션을 만들고, Bot 섹션에서 토큰을 복사한다
- Privileged Gateway Intents에서 Message Content Intent를 반드시 활성화한다
- OAuth2 URL Generator에서 bot 스코프를 선택하고 View Channels, Send Messages, Send Messages in Threads, Read Message History, Attach Files, Add Reactions 권한을 부여한 뒤, 생성된 URL로 봇을 서버에 초대한다
- Claude Code에서 /plugin install discord@claude-plugins-official 실행 후 /discord:configure 으로 토큰을 저장한다
- claude --channels plugin:discord@claude-plugins-official로 재시작하고, 디스코드에서 봇에게 DM을 보내 페어링 코드를 받은 뒤 /discord:access pair 로 연결한다
| 구분 | 텔레그램 | 디스코드 |
|---|---|---|
| 봇 생성 | BotFather DM으로 즉시 생성 | Developer Portal에서 애플리케이션 생성 필요 |
| 추가 설정 | 없음 | Message Content Intent 활성화 필수 |
| 봇 초대 | 사용자가 봇 검색 후 DM | OAuth2 URL 생성 후 서버에 초대 |
| 지원 기능 | DM, 그룹, 사진 전송, 타이핑 표시 | DM, 서버 채널, 양방향 메시징 |
| 봇 API 난이도 | 매우 낮음 | 보통 |
두 플랫폼 모두 --channels 플래그에 여러 플러그인을 공백으로 구분해 동시에 활성화할 수 있다.
3. fakechat으로 로컬 테스트
Channels의 작동 방식을 외부 서비스 없이 먼저 확인하고 싶다면, Anthropic이 공식 제공하는 데모 채널 fakechat을 사용할 수 있다. fakechat은 localhost:8787에서 브라우저 기반 채팅 UI를 띄우며, 별도 인증이나 외부 서비스 설정 없이 채널 이벤트의 전체 흐름을 체험할 수 있다.
설정 과정은 다음과 같다. Claude Code에서 /plugin install fakechat@claude-plugins-official로 플러그인을 설치한 뒤, claude --channels plugin:fakechat@claude-plugins-official로 재시작한다. 브라우저에서 http://localhost:8787을 열고 메시지를 입력하면, Claude Code 세션에 ` 이벤트로 도착하고 Claude가 작업을 처리한 뒤 채팅 UI에 응답을 표시한다.
fakechat은 채널의 양방향 통신 구조를 이해하는 데 유용하며, 텔레그램이나 디스코드 봇을 설정하기 전 파일럿 테스트 용도로 적합하다.
4. 보안 구조와 발신자 허용 목록
Channels는 외부 메시지를 Claude Code 세션에 직접 주입하는 구조이므로, 보안이 느슨하면 프롬프트 인젝션 벡터가 된다. Anthropic은 이를 방지하기 위해 다층 보안을 적용했다.
4.1 발신자 허용 목록(Allowlist)
- 텔레그램·디스코드 플러그인은 모두 발신자 ID 기반 허용 목록을 유지한다
- 허용 목록에 없는 발신자의 메시지는 자동으로 무시된다
- 허용 목록 등록은 페어링 과정을 통해서만 가능하다. 봇에게 메시지를 보내면 페어링 코드가 발급되고, Claude Code 세션에서 코드를 승인해야 해당 발신자 ID가 추가된다
- 보안 게이트는 채팅방(room) ID가 아닌 발신자 개인 ID를 기준으로 작동한다. 그룹 채팅에서 방 ID로 게이트를 걸면 같은 방에 있는 누구나 메시지를 주입할 수 있기 때문이다
4.2 세션 수준 제어
MCP 서버가 .mcp.json에 등록되어 있더라도 --channels 플래그에 명시적으로 이름을 넣지 않으면 채널 메시지를 전달하지 않는다. 매 세션마다 어떤 서버를 채널로 활성화할지 개발자가 직접 결정하는 구조다.
4.3 리서치 프리뷰 기간 제한
--channels 플래그는 현재 Anthropic이 관리하는 승인 목록(allowlist)에 포함된 플러그인만 수락한다. claude-plugins-official 저장소의 플러그인이 승인된 세트이며, 목록에 없는 플러그인을 전달하면 Claude Code는 정상 시작되지만 채널이 등록되지 않는다. 자체 개발 채널을 테스트하려면 --dangerously-load-development-channels 플래그를 사용해야 한다.
핵심 포인트: 채널 보안은 발신자 허용 목록, 세션별 명시적 활성화, 플러그인 승인 목록의 세 겹으로 구성된다. 허용 목록 없는 채널은 프롬프트 인젝션 경로가 되므로, 커스텀 채널을 만들 때 반드시 발신자 체크 로직을 구현해야 한다.
5. 엔터프라이즈 및 팀 플랜 설정
Channels의 사용 가능 여부는 플랜 유형에 따라 기본값이 다르다.
| 플랜 | 기본 상태 |
|---|---|
| Pro / Max (조직 미소속) | 사용 가능. 사용자가 --channels로 세션별 활성화 |
| Team / Enterprise | 비활성. 관리자가 명시적으로 활성화해야 사용 가능 |
Team·Enterprise 조직에서는 관리자가 claude.ai → Admin settings → Claude Code → Channels에서 활성화하거나, managed settings에서 channelsEnabled를 true로 설정해야 한다. 이 설정이 꺼져 있으면 MCP 서버 자체는 연결되고 도구도 작동하지만, 채널 메시지는 전달되지 않는다. 시작 시 경고 메시지가 표시되어 관리자에게 설정 활성화를 요청하라고 안내한다.
조직 관리자 입장에서 이 구조는 합리적이다. 외부 메시징 플랫폼과 연결된 채널이 내부 코드베이스에 접근하는 세션에 메시지를 주입할 수 있으므로, 보안 검토 없이 일괄 활성화하는 것은 위험하다. 관리자가 보안 정책을 확인한 뒤 명시적으로 허용하는 옵트인 방식이 엔터프라이즈 환경에 적합하다.
6. OpenClaw와의 비교
Channels 출시 소식에 개발자 커뮤니티의 반응이 집중된 이유는 OpenClaw와의 직접 비교가 불가피하기 때문이다. OpenClaw(구 Clawdbot)는 오스트리아 개발자 Peter Steinberger가 2025년 11월에 공개한 오픈소스 AI 에이전트로, 텔레그램·디스코드·WhatsApp·iMessage 등 메시징 앱에서 AI에게 24시간 지시를 내릴 수 있다는 점이 핵심 매력이었다.
| 비교 항목 | Claude Code Channels | OpenClaw |
|---|---|---|
| 설치 복잡도 | 플러그인 설치 + --channels 플래그 | Node.js 22+, WebSocket 게이트웨이, 전용 서버 또는 Mac Mini 필요 |
| 지원 플랫폼 | 텔레그램, 디스코드 (리서치 프리뷰) | 텔레그램, 디스코드, WhatsApp, iMessage, Slack 등 |
| 보안 모델 | Anthropic 관리 허용 목록 + 발신자 ID 기반 게이트 | 커뮤니티 유지 보안, 사용자 자체 관리 |
| 하드웨어 요구 | 기존 개발 머신에서 실행 | 상시 가동용 전용 하드웨어 필요 (Mac Mini 등) |
| 확장성 | MCP 기반으로 커뮤니티가 커넥터 개발 가능 | 700개 이상의 서드파티 패키지 이미 존재 |
| 비용 | Claude 구독 필요 (Pro/Max/Enterprise) | 오픈소스 무료 (LLM API 비용 별도) |
| 상시 가동 | 세션이 열려 있어야 함 (백그라운드 프로세스로 유지 가능) | 전용 서버에서 24시간 상시 가동 설계 |
Reddit과 X에서의 반응은 크게 두 갈래였다. VentureBeat 기사에서 인용된 한 사용자는 "Claude가 이 업데이트로 OpenClaw를 죽였다. 더 이상 Mac Mini를 살 필요가 없다"고 평가했다. 반면 일부 사용자는 Anthropic이 OpenClaw의 핵심 기능을 자체 제품에 통합하면서도 OpenClaw 사용자를 제한한 점에 대해 불만을 표시했다. Hacker News에서는 텔레그램과 디스코드를 선택한 이유에 대해 "텔레그램의 봇 API가 모든 메시징 플랫폼 중 가장 친화적"이라는 분석이 많은 지지를 받았다.
OpenClaw가 여전히 우위에 있는 영역은 플랫폼 다양성과 상시 가동 설계다. WhatsApp·iMessage·Slack 연동이 필요하거나, 세션 종료 없이 24시간 에이전트를 운영해야 하는 시나리오에서는 OpenClaw가 더 적합하다. 반면, Anthropic 브랜드의 보안 신뢰성과 설치 편의성을 중시하는 개발자에게는 Channels가 진입 장벽을 크게 낮춘다.
7. 실제 사용 시나리오
Channels가 실질적인 가치를 발휘하는 대표적인 상황을 정리하면 다음과 같다.
7.1 비동기 코딩 워크플로
- 대규모 리팩터링이나 테스트 스위트를 실행한 뒤 자리를 비우고, 텔레그램으로 완료 알림을 받는다
- 출퇴근 중 빌드 실패 알림이 오면 텔레그램에서 바로 수정 지시를 보낸다
- CI 결과, 모니터링 이벤트, 웹훅을 채널로 포워딩해 Claude가 자동으로 대응하게 한다
7.2 경량 인시던트 대응
- 야간 장애 알림을 받고, 노트북을 열지 않고도 텔레그램에서 Claude에게 로그 분석과 원인 조사를 지시한다
- Claude가 분석 결과를 텔레그램으로 보내오면, 긴급 조치 여부를 판단한 뒤 후속 지시를 내린다
7.3 코드 리뷰 원격 수행
- 폰에서 리뷰 지시를 보내면 Claude가 해당 파일을 분석하고 요약을 텔레그램으로 전달한다
- 데스크에 돌아오기 전에 리뷰 피드백을 미리 파악할 수 있다
다만, Claude가 권한 프롬프트(permission prompt)에 도달하면 세션이 멈추고 로컬에서 직접 승인해야 한다. 원격으로 권한을 승인하는 기능은 아직 지원되지 않는다. 완전 무인 운영이 필요한 환경에서는 --dangerously-skip-permissions 플래그를 사용할 수 있지만, 이는 신뢰할 수 있는 환경에서만 사용해야 한다.
8. 커스텀 채널 개발
Anthropic은 텔레그램·디스코드 외에 자체 시스템을 위한 채널을 직접 만들 수 있도록 Channels Reference 문서를 함께 공개했다. 커스텀 채널을 만들려면 @modelcontextprotocol/sdk 패키지를 사용해 MCP 서버를 작성하고, 세 가지 조건을 충족해야 한다.
첫째, Server 생성자의 capabilities에 experimental 필드 아래 claude/channel 객체를 선언해 알림 리스너를 등록한다. 둘째, notifications/claude/channel 메서드로 이벤트를 발행한다. 이벤트에는 content(이벤트 본문)와 meta(라우팅 컨텍스트용 키-값 쌍)를 담는다. 셋째, stdio 트랜스포트로 연결한다(Claude Code가 채널 서버를 서브프로세스로 실행하기 때문이다).
양방향 채널을 만들려면 capabilities.tools를 추가로 선언하고, reply 같은 MCP 도구를 등록해 Claude가 외부로 메시지를 보낼 수 있게 한다. Bun, Node.js, Deno 모두 런타임으로 사용 가능하다.
리서치 프리뷰 기간에는 승인 목록에 포함되지 않은 커스텀 채널을 테스트하려면 --dangerously-load-development-channels 플래그가 필요하며, 정식 배포를 원하면 공식 마켓플레이스에 보안 리뷰를 거쳐 제출해야 한다.
9. 현재 제약사항과 향후 전망
Channels는 리서치 프리뷰 단계이므로 몇 가지 중요한 제약이 있다.
9.1 주요 제약사항
- 세션 종속: 세션이 닫히면 메시지가 수신되지 않는다. 오프라인 동안 전송된 메시지는 큐에 쌓이지 않고 사라진다. 상시 수신이 필요하면 tmux나 백그라운드 프로세스로 세션을 유지해야 한다
- 권한 프롬프트 원격 승인 불가: Claude가 파일 수정이나 명령 실행 권한을 요청하면 터미널에서 직접 승인해야 한다. 원격에서 이를 처리할 방법이 아직 없다
- 인증 제한: claude.ai 로그인만 지원하며, Console이나 API 키 인증은 사용할 수 없다
- 프로토콜 변경 가능성: --channels 플래그 문법과 프로토콜 계약이 피드백에 따라 변경될 수 있으므로, 정확한 명령 구문에 의존하는 워크플로를 프로덕션에 배포하는 것은 위험하다
- 텔레그램 메시지 히스토리 미지원: 텔레그램 Bot API는 메시지 히스토리를 노출하지 않아, 세션 시작 전에 전송된 메시지를 조회할 수 없다
9.2 예상되는 개선 방향
커뮤니티와 분석가들이 공통으로 언급하는 다음 단계는 클라우드 호스팅 세션, 원격 권한 승인, Slack·WhatsApp 공식 지원, 그리고 프로토콜 안정화 후 정식 출시(GA) 등이다. MCP 기반이므로 공식 지원 전에도 커뮤니티가 Slack이나 WhatsApp용 커넥터를 직접 개발하는 것이 기술적으로 가능하다.
10. 마무리
위에서 살펴본 Claude Code Channels의 핵심 내용을 정리하면 다음과 같습니다.
핵심 요약:
- Channels는 MCP 서버를 통해 텔레그램·디스코드와 Claude Code 세션을 양방향으로 연결하는 기능이다
- Claude Code v2.1.80 이상, Bun 런타임, claude.ai 로그인이 필수 요구사항이다
- 발신자 허용 목록, 세션별 명시적 활성화, 플러그인 승인 목록의 3중 보안 구조를 갖추고 있다
- Team·Enterprise 플랜에서는 관리자가 channelsEnabled` 설정을 명시적으로 활성화해야 한다
- OpenClaw 대비 설치 편의성과 보안 모델에서 우위가 있으나, 플랫폼 다양성과 상시 가동 설계에서는 OpenClaw가 앞선다
- 리서치 프리뷰 단계이므로 프로토콜과 명령 구문이 변경될 수 있다
도입 여부를 판단할 때 가장 중요한 기준은 두 가지다. 첫째, 현재 워크플로에서 터미널을 떠나 있는 동안 Claude Code 세션과 소통해야 하는 빈도가 얼마나 높은지, 둘째, 리서치 프리뷰의 제약(세션 종속, 원격 권한 승인 불가)이 자신의 사용 패턴에서 수용 가능한 수준인지를 검토하면 된다.