Два Claude Desktop на одном Mac в одну кнопку
Sergey Gordeychik
Обычно я пишу всякое сложное — про кибербез, кризис воспроизводства профессий и прочий АйАй-ужас. Сегодня коротко и практично: как удобно работать с двумя Claude на одном macOS — под разными аккаунтами, одновременно, чтобы личное и рабочее не смешивалось.
Проблема
Claude Desktop хранит сессию в одном фиксированном профиле (~/Library/Application Support/Claude). Второе окно — тот же аккаунт. Даже open -n не помогает: профиль общий. А держать личный и рабочий аккаунт хочется рядом, не разлогиниваясь по десять раз в день.
Идея
Оказывается, приложение умеет запускаться с другим профилем — но не через флаг командной строки, а через переменную окружения. В коде main-процесса (Electron) буквально:
if (process.env.CLAUDE_USER_DATA_DIR) { app.setPath("userData", process.env.CLAUDE_USER_DATA_DIR) }
Значит, можно обернуть тот же самый подписанный бинарник в маленький .app-лаунчер, который выставляет CLAUDE_USER_DATA_DIR в отдельную папку. Никакой второй закачки и копии на 400 МБ — просто другой профиль. Блокировка «один экземпляр» у Claude привязана к профилю, поэтому два разных профиля — это два полноценных инстанса рядом.
Две засады
1. Ловушка Rosetta. Бинарник универсальный (x86_64 + arm64). При «наивном» запуске второй экземпляр стартовал под Rosetta как транслируемый x86_64 — и Chromium начинал жечь ядро под 100%, всё дико тормозило.
sample "Claude Work" 1 | grep 'Code Type' # Code Type: X86-64 (translated) ← вот она, беда
Лечится форсом arm64 в лаунчере (exec /usr/bin/arch -arm64 …) плюс LSArchitecturePriority/LSRequiresNativeExecution в Info.plist. После этого — Code Type: ARM64, CPU в норме.
2. Сессии Claude Code. Транскрипты лежат глобально в ~/.claude/projects и общие для всех. Но десктоп ведёт свой индекс сессий по каждому профилю и аккаунту (claude-code-sessions/<account>/<org>/…). Новый профиль этот индекс не видит — список пустой, хотя транскрипты на месте. Достаточно скопировать папку нужного аккаунта — и сессии возвращаются.
Как поставить
Я собрал это в маленький репозиторий claude-clone с деплоем в одну команду:
git clone https://github.com/<you>/claude-clone && cd claude-clone chmod +x install.sh sync-sessions.sh ./install.sh -n "Claude Work" -b W --copy-settings --copy-sessions
Скрипт создаёт .app-обёртку, изолированный профиль и отдельную иконку (перекрашенный фон + буква-бейдж в углу), чтобы два Claude не путались в Доке. Флаг --copy-sessions подтянет существующие сессии Claude Code (а если их нет — просто начнёт с чистого листа). Дальше — запускаешь «Claude Work», логинишься вторым аккаунтом, и всё.
Что осознанно не копируется: токены логина, куки, локальное хранилище — весь смысл в другом аккаунте. Системный прокси, если он у вас есть, оба инстанса подхватывают сами (Chromium читает системные настройки).
Итог
Пять минут работы — и два независимых Claude живут рядом: личный и рабочий, каждый со своей историей, своей иконкой и нормальной нативной скоростью.
Репозиторий со скриптами: https://github.com/scadastrangelove/claude-clone
P.S. Это неофициальный трюк на основе поведения приложения (переменная окружения CLAUDE_USER_DATA_DIR) — в будущих версиях может измениться. На момент написания работает на Apple Silicon, Claude Desktop 1.17.x.
