はじめに
AIエージェントにPC操作(computer use)をさせたいけど自分のMacで直接動かすのは怖い。マウスを取り合うしログイン中のブラウザやファイルにも手が届いてしまいます。
2026年11月、terminal-mac が公開されました。
macOSの仮想マシン(VM)をターミナルの中で動かし、AIエージェント専用のMacを用意できるツールです。
今回はClaude CodeにVMを操作させ、標準搭載のチェスアプリで1局指させてみました。
実際の操作の様子や対局結果、ホスト側のMacにかかる負荷などを紹介します。
検証環境
| 項目 | 内容 |
|---|---|
| ホスト | Apple Silicon Mac(メモリ24GB) |
| ホストOS | macOS 27.2 |
| terminal-mac | v0.2.0(build 6) |
| エージェント | Claude Code |
| ターミナル | Ghostty |
terminal-macとは
Apple純正の仮想化フレームワーク(Virtualization.framework)でmacOSのVMを立ち上げ、その画面をターミナルに表示するSwift製のツールです。ライセンスはMITです。
AIエージェントからは、MCPサーバーかCLIで次の操作を送れます。
terminal-mac action screenshot
terminal-mac action click X Y
terminal-mac action drag X1 Y1 X2 Y2
terminal-mac action type 'text'
terminal-mac action key cmd+space
terminal-mac action scroll --dy -300
TerminalMacGuestで操作する仕組み
実際にVMの画面を撮影したり、クリックやキー入力を送ったりしているのは、VMの中で動く補助アプリ(TerminalMacGuest.app)です。
ホストとVMは、ネットワークではなく共有フォルダ越しにファイルでやり取りします。VMから見える共有フォルダは次の2つだけです。
| フォルダ | 中身 | VMからの権限 |
|---|---|---|
control |
依頼、結果のJSON、スクリーンショット | 読み書き |
tools |
TerminalMacGuest.app 本体 | 読み取りのみ |
ホスト側の作業フォルダには、TerminalMacGuestが書いた結果が次のような形で残っていました。
{"values":{"pointHeight":"800","pointWidth":"1280","unchanged":"true"},"ok":true,"id":"FC68A0FD-AE21-4919-AEAE-EE38FE026943"}
TerminalMacGuestを tools フォルダから一度起動すると、VMの ~/Applications に自分自身をインストールし、ログイン時に自動で起動するように登録されます。画面収録とアクセシビリティの許可もVMの中でだけ出すので、ホストのMacにはどちらの権限も与えません。
ほかにも、次のような作りになっています。
- 文字入力はクリップボードを使わず、キーボード入力のイベントとして送る
- シェルコマンドを実行する操作は用意されていない
- ホスト側で外部から操作を受け付けるポート(ネットワークの待ち受け)を開けない
- ハードウェアモデル名が
VirtualMacで始まらない環境では、TerminalMacGuestは起動しない(手元のMacで誤って動かすのを防ぐため)
セットアップ
cd terminal-mac-0.2.0-6-macos-arm64
bash install.sh
terminal-mac doctor
terminal-mac # ガイドに従ってVMを作成・起動する
初回はAppleのサーバーからmacOSのイメージ(IPSW)をダウンロードし、VMにインストールします。
初期設定では、Apple IDのサインインを飛ばしました。VMに普段のアカウントやパスワードを入れないためです。
VMは「Apple Virtual Machine 1」として認識され、メモリは4GBが割り当てられていました。
最後に、VMの中で補助アプリに「画面収録」と「アクセシビリティ」を許可します。
Claude Codeからチェスを指させる
MCPサーバーとして登録する方法もありますが、今回はClaude CodeからBashで terminal-mac action ... を直接呼びました。設定ファイルを変更しなくても、そのまま試せます。
Claude Codeがチェスの盤面を認識して駒を動かす
チェスアプリの盤は斜め視点の3D表示です。
そのため2Dの盤面と違って、手前の段ほどマスが広く、奥の段ほど狭くなっています。
Claude Codeはスクリーンショットから盤面の座標を読み取り、「e2」などのマス名を実際の画面座標に変換する方法を考えました。
その際、操作を効率化するために座標変換用のシェルスクリプトも自分で作成していました。
以降は1手ごとに駒をドラッグし、盤面のスクリーンショットを撮影して相手の手を確認する、という操作を繰り返しました。
コンピュータの応手を待つため1手ごとに12秒ほど待機させましたが、キャスリング(王を2マス動かす)を含めて駒の置き間違いは1回もありませんでした。

