Руководство

Claude Code останавливается, когда Mac засыпает

Вы дали Claude Code долгую задачу, закрыли крышку, а вернувшись, нашли мёртвую сессию. С агентом всё в порядке. macOS усыпила машину. Сон приостанавливает все процессы, отключает сеть и обрывает любое SSH-соединение. Здесь собраны настройки, которые это предотвращают, в том порядке, в каком их стоит пробовать. И описан момент, когда честное решение это другая машина.

Что на самом деле происходит во сне

Когда Mac засыпает, CPU перестаёт выполнять ваши процессы. Агент не убит. Он заморожен. Когда машина просыпается, процесс продолжает работу. Но к этому времени его соединение с API уже отвалилось по тайм-ауту. Вызов инструмента, который он выполнял, завершился ошибкой. На ноутбуке закрытая крышка означает сон через несколько секунд, если ничто этому не мешает. Экран блокировки не вызывает сон. Заставка тоже. Это делают только таймер сна и крышка.

Способ 1: caffeinate для одной задачи

В macOS есть утилита, которая не даёт машине уснуть, пока работает команда. Запустите агента через неё, и Mac не уснёт, пока агент не завершится.

caffeinate -i claude

Этот флаг запрещает системе засыпать при простое. Второй флаг оставляет включённым и дисплей. Это важно только для инструментов, которые работают с экраном.

caffeinate -di claude

Закрытую крышку ноутбука это не переживёт. Датчик крышки сильнее любого запрета на сон при простое. И это ничего не даст, если агент завершился, а следующую задачу вы запустили уже без caffeinate.

Способ 2: отключить сон для всей машины

На настольном Mac или на ноутбуке от сети поставьте таймер сна на «никогда» и оставьте так. Эти настройки мы используем на каждом Mac для агентов.

sudo pmset -a sleep 0
sudo pmset -a disksleep 0
sudo pmset -a displaysleep 10
sudo pmset -a womp 1

Дисплей по-прежнему может засыпать. Это экономит энергию и никак не влияет на процесс в терминале. Последняя строка включает пробуждение по сети. Оно помогает, если машина всё же уснёт.

Способ 3: закрытая крышка

MacBook с закрытой крышкой засыпает, если он не подключён к питанию и к внешнему дисплею, клавиатуре или мыши. Это правило Apple для режима закрытой крышки. Если дисплея нет, ещё одна настройка заставит машину не спать с закрытой крышкой.

sudo pmset -a disablesleep 1

Отменить её можно той же командой с нулём. Два предупреждения. Ноутбук будет греться в сумке или на кровати, поэтому кладите его на твёрдую поверхность. А если кабель питания выпадет, батарея сядет за несколько часов. Тогда ноутбук выключится без нормального завершения работы.

Способ 4: дело в терминале, а не в машине

Бывает, что Mac не уснул, а сессия всё равно пропала. Значит, закрылось окно терминала или оборвалось SSH-соединение. Тогда всё внутри получает сигнал hangup. Решение это терминальный мультиплексор. Запустите агента внутри сессии tmux, и он переживёт закрытое окно, обрыв SSH и сбой Wi-Fi.

brew install tmux
tmux new -s agent
claude

Отключиться можно так: Ctrl-b, затем d. Подключиться обратно можно одной командой из любого терминала или с телефона по SSH.

tmux attach -t agent

Эта настройка подробно описана в отдельном руководстве: как сохранить сессию Claude Code с помощью tmux.

Способ 5: подняться после перезагрузки

Обновления безопасности перезагружают машину. Скачки питания тоже. После перезагрузки ничего не работает, пока кто-то не войдёт в систему. Если машина должна работать без присмотра, включите автоматический вход для пользователя агента в «Системных настройках». Затем добавьте LaunchAgent, который заново создаёт сессию tmux при входе. В чек-листе всегда включённого Mac есть полный список, включая резервное питание.

Когда ноутбук уже не подходит

Всё описанное выше работает. Но при этом ваш ноутбук превращается в сервер, который никуда нельзя взять. Когда агент начинает делать реальную работу по ночам, большинство переносит его на машину, единственная задача которой оставаться включённой. Вариантов четыре. Запасной Mac mini дома. Linux-машина, если Xcode не нужен. Mac в облаке. Или размещённый Mac mini, за бодрствованием которого следит кто-то другой. В сравнении мест для запуска агента 24/7 цены приведены рядом.

Частые вопросы

Помогает ли caffeinate держать Claude Code запущенным с закрытой крышкой?

+

Нет. На MacBook датчик крышки сильнее caffeinate. Нужно, чтобы машина была подключена к питанию и к внешнему дисплею. Или нужна настройка питания disablesleep.

Остановит ли агента экран блокировки или заставка?

+

Нет. Блокировка экрана и заставка не усыпляют машину. Это делают только таймер сна, низкий заряд батареи или закрытая крышка. Агенту в терминале заблокированный экран не мешает.

Это относится и к Codex?

+

Да. Codex CLI это такой же процесс в терминале, как Claude Code. Для него работают те же настройки сна, caffeinate и tmux. И то же правило про крышку.

Можно ли не дать Mac уснуть с телефона?

+

Запустить задачу с телефона можно через Remote Control в Claude Code или по SSH. Но если Mac решил уснуть, удалённо это не остановить. Настройте питание один раз на самой машине.

Похожие руководства