MacがスリープするとClaude Codeは止まる
Claude Codeに長いタスクを任せて蓋を閉じ、戻ってきたらセッションが止まっていた。エージェントに問題はありません。macOSがマシンをスリープさせたのです。スリープするとすべてのプロセスが一時停止し、ネットワークが切れ、SSH接続も終了します。このページでは、それを防ぐ設定を試す順に紹介します。別のマシンを使うのが正直な解決策になる境目も説明します。
スリープ時に実際に起きていること
Macがスリープすると、CPUはプロセスの実行を止めます。エージェントは終了するのではなく、凍結されます。マシンが復帰すると、プロセスは続きから動きます。しかしその時点で、使っていたAPI接続はタイムアウトしています。実行中だったツール呼び出しも失敗しています。ノートPCでは、何も対策しなければ蓋を閉じて数秒でスリープします。ロック画面ではスリープしません。スクリーンセーバーでもスリープしません。スリープの原因になるのは、スリープタイマーと蓋だけです。
対策1:1つのタスクならcaffeinate
macOSには、コマンドの実行中マシンを起こしておくツールが付属しています。これを通してエージェントを起動すれば、エージェントが終了するまでMacは起きたままです。
caffeinate -i claude
このフラグは、アイドル状態によるシステムのスリープを防ぎます。ディスプレイもつけたままにするなら、フラグをもう1つ追加します。これが意味を持つのは、画面を操作するツールの場合だけです。
caffeinate -di claude
この方法は、ノートPCの蓋を閉じると効きません。蓋のスイッチは、アイドル時のスリープ抑止をすべて上書きするからです。また、エージェントが終了したあと、次のタスクをcaffeinateなしで始めた場合も効果はありません。
対策2:マシンのスリープをオフにする
デスクトップのMacや電源につないだノートPCなら、スリープタイマーを「しない」にして、そのままにします。当社がすべてのエージェント用Macで使っている設定は次のとおりです。
sudo pmset -a sleep 0 sudo pmset -a disksleep 0 sudo pmset -a displaysleep 10 sudo pmset -a womp 1
ディスプレイはスリープしてもかまいません。電力の節約になり、ターミナルのプロセスには影響しません。最後の行はネットワーク経由のスリープ解除を有効にします。何かがマシンをスリープさせた場合に役立ちます。
対策3:閉じた蓋
MacBookは蓋を閉じるとスリープします。例外は、電源につながっていて、外部ディスプレイ、キーボード、マウスのいずれかが接続されている場合です。これがAppleのクラムシェルモードの規則です。ディスプレイがない場合は、もう1つの設定で、蓋を閉じてもマシンを起こしておけます。
sudo pmset -a disablesleep 1
元に戻すには、同じコマンドを0で実行します。注意点が2つあります。カバンの中やベッドの上ではノートPCが熱くなるので、硬い面の上に置いてください。また電源ケーブルが抜けると、数時間でバッテリーを使い切ります。そのまま正常にシャットダウンせずに止まります。
対策4:マシンではなくターミナルの問題
Macは起きていたのに、セッションが消えていることもあります。原因は、ターミナルのウィンドウが閉じたか、SSH接続が切れたことです。そうなると、中で動いているすべてのものにハングアップ信号が送られます。解決策はターミナルマルチプレクサです。tmuxのセッション内でエージェントを動かせば、ウィンドウを閉じても、SSHが切れても、Wi-Fiが一瞬途切れても生き残ります。
brew install tmux tmux new -s agent claude
Ctrl-bを押してからdを押すと、デタッチできます。あとでどのターミナルからでも、スマートフォンからSSHでも、1つのコマンドで再アタッチできます。
tmux attach -t agent
この設定については詳しいガイドがあります。tmuxでClaude Codeのセッションを維持する方法をご覧ください。
対策5:再起動後に復帰する
セキュリティアップデートでマシンは再起動します。瞬間的な停電でも再起動します。再起動後は、誰かがログインするまで何も動きません。無人で動かすマシンなら、システム設定でエージェント用ユーザーの自動ログインを有効にします。次に、ログイン時にtmuxのセッションを作り直すLaunchAgentを追加します。常時稼働Macのチェックリストに、バッテリーバックアップを含む全項目を載せています。
ノートPCが向かないとき
ここまでの方法はすべて機能します。ただし、ノートPCがどこにも持ち出せないサーバーになってしまいます。エージェントが夜通し本格的な作業をするようになると、多くの人は、起きていることだけが仕事のマシンに移します。選択肢は4つです。自宅の予備のMac mini。Xcodeが不要ならLinuxマシン。クラウドのMac。あるいは、ほかの誰かが起こしておいてくれるホスト型のMac mini。24時間エージェントを動かす場所の比較で、費用を並べて比べています。
よくある質問
caffeinateを使えば、蓋を閉じてもClaude Codeは動き続けますか?
+
いいえ。MacBookでは蓋のスイッチがcaffeinateより優先されます。電源につないで外部ディスプレイを接続するか、disablesleepの電源設定が必要です。
ロック画面やスクリーンセーバーでエージェントは止まりますか?
+
いいえ。画面のロックやスクリーンセーバーでは、マシンはスリープしません。スリープするのは、スリープタイマー、バッテリー残量の低下、閉じた蓋のときだけです。ターミナルのエージェントなら、画面がロックされていても問題ありません。
これはCodexにも当てはまりますか?
+
はい。Codex CLIもClaude Codeと同じくターミナルのプロセスです。同じスリープ設定、caffeinate、tmuxが使え、蓋の規則も同じです。
スマートフォンからMacを起こしておけますか?
+
Claude CodeのRemote ControlやSSHで、スマートフォンからタスクを始めることはできます。しかし、Macがスリープしようとするのを遠隔で止めることはできません。電源設定は、マシン本体で一度設定してください。