policy list integration mega-issue/roadmap #910

Open
opened 2025-07-23 18:22:12 +00:00 by nex · 2 comments
Owner

This issue details the planned features to be implemented with server-side policy list following. Each task will have one or more pull requests associated with it, and must be merged before being checked off here.

Tip

Please provide feedback on what you would like to see, or what your ideal implementation would look like!

Plans for server-side policy list following:

Stage 1 (initial):

  • Basic subscription support
  • Refusing to route joins for banned users/servers, or to banned rooms
  • Refusing to allow invites from banned users/servers/rooms

Stage 2 (feature sprint):

  • Option to suspend users on policy ban
  • Refuse outgoing invites to banned users/servers/rooms (?)
  • Automatically ban & defederate banned rooms
  • Server-side MSC4284 policy server, using the followed lists
  • Server-side basic moderation bot (banning and redacting users that get added to a policy list)

Stage 3 (final implementation round):

  • Option to deactivate and purge media for users banned for a specific reason
  • Admin commands to subscribe/unsubscribe from lists
  • Relevant documentation added to inform admins on how to use the new features

Note

The room-level moderation features proposed here (i.e. policy server & moderation bot), will be designed in a way that they can be used to protect small communities that may not need an advanced level of protection, however will not provide the same level of protection as Draupnir or Meowlnir.
The intention is that communities will still set up their own moderation tooling, however will not be required to in order to benefit from the protection that shared policy lists provide. This is seen as a win-win for everyone.

The server-side management features will also be entirely optional and disabled by default.

This issue details the planned features to be implemented with server-side policy list following. Each task will have one or more pull requests associated with it, and must be merged before being checked off here. > [!TIP] > **Please provide feedback** on what you would like to see, or what your ideal implementation would look like! Plans for server-side policy list following: Stage 1 (initial): - [ ] Basic subscription support - [ ] Refusing to route joins for banned users/servers, or to banned rooms - [ ] Refusing to allow invites from banned users/servers/rooms Stage 2 (feature sprint): - [ ] Option to suspend users on policy ban - [ ] Refuse *outgoing* invites to banned users/servers/rooms (?) - [ ] Automatically ban & defederate banned rooms - [ ] Server-side MSC4284 policy server, using the followed lists - [ ] Server-side basic moderation bot (banning and redacting users that get added to a policy list) Stage 3 (final implementation round): - [ ] Option to deactivate and purge media for users banned for a specific reason - [ ] Admin commands to subscribe/unsubscribe from lists - [ ] Relevant documentation added to inform admins on how to use the new features > [!NOTE] > The room-level moderation features proposed here (i.e. policy server & moderation bot), will be designed in a way that they can be used to protect small communities that may not need an advanced level of protection, however will not provide the same level of protection as [Draupnir](https://the-draupnir-project.github.io/draupnir-documentation/) or [Meowlnir](https://docs.mau.fi/meowlnir/). > The intention is that communities will still set up their own moderation tooling, however will not be required to in order to benefit from the protection that shared policy lists provide. This is seen as a win-win for everyone. > > The server-side management features will also be entirely optional and disabled by default.
Owner

Refusing to route joins for banned users

I wonder if this would slow down the reaction of mod bots given it guarantees that the join goes via a different server? Perhaps some way to trigger the mod bot preemptively banning when this happens.

Refuse outgoing invites to banned users/servers/rooms

Reminds me of auto_deactivate_banned_room_attempts - can help flag suspicious users, perhaps logging some lists to the admin room and auto-suspending others (and ofc silently rejecting some lists)

Missing but could go in 1 or 2: Automatically block downloading and/or serving media from blocked servers, automatically deleting media from blocked servers

Server-side MSC4284 policy server, using the followed lists

Probably needs to be in a different epic or something, and belongs after the mod bot imo if we're basing it off lists (or you get into a situation where events are being soft failed for a user that's still in the room). Should also be careful to not expose this endpoint unless it's actually in use.

Server-side basic moderation bot

Probably don't want this to conflict with the 'support bot' idea, so need to keep track of the rooms we're moderating (invited to buy an admin). Also should investigate renaming the admin bot first (even if only for new servers).

Admin commands to subscribe/unsubscribe from lists

We can't have this at the same time as config file policy lists I don't think. Would need to look at declarative appservices.

> Refusing to route joins for banned users I wonder if this would slow down the reaction of mod bots given it guarantees that the join goes via a different server? Perhaps some way to trigger the mod bot preemptively banning when this happens. > Refuse outgoing invites to banned users/servers/rooms Reminds me of auto_deactivate_banned_room_attempts - can help flag suspicious users, perhaps logging some lists to the admin room and auto-suspending others (and ofc silently rejecting some lists) Missing but could go in 1 or 2: Automatically block downloading and/or serving media from blocked servers, automatically deleting media from blocked servers > Server-side MSC4284 policy server, using the followed lists Probably needs to be in a different epic or something, and belongs after the mod bot imo if we're basing it off lists (or you get into a situation where events are being soft failed for a user that's still in the room). Should also be careful to not expose this endpoint unless it's actually in use. > Server-side basic moderation bot Probably don't want this to conflict with the 'support bot' idea, so need to keep track of the rooms we're moderating (invited to buy an admin). Also should investigate renaming the admin bot first (even if only for new servers). > Admin commands to subscribe/unsubscribe from lists We can't have this at the same time as config file policy lists I don't think. Would need to look at declarative appservices.
Author
Owner

We can't have this at the same time as config file policy lists I don't think

No, it'd probably replace them

> We can't have this at the same time as config file policy lists I don't think No, it'd probably replace them
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: continuwuation/continuwuity#910
No description provided.