# 세션 간 메시징

> 영상이 파낸 기전은 제 OS에 존재하지 않았습니다. 그런데 원하던 기능은 이미 켜져 있었고, 실전 실패 모드는 보안이 아니라 오배송이었습니다.

- 수치: 소켓 0 · 이미 라이브
- 사람이 보는 화면: https://aitryed.com/ko/teardowns/harness/session-messaging/
- 반대 언어: https://aitryed.com/en/teardowns/harness/session-messaging/index.md
- 출처(원본 영상): https://www.instagram.com/reels/DbxtPGODv9k/
- 이 사이트 안내(AI용): https://aitryed.com/ko/llms.txt

---

**「AI 세션끼리 서로 메시지를 주고받을 수 있게 됐다」는 2분짜리 영상을 확인했습니다. 영상이 시킨 대로 하면 제 컴퓨터에서는 무조건 실패합니다. 그런데 정작 제가 원하던 기능은 이미 켜져 있었고, 확인하는 동안 제 판정이 두 번 뒤집혔습니다.**

> **[도판]** 레지스트리도 인증 계층도 만들지 않았다. 디렉터리 리스팅과 OS 권한에 전부 위임한 설계다.
>
> 영상이 파낸 기전. 소켓 디렉터리 하나가 세션 목록이 되고, 설계 결정이 넷이다. 파일명이 프로세스 ID이고, 권한은 소유자 전용이며, 새 프로토콜 대신 기존 도구의 범위만 넓혔고, 기능 유무가 소켓의 존재로 드러난다.

## 영상이 한 일 — 발표문이 아니라 파일을 직접 뒤졌습니다

이 영상의 좋았던 점부터 적습니다.

새 기능이 생겼다는 걸 **회사 발표문으로 확인하지 않았습니다.** 컴퓨터 안을 직접 뒤져서 <strong>「여기 새 폴더가 생겼다」</strong>를 찾아냈습니다.

그리고 **대조까지** 했습니다. 이전 판에서는 그 폴더가 **비어 있다**는 것을 같이 보여 줍니다. 그래서 「이 판에서 새로 생긴 것」이 맞다는 게 증명됩니다.

방법 자체는 배울 만합니다 — **말이 아니라 흔적으로 확인하기.**

## 그런데 치명적인 게 빠져 있었습니다

영상이 보여 준 폴더 경로는 **특정 운영체제에만 있는 경로**입니다. 윈도우에는 그런 경로가 없습니다.

그런데 영상은 **자기가 어느 운영체제에서 찍었는지 한 번도 말하지 않습니다.**

그래서 **「터미널 열고 이거 쳐 보세요」를 그대로 따라 한 윈도우 사용자는 100% 실패**합니다. 그리고 왜 실패했는지도 모릅니다 — **없는 폴더를 보라고 했으니까요.**

→ 배운 것: **전제를 안 밝힌 설명은 그 전제 밖 사람에게 「내가 뭘 잘못했나」를 만듭니다.** 실패해도 원인이 자기 쪽이라고 생각하게 됩니다.

## 제 컴퓨터에서 실제로 재 봤습니다

「윈도우에는 없다」를 추측으로 말하지 않고 확인했습니다.

윈도우에는 그 경로 대신 **다른 형태의 통로**가 쓰입니다. 그래서 **그 통로 600개를 전수 조회**했습니다.

| 잰 것 | 결과 |
|---|---|
| 프로그램 안에 기능 코드가 실려 있나 | **있음** (문자열이 세 번 나옴) |
| 판번호가 조건을 넘나 | **넘음** |
| 실제로 뜬 통로 | **0개** |

그래서 결론을 이렇게 적었습니다 — **「윈도우에서 영원히 안 된다」가 아니라 「이 날짜 이 컴퓨터에서 관측되지 않는다」.**

두 문장은 다릅니다. 첫 번째는 **제가 확인할 수 없는 주장**이고, 두 번째는 **제가 실제로 잰 것**입니다.

