まとめ
- Claude Codeは
CLAUDE_CONFIG_DIRで設定ディレクトリを切り替えられる CLAUDE_PROFILEは標準ではないので、シェル関数でCLAUDE_PROFILE→CLAUDE_CONFIG_DIRに変換する~/.claude.jsonはOAuth sessionなどを含むので共有しないprojects、sessions、transcripts、history.jsonlあたりだけsymlinkすると、認証は分けつつ履歴はだいたい共有できる
CLAUDE_PROFILEを作る
~/.zshrcなどに追加する:
claude() {
local dir
case "${CLAUDE_PROFILE:-default}" in
default|work) dir="$HOME/.claude" ;;
personal) dir="$HOME/.claude-personal" ;;
*)
echo "unknown CLAUDE_PROFILE: ${CLAUDE_PROFILE}" >&2
echo "expected: default, work, or personal" >&2
return 2
;;
esac
CLAUDE_CONFIG_DIR="$dir" command claude "$@"
}
claude
CLAUDE_PROFILE=personal claude
CLAUDE_PROFILE=personal claude auth login
セッションだけ共有する
~/.claude-personalを作り、共有したいものだけ~/.claudeへsymlinkする。
profile="$HOME/.claude-personal"
shared="$HOME/.claude"
mkdir -p "$profile"
for item in projects sessions transcripts todos file-history history.jsonl; do
[ -e "$shared/$item" ] || continue
[ -e "$profile/$item" ] || [ -L "$profile/$item" ] || ln -s "$shared/$item" "$profile/$item"
done
注意点
~/.claude.jsonやcredentials、token、oauth、authっぽいファイルは共有しない--continueやtrust設定など、.claude.json側のstateに寄るものはprofileごとに分かれることがある- Claude Code公式の想定は
CLAUDE_CONFIG_DIR単位の分離なので、この構成はsymlink運用