7月18日、ykdojo.github.ioが「How to set up your spare Mac for Claude Code to fully control」と題した記事を公開した。この記事では、余っているMacをClaude Codeが完全制御できるエージェント専用マシンとして構築する手順について詳しく紹介されている。以下に、その内容を紹介する。
「AIにMacを丸ごと渡す」という発想
Claude Codeを使う際の最大のリスクは、--dangerously-skip-permissionsフラグだ。その名の通り、権限チェックを全スキップしてコマンドを実行するこのフラグは、メインマシンで使うには怖い。
そこで筆者(ykdojo)が考えたのが、余っているMacを完全にClaude Code専用の「捨て駒」マシンにするというアプローチだ。Apple IDも個人データも入れない新規アカウントを作り、そこにClaude Codeをインストールしてフル権限で動かす。メインMacからはSSH経由で操作し、外出時はスマホのClaudeアプリからも話しかけられる。
コンテナ(Dockerなど)でも似たようなことはできるが、筆者はその限界を指摘している。コンテナはあくまでメインマシン上で動くため、ネットワークリクエストなどは分離されない。また、UnityのようなmacOS専用アプリはコンテナでは動かせない。Macを丸ごと使うことで、computer use(画面キャプチャ・マウス・キーボード操作)も含めてフルに活用できる点が大きな差になる。
セットアップの全体像
必要なものは2台のMac(操作元の「ソース」と、エージェントが使う「ターゲット」)と、同じWi-Fiネットワークだけだ。
1. ターゲットMacをクリーンな状態に
個人データが残っている場合はまず初期化する。その後、Apple IDを紐付けない新規ローカルアカウントを作成し、adminに昇格させる。
2. SSHとパスワードレスsudoを有効化
ターゲット側でSSHを有効にし、ソース側からSSHキーをコピーする。さらに、エージェントが都度パスワードプロンプトに詰まらないよう、パスワードなしでsudoを実行できるルールをsudoersに追加する。
echo "<user> ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/<user>-nopasswd >/dev/null
sudo chmod 440 /etc/sudoers.d/<user>-nopasswd
sudo visudo -cf /etc/sudoers.d/<user>-nopasswd # "parsed OK" と表示されること
sudoersファイルのタイポはsudoへのアクセスを完全に失う危険があるため、3行目の構文チェックは必須だ。
3. スリープ防止
デフォルトではmacOSは約10分でスリープしてネットワークから切れる。常時起動エージェントとして使うために無効化する:
sudo pmset -c sleep 0
sudo pmset -c disablesleep 1 # 蓋を閉じた状態でもスリープしない
sudo pmset -c displaysleep 0
defaults -currentHost write com.apple.screensaver idleTime 0 # スクリーンセーバーも無効
4. クリップボード同期(clip.sh)
筆者が用意したスクリプトclip.shを使うと、ソースとターゲット間でテキスト・画像のクリップボード同期がSSH経由で行える。Apple IDもサードパーティサービスも不要で、暗号化されたピアツーピアの転送だ。
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/main/clip.sh \
-o ~/.local/bin/clip
chmod +x ~/.local/bin/clip
export IC_BOX="<user>@<target-host>.local" # ~/.zshrcに追記
clip sendでこちらのクリップボードをターゲットへ、clip getで逆方向に取得できる。画像をそのままClaude Codeのセッションにペーストすることも可能だ。
最大の目玉:Computer UseをSSH越しに動かす
通常、SSH経由のプロセスはmacOSのScreen RecordingやAccessibility権限にアクセスできない。GUIログインセッションに紐付いているためだ。
この制約を回避するために、筆者はLaunchAgent経由でtmuxサーバーをGUIセッション内に常駐させるというアーキテクチャを採用した。Claude Codeのセッションはそのtmuxサーバー上で動くため、GUIセッションの権限を継承し、画面キャプチャや入力操作が可能になる。SSHからはそのtmuxセッションにアタッチするだけだ。
セットアップは以下のコマンド1本:
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/main/setup-computer-use.sh \
-o setup-computer-use.sh && bash setup-computer-use.sh'
このスクリプトはLaunchAgentのインストールと~/.claude.jsonへのcomputer-useツールの有効化を自動で行う。なおcomputer useの利用にはClaude ProまたはMaxプランが必要だ。
ic.shでスマホからも操作できる
ソースMac側にはic.sh("isolated claude"の略)をインストールする。icコマンド1つでターゲット上に新しいClaude Codeセッションを立ち上げてアタッチできる。
主要なサブコマンドは以下の通り:
| コマンド | 動作 |
|---|---|
ic |
新しいClaudeセッションを開始 |
ic -c |
直近の会話を継続 |
ic rc |
スマホからのリモートコントロール |
ic ls |
稼働中のセッション一覧 |
ic sh |
Claudeなしのシェル接続 |
すべてのicセッションは--dangerously-skip-permissions付きで実行される。スマホのClaudeアプリからic rc(claude remote-control相当)を使うことで、外出先からでもターゲットMacに作業を投げることができる。
まとめ
「メインマシンで使うには怖いが、専用マシンなら何でもやらせられる」というシンプルな発想を、SSH・tmux・LaunchAgentを組み合わせて実用レベルに仕上げたガイドだ。スクリプト類は再実行可能(idempotent)に設計されており、--uninstallフラグでの元に戻せる点も実用的だ。
詳細はHow to set up your spare Mac for Claude Code to fully controlを参照していただきたい。