하나의 두뇌, 두 개의 지갑: 한 대의 기기에서 두 개의 Claude Code 계정 사용하기
요약
Claude Code 사용 시 계정 전환의 번거로움을 해결하기 위해 환경 변수와 심볼릭 링크를 활용하여 두 개의 계정을 효율적으로 관리하는 방법을 소개합니다. 기술, MCP 서버, 설정 등 '두뇌'는 공유하면서 결제 계정만 분리하는 설정 가이드를 제공합니다.
핵심 포인트
- CLAUDE_CONFIG_DIR 환경 변수를 사용하여 별도의 설정 디렉토리 생성
- 심볼릭 링크를 통해 스킬, MCP 서버, 설정 파일 등 핵심 데이터 공유
- 계정별 OAuth 정보 충돌을 방지하기 위해 .claude.json 내 mcpServers 블록만 병합
- 한 번의 설정으로 두 계정 간의 워크플로우와 근육 기억 유지 가능
주중에 Claude Code 사용 한도에 도달했습니다. 저에게는 두 번째 구독이 있지만, /logout, /login을 반복하는 식의 순진한 방식으로 계정을 전환하는 것은 매우 고통스럽습니다. 알고 보니 Claude Code에서 "계정 전환"은 기술(skills), MCP 서버, 설정, 훅(hooks), 메모리, 세션 기록 등 모든 것을 조용히 전환한다는 의미였습니다. 전부 다 말이죠.
제가 실제로 원했던 것은 다음과 같습니다: 하나의 두뇌, 두 개의 지갑. 기술, MCP 서버, 근육 기억(muscle memory)은 동일하게 유지하되, 결제되는 구독만 다르게 하는 것입니다.
이를 가능하게 한 설정 방법을 소개합니다. 약 20분 정도 소요되며, 완전히 되돌릴 수 있습니다.
1단계: 두 개의 설정 디렉토리와 두 개의 별칭(alias)
Claude Code는 모든 상태를 설정 디렉토리에 저장하며 — 기본값은 ~/.claude입니다 — CLAUDE_CONFIG_DIR 환경 변수를 사용하여 다른 곳을 가리킬 수 있습니다. 이것이 핵심 트릭입니다:
# ~/.zshrc
# Claude Code 멀티 계정 별칭(aliases)
alias claude-work='CLAUDE_CONFIG_DIR=~/.claude claude'
...
mkdir ~/.claude-personal
source ~/.zshrc
claude-personal # 두 번째 계정에 대한 OAuth 로그인을 한 번 요청합니다
자격 증명(Credentials)은 활성화된 디렉토리에 저장됩니다. 일반적인 claude 명령은 여전히 ~/.claude를 기본값으로 사용하므로, 기존 워크플로우에는 아무런 변화가 없습니다.
주의사항 #1: 환경 변수를 설정하면 .claude.json이 이동합니다
Claude Code의 사용자 수준 설정 파일(~/.claude.json — MCP 서버, 폴더 신뢰, 온보딩 상태 등)은 ~/.claude 내부가 아니라 그 옆에 위치합니다. 하지만 CLAUDE_CONFIG_DIR이 설정되면, 이 파일은 설정 디렉토리 내부에서 읽힙니다.
따라서 claude-work는 기존에 사용하던 동일한 ~/.claude를 가리키더라도, 새롭고 비어 있는 ~/.claude/.claude.json을 생성하며 갑자기 MCP 서버가 하나도 없는 상태가 됩니다. 해결 방법: 동일한 계정이므로 마스터 파일에 심볼릭 링크(symlink)를 생성합니다:
ln -s ~/.claude.json ~/.claude/.claude.json
이제 일반 claude와 claude-work는 바이트 단위로 완전히 동일해집니다.
2단계: 두뇌 공유하기
두 번째 계정은 백지 상태로 시작합니다. 결제 부분만 달라야 하므로, 메인 디렉토리에서 공유 가능한 모든 항목을 심볼릭 링크로 연결합니다:
cd ~/.claude-personal
ln -s ~/.claude/skills skills
ln -s ~/.claude/CLAUDE.md CLAUDE.md
...
단일 진실 공급원 (One source of truth): 스킬 (skill)을 한 번만 추가하거나 훅 (hook)을 수정하면 두 계정 모두에 적용됩니다.
MCP 서버는 좀 더 주의가 필요합니다. MCP 서버는 .claude.json에 저장되는데, 이 파일에는 계정 식별 정보 (oauthAccount)도 함께 포함되어 있습니다. 따라서 계정 간에 파일 전체를 심볼릭 링크 (symlink)로 연결할 수는 없습니다. mcpServers 블록만 병합하세요:
jq --slurpfile mcp <(jq '.mcpServers' ~/.claude.json) \
'.mcpServers = $mcp[0]' ~/.claude-personal/.claude.json \
> /tmp/merged.json && mv /tmp/merged.json ~/.claude-personal/.claude.json
주의사항 #2: --resume은 계정을 인식하지 못합니다
세션 기록 (Session transcripts)은 <config-dir>/projects/<project>/<session-id>.jsonl에 저장됩니다. 업무용 계정에서 진행하던 개인 세션을 업무용 계정에서 재개(--resume)하려고 하면, Claude는 해당 세션이 존재하지 않는다고 말합니다. 더 심각한 문제는, 충돌 복구 스크립트(crash-restore scripts)나 launchd 작업처럼 단순히 claude를 실행하는 모든 도구가 항상 기본 디렉토리를 기준으로 세션을 재개한다는 점입니다.
해결책은 실제 바이너리보다 $PATH 상에서 앞선 위치에 아주 작은 심 (shim)을 두는 것입니다. 모든 세션 ID는 정확히 하나의 계정 트리 내에 존재하므로, 소유권 자체가 라우팅 신호가 됩니다:
#!/bin/bash
# ~/.local/bin/claude — --resume 명령을 세션 소유 계정으로 라우팅합니다
REAL=/opt/homebrew/bin/claude # 이전에 `command -v claude`가 가리켰던 경로
...
이제 어디서든, 어떤 계정에서든 claude --resume <id>가 정상적으로 작동합니다. 명시적인 CLAUDE_CONFIG_DIR (사용자 별칭/aliases)은 수정 없이 그대로 전달됩니다.
보너스: 지갑 간 대화 이동하기
제가 이 작업을 수행한 근본적인 이유는 대화 도중에 크레딧 (credits)이 소진되었기 때문입니다. 세션은 단순한 기록 파일일 뿐이므로, "이 업무 대화를 내 개인 계정에서 이어가기"는 복사 후 재개(copy + resume)로 가능합니다:
#!/bin/bash
# ~/.local/bin/claude-pickup <session-id> — 업무 세션을 개인 계정으로 이어가기
set -euo pipefail
...
업무 계정은 히스토리로서 자신의 사본을 유지하며, 새로운 턴(turn)은 개인용 사본에만 기록됩니다. 그리고 shim이 개인용 트리(tree)를 먼저 확인하기 때문에, 해당 ID로 향후 claude --resume을 실행하면 대화 내용이 자동으로 새로운 지갑(wallet)을 따라 이동합니다.
분리되어 유지되는 것 (그리고 분리되어야 하는 것)
- 자격 증명(Credentials) 및 결제(billing) — 이것이 이 작업의 핵심 목적입니다.
- 세션 트랜스크립트(Session transcripts) — shim은 분리된 트리(tree)에 의존합니다.
- 폴더 신뢰(Folder trust) — 각 계정은 디렉터리당 한 번씩 "이 폴더를 신뢰하십니까?"라고 다시 묻습니다. 이는 예상된 동작이며, 한 번만 답변하면 됩니다.
- OAuth 인증된 MCP 서버 (Linear, Notion, …) — 토큰은 설정 디렉터리(config dir)별로 관리됩니다. 새 계정에서
/mcp를 한 번 실행하여 재인증을 수행하십시오. 머신 자격 증명(machine credentials)을 사용하는 CLI 기반 MCP 서버는 즉시 작동합니다.
결과
claude # 업무용 (기본값, 변경 없음)
claude-personal # 두 번째 구독, 동일한 두뇌
claude --resume X # 계정을 스스로 파악함
...
동일한 기술, 동일한 MCP 서버, 동일한 훅(hooks), 동일한 메모리. 유일하게 변하는 것은 비용을 누가 지불하느냐입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기