v2026.2.14

リリースサマリー

項目内容
リリース日2026年2月14日
主な新機能Telegramポール送信、Discord exec承認プロンプトのチャンネル配信、Sandbox browser用bind mounts設定
重要な修正メッセージ送信ハング修正、メモリリーク対策(長時間稼働時)、多数のセキュリティ強化
対象チャンネルTelegram、Slack、Discord、WhatsApp、LINE、BlueBubbles
破壊的変更Telegram allowlistでユーザー名禁止(数値IDのみ)、LanceDB autoCapture デフォルト無効化
推奨度⭐⭐⭐⭐ セキュリティ強化多数、長時間稼働環境では特に推奨

アップデートすべき?

  • Telegramでポール(投票)機能を使いたい人 → 推奨。ポール送信がサポートされました
  • 長時間Gatewayを稼働させている人 → 強く推奨。メモリリークとキャッシュ肥大化の修正により、長期稼働時の安定性が向上
  • セキュリティを重視する人 → 強く推奨。SSRF対策、ローカルファイル開示対策、パストラバーサル対策など多数のセキュリティ強化
  • openclaw message sendがハングする問題に困っていた人 → 推奨。プラグインバックエンドチャンネルでのワンショット送信のハングが修正されました
  • 上記に該当しない人 → 多数の細かい修正が含まれているため、タイミングを見てアップデート推奨

詳細

2026年2月14日にリリースされたv2026.2.14では、Telegramポール送信、Discord exec承認プロンプトのチャンネル配信対応、多数のセキュリティ強化、そして長時間稼働時のメモリリーク対策が行われました。

新機能

Telegramポール(投票)送信対応

Telegramチャンネルでポール(投票)を送信できるようになりました。投票期間、サイレント配信、匿名投票の制御に対応しています。

openclaw message poll --target telegram:channel-id \
  --poll-question "好きな果物は?" \
  --poll-option "りんご" --poll-option "バナナ" --poll-option "オレンジ" \
  --poll-duration-hours 24 --poll-multi --silent

💡 ポイント: コミュニティの意見収集や簡易アンケートに便利です。複数選択や匿名投票にも対応しています。

Slack/Discord: dmPolicy + allowFrom config エイリアス追加

DM(ダイレクトメッセージ)のアクセス制御設定に、新しいエイリアスが追加されました。従来のdm.policydm.allowFromキーは引き続きサポートされますが、dmPolicyallowFromという短縮形が利用可能になりました。

channels:
  slack:
    dmPolicy: allowlist
    allowFrom:
      - U01234567

openclaw doctor --fixで自動的に新しい形式にマイグレーションできます。

Discord: exec承認プロンプトのチャンネル配信対応

Discordで、exec承認プロンプトをDM、特定チャンネル、またはDM+チャンネルの両方に送信する設定が可能になりました。

channels:
  discord:
    execApprovals:
      target: channel  # または "dm" / "both"
      channelId: "1234567890"

💡 ポイント: チーム運用で承認プロセスを可視化したい場合、専用チャンネルに承認プロンプトを集約できます。

Sandbox: browser用のbind mounts設定

Sandbox環境で、browser用のbind mountsをexecコンテナと別に設定できるようになりました。

sandbox:
  browser:
    binds:
      - /host/path:/container/path:ro

💡 ポイント: execとbrowserで異なるファイルシステム構成が必要な場合に便利です。

Discord: デバッグログ追加

Discordメッセージルーティングの判断ロジックに詳細なデバッグログが追加され、--debugオプションでのトレースが改善されました。

重要な修正

openclaw message sendのワンショット送信ハング修正

プラグインバックエンドチャンネル(WhatsApp、LINE、BlueBubblesなど)で、openclaw message sendがメッセージ送信後にハングする問題が修正されました。送信成功後に正しく終了するようになります。

💡 ポイント: CIスクリプトやcronジョブからのワンショット送信がスムーズになります。

プラグインのgateway_stopフック実行

openclaw messageの終了時に、プラグインのgateway_stopフックが正しく実行されるようになり、ワンショットCLI実行時のリソースクリーンアップが改善されました。

長時間稼働時のメモリリーク対策(重要)

