Why split configs
If you use Claude Code with more than one profile or provider, it's much nicer to keep each profile's config separate. Every profile gets its own environment, and you can run multiple instances at once without them stepping on each other.
The setup
It's one small shell function — drop it into .zshrc or .bashrc:
```bash
Setup separated configuration for claude code
_claude_with_profile() { export CLAUDE_CONFIG_DIR="$1" command claude "${@:2}"}
Personal profile (default)
claude() { _claude_with_profile "$HOME/.claude" "$@"}
Second profile (zai)
zai-claude() { _claude_with_profile "$HOME/.zai-claude" --dangerously-skip-permissions "$@"}```
From there, create each config directory under $HOME and adjust its settings.json for the provider it uses.
What you get
Everything stays tidy: switching context is trivial, and running several sessions side by side with different configs just works. It fits whether you're on a personal account, another provider, or a dedicated agent setup.
To start a session, just run: claude, zai-claude, agentrouter-claude.