Это подробное руководство. Пятиминутный обзор — в сопутствующей публикации в блоге.
1. Почему агенты по расписанию так важны
До недавнего времени ИИ-агент для программирования работал только под присмотром человека. Вы открывали терминал, ставили задачу, одобряли действия и читали результат. Закрыли сессию — работа остановилась. Такая модель подходит для исследовательской работы, но значительная часть инженерных задач не является ни исследовательской, ни срочной. Это регулярная работа: разбор очереди задач, накопившихся за ночь, проверка соответствия документации API, ревью каждого pull request по одному и тому же чек-листу, проверка развёртывания до закрытия окна релиза.
Командам, которые хотели поручить такую работу агенту без присмотра, приходилось самим строить инфраструктуру. Обычно выбирали cron-задачу в GitHub Actions, отдельную машину, работающую где-то в подсобке, или движок рабочих процессов вроде Trigger.dev или n8n с прикрученным вызовом агента. Всё это работает, но каждый вариант добавляет инфраструктуру, учётные данные, расходы и поддержку вокруг того, что по сути является одной инструкцией: «делай это каждую ночь и сообщай, что нашёл».
Routines избавляют от этой обвязки. Расписание, вычисления, клонирование репозитория и журнал аудита — всё находится внутри самого Claude Code.
2. Что такое routine
Anthropic определяет routine как сохранённую конфигурацию Claude Code. Она состоит из пяти частей:
- Промпт. Инструкция, которую Claude выполняет при каждом запуске. Поскольку отвечать на вопросы некому, она должна быть самодостаточной и чётко описывать, что считается результатом. Здесь же выбирается модель, которая используется при каждом запуске.
- Репозитории. Один или несколько репозиториев GitHub. Каждый клонируется заново в начале каждого запуска — из ветки по умолчанию, если в промпте не указано иное.
- Облачное окружение. Определяет сетевой доступ, переменные окружения и необязательный скрипт настройки, устанавливающий зависимости. Результат настройки кешируется, поэтому скрипт не выполняется каждый раз заново.
- Коннекторы. Интеграции MCP в вашей учётной записи claude.ai — например, Slack, Linear или Google Drive, — из которых задание может читать данные и в которые может записывать.
- Триггеры. Один или несколько из следующих: расписание, API и событие GitHub. Одно задание может сочетать все три.
Каждый запуск — это полноценная облачная сессия Claude Code. Она может выполнять shell-команды, использовать навыки (skills), сохранённые в клонированном репозитории, и вызывать любые инструменты подключённых коннекторов. Выбора режима разрешений нет, и ничто не ждёт подтверждения. В этой автономности весь смысл, и именно поэтому так важно ограничивать область действия (см. раздел 8).
3. Три типа триггеров
3.1 Расписание
Самый простой триггер запускает задание с заданной периодичностью (ежечасно, ежедневно, по будням или еженедельно) либо однократно в определённый момент в будущем. Несколько важных деталей:
- Локальное время. Вы указываете время в своём часовом поясе, и Claude Code сам его пересчитывает, поэтому запуск в 09:00 произойдёт в 09:00 по вашим часам, где бы ни находилось облачное оборудование. В некоторых ранних сторонних руководствах утверждалось, что расписание работает только в UTC. Документация Anthropic говорит об обратном.
- Избегайте начала часа. Запуски, запланированные ровно на начало часа, могут стартовать с опозданием на несколько минут. Если выбрать 09:07 вместо 09:00, время запуска будет более предсказуемым.
- Собственный cron. Для интервалов, которых нет среди готовых вариантов, — например, каждые два часа или первое число месяца — выберите ближайший вариант, а затем выполните в CLI
/schedule update, чтобы задать cron-выражение. Минимальный интервал — один час; более частые запуски отклоняются. - Однократные запуски. Опишите время обычными словами, например
/schedule in 2 weeks, open a cleanup PR that removes the feature flag. Перед сохранением Claude подтвердит точное время. После срабатывания задание отключается и помечается как Ran. Однократные запуски не учитываются в дневном лимите.
3.2 API
Триггер API даёт заданию собственный HTTPS-эндпоинт. Запустить его может любая система, способная отправить аутентифицированный POST-запрос: система оповещений, конвейер развёртывания, внутренняя админ-панель. Токен создаётся в веб-интерфейсе, показывается один раз, действует только для этого задания и может быть в любой момент перевыпущен или отозван.
curl -X POST https://api.anthropic.com/v1/claude_code/routines/<ROUTINE_TRIGGER_ID>/fire \
-H "Authorization: Bearer <ROUTINE_TOKEN>" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text": "Error rate on checkout-api above 5% for 10 minutes."}'
В ответе возвращаются идентификатор и URL сессии, по которому можно наблюдать за запуском в реальном времени. Необязательное поле text передаёт контекст конкретного запуска. Командам, внимательным к безопасности, стоит учесть: Claude Code оборачивает этот текст в блок <routine-fire-payload> и помечает его как недоверенные данные. Claude не будет выполнять содержащиеся в нём инструкции, если сохранённый промпт задания прямо не предписывает использовать полезную нагрузку. Если задание должно реагировать на текст оповещения, промпт должен говорить об этом явно, например: «Investigate the alert described in the routine-fire-payload block.» Благодаря такой архитектуре утёкший токен позволяет запустить задание, но не позволяет переписать его инструкции.
Эндпоинт работает за бета-заголовком с датой. Anthropic сообщает, что несовместимые изменения будут выходить под новыми версиями заголовка, а две предыдущие версии продолжат работать, чтобы у клиентов было время на миграцию.
3.3 События GitHub
Триггер GitHub запускает новую сессию всякий раз, когда в подключённом репозитории происходит подходящее событие. Для этого в репозитории должно быть установлено Claude GitHub App. Поддерживаются две категории событий:
- Pull request: открытие, закрытие, назначение, добавление метки, синхронизация и другие обновления.
- Release: создание, публикация, редактирование или удаление.
Фильтры сужают круг учитываемых событий. Фильтровать можно по автору, заголовку, описанию, базовой ветке, исходной ветке, меткам, статусу черновика и статусу слияния с помощью операторов equals, contains, starts with, is one of, is not one of и matches regex. Должны выполняться все условия. Одна ловушка: matches regex проверяет поле целиком, поэтому, чтобы поймать любой заголовок со словом «hotfix», нужно .*hotfix.*, а не hotfix.
Каждое событие порождает собственную независимую сессию, поэтому два push в один и тот же pull request означают два запуска. В период preview на события GitHub также действуют почасовые лимиты для каждого задания и каждой учётной записи. События сверх лимита отбрасываются до сброса окна.
4. Создание routine шаг за шагом
Создавать задания можно в трёх местах: в веб-интерфейсе по адресу claude.ai/code/routines, в разделе Routines на вкладке Code приложения Claude Desktop или в CLI. Все три пишут в одну и ту же учётную запись, поэтому задание, созданное в одном месте, сразу появляется в остальных.
4.1 В веб-интерфейсе
- Откройте
claude.ai/code/routinesи выберите New routine. - Задайте имя и напишите промпт. Выберите модель.
- Добавьте репозитории, в которых должен работать Claude.
- Выберите облачное окружение. Окружение Default имеет сетевой доступ уровня Trusted, который разрешает распространённые реестры пакетов, API облачных провайдеров и домены для разработки. Если заданию нужен доступ к вашим собственным сервисам, сначала настройте список разрешённых доменов окружения.
- Выберите один или несколько триггеров. Для триггера API сначала сохраните задание — URL и токен генерируются после этого.
- Проверьте коннекторы. По умолчанию подключены все ваши коннекторы, и Claude может без запроса использовать любой их инструмент, включая операции записи. Уберите всё, что не нужно для задачи.
- Нажмите Create, а затем Run now, чтобы проверить задание, прежде чем полагаться на расписание.
4.2 Из CLI
В любой локальной сессии Claude Code команда /schedule (псевдоним /routines) создаёт задание по расписанию в формате диалога. Claude уточняет периодичность, репозитории и промпт, а затем сохраняет задание в вашей учётной записи.
/schedule daily PR review at 9am
/schedule tomorrow at 9am, summarise yesterday's merged PRs
/schedule list
/schedule update
/schedule run
/schedule why did my nightly review do nothing this morning?
Последний пример особенно полезен. Claude выводит список последних запусков задания, читает соответствующий журнал и объясняет, что произошло, включая ошибки инструментов и отказы в разрешениях. Свежие версии CLI также умеют в диалоге добавлять триггер GitHub, если установлено GitHub App. Однако токены API можно создавать и отзывать только в веб-интерфейсе.
Если команда /schedule не распознаётся, причина почти всегда в аутентификации. Для Routines нужен вход по подписке claude.ai. Ключ API из Console, переменная окружения ANTHROPIC_API_KEY или вход через облачного провайдера, например Amazon Bedrock, скрывают эту команду. На тарифах Team и Enterprise владелец (Owner) также может отключить Routines для всей организации.
5. Промпты, которые выдерживают автономные запуски
Промпт задания ближе к регламенту (runbook), чем к сообщению в чате. Прояснить неоднозначность некому, поэтому расплывчатые инструкции дают расплывчатый результат или, что хуже, уверенные действия, которых вы не планировали. Сравните:
«Посмотри наши репозитории и расскажи, что происходит».
«Составь список pull request в acme/webapp, открытых или обновлённых за последние 24 часа. Для каждого укажи автора, зелёный ли CI и есть ли неразрешённые обсуждения в ревью. Не комментируй и не изменяй ни один PR. Опубликуй одно сообщение в Slack в #eng-daily с таблицей результатов, затем отдельно перечисли PR старше пяти дней под заголовком 'Stale'. Если PR нет, опубликуй 'No PR activity' и остановись».
Хороший промпт задания определяет:
- Область действия: какие репозитории, какой временной интервал и какие элементы.
- Разрешённые действия: что Claude может изменять и, что не менее важно, чего касаться нельзя.
- Результат: точное место назначения и формат — например, черновой PR, канал Slack или комментарий в трекере.
- Условия остановки: что делать, если делать нечего, и когда прекращать попытки.
- Обработку полезной нагрузки: для триггеров API — нужно ли и как использовать переданный текст.
Будьте готовы доработать новое задание два-три раза в первую неделю. Читайте журналы сессий, а не только значок статуса. Anthropic прямо указывает, что зелёный статус означает лишь то, что сессия запустилась и завершилась без инфраструктурной ошибки. Это не значит, что задача выполнена успешно.
6. Подпрограммы: структурирование работы внутри одного запуска
У Anthropic нет функции под названием «подпрограммы» (sub-routines). В Workstation мы используем этот термин для паттерна проектирования, который делает длительные автономные запуски гораздо надёжнее: промпт задания выступает оркестратором и делегирует каждый чётко определённый шаг субагенту или навыку, сохранённому в репозитории.
Это работает благодаря двум строительным блокам Claude Code, которые хранятся вместе с вашим репозиторием:
- Субагенты — это Markdown-файлы с YAML-заголовком в
.claude/agents/. У каждого свой системный промпт, список разрешённых инструментов и, при необходимости, своя модель, и каждый работает в собственном контекстном окне. Вызывающей стороне возвращается только сводка. Субагенты могут работать параллельно и по умолчанию сами могут делегировать задачи на глубину до трёх уровней. - Навыки (skills) в
.claude/skills/упаковывают повторно используемые процедуры — например, ваш стиль release notes или чек-лист проверки безопасности, — которые Claude загружает, когда они нужны. Routines используют навыки, сохранённые в клонированном репозитории.
Ночное задание по обслуживанию, построенное таким образом, может выглядеть так:
# Routine prompt (orchestrator)
1. Use the issue-triager subagent to label and assign issues opened since the last run.
2. Pick the single highest-priority bug labelled "good-first-fix".
3. Use the bug-fixer subagent to implement a fix on a claude/ branch.
4. Use the test-runner subagent to run the test suite; if it fails twice, stop and report.
5. Open ONE draft PR, using the release-notes skill for the description.
6. Post a three-line summary to #eng-nightly.
# .claude/agents/issue-triager.md
---
name: issue-triager
description: Labels and assigns new issues. Never edits code.
tools: Read, Grep, Glob
model: haiku
---
You triage GitHub issues. Apply area labels from CODEOWNERS and
assign the owning team. Return a table of issue, label and owner.
Преимущества вполне практичны. Каждый помощник видит только то, что ему нужно, поэтому контекст оркестратора остаётся компактным и сфокусированным на протяжении всего долгого запуска. Права на инструменты на каждом шаге уже: описанный выше triager вообще не может редактировать файлы. Механические шаги могут выполнять более дешёвые модели. А поскольку субагенты и навыки хранятся в системе контроля версий, изменения в поведении задания проходят код-ревью, как любые другие изменения.
7. Сопрограммы: задания, которые работают вместе
Повторим: «сопрограммы» (co-routines) — наш термин, а не функция Anthropic. Мы называем так несколько независимых заданий, передающих работу друг другу, подобно тому как на производственной линии деталь переходит от одного участка к следующему. Routines не могут вызывать друг друга напрямую и не имеют общей памяти. Вместо этого одно задание создаёт долговременный артефакт, за появлением которого следит триггер другого задания.
Типичная цепочка:
- Задание A (расписание) по будним вечерам разбирает бэклог и открывает черновой PR из ветки
claude/fix-…. - Задание B (GitHub,
pull_request.opened) отфильтровано по исходным веткам, начинающимся сclaude/. Оно применяет чек-лист ревью команды и ставит метки на PR. - Человек проверяет изменения и выполняет слияние. Это точка утверждения.
- Задание C (GitHub,
pull_request.closed, merged = true) обновляет документацию или переносит изменение в родственный SDK и открывает последующий PR. - Задание D (API) вызывается конвейером развёртывания после релиза. Оно выполняет smoke-проверки и публикует решение go или no-go. При no-go оно создаёт задачу в трекере, которую задание A подхватит на следующую ночь.
Каналы передачи работы — от наиболее к наименее структурированным:
- События GitHub: встроенные, фильтруемые и полностью прослеживаемые.
- Метки и соглашения об именовании веток: маршрутизируют работу без связующего кода.
- Вызовы API: из CI, систем мониторинга или внутренних инструментов; полезная нагрузка обрабатывается как недоверенный контекст.
- Общий трекер или артефакт: задача в Linear или страница статуса, которую читает следующий запуск по расписанию.
Проектируйте сопрограммы внимательно. Используйте фильтры, чтобы задание никогда не срабатывало на собственный результат, — например, исключая авторов или ветки, которые оно создаёт. Оставляйте ручное слияние между любым заданием, которое пишет код, и любым заданием, которое его выпускает. Помните, что все этапы расходуют один и тот же дневной лимит запусков учётной записи и лимиты событий GitHub. Если вы начинаете строить ветвящуюся логику, повторные попытки и параллельное распределение по множеству заданий, значит, вы переросли этот паттерн и лучше подойдёт специализированный движок рабочих процессов.
8. Безопасность и управление
- Routines действуют от вашего имени. Задания принадлежат отдельной учётной записи claude.ai и не передаются коллегам. Коммиты и pull request подписываются вашей учётной записью GitHub, а действия коннекторов выполняются через ваши привязанные аккаунты. Относитесь к заданию как к персональному токену доступа, к которому прилагается интеллект.
- Защита веток. По умолчанию Claude отправляет изменения в ветки с префиксом
claude/. Он отказывается выполнять push в защищённые ветки, в ветки с чужим открытым PR и в ветки, содержащие коммиты других людей. - Минимальные привилегии. Удаляйте ненужные коннекторы. Оставляйте сетевой доступ на уровне Trusted, если не требуется конкретный домен; заблокированные запросы завершаются ошибкой
403сx-deny-reason: host_not_allowed. На тарифах Pro и Max храните ключи API как API credentials окружения, а не как обычные переменные, которые видны всем, кто использует окружение. - Недоверенный ввод. Полезная нагрузка API и текст Run now поступают с пометкой «недоверенные». Для контента, полученного во время запуска, например описаний задач и веб-страниц, сохраняется обычная защита от prompt injection. Пишите промпты, в которых указано, чему Claude может доверять.
- Состояние подключения. Если подключение к GitHub истекает, запуски пропускаются в течение 72 часов, после чего задание отключается до повторного подключения.
- Контроль на уровне организации. Владельцы (Owner) на тарифах Team и Enterprise могут отключить Routines для всех участников в настройках администрирования.
9. Тарифы, использование и лимиты
| Тариф | Запусков в день на момент запуска |
|---|---|
| Pro | 5 |
| Max | 15 |
| Team и Enterprise | 25 |
Routines расходуют лимиты подписки так же, как интерактивные сессии. Дневной лимит действует дополнительно к этому. Текущая квота отображается на странице claude.ai/code/routines и может меняться в период preview. Если включены кредиты использования, запуски сверх лимита продолжаются с оплатой по факту; если нет, дополнительные запуски отклоняются до сброса окна. Однократные запуски по расписанию в лимите не учитываются. Пока подписка приостановлена, её задания тоже приостановлены.
10. Routines в сравнении с другими способами планирования
10.1 Внутри Claude Code
| Routines (облако) | Запланированные задачи Desktop | /loop |
|
|---|---|---|---|
| Где выполняется | Облако Anthropic | Ваш компьютер | Ваш компьютер |
| Компьютер должен быть включён | Нет | Да | Да |
| Сессия должна быть открыта | Нет | Нет | Да |
| Локальные файлы | Нет (свежий клон) | Да | Да |
| Запросы разрешений | Нет (автономно) | Настраиваются | Наследуются от сессии |
| Минимальный интервал | 1 час | 1 минута | 1 минута |
| Лучше всего подходит для | Надёжной автономной работы | Задач, требующих локальных инструментов | Опроса во время сессии |
Задачи /loop привязаны к сессии и истекают через семь дней. Они идеально подходят, чтобы присматривать за сборкой или pull request, пока вы работаете, но не заменяют routine.
10.2 За пределами Claude Code
- GitHub Actions — недорогое решение, которое живёт рядом с кодом и даёт полный контроль над раннером. Цена — YAML, управление секретами и обслуживание раннеров. Выбирайте Actions для детерминированных шагов сборки, а Routines — для работы, требующей суждений.
- Движки рабочих процессов, такие как Trigger.dev, обеспечивают повторные попытки, параллельное распределение и длительную оркестрацию, но саму оркестрацию вы пишете в коде. Используйте их, когда рабочий процесс сам по себе является продуктом.
- Интеграционные платформы, такие как n8n и Zapier, отлично перемещают данные между SaaS-инструментами. Routines сильны в анализе кода, журналов и документов. Они хорошо сочетаются: поток n8n может вызывать API-эндпоинт задания.
11. Сценарии, где это хорошо работает
- Разбор бэклога: ночная расстановка меток, назначение ответственных и утренняя сводка.
- Разбор оповещений: система мониторинга вызывает триггер API, а Claude сопоставляет трассировку стека с недавними коммитами и открывает черновое исправление.
- Индивидуальное код-ревью: ваш собственный чек-лист для каждого PR, готового к ревью.
- Проверка развёртывания: smoke-проверки и анализ журналов после каждого релиза с итоговым решением go или no-go.
- Расхождение документации: еженедельный анализ слитых PR и PR с обновлениями документации, ссылающейся на изменённые API.
- Перенос библиотек: отражение слитых изменений из одного SDK в родственный SDK на другом языке.
- Гигиена зависимостей: еженедельный обзор устаревших пакетов с одним протестированным PR на обновление.
Routines хуже подходят для работы с интервалом меньше часа, для задач, требующих решения человека в ходе выполнения, и для сложных многоветвящихся рабочих процессов с повторными попытками.
12. Как это восприняло сообщество
Реакция неоднозначная, но в целом позитивная. InfoQ цитирует инженеров, воодушевлённых возможностью подключать ИИ напрямую к дашбордам наблюдаемости и CI-процессам через вебхуки. Другие отнеслись скептически. Они напомнили о прежних функциях планирования Claude, работавших только на компьютере пользователя, и заявили, что надёжность, время безотказной работы и лимиты квот заслуживают внимания прежде новых функций. Наш опыт показывает, что Routines хорошо продуманы с точки зрения безопасности, особенно в части обработки недоверенной полезной нагрузки и защиты веток. Основные эксплуатационные риски — слишком широкий набор коннекторов и недостаточно конкретные промпты.
13. Как это использует Workstation
В Workstation мы внедряем агентную автоматизацию для клиентов в областях DevOps, финансовых операций и клиентских процессов. Routines хорошо вписываются в наш подход: детерминированная инфраструктура для обвязки, ИИ для принятия решений и ручное утверждение до того, как что-либо попадёт в продакшен. Если вам нужна помощь в проектировании цепочек заданий, библиотек субагентов или правил управления ими, свяжитесь с нашей командой.
14. Ключевые выводы
- Routine — это сохранённые промпт, репозитории, окружение, коннекторы и триггеры, которые автономно выполняются в облаке.
- Триггером может быть расписание (минимум один час, локальное время), вызов API (bearer-токен, недоверенная полезная нагрузка) или событие pull request либо release в GitHub.
- Доступно на тарифах Pro, Max, Team и Enterprise с дневными лимитами запусков сверх обычного использования. Функция пока находится в research preview.
- Используйте подпрограммы (субагенты и навыки), чтобы один длительный запуск оставался сфокусированным и работал с минимальными привилегиями.
- Используйте сопрограммы (задания, передающие работу через PR, метки и вызовы API) для многоэтапных конвейеров с ручным подтверждением слияния посередине.
- Жёстко ограничивайте коннекторы и сетевой доступ, пишите промпты как регламенты и читайте журналы сессий.
Источники и дополнительные материалы
- Anthropic: Introducing routines in Claude Code (14 апреля 2026 года)
- Документация Claude Code: Automate work with routines
- Документация Claude Code: Run prompts on a schedule (/loop)
- Документация Claude Code: Subagents
- Документация Claude Platform: Trigger a routine through the API
- InfoQ: Anthropic Introduces Routines for Claude Code Automation
- MindStudio: Claude Code Routines: How to Run Scheduled AI Agents Without a Server
- Tahir на Medium: What is Claude Code Routines?
Routines находятся в статусе research preview. Поведение, лимиты и API могут измениться. Сведения в этом руководстве соответствуют опубликованной документации Anthropic по состоянию на 25 сентября 2026 года.