この記事ではセキュリティに特化して解説します。AIセキュリティ全般は サプライチェーンセキュリティ完全ガイド2026|攻撃手法・防御ツール・実践チェックリスト をご覧ください。
何が起きたか
OpenClawが v2026.3.31 をリリース。最大の変更は Node Shell実行フローの統一 で、CLI と Agent ノードツール内の重複した nodes.run シェルラッパーを削除し、すべてのノード シェル実行を exec host=node に統一した。同時に プラグイン/スキルインストールのセキュリティ強化 で、危険コード検出と install-time スキャン失敗がデフォルトで fail-closed に変更。さらに ノードペアリング後の認可体制 を改善し、デバイスペアリングだけではノードコマンドが有効にならない仕様に。
背景と経緯
OpenClaw は複数の実行環境(ホスト、ノード、サンドボックス)にまたがるため、各経路で実行フローが分散していた。同時にプラグイン機構の拡大に伴い、外部コードの危険性を事前検出する必要が増した。また初期ペアリングだけでノードコマンドが実行可能になるセキュリティギャップも指摘されていた。今回のリリースはこれらの課題を一括解決する破壊的変更(breaking changes)。既存自動化フローの一部で明示的なオーバーライドが必要になる可能性がある。
主要な Breaking Changes
1. Node Shell実行の統一
変更内容:
- CLI と Agent ノードツール内の重複 shell wrapper を削除
- すべてのノード シェル実行が
exec host=nodeを経由 - ノード固有機能は
nodes invokeと専用media/location/notifyアクションに集約
影響: ノードで実行されるシェルコマンドの権限・キャプリティがより厳密に管理される。既存の直接呼び出しは失敗する可能性。
# 新しい実行方法
exec host=node command --arg value
# ノード固有アクション(nodes invoke で実行)
nodes invoke --node-id <id> media send --file /path/to/file
2. プラグイン危険コード検出の厳格化
変更内容:
Skills/installとPlugins/installでビルトイン dangerous-code 検出- Install-time スキャン失敗がデフォルトで fail-closed
- 安全でないプラグイン継続インストールに
--dangerously-force-unsafe-installフラグ必須
影響: 既存スキルやプラグインがスキャンで危険と判定された場合、明示的に強制フラグを付けない限りインストール不可。
# 危険コードを含むプラグイン インストール(明示的に許可)
openclaw plugin install <plugin-id> --dangerously-force-unsafe-install
# 通常インストール(スキャン結果で安全と判定された場合のみ成功)
openclaw plugin install <plugin-id>
3. ノード認可体制の改善
変更内容:
Gateway/node commands: ノードコマンドがペアリング承認まで無効Gateway/node events: ノード発信実行が信頼度の低い表面に制限- デバイスペアリングだけではコマンド実行権取得不可
フロー図:
ペアリング承認"] E --> F["ノードコマンド: 有効"] F --> G["ノード実行
exec host=node 経由"]
Plugin SDK の非推奨化と移行パス
変更内容:
- レガシー provider compat サブパス非推奨
- 古いバンドル provider setup 廃止
- Channel-runtime compatibility shims 非推奨化
- 移行警告をエミット
推奨パス:
// 旧: レガシー方式
import { compat } from 'openclaw/plugin-sdk/compat';
// 新: 推奨パス
import { runtime } from 'openclaw/plugin-sdk';
import { api } from './api';
import { runtimeApi } from './runtime-api';
Gateway 認証の強化
信頼プロキシ設定の厳格化
変更内容:
trusted-proxyが混在シェアトークン設定を拒否- Local-direct フォールバックに設定トークン要求
- 同一ホストの暗黙認証を廃止
# 設定例(新仕様)
gateway:
auth:
trustedProxy:
tokens:
- token: "xxx"
sources: ["10.0.0.0/8"]
# 混在設定はエラー
# ✗ local-direct と token を同時指定不可
デバイストークンローテーション時の即時切断
変更:
- トークンローテーション後、アクティブセッション即座に切断
- 新認証情報への強制切り替え
- 設定ファイル修正後の古いトークンによるアクセス遮断
新機能ハイライト
| 機能 | 説明 | Issue |
|---|---|---|
| QQ Bot チャネル | マルチアカウント、slash commands、リマインダー、メディア送受信対応 | #52986 |
| Matrix ルーム履歴 | channels.matrix.historyLimit でコンテキスト取得、ウォーターマーク別トラッキング |
#57022 |
| Matrix ストリーミング | Draft ストリーミングで部分応答を既存メッセージ更新 | #56387 |
| LINE メディア送信 | 画像・ビデオ・オーディオの LINE 専用送信パス | #45826 |
| MCP リモートサーバー | HTTP/SSE サーバーサポート、認証ヘッダー対応(MCPサーバー構築ガイドも参照) | #50396 |
| Microsoft Teams メンバー情報 | Graph API 経由のメンバー詳細解決 | #57528 |
| WhatsApp リアクション | 絵文字リアクションによるメッセージ応答 | - |
| SlackExec 承認 | Slack ネイティブ承認ルーティング、Slack 内承認完結 | - |
Android 対応の強化
通知フォワーディング
■ 新機能
├ Package フィルタリング
├ Quiet hours(静止時間帯)設定
├ Rate limiting
└ より安全な Picker 動作
Issue #40175
バージョン取得の改善
変更:
- Hidden API 廃止、Package Manager から取得
- Android 15+ での compile 失敗解決
- プレースホルダー値回避
Issue #58126
QR ペアリングの安定化
変更:
- 重複ペアリング時の Push receiver 重複登録を回避
- Push 登録をペアリング単位に限定
- トークンローテーション後も Push 配信継続
Issue #58256
背景タスク管理の統一
実行フロー統合
背景実行
コントロールプレーン"] SubAgent["SubAgent"] --> Central Cron["Cron ジョブ"] --> Central BGCli["Background CLI"] --> Central Central --> SQLite["SQLite
バックアップ台帳"] SQLite --> Lifecycle["ライフサイクル更新
監査・保守"]
変更点:
- ACP・SubAgent・Cron・Background CLI を SQLite 台帳で統一管理
- Executor seam 経由のライフサイクル更新
- 監査・メンテナンス・ステータス表示
- 自動クリーンアップと lost-run リカバリ強化
タスクフロー制御サーフェス
# 新コマンド例
openclaw flows list # 全タスクフロー表示
openclaw flows show <flow-id> # フロー詳細表示
openclaw flows cancel <flow-id> # フロー キャンセル
実行環境(Exec)セキュリティの強化
環境変数サニタイゼーション
ブロック対象(Issue #57849, #57850):
# ホスト実行時、以下を環境から除外
proxy: # HTTP_PROXY, HTTPS_PROXY, NO_PROXY
ssl_verify: # SSL_VERIFY_MODE, SSL_CERT_FILE など
docker_endpoint: # DOCKER_HOST, DOCKER_TLS など
python_package_index: # PIP_INDEX_URL など(Issue #57872)
目的: リクエストスコープコマンドが攻撃者の設定で traffic reroute や 不正証明書信頼を回避。
Node 実行の cwd 保護
Issue #50961
# Gateway 側が rewrite しない仕様に
exec host=node --cwd /node/local/path command
# → /node/local/path で実行(Gateway FS にマッピングされない)
セキュリティ承認フローの再設計
ACP 承認クラス化(セマンティック化)
旧方式:
- Dangerous tool 名前オーバーライド
- 過度に許可的
新方式:
- Semantic approval classes(語意的承認クラス)
- Readonly reads/searches のみ自動承認
- 間接 exec-capable・制御平面ツール は明示承認必須
| 承認クラス | 自動承認 | 明示承認必須 | 説明 |
|---|---|---|---|
readonly_read |
✓ | - | ファイル読取・検索 |
readonly_query |
✓ | - | データベースクエリ |
exec_capable |
- | ✓ | コマンド実行 |
control_plane |
- | ✓ | システム制御 |
Discord/Telegram 承認者の自動推論
# execApprovals.approvers が未設定の場合、owner から推論
execApprovals:
# approvers 未定義
# → owner の Discord/Telegram ID を自動使用
承認時間枠も 30 分に延長(Issue #57864)。
修正の主要なバグフィックス
Slack 重複返信の解決
Issue: Draft 確定時の edit 失敗で retry 駆動重複返信
修正: Ambiguous edit 失敗時の再試行ロジックを修正。Retry 駆動重複を防止。
OpenAI Responses MCP ツール正規化
Issue #58299: Bare-object・object-ish・top-level union MCP ツール定義が OpenAI 登録で拒否
修正: WebSocket/Responses パスで MCP ツール schema を正規化。Codex など spec-compliant クライアント対応。
Cron 多行テキスト配信
Issue: Announce mode で最後のチャンクのみ配信
修正: 全配信可能テキストペイロッドを保持。Telegram forum topics への多行報告完全配信。
Matrix スレッド分離
Issue #57995: Per-DM threadReplies オーバーライド+スレッドセッション分離を実装。
Nostr 署名検証
Issue: インバウンド DM 署名検証なし → 偽造ペアリング要求
修正: 署名検証後にペアリング・送信者認可処理。偽造 DM イベント拒否。
実装例:新しい exec フロー
デフォルト implicit exec の動作
# 指定なしは host=auto に自動 resolve
exec echo "test"
# → sandbox 実行時: host=sandbox
# → ホスト単独: ホスト実行
# 明示指定
exec host=node echo "test" # ノード実行
exec host=sandbox echo "test" # サンドボックス実行
exec host=localhost echo "test" # ホスト実行
# Sandbox なし時の明示指定は fail-closed
exec host=sandbox echo "test" # エラー: No sandbox runtime
Diffs ビューアの最適化
Issue #57909:
View-only/File-only 実行で SSR preload 作業をスキップ。Render 効率化、Mode output は同期維持。
開発者向け移行ガイド
Plugin SDK 移行 checklist
// ❌ 古い import
import { compat } from 'openclaw/plugin-sdk/compat';
import { setup } from 'openclaw/plugin-sdk/setup';
// ✓ 新しい import
import { runtime } from 'openclaw/plugin-sdk';
import { api } from './api';
import { runtimeApi } from './runtime-api';
// マイグレーション警告を確認
// openclaw doctor でキャリー検証
Node 実行コマンド更新
# exec 設定例
tools:
exec:
host: "auto" # auto/node/sandbox/localhost
security: "sandbox" # sandbox/denyall/inherit
ask: true # 承認プロンプト表示
今後の展望
- Major Release での Plugin SDK 完全廃止 — Compat shims・Legacy provider 削除予定。AIエージェントフレームワーク比較で各フレームワークのプラグイン体系を確認できる
- 背景タスク統合深化 — 線形タスク制御の拡張
- セキュリティモデル整備 — Semantic approval classes のエコシステム統合
- チャネル対応拡大 — QQ Bot・Matrix・LINE の機能充実継続
関連記事: サプライチェーンセキュリティ完全ガイド2026|攻撃手法・防御ツール・実践チェックリスト
参照ソース
この記事はAI業界の最新動向を速報でお届けする「AI Heartland ニュース」です。