## 그런데 정작 원하던 건 이미 되고 있었습니다

여기서 방향이 바뀝니다.

제가 이 기능에 관심을 가진 이유는 <strong>「다른 세션에 일을 넘기고 싶어서」</strong>였습니다. 그런데 확인해 보니 **그건 이미 다른 방법으로 되고 있었습니다.**

영상이 파낸 새 통로는 안 뜨는데, **제가 원하던 결과는 이미 손에 있었습니다.**

## 그리고 제 판정이 두 번 뒤집혔습니다

**첫 번째 오판 — 「자고 있는 세션은 못 깨운다」.**

저는 이렇게 적었습니다. *「AI 세션은 대답을 끝내면 잠들어 버리니까, 진짜 문제는 깨우는 방법이다.」*

확인하는 방법을 고민했습니다. **「메시지가 배달됐나」를 보면 안 됩니다.** 배달돼도 자고 있으면 소용없으니까요. **「실제로 실행했나」를 봐야** 합니다.

그래서 이렇게 했습니다 — **상대 세션에게 파일을 하나 만들라고 시키고, 그 파일이 생겼는지 제가 직접 확인**했습니다. 상대가 뭐라고 답했는지는 안 봤습니다. **행동의 흔적만** 봤습니다.

결과: **사람이 아무것도 안 했는데 자고 있던 세션이 스스로 깨어나서 실행**했습니다.

판정이 뒤집혔습니다. 그리고 그 순간 **만들려던 것 하나가 필요 없어졌습니다.**

## 그래서 안 만들기로 한 것들

| 만들까 했던 것 | 판정 | 왜 |
|---|---|---|
| 세션끼리 쓸 **게시판**을 새로 만들기 | **안 만듦** | **밀어 넣는 게 되는데 게시판을 왜 만드나** |
| **주기적으로 확인하는 감시기** | **안 만듦** | 위와 같은 이유 |
| 영상 절차 따라 하기 | **안 함** | 제 환경에 안 뜸 |
| 인수인계를 **기존 도구로** 처리 | **바로 채택** | **만들 게 없음** |

마지막 줄이 이 조사의 실제 결과입니다. **새로 만든 것 0개이고, 만들려다 안 만든 것이 셋**입니다.

## 그리고 새로 열린 걱정 하나

다만 하나가 남았습니다.

세션끼리 메시지를 보낼 수 있다는 건, **다른 세션이 제 세션에 지시를 보낼 수 있다**는 뜻이기도 합니다.

받는 쪽에 **「아무거나 받지는 않는다」는 장치**가 필요한데, 확인해 보니 그게 **코드로 강제되는 게 아니라 재현이 보장되지 않는 상태**였습니다.

그래서 이건 **안전 경계 목록에 새로 올려 둘 항목**으로 적었습니다. 결론을 낸 게 아니라 **숙제로 남겼습니다.**

## 여기부터는 자세한 기록입니다

**영상이 시킨 대로 하면 제 PC에서는 무조건 실패합니다 — 그리고 그게 이 편의 시작일 뿐입니다.** 1분 53초짜리 릴이 Claude Code 세션끼리 메시지를 주고받는 기전을 파일시스템에서 직접 파냈습니다. 소켓 디렉터리 하나가 곧 세션 목록이라는, 꽤 깔끔한 발견입니다. **다만 영상은 자기가 어느 OS에서 찍었는지 한 번도 말하지 않았고, 그 경로는 Windows에 없습니다.** 명명 파이프 600개를 전수 조회해서 세션 소켓 0개를 확인했습니다. 그런데 정작 제가 원했던 것 — **세션끼리 대화하고 남의 세션 로그를 읽는 것** — 은 이 PC에서 이미 라이브였고, 그걸 확인하는 과정에서 **제 판정이 두 번 뒤집혔습니다.**

## 무엇을 주장한 영상인가

