La seguridad por filas de Supabase funciona al revés de lo que uno espera: al activarla en una tabla, esa tabla queda cerrada del todo, y solo se abre para lo que autorices explícitamente con una política. Sin política, la respuesta por defecto es que no. Un 403 en lectura casi siempre significa que la tabla tiene la seguridad activada y ninguna política que permita leerla.
El segundo caso es que la política exista pero no encaje con quien pregunta. Es muy típico haberla escrito para usuarios identificados y que la petición salga sin sesión: porque el visitante no ha iniciado sesión, porque la sesión ha caducado, o porque la llamada ocurre al cargar la página, antes de que la app haya terminado de recuperar la sesión guardada.
El tercero es más sutil: la política dice que cada usuario ve sus propias filas comparando su identificador con una columna de la tabla, pero esa columna está vacía en las filas antiguas. Nadie coincide con un valor nulo, así que no se ve nada aunque la sesión sea correcta.