diff --git a/changelog.d/17272.bugfix b/changelog.d/17272.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..83e7ca426a5ae2bc0b09f45d40c9e6ca43b4746a
--- /dev/null
+++ b/changelog.d/17272.bugfix
@@ -0,0 +1 @@
+Fix wrong retention policy being used when filtering events.
diff --git a/synapse/visibility.py b/synapse/visibility.py
index 09a947ef15eba946a3efd860b3e38709a3bf7eb2..c891bd845b3a917837cd0c734659b680db7d2e1a 100644
--- a/synapse/visibility.py
+++ b/synapse/visibility.py
@@ -151,7 +151,7 @@ async def filter_events_for_client(
             filter_send_to_client=filter_send_to_client,
             sender_ignored=event.sender in ignore_list,
             always_include_ids=always_include_ids,
-            retention_policy=retention_policies[room_id],
+            retention_policy=retention_policies[event.room_id],
             state=state_after_event,
             is_peeking=is_peeking,
             sender_erased=erased_senders.get(event.sender, False),