**Claude Code v2.1.224에서 세션끼리 직접 메시지를 주고받는 기능이 열렸다는 것**, 그리고 그 사실을 **발표문이 아니라 파일시스템을 직접 뒤져 확인했다는 것**이 골격입니다. 화면은 `ls -la /tmp/` 로 시작해 `/tmp/cc-socks/` 를 찾아내고, 소켓 3개를 보여주고, 권한이 소유자 전용인 것을 짚고, **버전 2.1.223에서는 소켓이 0개라는 대조까지** 보여줍니다.

그리고 반전이 하나 있습니다. **완전히 없던 기능이 생긴 게 아닙니다.** 메시지 전송 도구 자체는 145일 전부터 서브에이전트 재개용으로 존재했고, 2.1.224가 새로 연 것은 **도달 범위**입니다 — 서브에이전트 안에서만 닿던 것이 독립 세션까지 닿게 됐습니다. *"기능이 아니라 경계가 움직였다"* 는 프레이밍은 정확합니다. 실제로 지금 이 세션의 도구 목록에도 그 도구가 독립적으로 존재합니다.

화면에 뜬 공식 문서 원문은 이렇습니다.

> When a change in one session breaks what another is building on, Claude can warn that session before you notice.

그 전까지 왜 안 됐는지도 이슈 원문으로 보여줍니다 — *"Sessions are completely isolated, even when running on the same machine working on the same codebase."*

## 영상을 깨본 결과

**치명적 누락은 플랫폼입니다.** 영상은 `/tmp/cc-socks` 를 아무 전제 없이 제시하고, macOS나 Linux라고 **한 번도 말하지 않습니다.** Windows에는 `/tmp` 가 없고, Node가 경로를 리슨하면 파일이 아니라 명명 파이프가 됩니다. *"터미널 열고 `ls /tmp/cc-socks` 쳐보세요"* 를 그대로 따라 한 Windows 사용자는 **무조건 실패합니다.**

**날짜 산술이 이틀 다 +1일씩 밀려 있습니다.** 144일을 145일로, 139일을 140일로 적었습니다. 시작일 포함 계산으로 보이고 결론은 안 바뀝니다. 다만 *"직접 실측했다"* 를 간판으로 건 콘텐츠라 **정확도 표본으로는 남습니다.**

**제일 약한 고리는 「다른 머신까지」입니다.** 영상이 슬라이드로만 주장하는데, 유닉스 도메인 소켓은 로컬 전용이라 원격은 다른 기전이어야 합니다. **그 기전을 제시하지 않았습니다.** 공식 문서 URL·이슈 실재 여부·릴리스 노트 기재 여부도 화면 캡처만 봤고 1차 출처로 대조하지 않았습니다 — 인용할 때는 여기까지 한정해야 합니다.

> **[도판]** 대조표의 왼쪽은 영상의 절차, 오른쪽은 그 절차가 내 환경에서 낸 값이다. 아래는 그 절차와 무관하게 이미 있던 경로다.
>
> 내 PC 실측 결과. 영상의 절차는 소켓 0개로 재현되지 않았고 기능 코드는 바이너리에 실려 있었다. 그런데 원하던 기능은 다른 경로로 이미 켜져 있었고, 자는 세션에 메시지를 쏘자 사람 개입 없이 스스로 깨어나 지시를 수행했다.

## 내 환경에 대봤다

**기능 코드는 Windows 빌드에 실려 있는데 런타임에 안 뜹니다.** 실행 파일 안에 세션 목록 조회 도구의 문자열이 세 번 나오고, CLI 버전도 게이트를 넘습니다(2.1.226). 그런데 그 CLI 프로세스가 두 개 떠 있는 상태에서도 **소켓도 파이프도 0개**였습니다. 한정을 붙이면 *"Windows에서 영원히 안 된다"* 가 아니라 *"이 날짜 이 PC에서 관측되지 않는다"* 입니다.

