主要な知見
  • OpenClawの公式ドキュメントには現在Windows削除ガイドが存在しない――Linuxのsystemctl disablerm -rfコマンドはWindowsでは適用できず、専用の削除ワークフローが必要
  • openclaw gateway uninstallはWindowsのスケジュールタスクを完全にクリアできない。残存するスケジュールタスクは起動のたびに存在しないGatewayの起動を試み、エラーイベントを生成する
  • 完全な削除には6つのステップが必要:プロセス停止 -> スケジュールタスクの登録解除 -> npmグローバルアンインストール -> 設定ディレクトリの削除 -> ログとキャッシュの削除 -> クリーンアップの確認。いずれかのステップを省略すると残存ファイルが残る
  • Windowsネイティブ環境でのOpenClawの残存物は少なくとも4箇所に散在する:%USERPROFILE%\.openclaw\%APPDATA%\npm\%LOCALAPPDATA%\openclaw-logs\、およびWindowsタスクスケジューラ

1. Windows専用の削除ガイドが必要な理由

OpenClaw Windowsネイティブインストールを完了した後、次に自然に浮かぶ疑問は:使い続けないと決めた場合、完全に削除するにはどうすればよいか?ということである。

これは一見シンプルな質問だが、実際のテストでは状況が予想以上に複雑であることが判明した。OpenClawの公式ドキュメント[1]にはLinux環境の削除手順(systemctl stopsystemctl disablerm -rf ~/.openclaw)が記載されているが、Windows削除ガイドは一切存在しない。さらに重要なことに、OpenClawがWindowsで使用する永続化メカニズム(スケジュールタスク)はLinux(systemd)とは根本的に異なるため[3]、Linuxの削除手順を直接適用することはできない。

実際の削除テスト中に複数の落とし穴に遭遇した:openclaw gateway uninstallコマンドが成功したように見えて実際にはスケジュールタスクの残存物を残していた、非管理者権限ではスケジュールタスクを削除できない、削除後もGatewayプロセスが孤児プロセスとして稼働し続けるなど。本記事では、再現可能なWindows削除ワークフローを提供するために、フィールドでの経験を完全に記録する。

2. 削除前の確認事項

削除を開始する前に、以下を確認する:

2.1 インストール方法の確認

本記事の削除ワークフローは以下のインストール方法に適用される:

WSL2経由でインストールした場合は、Windowsデプロイ完全ガイドのLinux削除手順を参照してほしい。

2.2 重要なデータのバックアップ

削除前に、保持が必要なデータがないか確認する:

# OpenClaw設定ファイルを確認
type %USERPROFILE%\.openclaw\openclaw.json

# 会話履歴を確認
dir %USERPROFILE%\.openclaw\sessions\

カスタムAPIキー、Telegram Bot Token、その他の統合設定をopenclaw.jsonに設定している場合は、先にバックアップコピーを取ることを推奨する。

3. 6ステップ完全削除ワークフロー

以下の6ステップは順番通りに実行する必要がある。すべての操作で十分な権限を確保するため、管理者としてPowerShellを開くことを推奨する。

ステップ1:デーモンとGatewayプロセスの停止

まず、実行中のすべてのOpenClawプロセスを停止する:

openclaw daemon stop

テスト時の出力は以下の通りであった:

Stopped Scheduled Task: OpenClaw Gateway

停止後、openclaw gateway statusを実行して状態を確認する。以下のレスポンスが表示された:

Service: Scheduled Task (registered)
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Runtime: stopped (state Ready, last run time 2026/2/27 06:43:26)
RPC probe: ok
Service is loaded but not running (likely exited immediately).

キーフレーズに注目:「Service is loaded but not running」――プロセスは停止したが、スケジュールタスクは登録状態のままである。これがステップ2で対処する内容である。

openclaw daemon stopが応答しない場合や失敗する場合は、WMICでGatewayプロセスを見つけて強制終了できる:

# openclaw関連のNode.jsプロセスを検索
WMIC process where "name='node.exe'" get ProcessId,CommandLine | findstr /i "openclaw"

