채널로 실행 중인 세션에 이벤트 밀어 넣기

채널로 실행 중인 세션에 이벤트 밀어 넣기

채널은 MCP 서버가 실행 중인 Claude Code 세션에 이벤트를 밀어 넣어, 터미널에서 자리를 비웠을 때 일어나는 일에 Claude가 반응하게 하는 기능이에요. CI 결과, 모니터링 알림, 채팅 메시지를 전달해서 말이죠. 채널은 양방향이 될 수 있어 Claude가 이벤트를 읽고 같은 채널로 답신해요(채팅 브리지처럼). 플러그인으로 설치하고 자신의 자격 증명으로 구성해요.

출처: 공식문서

본문

참고: 채널은 리서치 프리뷰예요. claude.ai 또는 Console API 키를 통한 Anthropic 인증이 필요하고, Amazon Bedrock·Google Cloud's Agent Platform·Microsoft Foundry에서는 제공되지 않아요. Team·Enterprise 조직은 명시적으로 활성화해야 해요.

채널은 이벤트가 세션을 연 상태에서만 도착해요. 그래서 항상 켜짐 설정을 원하면 Claude를 백그라운드 프로세스나 지속 터미널에서 실행해야 해요. 새 클라우드 세션을 띄우거나 폴링을 기다리는 통합과 달리, 이미 열어 둔 세션에 이벤트가 도착해요.

채널을 플러그인으로 설치하고 자신의 자격 증명으로 구성해요. 리서치 프리뷰에는 Telegram, Discord, iMessage가 포함돼 있어요. Claude가 채널로 답신하면 터미널에는 인바운드 메시지가 보이지만 답신 텍스트는 안 보여요. 터미널은 도구 호출과 "sent" 같은 확인만 표시하고, 실제 답신은 다른 플랫폼에 나타나요.

Team·Enterprise·Console 조직을 관리한다면 조직의 채널 활성화를, 자체 채널 구축은 Channels reference를 보세요.

지원 채널

각 지원 채널은 Bun이 필요한 플러그인이에요. 실제 플랫폼 연결 전에 플러그인 흐름을 손으로 시험해 보려면 fakechat 퀵스타트를 해 보세요.

Telegram

  1. Telegram에서 BotFather를 열고 /newbot을 보내요. 표시 이름과 bot으로 끝나는 고유 사용자 이름을 주고, 반환된 토큰을 복사해요.
  2. Claude Code에서 /plugin install telegram@claude-plugins-official 실행. Marketplace "claude-plugins-official" not found/plugin marketplace add anthropics/claude-plugins-official 후 재시도.
  3. BotFather 토큰으로 구성 명령 실행: /telegram:configure <token>. ~/.claude/channels/telegram/.env에 저장. 클로드 Code 시작 전에 셸 환경에 TELEGRAM_BOT_TOKEN을 설정할 수도 있어요.
  4. 종료 후 채널 플래그로 재시작: claude --channels plugin:telegram@claude-plugins-official
  5. Telegram에서 봇에 아무 메시지를 보내면 페어링 코드가 답신돼요. Claude Code에서 /telegram:access pair <code> 실행 후 /telegram:access policy allowlist로 접근을 잠가요.

Discord

  1. Discord Developer Portal에서 New Application을 만들고, Bot 섹션에서 토큰을 리셋·복사해요.
  2. 봇 설정에서 Privileged Gateway IntentsMessage Content Intent를 활성화해요.
  3. OAuth2 > URL Generator에서 bot 스코프를 선택하고 View Channels, Send Messages, Send Messages in Threads, Read Message History, Attach Files, Add Reactions 권한을 켜고 생성된 URL로 봇을 서버에 초대해요.
  4. /plugin install discord@claude-plugins-official
  5. /discord:configure <token>으로 토큰 구성. ~/.claude/channels/discord/.env에 저장.
  6. claude --channels plugin:discord@claude-plugins-official로 재시작.
  7. Discord에서 봇에 DM. 페어링 코드로 /discord:access pair <code> 실행 후 /discord:access policy allowlist.

