メインコンテンツへスキップ
kt-tech.blog

【設定・環境構築】Claude Code をプロジェクトごとに別アカウント/サブスクで使い分ける — CLAUDE_CONFIG_DIR × zsh 自動切替

設定・環境構築6分で読めます

この記事でわかること

  • Claude Code のログイン状態はアカウント単位ではなく、設定ディレクトリ単位だということ
  • CLAUDE_CONFIG_DIR で設定ごと分けて、別サブスクにログインする手順
  • zsh の chpwd フックで、ディレクトリを移動するだけで切り替える設定
  • プロジェクト内の .claude/ は影響を受けないので、チーム共有設定はそのまま使えること

Claude Code CLI と zsh。切り替え先の Claude アカウント(サブスクリプション)がもう一つあること。macOS 想定ですが Linux でも考え方は同じです。

Claude Code の認証は「アカウント単位」ではなく「設定ディレクトリ単位」。この性質を使えば、特定のプロジェクトでだけ別の Claude サブスクリプション/アカウントを使い分けられます。CLAUDE_CONFIG_DIR と zsh の chpwd フックを組み合わせ、ディレクトリ移動だけで自動切替する方法を紹介します。

はじめに

Claude Code を複数の用途で使っていると、「このプロジェクトだけは別の Claude アカウント(別のサブスクリプション)で動かしたい」という場面があります。たとえば個人用と業務用でプランを分けている、請求を分けたい、といったケースです。

Claude Code のログイン状態はマシン全体で共有されるように見えますが、実際には設定ディレクトリ単位で保持されています。この記事では、その仕組みを使って「特定ディレクトリ配下にいるときだけ別アカウントに自動で切り替わる」環境を作ります。

1. 認証は「設定ディレクトリ単位」

Claude Code の設定・認証情報はデフォルトで ~/.claude 配下に置かれます。ログイン状態もここに紐づくため、/login で切り替えるとマシン全体に影響します。

ここで効いてくるのが CLAUDE_CONFIG_DIR 環境変数です。これを指定すると、Claude Code は設定ディレクトリそのものを差し替えて起動します。別ディレクトリを指定すれば、そこに独立した設定・独立したログイン状態を持てます。

つまり「アカウントごとに設定ディレクトリを分ける」のが基本戦略になります。

  • デフォルト: ~/.claude(アカウントA)
  • 切替用: ~/.alt-claude(アカウントB)

2. 切替用ディレクトリで別アカウントにログイン

まず、切替先アカウント用の設定ディレクトリを作り、そこで /login します。CLAUDE_CONFIG_DIR を付けて起動するのがポイントです。

Bash
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 の部分を対象プロジェクトのパスに置き換えてください)。

JavaScript
# 特定プロジェクト配下でだけ別アカウント設定を使う
_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. 動作確認

対象ディレクトリと、それ以外で環境変数が切り替わるか確認します。

Bash
cd ~/work/project-a && echo "$CLAUDE_CONFIG_DIR"
# → /Users/you/.alt-claude が出ればOK

cd ~ && echo "[${CLAUDE_CONFIG_DIR}]"
# → [] (空) ならデフォルトに戻っている

対象配下では切替用ディレクトリ、それ以外では空(=デフォルトの ~/.claude)になっていれば成功です。あとは対象プロジェクトで claude を起動するだけで、自動的にアカウントB で動きます。

5. エイリアス方式(自動切替が不要なら)

ディレクトリ連動が好みでなければ、明示的なエイリアスでも同じことができます。

JavaScript
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 は最も素直で安全な分離手段です。

参考リンク

更新履歴

  1. zsh 設定のコードブロックの言語指定を javascript から bash に修正し、ファイルパスをキャプションに追加。セクションの下に入り込んでいた Tips 見出しの階層を修正。参考リンクの節を新設し、関連記事を追加。「この記事でわかること」「対象読者」「前提条件」を概要プロパティへ移動。

この記事のタグ