Как установить Claude Code на Windows: нативно и через WSL2

Как установить Claude Code на Windows: нативно и через WSL2

На момент апреля 2026 года установка и настройка Claude Code на Windows требует внимательного подхода — особенно в профессиональной среде. В команде из девяти человек, работающих с AWS и 150+ аккаунтами, двое используют Windows, включая автора. Опыт эксплуатации Claude Code за год позволил выработать устойчивые практики, актуальные для последних версий (2.1.105+).

Зачем Windows-опыт важен

Несмотря на доминирование Linux в команде, Windows-экспертиза остаётся критичной: отладка Lambda-парсеров для Windows Events, написание и поддержка сложных PowerShell-скриптов, SSM-документов и работа с корпоративными инструментами Azure. Поэтому Claude Code должен работать на Windows стабильно и производительно, даже если основная работа ведётся с Linux-ориентированными окружениями.

Нативная установка на Windows

Установка напрямую в Windows — правильный выбор, если:

  • Нужно быстро протестировать Claude Code без сложной настройки
  • Работа ведётся с .NET, WPF, WinForms — технологиями, привязанными к Windows API, WMI или реестру
  • Основной стек — PowerShell, DSC-конфигурации или SSM-документы с PowerShell
  • Используются Azure или другие корпоративные Windows-инструменты
  • Требуется воспроизвести баг, специфичный для Windows

Для установки необходимо наличие Git Bash — он используется Claude Code для выполнения команд. Если winget отсутствует, Git можно скачать с официального сайта. При установке достаточно оставить все настройки по умолчанию: Git Bash, интеграция с проводником, добавление в PATH.

PowerShell: 5.1 vs 7+

В Windows по умолчанию установлен powershell.exe — это PowerShell 5.1 на .NET Framework, развитие которого прекращено. Рекомендуется использовать pwsh — PowerShell 7+, кроссплатформенный и активно развиваемый Microsoft. Он устанавливается отдельно, не требует перезагрузки и сосуществует с 5.1 без конфликтов.

Все дальнейшие команды рассчитаны на pwsh. Для удобства рекомендуется Windows Terminal — он позволяет запускать параллельно PowerShell и Linux-сессии в соседних вкладках.

Установка Claude Code

Установщик автоматически скачает бинарник, добавит его в PATH и настроит автообновление. Node.js и npm не требуются. Альтернатива — установка через WinGet:

winget install Anthropic.ClaudeCode

Однако при этом обновления придётся выполнять вручную командой winget upgrade.

Если команда claude не распознаётся, возможно, установщик не прописал PATH или консоль не перезапущена. В этом случае путь можно добавить вручную.

Аутентификация и доступ

Бесплатный план Claude не включает Claude Code. Требуется один из вариантов:

  • Claude Pro или Max — личная подписка на claude.ai
  • Claude for Teams или Enterprise — корпоративный аккаунт
  • Claude Console — аккаунт разработчика с биллингом через API
  • Интеграция через облачные платформы: Amazon Bedrock, Google Vertex AI, Microsoft Foundry
  • В России в 2026 году официальный доступ отсутствует, но существуют обходные пути

Для большинства пользователей достаточно запустить claude — откроется браузер для входа через claude.ai. Если браузер не открывается, можно нажать c — URL скопируется в буфер, его нужно вставить вручную, войти и вернуть код в терминал.

API-ключ требуется только при использовании Console (биллинг через API). Он задаётся через файл ~/.claude/config или переменную окружения ANTHROPIC_API_KEY.

Важно: если ANTHROPIC_API_KEY задан, он имеет приоритет над подпиской. При устаревании или отзыве ключа аутентификация сломается. Проверить текущий метод можно командой status внутри Claude Code.

Работа с PowerShell в Claude Code

По умолчанию Claude Code использует Git Bash, что вызывает проблемы в PowerShell-проектах: переменные $_, $?, конвейеры — всё ломается из-за предварительной интерпретации в bash.

Начиная с версии 2.1.84, доступно решение — настройка в файле %USERPROFILE%\.claude\settings.json:

  • CLAUDE_CODE_USE_POWERSHELL_TOOL=1 — регистрирует PowerShell как отдельный инструмент. Claude Code автоматически определит pwsh.exe (7+) или powershell.exe (5.1).
  • "defaultShell": "powershell" — направляет интерактивные команды через PowerShell. Работает только при включённой первой опции.

