

【設定・環境構築】Claude Code をプロジェクトごとに別アカウント/サブスクで使い分ける — CLAUDE_CONFIG_DIR × zsh 自動切替
CLAUDE_CONFIG_DIR と zsh の chpwd フックを組み合わせ、ディレクトリ移動だけで自動切替する方法を紹介します。はじめに
Claude Code を複数の用途で使っていると、「このプロジェクトだけは別の Claude アカウント(別のサブスクリプション)で動かしたい」という場面があります。たとえば個人用と業務用でプランを分けている、請求を分けたい、といったケースです。
Claude Code のログイン状態はマシン全体で共有されるように見えますが、実際には設定ディレクトリ単位で保持されています。この記事では、その仕組みを使って「特定ディレクトリ配下にいるときだけ別アカウントに自動で切り替わる」環境を作ります。
この記事でわかること
-
Claude Code の認証スコープが「設定ディレクトリ単位」であること
-
CLAUDE_CONFIG_DIR環境変数で設定・認証を丸ごと分離する方法 -
zsh の
chpwdフックでディレクトリ移動に連動して自動切替する設定 -
プロジェクト固有設定(
.claude/)との関係と注意点
対象読者
-
Claude Code (CLI) を日常的に使っている人
-
複数の Claude アカウント/サブスクリプションを使い分けたい人
-
macOS + zsh 環境を想定(Linux/bash でも考え方は同じ)
前提条件
-
Claude Code CLI(v2 系で動作確認)
-
シェルは zsh
-
切り替え先として、もう一つの Claude アカウント(サブスクリプション)
1. 認証は「設定ディレクトリ単位」
Claude Code の設定・認証情報はデフォルトで ~/.claude 配下に置かれます。ログイン状態もここに紐づくため、/login で切り替えるとマシン全体に影響します。
ここで効いてくるのが CLAUDE_CONFIG_DIR 環境変数です。これを指定すると、Claude Code は設定ディレクトリそのものを差し替えて起動します。別ディレクトリを指定すれば、そこに独立した設定・独立したログイン状態を持てます。
つまり「アカウントごとに設定ディレクトリを分ける」のが基本戦略になります。
-
デフォルト:
~/.claude(アカウントA) -
切替用:
~/.alt-claude(アカウントB)
2. 切替用ディレクトリで別アカウントにログイン
まず、切替先アカウント用の設定ディレクトリを作り、そこで /login します。CLAUDE_CONFIG_DIR を付けて起動するのがポイントです。
CLAUDE_CONFIG_DIR="$HOME/.alt-claude" claude
# 起動後、/login で別アカウントを認証 → /exit
初回起動時はフォルダの信頼確認(“Do you trust this folder?”)が再度表示されます。新しい設定ディレクトリには信頼履歴がないためで、自分の作業フォルダなら信頼して問題ありません。ログインが終われば、~/.alt-claude 配下にアカウントB のログイン状態が保存されます。
3. ディレクトリ移動で自動切替(zsh chpwd)
毎回環境変数を付けて起動するのは面倒なので、「特定ディレクトリ配下に入ったら自動で CLAUDE_CONFIG_DIR をセット、出たら解除」という仕組みを zsh の chpwd フックで作ります。~/.zshrc に以下を追記します(work/project-a の部分を対象プロジェクトのパスに置き換えてください)。
# 特定プロジェクト配下でだけ別アカウント設定を使う
_claude_config_switch() {
case "$PWD" in
"$HOME/work/project-a"*)
export CLAUDE_CONFIG_DIR="$HOME/.alt-claude" ;;
*)
unset CLAUDE_CONFIG_DIR ;;
esac
}
autoload -U add-zsh-hook
add-zsh-hook chpwd _claude_config_switch
_claude_config_switch # シェル起動時にも即適用
add-zsh-hook chpwd でディレクトリ移動のたびに関数が走ります。最終行は、シェルを起動した時点のカレントディレクトリにも判定を効かせるためのものです。
4. 動作確認
対象ディレクトリと、それ以外で環境変数が切り替わるか確認します。
cd ~/work/project-a && echo "$CLAUDE_CONFIG_DIR"
# → /Users/you/.alt-claude が出ればOK
cd ~ && echo "[${CLAUDE_CONFIG_DIR}]"
# → [] (空) ならデフォルトに戻っている
対象配下では切替用ディレクトリ、それ以外では空(=デフォルトの ~/.claude)になっていれば成功です。あとは対象プロジェクトで claude を起動するだけで、自動的にアカウントB で動きます。
5. エイリアス方式(自動切替が不要なら)
ディレクトリ連動が好みでなければ、明示的なエイリアスでも同じことができます。
alias alt-claude='CLAUDE_CONFIG_DIR="$HOME/.alt-claude" claude'
alt-claude と打ったときだけ別アカウントで起動します。シンプルですが、起動コマンドを使い分ける必要があります。
Tips
-
CLAUDE_CONFIG_DIRが差し替えるのはグローバル設定・認証(~/.claude相当)であり、プロジェクト内の.claude/(共有 settings / hooks / skills 等)はリポジトリから今まで通り読まれる。チームの harness 設定はそのまま効く。 -
個人 override(
settings.local.jsonなど)は新しい設定ディレクトリ側では空になる。必要なら作り直す。 -
自動切替が効くのは「新しく起動する
claudeプロセス」に対して。すでに起動中のセッションのアカウントは途中では変わらない。 -
API キー方式(
ANTHROPIC_API_KEYをエイリアスで切替)でも分離できるが、それは従量課金の API 利用になる。サブスクリプションを使い分けたい場合は本記事のCLAUDE_CONFIG_DIR方式が適切。
トラブルシューティング
-
切り替わらない:
echo $CLAUDE_CONFIG_DIRで現在値を確認。source ~/.zshrcで再読み込みしたか、対象パスの綴りが合っているかをチェックする。 -
再ログインしたい: 切替先で
CLAUDE_CONFIG_DIR="$HOME/.alt-claude" claudeを起動して/loginし直す。各ディレクトリのログインは独立している。 -
フォルダ信頼を毎回聞かれる: 設定ディレクトリごとに信頼履歴が別管理になっている。新ディレクトリ初回のみの挙動。
まとめ
-
Claude Code の認証は「アカウント単位」ではなく「設定ディレクトリ単位」。
-
CLAUDE_CONFIG_DIRで設定・ログインを丸ごと分離できる。 -
zsh の
chpwdフックで、特定プロジェクト配下に入ったときだけ自動でアカウント切替が可能。 -
プロジェクト内の
.claude/設定は影響を受けないので、チーム共有の harness はそのまま使える。
複数アカウント/サブスクリプションを使い分けたい人にとって、CLAUDE_CONFIG_DIR は最も素直で安全な分離手段です。