長時間Gatewayを稼働させた際のメモリリークとキャッシュ肥大化に対する修正が多数行われました:

  • Diagnostics/Memory: 古い診断セッションステートのプルーニング
  • Gateway/Memory: agentRunSeqトラッキングのクリーンアップとキャップ制限
  • Auto-reply/Memory: ABORT_MEMORYの無制限増加防止
  • Slack/Memory: スレッドキャッシュのTTL+最大サイズ制限
  • Outbound/Memory: ディレクトリキャッシュの最大サイズ制限とTTLプルーニング
  • Skills/Memory: 切断されたノードのリモートスキルキャッシュからの削除

💡 ポイント: 長期稼働環境での安定性が大幅に向上します。週単位で稼働させる場合は、このアップデートを強く推奨します。

LINEのVerifyリクエスト対応

LINE Developers Consoleからの「Verify」リクエスト({"events":[]}の空リクエスト)に対して、X-Line-Signatureなしでも200 OKを返すようになりました。実際の配信では引き続きシグネチャ検証が行われます。

Cronジョブの配信改善

delivery.to設定時に、サマリーではなくフルテキスト出力が配信されるようになりました。また、Slackへの配信時にエージェントのidentity(名前とアイコン)が保持されます。

Media: MEDIA:パスのスペース許容

MEDIA:プレフィックス付きパスで、空白文字を含むパスが正しく処理されるようになりました。

Agents: ツール結果メディアの配信改善

ツール結果のメディア(スクリーンショット、画像、音声)が、verboseレベルに関係なく常にチャンネルに配信されるようになりました。

Agents/Image tool: ワークスペースローカル画像パス許可

Image toolで、ワークスペース内のローカル画像パスが正しく受け付けられるようになりました。従来は「許可されたディレクトリ外」として拒否される場合がありました。

BlueBubbles: グループチャットの送信者identity

BlueBubblesのグループチャットで、送信者のidentityがエージェントプロンプトに正しく渡されるようになり、iMessage/Signalと同様のフォーマットに統一されました。

セキュリティ強化(多数)

このリリースでは、多数のセキュリティ強化が行われました。主なものは以下の通りです:

SSRF(サーバーサイドリクエストフォージェリ)対策

  • Discord: ボイスメッセージメディアロードのSSRF対策
  • Feishu: メディアURL取得のSSRF対策とローカルファイル開示対策
  • Security/Net: IPv4マップIPv6リテラルを使ったSSRFガードバイパスの修正
  • Security/Tlon: Urbit URL取得のSSRF対策(デフォルトでプライベートネットワークブロック)

ローカルファイル開示対策

  • Media/Security: ワークスペースとサンドボックスルートからの安全なメディア読み込み
  • Security/BlueBubbles: ローカルメディアパス読み込みの明示的なallowlist必須化
  • Security/Browser: ブラウザコントロールのファイルアップロード/ダウンロードのパストラバーサル対策

パストラバーサル対策

  • Security/Signal: signal-cliアーカイブ解凍時のパストラバーサル対策
  • Security/Hooks: フックtransformモジュールのパストラバーサル対策
  • Security/Skills: スキルダウンロード時のアーカイブ解凍のパストラバーサル対策
  • Security/Agents: apply_patchのワークスペースルートバウンド強制とシンボリックリンクエスケープ対策

認証・アクセス制御強化

  • Telegram/Security: allowlist認証で数値IDのみ受け入れ(@usernameは拒否)。openclaw doctor --fixで@usernameを数値IDに自動解決可能。openclaw security auditで警告表示。
  • Telegram/Security: webhookSecretの必須化(空の場合は起動拒否)
  • Security/Slack: DM slash commandsの認証計算(dmPolicy=openでも権限チェック実施)
  • Security/Voice Call (Telnyx): webhook署名検証の必須化
  • Security/Voice Call (Twilio): ngrok loopback互換モード有効時でも署名検証必須化