Git Bash остаётся обязательным — он используется для запуска самого Claude Code. Если Git установлен не в Program Files, путь указывается в CLAUDE_CODE_GIT_BASH_PATH.

Ограничения нативной Windows-установки

Claude Code изначально разработан для POSIX-окружений. На Windows многие механизмы работают с оговорками или не работают вовсе:

  • Git Bash не поддерживает extglob — расширенные паттерны имён файлов (например, rm !(*.js)).
  • Переменные $_, $?, $! ведут себя иначе, чем в настоящем bash.
  • Отсутствуют systemd, cron, inotify.
  • Нет поддержки POSIX-сигналов: kill -HUP, SIGUSR1 и другие не работают, так как Windows не поддерживает их на уровне ядра.

Например, при выполнении PowerShell-команд через Git Bash переменные перехватываются и интерполируются ещё до передачи в PowerShell, что приводит к ошибкам. Раньше Claude Code не распознавал такие сбои и зацикливался. С версии 2.1.84 эта проблема решена опциональной поддержкой PowerShell.

Shell integration и переменные окружения

Функция shell integration, позволяющая Claude Code видеть текущую директорию и код возврата команд в реальном времени, на Windows недоступна. Каждый вызов инструмента — это отдельный процесс. Переменные окружения, заданные в одной команде, не сохраняются в следующей.

Для постоянных переменных используйте SetEnvironmentVariable или settings.json.

Файловая система и пути

Claude Code ожидает Windows-пути с обратными слешами. Unix-пути вроде /c/Users/... или ~/projects не распознаются.

NTFS нечувствителен к регистру, в отличие от ext4. Это может привести к проблемам: Claude Code может создать файл с путём в неправильном регистре, NTFS примет его как тот же файл, а затем удаление «дубликата» приведёт к удалению оригинала.

Переносы строк

Windows использует CRLF (\r\n), Linux — LF (\n). Bash-скрипты, созданные в Windows, могут содержать \r, что ломает выполнение в Linux-окружениях, например, в AWS.

Проблема не в самих переносах, а в том, что Claude Code не применяет правила из CLAUDE.md последовательно между вызовами. Частичные исправления появились в версиях 2.1.88–2.1.89, но проблема до конца не решена. Приходится вручную подменять переносы строк.

MCP и IPC

MCP использует Unix domain sockets для межпроцессного взаимодействия. На Windows их аналог — Named Pipes, но API отличается. Функция getSocketPaths() возвращает только Unix-пути вроде /tmp/... и не пытается использовать Named Pipes. В результате соединение не устанавливается без явной ошибки.

Если MCP-сервер использует /home/user или os.tmpdir() без учёта Windows, он может упасть при попытке создать файл. На Windows os.tmpdir() возвращает C:\Users\...\AppData\Local\Temp.

Частичное решение — обёртка команд в cmd /c, что позволяет запускать npx и другие Node-инструменты. Однако это не помогает, если в коде MCP-сервера зашиты Unix-пути.

Пути в JSON-конфигах могут быть указаны как C:\\Projects, так и C:/Projects. Одиночный обратный слеш ломает парсер. MCP-серверы с жёстко прописанными Unix-путями (/tmp, /home) на Windows не запустятся.

Sandboxing

На macOS используется Seatbelt (sandbox-exec), на Linux — bubblewrap. На Windows изоляция на уровне ядра пока не поддерживается, хотя запланирована.

Без sandboxing Claude Code работает с правами текущего пользователя, что создаёт риск изменения или удаления файлов вне разрешённой папки.

Альтернатива: Claude Code в WSL2

Windows Subsystem for Linux 2 (WSL2) — это не эмуляция, а полноценное Linux-ядро в лёгкой виртуальной машине. Он решает все ключевые проблемы нативной установки.

Преимущества WSL2:

  • Реальный bash вместо Git Bash — работает shell integration, переменные не перехватываются
  • Доступны Unix domain sockets — все MCP-серверы подключаются штатно
  • Поддержка bubblewrap — включается sandboxing (требует установки bubblewrap и socat)
  • Файловая система Linux (например, ~/projects/) значительно быстрее NTFS при npm install и ripgrep
  • Работают POSIX-права, символические ссылки, inotify

