Как продолжить работу Claude Code после отката лимита, пока ты спишь. Три способа — от надежного через CLI до UI-автоматизации, с разрешениями macOS, запуском по расписанию и готовым промптом, с которым нейронка соберет скрипт под твою машину за один заход.
Обновлено 07.2026. Первая версия этого материала описывала один способ — UI-автоматизацию через AppleScript. Он рабочий, но с тех пор у Claude Code появились штатные механизмы под ровно эту задачу, и начинать теперь стоит не с него. Ниже — все три способа, от надежного к костыльному, и готовый промпт, с которым нейронка соберет тебе это за один заход.
Сначала важное: это не обход лимитов
Лимит никуда не девается и ничего не обходится. Скрипт просто ждет, пока лимит откатится сам, и после этого нажимает продолжить вместо тебя. Разница принципиальная: мы автоматизируем свое возвращение к задаче, а не обманываем счетчик. Все, что ниже, работает внутри обычных правил и твоей подписки.
Что выбрать: короткая развилка
Прежде чем городить скрипт, проверь три вещи по порядку.
Первое. Агент останавливается не из-за лимита, а потому что доделал кусок и ждет твоего «продолжай»? Тогда тебе не скрипт нужен, а /goal. Он держит цель сам и не возвращает управление, пока условие не выполнено.
Второе. Ты просто хочешь добить задачу не с рабочего места? Тогда Remote Control: сессия идет на компьютере, а ты управляешь ей с телефона.
Третье. Упираешься именно в лимит и хочешь, чтобы работа продолжилась ночью сама? Тогда да, скрипт. И тут два варианта: через CLI без интерфейса (надежно) или через UI-автоматизацию (если работаешь в браузере или десктопном приложении).
Способ 1. Через CLI, без интерфейса
Это правильный путь. Никакого фокуса окна, никаких нажатий клавиш, ничего не зависит от того, что происходит на экране.
Идея: скрипт сам пытается продолжить сессию, и если упирается в лимит — ждет и пробует снова.
Создай файл: nano ~/claude-resume.sh
Содержимое:
#!/bin/bash
# Возобновление работы Claude Code после отката лимита.# Пытается продолжить последнюю сессию в папке проекта.# Уперся в лимит — ждет и пробует снова.
PROJECT="$HOME/projects/my-project" # папка с твоим проектомPROMPT="Продолжай с того места, где остановился"RETRY_MINUTES=15 # пауза между попыткамиMAX_TRIES=40 # порядка 10 часов при паузе 15 минутLOG="$HOME/claude-resume.log"
cd "$PROJECT" || exit 1
for i in $(seq 1 $MAX_TRIES); do
echo "$(date '+%F %T') попытка $i" >> "$LOG"
if claude -c -p "$PROMPT" >> "$LOG" 2>&1; then
echo "$(date '+%F %T') готово" >> "$LOG"
exit 0fiecho "$(date '+%F %T') не вышло, жду $RETRY_MINUTES мин" >> "$LOG"
sleep $((RETRY_MINUTES * 60))done
echo "$(date '+%F %T') попытки кончились" >> "$LOG"
Разбор флагов:
claude -c продолжает последнюю сессию в текущей папке. Если сессий несколько и нужна конкретная — бери claude -r и указывай сессию.
-p — режим без диалога: Claude отрабатывает запрос, печатает результат и выходит. Именно это делает его пригодным для скриптов.
Права на запуск и старт:
chmod +x ~/claude-resume.shcaffeinate -is ~/claude-resume.sh
caffeinate держит Mac бодрым, пока скрипт живет. Флаг -i не дает уснуть системе по бездействию, -s — держит систему при работе от розетки. Развернутый вариант из первой версии материала, -dimsu, добавляет к этому еще и экран — для фонового скрипта это лишнее, экран может спокойно гаснуть.
Важная оговорка. Скрипт выше считает неуспехом любой ненулевой код возврата, не только лимит. Как именно твоя версия Claude Code сигналит об упоре в лимит — проверь руками: упрись в лимит, выполни claude -c -p "тест", затем echo $? и посмотри код и текст. Если код отличается от общего — допиши условие, чтобы не молотить впустую на реальной ошибке.
Способ 2. По расписанию через launchd
Если время отката известно заранее, скрипт можно не держать запущенным, а разбудить в нужный час. В macOS для этого есть launchd — штатный планировщик.
Создай файл ~/Library/LaunchAgents/com.asukhushin.claude-resume.plist:
xml<?xml version="1.0" encoding="UTF-8"?><plist version="1.0"><dict><key>Label</key><string>com.asukhushin.claude-resume</string><key>ProgramArguments</key><array><string>/bin/bash</string><string>/Users/ТВОЕ_ИМЯ/claude-resume.sh</string></array><key>StartCalendarInterval</key><dict><key>Hour</key><integer>4</integer><key>Minute</key><integer>30</integer></dict><key>StandardErrorPath</key><string>/tmp/claude-resume.err</string></dict></plist>
Загрузить:
launchctl load ~/Library/LaunchAgents/com.asukhushin.claude-resume.plist
Одна деталь: спящий Mac задачу не выполнит, он проснется только к следующему запуску. Чтобы разбудить машину к нужному часу, добавь пробуждение по расписанию: sudo pmset repeat wakeorpoweron MTWRFSU 04:25:00
Мак просыпается в 04:25, в 04:30 стартует скрипт.
Способ 3. UI-автоматизация — в браузере
Это исходный вариант из первой версии материала. Он нужен, когда сессия живет не в терминале: в браузере или в десктопном приложении. Тогда продолжить можно только одним способом — активировать окно и нажать Enter за тебя. Скрипт унифицирован: приложение задается в одной переменной сверху, менять тело не нужно.
#!/bin/bash# UI-автоматизация: активирует приложение и жмет Enter.# Работает с любым приложением: браузер, десктопный Claude, что угодно.APP="Yandex" # точное имя приложения в macOSWAIT_MINUTES=210 # сколько ждать до отката лимитаLOG="$HOME/claude-ui-resume.log"echo "$(date '+%F %T') жду $WAIT_MINUTES мин, потом бужу $APP" >> "$LOG"sleep $((WAIT_MINUTES * 60))osascript <<EOFtell application "$APP"activateend telldelay 2tell application "System Events"key code 36end tellEOFecho "$(date '+%F %T') Enter отправлен" >> "$LOG"
Запуск:
chmod +x ~/claude-ui-resume.shcaffeinate -is ~/claude-ui-resume.sh
Перед запуском обязательно проверь, как приложение называется в системе, иначе AppleScript просто не найдет его:
ls /Applications | grep -i yandex
Что подставлять в APP: имя из этой выдачи без расширения .app. Для Яндекс.Браузера это обычно Yandex, для десктопного Claude — Claude. Подготовка сессии перед сном: открываешь Claude, пишешь в поле ввода слово «Продолжай» и не отправляешь. Скрипт разбудит окно и нажмет Enter — отправится именно этот текст. Ничего другого в фокусе быть не должно.
Разрешения macOS
Этого шага не было в первой версии, а он ломает сценарий чаще всего. AppleScript не может нажимать клавиши в чужом окне, пока ты не выдашь права вручную.
Открой Системные настройки — Конфиденциальность и безопасность и добавь Терминал в двух местах:
- Универсальный доступ — разрешает отправлять нажатия клавиш через System Events.
- Автоматизация — разрешает управлять конкретным приложением, в нашем случае браузером.
Проверь одной строкой, не дожидаясь ночи:
osascript -e 'tell application "System Events" to key code 36'
Если ничего не произошло и в терминале ошибка про доступ — прав нет, возвращайся в настройки. Если Enter нажался — все на месте.
Не наступить на грабли
Фиксированный sleep — угадайка. Ты не знаешь точное время отката, а промахнешься на десять минут — скрипт нажмет Enter вникуда. Поэтому в способе с CLI стоит ретрай, а не одно ожидание.
Mac уснул. Без caffeinate система засыпает, и таймер сдвигается. Если крышка закрыта и питание не подключено — скрипт не отработает вообще.
Фокус ушел. При UI-автоматизации Enter уходит в то окно, которое активно. Открыл ночью что-то поверх — нажатие улетит туда.
Терминал закрыт. Закрыл окно терминала — процесс умер вместе с ним. Держи вкладку открытой или запускай через nohup, а лучше через launchd.
Обновление приложения. Браузер обновился и переименовался — AppleScript не найдет его по старому имени. Перепроверяй ls/Applications.
Универсальный промпт для нейронки
Приходишь с этим в Claude, он задает пару вопросов и отдает готовый скрипт под твою тачку.
Собери мне автоматизацию для macOS: продолжить работу Claude Code после того, как откатится лимит, пока я сплю. Мне нужен рабочий результат за один заход, без теории.
Сначала задай мне три вопроса и дождись ответов:
1. Где живет сессия — в терминале, в браузере или в десктопном приложении.
2. Абсолютный путь к папке проекта.
3. Через сколько примерно откатывается лимит и к какому часу нужен результат.
Дальше собери под мой ответ:
Если терминал — скрипт на bash с ретрай-циклом: claude -c -p с моим текстом, пауза между попытками, ограничение по числу попыток, лог с таймстампами в файл, корректный выход при успехе. Никакой UI-автоматизации.
Если браузер или десктоп — скрипт на bash с ожиданием и osascript-блоком: активировать приложение по имени из переменной сверху, пауза, key code 36, запись в лог. Имя приложения вынеси в переменную, тело не трогай.
В обоих случаях дай мне отдельно и по шагам:
- команду создания файла и chmod
- команду запуска через caffeinate с объяснением, какие флаги и зачем
- вариант запуска по расписанию через launchd: готовый plist с моим путем и командой launchctl load, плюс pmset для пробуждения машины
- проверку прав в Системных настройках, если нужна UI-автоматизация, и однострочник для проверки, что права выданы
- как проверить имя приложения в macOS
- что писать в поле ввода перед сном и почему нельзя ничего открывать поверх
Требования к результату:
- код готовый к копированию, с комментариями на русском
- все, что зависит от моей машины, вынеси в переменные в шапке скрипта
- честно скажи, где вариант хрупкий и что может пойти не так ночью
- не выдумывай флаги: если не уверен, что флаг есть в моей версии, так и напиши и предложи проверить через claude --help
- в конце дай чеклист из пяти пунктов, что проверить перед сном
Что почитать дальше
/goalы агент доводил задачу сам: https://code.claude.com/docs/en/goal, чтоб
Remote Control, чтобы рулить сессией с телефона: https://code.claude.com/docs/en/remote-control
Справочник CLI, все флаги: https://code.claude.com/docs/en/cli-reference
Задачи по расписанию у самого Claude: https://code.claude.com/docs/en/routines