
한 대의 기기에서 Claude Code 다중 계정 사용하기 (2026)
요약
CLAUDE_CONFIG_DIR 환경 변수를 사용하여 한 기기에서 Claude Code의 다중 계정을 동시에 사용하는 방법을 설명합니다. 설정 디렉토리 분리를 통해 인증 정보와 세션을 독립적으로 관리할 수 있지만, 데이터 오염 및 설정 초기화 문제를 주의해야 합니다.
핵심 포인트
- CLAUDE_CONFIG_DIR 변수로 계정별 독립적 설정 디렉토리 지정 가능
- 새 디렉토리는 플러그인, MCP 서버, 히스토리 등이 없는 빈 상태로 시작됨
- 하드코딩된 경로 사용 시 두 계정 간 데이터 오염(cross-contamination) 위험
- 설정 디렉토리를 분리해도 계정별 사용량 할당량(quota)은 공유됨
한 대의 기기에서 Claude Code 다중 계정을 실행하는 방법은 단 하나의 환경 변수(environment variable)인 CLAUDE_CONFIG_DIR로 요약됩니다. Claude Code를 실행하기 전에 이 변수를 별도의 폴더로 지정하면, 해당 세션은 자신만의 인증 정보(credentials), 설정(settings), 히스토리(history)를 갖게 됩니다. 따라서 두 번째 계정으로 로그인해도 첫 번째 계정이 로그아웃되지 않습니다. 터미널 두 개, 계정 두 개, 로그아웃 루프 없음.
이것이 모든 튜토리얼에서 다루는 부분입니다. 하지만 거의 어떤 튜토리얼도 별칭(alias)이 작동한 '이후'에 어떤 일이 벌어지는지에 대해서는 언급하지 않습니다. 즉, 두 번째 설정 디렉토리(config directory)는 빈 상태로 시작된다는 점입니다. 플러그인(plugins), MCP 서버(MCP servers), 스킬(skills), 메모리(memory), 세션 히스토리(session history)가 전혀 없습니다. 그리고 만약 내용을 읽어보지 않고 훅(hooks)을 그대로 복사한다면, 두 계정이 조용히 동일한 상태 파일(state file)에 데이터를 쓰기 시작할 수도 있습니다.
이 가이드는 5분 만에 설정을 완료하는 방법과, 실제로 문제가 발생할 수 있는 네 가지 사항 — 그리고 각 사항을 확인할 수 있는 정확한 명령어 — 을 다룹니다.