その他のセキュリティ強化

  • Security/Archive: ZIP/TARアーカイブの解凍時のエントリ/サイズ制限(リソース枯渇攻撃対策)
  • Security/Media: base64入力メディアの過大サイズ拒否(デコード前チェック)
  • Security/Media: URL入力メディアのストリーミング+サイズ制限(メモリ枯渇対策)
  • Security/Windows: 子プロセス起動時のシェル呼び出し回避(cmd.exeメタキャラクタインジェクション対策)
  • Security/Agents (macOS): Claude CLIキーチェーン認証情報書き込み時のシェルインジェクション防止
  • Security/Memory-LanceDB: メモリをuntrustedコンテキストとして扱う(エスケープ+非命令フレーミング)、プロンプトインジェクションペイロードの自動キャプチャスキップ、autoCapture範囲をユーザーメッセージのみに制限
  • Security/Memory-LanceDB: autoCaptureのデフォルト無効化(明示的なautoCapture: trueが必要)

💡 ポイント: 特にTelegramのallowlist設定で@usernameを使用している場合は、openclaw doctor --fixで数値IDに移行してください。LanceDB autoCapture機能を使用している場合は、アップデート後に明示的に有効化が必要です。

チャンネル別の修正

WhatsApp

  • アカウント単位のdmPolicyオーバーライドが尊重されるようになりました(アカウントレベル設定がチャンネルデフォルトより優先)

Telegram

  • channels.telegram.commands.nativeがfalseの場合、プラグインコマンドがsetMyCommandsメニュー登録から除外されるようになりました(スラッシュハンドラは引き続き呼び出し可能)
  • webhookコールバックタイムアウト処理をonTimeout: "return"(10秒)に設定し、長時間の更新処理でwebhook 500エラーやリトライストームが発生しないようになりました

Signal

  • 大文字小文字を区別するgroup:ターゲットIDの正規化が保持されるようになり、大文字小文字混在のグループIDで「Group not found」エラーが発生しなくなりました

Discord

  • 空のchannels: {}設定マップを「チャンネルallowlistなし」として扱う(全拒否ではない)ようになり、groupPolicy: "open"のギルドが引き続きメッセージを受信できるようになりました
  • キャッシュミスギルドがguild=dmと表示されないように、inboundメッセージログでgateway guild idが優先されるようになりました

Ollama

  • Ollamaモデルでタグ強制が無効化され、(no output)として出力が抑制されなくなりました

TUI(ターミナルUI)

  • セッション名表示に利用可能なターミナル幅を使用
  • バイナリ添付履歴でのクラッシュ防止(ANSI/制御文字サニタイズ、バイナリ風行の除外)
  • 狭いターミナルでのレンダリングサニタイザ強化
  • Solarized Lightなどのライトテーマで読みやすいようにデフォルト前景色でレンダリング
  • 同時実行run finalize時のストリーミング返信保持
  • プロバイダ失敗時の空ストリームをタイムアウトクラスのフェイルオーバーシグナルとして扱う
  • gateway.bind=lan時にlocalhost dashboard URLを生成(ブラウザのsecure-context要件を満たす)
  • 明示的な--session指定時にsession.scope=globalでもセッション分離を尊重

Cron

  • 起動時に実行中断されたジョブ(古いrunningAtMsマーカー)のミスジョブリプレイをスキップし、self-restartジョブの再起動ループを防止
  • cron update時に更新ジョブの欠損/破損したnextRunAtMsを修復(無関係な期日ジョブのグローバル再計算なし)
  • cron list/statusが過去期日の定期ジョブを無視しないように修正

Memory/QMD

  • 複数コレクションクエリランキング破損を回避(コレクションごとに1つのqmd query -cを実行し、最高スコアでマージ)
  • null-byte ENOTDIR更新失敗を検出し、管理コレクションを一度再構築して更新を再試行(破損したコレクションメタデータの自己修復)
  • スコープルールにrawKeyPrefixサポート追加、レガシーkeyPrefix: "agent:..."マッチング保持
  • QMDコマンド出力バッファリングのキャップ(メモリ枯渇防止)
  • qmdスコープキーの1リクエストあたり1回パース
  • プレフィックスルックアップフォールバックの前に正確なdocidマッチでQMDインデックスをクエリ

Memory/Builtin

  • markdown globsに絞り込み、依存/venvディレクトリを無視してファイルディスクリプタ圧力を軽減

詳細なchangelogは公式CHANGELOGリポジトリを参照してください。