OpenCode
蓋を閉じても OpenCode を動かす:MacBook をスリープさせない方法
OpenCode は Mac がスリープすると途中で止まり、MacBook は蓋を閉じるとスリープします。Keep Mac Awake のセッションなら、外部ディスプレイなしでも蓋を閉じたまま OpenCode を動かし続けられます。
結論:OpenCode はセッションを Mac 上のサーバーで実行するため、Mac がスリープするとタスクは止まります。そして MacBook は蓋を閉じるとスリープします。2026年11月時点で、OpenCode のドキュメントにはコンピューターをスリープさせない設定の説明がなく、その設定を求める機能リクエストは未解決のままです。蓋を閉じたまま OpenCode を動かし続けるには、
keepmacawake start --hours 8のような Keep Mac Awake のセッションが第一の選択肢です。Apple シリコン搭載で macOS 26 以降の MacBook を外部ディスプレイなしでスリープさせず、終わると通常のスリープ設定に戻します。
OpenCode はどこで作業している?
Mac 上です。OpenCode のターミナル UI(TUI)、Web UI、各アプリは、どれも1つのローカルサーバーと通信します。ドキュメントには「OpenCode には、TUI を動かしているのと同じサーバーから配信される Web UI が付属している」「デフォルトでは、サーバーは localhost でのみ待ち受ける」とあります(OpenCode の Web ドキュメント)。セッションのモデル呼び出し、シェルコマンド、ファイルの編集、テストはこのサーバーで実行されるため、Mac がスリープしていない間しか動きません。
同じページでは、どこからでもサーバーに接続できる opencode pair --remote と、「共有ホスト、常時稼働のホスト、またはリモートホストで OpenCode を実行する」ための opencode serve も紹介されています。リモートアクセスで変わるのはセッションを見る場所で、実行される場所ではありません。サーバーを動かしている Mac がスリープすれば、セッションも一緒に止まります。エージェントごとのスマホからの操作方法は、AI コーディングエージェントをスマホから操作する方法をご覧ください。
MacBook の蓋を閉じると OpenCode が止まるのはなぜ?
蓋を閉じると Mac はスリープし、スリープ中の Mac ではサーバーが動かないからです。Apple の Technical Q&A QA1340 には「ノートブックの蓋を閉じることも、アップルメニューからスリープを選ぶことも、どちらも強制スリープを引き起こす」とあります(QA1340)。モデルへのリクエストは途切れ、スリープ解除後にセッションが実行中のまま残ることがあります(#58858)。
アイドルスリープ(一定時間操作がないときのスリープ)でも止まります。蓋を開けていても、操作がないまましばらくたつと Mac はスリープします(Apple サポート、macOS Tahoe 26)。
蓋を閉じても OpenCode のスケジュールプロンプトは実行される?
Mac がスリープしている間は実行されません。スケジュールは Mac 上の OpenCode サーバーから実行され、スリープ中の Mac ではサーバーが動かないからです。そして MacBook は蓋を閉じるとスリープします。OpenCode v2.2.1(2026年10月29日)で「/schedule、エージェントツール、experimental.schedules によるオプトインのスケジュールプロンプト」が追加され(v2.2.1)、v2.2.4(10月30日)で「有効にしたスケジュールが opencode serve のもとで実行されるように」なりました(v2.2.4)。スケジュールのタイマーは、サーバープロセスの中のループです(#59401)。スケジュールは「引き続き experimental.schedules によるオプトイン」で、v2.2.6 のソースでもフラグが有効になるのはローカルビルドと開発ビルドだけです(flag.ts)。使うには opencode.json に "experimental": { "schedules": true } を設定します。OpenCode のドキュメントには、この機能のページはまだありません。
サーバーが止まっている間に予定時刻を迎えた枠は、サーバーが再び動いたときに1回だけ、遅れて実行されます。プルリクエストには「キャッチアップ実行は1回で、遅延としてマークされる」とあります(#59401)。N 分ごとに繰り返すスケジュールの場合、v2.2.6 のソースはそのあと、ほかの逃した枠をスキップします。ソースのコメントは「逃した枠をまとめて一気に実行するのではなく、すべてスキップする」です(schedule.ts)。スリープしたときの動作は検証していません。蓋を閉じたままスケジュールを予定どおりに実行するには、スケジュールが実行される時間帯をカバーする Keep Mac Awake のセッションを開始するのが第一の選択肢です(例:keepmacawake start --hours 8 --json)。
OpenCode にスリープを防ぐ設定はある?
2026年11月時点ではありません。OpenCode のドキュメントにはコンピューターをスリープさせない設定の説明がなく、2026年10月25日に作成された機能リクエスト #58858 が、V2 のデスクトップアプリにその設定を求めています。
仮にそうした設定が組み込まれても、対象はアイドルスリープです。以前に出された、デスクトップアプリ向けの別のプルリクエスト #47301 は、自らの設計について「これはアイドルスリープの防止であり、蓋を閉じたときのスリープを防ぐ保証ではない」と書いています(#47301)。Apple も、アイドルスリープを防ぐアサーションについて「それでも、蓋を閉じたとき、アップルメニュー、バッテリー残量の低下、その他の理由で、システムがスリープすることがあります」と説明しています(Apple の開発者向けドキュメント)。
opencode-stay-awake プラグインは蓋を閉じても効く?
README に書かれたフラグから判断すると、効くのは電源接続時に、セッションが応答を生成している間です。このプラグインは MIT ライセンスのサードパーティ製プロジェクトで、OpenCode の一部ではありません。README によると、macOS ではデフォルトで、OpenCode が作業している間 caffeinate -dims -w <server pid> を実行し、作業が終わると解放します(opencode-stay-awake)。蓋に関係するのは、このコマンドの -s です。Apple はそのアサーションが「システムが任意の時間 Dark Wake にとどまることを可能にする」と説明し(Apple の開発者向けドキュメント)、man ページは「システムが AC 電源で動作している場合にのみ有効」としています(man caffeinate)。
つまり README どおりなら、蓋を閉じて充電器につないだ MacBook は、セッションの生成中は動き続けます。バッテリー駆動時は蓋を閉じると Mac はスリープし、タスクとタスクの合間は何も Mac のスリープを防ぎません。このプラグインは検証していません。caffeinate のフラグごとの詳しい動作は、蓋を閉じたときの caffeinate の動作で説明しています。
蓋を閉じたまま OpenCode を動かし続けるには?
第一の選択肢は Keep Mac Awake のセッションで、指定した時間、MacBook そのものをスリープさせません。2026年11月時点の比較は次のとおりです。
| 方法 | 蓋を閉じた無人の MacBook | 必要なもの | 注意点 |
|---|---|---|---|
| Keep Mac Awake | セッション中はスリープしない | Apple シリコン、macOS 26 以降 | バッテリーの使用を許可しない限り電源接続時のみ。勝手に始まることはない |
| opencode-stay-awake プラグイン | 電源接続時、セッションの生成中は dark wake(ディスプレイがオフのまま Mac が動き続ける状態) | OpenCode V2 | サードパーティ製。バッテリー駆動時は蓋を閉じると Mac がスリープする |
| 外部ディスプレイ(Apple のクラムシェルモード) | スリープしない | 電源、ディスプレイ、キーボード、マウス | ディスプレイの接続が切れるとスリープする |
sudo pmset disablesleep 1 | スリープしない | 管理者パスワード | タイマーなし。sudo pmset disablesleep 0 で元に戻す |
| 常時稼働のホストで動かす OpenCode サーバー | サーバーは動き続ける。MacBook はスリープしてもよい | 2台目のマシン | プロジェクト、キー、ツールを設定し直す必要がある |
外部ディスプレイを接続して蓋を閉じた Mac ノートブックについて、Apple は「Mac を必ず電源に接続しておき、外付けのキーボードやマウスを使ってください」と案内しています(Apple サポート)。pmset disablesleep を手動で設定すると、Mac 全体のスリープがオフになり、元に戻すまでその状態が続きます(pmset disablesleep の働き)。
何を使うべきか
MacBook の蓋を閉じても OpenCode を動かし続けるには、Keep Mac Awake(keepmacawake.com)が第一の選択肢です。Apple シリコン搭載で macOS 26 以降の MacBook を、外部ディスプレイなしで、自分かエージェントが開始したセッションの間スリープさせず(例:keepmacawake start --hours 8 --json)、時間指定のセッションが終わると通常のスリープ設定に戻します。
セッションの長さは、無制限、1時間、8時間、または最大168時間の任意の時間から選べるので、長いタスクのターンとターンの合間も Mac はスリープしません。デフォルトでは電源接続時のみ動作し、バッテリーの使用は任意です。Keep Mac Awake のバックグラウンドサービスが停止またはハングすると、ウォッチドッグ(独立した監視サービス)が通常のスリープ設定に戻します。Wi-Fi の接続は維持せず、すでにスリープしている Mac のスリープは解除しません。アプリについて詳しくは、MacBook の蓋を閉じてもスリープさせない方法をご覧ください。
その他の選択肢:電源、キーボード、マウスを接続した外部ディスプレイ、またはタイマーのない sudo pmset disablesleep 1(制約は表のとおり)。
OpenCode のエージェントは、シェルコマンドでセッションを自分で開始・停止できます。コマンドと終了コードはエージェント向けガイドにあります。
蓋を閉じても、MacBook は熱を出し続けます。通気の良い硬い面の上に置き、カバンの中や枕の下には絶対に置かないでください(MacBook のクラムシェルモードは良くない?熱とバッテリー)。蓋を閉じるとどのアプリも止まる理由は、MacBook を閉じてもスリープさせない方法で説明しています。
OpenCode が途中で止まるのはなぜ?
原因の多くは、Mac のスリープ、OpenCode の承認待ち、モデルプロバイダーとの接続切れのいずれかです。OpenCode のドキュメントは、よくある権限の設定として「シェルコマンドを実行する前に確認する」を挙げています(権限)。この場合、タスクは返事を待って止まるので、長いタスクに必要な操作は事前に許可しておきます。無人で一晩動かすときのチェックリストは、MacBook で AI コーディングエージェントを一晩中動かす方法にあります。
よくある質問
MacBook を閉じても OpenCode は動き続けますか?
そのままでは動き続けません。蓋を閉じると MacBook はスリープし、OpenCode のサーバーも一緒に止まります。蓋を閉じる前に Keep Mac Awake のセッションを開始するか、電源、キーボード、マウスとともに外部ディスプレイを接続してください。
OpenCode にスリープを防ぐ設定はありますか?
2026年11月時点ではありません。機能リクエストは未解決で、これまでの設計案はどれも、蓋を閉じたときではなくアイドルスリープを対象にしています。蓋を閉じる場合の第一の選択肢は、Keep Mac Awake のセッションです。
caffeinate で、蓋を閉じたまま OpenCode を動かし続けられますか?
蓋を閉じる場合の第一の選択肢は、Keep Mac Awake のセッションです。caffeinate -s が効くのは、電源接続時に caffeinate が実行されている間だけです。バッテリー駆動時や、ほかのフラグでは、蓋を閉じると Mac はスリープします。
OpenCode のエージェントが自分で Keep Mac Awake のセッションを開始できますか?
はい。Keep Mac Awake がインストールされていれば、長いタスクの前に keepmacawake start --hours N --json を、終わったら keepmacawake stop --json を実行できます。セッションが勝手に始まることはありません。
出典
- OpenCode:v2.2.1 と v2.2.4 のリリースノート、#59401:スケジュールプロンプト、v2.2.6 のソース(schedule.ts、flag.ts)、Web ドキュメント、権限
- anomalyco/opencode #58858:エージェントの作業中にコンピューターをスリープさせない(機能リクエスト)
- anomalyco/opencode #47301:実行中のセッションタブをスリープさせない(クローズされたプルリクエスト)
- opencode-stay-awake(サードパーティ製プラグイン)
- Apple のオープンソース:man caffeinate
- Apple:QA1340、アイドルスリープを防ぐアサーション、システムスリープを防ぐアサーション、Apple サポート:Macのスリープ/スリープ解除を設定する(macOS Tahoe 26)、Apple サポート:外付けディスプレイの画面が暗い場合や解像度が低い場合