Claude CodeでMacがスリープして困る?4つの解決策を比較してみた

開発

Claude Code で長いタスクを実行していると、気づいたら Mac がスリープして処理が止まっていた…という経験はありませんか?私も最初はこれに悩まされていて、Amphetamine を使って解決しています。Mac を閉じても処理が続くので、移動中でも開発を進めてもらえるのが便利なんですよね。

ただ、最近になって Hooks を使った方法もあると知りました。海外では専用ツールも登場していて、選択肢が増えているようです。今回は 4 つの解決策を比較してみたので、自分に合った方法を見つける参考にしてみてください。

なぜClaude Codeでスリープが問題になるのか

Claude Code はターミナルで動作する AI コーディングアシスタントです。大規模なリファクタリングやテスト実行など、処理に時間がかかるタスクも多いですよね。

問題は、Mac のデフォルト設定だとしばらく操作がないとスリープに入ってしまうこと。スリープすると当然ネットワーク接続が切れるので、Claude Code の処理も中断されます。

Hacker News でも MacBook がスリープせずに熱くなる問題や、逆に意図せずスリープしてしまう問題が度々議論されています。MacBook を閉じて持ち運びたいなら、クラムシェルモードでの動作が必要。

解決策1: Amphetamine(GUI派向け)

私が普段使っているのが Amphetamine です。GUI で操作できるので、ターミナルに慣れていない人でも使いやすいと思います。

Amphetamineの特徴

  • App Store から無料でインストール
  • メニューバーからワンクリックでスリープ防止
  • 時間指定や条件付き(Triggers)の設定が可能
  • ディスプレイのスリープだけ許可する設定もある

基本的な使い方

インストールしたら、メニューバーの薬のアイコンをクリックするだけ。「無期限に」を選べば、手動で止めるまでスリープしません。

Amphetamineのメニュー

便利なのが Triggers 機能で、「特定のアプリが起動したらスリープ防止」という設定ができます。ターミナルや iTerm を登録しておけば、Claude Code 使用時に自動でスリープ防止が有効になります。

蓋を閉じてもスリープしない設定

蓋を閉じても処理を続けるには、クイック設定から「ディスプレイを閉じたとき、システムのスリープを許可」をオフにします。

Amphetamineのクイック設定

この設定がオフになっていれば、MacBook を閉じても処理が止まりません。

私がAmphetamineを使っている理由

一番気に入っているのは、Mac を閉じて移動するときも処理が止まらずに動き続けてくれるところです。電車や車での移動中やカフェに着くまでの間も、Claude Code に開発を進めてもらえるのが便利なんですよね。他の方法は試したことがないので比較はできませんが、この「蓋を閉じてもスリープしない」という点が私にとっては重要でした。

メニューバーのアイコンを見れば今スリープ防止中かどうかわかるし、残り時間も表示されるのも便利です。

ただ、Claude Code の処理が終わったあとも手動でオフにしないとスリープしないので、うっかりバッテリーを消耗することがあります。ここは注意が必要ですね。

Ghostty入門|HashiCorp創業者が作った次世代ターミナルの設定ガイドMac

解決策2: caffeinateコマンド(ターミナル派向け)

Mac にはcaffeinateという組み込みコマンドがあります。追加のアプリをインストールしたくない人にはこれがおすすめです。

基本的なオプション

# シンプルにスリープ防止(Ctrl+Cで終了)
caffeinate

# ディスプレイのスリープを防止
caffeinate -d

# システムのアイドルスリープを防止
caffeinate -i

# 1時間(3600秒)だけスリープ防止
caffeinate -i -t 3600

# 特定のプロセスが終了するまでスリープ防止
caffeinate -w <PID>

Claude Codeと組み合わせる

一番シンプルなのは、Claude Code を起動する前に別のターミナルタブでcaffeinate -iを実行しておく方法です。

# タブ1
caffeinate -i

# タブ2
claude

もう少しスマートにやるなら、caffeinate-wオプションが使えます。

# claudeプロセスを監視して、終了したらスリープ許可
caffeinate -i -w $(pgrep -f "claude")

メリット・デメリット

追加ソフト不要なのは大きなメリットです。ただ、毎回コマンドを打つのは面倒ですし、Claude Code が終了しても手動でcaffeinateを止める必要があります。

解決策3: Claude Code Hooksで自動化

ここからが海外で話題になっている方法です。Claude Code には Hooks という仕組みがあって、特定のタイミングでスクリプトを実行できます。これを使うと「Claude Code が動いている間だけ」自動でスリープを防止できます。

Hooksの設定方法

まず、2 つのシェルスクリプトを作成します。

~/.claude/hooks/prevent_sleep.sh(スリープ防止を開始)

#!/bin/bash
# 既に実行中なら何もしない
if [ -f /tmp/claude_caffeinate.pid ]; then
  PID=$(cat /tmp/claude_caffeinate.pid)
  if kill -0 $PID 2>/dev/null; then
    exit 0
  fi
fi

# 1時間スリープ防止を開始
caffeinate -i -t 3600 &
echo $! > /tmp/claude_caffeinate.pid

