Claude Code의 세션 간 메시징은 JSON 파일과 Unix 소켓으로 이루어짐
Claude Code's cross-session messaging is a JSON file and a Unix socket
핵심 요약
Claude Code의 세션 간 메시징 기능이 JSON 파일과 Unix 소켓을 통해 작동하는 원리를 분석하고 이를 활용한 브리지 도구를 소개함.
- 세션 간 메시징 — JSON 파일과 Unix 소켓을 사용하여 세션끼리 통신함
- 작동 원리 — ~/.claude/sessions/ 디렉토리의 JSON 파일을 통해 세션을 식별하고 소켓으로 데이터를 전송함
- 오픈 소스 도구 — Codex 작업을 다른 세션과 연결할 수 있는 브리지 도구를 공개함
Claude Code 세션끼리 서로 메시지를 주고받을 수 있다는 거 알고 있었냐? 2.1.224 버전에서 추가됐고 https://code.claude.com/docs/en/cross-session-messaging에 제대로 문서화까지 되어 있는데, 릴리즈 노트에 한 줄 띡 적혀있고 별다른 공지도 없어서 쓰는 사람이 거의 없더라. 그래서 내가 이거 뜯어보고 반대편에 Codex 작업을 붙여버렸다.
디렉터리에서 세션을 찾는다. 각 세션은 ~/.claude/sessions/<pid>.json 파일을 생성한다:
{
"pid": 58617,
"cwd": "/Users/leon",
"name": "leon-c0",
"messagingSocketPath": "/tmp/cc-socks/58617.sock",
"procStart": "Mon Sep 21 16:13:34 2026",
"peerProtocol": 1,
"status": "busy"
}
ListAgents가 저 폴더를 읽어오는 방식이다. 데몬이나 서비스 같은 거 따로 안 쓴다.
전송 방식은 세션당 Unix 소켓 하나씩, 모드 0600, 줄바꿈으로 구분된 JSON을 사용한다:
{"msgV":1,"type":"user","msg_id":"<uuid>",
"from":"uds:/tmp/cc-socks/1234.sock",
"session_id":"<recipient>",
"message":{"role":"user","content":"..."}}
제어 프레임은 수신 확인이랑 유휴 상태 알림을 처리한다.
플러그인이 실행 중인 Codex 작업을 해당 레지스트리에 등록하면, /list-agents에 뜨고 다른 세션이랑 똑같이 응답한다 — https://github.com/LeonKohli/claude-uds-bridge
MIT 라이선스고, macOS랑 Linux 지원한다. 초기 전송 작업은 PeterSR이 해줬다: https://github.com/PeterSR/claude-code-socket-transport

