Гостевая роль: как позвать подрядчика в один канал
Обычный участник пространства видит все публичные каналы. Значит, приглашение подрядчика в один канал открывало ему всю внутреннюю переписку.
Правило «публичный канал видят все участники пространства» кажется очевидным. На нём держится прозрачность: новый человек может найти нужный разговор без просьб «добавьте меня». Проблема появляется в тот день, когда в пространство нужно позвать человека не из команды.
Проблема
Дизайнер-фрилансер, подрядчик по интеграции, клиент агентства. Им нужен один канал. Но стоит пригласить их в пространство — и они видят все публичные каналы: внутренние обсуждения, спор о бюджете, оценку того самого подрядчика. Позвать человека только в один канал было просто невозможно.
Обходные пути известны: отдельное пространство на каждого подрядчика или переписка в другом мессенджере. Оба ломают главное — разговор уходит оттуда, где лежат задачи и остальная работа.
Решение: исключение из одного правила
Гостевая роль — это не набор урезанных прав, а исключение из правила видимости, то есть из правила, кто какие каналы видит. Для гостя «публичный канал видят все» не действует: он видит только те каналы, куда его позвали. Проверка встроена в то же место, которое для всех решает, можно ли открыть канал. Отдельной проверки «а если это гость» в десятке мест нет — значит, её нельзя забыть в одиннадцатом.
Администратор не может быть гостем: это противоположные концы одной шкалы, и совмещать их бессмысленно.
Обновлено 17.10.2026. Когда статья вышла, гость ещё попадал в #general и видел неприватные задачи и голосовые каналы — это исправлено 17 сентября. Теперь в #general гость сам не попадает, позвать его туда можно поимённо. Из задач он видит только те, где он автор, исполнитель или зритель, а из людей — только тех, с кем у него общий канал. С 9 октября гостевой роли можно выдать всего три права: создавать задачи, делать их приватными и удалять чужие сообщения в своих каналах. Остальные права действуют на всё пространство, и ограничить их каналами гостя нельзя.
Утечка через поиск
Самое интересное нашлось позже. Когда мы делали ответы по переписке, выяснилось, что поиск не знал про гостей. Он отбирал каналы по-своему и считал видимыми все публичные. Гость не мог открыть внутренний канал — но мог найти его сообщения поиском и прочитать их прямо в результатах.
Там же нашлась вторая дыра: записи голосовых каналов, включая приватные, видели все участники пространства.
Обе дыры закрыты одинаково: что можно показать в поиске, в записях и в ответах модели, теперь решает одно место в коде. На каждую утечку написан автоматический тест, который не пройдёт, если вернуть старый код.
Урок
Правило доступа, которое проверяется в одном месте, работает. Правило, которое повторяется везде, где читают данные, однажды забудут повторить — в поиске, в выгрузке, в статистике, в ответе модели. Поэтому в Kontext выгрузка, статистика, отчёты и ответы модели строятся по тем же правилам видимости, что и открытие канала. Даже если из-за этого у двух людей получается разная статистика.
Как настроить гостей — в документации по ролям. Как этим пользуются агентства — на странице «Для агентства».