Claude Code научился работать по расписанию — /loop, Desktop scheduled tasks и удар по OpenClaw
Claude Code научился работать по расписанию — /loop, Desktop scheduled tasks и удар по OpenClaw
Anthropic добавили в Claude Code штуку, которую давно ждали — задачи по расписанию. Написал промпт, указал интервал, пошёл пить кофе. Claude сам проверит деплой, отревьюит коммиты за ночь или напомнит запушить ветку в три часа дня.
TL;DR: Два режима cron в Claude Code.
/loopв CLI — сессионный, умирает вместе с терминалом, максимум 50 задач, автоудаление через 3 дня. Desktop scheduled tasks — персистентный, с GUI в сайдбаре, переживает перезагрузку, догоняет пропущенные запуски за 7 дней. Для продакшена без привязки к ноутбуку — GitHub Actions сanthropics/claude-code-action@v1.
Режим первый: /loop в терминале
Самый быстрый способ — команда /loop. Пишешь интервал и промпт, Claude конвертит в cron-выражение и запускает фоновую задачу:
/loop 5m check if the deployment finished and tell me what happened
Интервал можно ставить в начале, в конце через every, или вообще не ставить — по умолчанию 10 минут:
- В начале:
/loop 30m check the build→ каждые 30 минут - В конце:
/loop check the build every 2 hours→ каждые 2 часа - Без интервала:
/loop check the build→ каждые 10 минут
Поддерживаются s (секунды), m (минуты), h (часы), d (дни). Секунды округляются вверх до минуты — cron точнее не умеет. Нечётные интервалы вроде 7m или 90m Claude округляет до ближайшего «чистого» значения и сообщает, что выбрал.
Можно зацикливать другие команды — и вот тут начинается магия:
/loop 20m /review-pr 1234
Каждые 20 минут Claude прогоняет /review-pr 1234 так, будто ты набрал это руками. Код-ревью на автопилоте. Или мониторинг CI:
/loop 5m check the CI status of PR #42, if it failed — read the logs and fix the issue
Одноразовые напоминания
Не только cron. Можно просто попросить естественным языком:
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
Claude создаёт одноразовую задачу, выполняет в нужное время и удаляет. Одноразовые задачи, привязанные к :00 или :30, могут сработать на 90 секунд раньше из-за jitter.
Что под капотом
Три инструмента: CronCreate (создать задачу с 5-полевым cron-выражением), CronList (посмотреть все задачи с ID), CronDelete (удалить по ID). Каждой задаче присваивается 8-символьный ID. Все времена — в локальной таймзоне, не UTC.
Планировщик проверяет задачи каждую секунду, но запускает промпт только между твоими запросами — если Claude занят ответом, задача ждёт.
Jitter: повторяющиеся задачи могут сработать на 10% позже (до 15 минут для часовых). Это защита от thundering herd на API, когда тысячи сессий стучат в одну секунду. Offset детерминированный — одна и та же задача всегда получает одинаковый сдвиг.
Ограничения
- Максимум 50 задач на сессию
- Автоудаление через 3 дня — защита от забытых циклов
- Закрыл терминал — всё пропало, никакой персистентности
- Пропущенные интервалы не догоняются — если Claude был занят, задача сработает один раз, когда освободится
- Отключить полностью:
CLAUDE_CODE_DISABLE_CRON=1
Режим второй: Desktop scheduled tasks
Для тех, кому нужна персистентность. В Desktop-приложении Claude Code задачи настраиваются через GUI в сайдбаре: кнопка Schedule → + New task.
Каждая задача — это имя (конвертится в kebab-case для папки на диске), промпт и частота:
- Manual — только по кнопке «Run now», для сохранённых промптов
- Hourly — каждый час со случайным offset до 10 минут
- Daily — с выбором времени, по умолчанию 9:00 утра
- Weekdays — то же, но без суббот и воскресений
- Weekly — с выбором дня и времени
Для нестандартных интервалов можно попросить Claude прямо в сессии: «schedule a task to run all the tests every 6 hours».
Как это работает
Каждый запуск — свежая сессия с полным доступом к файлам, MCP-серверам, скиллам и плагинам. Задача может редактировать файлы, запускать команды, коммитить и открывать PR. Можно включить worktree-изоляцию — каждый запуск получит свою ветку, как параллельные сессии.
Когда задача срабатывает, появляется десктопная нотификация и новая сессия в секции Scheduled в сайдбаре. Открываешь, смотришь, что Claude сделал, отвечаешь на запросы разрешений.
Пропущенные запуски
Если компьютер спал, при пробуждении Desktop проверяет пропущенные запуски за последние 7 дней и догоняет ровно один — самый свежий. Дневная задача, пропустившая 6 дней, запустится один раз.
Нюанс, о котором документация предупреждает мелким шрифтом: задача на 9 утра может запуститься в 11 вечера, если ноут проспал весь день. Anthropic советуют добавлять в промпт проверку: «Only review today's commits. If it's after 5pm, skip the review and just post a summary of what was missed.»
Разрешения и автономность
У каждой задачи свой permission mode. Если задача в Ask mode натыкается на инструмент без разрешения — она зависает, пока ты не одобришь. Сессия висит в сайдбаре и ждёт.
Рецепт от Anthropic: после создания задачи нажать Run now, пройтись по всем запросам и выбрать «always allow». Дальше задача работает автономно. Отозвать разрешения можно на странице задачи в панели Always allowed.
Файлы задач хранятся в ~/.claude/scheduled-tasks/<task-name>/SKILL.md с YAML frontmatter — можно редактировать вручную.
Третий путь: GitHub Actions
Для продакшн-автоматизации без привязки к десктопу — GitHub Actions с триггером schedule и официальным anthropics/claude-code-action@v1:
name: Daily Report on: schedule: - cron: "0 9 * * *" jobs: report: runs-on: ubuntu-latest steps: - uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} prompt: "Generate a summary of yesterday's commits and open issues" claude_args: "--model opus"
Работает на ubuntu-раннерах GitHub, не зависит от ноутбука, поддерживает AWS Bedrock и Google Vertex AI. Цена — минуты GitHub Actions + токены API. Установка — /install-github-app прямо из Claude Code.
Что советуют автоматизировать
- Мониторинг деплоя — поллинг каждые 5 минут, Claude сам создаёт PR если находит фиксабельный баг. Thariq Shihipar из Anthropic показал именно этот кейс: «проверка error logs каждые пару часов с автоматическим PR для исправимых багов»
- Ежедневный код-ревью — коммиты за вчера, с автоматическими комментариями в PR
- Проверка безопасности — CVE, устаревшие зависимости, npm audit
- Утренний брифинг — собирает данные из GitHub, Slack, Linear через коннекторы Desktop
- Heartbeat а-ля OpenClaw — проверка, нет ли новых задач, и их выполнение
Подводные камни
1. DST-баг, вешающий приложение. 8 марта 2026 пользователи в таймзонах с переходом на летнее время обнаружили, что Claude Desktop уходит в бесконечный цикл: планировщик не мог найти задачи, запланированные на «пропущенный» час, и зацикливался. Фикс — обновление до v1.1.5749. Если ваш часовой пояс наблюдает DST — держите приложение обновлённым, иначе рискуете словить это снова при следующем переводе часов.
2. Scheduled tasks на Windows не работают. Баг #29022 в Cowork — инструмент create_scheduled_task не инжектится в контекст сессии. Claude пытается фолбечить через crontab -e и gh CLI, ничего не работает. 15+ пользователей подтвердили на обеих платформах. Статус — open, с февраля 2026. Частичный фикс в v1.1.4498 не помог всем.
3. Очистка кэша убивает задачи. Баг #30092 — если очистить кэш и перезапустить Cowork, все scheduled tasks и их история исчезают безвозвратно. Бэкапов нет, защиты от случайного удаления нет. Файлы задач лежат в ~/.claude/scheduled-tasks/, но история запусков хранится в кэше.
4. Desktop работает только пока ноут не спит. Это не systemd-сервис и не фоновый демон. Закрыл крышку — задачи не выполняются. Опция «Keep computer awake» в настройках предотвращает засыпание от бездействия, но закрытие крышки всё равно усыпляет машину. Для 24/7 автоматизации нужен GitHub Actions или внешний сервер.
5. Нет Linux-поддержки Desktop. Десктопное приложение Claude — только macOS и Windows. Linux-пользователи остаются с CLI /loop (умирает с сессией) или самодельными cron-задачами через claude -p в headless-режиме.
Альтернативы
-
OpenClaw — работает непрерывно на локальной машине, мониторит почту, календари, мессенджеры, выполняет задачи через Heartbeat. Шире по охвату — это «жизненный ассистент», а не только кодинг-агент. Но требует отдельной инфраструктуры и доступа к API провайдеров, плюс Google и Anthropic активно банят сторонних клиентов.
-
claude-code-scheduler — плагин (466 звёзд), использующий нативные планировщики ОС: launchd на macOS, crontab на Linux, Task Scheduler на Windows. Задачи переживают перезагрузку, поддерживают worktree-изоляцию и автономный режим через
claude -p. По сути — то, чем Desktop scheduled tasks должны были быть на всех платформах. -
runCLAUDErun — нативное macOS-приложение с GUI для планирования задач Claude Code. Бесплатное, использует launchd, работает без регистрации. Если Desktop-приложение Claude ещё не поддерживает scheduled tasks на вашей версии — рабочая альтернатива.
Вердикт
/loop — для быстрого поллинга во время сессии: деплой, тесты, PR-статус. Написал, посмотрел результат, закрыл терминал. Desktop scheduled tasks — для ежедневных рутин вроде утреннего код-ревью или проверки зависимостей: удобный GUI, персистентность, но привязка к открытому ноутбуку и баги на Windows. Для продакшн-автоматизации без привязки к железу — GitHub Actions с schedule триггером, тут без вариантов.
Нанёс ли Claude Code удар по OpenClaw? Да, но не смертельный. Scheduled tasks закрывают нишу «фоновой разработки», однако OpenClaw — это другая лига: мессенджеры, почта, календари, кросс-платформенная оркестрация. Если нужен только кодинг-автопилот — Claude Code теперь покрывает 80% потребностей. Если нужен AI-дворецкий для всей цифровой жизни — OpenClaw пока вне конкуренции, несмотря на проблемы с банами провайдеров.
Как попробовать
- Обновить Claude Code до последней версии — CLI:
claude update, Desktop: автообновление при запуске - В терминале — набрать
/loop 5m check the buildи посмотреть, как задача создаётся - В Desktop — нажать Schedule в сайдбаре → + New task, указать промпт и частоту
- GitHub Actions — скопировать пример workflow в
.github/workflows/, добавитьANTHROPIC_API_KEYв secrets - Отключить, если мешает — переменная окружения
CLAUDE_CODE_DISABLE_CRON=1