Можно поручать разработку облачным сессиям Claude Code и при этом не открывать новый путь в продакшен — если облако имеет доступ только к одному репозиторию GitHub, а продакшен-сервер только забирает (pull) код из этого репозитория. Но по дороге я не раз застревал. Эта статья — мой отчёт (я веду этот сайт) о том, как 4 октября 2026 года я начал пользоваться облачными сессиями в отдельном проекте разработки, перепроверенный по оригинальному тексту официальной документации.

К чему есть доступ у облака

Один репозиторий GitHub

Установите Claude GitHub App с вариантом «Only select repositories» и дайте ему только этот один репозиторий.

Продакшен-сервер

Только pull

Продакшен забирает код с ключом только для чтения. Ни облако, ни GitHub не получают ключа к продакшену.

Облачное окружение

Новое для каждого проекта

Переменные окружения может прочитать любой, кто пользуется этим окружением. Не храните в них секреты.

Источники: Use Claude Code in the cloud и Configure cloud environments. Проверено 4 октября 2026 года. Как это устроено, как начать и сколько стоит — в статье «Что такое облачные сессии Claude Code?»

1. Схема, которая защищает продакшен: продакшен только забирает код

Больше всего я боялся, что работа через GitHub добавит ещё один путь на продакшен-сервер. В итоге я остановился на схеме ниже (это мой собственный выбор, а не официальная рекомендация). Стрелки показывают, в каком направлении забираются данные.

  • Облачная сессия Пишет код и пушит ветки (попасть на продакшен не может)
  • →push
  • Приватный репозиторий GitHub Единственный репозиторий, на который установлен App
  • ←fetch
  • Продакшен-сервер Забирает код по deploy key только для чтения; деплой запускает человек
КлючПоложите на продакшен ключ только для чтения, выделенный под этот репозиторий (deploy key). Согласно документации GitHub, deploy key даёт доступ к одному репозиторию и по умолчанию работает только на чтение.
Чего я не делаюЯ не даю GitHub Actions ключ от продакшена для автоматического деплоя. Это добавило бы ещё один путь на продакшен.
ДеплойЕго запускает человек вручную. Скрипт на стороне продакшена забирает свежий код, собирает его и подменяет работающую версию. Если что-то идёт не так, работающая версия остаётся на месте.

Сначала я попытался взять ключ от другого репозитория, и GitHub отклонил его с ошибкой «Key is already in use». Согласно документации GitHub, она появляется, когда ключ уже зарегистрирован в другом аккаунте или репозитории. Поскольку у каждого репозитория свой ключ, утечка ключа открывает только этот один репозиторий.

2. Что отправляется, если начать без GitHub

Обычно я храню код в git-репозитории на собственном сервере, поэтому сначала думал пользоваться облачными сессиями без GitHub. Согласно официальной документации, если запустить claude --cloud "task description", например, в репозитории без remote, локальный репозиторий упаковывается в один бандл и отправляется в облако. Вот что при этом уходит.

ИсторияИстория всех веток. Файл, который вы когда-то закоммитили, а потом удалили, тоже отправится, если он остался в истории.
Незакоммиченные измененияНезакоммиченные изменения в файлах, которые отслеживает git.
Не отправляетсяФайлы, которые git не отслеживает (если они нужны, сделайте для них git add).

macOS, Linux, WSL

Файлы с «секретными» именами остаются локально

Для файлов с именами вроде .env, *.tfvars, id_rsa или *.pem незакоммиченные изменения остаются на вашей машине и не отправляются.

Windows (не WSL)

Отправляется независимо от имени

Незакоммиченные изменения в отслеживаемых файлах уходят как есть. Перед стартом уберите в stash или откатите всё, что не хотите отправлять.

Опасны два случая: когда файл с секретами отслеживается git и вы его редактировали и когда вы когда-либо в прошлом коммитили секреты. Файл .env, исключённый через .gitignore, вообще не отправляется.

И ещё: согласно официальной документации, сессия, созданная из бандла, может пушить только в «repositories your GitHub connection has push access to» (репозитории, в которые у вашего подключения GitHub есть права на push). Способа вернуть результат прямо в собственный репозиторий не на GitHub я в документации не нашёл. Дойдя до написания документа с порядком действий, я сдался и создал приватный репозиторий на GitHub.

3. Пять мест, где я реально застрял

