На момент апреля 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 -ysudo apt install -y build-essential ripgrep direnv bubblewrap socat
Пояснение:
build-essential— для компиляции нативных модулей Node.jsripgrep— используется 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-серверы часто переносятся из одного окружения в другое. Холивары бесполезны — лучше выбирать инструмент под задачу.