# 出力例:
# "C:\Program Files\nodejs\node.exe"  ...openclaw\dist\index.js gateway --port 18789    26472

# 強制終了
taskkill /F /PID 26472

注意:Start-JobでGatewayをバックグラウンドで実行した場合は、先にPowerShell Jobを停止する必要がある:

# バックグラウンドJobの一覧
Get-Job

# Jobの停止と削除
Get-Job | Stop-Job
Get-Job | Remove-Job

ステップ2:スケジュールタスクの登録解除

これはWindows削除プロセスで最もエラーが発生しやすいステップである。openclaw gateway installを一度でも実行していれば、システムに自動起動スケジュールタスクが存在する[3]

# まずOpenClawの組み込みアンインストールコマンドを試す
openclaw daemon uninstall
# または
openclaw gateway uninstall

テスト時、両方のコマンドを試したが、どちらも完全にクリーンアップできなかった:

$ openclaw daemon uninstall
Stopped Scheduled Task: OpenClaw Gateway
Removed task script: C:\Users\HYC\.openclaw\gateway.cmd
Gateway service still loaded after uninstall.

$ openclaw gateway uninstall
Stopped Scheduled Task: OpenClaw Gateway
Task script not found at C:\Users\HYC\.openclaw\gateway.cmd
Gateway service still loaded after uninstall.

重要なエラーメッセージに注目:「Gateway service still loaded after uninstall」。スクリプトファイルは削除されたが、Windowsスケジュールタスクの登録はまだ存在することを意味する。

管理者としてPowerShellを開き、Unregister-ScheduledTaskで手動登録解除する必要がある[4]

# 管理者PowerShellで実行
Unregister-ScheduledTask -TaskName "OpenClaw Gateway" -Confirm:$false

スケジュールタスクが実際に削除されたことを確認する:

# クリアされていれば、このコマンドは結果を返さない
Get-ScheduledTask | Where-Object {$_.TaskName -like "*OpenClaw*"}

ステップ3:npmグローバルアンインストール

npm uninstall -g openclaw

テスト時の出力:

removed 682 packages in 7s

正常に削除されたことを確認する:

openclaw --version
# 'openclaw' is not recognizedと表示されるはず

openclaw --versionがまだ動作する場合、システムに複数のNode.jsインストール(例:nvmで管理された複数バージョン)がある可能性があり、各Node.jsバージョンでnpm uninstall -g openclawを実行する必要がある。

ステップ4:設定ディレクトリの削除

OpenClawのすべての設定、セッションデータ、OAuthトークンはユーザーディレクトリ下に保存されている[4]

# OpenClaw設定ディレクトリを削除
Remove-Item -Recurse -Force "$env:USERPROFILE\.openclaw"

# 確認
Test-Path "$env:USERPROFILE\.openclaw"
# Falseを返すはず

テスト時、このディレクトリの完全な内容は以下の通りであった:

$ ls ~/.openclaw/
agents/  canvas/  completions/  credentials/  cron/  devices/
identity/  logs/  memory/  telegram/  workspace/
openclaw.json  openclaw.json.bak  openclaw.json.bak.1
openclaw.json.bak.2  openclaw.json.bak.3  update-check.json

主要な内容:

ステップ5:ログとキャッシュの削除

WindowsでのOpenClawのログとキャッシュは以下の場所に散在している可能性がある:

テスト時、OpenClawのログファイルは/tmp/openclaw/(Git Bash環境)またはC:\tmp\openclaw\(Windowsネイティブパス)に位置していた:

# Git Bash経由でインストール/使用した場合
Remove-Item -Recurse -Force "C:\tmp\openclaw" -ErrorAction SilentlyContinue

# 標準Windowsログの場所
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\openclaw-logs" -ErrorAction SilentlyContinue

# グローバルnode_modulesに残存物がないか確認
dir "$env:APPDATA\npm\node_modules\" | findstr /i "openclaw"

node_modulesにまだopenclawディレクトリが存在する場合は、手動で削除する:

Remove-Item -Recurse -Force "$env:APPDATA\npm\node_modules\openclaw" -ErrorAction SilentlyContinue

ステップ6:完全削除の確認