Вот на чём я споткнулся между созданием приватного репозитория на GitHub и реальным стартом — каждый случай разложен на симптом, причину и решение.

1) Репозитория нет в списке

СимптомТолько что созданного репозитория не было в списке. Показывались лишь тестовые репозитории из другого аккаунта, который я когда-то пробовал.
ПричинаК claude.ai был подключён не тот аккаунт GitHub, которым я обычно пользуюсь. Я подключил другой аккаунт раньше и забыл об этом.
РешениеЯ отключил GitHub на странице claude.ai/customize/connectors, заново вошёл в браузере в нужный аккаунт и подключился снова. В официальной документации сказано, что отключение удаляет учётные данные GitHub, которыми пользуются облачные сессии.

2) На что устанавливать GitHub App

СимптомПосреди подключения спрашивают, насколько широко установить Claude GitHub App. Вариант «All repositories» устанавливает его на все репозитории этого аккаунта или организации.
ПричинаМой аккаунт состоит и в организации клиентского проекта, и я не хотел, чтобы Claude её трогал.
РешениеЯ установил его только в организацию своей компании и через «Only select repositories» выбрал один этот репозиторий. В некоторых организациях установку должен одобрить владелец организации.

3) Видны репозитории организаций, где App не установлен

СимптомДаже после сужения области в списке появились несколько репозиториев другой организации.
ПричинаВсе они были публичными. Согласно таблице в официальной документации, подключение через GitHub App даёт доступ к «all public repositories, plus private repositories where the App is installed» (всем публичным репозиториям плюс приватным, где установлен App).
РешениеНичего делать не нужно. Публичные репозитории и так может прочитать кто угодно, поэтому ничего нового не раскрывается. Приватные репозитории доступны только там, где установлен App.

4) Осталось старое облачное окружение

СимптомСреди моих облачных окружений (сохранённых конфигураций с настройками сетевого доступа, переменными окружения и скриптом настройки) осталось одно, созданное для другого проекта.
ПричинаСогласно официальной документации, переменные окружения и скрипт настройки может прочитать любой, кто пользуется окружением. Если переиспользовать его, старые значения будут видны и из нового проекта.
РешениеЯ создал для этого проекта новое окружение и оставил переменные окружения пустыми. Сетевой доступ остался по умолчанию — «Trusted». Если нужен API-ключ, на Pro и Max его можно зарегистрировать в разделе «API credentials» вместо переменной окружения, и сессия не сможет прочитать значение ключа (на Team и Enterprise пока недоступно).

5) Я хотел, чтобы она прочитала локальный файл

СимптомЯ уже собирался написать в первом указании «прочитай документ с порядком действий в моей локальной папке».
ПричинаОблачная сессия не видит файлы на вашем ПК. В сравнительной таблице официальной документации тоже сказано, что облачные сессии не используют вашу локальную конфигурацию — им доступен «only the repository» (только репозиторий).
РешениеЯ вписал правила проекта, требования безопасности и базовые правила для продакшена прямо в первое сообщение и приложил спецификацию. Правила, которые используются повторно, можно положить в CLAUDE.md репозитория и закоммитить, чтобы не писать их каждый раз.

4. Чем отличаются режимы разрешений в облаке

Прямо перед отправкой я заметил, что режим разрешений стоит на «Accept edits». По названию кажется, что это самый «напористый» режим, но, согласно официальной документации, Accept edits в облаке соответствует режиму по умолчанию (Manual) в локальном Claude Code. В облаке правки файлов заранее разрешены во всех режимах, поэтому режим по умолчанию просто отображается под этим названием.

Accept edits

Останавливается на командах

Правки файлов проходят автоматически. Команды вроде npm install, сборки и git push каждый раз ждут вашего одобрения.

Plan

Сначала план

Прежде чем что-то менять, составляет и показывает план того, что собирается сделать.

Auto

Работает дальше сама

Вместо запроса одобрения каждое действие проверяет классификатор (механизм проверки безопасности), и работа продолжается. Режим появляется, только если его разрешает ваша организация и его поддерживает выбранная модель.

Мне хотелось, чтобы она продолжала работать без меня, поэтому я переключился на Auto. Учтите, что в облаке нельзя выбрать режим, пропускающий все проверки (bypass permissions), и он игнорируется, даже если указан в файле настроек репозитория. Подробное сравнение режимов — в статье «Режимы разрешений Claude Code».

