# X_CHANNEL_CATCHUP_POLICY_MISMATCH

## Means

a channel's catch-up read decides with another policy

## Typical cause

a channel('<name>', { catchUp, policy }) declaration names a catch-up query whose policy is not the channel's own policy object. The query is served at GET /_x/query/<catchUp> with the channel params as input, so a read with a wider policy (a bare can('<resource>:read') beside a channel rule comparing a param to the actor) hands any caller what the channel refuses

## Fix

`edit the catch-up query file the cause names: set its policy: to the same object the channel() call passes as policy: (export the rule from the feature's policy.ts and import it in both)`

[Realtime](/error-codes#realtime)
