Багодельня
Инструменты и плагины

Личный и рабочий 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, которая подменяет конфиг по пути:

~/.zshrc
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:

~/.zshrc
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
export DISABLE_TELEMETRY=1

Часть этих флагов всплыла в утёкших исходниках Claude Code. Ничего секретного там нет — но пара переменных вроде CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC оттуда удобно вытаскивается. Все упомянутые здесь флаги есть и в официальном списке env-переменных.

Проверь себя

  1. 1. Что делает CLAUDE_CONFIG_DIR?

  2. 2. Зачем в обёртке-функции нужен `command claude`, а не просто `claude`?

  3. 3. Что делает CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1?

On this page