PowerShell остаётся доступным — как из WSL, так и отдельно в Windows Terminal.

Установка WSL2

Из PowerShell с правами администратора:

wsl --install -d Ubuntu-24.04

После установки — перезагрузка. При первом запуске Ubuntu запросит создание пользователя и пароля.

Если WSL уже установлен, обновите его:

wsl --update

Проверьте версию WSL для дистрибутива:

wsl -l -v

Если версия 1 — обновите:

wsl --set-version <имя_дистрибутива> 2

После изменений перезапустите WSL:

wsl --shutdown

Настройка производительности

Файл C:\Users\<имя_пользователя>\.wslconfig (создаётся вручную):

Важно: пробелы вокруг = ломают парсинг. Пишите 16GB, а не 16 GB.

Файл /etc/wsl.conf — настройки дистрибутива (редактируется внутри Ubuntu):

После изменений — перезапуск WSL2.

Настройка Ubuntu

Внутри Ubuntu обновите систему и установите пакеты:

sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential ripgrep direnv bubblewrap socat

Пояснение:

  • build-essential — для компиляции нативных модулей Node.js
  • ripgrep — используется Claude Code для поиска (лучше использовать системный)
  • direnv — управление переменными окружения на уровне проекта
  • bubblewrap и socat — зависимости для sandboxing

direnv автоматически загружает .envrc при входе в директорию. Подключите его к bash:

Пример .envrc в корне проекта:

Первый раз в директории разрешите выполнение:

direnv allow

Установка Node.js и NVM

Устанавливать Node.js через apt не рекомендуется — старые версии, проблемы с правами. Используйте NVM:

Актуальную версию NVM смотрите на nvm-sh/nvm. На момент написания — v0.40.4.

Установка Claude Code в WSL2

Установка стандартная — установщик не требует Node.js и поддерживает автообновление. Установка через npm install -g @anthropic-ai/claude-code официально устарела.

Дополнительные инструменты

Claude Code обучен использовать:

  • bun — альтернатива node/npm, в 4–25 раз быстрее
  • fd — замена find, быстрый поиск по имени
  • sd — замена sed, удобный синтаксис регулярных выражений
  • gh — GitHub CLI

ripgrep и jq уже установлены через apt.

Чтобы переключить Claude Code на системный ripgrep, добавьте в ~/.claude/settings.json:

Глобальные настройки и CLAUDE.md

Файл ~/.claude/CLAUDE.md — идеальное место для описания окружения и личных предпочтений. Он применяется ко всем проектам.

Для нового проекта CLAUDE.md можно сгенерировать автоматически:

Claude проанализирует код и создаст .claude/CLAUDE.md с командами сборки, тестирования и конвенциями. Лимит — 200 строк на файл.

Оптимизация производительности в WSL2

Стандартные лимиты Ubuntu могут не хватать для больших репозиториев. Claude Code и файловые вотчеры (Vite, webpack, TypeScript) упираются в inotify. Увеличьте лимиты:

Изменения sysctl применяются сразу. Лимиты nofile — после перезапуска WSL2.

Работа с файлами

Правило: проекты и репозитории должны находиться в Linux-файловой системе, а не в /mnt/c/.

Windows видит Linux-файлы через 9P — виртуальную сетевую шару. Чтение из проводника нормально, но активное редактирование — медленно. Оптимально использовать VSCode с WSL-расширением: интерфейс на Windows, файлы в Linux.

Адрес в проводнике: \\wsl.localhost\<имя_дистрибутива>

net use не работает — это SMB-клиент, а 9P не поддерживается SMB.

Однако WSL2 можно замаппить на диск (например, W:):

На типичном проекте (10k+ файлов, активный git) разница в производительности между нативным Windows и WSL2 очевидна:

  • git status — в разы быстрее
  • npm install — значительно быстрее
  • ripgrep по 50K файлов — в разы быстрее

Причины: NTFS накладывает накладные расходы, антивирус сканирует каждый файл, а мелкие файлы в node_modules и .git — узкое место.

Итог

У автора установлены и активно используются оба варианта: Claude Code в Windows и в WSL2 с Ubuntu. В терминале доступны оба. Успешные настройки, скилы и MCP-серверы часто переносятся из одного окружения в другое. Холивары бесполезны — лучше выбирать инструмент под задачу.

Читать оригинал