Hey all,
Todayโs release of Matrix 1.18 brings a total of 16 MSCs to the protocol. Many of those proposals improve Trust & Safety in Matrix, introducing features like invite blocking, policy servers, account suspension & locking, and general quality of life improvements to the reporting APIs. This blog post covers those safety features in a bit more detail - read on to the full changelog at the bottom for full details of everything in Matrix 1.18.
๐Policy servers
After about a year of development, policy servers have made their way into the stable spec. Typically paired with reactive tooling like moderation bots, these servers can optionally be added to a room when needed to provide proactive moderation. When enabled, all servers in a room ask the policy server for an opinion on their events before sending them with normal full mesh routing. If the policy server refuses to sign the event due to unwelcome content, it will not be delivered to other homeservers or local users.
How and what policies a policy server uses is left as an implementation detail. Some policies might be simple, like limiting the number of mentions allowed in a message, or more complex. Policy servers also do not need to track the underlying room DAG, allowing them to be relatively lightweight to build.
For more information on what policy servers can be used for, read the announcement post for the Foundationโs own implementation, named policyserv.
๐Invite blocking
Several proposals (tracked largely by MSC4192) have been opened over the years to limit the ability for unknown users to send invites to another user. These proposals often try to add safety features that are incredibly desirable, but are hard to put a UI on top of. In an effort to get something into the spec, MSC4380 boiled the feature down to its essential component: a single on/off toggle for invites. Future expansion to block based on servers, user IDs, Space members, etc is possible and tracked in other MSCs like MSC4155.
We look forward to seeing design teams take on those more advanced safety controls to expand the capabilities of invite blocking beyond MSC4380โs simple toggle!
๐Account suspension & locking
Account suspension and locking were introduced back around Matrix 1.13, but API endpoints to manage the states were not introduced at the time. As the new account states continue to gain popularity in server implementations, MSC4323 added those missing endpoints. Security and safety tooling can now use the new standard endpoints instead of having implementation-specific logic and switch statements.
๐Reporting improvements
Though small, MSC4277 harmonizes the various reporting endpoints to be similar in functionality, making it a little easier for clients to predict what happens when submitting reports. This is a highly welcome change ahead of the Foundationโs T&S team working on โReporting v2โ to modernize submitting reports (and appeals) to communities, servers, and federated locations later this year - stay tuned to the blog for updates on that project!
๐The full changelog
The full changelog for Matrix 1.18 is:
๐Client-Server API
New Endpoints
- Add
GET /_matrix/client/v1/admin/suspend/{userId}, as per MSC4323. (#2278) - Add
PUT /_matrix/client/v1/admin/suspend/{userId}, as per MSC4323. (#2278) - Add
GET /_matrix/client/v1/admin/lock/{userId}, as per MSC4323. (#2278) - Add
PUT /_matrix/client/v1/admin/lock/{userId}, as per MSC4323. (#2278)
Removed Endpoints
- The
scorerequest parameter on/_matrix/client/v3/rooms/{roomId}/report/{eventId}was removed as per MSC4277. (#2311)
Backwards Compatible Changes
- Add the account management capabilities for the OAuth 2.0 authentication API, as per MSC4191. (#2270)
- Add OAuth 2.0 aware clients, as per MSC3824. (#2272)
- Add administrator endpoints to lock and suspend server-local users and add the
m.account_managementcapability, as per MSC4323. (#2278) - Add
m.recent_emojiaccount data event to track recently used emoji as per MSC4356. (#2291) - Add
m.forget_forced_upon_leavecapability for servers to transparently auto-forget rooms that the user leaves as per MSC4267. (#2292) - Add support for
m.room.redactionevents at thePUT /rooms/{roomId}/send/{eventType}/{txnId}endpoint, as per MSC4169. (#2298) - Clients supporting the
olHTML element must also support thestartattribute, as per MSC4313. (#2299) - Add recommendation about excluding non-cross-signed devices from encrypted conversations, as per MSC4153. (#2301)
- Add invite blocking, as per MSC4380. (#2305)
/_matrix/client/v3/rooms/{roomId}/reportand/_matrix/client/v3/rooms/{roomId}/report/{eventId}may respond with HTTP 200 regardless of the reported subject's existence or add a random delay when generating responses as per MSC4277. (#2311)- Add
M_USER_LIMIT_EXCEEDEDcommon error code, as per MSC4335. (#2315) - Add the OAuth 2.0 Device Authorization Grant (RFC 8628) as a supported grant type, as per MSC4341. (#2320)
- Add the
is_animatedflag to theinfoobject of them.imagemsgtype and them.stickerevent, as per MSC4230. (#2328, #2338) - Add a "Policy Servers" module, as per MSC4284. (#2332)
Spec Clarifications
- The optional
submit_urlresponse parameter of the/requestTokenendpoints uses the same request and response parameters and error codes as the Identity Service API'sPOST /_matrix/identity/v2/validate/email/submitToken, as per MSC4183. (#2277) - Update non-historic mentions of matrix-doc repo to matrix-spec/-proposals. Contributed by @HarHarLinks. (#2280)
- Remove unintended TeX formatting. Contributed by @HarHarLinks. (#2283)
- Clarify the requiredness of
event_idinpredecessor. (#2304) - Clarify terminology for keys in cross-signing module. (#2306)
- Add 404 responses to the OpenAPI of
GET /loginandGET /auth_metadataendpoints. The responses were already defined in text but not written in OpenAPI. (#2316) - Fix various typos throughout the specification. Contributed by @HarHarLinks. (#2318)
- Clarified attachment encryption to require secure generation of keys and hash verification. (#2324)
- Order the common and other error codes alphabetically and remove duplicate
M_THREEPID_IN_USEdefinition. (#2336) - Fix various typos throughout the specification. (#2337)
๐Server-Server API
Removed Endpoints
Backwards Compatible Changes
Spec Clarifications
- Clarify what the
minimum_valid_until_tsfield means when it is set in key queries. (#2191) - Specify validation for PDUs passed to and returned from federation membership endpoints. (#2284)
- Specify that callers of
/_matrix/federation/v1/openid/userinfomust validate the returned user ID. (#2288) - Change
m.signing_updatetypo tom.signing_key_update. Contributed by @velikopter (#2300) - Add link to JSON signing algorithm in server-server auth section for clarity. Contributed by @thetayloredman. (#2329)
- Fix various typos throughout the specification. (#2338)
๐Application Service API
Spec Clarifications
- Fix various typos throughout the specification. (#2330)
๐Identity Service API
Spec Clarifications
- Clarify the error codes that can be returned with a 400 HTTP status code by the
POST /_matrix/identity/v2/validate/email/submitTokenandPOST /_matrix/identity/v2/validate/msisdn/submitTokenendpoints, introducing theM_TOKEN_INCORRECTerror code, as per MSC4183. (#2277) - Order the standard error codes alphabetically. (#2336)
๐Push Gateway API
No significant changes.
๐Room Versions
Spec Clarifications
- Clarify meaning of floating-point powerlevels. (#2297)
- Remove the post-1.16 release note for room version 12. (#2303)
๐Appendices
Spec Clarifications
- Add identifier pronunciation guidelines. Contributed by @HarHarLinks. (#2307)
๐Internal Changes/Tooling
Backwards Compatible Changes
- Include the spec release version in the filenames in the tarballs generated by CI. (#2276)
Spec Clarifications
- Clarify vendor prefixing requirements. (#2222)
- Auto-create draft releases when building release tags. (#2275)
- Replace the Twitter link in the footer with our BlueSky and Mastodon socials. (#2282)
- Upgrade to docsy v0.13.0. (#2287)
- Updates to the release documentation. (#2289)
- Remove unused leftover CSS files. (#2290)
- Update the footer social links to match matrix.org. Contributed by @HarHarLinks. (#2317)
- Fix various typos throughout the specification. Contributed by @HarHarLinks. (#2318)
- Render error code sections as definition lists to improve readability. (#2323)
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.
Support us