Claude Code 상세 사용법 23: Channels로 외부 이벤트를 세션에 밀어넣기 | DAKER 커뮤니티
Claude Code 상세 사용법 23: Channels로 외부 이벤트를 세션에 밀어넣기
Claude Code 공식 Channels 문서는 채팅 메시지, 알림, 웹훅을 이미 열려 있는 Claude Code 세션으로 밀어넣는 research preview 기능으로 설명한다. Remote Control은 사용자가 세션을 조종하는 화면이고, Channels는 외부 시스템이 세션에 사건을 보내는 통로다.
1. 먼저 전제 조건을 확인한다
공식 문서 기준 Channels는 Claude Code v2.1.80 이상이 필요하다. Claude 계정 인증 또는 Console API key 인증이 필요하며, Bedrock, Vertex AI, Microsoft Foundry 경로에서는 사용할 수 없다. Team과 Enterprise 조직은 관리자가 기능을 켜야 한다.
claude --version
claude세션이 닫혀 있으면 이벤트도 들어오지 않는다. 항상 반응해야 하는 CI 알림이나 장애 알림이라면 tmux, 백그라운드 터미널, 전용 개발 머신처럼 세션을 오래 살려둘 운영 방식부터 정한다.
2. fakechat으로 구조를 먼저 익힌다
/plugin install telegram@claude-plugins-official
/telegram:configure <token>claude --channels plugin:telegram@claude-plugins-official/telegram:access pair <code>
/telegram:access policy allowlist비밀값은 채팅에 쓰지 말고 환경 변수나 채널 설정 파일에 둔다. 발신자 allowlist는 편의 기능이 아니라 권한 경계다. permission relay를 지원하는 채널에서는 allowlist에 있는 사람이 도구 사용 승인까지 할 수 있기 때문이다.
4. 실패 모드
플러그인이 없다고 나오면 marketplace를 업데이트하거나 공식 marketplace를 추가한 뒤 다시 설치한다. 봇이 응답하지 않으면 --channels로 재시작했는지 본다. Team/Enterprise에서 시작 경고가 뜨면 관리자의 channelsEnabled 설정이 꺼져 있을 수 있다. -p 비대화형 실행에서는 선택형 질문과 플랜 승인처럼 터미널 입력이 필요한 도구가 비활성화된다.
Senior takeaway: Channels는 MCP의 “필요할 때 조회”와 다르게 “사건이 세션을 깨우는” 구조다. 바이브코딩을 운영 자동화로 끌어올리려면 채팅 연결보다 더 중요한 것이 세션 생존, sender allowlist, 권한 프롬프트 처리, 실패 시 사람이 이어받는 LLM 개발 워크플로우다.
실제 Telegram이나 Discord 토큰을 넣기 전에는 공식 fakechat 데모가 안전하다. Bun이 필요하므로 먼저 확인한다.
bun --versionClaude Code 안에서 플러그인을 설치하고, 플러그인을 다시 로드한 뒤 세션을 재시작한다.
/plugin install fakechat@claude-plugins-official
/reload-pluginsclaude --channels plugin:fakechat@claude-plugins-officialfakechat UI에서 메시지를 보내면 터미널에는 <channel source="fakechat"> 이벤트가 들어오고, Claude는 repo를 읽거나 명령을 실행한 뒤 같은 채널의 reply 도구로 답한다.
3. 실제 채널은 allowlist가 핵심이다
Telegram과 Discord는 봇을 만들고 토큰을 설정한 뒤 페어링 코드로 발신자를 등록한다. iMessage는 macOS의 Messages 데이터베이스와 AppleScript 권한을 쓰므로 Full Disk Access와 자동화 권한을 먼저 다룬다.