Ответ бота видят все в канале
Самая опасная ошибка ИИ внутри мессенджера — не неверный ответ, а верный ответ не тому человеку.
У ИИ внутри рабочего мессенджера есть огромное преимущество перед отдельным чатом с моделью: он знает всё. Все каналы, задачи, расшифровки созвонов. Именно это и делает его опасным. Модель, которая знает всё, легко расскажет всё — гладким текстом, в котором утечку не заметить.
Важно, как сформулировано правило
Первая мысль — «ответ не должен цитировать то, чего не видит спросивший». Этого мало. Пересказ приватного канала выдаёт секреты не хуже цитаты, а в гладком тексте такой пересказ не заметит ни проверка, ни сам человек.
Наше правило жёстче: чужое не попадает в запрос к модели. Модель не может пересказать то, чего ей не дали. Что можно передать модели, определяет тот же код, который решает, можно ли открыть канал, — а автоматические тесты проверяют сам текст, который уходит модели, а не только её ответ.
Бот в канале — отдельная история
В строке поиска всё просто: вопрос задаёт один человек, ответ видит он же. Значит, модель получает то, что видно ему.
С ботом в канале так нельзя. Представьте: руководитель спрашивает в общем канале «@claude, что мы решили по бюджету?». Руководителю доступен приватный канал руководства. Если бот ищет с правами спросившего — он перескажет обсуждение бюджета всему общему каналу.
Искать с правами самого бота — тоже плохо: бот состоит в каналах, куда его добавили, и может видеть больше спросившего. Поэтому правила такие:
- Личка один на один с ботом — права спросившего: ответ прочитает только он.
- Любой другой канал — только то, что видно каждому участнику этого канала: сам канал, публичные каналы пространства, неприватные задачи и записи этого канала.
- Если среди участников есть гость — публичных каналов в этом списке нет: гость их не видит. С 17 сентября, если в канале есть гость, в список не попадают и задачи вместе с комментариями: гостю видны только те, где он автор, исполнитель или зритель.
- И спросивший, и бот должны состоять в канале. Иначе через бота можно было бы читать каналы, куда не звали.
Украденный токен бота — не ключ ко всему
Бот ищет от имени другого человека. Токен — это ключ доступа бота, и если его украдут, он не должен открывать всё подряд. Поэтому такой поиск принимает запросы только с наших собственных серверов: запрос, пришедший снаружи, из интернета, отклоняется даже с настоящим токеном.
Без источников — без ответа
Вторая половина честности — не выдумывать. Если поиск не нашёл ни одного подходящего фрагмента, модель вообще не вызывается: спросить её без источников — значит разрешить ей сочинить ответ. Каждое утверждение в ответе помечено номером источника, а под ответом подписано, что его составила модель.
Что нашлось по дороге
Проверяя эти правила, мы нашли две старые дыры, не связанные с ИИ. Обычный поиск показывал гостю переписку публичных каналов, куда его не звали, а записи голосовых каналов — в том числе приватных — видели все участники пространства. Обе дыры закрыты, на обе есть автоматические тесты, которые не пройдут на прежнем коде.
Подробнее о том, что умеет ИИ в Kontext, — на странице «ИИ и MCP-коннектор».