실행 중인 세션에 채널을 통해 이벤트 푸시하기

6 days ago 8

  • Claude Code의 Channels는 외부 시스템의 메시지나 웹훅을 실행 중인 세션으로 직접 전달해 Claude가 즉시 반응하도록 하는 기능
  • MCP 서버를 통해 이벤트를 주고받으며, 세션이 열려 있는 동안만 이벤트가 도착하므로 지속 실행 환경이 필요
  • TelegramDiscord가 연구 프리뷰로 기본 지원되며, claude.ai 로그인이 필수이고 API 키 인증은 불가
  • 각 채널은 Bun 기반 플러그인 형태로 제공되며, fakechat을 이용해 로컬 테스트 가능
  • 이 기능은 외부 이벤트를 로컬 세션으로 직접 연결해 Slack, MCP, Remote Control 등 기존 기능의 공백을 메우는 역할

실행 중인 세션에 이벤트를 푸시하는 Channels 기능

  • Claude Code의 Channels는 외부 시스템에서 발생한 메시지, 알림, 웹훅 등을 실행 중인 세션으로 직접 전달해 Claude가 즉시 반응하도록 하는 기능
  • MCP 서버를 통해 이벤트를 전달하며, Claude는 이를 읽고 같은 채널을 통해 응답 가능
  • 이벤트는 세션이 열려 있는 동안만 도착하므로, 지속적인 사용을 위해서는 백그라운드 프로세스나 지속 터미널에서 실행 필요
  • TelegramDiscord가 연구 프리뷰 단계에서 기본 지원되며, claude.ai 로그인이 필수
  • Console이나 API 키 인증은 지원되지 않음, Team/Enterprise 조직은 관리자가 명시적으로 기능을 활성화해야 함

지원 채널

  • 각 채널은 Bun 기반 플러그인으로 제공되며, fakechat을 통해 로컬에서 테스트 가능
  • 지원 채널: Telegram, Discord
  • Telegram 설정 절차

    • BotFather에서 /newbot 명령으로 봇 생성 후 토큰 복사
    • Claude Code에서 /plugin install telegram@claude-plugins-official 명령으로 플러그인 설치
    • /telegram:configure <token> 명령으로 토큰 설정
    • claude --channels plugin:telegram@claude-plugins-official 명령으로 채널 활성화
    • Telegram에서 봇에게 메시지를 보내 페어링 코드를 받고 /telegram:access pair <code>로 연결
    • /telegram:access policy allowlist로 접근 허용 계정 제한
  • Discord 설정 절차

    • Discord Developer Portal에서 새 애플리케이션 생성 후 봇 토큰 복사
    • Message Content Intent 활성화
    • OAuth2 > URL Generator에서 bot 스코프와 메시지 관련 권한 부여 후 서버에 초대
    • /plugin install discord@claude-plugins-official로 플러그인 설치
    • /discord:configure <token>으로 토큰 설정
    • claude --channels plugin:discord@claude-plugins-official로 채널 실행
    • 봇에게 DM을 보내 페어링 코드 수신 후 /discord:access pair <code>로 연결
    • /discord:access policy allowlist로 접근 제한
    • 직접 플러그인이 없는 시스템을 위해 사용자 정의 채널을 개발할 수도 있음

빠른 시작

  • Fakechat은 인증이나 외부 설정 없이 로컬에서 실행 가능한 공식 데모 채널
  • Claude Code와 Bun이 설치되어 있어야 하며, Team/Enterprise 사용자는 관리자가 채널 기능을 활성화해야 함
  • /plugin install fakechat@claude-plugins-official로 설치 후 claude --channels plugin:fakechat@claude-plugins-official로 실행
  • 브라우저에서 http://localhost:8787 접속 후 메시지를 입력하면 Claude Code 세션으로 전달
  • Claude의 응답은 브라우저 UI에 표시되며, 권한 요청이 발생하면 터미널에서 승인 필요
  • 무인 실행 시 --dangerously-skip-permissions 옵션으로 권한 확인을 생략 가능 (신뢰 환경에서만 사용 권장)

보안

  • 각 채널 플러그인은 송신자 허용 목록(allowlist) 을 유지하며, 등록된 ID만 메시지를 전송 가능
  • Telegram과 Discord는 페어링 코드를 통해 허용 목록을 초기화
    1. 봇에게 메시지 전송
    2. 봇이 페어링 코드 응답
    3. Claude Code 세션에서 코드 승인
    4. 송신자 ID가 허용 목록에 추가
  • 세션 실행 시 --channels로 활성화할 서버를 지정해야 하며, Team/Enterprise 플랜에서는 조직 설정(channelsEnabled)으로 사용 여부를 제어

엔터프라이즈 제어

  • channelsEnabled 설정으로 채널 기능을 관리
    • Pro/Max (개인 사용자): 기본적으로 사용 가능, 세션별 --channels로 활성화
    • Team/Enterprise: 기본 비활성화, 관리자가 명시적으로 활성화해야 함
  • 조직에서 채널 활성화

    • claude.ai → Admin settings → Claude Code → Channels 경로에서 설정 가능
    • 또는 관리 설정에서 channelsEnabled: true로 지정
    • 활성화되면 사용자는 --channels 옵션으로 개별 세션에 채널 서버를 추가 가능
    • 비활성 상태에서는 MCP 서버 연결은 유지되지만 채널 메시지는 전달되지 않음

연구 프리뷰

  • Channels는 연구 프리뷰 기능으로, 점진적으로 배포 중
  • --channels 플래그 구문과 프로토콜은 피드백에 따라 변경될 수 있음
  • 현재는 Anthropic이 관리하는 허용 목록의 플러그인만 사용 가능
  • 비공식 플러그인을 지정하면 Claude Code는 정상 실행되지만 채널은 등록되지 않음
  • 개발 중인 채널을 테스트하려면 --dangerously-load-development-channels 옵션 사용
  • 문제나 피드백은 Claude Code GitHub 저장소에 제출 가능

Channels와 다른 기능 비교

기능 역할 적합한 용도
Claude Code on the web GitHub에서 복제된 새 클라우드 샌드박스에서 작업 실행 비동기적, 독립적인 작업 위임
Claude in Slack 채널이나 스레드에서 @Claude 호출 시 웹 세션 생성 팀 대화 맥락에서 즉시 작업 시작
MCP 서버 Claude가 필요 시 쿼리, 세션으로 이벤트 푸시 없음 시스템 데이터 조회나 읽기 전용 접근
Remote Control claude.ai나 모바일 앱에서 로컬 세션 제어 원격에서 진행 중인 세션 조작
  • Channels는 위 기능들 사이의 공백을 메우며, 외부 이벤트를 로컬 세션으로 직접 전달

    • 채팅 브리지: Telegram이나 Discord를 통해 Claude에게 질문하고, 응답은 같은 채팅에서 확인
    • 웹훅 수신기: CI, 오류 추적기, 배포 파이프라인 등 외부 서비스의 웹훅을 Claude가 열린 세션에서 바로 수신

다음 단계

  • 플러그인이 없는 시스템을 위해 직접 채널 개발
  • Remote Control을 활용해 이벤트 전달 대신 원격에서 세션 제어
  • Scheduled tasks로 주기적 폴링 기반 자동화 구성

Read Entire Article