OpenClawが v2026.3.31 をリリース。最大の変更は Node Shell実行フローの統一 で、CLI と Agent ノードツール内の重複した nodes.run シェルラッパーを削除し、すべてのノード シェル実行を exec host=node に統一した。同時に プラグイン/スキルインストールのセキュリティ強化 で、危険コード検出と install-time スキャン失敗がデフォルトで fail-closed に変更。さらに ノードペアリング後の認可体制 を改善し、デバイスペアリングだけではノードコマンドが有効にならない仕様に。
OpenClaw は複数の実行環境(ホスト、ノード、サンドボックス)にまたがるため、各経路で実行フローが分散していた。同時にプラグイン機構の拡大に伴い、外部コードの危険性を事前検出する必要が増した。また初期ペアリングだけでノードコマンドが実行可能になるセキュリティギャップも指摘されていた。今回のリリースはこれらの課題を一括解決する破壊的変更(breaking changes)。既存自動化フローの一部で明示的なオーバーライドが必要になる可能性がある。
変更内容:
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
変更内容:
Skills/install と Plugins/install でビルトイン dangerous-code 検出--dangerously-force-unsafe-install フラグ必須影響: 既存スキルやプラグインがスキャンで危険と判定された場合、明示的に強制フラグを付けない限りインストール不可。
# 危険コードを含むプラグイン インストール(明示的に許可)
openclaw plugin install <plugin-id> --dangerously-force-unsafe-install
# 通常インストール(スキャン結果で安全と判定された場合のみ成功)
openclaw plugin install <plugin-id>
変更内容:
Gateway/node commands: ノードコマンドがペアリング承認まで無効Gateway/node events: ノード発信実行が信頼度の低い表面に制限フロー図:
flowchart TD
A["デバイス QR スキャン"] --> B["デバイスペアリング開始"]
B --> C{"ペアリング完了?"}
C -->|未承認| D["ノードコマンド: 無効"]
C -->|承認| E["管理者が<br/>ペアリング承認"]
E --> F["ノードコマンド: 有効"]
F --> G["ノード実行<br/>exec host=node 経由"]
変更内容:
推奨パス:
// 旧: レガシー方式
import { compat } from 'openclaw/plugin-sdk/compat';
// 新: 推奨パス
import { runtime } from 'openclaw/plugin-sdk';
import { api } from './api';
import { runtimeApi } from './runtime-api';
変更内容:
trusted-proxy が混在シェアトークン設定を拒否# 設定例(新仕様)
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 サーバーサポート、認証ヘッダー対応 | #50396 |
| Microsoft Teams メンバー情報 | Graph API 経由のメンバー詳細解決 | #57528 |
| WhatsApp リアクション | 絵文字リアクションによるメッセージ応答 | - |
| SlackExec 承認 | Slack ネイティブ承認ルーティング、Slack 内承認完結 | - |
■ 新機能
├ Package フィルタリング
├ Quiet hours(静止時間帯)設定
├ Rate limiting
└ より安全な Picker 動作
Issue #40175
変更:
Issue #58126
変更:
Issue #58256
graph LR
ACP["ACP 実行"] --> Central["統一された<br/>背景実行<br/>コントロールプレーン"]
SubAgent["SubAgent"] --> Central
Cron["Cron ジョブ"] --> Central
BGCli["Background CLI"] --> Central
Central --> SQLite["SQLite<br/>バックアップ台帳"]
SQLite --> Lifecycle["ライフサイクル更新<br/>監査・保守"]
変更点:
# 新コマンド例
openclaw flows list # 全タスクフロー表示
openclaw flows show <flow-id> # フロー詳細表示
openclaw flows cancel <flow-id> # フロー キャンセル
ブロック対象(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 や 不正証明書信頼を回避。
Issue #50961
# Gateway 側が rewrite しない仕様に
exec host=node --cwd /node/local/path command
# → /node/local/path で実行(Gateway FS にマッピングされない)
旧方式:
新方式:
| 承認クラス | 自動承認 | 明示承認必須 | 説明 |
|---|---|---|---|
readonly_read |
✓ | - | ファイル読取・検索 |
readonly_query |
✓ | - | データベースクエリ |
exec_capable |
- | ✓ | コマンド実行 |
control_plane |
- | ✓ | システム制御 |
# execApprovals.approvers が未設定の場合、owner から推論
execApprovals:
# approvers 未定義
# → owner の Discord/Telegram ID を自動使用
承認時間枠も 30 分に延長(Issue #57864)。
Issue: Draft 確定時の edit 失敗で retry 駆動重複返信
修正: Ambiguous edit 失敗時の再試行ロジックを修正。Retry 駆動重複を防止。
Issue #58299: Bare-object・object-ish・top-level union MCP ツール定義が OpenAI 登録で拒否
修正: WebSocket/Responses パスで MCP ツール schema を正規化。Codex など spec-compliant クライアント対応。
Issue: Announce mode で最後のチャンクのみ配信
修正: 全配信可能テキストペイロッドを保持。Telegram forum topics への多行報告完全配信。
Issue #57995: Per-DM threadReplies オーバーライド+スレッドセッション分離を実装。
Issue: インバウンド DM 署名検証なし → 偽造ペアリング要求
修正: 署名検証後にペアリング・送信者認可処理。偽造 DM イベント拒否。
# 指定なしは 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
Issue #57909:
View-only/File-only 実行で SSR preload 作業をスキップ。Render 効率化、Mode output は同期維持。
// ❌ 古い 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 でキャリー検証
# exec 設定例
tools:
exec:
host: "auto" # auto/node/sandbox/localhost
security: "sandbox" # sandbox/denyall/inherit
ask: true # 承認プロンプト表示
この記事はAI業界の最新動向を速報でお届けする「AI Heartland ニュース」です。