5. Сколько это стоило на деле: $226 за одно указание

Настроив всё это, я запустил облачную сессию на ограниченном по времени кредите тарифа Max ($250). В первом сообщении я передал проектный документ и указания, режим разрешений — Auto. После этого я ни разу с ней не разговаривал. На полпути я заглянул на экран использования, испугался, как быстро тает кредит, и велел остановиться. На момент остановки у меня оставалось $24 кредита. Не останови я её, она сожгла бы все $250.

$226

Потрачено кредита (из $250, осталось $24)

676,7 тыс.

Контекст на момент остановки (68% от 1 млн)

86%

Израсходовано от недельного лимита тарифа (все модели)

Источник: мой экран использования Claude Code (4 октября 2026 года, тариф Max 20x). 86% недельного лимита включают расход вне облака.

Вот сколько работы облако успело сделать по одному указанию к моменту, когда я его остановил (по моему журналу работ).

ОсноваПолная продуктовая основа веб-приложения (дизайн, переключение японский/английский, форма обратной связи, уведомления об ошибках, sitemap, офлайн-режим и многое другое).
Функции41 инструмент, работающий в браузере (текст, изображения, PDF, таблицы и многое другое).
Тесты695 модульных тестов и 142 UI-теста. Все проходят.
ПрочееПроверка сборки Docker, настройка CI, исправление 3 ошибок, связанных с продакшеном, и документ для передачи дел.

Почему кредит тает так быстро

Стоимость определяется не тем, сколько раз вы с ней говорите, а тем, сколько раз Claude обращается к модели и какой объём контекста читает каждый раз. При автономной работе каждое чтение файла, запись файла и прогон тестов вызывают обращение, поэтому без всякого разговора набираются сотни и тысячи обращений. В официальной документации (Manage costs effectively) тоже сказано, что стоимость растёт с размером контекста.

При каждом обращении весь накопленный контекст перечитывается. Даже с кешированием чтение не бесплатно: по цене чтения из кеша Opus 5.5 ($0,20 за миллион токенов) однократное чтение 500 000 токенов стоит около $0,10. Повторите это 1000 раз — и выйдет около $100 (это пример, который я рассчитал по цене за единицу; реальное число обращений и разбивку по моделям для этой сессии я не проверял). Код и тесты, которые она пишет, считаются отдельно, по цене вывода.

Насколько мне удалось найти в официальной документации, настройки, ограничивающей расход кредита, нет (--max-budget-usd действует только для неинтерактивных запусков, а месячный лимит расходов относится к оплачиваемым по факту кредитам использования). Задать точку остановки можно только в указаниях или остановив работу самому. Кроме того, когда кредит заканчивается, облачные сессии расходуют недельный лимит тарифа — так же, как локальная работа. Если запустить задачу такого же объёма, когда от недельного лимита осталось мало, вы упрётесь в лимит, в том числе и в локальном Claude Code.

Разбивка: перечитывание и субагенты

После остановки я открыл подробную разбивку на экране использования (эти цифры охватывают всю сессию, включая сводку, которую я попросил написать уже после остановки).

8 ч 33 мин

Время работы модели (моё участие — 2 мин 24 с)

99%

Доля Opus (Sonnet — 1%)

63%

Доля субагентов (general-purpose 34%, Agent 29%)

Источник: представление сессии на моём экране использования Claude Code (4 октября 2026 года). Показанная стоимость: $231,09.

Чтение из кеша242,5 млн токенов. Это перечитывание накопленного разговора, и на него приходятся почти все токены. Доля попаданий в кеш: 99%.
Запись в кеш1,4 млн токенов.
Ввод и вывод1200 входных и 10 700 выходных токенов (как показано в строке Opus 5.5 на экране).
Подсказка на экранеСвоими словами: каждый субагент выполняет собственные запросы; для простых субагентов стоит взять более дешёвую модель или ужать их промпты.

Моё участие заняло всего 2 минуты 24 секунды; остальные 8 с лишним часов Claude работал сам. Всё это время основной разговор на Opus и субагенты, тоже на Opus, снова и снова перечитывали всё удлиняющийся разговор. Когда я попросил облачную сессию подсчитать разбивку, она сообщила, что на завершение одного инструмента у субагента на Sonnet уходило около 30 действий, а у субагента на Opus — от 130 до 230 действий (это собственный подсчёт сессии; каждый случай я не проверял).

