feat(#551): gate server-side e2ee behind opt-in matrix.allowEncryption (default off)

This commit is contained in:
damocles 2026-06-10 19:03:16 +02:00 committed by mara
commit 8792db9424
2 changed files with 32 additions and 4 deletions

View file

@ -119,9 +119,16 @@ Initial rollout settings:
engage). The absent
`yes_i_am_very_very_sure_…_open_registration_…` flag keeps the
server closed to anyone without the token.
- `allow_encryption = true` — E2EE enabled. Agent clients use the
`e2e-encryption` feature of `matrix-sdk`; crypto keys are stored in
the per-agent sqlite store under the state dir and persist across
- `allow_encryption` — server-side E2EE switch, sourced from
`services.hyperhive.matrix.allowEncryption` (**default `false`**, opt-in).
Off by default because on the hive-internal homeserver the operator
already controls the transport; turn it on for encrypted rooms on
external / federated homeservers or to keep contents opaque to the
homeserver admin. **The agent matrix client always supports decryption
regardless of this flag** — it uses the `e2e-encryption` feature of
`matrix-sdk` so it can read encrypted rooms it is invited to even when
this homeserver doesn't permit room encryption. Crypto keys are stored
in the per-agent sqlite store under the state dir and persist across
restarts (lost on `--purge`). `read_room` decrypts via
`room.messages()` — UTD events surface as `event_type =
"m.room.encrypted"` with `body = "[unable to decrypt]"`.