Claude Code может сохранить разговор, но это ещё не означает, что запущенный вчера тест или сервер всё ещё работает. Сообщение Request timed out тоже не говорит, какие tool calls успели изменить файлы или внешнюю систему. Для длительной задачи нужно различать как минимум запрос, Bash-команду, сессию, процесс и долговечное состояние проекта.
Поэтому первый вопрос после сбоя — не «повторить?», а «какой слой остановился и что уже произошло?». Лишь после сверки можно безопасно выбрать retry, resume, rewind, respawn или другой runner.
У запроса и Bash-команды разные тайм-ауты
В текущем официальном справочнике ошибок значение API_TIMEOUT_MS по умолчанию равно 600000 мс: один модельный запрос ждёт до десяти минут. Отдельный справочник переменных окружения задаёт BASH_DEFAULT_TIMEOUT_MS в 120000 мс и BASH_MAX_TIMEOUT_MS в 600000 мс по умолчанию.
Эти пределы описывают разные события. Тайм-аут запроса означает, что Claude Code не получил ответ модели до deadline. Тайм-аут Bash означает, что истекло ожидание конкретного tool invocation; он не доказывает состояние каждого дочернего процесса. Третий предел задаёте вы сами — сколько времени, бюджета и риска допускает вся задача.
Официальная документация связывает Request timed out с высокой нагрузкой или очень большим ответом. Разбиение работы на меньшие единицы обычно создаёт более ясную точку восстановления, чем простое увеличение ожидания. Повышать API_TIMEOUT_MS разумно лишь при известной медленной сети или proxy: новое значение не создаёт checkpoint и не делает side effect идемпотентным.
Claude Code автоматически повторяет server error, overload, request timeout, временные 429 и разрывы соединения — до десяти попыток с экспоненциальной задержкой по умолчанию. Когда терминал уже показывает итоговую ошибку, эти повторы исчерпаны. Безграничный внешний цикл способен только продублировать расход или действие.
Что именно должно продолжаться
У разных сценариев разные владельцы жизненного цикла:
| Требование | Подходящий механизм | Граница |
|---|---|---|
| Claude должен делать следующий turn, пока условие не выполнено | /goal | Работает в рамках сессии и проверяет только показанные в диалоге доказательства |
| Долгий тест или сервер не должен блокировать разговор | Background Bash, Ctrl+B, /tasks | Команда удаляется при выходе из Claude Code |
| Сессия Claude должна отделиться от текущего терминала | Agent view и background session | Выполнение остаётся на локальном компьютере |
| Нужно вернуться к тому же разговору | --continue, --resume, /resume | Возвращается transcript, а не старый Bash-процесс |
| Нужно периодически проверять состояние в открытой сессии | /loop или cron tools | Планирование привязано к сессии и имеет срок действия |
| Задача должна работать при выключенном ноутбуке | Remote session, Routines или CI | Нужна настроенная облачная среда, локальные незакоммиченные файлы туда не попадают автоматически |
Документация интерактивного режима прямо указывает: фоновые Bash-команды очищаются, когда Claude Code завершается. Поэтому Ctrl+B решает задачу «продолжать разговор, пока команда выполняется», но не «закрыть программу и вернуться утром».
Сделайте окончание задачи наблюдаемым
Фраза «закончи миграцию» позволяет агенту самому решить, достаточно ли изменить несколько файлов. Для многочасовой работы это опасно. Условие готовности должно включать результат, способ проверки, запреты и предел автономности.
text/goal перевести модуль payments на новый async API; завершить, когда npm test -- payments и npm run typecheck возвращают 0, а rg "legacyPaymentClient" src не находит вызовов; не менять schema базы и публичный response shape; остановиться после 15 turns или при необходимости deployment/credentials
Согласно официальному описанию /goal, после каждого turn отдельная небольшая модель оценивает условие по материалу разговора. Она не запускает тесты и не читает репозиторий самостоятельно. Значит, Claude должен выполнить решающую проверку и показать результат в transcript. Время работы или уверенное сообщение агента сами по себе не доказывают готовность.
Активный goal восстанавливается через --continue или --resume, хотя счётчик времени, turns и tokens начинается заново. Это полезно для работы в несколько подходов, но пауза между подходами не превращается в скрытое выполнение.
Фоновая команда и фоновая сессия решают разные проблемы
Background Bash подходит для тестов, сборки, dev-сервера, Docker или Terraform. Попросите Claude запустить команду в фоне либо нажмите Ctrl+B во время Bash tool. В tmux комбинацию приходится нажать дважды. Claude выдаёт task ID, пишет output в файл и может позже прочитать его. /tasks или /bashes показывает текущие задачи и позволяет подключиться или остановить их.
Этот режим сохраняет отзывчивость одной сессии. Он не обеспечивает жизнь процесса после выхода. Кроме того, текущая документация указывает предел output в 5GB: при его превышении задача завершается. Для шумных процессов лучше писать ограниченный лог или передать сервис настоящему process manager.
Если слабое место — именно окно терминала, используйте background sessions. Agent view запускает каждую такую сессию как отдельный процесс под локальным supervisor, а не как дочерний процесс терминала:
bashclaude agents claude attach <id> claude logs <id> claude stop <id> claude respawn <id>
Сессию можно отсоединить и подключить снова. Когда законченная сессия остаётся без терминала около часа, supervisor может остановить её процесс, сохранив transcript и state на диске; следующее подключение поднимет новый процесс с прежним состоянием. Но это локальная устойчивость. Выключение компьютера, сон, потеря сети, лимит usage или непройденный permission prompt по-прежнему останавливают работу.
Возобновление диалога не восстанавливает внешнее состояние
Документация по сессиям объясняет, что CLI сохраняет разговоры непрерывно. claude --continue открывает последнюю сессию текущего каталога, claude --resume показывает выбор, а /resume позволяет переключиться из активного разговора.
После восстановления не начинайте с короткого «продолжай». Сначала проверьте реальность:
- Прочитайте постоянный файл цели и прогресса.
- Уточните repository, branch, worktree и
git status. - Проверьте наличие процесса средствами ОС или его runner, а не по старому сообщению Claude.
- Прочитайте последний проверочный artefact или лог.
- Повторите минимальную детерминированную проверку.
- Убедитесь, что goal, лимит времени и запреты всё ещё актуальны.
- Только затем attach, respawn или перезапускайте команду.

