에디블로그
Engineer's Field Notes

AI 자동화로 매일
한 편씩 쓰는
엔지니어 운영 노트

Claude Code · 자동화 파이프라인 · 사고 회고까지. 잘 굴러간 기록 + 깨진 흔적도 같이 남깁니다.

사람이 할 수 있는 일은,
AI도 할 수 있어야 합니다.
매일 한 편 쓰면서 검증 중.
— 이번 주 가장 많이 읽힌 글 TOP 3
AI/정보

[Claude Code] 다른 터미널 세션에 메시지를 보내요

반응형
[Claude Code] 다른 터미널 세션에 메시지를 보내요

[Claude Code] 다른 터미널 세션에 메시지를 보내요

Claude Code(클로드 코드) 2.1.224부터 세션 간에 메시지를 주고받는 기능이 들어갔어요. 터미널 A에서 스키마를 바꿨을 때 그 사실을 터미널 B에 직접 옮겨 적는 대신, Claude가 옆 세션에 알려주는 구조예요. 조건만 맞으면 따로 켤 것 없이 이미 돌아가고 있어요.

01. macOS·리눅스만 되고, 확인은 /list-agents로 해요

필요한 버전은 2.1.224 이상이에요. 네이티브 윈도우는 지원 대상이 아니고, WSL 2 안의 리눅스는 돼요.

세션에서 /list-agents(별칭 /peers)를 쳐보면 바로 알 수 있어요. 명령 자체를 못 알아들으면 그 세션엔 기능이 없는 거라, claude --version부터 보라고 문서에 나와 있어요.

제공자 조건도 있어요. Amazon Bedrock, Claude Platform on AWS, Google Cloud Agent Platform, Microsoft Foundry 경유로 쓰는 세션에서는 안 돼요. CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC이나 DO_NOT_TRACK 같은 변수를 박아둔 경우도 기능이 꺼진 상태로 뜬다고 해요.

02. SendMessage를 직접 부르는 게 아니라 말로 시켜요

Claude가 ListAgents로 받을 세션을 찾고 SendMessage로 보내요. 사람이 두 도구를 직접 호출할 일은 없고, 프롬프트만 던지면 돼요.

다른 터미널에서 돌고 있는 세션에 마이그레이션 끝났는지 물어봐줘

문구도 Claude가 알아서 써요. 세션이 답하는 이름은 /rename이나 --name으로 정해요. 안 정하면 작업 디렉터리 이름을 딴 myapp-3f 같은 이름이 자동으로 붙어요.

오가는 건 텍스트 한 덩이뿐이에요. 대화 기록이나 파일은 안 넘어가요. 통째로 옮기고 싶으면 메시지 말고 세션 resume을 쓰라는 게 문서 안내예요.

03. 같은 머신은 소켓, 머신 밖은 서버를 거쳐요

문서 기준으로 같은 머신 안에서는 세션마다 뚫어둔 소켓으로 바로 전달돼요. Anthropic 서버를 거치지 않는 경로라고 적혀 있어서, 사내 정책상 외부로 나가는 트래픽을 따지는 곳이면 이 구분이 중요해요.

다른 내 머신의 세션은 그 머신의 Remote Control 연결로 도착하고 웹 세션은 클라우드 세션으로 바로 들어간다고 해요. 두 경우 모두 Anthropic 서버를 거쳐요.

머신 밖 세션에 먼저 말을 거는 건 2.1.224 시점엔 막혀 있었어요. 2.1.225 changelog에는 ListAgents에 뜨는 이름으로 먼저 대화를 시작할 수 있게 됐다고 적혀 있는데, 문서 페이지에는 아직 답장만 된다는 서술이 남아 있어요. 이 부분은 본인 버전을 보고 판단할 대목이에요.

컨테이너는 파일시스템이 따로라 호스트 세션과 서로 못 찾는다고 해요. 같은 컨테이너 안의 두 세션끼리는 되고요. 머신 밖으로 나가는 메시지마다 승인을 받고 싶으면 isolatePeerMachines를 true로 두면 돼요.

04. 받는 쪽은 crossSessionInbound로 막을 수 있어요

도착한 메시지를 어떻게 할지는 받는 세션이 정해요. accept는 그대로 전달, hold는 승인 대기, refuse는 그냥 버림이에요.

값을 안 정했을 때는 보내는 세션과 받는 세션의 권한 모드를 같이 봐요. 둘 다 권한 프롬프트가 뜨는 세션이거나 둘 다 bypassPermissions면 그대로 전달돼요. 한쪽만 bypassPermissions면 받는 쪽에 승인 창이 떠요.

그 창을 5분(dialogExpiry 기본값) 동안 안 누르면 메시지가 버려진다고 문서에 나와 있어요.

다른 세션이 보낸 메시지는 내 승인을 대신하지 못해요. 권한 설정이나 CLAUDE.md를 바꿔달라는 요청도 막히고, 본문에 /compact 같은 게 적혀 있어도 평문으로만 들어와요.

아예 끄려면 보내기와 받기를 따로 잠가야 해요. 조직 단위로 막을 땐 managed settings에 아래 두 줄을 같이 넣으라고 안내돼 있어요.

{
  "permissions": {
    "deny": ["SendMessage", "ListAgents"]
  },
  "crossSessionInbound": "refuse"
}

비용 쪽도 알아둘 부분이 있어요. 전달된 메시지는 내가 타이핑한 프롬프트와 똑같이 usage로 잡힌다고 해요. 세션 둘이 서로 핑퐁하는 사고는 반복 발송 throttle과 대기 50개 상한으로 알아서 멈춘다고 해요.

출처: Claude Code Docs — Message your other Claude Code sessions, Claude Code CHANGELOG 2.1.224

이 글은 공식 발표 내용을 정리한 것이고, Anthropic으로부터 어떤 형식의 협찬도 받지 않았습니다.

반응형

📚 같이 보면 좋은

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 일정액의 수수료를 제공받습니다."