Matrix
Matrix は OpenClaw 用の Matrix バンドル済みチャネルプラグインです。 公式のmatrix-js-sdk を使用し、DM、ルーム、スレッド、メディア、リアクション、投票、位置情報、E2EE をサポートします。
バンドル済みプラグイン
Matrix は現在の OpenClaw リリースではバンドル済みプラグインとして提供されるため、通常の パッケージ済みビルドでは別途インストールは不要です。 古いビルド、または Matrix を含まないカスタムインストールを使用している場合は、手動で インストールしてください。 npm からインストール:セットアップ
- Matrix プラグインが利用可能であることを確認します。
- 現在のパッケージ済み OpenClaw リリースにはすでに同梱されています。
- 古い / カスタムインストールでは、上記のコマンドで手動追加できます。
- homeserver 上で Matrix アカウントを作成します。
channels.matrixを以下のいずれかで設定します。homeserver+accessTokenhomeserver+userId+password
- Gateway を再起動します。
- ボットとの DM を開始するか、ルームに招待します。
- homeserver URL
- 認証方式: アクセストークンまたはパスワード
- パスワード認証を選んだ場合のみユーザー ID
- 任意のデバイス名
- E2EE を有効にするかどうか
- Matrix ルームアクセスを今すぐ設定するかどうか
- 選択したアカウントに対応する Matrix 認証環境変数がすでに存在し、そのアカウントの認証情報がまだ config に保存されていない場合、ウィザードは環境変数ショートカットを提示し、そのアカウントには
enabled: trueだけを書き込みます。 - 別の Matrix アカウントを対話的に追加すると、入力したアカウント名は config と env vars で使われるアカウント ID に正規化されます。たとえば、
Ops Botはops-botになります。 - DM allowlist のプロンプトでは、完全な
@user:server値をそのまま受け付けます。表示名が使えるのは、ライブディレクトリ参照で 1 件だけ完全一致した場合のみです。それ以外では、完全な Matrix ID を使って再入力するようウィザードが求めます。 - ルーム allowlist のプロンプトでは、ルーム ID とエイリアスをそのまま受け付けます。また、参加済みルーム名をライブで解決することもできますが、解決できなかった名前はセットアップ中に入力された文字列のまま保持されるだけで、後でランタイムの allowlist 解決では無視されます。
!room:serverまたは#alias:serverを推奨します。 - ランタイムのルーム / セッション識別には安定した Matrix ルーム ID を使います。ルームに定義されたエイリアスは参照入力としてのみ使われ、長期的なセッションキーや安定したグループ識別子としては使われません。
- 保存前にルーム名を解決するには、
openclaw channels resolve --channel matrix "Project Room"を使ってください。
~/.openclaw/credentials/matrix/ に保存します。
デフォルトアカウントは credentials.json を使い、名前付きアカウントは credentials-<account>.json を使います。
対応する環境変数(config キーが設定されていない場合に使用):
MATRIX_HOMESERVERMATRIX_ACCESS_TOKENMATRIX_USER_IDMATRIX_PASSWORDMATRIX_DEVICE_IDMATRIX_DEVICE_NAME
MATRIX_<ACCOUNT_ID>_HOMESERVERMATRIX_<ACCOUNT_ID>_ACCESS_TOKENMATRIX_<ACCOUNT_ID>_USER_IDMATRIX_<ACCOUNT_ID>_PASSWORDMATRIX_<ACCOUNT_ID>_DEVICE_IDMATRIX_<ACCOUNT_ID>_DEVICE_NAME
ops の例:
MATRIX_OPS_HOMESERVERMATRIX_OPS_ACCESS_TOKEN
ops-bot では、以下を使います。
MATRIX_OPS_X2D_BOT_HOMESERVERMATRIX_OPS_X2D_BOT_ACCESS_TOKEN
- は _X2D_ になるため、ops-prod は MATRIX_OPS_X2D_PROD_* に対応します。
対話型ウィザードは、それらの認証環境変数がすでに存在し、かつ選択されたアカウントに Matrix 認証がまだ config に保存されていない場合にのみ、env-var ショートカットを提示します。
設定例
これは DM ペアリング、ルーム allowlist、E2EE 有効化を含む実用的なベースライン設定です。ストリーミングプレビュー
Matrix の返信ストリーミングはオプトインです。channels.matrix.streaming を "partial" に設定すると、OpenClaw は 1 つの下書き返信を送信し、
モデルがテキストを生成している間はその下書きをその場で編集し、返信が
完了したら最終化します。
streaming: "off"がデフォルトです。OpenClaw は最終返信を待って 1 回だけ送信します。streaming: "partial"は、複数の部分メッセージを送る代わりに、現在の assistant ブロック用の編集可能なプレビューメッセージを 1 つ作成します。blockStreaming: trueを指定すると、Matrix で別個の進行メッセージを有効にします。streaming: "partial"と組み合わせると、Matrix は現在のブロック用のライブ下書きを維持しつつ、完了済みブロックを別メッセージとして残します。streaming: "partial"かつblockStreamingがオフの場合、Matrix はライブ下書きだけを編集し、そのブロックまたはターンが終了した時点で完了済み返信を 1 回送信します。- プレビューが 1 つの Matrix イベントに収まらなくなった場合、OpenClaw はプレビューのストリーミングを停止し、通常の最終配信にフォールバックします。
- メディア返信は通常どおり添付ファイルを送信します。古いプレビューを安全に再利用できなくなった場合、OpenClaw は最終メディア返信を送る前にそれを redact します。
- プレビュー編集には追加の Matrix API 呼び出しが必要です。もっとも保守的なレート制限挙動を望む場合は、ストリーミングをオフのままにしてください。
blockStreaming だけでは下書きプレビューは有効になりません。
プレビュー編集には streaming: "partial" を使い、完了した assistant ブロックも別々の進行メッセージとして見せたい場合にのみ、さらに blockStreaming: true を追加してください。
暗号化と検証
暗号化された(E2EE)ルームでは、送信画像イベントはthumbnail_file を使用するため、画像プレビューは完全な添付ファイルと一緒に暗号化されます。暗号化されていないルームでは引き続き通常の thumbnail_url を使います。設定は不要です。プラグインが E2EE 状態を自動検出します。
Bot 間ルーム
デフォルトでは、他の設定済み OpenClaw Matrix アカウントからの Matrix メッセージは無視されます。 エージェント間 Matrix トラフィックを意図的に許可したい場合はallowBots を使ってください。
allowBots: trueは、許可されたルームおよび DM 内で、他の設定済み Matrix bot アカウントからのメッセージを受け入れます。allowBots: "mentions"は、ルーム内ではそのようなメッセージがこの bot に明示的にメンションしている場合にのみ受け入れます。DM は引き続き許可されます。groups.<room>.allowBotsは、1 つのルームに対してアカウントレベル設定を上書きします。- OpenClaw は自己返信ループを避けるため、同じ Matrix user ID からのメッセージは引き続き無視します。
- Matrix にはここで使えるネイティブの bot フラグはありません。OpenClaw は「bot-authored」を「この OpenClaw Gateway 上の別の設定済み Matrix アカウントによって送信されたもの」として扱います。
channels.matrix.accounts を使用し、アカウントごとの認証情報と任意の name を設定します。共通パターンについては Configuration reference を参照してください。
bootstrap の詳細診断:
verify コマンドはデフォルトで簡潔な出力です(内部 SDK ログも quiet を含む)であり、詳細診断は --verbose を付けた場合のみ表示されます。
スクリプトで使う場合は、完全な機械可読出力のために --json を使ってください。
マルチアカウント構成では、--account <id> を渡さない限り、Matrix CLI コマンドは暗黙の Matrix デフォルトアカウントを使います。
複数の名前付きアカウントを設定している場合、まず channels.matrix.defaultAccount を設定してください。そうしないと、そのような暗黙の CLI 操作は停止してアカウントを明示選択するよう求めます。
検証やデバイス操作を明示的に名前付きアカウントに向けたい場合は、--account を使ってください。
channels.matrix.accounts.assistant.encryption を指します。
「verified」の意味
OpenClaw は、この Matrix デバイスが自分自身のクロスサイニング ID によって検証されている場合にのみ、verified として扱います。 実際には、openclaw matrix verify status --verbose は 3 つの信頼シグナルを表示します。
Locally trusted: このデバイスは現在のクライアントでのみ信頼されていますCross-signing verified: SDK が、このデバイスがクロスサイニングによって検証されたと報告していますSigned by owner: このデバイスが自分自身の self-signing key によって署名されています
Verified by owner は、クロスサイニング検証または owner-signing がある場合にのみ yes になります。
ローカル信頼だけでは、OpenClaw はそのデバイスを完全に検証済みとは扱いません。
bootstrap が行うこと
openclaw matrix verify bootstrap は、暗号化された Matrix アカウントの修復とセットアップを行うコマンドです。
以下を順番に実行します。
- 可能であれば既存の recovery key を再利用しながら secret storage を bootstrap
- クロスサイニングを bootstrap し、不足している公開クロスサイニングキーをアップロード
- 現在のデバイスにマークを付け、クロスサインすることを試行
- サーバー側のルームキーバックアップがまだ存在しない場合は新規作成
m.login.dummy、さらに channels.matrix.password が設定されている場合は m.login.password を試します。
現在のクロスサイニング ID を破棄して新しく作り直したい場合にのみ、--force-reset-cross-signing を使ってください。
現在のルームキーバックアップを意図的に破棄し、今後のメッセージ向けに新しい
バックアップベースラインを開始したい場合は、openclaw matrix verify backup reset --yes を使ってください。
これは、復元不能な古い暗号化履歴が引き続き利用不可のままになることと、
現在のバックアップ secret を安全に読み込めない場合に OpenClaw が secret storage を再作成する可能性があることを受け入れる場合にのみ実行してください。
新しいバックアップベースライン
今後の暗号化メッセージを正常に保ちつつ、復元不能な古い履歴を失うことを受け入れる場合は、以下のコマンドを順に実行してください。--account <id> を追加してください。
起動時の挙動
encryption: true の場合、Matrix は startupVerification のデフォルトを "if-unverified" にします。
起動時、このデバイスがまだ未検証であれば、Matrix は別の Matrix クライアントで自己検証を要求し、
すでに保留中の要求がある間は重複要求をスキップし、再起動後の再試行前にローカルクールダウンを適用します。
要求作成に成功した場合よりも、要求試行の失敗のほうがデフォルトでは早く再試行されます。
起動時の自動要求を無効にするには startupVerification: "off" を設定するか、より短い / 長い再試行間隔が必要な場合は startupVerificationCooldownHours
を調整してください。
起動時には保守的な crypto bootstrap パスも自動実行されます。
このパスはまず現在の secret storage とクロスサイニング ID の再利用を試み、明示的な bootstrap 修復フローを実行しない限りクロスサイニングのリセットを避けます。
起動時に壊れた bootstrap 状態が見つかり、channels.matrix.password が設定されている場合、OpenClaw はより厳格な修復パスを試行できます。
現在のデバイスがすでに owner-signed であれば、OpenClaw はそれを自動リセットせず、その ID を保持します。
以前の公開 Matrix プラグインからのアップグレード:
- OpenClaw は、可能であれば同じ Matrix アカウント、アクセストークン、デバイス ID を自動で再利用します。
- 実行可能な Matrix 移行変更が走る前に、OpenClaw は
~/Backups/openclaw-migrations/配下に recovery snapshot を作成または再利用します。 - 複数の Matrix アカウントを使っている場合、古いフラットストア構成からアップグレードする前に
channels.matrix.defaultAccountを設定してください。これにより、その共有されたレガシー状態をどのアカウントが受け取るべきか OpenClaw が判断できます。 - 以前のプラグインが Matrix のルームキーバックアップ復号キーをローカル保存していた場合、起動時または
openclaw doctor --fixがそれを新しい recovery-key フローへ自動インポートします。 - 移行準備後に Matrix アクセストークンが変更された場合、起動時は自動バックアップ復元を諦める前に、保留中のレガシー復元状態を探すために兄弟のトークンハッシュ保存ルートをスキャンします。
- 同じアカウント、homeserver、ユーザーに対して後で Matrix アクセストークンが変わった場合、OpenClaw は空の Matrix 状態ディレクトリから始めるのではなく、もっとも完全な既存のトークンハッシュ保存ルートの再利用を優先します。
- 次回 Gateway 起動時に、バックアップされたルームキーが新しい crypto store へ自動復元されます。
- 古いプラグインにローカル専用で未バックアップのルームキーがあった場合、OpenClaw は明確に警告します。それらのキーは以前の rust crypto store から自動エクスポートできないため、一部の古い暗号化履歴は手動回復されるまで利用不可のままになる可能性があります。
- 完全なアップグレード手順、制限、回復コマンド、一般的な移行メッセージについては Matrix migration を参照してください。
~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/
配下に整理されます。
そのディレクトリには、sync store(bot-storage.json)、crypto store(crypto/)、
recovery key ファイル(recovery-key.json)、IndexedDB スナップショット(crypto-idb-snapshot.json)、
thread bindings(thread-bindings.json)、起動時検証状態(startup-verification.json)
が、それらの機能使用時に含まれます。
トークンが変わってもアカウント ID が同じであれば、OpenClaw はそのアカウント / homeserver / ユーザー組み合わせに対して最良の既存
ルートを再利用するため、以前の sync 状態、crypto 状態、thread bindings、
起動時検証状態はそのまま見える状態で保たれます。
Node crypto store モデル
このプラグインの Matrix E2EE は、Node 上で公式matrix-js-sdk の Rust crypto パスを使います。
このパスでは、crypto 状態を再起動後も保持したい場合、IndexedDB ベースの永続化が必要です。
OpenClaw は現在、Node 上でこれを以下の方法で提供しています。
- SDK が期待する IndexedDB API shim として
fake-indexeddbを使用 initRustCryptoの前にcrypto-idb-snapshot.jsonから Rust crypto IndexedDB の内容を復元- init 後およびランタイム中に、更新された IndexedDB 内容を
crypto-idb-snapshot.jsonへ永続化 - Gateway ランタイムの永続化と CLI メンテナンスが同じスナップショットファイル上で競合しないよう、advisory file lock を使って
crypto-idb-snapshot.jsonに対するスナップショット復元と永続化を直列化
- 永続的な Matrix キーマテリアルに対する SecretRef サポートを追加し、recovery key や関連する store 暗号化シークレットを、ローカルファイルだけでなく OpenClaw シークレットプロバイダーから供給できるようにする
プロフィール管理
選択したアカウントの Matrix 自己プロフィールを更新するには、以下を使用します。--account <id> を追加してください。
Matrix は mxc:// アバター URL を直接受け付けます。http:// または https:// のアバター URL を渡した場合、OpenClaw はまずそれを Matrix にアップロードし、解決済みの mxc:// URL を channels.matrix.avatarUrl(または選択したアカウントの上書き設定)に保存します。
自動検証通知
Matrix は現在、検証ライフサイクル通知を厳格な DM 検証ルームへm.notice メッセージとして直接投稿します。
これには以下が含まれます。
- 検証要求通知
- 検証準備完了通知(明示的な「絵文字で検証」ガイダンス付き)
- 検証開始および完了通知
- 利用可能な場合の SAS 詳細(絵文字と 10 進数)
NO_REPLY は生成されません。
デバイス衛生
OpenClaw が管理する古い Matrix デバイスがアカウントに蓄積し、暗号化ルームの信頼性が把握しにくくなることがあります。 一覧表示するには:ダイレクトルーム修復
ダイレクトメッセージ状態の同期が崩れると、OpenClaw に古い 1 対 1 ルームを指す古いm.direct マッピングが残り、ライブ DM を指さなくなることがあります。特定の peer に対する現在のマッピングを確認するには:
- まず
m.directにすでにマッピングされている厳密な 1:1 DM を優先します - それがなければ、そのユーザーとの現在参加中の厳密な 1:1 DM にフォールバックします
- 健全な DM が存在しなければ、新しいダイレクトルームを作成し、
m.directを書き換えてそこを指すようにします
スレッド
Matrix は、自動返信とメッセージツール送信の両方でネイティブ Matrix スレッドをサポートします。threadReplies: "off"は返信をトップレベルに維持し、受信したスレッド付きメッセージも親セッション上に維持します。threadReplies: "inbound"は、受信メッセージがすでにそのスレッド内にあった場合にのみ、そのスレッド内で返信します。threadReplies: "always"は、ルーム返信をトリガーメッセージをルートとするスレッド内に保持し、その会話を最初のトリガーメッセージから対応するスレッドスコープのセッションにルーティングします。dm.threadRepliesは DM 専用でトップレベル設定を上書きします。たとえば、ルームスレッドは分離したまま、DM はフラットに保つことができます。- 受信スレッドメッセージには、追加のエージェントコンテキストとしてスレッドルートメッセージが含まれます。
- メッセージツール送信は、ターゲットが同じルームまたは同じ DM ユーザーターゲットであれば、明示的な
threadIdが指定されない限り、現在の Matrix スレッドを自動継承するようになりました。 - Matrix ではランタイム thread bindings がサポートされます。
/focus、/unfocus、/agents、/session idle、/session max-age、およびスレッドにバインドされた/acp spawnが Matrix ルームと DM で動作するようになりました。 - トップレベルの Matrix ルーム / DM で
/focusを実行すると、threadBindings.spawnSubagentSessions=trueの場合、新しい Matrix スレッドを作成し、それを対象セッションへバインドします。 - 既存の Matrix スレッド内で
/focusまたは/acp spawn --thread hereを実行した場合は、その現在のスレッドが代わりにバインドされます。
ACP 会話バインディング
Matrix のルーム、DM、既存の Matrix スレッドは、チャット画面を変えずに永続的な ACP ワークスペースへ変換できます。 すばやいオペレーターフロー:- 使い続けたい Matrix DM、ルーム、または既存スレッド内で
/acp spawn codex --bind hereを実行します。 - トップレベルの Matrix DM またはルームでは、現在の DM / ルームがそのままチャット画面として維持され、今後のメッセージは起動された ACP セッションへルーティングされます。
- 既存の Matrix スレッド内では、
--bind hereはその現在のスレッドをその場でバインドします。 /newと/resetは、同じバインド済み ACP セッションをその場でリセットします。/acp closeは ACP セッションを閉じ、バインディングを削除します。
--bind hereは子 Matrix スレッドを作成しません。threadBindings.spawnAcpSessionsは、OpenClaw が子 Matrix スレッドを作成またはバインドする必要がある/acp spawn --thread auto|hereの場合にのみ必要です。
スレッドバインディング設定
Matrix はsession.threadBindings からグローバルデフォルトを継承し、チャネルごとの上書きもサポートします。
threadBindings.enabledthreadBindings.idleHoursthreadBindings.maxAgeHoursthreadBindings.spawnSubagentSessionsthreadBindings.spawnAcpSessions
- トップレベルの
/focusが新しい Matrix スレッドを作成してバインドできるようにするには、threadBindings.spawnSubagentSessions: trueを設定します。 /acp spawn --thread auto|hereが ACP セッションを Matrix スレッドへバインドできるようにするには、threadBindings.spawnAcpSessions: trueを設定します。
リアクション
Matrix は、送信リアクションアクション、受信リアクション通知、受信 ack リアクションをサポートします。- 送信リアクションツールは
channels["matrix"].actions.reactionsによって制御されます。 reactは特定の Matrix イベントにリアクションを追加します。reactionsは特定の Matrix イベントに対する現在のリアクション要約を一覧表示します。emoji=""は、そのイベント上の bot アカウント自身のリアクションを削除します。remove: trueは、bot アカウントの指定された絵文字リアクションだけを削除します。
channels["matrix"].accounts.<accountId>.ackReactionchannels["matrix"].ackReactionmessages.ackReaction- エージェント ID の絵文字フォールバック
channels["matrix"].accounts.<accountId>.ackReactionScopechannels["matrix"].ackReactionScopemessages.ackReactionScope
channels["matrix"].accounts.<accountId>.reactionNotificationschannels["matrix"].reactionNotifications- デフォルト:
own
reactionNotifications: "own"は、bot-authored の Matrix メッセージを対象にした追加済みm.reactionイベントを転送します。reactionNotifications: "off"はリアクションシステムイベントを無効にします。- リアクション削除は、Matrix では独立した
m.reaction削除ではなく redaction として表現されるため、依然としてシステムイベントには合成されません。
履歴コンテキスト
channels.matrix.historyLimitは、Matrix ルームメッセージがエージェントをトリガーしたときにInboundHistoryとして含める最近のルームメッセージ数を制御します。- これは
messages.groupChat.historyLimitにフォールバックします。無効にするには0を設定します。 - Matrix ルーム履歴はルーム専用です。DM は通常のセッション履歴を使い続けます。
- Matrix ルーム履歴は pending-only です。OpenClaw はまだ返信をトリガーしていないルームメッセージをバッファし、メンションやその他のトリガーが到着したときにそのウィンドウをスナップショットします。
- 現在のトリガーメッセージは
InboundHistoryには含まれず、そのターンのメイン受信本文に残ります。 - 同じ Matrix イベントの再試行では、新しいルームメッセージへ前進してずれるのではなく、元の履歴スナップショットが再利用されます。
コンテキスト可視性
Matrix は、取得した返信テキスト、スレッドルート、pending 履歴などの補足ルームコンテキストに対して、共通のcontextVisibility 制御をサポートします。
contextVisibility: "all"がデフォルトです。補足コンテキストは受信したまま保持されます。contextVisibility: "allowlist"は、補足コンテキストを、現在有効なルーム / ユーザー allowlist チェックで許可された送信者に限定します。contextVisibility: "allowlist_quote"はallowlistと同様ですが、1 つの明示的な引用返信は保持します。
groupPolicy、groups、groupAllowFrom、DM policy 設定から決まります。
DM とルームポリシーの例
Exec 承認
Matrix は Matrix アカウント用の exec 承認クライアントとして動作できます。channels.matrix.execApprovals.enabledchannels.matrix.execApprovals.approvers(任意。channels.matrix.dm.allowFromにフォールバック)channels.matrix.execApprovals.target(dm|channel|both、デフォルト:dm)channels.matrix.execApprovals.agentFilterchannels.matrix.execApprovals.sessionFilter
@owner:example.org のような Matrix user ID である必要があります。enabled が未設定または "auto" で、execApprovals.approvers または channels.matrix.dm.allowFrom から少なくとも 1 人の承認者を解決できる場合、Matrix はネイティブ exec 承認を自動有効化します。Matrix をネイティブ承認クライアントとして明示的に無効にするには enabled: false を設定してください。それ以外では、承認要求は他の設定済み承認ルートまたは exec 承認フォールバックポリシーへフォールバックします。
ネイティブ Matrix ルーティングは現在 exec 専用です。
channels.matrix.execApprovals.*は、exec 承認専用のネイティブ DM / チャネルルーティングを制御します。- プラグイン承認は引き続き共通の同一チャット
/approveと、設定済みならapprovals.plugin転送を使います。 - Matrix は、承認者を安全に推測できる場合には、プラグイン承認認可のために
channels.matrix.dm.allowFromを再利用できますが、ネイティブのプラグイン承認 DM / チャネル配信パスは別途公開しません。
target: "dm"は承認プロンプトを承認者 DM に送信しますtarget: "channel"はプロンプトを発信元の Matrix ルームまたは DM に送り返しますtarget: "both"は承認者 DM と発信元の Matrix ルームまたは DM の両方に送信します
/approve <id> allow-once、/approve <id> allow-always、または /approve <id> deny で処理します。
承認または拒否できるのは解決済み承認者だけです。チャネル配信ではコマンドテキストも含まれるため、channel または both は信頼できるルームでのみ有効にしてください。
Matrix 承認プロンプトは共通のコア承認プランナーを再利用します。Matrix 固有のネイティブ画面は exec 承認のトランスポートのみです。つまり、ルーム / DM ルーティングとメッセージ送信 / 更新 / 削除の挙動だけを担当します。
アカウントごとの上書き:
channels.matrix.accounts.<account>.execApprovals
マルチアカウントの例
channels.matrix 値は、アカウント側で上書きされない限り、名前付きアカウントのデフォルトとして機能します。
継承されたルームエントリーを 1 つの Matrix アカウントに限定するには、groups.<room>.account(またはレガシーの rooms.<room>.account)を使えます。
account を持たないエントリーはすべての Matrix アカウントで共有され、account: "default" を持つエントリーも、デフォルトアカウントがトップレベル channels.matrix.* で直接設定されている場合には引き続き動作します。
部分的な共有認証デフォルトだけでは、それ自体で別個の暗黙的デフォルトアカウントは作成されません。OpenClaw は、そのデフォルトに新しい認証情報(homeserver + accessToken、または homeserver + userId と password)がある場合にのみ、トップレベルの default アカウントを合成します。名前付きアカウントは、後でキャッシュ済み認証情報が認証要件を満たす場合、homeserver + userId から引き続き検出可能です。
Matrix にすでにちょうど 1 つの名前付きアカウントがある場合、または defaultAccount が既存の名前付きアカウントキーを指している場合、単一アカウントからマルチアカウントへの修復 / セットアップ昇格では、新しい accounts.default エントリーを作らず、そのアカウントを維持します。昇格先アカウントへ移動するのは Matrix 認証 / bootstrap キーだけであり、共有配信ポリシーキーはトップレベルに残ります。
OpenClaw に暗黙ルーティング、プローブ、CLI 操作で優先する名前付き Matrix アカウントを持たせたい場合は、defaultAccount を設定してください。
複数の名前付きアカウントを設定している場合は、暗黙のアカウント選択に依存する CLI コマンドで defaultAccount を設定するか、--account <id> を渡してください。
その暗黙選択を 1 つのコマンドだけで上書きしたい場合は、openclaw matrix verify ... と openclaw matrix devices ... に --account <id> を渡してください。
プライベート / LAN homeserver
デフォルトでは、SSRF 保護のため、OpenClaw はプライベート / 内部 Matrix homeserver への接続をブロックします。ただし、 アカウント単位で明示的にオプトインした場合は除きます。 homeserver が localhost、LAN/Tailscale IP、または内部ホスト名で動作している場合は、 その Matrix アカウントに対してallowPrivateNetwork を有効にしてください。
http://matrix.example.org:8008 のような
公開クリアテキスト homeserver は引き続きブロックされます。可能であれば https:// を推奨します。
Matrix トラフィックのプロキシ
Matrix デプロイメントで明示的な送信 HTTP(S) プロキシが必要な場合は、channels.matrix.proxy を設定してください。
channels.matrix.accounts.<id>.proxy でトップレベルデフォルトを上書きできます。
OpenClaw は、ランタイム Matrix トラフィックとアカウント状態プローブの両方に同じプロキシ設定を使います。
ターゲット解決
Matrix は、OpenClaw がルームまたはユーザーターゲットを求めるあらゆる場面で、以下のターゲット形式を受け付けます。- ユーザー:
@user:server,user:@user:server, またはmatrix:user:@user:server - ルーム:
!room:server,room:!room:server, またはmatrix:room:!room:server - エイリアス:
#alias:server,channel:#alias:server, またはmatrix:channel:#alias:server
- ユーザー参照は、その homeserver の Matrix ユーザーディレクトリに問い合わせます。
- ルーム参照は、明示的なルーム ID とエイリアスを直接受け付けたうえで、そのアカウントで参加中のルーム名検索にフォールバックします。
- 参加済みルーム名検索はベストエフォートです。ルーム名を ID またはエイリアスに解決できない場合、その名前はランタイム allowlist 解決で無視されます。
設定リファレンス
enabled: チャネルを有効または無効にします。name: アカウントの任意ラベル。defaultAccount: 複数の Matrix アカウントが設定されているときの優先アカウント ID。homeserver: homeserver URL。例:https://matrix.example.org。allowPrivateNetwork: この Matrix アカウントがプライベート / 内部 homeserver に接続できるようにします。homeserver がlocalhost、LAN/Tailscale IP、またはmatrix-synapseのような内部ホストに解決される場合に有効にしてください。proxy: Matrix トラフィック用の任意の HTTP(S) プロキシ URL。名前付きアカウントは独自のproxyでトップレベルデフォルトを上書きできます。userId: 完全な Matrix user ID。例:@bot:example.org。accessToken: トークンベース認証用のアクセストークン。平文値と SecretRef 値の両方が、channels.matrix.accessTokenとchannels.matrix.accounts.<id>.accessTokenに対して env/file/exec プロバイダー全体でサポートされます。Secrets Management を参照してください。password: パスワードベースログイン用パスワード。平文値と SecretRef 値の両方がサポートされます。deviceId: 明示的な Matrix device ID。deviceName: パスワードログイン用のデバイス表示名。avatarUrl: プロフィール同期およびset-profile更新用に保存される自己アバター URL。initialSyncLimit: 起動時の同期イベント上限。encryption: E2EE を有効化します。allowlistOnly: DM とルームに対して allowlist-only の挙動を強制します。allowBots: 他の設定済み OpenClaw Matrix アカウントからのメッセージを許可します(trueまたは"mentions")。groupPolicy:open、allowlist、またはdisabled。contextVisibility: 補足ルームコンテキストの可視性モード(all,allowlist,allowlist_quote)。groupAllowFrom: ルームトラフィック用の user ID allowlist。groupAllowFromエントリーは完全な Matrix user ID にしてください。解決できない名前はランタイムで無視されます。historyLimit: グループ履歴コンテキストとして含めるルームメッセージ最大数。messages.groupChat.historyLimitにフォールバックします。無効にするには0を設定します。replyToMode:off、first、またはall。markdown: 送信 Matrix テキスト用の任意の Markdown レンダリング設定。streaming:off(デフォルト)、partial、true、またはfalse。partialとtrueは、その場で編集更新する単一メッセージ下書きプレビューを有効にします。blockStreaming:trueは、下書きプレビューストリーミングが有効な間、完了済み assistant ブロック用の別個の進行メッセージを有効にします。threadReplies:off、inbound、またはalways。threadBindings: スレッドバインドセッションのルーティングとライフサイクルに対するチャネル単位の上書き。startupVerification: 起動時の自動自己検証要求モード(if-unverified,off)。startupVerificationCooldownHours: 起動時の自動検証要求を再試行する前のクールダウン。textChunkLimit: 送信メッセージのチャンクサイズ。chunkMode:lengthまたはnewline。responsePrefix: 送信返信用の任意のメッセージプレフィックス。ackReaction: このチャネル / アカウント用の任意の ack リアクション上書き。ackReactionScope: 任意の ack リアクションスコープ上書き(group-mentions,group-all,direct,all,none,off)。reactionNotifications: 受信リアクション通知モード(own,off)。mediaMaxMb: Matrix メディア処理におけるメディアサイズ上限(MB)。送信と受信メディア処理の両方に適用されます。autoJoin: 招待時の自動参加ポリシー(always,allowlist,off)。デフォルト:off。autoJoinAllowlist:autoJoinがallowlistの場合に許可されるルーム / エイリアス。エイリアスエントリーは招待処理時にルーム ID に解決されます。OpenClaw は、招待されたルームが主張するエイリアス状態を信頼しません。dm: DM ポリシーブロック(enabled,policy,allowFrom,threadReplies)。dm.allowFromエントリーは、ライブディレクトリ参照ですでに解決済みでない限り、完全な Matrix user ID にしてください。dm.threadReplies: DM 専用のスレッドポリシー上書き(off,inbound,always)。これは、返信配置と DM におけるセッション分離の両方についてトップレベルthreadReplies設定を上書きします。execApprovals: Matrix ネイティブ exec 承認配信(enabled,approvers,target,agentFilter,sessionFilter)。execApprovals.approvers: exec 要求を承認できる Matrix user ID。dm.allowFromがすでに承認者を特定している場合は任意です。execApprovals.target:dm | channel | both(デフォルト:dm)。accounts: 名前付きアカウントごとの上書き。トップレベルchannels.matrix値がこれらのエントリーのデフォルトとして機能します。groups: ルームごとのポリシーマップ。ルーム ID またはエイリアスを推奨します。解決できないルーム名はランタイムで無視されます。セッション / グループ ID は解決後の安定したルーム ID を使い、人間向けラベルは引き続きルーム名から取得されます。groups.<room>.account: マルチアカウント構成で、継承された 1 つのルームエントリーを特定の Matrix アカウントに限定します。groups.<room>.allowBots: 設定済み bot 送信者に対するルームレベル上書き(trueまたは"mentions")。groups.<room>.users: ルームごとの送信者 allowlist。groups.<room>.tools: ルームごとのツール許可 / 拒否上書き。groups.<room>.autoReply: ルームレベルのメンションゲート上書き。trueはそのルームのメンション要件を無効化し、falseは再び強制的に有効化します。groups.<room>.skills: 任意のルームレベル skill フィルター。groups.<room>.systemPrompt: 任意のルームレベル system prompt スニペット。rooms:groupsのレガシーエイリアス。actions: アクションごとのツールゲート(messages,reactions,pins,profile,memberInfo,channelInfo,verification)。
関連
- Channels Overview — サポートされているすべてのチャネル
- Pairing — DM 認証とペアリングフロー
- Groups — グループチャットの挙動とメンションゲート
- Channel Routing — メッセージのセッションルーティング
- Security — アクセスモデルとハードニング