Two Claude Code sessions can message each other. That does not stop them overwriting your files.
개요
Claude Code의 새로운 실험은 두 개의 Claude 세션이 서로 메시지를 주고받으며 협업할 수 있는 기능을 도입했지만, 동일한 파일을 동시에 수정할 때 발생하는 충돌을 해결하지 못해 파일 덮어쓰기 위험을 안고 있습니다.
주요 내용
* 세션 간 메시징 기능: Claude Code 2.1.224 (macOS, Linux, WSL 2) 또는 2.1.234 (Windows) 이상 버전에서는 두 개의 Claude 세션이 서로를 인지하고 텍스트 기반 메시지를 주고받을 수 있습니다.
* 메시징 도구: ListAgents 명령어로 통신 가능한 세션을 확인하고, SendMessage 명령어로 특정 세션에 메시지를 보낼 수 있습니다.
* 메시지의 한계: 세션 간 메시지는 텍스트 교환일 뿐, 대화 기록이나 파일 자체를 전달하지 않으므로, 두 세션이 동일한 파일을 동시에 수정하려고 할 때 서로의 변경 사항을 덮어쓸 수 있습니다.
* 기본적인 보호 메커니즘 부재: 현재 Claude Code는 소스 파일 잠금(source-file locking)이나 병합(merge layer) 기능을 제공하지 않아, 여러 세션이 같은 파일을 수정할 경우 충돌이 자동으로 해결되지 않습니다.
* 실질적인 작업 보호: 각 세션마다 별도의 작업 트리(worktree)를 생성하고 이를 .gitignore에 포함시켜 파일 충돌을 방지합니다. 각 세션은 독립적인 디렉토리, 브랜치, 파일 복사본을 가지며, 다른 세션의 파일을 직접 수정할 수 없습니다.
* Git을 통한 충돌 관리: 서로 다른 작업 트리 내에서 변경된 파일이 동일한 경우, Git은 충돌을 발생시켜 사용자에게 알려주므로 이를 통해 문제를 인지하고 해결할 수 있습니다.
* 명확한 파일 소유권 설정 필요: 모든 세션이 변경해야 하는 파일의 경우, "한 번에 한 명의 소유자"라는 단순하지만 효과적인 규칙을 설정하고 프롬프트에 명시하는 것이 중요합니다.
* Agent Teams 및 MCP Agent Mail의 한계: 실험적인 Agent Teams 모드는 작업 할당에 대한 파일 잠금을 제공하지만 소스 파일 자체의 잠금은 아니며, MCP Agent Mail은 파일 예약 기능을 제공하지만 잠금보다는 권고 수준이며 즉각적인 쓰기 작업을 막지는 못합니다.
시사점
Claude Code의 세션 간 메시징은 협업 효율성을 높일 잠재력이 있지만, 파일 충돌을 방지하기 위해서는 각 세션의 작업 환경을 명확히 분리하고 파일 소유권을 명시하는 것과 같은 추가적인 프로토콜이 필수적입니다.
댓글
GitHub Discussions