Чек-лист
кодовое словоНочь

Ночной прогон Claude Code

Содержание7 глав
  1. 011. Выбери, где прогон вообще будет крутиться
  2. 022. Вечер: настраиваем прогон
  3. 033. Границы задаёт конфигурация, а не текст промпта
  4. 044. Лимиты, о которых узнают в три часа ночи
  5. 055. Утро: приёмка (главный блок)
  6. 066. Чего не делать
  7. 077. Куда смотреть, когда что-то не сходится

1. Выбери, где прогон вообще будет крутиться

Три механизма расписания — три разные цены. Половина неудачных ночных запусков ломается именно здесь.

  • Где выполняется: облако (routines) — инфраструктура Anthropic; Desktop-задача — твоя машина; /loop в сессии — твоя машина.

  • Нужен включённый компьютер: облако — нет; Desktop-задача — да; /loop — да.

  • Нужна открытая сессия: облако — нет; Desktop-задача — нет; /loop — да.

  • Доступ к локальным файлам: облако — нет, свежий клон репозитория; Desktop-задача — да; /loop — да.

  • Запросы на подтверждение: облако — нет, идёт автономно; Desktop-задача — настраиваются на задачу; /loop — наследуются от сессии.

  • Минимальный интервал: облако — 1 час; Desktop-задача — 1 минута; /loop — 1 минута.

  • Задача должна отработать, даже если ноутбук закрыт — беру облачную рутину.

  • Задаче нужны локальные файлы и локальные инструменты — беру Desktop-задачу и оставляю компьютер бодрствующим.

  • Понимаю ограничение /loop: задачи живут внутри сессии и истекают через 7 дней.

Ловушка №1
Локальная задача не запускается, если компьютер ушёл в сон. Закрытая крышка усыпляет машину даже при включённом питании — запуск будет просто пропущен, без ошибки. Если идёшь по локальному пути, включи «Keep computer awake» в настройках приложения и не закрывай крышку.

2. Вечер: настраиваем прогон

  • Промпт самодостаточен. Рутина стартует без тебя: в тексте есть и задача, и критерий «сделано». Никаких «как обсуждали выше».
  • Подключены только нужные репозитории. Каждый клонируется заново на каждом запуске, от ветки по умолчанию.
  • Ветки ограничены. По умолчанию запись идёт только в ветки с префиксом claude/. Снимать это ограничение — только осознанно и по одному репозиторию.
  • Коннекторы прорежены. В прогон по умолчанию попадают все подключённые интеграции, и внутри сессии доступны все их инструменты, включая запись. Лишние — убрать.
  • Сеть на минимуме. Уровень Trusted открывает только белый список (пакетные реестры, GitHub, облачные API). Full ставим, только если без него задача физически не решается.
  • Секреты не в переменных окружения. Значения окружения видит любой, кто пользуется этим окружением; отдельного хранилища секретов нет.
  • Модель выбрана осознанно. Она фиксируется в конфигурации и применяется на каждом запуске.
  • Помню про подпись. Коммиты и pull request'ы уходят от твоего имени, действия интеграций — от твоих аккаунтов.

3. Границы задаёт конфигурация, а не текст промпта

«Bypassing permissions is zero-maintenance but offers no protection» — инженерный блог Anthropic про auto mode.

  • Не запускаю ночь через полное отключение разрешений. Если нужен автономный локальный прогон — auto mode или явный список разрешённых команд.
  • Если всё-таки отключаю разрешения — только внутри контейнера или виртуалки с ограниченным исходящим трафиком.
  • Фразы в промпте «не трогай существующие файлы» защитой не считаю. Защита — это права репозитория, префикс ветки и белый список доменов.
  • Проверил, что задача укладывается в ресурсы облачной виртуалки: 4 vCPU, 16 ГБ памяти, 30 ГБ диска.

4. Лимиты, о которых узнают в три часа ночи

  • Расписание чаще одного раза в час не ставится — более частые выражения отклоняются.
  • Дневной потолок запусков: Pro — 5, Max — 15, Team и Enterprise — 25. Ночной эксперимент на пять итераций подряд на Pro не поместится.
  • Расход идёт из общей подписки, как у обычных сессий. Упёрся в потолок — либо включённые оверейджи, либо отказ до сброса окна.
  • Запуск может сдвинуться на несколько минут: у каждой задачи свой постоянный разброс по времени старта.
  • Функция в статусе research preview — лимиты и поведение могут измениться. Перед важным прогоном сверяюсь с документацией.

5. Утро: приёмка (главный блок)

Ловушка №2
Зелёный статус означает ровно одно: сессия стартовала и завершилась без инфраструктурной ошибки. Он не означает, что задача выполнена. Заблокированные сетевые запросы, недоступные инструменты и провал по сути задачи выглядят так же зелено.
  • Открыл сам прогон и прочитал транскрипт, а не только статус.
  • Проверил, что созданные ветки и pull request'ы действительно те, которых ждал.
  • Прогнал тесты локально, а не поверил фразе «тесты прошли» в логе.
  • Поискал в логе отказы сети: 403 и x-deny-reason: host_not_allowed — значит домен не в белом списке.
  • Сверил объём изменений с задачей: если правок втрое больше ожидаемого, читаю diff целиком, а не по диагонали.
  • Ничего не мержу в основную ветку без ревью. Автономность прогона не отменяет ревью, а делает его обязательным.
  • Что пошло не так — переношу в промпт рутины, а не в «ещё один запуск, вдруг повезёт».

6. Чего не делать

  • Не давать рутине доступ к репозиториям, которые она не должна трогать, «на всякий случай».
  • Не ставить Full сетевой доступ по умолчанию — начинать с Trusted и добавлять домены точечно.
  • Не класть ключи и токены в переменные окружения ради удобства.
  • Не оценивать промпт по объёму. Десять страниц инструкции не заменяют один явный критерий готовности.
  • Не запускать ночь на задаче, которую сам ни разу не прогонял вручную от начала до конца.

7. Куда смотреть, когда что-то не сходится

  • Рутины: триггеры, права, лимиты — code.claude.com/docs/en/routines
  • Анонс и тарифные лимиты запусков — claude.com/blog/introducing-routines-in-claude-code
  • Локальные задачи по расписанию, сон машины и пропущенные запуски — code.claude.com/docs/en/desktop-scheduled-tasks
  • Сравнение способов расписания и /loop — code.claude.com/docs/en/scheduled-tasks
  • Окружения, уровни сетевого доступа и белый список доменов — code.claude.com/docs/en/cloud-environments
  • Auto mode как альтернатива отключению разрешений — anthropic.com/engineering/claude-code-auto-mode