iMessage

iMessage 채널은 Messages 데이터베이스를 직접 읽고 AppleScript로 답신을 보내요. macOS가 필요하고 봇 토큰이나 외부 서비스가 없어요.

  1. ~/Library/Messages/chat.db는 macOS가 보호하므로, 첫 읽기 때 macOS 권한 프롬프트가 뜨면 Allow를 클릭해요. 프롬프트가 안 뜨거나 거부했다면 시스템 설정 > 개인정보 및 보안 > 전체 디스크 접근에서 터미널을 수동으로 추가하세요. 없으면 서버가 authorization denied로 즉시 종료돼요.
  2. /plugin install imessage@claude-plugins-official
  3. claude --channels plugin:imessage@claude-plugins-official로 재시작.
  4. Apple ID에 로그인한 어느 기기에서든 Messages로 자신에게 메시지 보내기. 셀프챗은 접근 제어를 통과해 즉시 도달해요. 첫 답신은 macOS 자동화 프롬프트(Terminal이 Messages를 제어할 수 있는지)가 뜨니 OK를 클릭해요.
  5. 다른 연락처 허용: /imessage:access allow +155****4567. 핸들은 +country 형식 전화번호 또는 [email protected] 같은 Apple ID 이메일.

퀵스타트

Fakechat은 인증할 것도, 외부 서비스도 없는 공식 지원 데모 채널로, localhost에서 채팅 UI를 실행해요. 설치·활성화 후 브라우저에서 입력하면 메시지가 Claude Code 세션에 도착하고, Claude가 답하면 브라우저에 다시 나타나요.

준비물: Claude Code 설치·인증(claude.ai 계정 또는 Console API 키), Bun 설치(bun --version 확인), Team·Enterprise·관리 Console 조직이면 관리자가 채널을 활성화해야 함.

  1. /plugin install fakechat@claude-plugins-official
  2. 종료 후 claude --channels plugin:fakechat@claude-plugins-official로 재시작. --channels에 여러 플러그인을 공백 구분으로 넘길 수 있어요.
  3. http://localhost:8787에서 fakechat UI를 열고 "what's in my working directory?" 같은 메시지 입력. 터미널에 ← fakechat · web: what's in my working directory? 같은 인바운드 채널 줄이 나타나요. Claude가 작업을 하고 fakechat의 reply 도구를 호출해요. 첫 답신에 권한을 물으면 승인하고, 답이 채팅 UI에 나타나요.

자리를 비운 사이 Claude가 권한 프롬프트에 부딪히면 세션이 응답까지 멈춰요. 권한 릴레이 능력을 선언한 채널 서버는 이 프롬프트를 원격으로 전달해 승인·거부할 수 있게 해요. 무인 사용에는 --dangerously-skip-permissions가 대부분 프롬프트를 우회하지만 신뢰하는 환경에서만 쓰세요. -p 비인터랙티브 모드에서는 다중 선택 질문·플랜 모드 승인 같은 터미널 입력이 필요한 도구가 비활성화돼 세션이 입력 대기로 막히지 않아요.

보안

승인된 채널 플러그인은 발신자 allowlist를 유지해, 추가한 ID만 메시지를 밀어 넣고 나머지는 조용히 버려요. Telegram·Discord는 페어링으로 목록을 부트스트랩하고, iMessage는 셀프챗이 자동으로 통과하며 다른 연락처는 /imessage:access allow로 추가해요. 그 위에 --channels로 세션마다 서버를 제어하고, 조직이 channelsEnabled로 가용성을 제어해요. .mcp.json에 있다고 메시지를 밀어 넣는 게 아니라, 서버도 --channels에 이름을 올려야 해요. allowlist는 권한 릴레이도 게이트하므로, 채널로 답신할 수 있는 사람은 세션의 도구 사용을 승인·거부할 수 있어요. 그 권한을 신뢰하는 allowlist 발신자에게만 주세요.

엔터프라이즈 컨트롤