핵심 요약
CLAUDE_CONFIG_DIR은 각 터미널에 고유한 설정 디렉토리를 부여하여, 두 개의 Claude 계정이 동시에 로그인 상태를 유지할 수 있게 합니다.- 이 변수는 널리 사용되고 있음에도 불구하고, Anthropic의 공식 환경 변수나 설정 페이지에는 문서화되어 있지 않습니다. 따라서 '지원되지는 않지만 작동하는(unsupported-but-working)' 방식으로 취급하십시오.
- 플러그인, MCP 서버, 스킬, 훅, 메모리, 세션 기록 등 사용자의 설정을 구성하는 모든 요소는 계정이 아닌 설정 디렉토리에 저장됩니다. 따라서 두 번째 디렉토리는 빈 상태로 시작됩니다.
~/.claude를 하드코딩(hard-code)한 훅은 두 계정 사이에서 조용히 데이터 오염(cross-contaminate)을 일으킬 수 있습니다.CLAUDE_CONFIG_DIR을 읽도록 다시 작성하십시오.- 별도의 설정 디렉토리를 사용한다고 해서 할당량(quota)이 늘어나는 것은 아닙니다. 사용량은 계정당 계산됩니다. 만약 동일한 계정이 두 디렉토리에 모두 로그인되어 있다면, 두 터미널은 하나의 풀(pool)을 소모합니다.
Claude Code가 왜 다른 터미널의 로그아웃을 시키는가
Claude Code는 OAuth 토큰을 단일 파일인 <config dir>/.credentials.json에 저장합니다. 기본적으로 사용자당 하나의 설정 디렉터리(~/.claude 또는 Windows의 경우 %USERPROFILE%\.claude)가 존재하므로, 두 번째 계정으로 로그인하면 첫 번째 계정의 토큰이 덮어씌워집니다. 이는 이미 다른 창에서 실행 중인 세션에도 영향을 미칩니다.
신원(Identity) 정보는 두 파일에 분산되어 있으며, 각각의 역할을 아는 것이 도움이 됩니다:
| 파일 | 포함 내용 | 복사해도 안전한가? |
|---|---|---|
<config>/.credentials.json | 로그인된 계정의 OAuth 토큰 | 아니요 — 복사하면 계정이 복제됩니다 |
| ... | ... | ... |
마지막 행은 보이는 것보다 더 중요합니다. 세션 기록(Session transcripts)은 계정이 아닌 **프로젝트 경로(project path)**별로 저장됩니다. 로그아웃한 뒤 다른 사용자로 로그인하고, 동일한 폴더에서 claude --continue를 실행하면 이전 계정이 남겨둔 대화를 그대로 이어갈 수 있습니다. 로컬 히스토리(local history)에는 계정별 잠금(lock)이 없습니다.
CLAUDE_CONFIG_DIR을 사용하여 Claude Code 다중 계정 설정하는 방법
Claude Code를 실행하기 전에 CLAUDE_CONFIG_DIR을 다른 경로로 설정한 다음, 이를 셸 함수(shell function)로 감싸서 다시는 직접 입력할 필요가 없도록 만드세요. 전체 설정은 세 단계로 구성되며, 두 번째 로그인 과정을 포함하여 약 5분 정도 소요됩니다.
1단계 — 두 번째 설정 디렉터리 생성
mkdir -p ~/.claude-work
2단계 — 셸 설정에 함수 추가
macOS 또는 Linux의 경우, ~/.zshrc 또는 ~/.bashrc에 다음을 추가하세요:
claude2() {
CLAUDE_CONFIG_DIR="$HOME/.claude-work" command claude "$@"
}
VAR=value command 접두사는 해당 변수의 범위를 단일 호출로 제한하므로, 동일한 셸에서 일반적인 claude 명령어를 사용하면 여전히 기본 계정을 사용하게 됩니다.
Windows PowerShell에는 인라인 환경 변수(inline environment-variable) 접두사가 없으므로, 명시적으로 설정하고 복구해야 합니다. $PROFILE에 다음을 추가하세요:
$Global:Claude2ConfigDir = Join-Path $env:USERPROFILE '.claude-work'
function claude2 {
...
여기서 훔쳐올 만한 가치가 있는 두 가지 세부 사항이 있습니다. finally 블록은 Ctrl+C로 세션을 종료하더라도 변수가 삭제되도록 보장합니다. 이 블록이 없다면, 이후의 모든 명령에서 해당 창이 조용히 두 번째 계정에 머물게 됩니다. 또한 복구 시 빈 문자열을 할당하는 대신 Remove-Item을 사용하는데, 이는 Windows PowerShell 5.1에서 빈 값을 할당하면 변수가 해제(unset)되는 대신 '존재하지만 비어 있는' 상태로 남기 때문입니다.
3단계 — 로그인 및 확인
claude2 # 첫 실행 시 로그인을 요청합니다
그 다음, 두 디렉토리가 실제로 서로 다른 토큰을 보유하고 있는지 확인합니다:
md5sum ~/.claude/.credentials.json ~/.claude-work/.credentials.json
해시(hash) 값이 다르면 격리가 제대로 작동하고 있다는 의미입니다. 세션 내부에서 /status를 입력하면 해당 창이 실제로 어떤 계정을 사용 중인지 보여줍니다. 명령어 이름만으로는 계정을 알 수 없기 때문에 이것이 유일하고 신뢰할 수 있는 확인 방법입니다.

이 방법을 신뢰하기 전 주의할 점 하나
CLAUDE_CONFIG_DIR은 Anthropic의 공식 환경 변수 참조(official environment variables reference)에 나타나지 않으며, 설정 문서(settings documentation)에서는 ~/.claude를 다중 계정이나 프로필에 대한 언급이 없는 고정된 위치로 설명하고 있습니다. 저희는 2026년 7월에 두 페이지를 모두 확인했습니다.
이 방법은 작동하며, 수천 명의 개발자가 사용하고 있고, 여러 릴리스에 걸쳐 안정적이었습니다. 하지만 문서화되지 않았다는 것은 호환성을 보장할 수 없음을 의미합니다. 향후 릴리스에서 동작이 변경될 경우를 대비하여, 설정을 하나의 셸 함수(shell function)에 유지함으로써 수정해야 할 위치를 단 한 곳으로 제한하십시오.
두 번째 계정으로 전달되지 않는 것은 무엇인가요?
아무것도 넘어오지 않습니다. 새로운 CLAUDE_CONFIG_DIR은 완전히 새로운 Claude Code 환경입니다. 플러그인 (plugins), MCP 서버 (MCP servers), 기술 (skills), 훅 (hooks), 메모리 (memory), 그리고 세션 기록 (session history)은 모두 계정이 아닌 설정 디렉토리 (config directory) 내에 존재합니다. 수백 메가바이트에 달하는 상태 (state)를 가진 숙련된 설정이라 할지라도, 두 번째 계정은 이를 볼 수 없습니다.
실제로 잘 사용되는 설정 디렉토리와 두 번째 계정이 상속받는 것의 차이는 다음과 같습니다:
| 구성 요소 (Component) | 저장 위치 (Stored at) | 상속 여부 (Carries over?) |
|---|---|---|
| 플러그인 + 마켓플레이스 (Plugins + marketplaces) | <config>/plugins/ | 아니요 — 재설치 필요 |
| ... |
작동 중인 설정을 마이그레이션했을 때, 휴대 가능한 부분들 — 글로벌 CLAUDE.md, 설정 (settings), 153개의 항목이 포함된 권한 허용 목록 (permission allowlist), 하나의 커스텀 기술 (custom skill), 훅 (hooks), 그리고 35개의 메모리 파일 (memory files) —은 총 46개의 파일과 0.13 MB에 불과했습니다. 해당 디렉토리의 나머지 모든 것(332 MB의 트랜스크립트 (transcripts), 824개 파일에 걸친 8.5 MB의 플러그인 캐시 (plugin cache))은 복사할 수 없거나 복사해서는 안 됩니다.
플러그인은 절대 복사해서는 안 되는 단 한 가지입니다. installed_plugins.json 매니페스트 (manifest)는 원래 디렉토리를 가리키는 절대 설치 경로 (absolute install paths)를 기록하므로, 복사된 플러그인 폴더는 잘못된 위치를 참조하게 됩니다. 대신 제대로 설치하십시오. 참고로 CLI 형식이 제공되므로 스크립트로 작성할 수 있습니다:
claude plugin install superpowers@claude-plugins-official
claude plugin install context7@claude-plugins-official
claude plugin list
자식 프로세스 (Child processes)는 CLAUDE_CONFIG_DIR을 상속받으므로, claude2 세션 내부에서 이를 실행하면 자동으로 올바른 디렉토리에 설치됩니다. Anthropic이 관리하는 마켓플레이스는 첫 로그인 시 자동으로 추가됩니다. plugins/known_marketplaces.json을 확인하면 이미 새로운 디렉토리를 가리키고 있는 것을 볼 수 있습니다. 나머지 내용은 Anthropic의 플러그인 검색 문서 (plugin discovery docs)에서 확인할 수 있습니다.
MCP 서버도 언급할 가치가 있습니다. 각 Claude Code 인스턴스는 MCP 서버를 공유하는 대신 자신만의 MCP 서버 프로세스를 생성합니다. 저희 기기에서는 세 개의 동시 세션이 세 개의 별도 context7-mcp 프로세스 쌍을 생성했습니다. 두 개의 계정을 사용한다는 것은 메모리 점유율과 디렉터리당 설정이 두 배가 된다는 것을 의미합니다. 이 서버들이 어떻게 연결되는지 생소하신가요? MCP가 실제로 무엇인지에 대한 저희의 설명글부터 시작해 보세요.
훅 트랩(The Hook Trap): 두 계정이 상태를 조용히 공유할 때
이것은 다른 어떤 가이드에서도 경고하지 않는 실패 모드이며, 설정을 복사하여 사용할 때만 나타납니다. 그리고 그것이 바로 여러분이 하게 될 행동입니다.
훅(Hooks)은 settings.json에 구성되지만, 훅이 호출하는 스크립트는 경로를 직접 참조하는 일반적인 셸(shell) 파일입니다. 전형적인 세션 상태(session-state) 훅은 다음과 같습니다:
$stateFile = "$env:USERPROFILE\.claude\task_state.json"
이 스크립트를 두 번째 설정 디렉터리로 복사하면 경로는 여전히 첫 번째 디렉터리를 가리킵니다. 이제 두 계정 모두 하나의 상태 파일을 읽고 쓰게 됩니다. 계정 B에 의해 저장된 세션 요약이 계정 A의 다음 세션에 주입됩니다. 오류는 발생하지 않습니다. 경고 로그도 남지 않습니다. 훅은 매번 성공을 보고합니다.
해결 방법은 경로를 하드코딩(hard-coding)하는 대신 환경 변수로부터 유도하는 것입니다:
$configDir = if ($env:CLAUDE_CONFIG_DIR) { $env:CLAUDE_CONFIG_DIR } else { "$env:USERPROFILE\.claude" }
$stateFile = Join-Path $configDir 'task_state.json'
이 폴백(fallback) 방식은 스크립트를 재배치 가능하게 만들면서도, 기존 계정의 동작을 바이트 단위로 동일하게 유지합니다. 여러분이 작성한 모든 훅 스크립트와 모든 헬퍼 도구(helper tool)에 하드코딩된 ~/.claude가 있는지 전수 조사하십시오. 저희의 경우,

두 개의 계정을 실행하면 사용량 제한이 두 배가 되나요?
두 디렉터리가 서로 다른 두 개의 계정을 보유하고 있는 경우에만 그렇습니다. CLAUDE_CONFIG_DIR은 할당량 (quota)이 아닌 자격 증명 (credentials)을 격리합니다. 제한은 계정별로 적용되므로, 동일한 계정을 두 디렉터리에 모두 로그인하면 두 터미널 모두 단일 풀 (pool)을 소모하게 됩니다. 즉, 병렬 창을 얻는 것이지 추가적인 용량을 얻는 것이 아닙니다.
Anthropic은 두 단계로 제한을 적용합니다: 짧은 폭발적 사용을 위한 5시간 단위의 이동 창 (rolling window), 그리고 Claude Code 활성 시간에 대한 주간 상한선입니다. 공개된 제한 사항 세부 정보에 따르면, 현재 구조는 다음과 같습니다:
| 플랜 | 5시간 단위 창당 | 주간 Claude Code 사용량 |
|---|---|---|
| Max 5x ($100/mo) | ~225 메시지 | 140–280 시간 |
| Max 20x ($200/mo) | ~900 메시지 | 240–480 시간 |
이 문제를 생각하는 방식을 바꿔줄 두 가지 사실이 더 있습니다. Anthropic은 2026년 5월 6일에 Pro, Max, Team 및 시트 기반 Enterprise 플랜의 5시간 제한을 두 배로 늘렸으며, Pro 및 Max 플랜에 대한 피크 시간대 감소 정책을 제거했습니다. 또한 Pro/Max 사용량은 **Claude chat과 Claude Code 간에 공유되는 풀 (shared pool)**입니다. 즉, 오전에 채팅을 과도하게 사용하면 동일한 시간대 내에서 에이전트가 사용할 수 있는 양이 줄어듭니다.
실질적인 결과는 다음과 같습니다: 터미널 개수를 늘리는 데는 비용이 들지 않습니다. 유휴 상태의 터미널은 아무것도 소모하지 않습니다. 할당량을 소모하는 것은 작업량입니다. 하나의 작업을 두 세션으로 나누는 것은 사실 한 번에 수행하는 것보다 약간 더 비용이 많이 듭니다. 각 세션이 자체 컨텍스트 (context)를 다시 로드하고 자체 프롬프트 캐시 (prompt cache)를 예열해야 하기 때문입니다. 병렬 에이전트를 실행하는 것은 효율성이 아니라 실제 소요 시간 (wall-clock speed)에 관한 문제입니다. 이는 저희가 병렬 AI 코딩 에이전트를 살펴볼 때 다루었던 것과 동일한 트레이드오프 (trade-off)입니다.
순차적 페일오버 (Sequential Failover)인가 병렬 세션 (Parallel Sessions)인가: 실제로 무엇이 필요한가요?
이러한 설정을 시도하는 대부분의 개발자는 매우 서로 다른 두 가지 목적 중 하나를 원하며, 그에 따라 적절한 구성(configuration)도 달라집니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기