Стоимость на экране ($231,09) почти совпала с тем, насколько уменьшился кредит к моменту, когда я открыл этот экран ($250 → $18, то есть $232). При остановке сессии у меня оставалось $24; экран я открыл позже, так что к тому времени баланс успел ещё немного уменьшиться. Согласно официальной документации, стоимость на этом экране — оценка, полученная умножением числа токенов на прейскурантные цены. Поэтому похоже, можно считать, что кредит списывается по прейскурантным ценам API (в официальной документации это прямо не сказано).

Если не указать модель, субагенты используют ту же модель, что и основной разговор (официальная документация: «Create custom subagents»). Если основная модель — Opus, даже массовая рутинная работа в итоге идёт на Opus.

Как сократить расходы (по убыванию эффекта)

  • 1. Запускайте субагентов на Sonnet Напишите в указаниях «run subagents with model: sonnet». Модель по умолчанию можно сменить и переменной окружения CLAUDE_CODE_SUBAGENT_MODEL (это не секрет, так что её можно положить в окружение).
  • 2. Держите разговоры короткими (/compact или новая сессия) Чем короче разговор, тем дешевле каждое действие. Если остаётесь в той же теме, сжатие через /compact укорачивает разговор без смены сессии (можно сказать, что сохранить, например «keep the test results»). Когда тема меняется или вы возвращаетесь после долгого перерыва, начните новую сессию. Если попросить записывать прогресс в документ для передачи дел, при разбиении работы ничего не потеряется.
  • 3. Задайте точку остановки заранее Напишите что-нибудь вроде «остановись и отчитайся, когда основа будет готова» или «остановись и отчитайся примерно на $50» (настройки лимита расходов нет, поэтому границы задавайте указаниями).
  • 4. Поручайте и интеграционную работу Пусть тесты, коммиты и пуши делают субагенты — тогда в длинном и дорогом основном разговоре происходит меньше работы.
  • 5. Облегчите проверку Запускайте UI-тесты только для только что созданных инструментов, а полный набор тестов — один раз перед слиянием. Скриншоты делайте по одному на инструмент в ширине десктопа и один в ширине телефона.
  • 6. Сразу останавливайте ненужную работу Субагент, остановленный на полпути, не оставляет результатов, а потраченное не возвращается.

Ориентир — 2–3 параллельных запуска. По собственной оценке облачной сессии, уменьшение параллелизма лишь растягивает время и почти не меняет общую стоимость. Важнее числа параллельных запусков — держать каждый разговор коротким, а каждое указание конкретным.

Исходя из официальной документации, я выбираю между /compact и новой сессией так. /compact перечитывает весь разговор, чтобы составить сводку, но пока кеш ещё «тёплый», значительная часть этого перечитывания идёт из кеша, так что это не так дорого, как можно подумать по размеру разговора («Prompt caching»). После долгого простоя, когда кеш уже истёк, всё перечитывается без кеширования, а это дорого. Новая сессия, напротив, ничего не стоит, но не переносит то, что было раньше («Manage costs effectively»). Сводка может потерять детали, поэтому надёжнее сначала записать в документ всё, что нужно сохранить. Учтите, что в облачных сессиях /compact работает, а /clear — нет; новую сессию начинают из боковой панели («Claude Code on the web»).

Вот примерно такое сообщение я вставляю в начале следующей сессии (название проекта скрыто).

Продолжи с того места, где остановился.
Прочитай CLAUDE.md → docs/HANDOFF.md → docs/TODO.md и следуй правилам.
Тема этой сессии: XX
Запускай субагентов с model: sonnet, не более 2–3 параллельно.
Остановись и отчитайся, когда дойдёшь до бюджета $XX. Отчитывайся на русском.

Для сжатия контекста в облачных сессиях облако само задаёт переменную окружения CLAUDE_AUTOCOMPACT_PCT_OVERRIDE, поэтому добавлять её в своё окружение бесполезно. Чтобы сжатие срабатывало раньше, используйте CLAUDE_CODE_AUTO_COMPACT_WINDOW или /autocompact, как советует официальная документация.

