You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Default upgrade coverage on macOS should now include: fresh snapshot -> site installer pinned to the latest stable tag -> `openclaw update --channel dev` on the guest. Treat this as part of the default Tahoe regression plan, not an optional side quest.
49
+
- If that release-to-dev lane fails with `reason=preflight-no-good-commit` and repeated `sh: pnpm: command not found` tails from `preflight build`, treat it as an updater regression first. The fix belongs in the git/dev updater bootstrap path, not in Parallels retry logic.
48
50
- Default to the snapshot closest to `macOS 26.3.1 latest`.
49
51
- On Peter's Tahoe VM, `fresh-latest-march-2026` can hang in `prlctl snapshot-switch`; if restore times out there, rerun with `--snapshot-hint 'macOS 26.3.1 latest'` before blaming auth or the harness.
50
52
-`parallels-macos-smoke.sh` now retries `snapshot-switch` once after force-stopping a stuck running/suspended guest. If Tahoe still times out after that recovery path, then treat it as a real Parallels/host issue and rerun manually.
Copy file name to clipboardExpand all lines: SECURITY.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,6 +97,7 @@ When patching a GHSA via `gh api`, include `X-GitHub-Api-Version: 2022-11-28` (o
97
97
OpenClaw does **not** model one gateway as a multi-tenant, adversarial user boundary.
98
98
99
99
- Authenticated Gateway callers are treated as trusted operators for that gateway instance.
100
+
- Direct localhost/loopback Control UI and Gateway WebSocket sessions authenticated with the shared gateway secret (`token` / `password`) are in that same trusted-operator bucket. Local auto-paired device sessions on that path are expected to retain full localhost operator capability; they do not create a separate `operator.write` vs `operator.admin` security boundary.
100
101
- The HTTP compatibility endpoints (`POST /v1/chat/completions`, `POST /v1/responses`) and direct tool endpoint (`POST /tools/invoke`) are in that same trusted-operator bucket. Passing Gateway bearer auth there is equivalent to operator access for that gateway; they do not implement a narrower `operator.write` vs `operator.admin` trust split.
101
102
- Concretely, on the OpenAI-compatible HTTP surface:
102
103
- shared-secret bearer auth (`token` / `password`) authenticates possession of the gateway operator secret
Copy file name to clipboardExpand all lines: docs/channels/matrix.md
+157-8Lines changed: 157 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -178,9 +178,9 @@ This is a practical baseline config with DM pairing, room allowlist, and E2EE en
178
178
179
179
Matrix reply streaming is opt-in.
180
180
181
-
Set `channels.matrix.streaming` to `"partial"` when you want OpenClaw to send a single draft reply,
182
-
edit that draft in place while the model is generating text, and then finalize it when the reply is
183
-
done:
181
+
Set `channels.matrix.streaming` to `"partial"` when you want OpenClaw to send a single live preview
182
+
reply, edit that preview in place while the model is generating text, and then finalize it when the
183
+
reply is done:
184
184
185
185
```json5
186
186
{
@@ -193,15 +193,164 @@ done:
193
193
```
194
194
195
195
-`streaming: "off"` is the default. OpenClaw waits for the final reply and sends it once.
196
-
-`streaming: "partial"` creates one editable preview message for the current assistant block instead of sending multiple partial messages.
197
-
-`blockStreaming: true` enables separate Matrix progress messages. With `streaming: "partial"`, Matrix keeps the live draft for the current block and preserves completed blocks as separate messages.
198
-
- When `streaming: "partial"` and `blockStreaming` is off, Matrix only edits the live draft and sends the completed reply once that block or turn finishes.
196
+
-`streaming: "partial"` creates one editable preview message for the current assistant block using normal Matrix text messages. This preserves Matrix's legacy preview-first notification behavior, so stock clients may notify on the first streamed preview text instead of the finished block.
197
+
-`streaming: "quiet"` creates one editable quiet preview notice for the current assistant block. Use this only when you also configure recipient push rules for finalized preview edits.
198
+
-`blockStreaming: true` enables separate Matrix progress messages. With preview streaming enabled, Matrix keeps the live draft for the current block and preserves completed blocks as separate messages.
199
+
- When preview streaming is on and `blockStreaming` is off, Matrix edits the live draft in place and finalizes that same event when the block or turn finishes.
199
200
- If the preview no longer fits in one Matrix event, OpenClaw stops preview streaming and falls back to normal final delivery.
200
201
- Media replies still send attachments normally. If a stale preview can no longer be reused safely, OpenClaw redacts it before sending the final media reply.
201
202
- Preview edits cost extra Matrix API calls. Leave streaming off if you want the most conservative rate-limit behavior.
202
203
203
204
`blockStreaming` does not enable draft previews by itself.
204
-
Use `streaming: "partial"` for preview edits; then add `blockStreaming: true` only if you also want completed assistant blocks to remain visible as separate progress messages.
205
+
Use `streaming: "partial"` or `streaming: "quiet"` for preview edits; then add `blockStreaming: true` only if you also want completed assistant blocks to remain visible as separate progress messages.
206
+
207
+
If you need stock Matrix notifications without custom push rules, use `streaming: "partial"` for preview-first behavior or leave `streaming` off for final-only delivery. With `streaming: "off"`:
208
+
209
+
-`blockStreaming: true` sends each finished block as a normal notifying Matrix message.
210
+
-`blockStreaming: false` sends only the final completed reply as a normal notifying Matrix message.
211
+
212
+
### Self-hosted push rules for quiet finalized previews
213
+
214
+
If you run your own Matrix infrastructure and want quiet previews to notify only when a block or
215
+
final reply is done, set `streaming: "quiet"` and add a per-user push rule for finalized preview edits.
216
+
217
+
This is usually a recipient-user setup, not a homeserver-global config change:
218
+
219
+
Quick map before you start:
220
+
221
+
- recipient user = the person who should receive the notification
222
+
- bot user = the OpenClaw Matrix account that sends the reply
223
+
- use the recipient user's access token for the API calls below
224
+
- match `sender` in the push rule against the bot user's full MXID
225
+
226
+
1. Configure OpenClaw to use quiet previews:
227
+
228
+
```json5
229
+
{
230
+
channels: {
231
+
matrix: {
232
+
streaming:"quiet",
233
+
},
234
+
},
235
+
}
236
+
```
237
+
238
+
2. Make sure the recipient account already receives normal Matrix push notifications. Quiet preview
239
+
rules only work if that user already has working pushers/devices.
240
+
241
+
3. Get the recipient user's access token.
242
+
- Use the receiving user's token, not the bot's token.
243
+
- Reusing an existing client session token is usually easiest.
244
+
- If you need to mint a fresh token, you can log in through the standard Matrix Client-Server API:
7. Test a streamed reply. In quiet mode, the room should show a quiet draft preview and the final
329
+
in-place edit should notify once the block or turn finishes.
330
+
331
+
Notes:
332
+
333
+
- Create the rule with the receiving user's access token, not the bot's.
334
+
- New user-defined `override` rules are inserted ahead of default suppress rules, so no extra ordering parameter is needed.
335
+
- This only affects text-only preview edits that OpenClaw can safely finalize in place. Media fallbacks and stale-preview fallbacks still use normal Matrix delivery.
336
+
- If `GET /_matrix/client/v3/pushers` shows no pushers, the user does not yet have working Matrix push delivery for this account/device.
337
+
338
+
#### Synapse
339
+
340
+
For Synapse, the setup above is usually enough by itself:
341
+
342
+
- No special `homeserver.yaml` change is required for finalized OpenClaw preview notifications.
343
+
- If your Synapse deployment already sends normal Matrix push notifications, the user token + `pushrules` call above is the main setup step.
344
+
- If you run Synapse behind a reverse proxy or workers, make sure `/_matrix/client/.../pushrules/` reaches Synapse correctly.
345
+
- If you run Synapse workers, make sure pushers are healthy. Push delivery is handled by the main process or `synapse.app.pusher` / configured pusher workers.
346
+
347
+
#### Tuwunel
348
+
349
+
For Tuwunel, use the same setup flow and push-rule API call shown above:
350
+
351
+
- No Tuwunel-specific config is required for the finalized preview marker itself.
352
+
- If normal Matrix notifications already work for that user, the user token + `pushrules` call above is the main setup step.
353
+
- If notifications seem to disappear while the user is active on another device, check whether `suppress_push_when_active` is enabled. Tuwunel added this option in Tuwunel 1.4.2 on September 12, 2025, and it can intentionally suppress pushes to other devices while one device is active.
205
354
206
355
## Encryption and verification
207
356
@@ -833,7 +982,7 @@ Live directory lookup uses the logged-in Matrix account:
833
982
-`historyLimit`: max room messages to include as group history context. Falls back to `messages.groupChat.historyLimit`. Set `0` to disable.
834
983
-`replyToMode`: `off`, `first`, or `all`.
835
984
-`markdown`: optional Markdown rendering configuration for outbound Matrix text.
836
-
-`streaming`: `off` (default), `partial`, `true`, or `false`. `partial` and `true` enable single-message draft previews with edit-in-place updates.
985
+
-`streaming`: `off` (default), `partial`, `quiet`, `true`, or `false`. `partial` and `true` enable preview-first draft updates with normal Matrix text messages. `quiet` uses non-notifying preview notices for self-hosted push-rule setups.
837
986
-`blockStreaming`: `true` enables separate progress messages for completed assistant blocks while draft preview streaming is active.
838
987
-`threadReplies`: `off`, `inbound`, or `always`.
839
988
-`threadBindings`: per-channel overrides for thread-bound session routing and lifecycle.
- Promotion re-reads the live daily note before writing to `MEMORY.md`, so edited or deleted short-term snippets do not get promoted from stale recall-store snapshots.
105
106
- Scheduled and manual `memory promote` runs share the same deep phase defaults unless you pass CLI threshold overrides.
0 commit comments