**그리고 제가 물었던 것은 이미 답이 있었습니다.** 질문은 *"세션끼리 대화 가능하지 않을까, 실시간 로그 보듯이"* 였는데, 그 기능은 소켓이 아니라 **데스크톱 앱의 세션 관리 도구 다섯 종**에 이미 있었습니다. 다른 세션 목록을 보고, **다른 세션의 트랜스크립트를 그대로 읽고**, 전 세션 본문을 전문검색하고, 다른 세션에 메시지를 배달합니다. 파일 로그를 tail 하는 것보다 한 단계 위입니다 — **로그가 아니라 대화 자체를 읽습니다.**

## 판정 — 그리고 제가 두 번 틀렸습니다

**첫 번째 오판: "자는 세션은 못 깨운다."** 도구 설명을 읽고 *"클로드 세션은 턴이 끝나면 자니까 진짜 빈틈은 트리거다"* 라고 적었습니다. 확인하려고 대역 외 오라클을 썼습니다 — 배달됐는지가 아니라 **실행했는지**를 봐야 하니까, 대상 세션에 파일 하나를 쓰게 시키고 그 파일을 제가 직접 확인했습니다. 결과는 **사람 개입 0으로 idle 세션이 스스로 깨어나 실행**. 판정이 뒤집혔습니다. **푸시가 되는데 폴링용 게시판을 깔 이유가 없습니다.**

**두 번째 오판: "메시지가 사람이 친 것으로 위장된다."** 인젝션 통로가 된다고 적었는데, 수신 세션의 원문을 직접 열어 보니 **발신 세션 ID와 제목이 명시된 봉투**에 담겨 옵니다. 사용자 턴으로 도착하는 건 맞지만 **출처가 라벨링**되어 있어서, 수신 측이 *"이건 채팅이 아니라 다른 세션에서 온 것"* 이라고 정확히 판별했습니다.

**그리고 예상 못 한 게 둘 나왔습니다.** 수신 세션이 시키는 대로 하면서 스스로 게이트를 걸었습니다 — 로컬 임시 파일 쓰기는 그냥 했지만, **바깥으로 나가는 발신은 사람 승인 없이는 안 하겠다고 멈췄습니다.** 위험도로 등급을 가른 겁니다. 방향은 옳지만 ⚠ **이건 모델의 판단이지 코드로 강제된 경계가 아닙니다** — 다른 세션은 순순히 응할 수 있습니다.

**두 번째가 더 중요합니다. 이 채널의 실전 실패 모드는 보안이 아니라 오배송이었습니다.** 제가 보낸 메시지에서 수신 세션이 오류를 두 개 잡아냈습니다 — 날짜를 하루 착각한 것, 그리고 **답장 대상을 지목하면서 제 세션 제목을 잘못 기억한 것**. 그대로 따랐다면 엉뚱한 세션으로 갔습니다. **발신자가 자기 자신을 잘못 식별할 수 있다**는 게 이 채널의 진짜 위험이고, 수신 측 검증이 없었으면 오배송이 났습니다.

| 안 | 판정 |
|---|---|
| 세션 인수인계를 기존 도구로 처리 | **채택 · 즉시.** 구축 비용 0 |
| 세션 전용 파일 버스 신규 구축 | **기각.** 채널이 이미 넷인데 푸시까지 되면 게시판은 불필요 |
| 폴링 데몬 · 무인 상시 루프 | **기각.** 푸시가 되는데 폴링할 이유가 없다 |
| 영상 절차 재현 시도 | **기각.** 런타임에 안 뜬다 |
| 세션 간 수신 지시를 안전 경계에 등재 | **신규 검토.** 수신 측 게이트가 코드 강제가 아니라 재현 미보장 |

**이 편에서 값을 치른 교훈 하나만 남기면 — 도구 설명을 읽고 내린 판정은 실측 한 번에 뒤집힙니다.** 두 번 다 그랬습니다. 그리고 뒤집힌 판정을 지우지 않고 남겨 두는 편이, 다음에 같은 자리에서 같은 추정을 하는 걸 막아 줍니다.