6. Чек-лист перед стартом

  • Аккаунт GitHub К claude.ai подключён именно тот аккаунт, которым вы хотите пользоваться?
  • Область App Вы установили его только на нужные репозитории через «Only select repositories»?
  • История Не лежат ли в истории репозитория секреты, закоммиченные в прошлом?
  • Окружение Вы создали новое окружение для этого проекта? Секретов в его переменных окружения нет?
  • Продакшен Вы не создали никакого пути из облака или GitHub на продакшен (продакшен забирает код сам)?
  • Правила Вы положили повторно используемые правила в CLAUDE.md репозитория?
  • Режим разрешений Вы выбрали Auto, чтобы она работала сама, или Accept edits, чтобы проверять каждый шаг?

Итоги

Пользоваться облачными сессиями, не подвергая риску продакшен, можно, если соблюдать три пункта: облако имеет доступ только к одному репозиторию GitHub, продакшен забирает из него код по ключу только для чтения, а деплой запускает человек. Начать можно и без GitHub, но тогда репозиторий отправляется с историей всех веток, а в Windows незакоммиченные изменения в отслеживаемых файлах уходят независимо от их имён.

Где я реально застрял: был подключён другой аккаунт GitHub, область установки App, оставшееся старое окружение, невидимые локальные файлы и «Accept edits», останавливающийся на каждой команде. Чек-лист выше предотвращает всё это.

Что касается стоимости, одно указание в автономном режиме израсходовало $226 ограниченного по времени кредита, прежде чем я велел остановиться на полпути. Стоимость зависит не от того, сколько раз вы с ней говорите, а от числа обращений и длины контекста. По разбивке, большая часть ушла на перечитывание разговора и на субагентов, работавших на той же модели, что и основной разговор. Переведите субагентов на Sonnet, держите разговоры короткими с помощью /compact или новой сессии и впишите точку остановки в указания.

Частые вопросы

В. Можно ли попробовать облачные сессии без GitHub?

О. Да. claude --cloud "task description" упаковывает и отправляет ваш локальный репозиторий. Он должен быть меньше 100 МБ и содержать хотя бы один коммит. Отправляется история всех веток, а способа вернуть результат прямо в репозиторий не на GitHub официальная документация не описывает.

В. В списке видны репозитории организаций, где я не устанавливал App. Это утечка?

О. Нет, если это публичные репозитории. При подключении через GitHub App облачные сессии могут пользоваться всеми публичными репозиториями, поэтому они и появляются в списке. Приватные репозитории доступны только там, где установлен App.

В. Можно ли положить API-ключ в переменную окружения?

О. Не рекомендую. Официальная документация предупреждает, что переменные окружения может прочитать любой, кто пользуется окружением, и советует не хранить там секреты. На Pro и Max ключ можно вместо этого зарегистрировать в разделе «API credentials» — его значение сессия прочитать не сможет.

В. Я выбрал «Accept edits», но она останавливается на каждой команде.

О. Так и задумано. В облаке правки разрешены во всех режимах, поэтому режим по умолчанию отображается под названием «Accept edits». Чтобы команды выполнялись без одобрения, выберите Auto (он появляется, только если его разрешает ваша организация и поддерживает модель).

В. Почему кредит так сильно уменьшается, хотя я с ней даже не разговариваю?

О. Потому что стоимость определяется не тем, сколько раз вы что-то пишете, а тем, сколько раз Claude обращается к модели и какой объём контекста читает каждый раз. При автономной работе каждое чтение файла, запись файла и прогон тестов вызывают обращение, а контекст продолжает расти. В моём случае одно указание израсходовало $226, прежде чем я остановил работу на полпути (раздел 5).

В. Можно ли так же тратить ограниченный по времени кредит?

О. Да. Кредит для Pro и Max (Pro — $100, Max — $250) автоматически применяется к использованию облачных сессий, и пока он есть, это использование не учитывается в лимитах тарифа. Получить его можно до 7 октября по тихоокеанскому времени США, а действует он до конца 4 ноября (16:59 5 ноября по японскому времени). Его нельзя использовать для Projects, Routines, Remote Control и т. п. Подробности — в официальной статье поддержки и в статье «Что такое облачные сессии Claude Code?»

Источники

Все официальные спецификации сверены с оригинальным текстом 4 октября 2026 года. Отчёт о настройке основан на одном запуске в одном моём проекте; то, что показывают экраны, может меняться с версиями и со временем.