以下のチェックリストを実行して、すべての残存物がクリアされたことを確認する:

# 1. コマンドが存在しないことを確認
openclaw --version
# 期待値:'openclaw' is not recognized

# 2. 設定ディレクトリが削除されたことを確認
Test-Path "$env:USERPROFILE\.openclaw"
# 期待値:False

# 3. スケジュールタスクが削除されたことを確認
schtasks /Query /TN "OpenClaw*" 2>$null
# 期待値:ERROR: The system cannot find the path specified.

# 4. 残存プロセスがないことを確認
tasklist | findstr /i "openclaw"
# 期待値:出力なし

# 5. ログディレクトリが削除されたことを確認
Test-Path "$env:LOCALAPPDATA\openclaw-logs"
# 期待値:False

5つすべてのチェックがパスすれば、OpenClawはWindowsシステムから完全に削除されている。

4. 落とし穴ログ

以下は、実際の削除テスト中に遭遇した具体的な問題とその解決策である:

落とし穴#1:daemon/gateway uninstallの両方がスケジュールタスクを完全にクリアできない

症状:openclaw daemon uninstallopenclaw gateway uninstallを実行すると、両方とも「Gateway service still loaded after uninstall」と出力し、PowerShellクエリでスケジュールタスクがまだ見つかる:

$ powershell -Command 'Get-ScheduledTask | Where-Object {$_.TaskName -like "*OpenClaw*"}'
TaskPath    TaskName            State
--------    --------            -----
\           OpenClaw Gateway    Ready

根本原因:OpenClawのアンインストールコマンドはgateway.cmdスクリプトファイルを削除するが、内部のschtasks /Delete呼び出しは管理者権限がないとサイレントに失敗し、Windowsタスクスケジューラの登録を実際に削除できない。

解決策:管理者としてPowerShellを開き、手動で登録解除する[4]

# 管理者PowerShell
Unregister-ScheduledTask -TaskName "OpenClaw Gateway" -Confirm:$false

落とし穴#2:管理者権限なしのHRESULT 0x80070005エラー

症状:非管理者PowerShellでUnregister-ScheduledTaskを実行すると以下のエラーが発生する:

Unregister-ScheduledTask : Access is denied.
+ CategoryInfo          : PermissionDenied: (PS_ScheduledTask:Root/Microsoft/...T_ScheduledTask)
   [Unregister-ScheduledTask], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070005,Unregister-ScheduledTask

根本原因:openclaw gateway installは管理者権限でスケジュールタスクを作成しており[3]、削除にも管理者権限が必要である。HRESULT 0x80070005はWindowsのACCESS_DENIEDエラーコードである。

解決策:システム管理者としてPowerShellを再度開く:

# PowerShellを右クリック -> 管理者として実行
# または既存のPowerShellから単一コマンドを昇格
Start-Process powershell -Verb RunAs -ArgumentList "-Command Unregister-ScheduledTask -TaskName 'OpenClaw Gateway' -Confirm:`$false"

落とし穴#3:孤児Gatewayプロセスがポート18789を占有

症状:npm uninstall -g openclawを実行した後も、GatewayのNode.jsプロセスがバックグラウンドで動作し続け、ポート18789を占有している。

根本原因:npmパッケージを削除する前にGatewayプロセスを停止しなかった場合、Node.jsの子プロセスが孤児プロセスになる。テスト時、WMICでこのプロセスを発見した:

$ WMIC process where "name='node.exe'" get ProcessId,CommandLine | findstr /i "openclaw"
"C:\Program Files\nodejs\node.exe"  ...\openclaw\dist\index.js gateway --port 18789    26472

解決策:

# プロセスを強制終了
taskkill /F /PID 26472
# SUCCESS: The process with PID 26472 has been terminated.

これがステップ1(プロセス停止)をステップ3(npm削除)の前に必ず実行すべき理由である。

落とし穴#4:Git Bashでのパスエスケープ問題

症状:Git Bashでschtasksを実行すると不可解なエラーが発生する:

$ schtasks /Delete /TN "OpenClaw Gateway" /F
ERROR: Invalid argument/option - 'C:/Program Files/Git/Delete'.
Type "SCHTASKS /QUERY /?" for usage.

根本原因:Git Bash(MSYS2)は/で始まる引数を自動的にWindowsパスに変換する[5]/DeleteC:/Program Files/Git/Deleteと解釈され、schtasksは完全に間違ったパラメータを受け取ることになる。cmd経由でルーティングしても、クォートの処理で問題が発生する:

$ cmd //c 'schtasks /Delete /TN "OpenClaw Gateway" /F'
ERROR: Invalid argument/option - 'Gateway"'.
Type "SCHTASKS /DELETE /?" for usage.

解決策:

# 方法1:ダブルスラッシュでパス変換をバイパス
schtasks //Delete //TN "OpenClaw Gateway" //F

# 方法2:パス変換を一時的に無効化
MSYS_NO_PATHCONV=1 schtasks /Delete /TN "OpenClaw Gateway" /F

# 方法3(推奨):Git BashからPowerShellを直接呼び出す
powershell.exe -Command "Unregister-ScheduledTask -TaskName 'OpenClaw Gateway' -Confirm:`$false"

# 方法4(最善):Git Bashの代わりにPowerShellまたはCMDを使用する

5. Windows vs Linux削除の比較

ステップWindows(ネイティブ)Linux / WSL2
サービス停止openclaw gateway stop + taskkillsystemctl stop openclaw-gateway
サービス登録解除Unregister-ScheduledTask(管理者が必要)systemctl --user disable openclaw-gateway
パッケージ削除npm uninstall -g openclawnpm uninstall -g openclaw
設定の削除Remove-Item ~\.openclawrm -rf ~/.openclaw
ログの削除Remove-Item C:\tmp\openclawrm -rf /tmp/openclaw
確認Get-ScheduledTask + WMICsystemctl list-units + ps aux
管理者権限の要否はい(スケジュールタスクの削除に必要)いいえ(systemctl --user
主な落とし穴スケジュールタスクの残存systemd unitファイルの残存

6. 削除後チェックリスト

以下は完全な削除後確認チェックリストである。削除完了後に各項目を確認することを推奨する:

チェック項目確認コマンド期待結果
openclawコマンドopenclaw --versionnot recognized
設定ディレクトリTest-Path ~\.openclawFalse
スケジュールタスクschtasks /Query /TN "OpenClaw*"path not found
残存プロセスnetstat -ano | findstr 18789出力なし
ログディレクトリTest-Path $env:LOCALAPPDATA\openclaw-logsFalse
npmグローバルパッケージnpm list -g openclawempty / not found
スタートアップフォルダdir "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup" | findstr openclaw出力なし

7つすべてのチェックがパスすれば、WindowsシステムからOpenClawのすべての痕跡が完全にクリアされている。

まとめ

削除ワークフロー全体を振り返ると、核心的な問題は一文に要約できる:OpenClawのインストールはコマンド1つだが、削除には6ステップ必要――そして公式ドキュメントはそのうち1ステップしかカバーしていない。

npm uninstall -g openclawはOpenClawの実行可能ファイルを削除するが、設定ディレクトリはクリアせず、スケジュールタスクの登録を解除せず、既に動作中のGatewayプロセスも停止しない。これらの残存物はディスクスペースを占有するだけでなく、起動のたびにエラーイベントを生成する――スケジュールタスクが既に存在しないプログラムの起動を試み、Windowsイベントビューアーに多数の失敗レコードが蓄積される。

AIエージェントツールを評価している技術チームにとって、「安全に削除できること」は「簡単にインストールできること」と同様に重要である。クリーンにアンインストールできないツールは、技術的負債の評価における不確実性を増大させる[2]。本ガイドがWindows環境でOpenClawを試すリスクを軽減することを願っている――完全に削除できることが分かっていれば、実験を始めやすくなる。

本記事でカバーされていない削除中の問題に遭遇した場合は、当社リサーチチームにお気軽にご連絡いただきたい。削除プロセスの公式改善を含め、OpenClawのWindowsプラットフォームサポートの進捗を引き続き追跡していく。