Gas
тогда остается то, что м. б. юзер на проде не залогинен?
В общем я раскопал, если интересно. Переименование моделек и перенос их из одной апки в другую привели к тому, что у меня образовалась каша с привилегиями и записями в таблицах django_content_type и auth_permission. Что в свою очередь привело к тому, что чисто номинально кастомных привилегий у меня было по прежнему то же кол-во, но некоторые из них уже ничего не означали, так как были мусором или вовсе назывались по старому, а привилегий с новым названием не было.
Например, была у меня моделька contacts для личных сообщений, но потом я ее переименовал в messages. Так вот в базе у меня по прежжнему были view_contacts, add_contacts и т.п.
Что больше всего сбило с толку так это то, что на проде и локально бардак был разный. Выполнение команды remove_stale_contenttypes частично исправило ситуацию, поудаляв старые записи, но переименовывать пришлось руками