株式会社renue
renueについて
renueは、AIで業務を実装する会社です
AIコンサルティングから図面AI・広告運用エージェント・コールセンターAIまで、実際に動いているサービスをご覧いただけます。renueが何をしている会社か、まずはサービス一覧からご確認ください。
Claude Code VMリモート実行とは
Claude Code VMリモート実行とは、Claude Code(Anthropicのターミナルベースコーディングエージェント)をクラウドVM上で実行し、WebSocket + PTY(擬似端末)経由でブラウザからリモートアクセスする実装パターンです。コード実行に必要なリソースをVM側に配置し、認証・権限・通信先を設計することで、組織のセキュリティポリシーに合わせた運用を目指せます。WebSocketとPTYだけで安全性が確保されるものではありません(xterm.jsのセキュリティガイド)。
AnthropicのClaude Code v2.1.51公式リリースノートでは、Remote Controlを開始するclaude remote-controlコマンドの追加が案内されています。公式Remote Controlは、手元やVMで動くセッションをclaude.ai/codeやiOS/Androidアプリから操作する機能です。本記事のWebSocket + PTYによる独自実装とは接続方式が異なります。
アーキテクチャ概要
ブラウザ(xterm.js) ←→ WebSocket ←→ サーバー(node-pty/PTY) ←→ Claude Code プロセス
↓
Azure VM / AWS EC2
3層構成
| レイヤー | 技術 | 役割 |
|---|---|---|
| フロントエンド | xterm.js + WebSocket | ブラウザ上にターミナルUIを表示し、入出力を中継 |
| サーバーサイド | node-pty / Python pty | 擬似端末を生成し、Claude Codeプロセスの入出力を管理 |
| 実行環境 | Azure VM / AWS EC2 | Claude Codeが実際に動作するクラウドVM |
なぜVM上で実行するのか
- セキュリティ:クライアントPCではなく管理されたVM上でコード実行。ファイルシステムの分離、ネットワークポリシーの適用を設計する。VM化してもモデルとの通信でデータが外部送信される点は変わらない
- リソース管理:CPU/メモリ、必要に応じてGPUをVM単位で割り当てる。ビルド・テスト等のローカルツールの処理はVM側で実行するが、Claudeのモデル推論は接続先サービスで行う。VMにGPUを追加してもClaudeの推論をVM内で実行する構成にはならない
- マルチユーザー対応:各ユーザーに独立したVM環境を割り当て、データの分離を図りやすい
- どこからでもアクセス:ブラウザがあれば、PC/タブレット/スマートフォンからアクセス可能
- 環境の統一:開発環境のセットアップをVM側で完了させ、「自分のPCでは動く」問題を解消
WebSocket + PTYの実装ポイント
PTY(擬似端末)の生成
PTYはプロセスにターミナルを提供する仕組みです。node-ptyやPythonのptyモジュール(Unix向け)でClaude Codeプロセスを起動し、その入出力をWebSocketで中継する構成が考えられます。node-ptyの子プロセスは親と同じ権限で動くため、PTY自体を権限分離の仕組みとみなさず、実行ユーザーや隔離環境を設計します。
WebSocketの設計
- 双方向通信:ユーザーのキー入力をサーバーへ、Claude Codeの出力をブラウザへリアルタイムに中継
- 認証:WebSocket接続時に認証し、未認証接続を拒否する。JWTを使う場合は署名・有効期限等を検証する。接続後の操作権限、Originの許可リスト、セッション失効も設計する(OWASP WebSocket Security Cheat Sheet)
- 再接続ロジック:独自構成の再接続間隔やタイムアウトは、プロキシとセッションの要件に合わせて決める。公式Remote Controlの約10分という制限は、マシンが起動中でもネットワークへ到達できないサーバーモードの説明。対話セッションは再試行を続けるため、WebSocket共通の制限ではない
- セキュリティ:WSS(WebSocket Secure)で通信を暗号化する。暗号化とは別に、認証・認可と端末出力の扱いを検証する(xterm.jsの注意事項)
環境変数の注入
APIキー・認証トークン等をVMに渡す際は、ハードコードを避け、シークレットマネージャーと最小限のアクセス権を使います。起動時に環境変数へ注入する方式もありますが、プロセスから参照でき、ログ等へ漏れる可能性もあります。OWASPのシークレット管理の説明に沿って受け渡し方法を選びます。Vault等に保存するだけでエージェントから隠せるわけではなく、秘密を持つ処理の分離や、必要な操作だけを許す代理処理等が別途必要です。
Claude Code Remote Control(2026年9月確認)
Anthropic公式のRemote Controlでは、ローカルまたはVMで動くClaude Codeセッションをclaude.ai/codeから操作できます。コード実行とファイルアクセスは実行元に残りますが、会話を同期するための記録はAnthropic側にも保存されます。
- アウトバウンド接続のみ:公式Remote Controlは実行元からのHTTPS接続を使い、リモート操作用のインバウンドポートを開く必要がない。独自WebSocketサーバーの公開・接続設計には、この条件をそのまま適用できない
- セッション同期:PCで開始した作業をモバイルで継続可能
- 実装前の計画レビュー:Plan modeで変更前に計画を確認する。Remote ControlはセッションをWebから操作する仕組みで、Plan on the Webという独立機能を指すものではない。実行場所は接続元のまま
- 制約:公式の利用要件はPro/Max/Team/Enterprise。Team/Enterpriseは管理者による有効化が必要で、APIキー認証は対象外。実行元のプロセスを動かし続ける必要がある。対話セッションは1インスタンス1リモートセッションだが、サーバーモードは複数セッションに対応する。プラン・モードごとの最新条件は公式資料を確認する
Claude Code VM実行基盤の構成例
専用ラッパーによる実行環境管理
VM実行環境では、環境変数の受け渡し・起動時設定・セッション管理をラッパー層に集約する設計が考えられます。その場合も、ラッパーがあるだけで安全になるわけではなく、秘密情報を参照できる主体と子プロセスの権限を明示して設計します。
WebSocket統合によるブラウザアクセス
バックエンドにWebSocketエンドポイントを置き、xterm.jsと組み合わせるとブラウザ上にターミナルUIを提供できます。xterm.js公式ガイドは、デモ実装のWebSocket接続を本番でそのまま使わず、TLSや認証等を設計する必要性を説明しています。
Slack経由のVM起動
チャット操作を起点にクラウドVM上のセッションを起動する構成も考えられます。SlackのスラッシュコマンドはアプリへHTTPリクエストを送る仕組みです。VM起動との連携はアプリ側で実装し、Slackからのリクエスト検証に加えて、操作したユーザーが対象VMを起動できるかも確認する設計にします。
本番運用のベストプラクティス
- 認証の一貫性:ブラウザ→API→WebSocketの認証チェーンを統一し、バイパスしない
- タイムアウト管理:アイドル状態のセッションを自動停止してリソースを回収
- ログと監査:監査に必要な範囲で操作ログを記録し、機密情報のマスキングと保持期間を定める
- コスト管理:VMの起動/停止を自動化し、未使用時のコストを削減
- 企業ファイアウォール対応:WSS接続がブロックされる場合は、承認された接続経路や代替手段を管理者と確認する。フォールバックでも認証・暗号化の要件を維持する
よくある質問(FAQ)
Q1: ローカル実行とVM実行どちらがよい?
個人開発ではローカル、統一環境や集中管理が必要なチームではVMが候補です。ただし機密コードだからVM一択ということではありません。管理された端末や隔離環境の選択肢を公式セキュリティ資料と照らし、アクセス権・モデルへの送信範囲・保存条件が要件に合うかを確認して選びます。
Q2: VMのコストは?
小規模なインスタンスであれば低コストに抑えられますが、料金は提供元や地域・稼働時間により変動します。必要な時だけ起動する運用ならさらに削減可能です。




