한 대의 머신, 두 개의 Claude 계정, 공유 상태 제로
요약
한 대의 머신에서 Claude Code의 업무용 계정과 개인용 계정을 설정 디렉터리 분리를 통해 완벽하게 격리하여 사용하는 방법을 설명합니다. MCP 서버, 훅(hooks), 세션 기록 등이 서로 섞이지 않도록 관리하는 실무적인 팁을 제공합니다.
핵심 포인트
- CLAUDE_CONFIG_DIR을 활용해 계정별 설정 디렉터리 분리 가능
- 설정 파일(.claude.json) 덮어쓰기 방지를 위한 독립적 관리 권장
- 세션 복구(--resume) 시 계정별 별칭(alias) 사용을 통한 컨텍스트 유지
- 업무와 개인 환경의 보안 및 데이터 격리 중요성 강조
며칠 전 한 대의 머신에서 두 개의 Claude Code 계정을 실행하며 모든 것을 공유하는(동일한 skills, 동일한 MCP 서버, 동일한 hooks) 방법에 대한 흥미로운 포스트를 보았습니다.
그 기사는 [
업무용 설정에는 내부 시스템을 가리키는 MCP 서버들이 있습니다. 업무용에는 제가 어떤 무작위 사이드 프로젝트의 개인 세션에서 실행되기를 절대 원치 않을 훅(hooks)과 권한들이 포함되어 있습니다.
업무 기록은 업무 기록일 뿐입니다.
개인용 Claude를 열 때는 깨끗한 개인 환경을 원합니다. 설정 디렉터리(config directories)를 완전히 분리해 두면 이를 공짜로 얻을 수 있습니다. 유지 관리해야 할 병합(merge) 스크립트도 없고, 업무용 토큰이 있어서는 안 될 곳에 나타날 위험도 없습니다.
비용은 실재합니다: 개인 계정에 스킬(skill)을 추가하면 업무용 계정에는 반영되지 않습니다.
두 곳 모두에 추가해야 합니다. 4개월 동안 이로 인해 소요된 시간은 총 10분 정도였으며, 이는 수용 가능한 수준이라고 생각합니다.
공유 설정의 문제점
공유 버전에서 가장 큰 함정은 .claude.json입니다. 이 사용자 레벨 파일(MCP 서버, 폴더 신뢰도, 온보딩 상태 등)은 보통 ~/.claude 옆에 위치하지만, CLAUDE_CONFIG_DIR이 설정되는 순간 Claude는 이를 설정 디렉터리 내부에서 읽습니다. 즉, 기존의 ~/.claude를 가리키는 두 번째 에일리어스(alias)를 지정하면 새롭고 비어 있는 .claude.json이 생성되어 기존의 MCP 서버들을 덮어써 버릴 수 있습니다. 그들의 해결책은 마스터 파일로 다시 연결하는 심링크(symlink)를 만드는 것입니다.
저는 이 방식 전체를 피합니다. 각 계정은 자신만의 ~/.claude/.claude.json과 ~/.claude-work/.claude.json을 가지며, 이 두 파일은 각 계정에 속한 실제 파일입니다. 서로를 가리키는 것이 없으므로 아무것도 덮어씌워지지 않습니다.
그럼 --resume은 어떻게 되나요?
공유 설정이 shim(심)을 정말로 필요로 하는 유일한 지점입니다. 세션 트랜스크립트(transcripts)는 <config-dir>/projects/<project>/<session-id>.jsonl에 저장됩니다. 백그라운드 스크립트나 크래시 복구(restore) 시 순수하게 claude --resume <id>를 호출했는데 해당 세션이 다른 계정에 속해 있다면, Claude는 해당 세션이 존재하지 않는다고 말합니다. 그들의 shim은 ID를 확인하여 어떤 계정의 소유인지 찾아낸 뒤 그에 따라 CLAUDE_CONFIG_DIR을 설정합니다.
저는 이 shim을 실행하지 않으므로, 그것이 대신해 줄 작은 규율을 스스로 지키기로 했습니다. 즉, 업무용 세션은 claude-work --resume로, 개인용 세션은 claude로 다시 시작하는 것입니다. 저는 이미 이 두 가지를 서로 다른 컨텍스트 (Context)로 생각하고 있기 때문에, 잘못된 저장소에 git push를 하지 않는 것과 마찬가지로 올바른 명령어를 사용하는 것이 자동적으로 이루어집니다.
격리(Isolation) vs. 하나의 뇌: 어떻게 선택할 것인가
단 하나의 질문만 던져보세요: 당신의 두 계정은 동일한 당신인가요, 아니면 서로 다른 두 개의 컨텍스트 (Context)인가요?
- 동일 인물, 두 개의 구독, 결제 주체만 다름. 뇌를 공유하세요. 이전 포스트에서 언급한 심볼릭 링크 (symlinks)와
jq를 이용한 병합 (merge) 방식이 정확히 적합하며,--resumeshim을 사용할 가치가 있습니다. - 서로 다른 컨텍스트 (업무 vs. 개인, 고객 A vs. 고객 B, 민감한 작업을 위해 격리된 계정 등). 격리하세요. 두 개의 설정 디렉토리 (config directories)와 두 개의 함수 (functions)를 만들면 끝입니다. 별도의 노력 없이 분리를 얻을 수 있으며 모든 우회 방법을 건너뛸 수 있습니다.
요약하자면:
claude # 개인용 (default)
claude-work # 업무용 계정, 각자의 영역
claude-work --resume X # 업무 세션 재개
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기