~/.claude/hooks/allow_sleep.sh(スリープ防止を解除)

#!/bin/bash
if [ -f /tmp/claude_caffeinate.pid ]; then
  PID=$(cat /tmp/claude_caffeinate.pid)
  kill $PID 2>/dev/null
  rm /tmp/claude_caffeinate.pid
fi

スクリプトに実行権限を付与します。

chmod +x ~/.claude/hooks/prevent_sleep.sh
chmod +x ~/.claude/hooks/allow_sleep.sh

次に、~/.claude/settings.jsonにフックを設定します。

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/prevent_sleep.sh"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/allow_sleep.sh"
          }
        ]
      }
    ]
  }
}

動作の仕組み

この設定だと、以下のフローで動作します。

  1. ユーザーがプロンプトを送信(UserPromptSubmit
  2. prevent_sleep.shが実行され、caffeinateが起動
  3. Claude Code が処理を完了して停止(Stop
  4. allow_sleep.shが実行され、caffeinateが終了

つまり「必要なときだけスリープ防止」が自動で実現できます。Amphetamine のように手動でオン・オフする必要がありません。

Claude Code Hooksを遊び倒す|海外勢のネタ設定が面白すぎた開発

解決策4: 専用ツールを使う

海外では、Claude Code 専用のスリープ防止ツールがいくつか登場しています。

cc-caffeine

cc-caffeineは Claude Code プラグインとして動作するツールです。

# インストール
/plugin marketplace add samber/cc
/plugin install cc-caffeine@samber
  • Claude Code の動作を自動で検知してくれる
  • macOS、Linux、Windows に対応
  • 入力がなければ15分後に自動でスリープ許可に戻る
  • 複数の Claude Code セッションを同時に監視できる

プラグインをインストールすると自動でフック設定が追加されるので、手動でスクリプトを書く必要がありません。

Claude Code Sleep Preventer

Claude Code Sleep Preventerは macOS 専用のネイティブアプリです。

  • DMG をダウンロードしてアプリケーションフォルダにドラッグするだけ
  • Claude Code の実行状況を自動で検出
  • 複数インスタンスにも対応
  • 10 秒のアイドル検出後に自動で復帰

設定不要で使えるのが魅力ですね。Homebrew からもインストールできます。

cc-caffeinated

cc-caffeinatedは cc-caffeine とは別のプロジェクトで、トランスクリプトベースの活動検知が特徴です。

./install.sh

Claude Code の自然な操作(入力、ツール使用、応答)をファイル更新として検知するので、より正確に「実際に作業中かどうか」を判断できます。非アクティブ期間後に自動終了するフェイルセーフ設計になっています。

4つの解決策を比較

Amphetamine おすすめ caffeinate Hooks 専用ツール
難易度 簡単 簡単 簡単
自動化 手動/Triggers 手動 自動 自動
対応OS macOS macOS macOS 様々
蓋閉じ対応 × × ×
おすすめ GUI派 追加ソフト不要派 カスタマイズ派 設定任せたい派

個人的には、今は Amphetamine で満足していますが、Hooks の方法は一度設定してしまえば完全自動なので魅力的ですね。次のプロジェクトで試してみようと思っています。

移動中も開発を続けるためのTips

MacBook を閉じて持ち運びながら Claude Code を動かす場合、スリープ防止以外にもいくつか注意点があります。

caffeinateやHooksで蓋閉じスリープを防ぐには

Amphetamine は蓋を閉じてもスリープしない設定ができますが、caffeinate コマンドや Hooks を使う場合は、別途pmsetコマンドが必要です。

# 蓋を閉じてもスリープしない設定
sudo pmset -a disablesleep 1

# 元に戻す
sudo pmset -a disablesleep 0

バッテリー残量に注意

スリープしないということは、当然バッテリーを消費し続けます。長時間の外出前には十分に充電しておくか、モバイルバッテリーを用意しておくと安心です。

ネットワーク接続

Claude Code は API と通信するので、ネットワーク接続が必須です。テザリングやモバイル Wi-Fi を使う場合は、データ通信量にも気をつけてください。

発熱対策

カバンの中で MacBook を動かし続けると、熱がこもることがあります。通気性の良いケースを使うか、たまに確認するようにしましょう。

Karabiner-Elementsユーザーに設定をTypeScriptで書くことを全力でおすすめしたいMac Claude Codeが地味に快適になる細かいTips集開発

まとめ

Claude Code の長時間タスク中に Mac がスリープする問題、解決策は大きく 4 つあります。

  • Amphetamine → 手軽でわかりやすい GUI ツール
  • caffeinate → 追加ソフト不要、ターミナルだけで完結
  • Hooks → 自分でスクリプトを書いて完全自動化
  • 専用ツール → cc-caffeine 等、インストールするだけ

どれを選ぶかは好みによりますが、「とりあえず今すぐ解決したい」なら Amphetamine か caffeinate コマンド、「一度設定して忘れたい」なら Hooks か専用ツールがおすすめです。

移動時間を有効活用して、開発を進めてもらいましょう。

Thanks for reading!
Claude CodeMacスリープ防止Amphetaminecaffeinate