목차
개요
하나의 PC에서 회사용 계정과 개인용 계정을 함께 쓰는 경우가 있습니다. 예를 들어 회사 디렉터리에서는 회사 구독으로, 개인 블로그나 사이드 프로젝트 디렉터리에서는 개인 구독으로 Claude Code를 쓰고 싶을 수 있습니다.
이때 가장 걱정되는 건 잘못된 계정으로 작업하는 사고입니다. 개인 프로젝트를 회사 계정으로 작업하거나, 그 반대의 상황 말이죠. 이번 포스트에서는 다음 순서로 두 계정을 안전하게 분리하는 방법을 정리합니다.
CLAUDE_CONFIG_DIR로 계정별 설정 디렉터리 분리하기- macOS의 인증 토큰 공유 문제를
CLAUDE_CODE_OAUTH_TOKEN으로 해결하기 - 작업 디렉터리에 따라 계정이 자동으로 전환되도록
.zshrc구성하기
예시에서는 회사 계정을 기본(
~/.claude)으로 두고,~/personal아래 디렉터리에서만 개인 계정으로 전환합니다. 경로는 각자 환경에 맞게 바꿔 사용하시면 됩니다.
한 PC에서 여러 계정을 사용할 수 있을까?
결론부터 말하면 가능합니다. 다만 Claude Code에는 “계정 전환” 기능이 따로 있는 것은 아니고, 다음 두 가지 방식 중 하나를 사용합니다.
- 같은 설정 디렉터리 공유:
/logout후 다른 계정으로 다시 로그인하는 방식. 한 번에 하나의 계정만 유지됩니다. - 설정 디렉터리 분리:
CLAUDE_CONFIG_DIR환경 변수로 계정마다 다른 디렉터리를 지정해, 인증 정보와 설정을 완전히 격리하는 방식.
매번 로그아웃·로그인을 반복하는 건 번거롭고 실수하기 쉬우므로, 이 글에서는 후자인 디렉터리 분리 방식을 사용합니다.
settings.json은 여러 계정이 공유할까?
settings.json은 계정이 아니라 디렉터리에 종속됩니다. 즉, 어떤 계정으로 로그인했는지와 무관하게 다음 위치를 그대로 사용합니다.
| 파일 | 범위 | 위치 |
|---|---|---|
| 사용자 전역 설정 | 모든 프로젝트 | ~/.claude/settings.json |
| 프로젝트 설정 | 저장소(팀 공유) | .claude/settings.json |
| 로컬 설정 | 개인(gitignore 대상) | .claude/settings.local.json |
따라서 기본 상태에서는 여러 계정이 같은 ~/.claude/settings.json을 공유하게 됩니다. 계정마다 다른 전역 설정을 쓰고 싶다면, 설정 디렉터리 자체를 분리해야 합니다.
CLAUDE_CONFIG_DIR로 설정 디렉터리 분리하기
CLAUDE_CONFIG_DIR 환경 변수를 지정하면, Claude Code는 그 디렉터리를 설정 루트로 사용합니다. settings.json, 계정 메타 정보(.claude.json), MCP 설정, 캐시, 히스토리 등이 모두 그 아래에 저장됩니다.
# 개인 계정으로 실행
export CLAUDE_CONFIG_DIR="$HOME/.claude-personal"
claude
이렇게 하면 개인 계정은 ~/.claude-personal/settings.json을, 회사 계정은 기본 ~/.claude/settings.json을 사용하게 되어 설정이 분리됩니다.
디렉터리는 첫 실행·로그인 시 자동으로 생성되므로 미리 만들어 둘 필요는 없습니다.
macOS의 함정 — 인증 토큰은 Keychain을 공유한다
여기서 macOS 사용자는 한 가지 함정을 만납니다. 공식 문서에 따르면 CLAUDE_CONFIG_DIR로 .credentials.json이 분리되는 것은 Linux와 Windows에서만 동작합니다.
macOS에서는 인증 토큰이 항상 단일 Keychain 항목(Claude Code-credentials)에 저장되며, CLAUDE_CONFIG_DIR의 영향을 받지 않습니다. 실제로 Keychain을 확인해 보면 다음과 같이 하나의 항목만 존재합니다.
security find-generic-password -s "Claude Code-credentials" | grep -E "svce|acct"
# "acct"<blob>="사용자명"
# "svce"<blob>="Claude Code-credentials"
즉, 설정 디렉터리만 분리하면 settings.json과 계정 메타 정보는 나뉘지만, 실제 로그인 토큰은 여전히 공유됩니다. 두 번째 계정으로 로그인하는 순간 첫 번째 계정의 토큰을 덮어쓰게 되어, 디렉터리를 옮길 때마다 재로그인이 필요한 상황이 됩니다.
CLAUDE_CODE_OAUTH_TOKEN으로 계정 분리하기
macOS에서 이 문제를 해결하는 공식적인 방법은 CLAUDE_CODE_OAUTH_TOKEN 환경 변수입니다. 이 변수가 설정되어 있으면 Keychain보다 우선하므로, 토큰 충돌이나 재로그인 없이 계정을 분리할 수 있습니다.
전략은 이렇습니다.
- 회사 계정: 기본
~/.claude+ 기존 Keychain 로그인을 그대로 사용 (별도 토큰 불필요) - 개인 계정:
~/.claude-personal+CLAUDE_CODE_OAUTH_TOKEN으로 인증
CLAUDE_CODE_OAUTH_TOKEN은 Keychain보다 우선하므로, 회사 계정의 Keychain 로그인과 서로 충돌하지 않습니다.
먼저 개인 계정의 장기 토큰을 발급합니다. 아래 명령은 브라우저 로그인을 거쳐 1년짜리 OAuth 토큰을 출력합니다.
CLAUDE_CONFIG_DIR="$HOME/.claude-personal" claude setup-token
토큰을 .zshrc에 평문으로 적어두는 건 보안상 좋지 않으므로, macOS Keychain에 별도 항목으로 저장해 두고 필요할 때 읽어오는 방식을 사용합니다.
security add-generic-password -U -a "$USER" -s claude-token-personal -w '<발급받은 토큰>'
토큰을 사용하면 API 요금이 청구될까?
claude setup-token이 만드는 토큰은 구독 요금제(Pro/Max/Team/Enterprise)에 묶인 OAuth 토큰입니다. 평소 /login으로 로그인해서 사용하는 것과 동일한 방식이며, API처럼 토큰당 별도 과금이 되지 않습니다.
| 인증 방식 | 과금 | 구독 필요 |
|---|---|---|
CLAUDE_CODE_OAUTH_TOKEN (setup-token) | 구독 사용량 한도 (추가 과금 없음) | Pro/Max 이상 |
/login (대화형) | 구독 사용량 한도 | Pro/Max 이상 |
ANTHROPIC_API_KEY | 종량제(토큰당 과금) | 불필요 (Console 크레딧) |
단, setup-token은 Pro/Max 이상 유료 구독이 있어야 발급됩니다. 무료 계정에서는 동작하지 않습니다.
작업 디렉터리에 따라 계정 자동 전환하기
이제 핵심입니다. 매번 환경 변수를 직접 설정하는 대신, 현재 디렉터리에 따라 계정이 자동으로 선택되도록 만들면 잘못된 계정으로 작업하는 사고를 막을 수 있습니다.
zsh에는 디렉터리를 이동할 때마다 실행되는 chpwd 훅이 있습니다. 이를 이용해 현재 경로가 ~/personal 아래면 개인 계정을, 그 외에는 회사 계정을 사용하도록 환경 변수를 자동으로 바꿉니다.
.zshrc 설정
아래 내용을 ~/.zshrc에 추가합니다.
# Claude Code - 작업 디렉터리에 따라 계정 자동 분리
# personal/* -> 개인 계정 (~/.claude-personal, Keychain: claude-token-personal)
# 그 외 -> 회사/기본 계정 (~/.claude, 기존 Keychain 로그인 그대로)
_claude_pick_account() {
case "$PWD/" in
"$HOME/personal/"*)
export CLAUDE_CONFIG_DIR="$HOME/.claude-personal"
local tok; tok=$(security find-generic-password -s claude-token-personal -w 2>/dev/null)
if [ -n "$tok" ]; then
export CLAUDE_CODE_OAUTH_TOKEN="$tok"
else
unset CLAUDE_CODE_OAUTH_TOKEN # 토큰 미등록 시 공유 Keychain 로그인으로 폴백
fi
;;
*)
# 그 외 -> 회사/기본 계정: 기본 ~/.claude + 기존 Keychain 로그인
export CLAUDE_CONFIG_DIR="$HOME/.claude"
unset CLAUDE_CODE_OAUTH_TOKEN
;;
esac
}
autoload -U add-zsh-hook
add-zsh-hook chpwd _claude_pick_account
_claude_pick_account
마지막 줄에서 _claude_pick_account를 한 번 직접 호출하는 이유는, chpwd 훅이 디렉터리를 이동할 때만 동작하기 때문입니다. 새 터미널이 특정 디렉터리에서 시작되는 경우에도 올바른 계정이 선택되도록 셸 시작 시 한 번 실행해 줍니다.
개인 계정 토큰을 아직 Keychain에 등록하지 않았다면,
~/personal아래에서도 회사 계정(Keychain 로그인)으로 안전하게 폴백됩니다.
실행 시 활성 계정 표시하기
자동 전환만으로도 충분하지만, 지금 어떤 계정으로 실행되는지 한눈에 보이면 더 안심할 수 있습니다. claude 명령을 감싸는 래퍼 함수를 추가해, 실행 직전에 활성 계정을 출력하도록 합니다.
# claude 실행 시 현재 활성 계정 + 토큰 적용 여부를 안내
claude() {
local label dir="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"
case "$PWD/" in
"$HOME/personal/"*) label="personal" ;;
*) label="work (기본)" ;;
esac
local auth
if [ -n "$CLAUDE_CODE_OAUTH_TOKEN" ]; then
auth="%F{green}personal token 적용됨%f"
else
auth="%F{green}Keychain 로그인(work)%f"
fi
print -P "%F{cyan}▶ Claude 계정: %B${label}%b%f [${auth}%F{cyan}] (CLAUDE_CONFIG_DIR=${dir})%f"
command claude "$@"
}
이제 claude를 실행하면 다음과 같이 활성 계정이 표시됩니다.
▶ Claude 계정: work (기본) [Keychain 로그인(work)] (CLAUDE_CONFIG_DIR=/Users/사용자명/.claude)
▶ Claude 계정: personal [personal token 적용됨] (CLAUDE_CONFIG_DIR=/Users/사용자명/.claude-personal)
주의 — 계정은 claude를 실행한 순간에 고정된다
한 가지 중요한 점이 있습니다. CLAUDE_CODE_OAUTH_TOKEN과 CLAUDE_CONFIG_DIR은 claude 프로세스가 시작될 때 한 번만 읽힙니다. 따라서 계정은 claude를 실행한 순간의 디렉터리로 결정되며, 세션이 끝날 때까지 고정됩니다.
예를 들어 회사 디렉터리에서 Claude Code를 띄운 상태(회사 계정)에서, 세션 도중 “개인 블로그 글을 써줘”라고 시키면 어떻게 될까요?
→ 회사 계정 그대로 개인 블로그 작업이 수행됩니다. 세션 중에 Claude가 다른 디렉터리의 파일을 편집하더라도, 이미 실행 중인 프로세스의 계정은 바뀌지 않습니다. chpwd 훅은 대화형 셸에만 영향을 줄 뿐, 실행 중인 claude 내부에는 관여하지 않기 때문입니다.
따라서 회사 작업과 개인 작업은 각각의 디렉터리에서 별도의 세션(별도 터미널)으로 실행해야 합니다.
| 하고 싶은 일 | 해야 할 것 |
|---|---|
| 회사 업무 | 회사 디렉터리에서 claude 실행 |
| 개인 블로그·사이드 프로젝트 | 새 터미널에서 ~/personal로 이동 후 claude 실행 |
앞서 추가한 실행 시 안내 메시지가 바로 이 실수를 잡아주는 안전장치 역할을 합니다.
설정 적용하기
설정을 마쳤다면 다음 순서로 적용하고 확인합니다.
# 1) (개인 계정) 토큰 발급 및 Keychain 저장
CLAUDE_CONFIG_DIR="$HOME/.claude-personal" claude setup-token
security add-generic-password -U -a "$USER" -s claude-token-personal -w '<발급받은 토큰>'
# 2) 설정 적용
source ~/.zshrc
# 3) 디렉터리별로 확인
cd ~/personal && claude # ▶ personal
cd ~ && claude # ▶ work (기본)
각 디렉터리에서 claude 실행 시 의도한 계정이 표시되면 정상입니다.
완료
이것으로 한 PC에서 회사용·개인용 Claude Code 계정을 분리하고, 작업 디렉터리에 따라 자동으로 전환되도록 구성하는 방법을 알아보았습니다. 핵심을 정리하면 다음과 같습니다.
settings.json은 계정이 아니라 디렉터리(CLAUDE_CONFIG_DIR)에 종속된다.- macOS에서는 인증 토큰이 Keychain을 공유하므로, 개인 계정은
CLAUDE_CODE_OAUTH_TOKEN으로 분리한다. chpwd훅으로 디렉터리에 따라 계정을 자동 전환하고, 실행 시 안내 메시지로 사고를 방지한다.- 계정은
claude실행 시점에 고정되므로, 회사·개인 작업은 별도 세션으로 진행한다.
여러 계정을 오가며 작업하다 잘못된 계정으로 커밋하거나 작업한 경험이 있다면, 한 번 설정해 두는 것만으로 큰 안심이 되니 꼭 적용해 보시기 바랍니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku가 개발한 앱을 한번 사용해보세요.Deku가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.