VS Code — установка как надо
Переносимый набор: скачать свежую сборку, поставить её со всеми опциями мастера и сразу настроить — без вопросов о доверии к папкам, со своими расширениями. Работает и с обычной установкой, и с портативным экземпляром.
| Команда | Что делает |
|---|---|
Download-Installer.cmd | скачать установщик для всей машины |
Download-Installer.cmd -Kind user | установщик в профиль пользователя |
Download-Portable.cmd | скачать архив для портативной работы |
Download-Installer.cmd -Check | только узнать свежую версию |
Install-VSCode.cmd | поставить, настроить, ядро, Claude и Codex |
Install-VSCode-Claude.cmd | то же, но из агентов только Claude |
Install-VSCode-AllAI.cmd | то же, но все четыре агента |
Install-VSCode-NoAI.cmd | то же, но без агентов вовсе |
Install-VSCode.cmd -Check | показать, что уже стоит и что включено |
Install-VSCode.cmd -SettingsOnly | только настройки и расширения |
Setup-Portable.cmd | портативный: ядро, Claude и Codex (≈3,1 ГБ) |
Setup-Portable-Claude.cmd | портативный: ядро и Claude (≈2,3 ГБ) |
Setup-Portable-AllAI.cmd | портативный: ядро и все четыре агента (≈3,5 ГБ) |
Setup-Portable-NoAI.cmd | портативный: только ядро (≈2,0 ГБ) |
Update-Portable.cmd | обновить портативный до свежей версии |
Start-Portable-VSCode.cmd | запустить портативный (создаётся развёртыванием) |
Обновление. Установленный VS Code обновляется сам — встроенным механизмом Microsoft, отдельная команда ему не нужна. Портативный сам себя не обновляет (это решение разработчиков: обновление заменило бы папку целиком вместе с data\), поэтому его обновляет Update-Portable.cmd — качает свежий архив, меняет программу и не трогает data\ с настройками и расширениями.
Четыре варианта у каждого вида — из-за веса агентов: Codex занимает 826 МБ, Claude Code — 283 МБ, Gemini — 237 МБ. У каждого внутри свой рантайм с движком, оттого и размер. Исключение — Grok: 11 МБ, потому что это только панель, а движок живёт снаружи, в отдельно поставленном CLI.
Чем это отличается от обычной установки
Мастер VS Code — это Inno Setup, и его галочки в тихом режиме перечисляются в /MERGETASKS. Скрипт включает все, кроме запуска редактора после установки:
| Задача | Что даёт |
|---|---|
addcontextmenufiles | «Открыть с помощью Code» для файлов |
addcontextmenufolders | то же для папок |
associatewithfiles | Code становится редактором для своих типов |
addtopath | code работает в консоли |
desktopicon | ярлык (отключается ключом -NoDesktopIcon) |
!runcode | не запускать редактор сразу |
Главное: никаких вопросов о доверии
В settings.json выключено доверие целиком:
"security.workspace.trust.enabled": false
Именно этого ключа не хватало в прежней версии настроек. Без него редактор продолжает спрашивать про каждую папку, сколько ни правь banner, startupPrompt и untrustedFiles — они лишь смягчают вопрос, а не убирают.
Настройки кладутся с бэкапом прежних: рядом появляется settings.json.<дата>.bak.
Самообновление
Установленный VS Code обновляется сам — в настройках включены update.mode: default и фоновые обновления, расширения тоже обновляются сами.
Портативный сам себя не обновляет, и это решение разработчиков: обновление заменило бы папку целиком вместе с data, где лежат настройки и расширения. Поэтому обновляет его Update-Portable.cmd: качает свежий архив, меняет программу и не трогает data. Расширения внутри при этом обновляются сами.
Портативный режим
Портативность включается одной папкой: если рядом с Code.exe есть каталог data, редактор держит в нём всё своё и ничего не пишет в профиль пользователя. Поэтому настройки кладутся в data\user-data\User\settings.json, а расширения уходят в data\extensions. Папку можно унести целиком.
Для запуска Setup-Portable кладёт в корень Start-Portable-VSCode.cmd — двойной клик поднимает редактор, не надо нырять в VSCode\ за Code.exe. Путь внутри относительный (%~dp0), поэтому ярлык переезжает вместе с папкой; а если развернуть в другое место ключом -TargetDir, в ярлык ляжет полный путь.
Что портативность не уносит
Портативный режим изолирует редактор: настройки, расширения и состояние окон живут в data. Но он не может изолировать то, что расширение хранит снаружи, в профиле пользователя, — и это заметно сразу.
Claude Code в портативном экземпляре оказывается уже авторизован, хотя вход делался в установленном. Причина: токен лежит не в VS Code, а в %USERPROFILE%\.claude\.credentials.json — общем профиле Claude Code, одном для CLI и для расширения. Портативный редактор просто читает его оттуда.
Так же ведут себя и другие: учётки Git идут в диспетчер учётных данных Windows, контекст Docker — в ~/.docker, вход в Grok Build — в %USERPROFILE%\.grok. Всё это берётся из системы, а не из папки редактора.
Обратная сторона того же правила: на чужой машине ничего этого не будет — data токенов не несёт. Унесли флешку — авторизация осталась дома. С точки зрения безопасности это и правильно.
Расширения
Списков три, и читаются они одинаково — строку можно просто перенести из одного в другой:
| Файл | Кто ставит |
|---|---|
extensions.txt | все деплоеры (21 расширение) |
extensions-ai.txt | обычный, -Claude и -AllAI; разбирается по разделам |
extensions-optional.txt | только по ключу -WithOptional |
Четыре агента и кто из них чего стоит
Разделов в extensions-ai.txt четыре, и деплоеры разбирают их по заголовкам: обычный берёт Claude и Codex, -Claude — одного, -AllAI — всех, -NoAI — никого. Внутри каждый — отдельная история.
Claude Code и Codex работают по подписке и ничего вокруг себя не требуют. Это канон, они и стоят в обычном деплоере.
Gemini Code Assist в комплекте есть, но с оговоркой, которую лучше знать заранее: с 18 июня 2026 расширение не обслуживает личные тарифы — ни «Code Assist for individuals», ни Google AI Pro, ни Ultra. Личные аккаунты Google увёл в Antigravity, свою отдельную IDE со своим CLI; плагина для чужого VS Code у них больше нет. Расширение живёт и обновляется, но отвечает только по лицензии Code Assist Standard или Enterprise, то есть через организацию и проект в Google Cloud. Рейтинг 1,9 при пяти миллионах установок — ровно про это. На личном аккаунте оно поставится и промолчит.
Grok своего расширения от xAI не имеет вовсе. В комплекте — community- обёртка Paweł Huryn: панель, которая говорит с Grok Build CLI по JSON-RPC через grok agent stdio. Значит нужен сам CLI:
irm https://x.ai/cli/install.ps1 | iex
grok login
Деплоер CLI не ставит намеренно — это выполнение скрипта из сети, такому место в осознанной команде, а не внутри установщика. Зато он проверяет, есть ли grok в PATH или в %USERPROFILE%\.grok\bin, и если нет — говорит прямо, что панель останется пустой.
Вход в Grok Build по подписке
Вход по подписке — это способ по умолчанию, отдельно ничего включать не надо. Достаточно запустить CLI:
grok
Первый запуск сам откроет браузер и проведёт через xAI OAuth на auth.x.ai. Годится подписка SuperGrok или X Premium+; ключ из консоли xAI для этого не нужен. Повторно, чтобы сменить аккаунт или починить сломавшийся вход:
grok login
Флаг --oauth у этой команды есть, но он и так подразумевается. Выйти — grok logout, он же чистит сохранённые данные.
Где хранится вход. В %USERPROFILE%\.grok\auth.json. Токены обновляются сами в фоне; если сервер не сообщил срок, данные живут 30 дней. Файл общий для всего, что пользуется CLI, — поэтому панель Grok в VS Code отдельного входа не просит, и в портативном экземпляре она тоже окажется авторизованной. И по той же причине на чужой машине её не будет: data редактора токенов не несёт.
Переносить auth.json руками не надо. Технически это работает: CLI следит за файлом и подхватывает подменённые данные на лету, без перезапуска. Но это ключ от аккаунта в открытом виде — копия на флешке равна копии пароля без второго фактора. К тому же данные протухают через 30 дней, а ротация токенов на стороне xAI при работе с двух мест приводит к повторному входу: перенос рискует не добавить доступ на новой машине, а отобрать его на старой. Для второй машины есть способ ниже — он занимает полминуты.
Без браузера — на сервере по SSH, в контейнере, на удалённой машине:
grok login --device-auth
Команда печатает ссылку и код: открываете ссылку на любом устройстве, вводите код, CLI дожидается подтверждения сам.
Ключ API — не то же самое, и он не подмена подписки. Порядок такой: сначала ключ, прописанный под конкретную модель в config.toml, затем активная сессия из auth.json, и только потом XAI_API_KEY. То есть завести ключ «про запас» безвредно — пока жива сессия, расход идёт по подписке. Обратное тоже верно: чтобы работа пошла через ключ и биллинг консоли, сессию надо сначала закрыть — grok logout. В PowerShell ключ задаётся так:
$env:XAI_API_KEY = "xai-..."
Расход. Вызовы, включая поиск по X, идут не из отдельных кредитов, а из общего недельного пула подписки — того же, из которого работает чат на grok.com. Поэтому частый поиск по ленте не бесплатен: платится не деньгами, а неделей. Сколько стоит один запрос, xAI не публикует; остаток смотрят командой /usage внутри TUI (там же /login и /logout) и в Settings → Usage на grok.com.
Полное описание — в документации самого xAI, она приезжает вместе с CLI: %USERPROFILE%\.grok\docs\user-guide\02-authentication.md. Там же то, что нам не нужно, но бывает нужно на работе: вход через корпоративный IdP по OIDC (Okta, Azure AD, Auth0) и передача аутентификации внешнему скрипту.
Одна строка на идентификатор, строки с # пропускаются. Ставятся с ключом --force: он снимает вопрос о доверии к издателю, отвечать на который в тихой установке всё равно некому.
Наглядный список — в Extensions.html: кнопка «Поставить» открывает расширение прямо в редакторе через протокол vscode:extension/…, вторая кладёт команду в буфер. Страница собирается из тех же файлов командой Build-ExtensionsPage.cmd и потому не может с ними разойтись.
Todo Tree и ripgrep
Расширение ищет пометки через ripgrep и при первом запуске жалуется: «Failed to find vscode-ripgrep… set todo-tree.ripgrep». Совет неверный: на самом деле ключ называется todo-tree.ripgrep.ripgrep — расширение читает секцию todo-tree.ripgrep и берёт из неё свойство ripgrep.
Внутри VS Code свой rg.exe есть, но путь к нему содержит хэш сборки и меняется с каждым обновлением, поэтому прописывать его нельзя. Скрипты ставят ripgrep отдельно (winget install BurntSushi.ripgrep.MSVC) и подставляют путь при установке — в файле он не хранится готовым, иначе набор не перенести на другую машину.
Издателей Microsoft и GitHub редактор доверяет сам; остальные при первой установке спросили бы подтверждение.
Откуда берутся сборки
У Microsoft есть постоянные адреса, всегда ведущие на текущий выпуск, поэтому версия нигде не прописана руками. Её и контрольную сумму сообщает сервис обновлений (update.code.visualstudio.com/api/update/<платформа>/stable/latest), и файл проверяется по sha256. Если сервис недоступен, остаётся прямая ссылка — имя файла придёт из переадресации, только без проверки суммы.
Скачанное ложится в подпапку Download\; установщик и портативная сборка ищут его там (а по-старому рядом со скриптом — тоже найдут). Прежняя сборка того же вида удаляется: берётся самая свежая, а три версии только занимают место.