관리자는 사용자가 오버라이드할 수 없는 두 관리 설정으로 가용성을 제어해요. 기본값은 인증 방식에 따라 달라요. claude.ai Team·Enterprise는 Owner가 활성화할 때까지 채널이 차단되고, Console + API 키 인증은 기본 허용. 어떤 경우든 사용자가 --channels로 세션 옵트인할 때까지 채널은 실행되지 않아요.

설정 용도
channelsEnabled 마스터 스위치. true여야 채널이 메시지를 전달. 꺼지면 개발 플래그 포함 모든 채널 차단
allowedChannelPlugins 채널이 활성화된 뒤 어떤 플러그인이 등록 가능한지. 설정 시 Anthropic 유지 목록 대체

Pro·Max 사용자(조직 없음)는 이 검사를 완전히 건너뛰어요.

조직의 채널 활성화: claude.ai → Admin settings → Claude Code → Channels에서 활성화(Owner 역할 필요)하거나 관리 설정에서 channelsEnabledtrue로 설정. 활성화되면 사용자가 --channels로 채널 서버를 개별 세션에 옵트인할 수 있어요. 비활성·미설정이면 MCP 서버는 여전히 연결되고 도구는 동작하지만 채널 메시지가 도착하지 않아요.

실행 가능한 채널 플러그인 제한: 기본적으로 Anthropic 유지 allowlist의 모든 플러그인이 채널로 등록될 수 있어요. Team·Enterprise 관리자는 allowedChannelPlugins로 그 목록을 교체해 어떤 공식 플러그인이 허용될지 제한하거나 내부 마켓플레이스 채널을 승인할 수 있어요.

{
  "channelsEnabled": true,
  "allowedChannelPlugins": [
    { "marketplace": "claude-plugins-official", "plugin": "telegram" },
    { "marketplace": "claude-plugins-official", "plugin": "discord" },
    { "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }
  ]
}

빈 배열을 설정하면 allowlist의 모든 채널 플러그인이 차단되지만, --dangerously-load-development-channels는 로컬 테스트용으로 그 차단을 우회할 수 있어요. 개발 플래그까지 완전히 차단하려면 channelsEnabled를 미설정으로 두세요. 이 설정은 channelsEnabled: true가 필요해요.

리서치 프리뷰

채널은 리서치 프리뷰 기능으로, 가용성이 점진적으로 배포되며 --channels 플래그 문법·프로토콜 계약이 피드백에 따라 바뀔 수 있어요. 프리뷰 동안 --channels·--dangerously-load-development-channelsclaude --help에 나타나지 않지만 동작해요. 프리뷰 동안 --channels는 Anthropic 유지 allowlist 또는 조직 allowlist의 플러그인만 받아요. 구축 중인 채널을 테스트하려면 --dangerously-load-development-channels를 쓰세요. 문제·피드백은 Claude Code GitHub 리포지토리에.

채널 비교

기능 하는 일 좋은 용도
웹의 Claude Code GitHub에서 클론된 새 클라우드 샌드박스에서 작업 실행 나중에 확인하는 자체 포함 비동기 작업 위임
Slack의 Claude 채널·스레드의 @Claude 맨션에서 웹 세션 생성 팀 대화 컨텍스트에서 바로 작업 시작
표준 MCP 서버 Claude가 작업 중 쿼리, 세션에 밀어 넣는 것 없음 시스템을 온디맨드로 읽거나 쿼리하는 접근 제공
Remote Control claude.ai·Claude 모바일 앱에서 로컬 세션 구동 책상에서 떨어져 있을 때 진행 중 세션 조종

채널은 그 목록의 빈틈을 채워 비-Claude 소스의 이벤트를 이미 실행 중인 로컬 세션에 밀어 넣어요. 채팅 브리지(전화로 Telegram·Discord·iMessage로 물어보면 실제 파일로 작업하는 동안 같은 채팅으로 답), 웹훅 리시버(CI·에러 트래커·배포 파이프라인의 웹훅이 이미 파일을 열고 뭘 디버깅 중인지 기억하는 곳에 도착)로 쓸 수 있어요.

더 알아보기