(claude codeが駒を動かす様子。claudeは白※3倍速)
ホスト側のGhosttyでは、VMの画面がリアルタイムに表示されます。Claude Codeが駒を動かしている間も、ホストのマウスやキーボードは自由に使えました。
Claude Codeの対局結果
Claude Codeに1局指させた結果、まさかの27手で黒(コンピュータ)のチェックメイト勝ちとなりました。
27手で負けたっピ!最後はナイトにチェックメイトされたっピ 😂
棋譜
1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6 4.O-O Nxe4 5.Re1 d5 6.Bxd5 Qxd5 7.Nc3 Nxc3 8.dxc3 Qxd1 9.Rxd1 Bd6 10.Bg5 Bg4 11.h3 Bxf3 12.gxf3 O-O 13.Rd2 Rfe8 14.Rad1 Re6 15.Be3 Rf6 16.Kg2 Ne7 17.Bg5 Rg6 18.h4 f6 19.Kf1 fxg5 20.hxg5 Rf8 21.Kg2 Rxg5+ 22.Kf1 Rf5 23.Ke2 Rxf3 24.Rd3 Rxf2+ 25.Ke3 Rf3+ 26.Ke4 Rf4+ 27.Ke3 Nf5# 0-1敗因は2つだっピ。6.Bxd5 のあとの交換でビショップ1個分損したこと、17.Bg5 のあとにRg6でビショップを王様の前に縛られて取られたことだっピ。
筆者はチェスはわかりませんがコンピュータ側のほうが上手だったようです
ホストへの負荷
VMを起動している間、ホスト側のMacにどれくらい負荷がかかるのかも計測しました。
2秒ごとに、VMのプロセス(com.apple.Virtualization.VirtualMachine)とterminal-mac本体のCPU・メモリ、ホスト全体の空きメモリを記録しています。
CPUの%は「100% = CPUコア1つ分を使い切った状態」です。
| 状況 | VMのCPU(平均 / 最大) | VMのメモリ(平均) | terminal-mac本体 | ホストの空きメモリ |
|---|---|---|---|---|
| VM停止中 | - | - | - | 63% |
| VM起動・放置 | 32% / 42% | 約1.8GB | CPU 4%、約490MB | 51% |
| チェス対局中(終盤約4分) | 70% / 188% | 約1.8GB | CPU 6%、約630MB | 47% |
- 普段は1コアも使いません。最大値の約1.9コア分は、チェスの対戦相手が考えている瞬間や駒のアニメーションで一時的に跳ね上がった値です。
- VMを起動しておくだけで、ホストの空きメモリが約12ポイント(24GB中の約3GB)減りました。
- 一番大きいのはディスクで、VM本体が約28GB、キャッシュしたmacOSイメージが約24GBでした。
対局の途中までDocker DesktopのVMも動いていたため、Dockerを止めたあとの終盤約4分の値を載せています。
AIにMacを1台渡すと何ができるか
チェスを指させてみて、手元のMacでAIにPC操作させる場合との違いがはっきりしました。
- 人とAIが同時に作業できる: マウスやキーボードを取り合いません。AIが13分かけて1局指している間も、手元のMacで別の作業ができました。
- 画面しか操作手段がないアプリを任せられる: チェスアプリのようにCLIもAPIもないアプリでも、スクリーンショットを見て操作できます。
- まっさらなMacで検証できる: 自作アプリの初回起動や、セットアップスクリプトの動作確認に向いています。
- 壊されても手元に影響しない: ホームフォルダやログイン状態から切り離されているので、システム設定の変更のような手元では怖い操作も任せやすくなります。
ホストのホームフォルダやログイン状態から切り離されているため、VM内でファイルを削除したりシステム設定を変更したりしても、基本的にホスト側には影響しません。ただし、ネットワークはデフォルトで接続されているため、外部サービスへの操作やネットワーク経由のアクセスには注意が必要です。
まとめ
- terminal-macで、AIエージェント専用のmacOSを手元に1台用意できた
- Claude Codeは3D表示のチェス盤でも駒を正確に動かせた。チェスは負けた♟️
- 普段の負荷はCPU 1コア未満、メモリ約3GB。ディスクは合計約52GB必要
参考






