Codexのリモート接続を安定化させる|Macのスリープ対策を実体験で解説

スマホからCodexへ接続できるようにしたのに、翌朝になったらつながらなくなっていた…。
MacBookの蓋は開けていたのに、どうして?

原因はMac本体のアイドルスリープでした。
ChatGPT側の設定だけでなく、Mac側のスリープ設定も確認すると、リモート接続をかなり安定させられます。
この記事のポイント
先に結論
- Codexのリモート接続は、ホストのMacがスリープすると止まる
- ChatGPTの「実行中はスリープしない」をオンにする
- リモート設定の「このMacをスリープさせない」もオンにする
- 常時接続したい場合は、AC接続中のアイドルスリープをMac側でも無効にする
- 今回は設定変更後、約12時間スリープせずリモート接続を維持できた
Codexのリモート接続が翌朝つながらなくなった
Codexのリモート接続を使うと、ChatGPTのモバイルアプリから自宅のMacで動いているCodexへ指示を送れます。
育児中など、パソコンを開く時間が取りにくいときにかなり便利です。
ところが、MacBookの蓋を開け、電源アダプターも接続した状態で一晩置いたところ、翌朝はリモートから接続できなくなっていました。
最初はネットワークの問題を疑いましたが、実際の原因はMac本体のスリープでした。
OpenAIの公式マニュアルにも、ホストのパソコンがスリープする、ネットワークを失う、ChatGPTアプリを閉じる、のいずれかが起きるとリモートアクセスが停止すると書かれています。
つまり、リモート接続を安定させるには、次の3つが必要です。
- Mac本体が起動している
- ネットワークにつながっている
- ChatGPTアプリが動いている
まずMacがスリープしたのか確認する
Macのスリープ履歴は、ターミナルのpmsetコマンドで確認できます。
次のコマンドは、Sleep、Wake、DarkWakeの主要なイベントを直近30件まで表示します。
123pmset -g log \
| grep -E "Entering Sleep|Wake from|DarkWake from" \
| tail -30それぞれの意味は次のとおりです。
| 表示 | 意味 |
|---|---|
Entering Sleep | Mac本体がスリープへ入った |
Wake from | 通常の起動状態へ復帰した |
DarkWake from | 画面を点灯せず、メンテナンスなどのため一時的に起動した |
DarkWakeは通常の起動とは違う
DarkWakeが記録されていても、普段どおりリモート操作できるとは限りません。
短時間だけ処理をして、再びスリープへ戻ることがあります。
今回のログでは、次の流れが確認できました。
12307:08:58 ChatGPTのNoIdleSleepAssertionが解除
07:09:03 Entering Sleep state due to 'Idle Sleep'
08:17:04 キーボード操作で通常のWakeChatGPTのスリープ防止要求が解除されてから、わずか5秒後にMacがアイドルスリープへ入っていました。
Macは再起動やクラッシュをしていません。眠っていたため、リモートから接続できなかったということです。
画面が暗いだけか、本体も寝ているかを見分ける
MacBookの画面が暗くなっていても、本体までスリープしているとは限りません。
現在の電源状態は、次のコマンドで確認できます。
1pmset -g systemstate今回、通常起動中は次のように表示されました。
12Current System Capabilities are: CPU Graphics Audio Network
Current Power State: 4この環境では、CPU、画面描画、音声、ネットワークが利用でき、Power State: 4になっていることを通常起動の判断材料にしました。
画面だけを消灯させるのは問題ありません。リモート接続で重要なのは、Mac本体がスリープしていないことです。
ChatGPT側のスリープ防止設定をオンにする
まず、ChatGPTデスクトップアプリの設定を変更します。
「実行中はスリープしない」をオンにする
ChatGPTの設定にある、次の項目をオンにします。
12実行中はスリープしない
ChatGPT がタスクを実行中はコンピューターをスリープさせませんOpenAIの公式マニュアルでは、この設定は英語でPrevent sleep while runningと案内されています。
長いタスクを任せて離席するときは、必ずオンにしておきたい設定です。
「このMacをスリープさせない」をオンにする
リモート接続の設定には、次の項目もあります。
12この Mac をスリープさせない
電源接続中でリモートアクセス有効時はスリープしないようにしますこれもオンにします。
OpenAIの公式マニュアルでは、MacBookをホストにする場合、蓋を開け、電源へ接続し、ホスト側の設定でスリープを防ぐよう案内されています。
ここまでがChatGPT側の基本設定
2つの設定をオンにすると、タスク実行中やリモートアクセス中にMacがスリープしにくくなります。
常時接続したいならMac側のスリープ設定も確認する
今回のMacでは、最初に次の設定になっていました。
12AC Power:
sleep 1sleep 1は、AC電源につないでいてもアイドル状態が続くと短時間で本体がスリープする設定です。
ChatGPTの防止要求が動いている間は問題ありません。しかし、防止要求が何らかの理由で一瞬でも途切れると、すでにアイドル時間を超えているため、すぐスリープする可能性があります。
「タスクの実行中だけでなく、何もしていない状態からいつでもスマホで接続したい」場合は、Mac側でもAC接続中のアイドルスリープを無効にしておくと安定します。
現在の設定を確認する
1pmset -g customAC Powerにあるsleepを確認します。
AC接続中のアイドルスリープを無効にする
1sudo pmset -c sleep 0パスワードの入力中は文字が表示されません。そのままMacのログインパスワードを入力して、Returnキーを押します。
このコマンドの意味は次のとおりです。
| 部分 | 意味 |
|---|---|
sudo | 管理者権限で実行する |
pmset | Macの電源管理設定を変更する |
-c | 電源アダプター接続中の設定だけを変更する |
sleep 0 | アイドルによるシステムスリープを無効にする |
Macのローカルpmsetマニュアルでも、-cは充電器接続時、sleepの0は無効化を意味します。
バッテリー時まで無効にしない
常時接続が目的でも、-aで全電源状態を変更するのはおすすめしません。
バッテリー駆動中までスリープを無効にすると、電源アダプターが外れたときにバッテリーを使い切る可能性があります。今回はAC接続中だけを対象にしました。
設定できたか確認する
設定後、もう一度確認します。
1pmset -g custom次のようにAC Powerのsleepが0なら設定完了です。
123AC Power:
displaysleep 15
sleep 0displaysleep 15は、画面を15分で消灯する設定です。
本体のアイドルスリープを無効にしても、画面は別に消灯できます。画面を一晩中点灯させる必要はありません。
現在の電源がACかバッテリーかは、次のコマンドで確認できます。
1pmset -g battAC接続中は、次のように表示されます。
1Now drawing from 'AC Power'Battery Powerと表示された場合は、電源アダプターが外れています。その状態ではバッテリー側のスリープ設定が使われます。
スリープ防止要求も確認できる
現在、どのアプリがスリープを防いでいるかは次のコマンドで確認できます。
1pmset -g assertions今回、タスク実行中はChatGPTが次の要求を出していました。
12PreventUserIdleSystemSleep 1
ChatGPT: NoIdleSleepAssertion named: "Electron"この表示があれば、ChatGPTがアイドルスリープを防止しています。
ただし、常時リモート接続を目的にするなら、この一時的な要求だけへ依存しないほうが安全です。今回のように要求が解除されるタイミングがあるためです。
Mac側をsleep 0にしていれば、ChatGPTの要求が一時的に途切れても、AC接続中のアイドルスリープは発生しません。
一時的にスリープを防ぐならcaffeinateも使える
Macの設定を恒久的に変更したくない場合は、caffeinateも使えます。
1caffeinate -s-sは、AC接続中にシステムスリープを防ぐ指定です。
ターミナルで実行している間だけ有効で、Ctrl+Cを押すと終了します。
使い分けは次のとおりです。
| 方法 | 向いている場面 |
|---|---|
| ChatGPTのスリープ防止設定 | タスク実行中に離席する |
caffeinate -s | 数時間だけ一時的に起動しておく |
sudo pmset -c sleep 0 | AC接続中はいつでもリモート接続したい |
設定変更後に半日テストした結果
設定変更後は、スマホから定期的にCodexへ接続し、状態を確認しました。
確認した内容は次のとおりです。
Current Power State: 4で通常起動を維持UserIsActive: 0でもスリープしない- 約12時間、
Sleepイベントなし - ChatGPT/Codexのローカルサーバーが稼働
- スマホから継続してチャット可能
UserIsActive: 0は、キーボードやトラックパッドを操作していない状態です。
つまり、誰もMacを触っていなくても、AC接続中のsleep 0が効いて起動状態を維持できました。
今回の結果
ChatGPT側の2つの設定と、Mac側のAC接続時スリープ無効化を組み合わせることで、リモート接続は安定しました。
常時起動するときの注意点
MacBookを常時起動しても、何もしていない時間までCPUが全力で動くわけではありません。
今回の確認ではCPUの約85%がアイドルで、温度・性能警告もありませんでした。
ただし、次の点には注意します。
- 硬く平らで、風通しのよい場所へ置く
- 布やクッションの上へ置かない
- 電源アダプターが外れていないか確認する
- macOSとChatGPTアプリを更新する
- 本体が熱い、ファンが回り続ける場合はアクティビティモニタを確認する
- 使わない期間は手動でスリープまたはシャットダウンする
Appleも、電源接続中にディスプレイがオフでも自動スリープさせない設定を用意しています。一方で、スリープを遅らせたり無効にしたりすると消費電力は増えます。
元の設定へ戻す方法
常時接続が不要になったら、たとえばAC接続中のアイドルスリープを10分へ戻せます。
1sudo pmset -c sleep 10変更後は、必ず次のコマンドで確認します。
1pmset -g customまとめ
Codexのリモート接続が切れたときは、ネットワークだけでなくMac本体のスリープも確認する必要があります。
今回の原因は、ChatGPTのスリープ防止要求が解除された直後に、Macがアイドルスリープへ入ったことでした。
対策は次の3段階です。
- ChatGPTの「実行中はスリープしない」をオンにする
- リモート設定の「このMacをスリープさせない」をオンにする
- 常時接続したい場合はsudo pmset -c sleep 0で、AC接続中のアイドルスリープを無効にする
画面は消灯したままで大丈夫です。
蓋を開け、電源とネットワークを維持し、ChatGPTアプリを起動しておけば、スマホからCodexを使いやすい状態を保てるので困っている方はぜひ参考にしてみてくださいね!
Thanks for reading!
最後まで読んでくれてありがとう🔥

