Запланированные задачи в Claude Code: /loop и cron
Как заставить Claude Code автоматически проверять деплой, следить за PR или напомнить о задаче — без выхода из терминала.
TL;DR: В Claude Code появились запланированные задачи — команда /loop и cron-инструменты. Можно автоматически проверять деплой, следить за PR или поставить себе напоминание. Всё работает внутри текущей сессии, без отдельных скриптов.Как работает /loop
Команда /loop запускает повторяющуюся задачу в пару слов:
/loop 5m проверь, закончился ли деплой, и расскажи что произошло
Claude разбирает интервал, превращает его в cron-выражение и запускает фоновую задачу.
Интервал можно указывать по-разному:
| Формат | Пример | Результат |
|---|---|---|
| В начале | /loop 30m проверь билд |
Каждые 30 минут |
С every в конце |
/loop проверь билд every 2 hours |
Каждые 2 часа |
| Без интервала | /loop проверь билд |
По умолчанию каждые 10 минут |
Поддерживаются единицы: s (секунды), m (минуты), h (часы), d (дни). Секунды округляются до ближайшей минуты — cron не поддерживает субминутную точность. Если интервал не делится ровно (например, 7m или 90m), Claude округлит до ближайшего «чистого» значения и скажет, что выбрал.
Запуск команд по расписанию
Промпт в /loop может быть другой командой или скиллом. Это удобно, если у тебя уже есть готовый workflow:
/loop 20m /review-pr 1234
Каждый раз, когда срабатывает задача, Claude выполняет /review-pr 1234, как если бы ты набрал это руками. Я использую это для мониторинга CI — удобно, когда не хочется вручную дёргать gh run view.
Одноразовые напоминания
Для разовых напоминалок /loop не нужен — достаточно написать на обычном языке:
напомни мне в 15:00 запушить релизную ветку
через 45 минут проверь, прошли ли интеграционные тесты
Claude привязывает время срабатывания к конкретной минуте через cron-выражение и подтверждает, когда сработает. После срабатывания задача удаляется сама.
Управление задачами
Управлять расписанием можно на естественном языке:
какие у меня запланированные задачи?
отмени проверку деплоя
Под капотом это три инструмента:
| Инструмент | Назначение |
|---|---|
CronCreate |
Создать задачу. Принимает 5-значное cron-выражение, промпт и тип (повторяющаяся или разовая) |
CronList |
Список всех задач с ID, расписанием и промптами |
CronDelete |
Удалить задачу по 8-символьному ID |
Лимит — 50 задач на сессию. Честно, не представляю сценарий, где нужно столько или даже больше.
Как это работает внутри
Планировщик проверяет задачи каждую секунду и ставит их в очередь с низким приоритетом. Промпт выполняется между твоими запросами, а не пока Claude отвечает на текущий. Если Claude занят, задача подождёт, пока он освободится.
Все времена интерпретируются в твоей локальной таймзоне. Выражение 0 9 * * * означает 9 утра в твоём часовом поясе, а не UTC.
Jitter
Чтобы тысячи сессий не стучались в API одновременно, планировщик слегка сдвигает время срабатывания:
- Повторяющиеся задачи могут сработать с задержкой до 10% от их периода, но не более 15 минут. Часовая задача может сработать в любое время от
:00до:06 - Разовые задачи, привязанные к началу или середине часа, могут сработать до 90 секунд раньше
Смещение зависит от ID задачи и всегда одинаковое для одной и той же задачи. Если точное время критично — ставь минуту, отличную от :00 или :30 (например, 3 9 * * * вместо 0 9 * * *).
Автоудаление через 3 дня
Повторяющиеся задачи автоматически удаляются через 3 дня. Логично — никто не хочет обнаружить, что забытый /loop тихо сжигает токены уже вторую неделю. Если нужно дольше, пересоздай задачу до истечения.
Cron-выражения
CronCreate принимает стандартные 5-значные cron-выражения: минуты часы день-месяца месяц день-недели.
| Выражение | Значение |
|---|---|
*/5 * * * * |
Каждые 5 минут |
0 * * * * |
Каждый час ровно |
7 * * * * |
Каждый час в 7 минут |
0 9 * * * |
Каждый день в 9:00 |
0 9 * * 1-5 |
По будням в 9:00 |
30 14 15 3 * |
15 марта в 14:30 |
День недели: 0 или 7 — воскресенье, 6 — суббота. Расширенный синтаксис вроде L, W, ? и текстовых алиасов (MON, JAN) не поддерживается.
Ограничения
Задачи привязаны к сессии, и это накладывает ограничения:
- Задачи работают только пока Claude Code запущен и свободен. Закроешь терминал — всё отменится
- Нет «догоняющего» выполнения. Если Claude был занят, когда задача должна была сработать — она выполнится один раз после освобождения, без повторов за пропущенные интервалы
- Нет сохранения между перезапусками. Перезапуск Claude Code очищает все задачи
Как отключить планировщик
Если запланированные задачи мешают или не нужны:
export CLAUDE_CODE_DISABLE_CRON=1
После этого cron-инструменты и /loop станут недоступны, а все запланированные задачи перестанут срабатывать.
Что ещё почитать
- Как сэкономить токены на MCP с Tool Search — если используешь MCP-серверы в Claude Code
- Claude Code Remote Control: управляй сессией с телефона — ещё один способ взаимодействия с Claude Code
- Claude Code Security: AI сканирует код на уязвимости — безопасность в Claude Code