多分、もうWindows Companionの次のバージョンを待てって話なんだと。。。今の最新OpenClawとは無理っぽい。
OpenClaw Windows CompanionをWindows PCへインストールし、リモートのOpenClaw Gatewayとの接続までは成功したものの、
Windows Nodeで hostname.exe を実行
↓
タイムアウト
となり、Windows側のコマンド実行ができないトラブルに遭遇しました。
今回の環境では、
Node接続 正常
Pairing 正常
Approval 正常
device.info 正常
device.status 正常
system.which 応答あり
system.run タイムアウト
というところまで切り分けることができました。
この記事では、OpenClaw Windows Companionで
接続はできているのにWindowsコマンドだけ実行できない
場合に、どこを確認すればよいかを実際の検証結果をもとにまとめます。
今回の症状
OpenClaw Windows CompanionはリモートGatewayと接続済みでした。
Nodeの状態を確認すると、
paired
connected
approved
となっており、
system.run
system.run.prepare
system.which
device.info
device.status
などのcapabilityも公開されていました。
それにもかかわらず、OpenClawから、
Windows Nodeで hostname.exe を実行して
と指示すると、
45秒
75秒
などでタイムアウトしました。
エラーの内容は概ね、
Windows Nodeから応答がなくタイムアウト
Nodeの接続または実行許可が応答待ち
というものでした。
STEP1:まずNode接続を確認する
最初にWindows Nodeが本当に接続されているか確認します。
openclaw nodes list
または、
openclaw nodes describe --node "Windows Node (...)"
を実行します。
確認したい項目は、
Status
Approval
Caps
Commands
です。
正常であれば、概ね、
Status paired · connected
Approval approved
Caps ... system
となります。
さらにCommandsに、
system.run
system.run.prepare
system.which
system.execApprovals.get
system.execApprovals.set
などが表示されていれば、Windows Companion側がSystem系capabilityを公開しています。
STEP2:device pairingのpendingを確認する
Node接続トラブルでは、まずdevice pairingの未承認を疑います。
openclaw devices list
ここにpendingがあれば、承認が必要です。
ただし今回のケースでは、
pending device pairing なし
でした。
つまり、
device pairing未承認
は原因ではありませんでした。
STEP3:Exec Approvalを確認する
Windows Node側の実行許可を確認します。
openclaw approvals get --node "Windows Node (...)"
今回の初期状態では、
security=allowlist
ask=on-miss
askFallback=deny
autoAllowSkills=off
Allowlist=0
でした。
つまり、
許可リストにないコマンド
↓
Windows側で承認を求める
↓
承認できなければdeny
という設定です。
このため最初は、
承認待ちでタイムアウトしているのでは?
と考えました。
STEP4:System toolsを確認する
Windows Companion側には、
Run system tools
に相当するスイッチがあります。
これはWindows Nodeで system.run を使用するための重要な設定です。
今回この設定を確認したところ、
System tools = ON
でした。
したがって、
System toolsがOFF
という単純な原因でもありませんでした。
STEP5:Node SandboxをOFFにして試す
次にWindows Companion側のNode Sandboxが原因かを確認しました。
SandboxがWindowsコマンド実行を制限している可能性があるため、
Node Sandbox = OFF
にして、再度 hostname.exe を試しました。
しかし結果は、
タイムアウト
のままでした。
そのため今回のケースでは、
Node Sandbox固有の制限
が主原因とは考えにくくなりました。
STEP6:system.execApprovals.getを直接呼ぼうとして失敗
途中で、
openclaw nodes invoke \
--node "Windows Node (...)" \
--command system.execApprovals.get
を試しました。
しかし、
node.invoke does not allow system.execApprovals.*
use exec.approvals.node.*
というエラーになりました。
つまり、Exec Approvalの確認は node.invoke から直接行うのではなく、
openclaw approvals get --node "Windows Node (...)"
を使う必要があります。
STEP7:node.invokeを直接試す
system.run の経路を直接確認するため、
node.invoke
も試しました。
最初は、
idempotencyKey が必要
というエラーになりました。
つまり、現行Gatewayでは node.invoke を直接呼ぶ場合、
idempotencyKey
が必須です。
その後修正して実行すると、
PAIRING_CHANGED
node pairing changed while invocation was active
というエラーも発生しました。
ただし、その後Nodeを確認すると、
paired
connected
approved
となっていました。
このため、恒常的なpairing未承認ではなく、呼び出し中にNodeの接続状態またはpairing generationが変化した可能性が考えられました。
STEP8:device.infoを確認
ここで、system.run 以外のNode commandが正常か確認しました。
openclaw nodes invoke \
--node "Windows Node (...)" \
--command device.info
これは正常に返りました。
取得できた情報には、
Windows
OSバージョン
CompanionのappVersion
locale
などが含まれていました。
つまり、
Gateway
↓
Windows Node
↓
Companion
↓
device.info
までの通信は正常です。
STEP9:device.statusも正常
続いて、
openclaw nodes invoke \
--node "Windows Node (...)" \
--command device.status
を実行しました。
こちらも正常に返りました。
CPU、メモリ、ディスク、バッテリー、ネットワークなどの状態が取得できました。
つまり、
Node接続そのもの
はかなり正常だと判断できます。
STEP10:system.whichを確認
次に、
Windows Companionが実行ファイルを見つけられるか
を確認するため、
openclaw nodes invoke \
--node "Windows Node (...)" \
--command system.which \
--params '{"bins":["hostname.exe","whoami.exe","powershell.exe","cmd.exe"]}'
を実行しました。
最初は、
Missing bins parameter
となりました。
system.which は、
name
ではなく、
bins
を指定する必要があります。
修正後は、
ok: true
で返りました。
しかし結果は、
bins: {}
でした。
つまり、
system.which自体はNodeまで到達して正常応答
しているのに、
cmd.exe
powershell.exe
hostname.exe
whoami.exe
の場所が1件も返ってきませんでした。
この結果が重要だった
ここまでの状態を整理すると、
device.info
→ OK
device.status
→ OK
system.which
→ OK
ただし bins={}
system.run
→ タイムアウト
です。
これは、
Node全体が壊れている
というより、
System系の実行ファイル探索またはプロセス起動経路
に問題がある可能性を示しています。
特に、Windowsなら通常、
cmd.exe
hostname.exe
などは存在するため、
bins={}
は気になる結果です。
STEP11:Windows Companionのバージョンも確認
device.info からWindows Companionのバージョンも確認できました。
今回の環境では、
Windows Companion
core v2026.7.1-4
でした。
一方、Gateway側のOpenClawは、
2026.9.x
系でした。
このため、
Gateway側
比較的新しい
Windows Companion側
2026.7.1-4
という組み合わせになっていました。
OpenClaw Windows Nodeでは、2026.7.1系で system.run 周辺の不具合報告もあるため、最終的にはCompanion側の実装問題も疑う状況になりました。
ここまでで除外できたもの
今回の検証では、少なくとも次の項目は大きな原因ではなさそうでした。
GatewayにNodeが見えていない
→ 違う
Nodeが未pairing
→ 違う
Nodeが未承認
→ 違う
System capabilityが公開されていない
→ 違う
System toolsがOFF
→ 違う
Node Sandboxが原因
→ OFFでも再現
Windows Nodeそのものが応答していない
→ device.info / device.statusは正常
現時点で最も疑っている箇所
ここまでの結果から、問題はかなり限定されました。
OpenClaw Gateway
↓
OK
Node接続
↓
OK
Pairing
↓
OK
Approval
↓
OK
device.info / status
↓
OK
system.which
↓
応答するがbinsが空
system.run
↓
タイムアウト
したがって、現時点では、
Windows Companion側の system.run 実行経路、あるいは実行ファイル探索・プロセス起動処理に問題がある可能性が高い
と考えています。
今後試す予定の対応
ここから先は、Gateway側の設定をさらに変更するより、
Windows Companionを完全終了して再起動
Windows Companionを再インストール
より新しいWindows Companionビルドを確認
再ペアリング
system.which再確認
system.run再確認
という方向で確認する方がよさそうです。
特に、
device.info
device.status
が正常なので、ネットワークやGateway接続を何度も作り直すより、
Windows Companion自身のSystem実行部分を重点的に確認する
方が効率的だと思います。
検証用コマンド早見表
Node状態:
openclaw nodes list
詳細:
openclaw nodes describe --node "Windows Node (...)"
Device pairing:
openclaw devices list
Exec Approval:
openclaw approvals get --node "Windows Node (...)"
デバイス情報:
openclaw nodes invoke \
--node "Windows Node (...)" \
--command device.info
デバイス状態:
openclaw nodes invoke \
--node "Windows Node (...)" \
--command device.status
Windowsコマンド探索:
openclaw nodes invoke \
--node "Windows Node (...)" \
--command system.which \
--params '{"bins":["hostname.exe","whoami.exe","powershell.exe","cmd.exe"]}'
トラブルシュートの流れ
今回の経験から、Windows Companionで system.run がタイムアウトする場合は、次の順番で確認すると分かりやすいです。
Nodeはconnectedか
↓
Approvalはapprovedか
↓
system.run capabilityはあるか
↓
System toolsはONか
↓
Exec Approvalはどうなっているか
↓
Sandbox OFFでも再現するか
↓
device.infoは返るか
↓
device.statusは返るか
↓
system.whichは返るか
↓
system.runだけ失敗するか
ここまで確認できれば、
接続の問題
なのか、
実行許可の問題
なのか、
Windows Companion内部のsystem.run問題
なのかをかなり絞り込めます。
まとめ
今回、OpenClaw Windows Companionは、
paired
connected
approved
まで正常でした。
さらに、
device.info
device.status
も正常に取得できました。
そのため、
OpenClaw GatewayとWindows Companionの通信そのものは正常
と判断できます。
一方で、
system.which
→ okだがbins={}
system.run
→ タイムアウト
という状態でした。
また、
System tools = ON
Node Sandbox = OFF
でも症状は変わりませんでした。
そのため、現時点では、
Windows Companion側の system.run 実行処理またはWindows実行ファイルの解決部分に問題がある可能性が高い
というところまで切り分けています。
まだ完全解決には至っていませんが、
Node接続設定
Pairing
Approval
System tools
Sandbox
を何度も変更する段階ではなく、
Windows Companion本体の再起動・再インストール・新しいビルドでの検証
へ進むのが次の候補です。
OpenClawからWindowsを操作したいのに system.run だけタイムアウトする場合、今回の切り分け手順が参考になると思います。
