Личный и рабочий Claude Code в одном шелле
Как развести личный и рабочий конфиги Claude Code по директориям через CLAUDE_CONFIG_DIR, и какие env-флаги отключают автообновление и телеметрию.
Claude Code хранит всё в одной папке — ~/.claude: настройки, креды аккаунта, историю сессий, плагины. Если ты работаешь и под личным аккаунтом, и под рабочим (корпоративным), они мешаются: рабочая история и доступы текут в личный конфиг и наоборот. Развести их помогает переменная CLAUDE_CONFIG_DIR.
Идея: свой конфиг для рабочих папок
CLAUDE_CONFIG_DIR переопределяет каталог, где Claude Code держит конфиг (по умолчанию ~/.claude). Значит, можно сказать: «в рабочих директориях бери конфиг из ~/.claude-work, везде — личный по умолчанию». Делается обёрткой-функцией в rc-файле шелла, которая смотрит на текущую папку.
Функция для ~/.zshrc
Добавь в ~/.zshrc (или ~/.bashrc — аналогично) функцию claude, которая подменяет конфиг по пути:
claude() {
case "$PWD" in
# путь к директории с твоими РАБОЧИМИ проектами:
/Volumes/sensitive/code.noindex/uspio*)
CLAUDE_CONFIG_DIR=~/.claude-work \
DISABLE_AUTOUPDATER=1 DISABLE_TELEMETRY=1 \
command claude "$@"
;;
# всё остальное — личный конфиг (~/.claude):
*)
DISABLE_AUTOUPDATER=1 DISABLE_TELEMETRY=1 \
command claude "$@"
;;
esac
}Что здесь к чему:
case "$PWD"— смотрит на текущую директорию. Под шаблон рабочих проектов (…/uspio*) уходит ветка с рабочим конфигом, иначе — личный.CLAUDE_CONFIG_DIR=~/.claude-work— путь, где лежит рабочий конфиг (свой логин, история, плагины). Поменяй на свой.command claude— вызывает настоящий бинарь, а не саму функцию (иначе была бы рекурсия).
CLAUDE_CONFIG_DIR держит всё окружение: настройки, креды, историю сессий и плагины. Поэтому рабочий и личный Claude Code получают полностью раздельные аккаунты и подписки — ничего не пересекается.
Env-флаги: меньше лишнего трафика
В примере выше уже стоят DISABLE_AUTOUPDATER=1 и DISABLE_TELEMETRY=1. Что они делают:
| Флаг | Эффект |
|---|---|
DISABLE_AUTOUPDATER=1 | не обновляет CLI сам (полезно, когда версию пинит команда/CI) |
DISABLE_TELEMETRY=1 | не шлёт телеметрию использования |
DISABLE_INSTALLATION_CHECKS=1 | не проверяет окружение установки при старте |
Не хочешь перечислять по одному — есть зонтичный флаг:
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1Он одним махом выключает весь необязательный трафик: DISABLE_AUTOUPDATER, DISABLE_TELEMETRY, DISABLE_FEEDBACK_COMMAND и DISABLE_ERROR_REPORTING. Удобно проставить глобально в том же ~/.zshrc:
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
export DISABLE_TELEMETRY=1Часть этих флагов всплыла в утёкших исходниках Claude Code. Ничего секретного там нет — но пара переменных вроде CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC оттуда удобно вытаскивается. Все упомянутые здесь флаги есть и в официальном списке env-переменных.
Проверь себя
1. Что делает CLAUDE_CONFIG_DIR?
2. Зачем в обёртке-функции нужен `command claude`, а не просто `claude`?
3. Что делает CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1?