Такой порядок отделяет сохранённое знание от живого состояния. Transcript отвечает на вопрос «что мы решили», Git и файлы — «что изменилось», process manager — «что сейчас выполняется», а тест — «достигнут ли результат».
Контрольная точка — локальный откат, а не транзакция
Claude Code создаёт checkpoint на каждый пользовательский prompt. Нажмите Esc дважды или выполните /rewind, чтобы вернуть code, conversation, оба слоя либо сжать выбранную часть контекста. Документация checkpointing также говорит, что контрольные точки сохраняются в возобновляемой сессии.
Но rewind отслеживает только правки, выполненные файловыми инструментами Claude. Он не отменяет изменения Bash, ручные и внешние правки или работу другой параллельной сессии. Это не rollback базы данных и не замена Git. Перед откатом смешанного workflow отдельно проверьте git diff, generated files, migrations и внешние API.
Практический checkpoint состоит из двух слоёв: встроенная точка для разговора и прямых file edits, а также собственный журнал проекта с завершёнными единицами, проверочными командами и необратимыми side effects. Второй слой должен обновляться только после успешной проверки.
/loop полезен для ожидания, но не заменяет устойчивый scheduler
/loop и cron tools позволяют повторять prompt, ждать deployment или проверять долгую сборку внутри текущей conversation:
text/loop 10m проверь integration job; если он завершился ошибкой, прочитай последний failing step и запиши минимальную причину
Scheduled prompt запускается между turns и ждёт, если Claude занят. Повторяющиеся задачи автоматически истекают через семь дней. Пропущенные интервалы не воспроизводятся по одному. При resume можно вернуть только неистёкшее расписание; background Bash и monitor task не восстанавливаются.
Если нужен другой срок жизни, смените runner:
- Desktop scheduled tasks имеют доступ к локальным файлам, но требуют включённый компьютер;
- Remote sessions, по документации Desktop, работают в инфраструктуре Anthropic и продолжаются после закрытия приложения или выключения компьютера;
- Routines создают отдельную облачную сессию на каждый запуск и оставляют результат для проверки;
- CI подходит для расписаний и событий репозитория, где нужны повторяемые логи и review gates.
У cloud runner другой контекст. Он не видит незакоммиченные локальные изменения и может не иметь нужных secrets, services или MCP. Перед переносом зафиксируйте branch, environment и входные артефакты. Завершившийся cloud run означает лишь окончание запуска, а не успех задачи.
Сохраняйте прогресс вне model context
Минимальный persistent state можно держать в TASK_PROGRESS.md:
mdЦель и ограничения - что должно измениться и что менять запрещено Готово - milestone, файлы, проверочная команда и результат Текущий blocker - точная ошибка, минимальное воспроизведение, уже проверенные гипотезы Следующий шаг - одно конкретное действие и условие остановки
В исследовательском примере Anthropic о длительной научной работе Claude использовались progress file, test oracle, явные правила и Git checkpoints. Это HPC-сценарий, а не обязательная конфигурация продукта. Полезный принцип шире: единственная копия статуса не должна жить в контекстном окне.
Для параллельных lane используйте отдельные worktree и непересекающиеся файлы. Если действительно требуется группа агентов, руководство по Claude Code Agent Teams помогает с координацией; оно не отменяет условие готовности для каждого worker.
Автономность нужно ограничивать, а не просто включать
Ночной запуск часто останавливается на permission prompt. Режимы разрешений дают несколько вариантов. acceptEdits уменьшает паузы для редактирования; dontAsk разрешает только заранее одобренные tools; Auto mode выполняет действия без prompts, но остаётся research preview с меняющимися требованиями к версии, плану, модели, provider и настройкам администратора.
bypassPermissions полностью пропускает permission layer. Anthropic предназначает его для изолированных containers или VM и предупреждает об отсутствии защиты от prompt injection. Для unattended task безопаснее сузить файловую систему, сеть, credentials, branch и budget, чем выдавать весь доступ рабочему ноутбуку.
Заранее определите, что записать при исчерпании usage. Если лимит уже остановил работу, сначала сохраните цель, diff, последнюю проверку и следующий шаг, а затем используйте отдельную диагностику лимитов Claude Code.
Повторяйте только после сверки побочных эффектов
Ошибка ответа не доказывает, что действия внутри turn были отменены. До повтора проверьте, появился ли нужный файл, создан ли build artefact, жив ли процесс, получил ли внешний API запрос и помечен ли milestone готовым только после verification.
Лучший формат работы — идемпотентная единица: она распознаёт уже достигнутое состояние или использует стабильный operation key против дублей. Если это невозможно, журнал должен позволить выбрать одно из трёх действий: verify, compensate или retry.
При завершении turn из-за API error срабатывает StopFailure. Справочник hooks уточняет, что output и exit code этого hook игнорируются. Он годится для лога и уведомления, но не для автоматического продолжения failed turn. Собственному циклу всё равно нужны бюджет повторов и правило сверки.

Длительная задача управляема, когда в любой момент известны три ответа: какой runtime сейчас владеет процессом, где лежит долговечное состояние и какой факт завершает работу. Тогда перезапуск — это проверяемое восстановление, а не надежда, что слово «продолжай» вернёт исчезнувший процесс.



