# Журнал аудита и Buff Code

> Что вокруг Buff Code попадает в журнал аудита: вход и отзыв устройств, просмотр чужих сессий, выгрузки, вопросы, знания — с важностью и примером записи.

[Журнал аудита](/docs/audit-log) организации записывает **действия людей** вокруг Buff Code.
Содержимое самих сессий — запросы и ответы модели — в него не попадает: для этого есть
[записи сессий](/docs/buff-code/sessions), а журнал отвечает на вопрос «кто и что сделал».

## Что записывается

| Код события | Что записано | Важность | Когда |
| --- | --- | --- | --- |
| `session.device_approve` | Разрешён вход устройства Buff Code | заметное | человек нажал «Разрешить вход» на странице входа; в событии — имя устройства и организация |
| `session.device_deny` | Вход устройства отклонён | заметное | человек нажал «Это не я»; в событии — имя устройства |
| `session.device_revoke` | Устройство отозвано | заметное | кнопка «Отозвать» на странице входа; в событии — устройство |
| `session.device_refresh_denied` | Обновление токена устройства отклонено | предупреждение | только при отказе: устройство уже отозвано, подпись не сошлась или у человека не осталось доступа |
| `session.device_reuse_revoked` | Устройство отозвано: токен обновления использован повторно | предупреждение | уже потраченный токен предъявлен ещё раз — так бывает, когда токен украден; устройство отзывается сразу |
| `ide.session_view` | Просмотрена **чужая** сессия разработки | заметное | владелец открыл сессию другого разработчика |
| `ide.session_export` | Выгружена сессия разработки | заметное | любая выгрузка Markdown или JSON, своей или чужой |
| `ask.create` | Создан диалог «Спросить» по сессиям разработки | инфо | вопрос по сессиям; в деталях — идентификаторы сессий набора |
| `knowledge.create` | Создано знание «…» из Buff Code | инфо | разработчик подтвердил запись, [предложенную моделью](/docs/buff-code/knowledge) |

Полный каталог с операцией и важностью — [Каталог событий](/docs/audit-log/events).

## Просмотр и выгрузка: как считаются

- **Одна запись на чтение, а не на страницу.** Длинная сессия приходит в кабинет страницами;
  «Показать продолжение» и хвост, который дописывает «Следить», новых записей не создают.
  Одна запись — одно открытие сессии.
- **Свою сессию смотреть — не событие.** Список сессий и просмотр своей сессии — чтение
  своего, они не записываются. Чужую сессию открыть может только владелец, поэтому
  `ide.session_view` — всегда действие владельца.
- **Выгрузка записывается всегда** — и своей сессии тоже: файл покидает кабинет.
- **Отказ тоже записывается.** Участник, который попробовал открыть чужую сессию, оставит в
  журнале запись с результатом «отказ» и описанием «Просмотр сессии разработки отклонён».
- **Важность «заметное»** — операция **доступ**. Это выше «инфо», которым помечены рутинные
  действия, и ниже «предупреждения»: чужую сессию смотрят по делу, но офицеру безопасности
  стоит видеть, кто и как часто.

В записи: **кто** (логин владельца), **объект** — идентификатор сессии, в **деталях** —
логин разработчика, чья сессия, и проект; как у всех событий — адрес и браузер.

## Как найти в журнале

В [журнале аудита](/docs/audit-log) события просмотра и выгрузки лежат в категории
**«Сессии разработки»** — отдельная кнопка в фильтре категорий. Вход и отзыв устройств —
в категории «Сессии и вход», вопросы по сессиям — в «Спросить», знания из Buff Code — в
«База знаний». Поиск по логину разработчика находит записи о его сессиях: логин есть в
описании и в деталях.

_Иллюстрация: Категория «Сессии разработки» в журнале: просмотр чужой сессии, выгрузка и вопросы по сессиям — с тем, кто и когда._

Так запись о просмотре выглядит в [выгрузке JSON Lines](/docs/audit-log/export) (значения
условные):

```json
{"id":418,"at":"2026-09-24T11:03:17.204915+00:00","org":"buff-demo","project":null,
 "actor_kind":"user","actor":"demo-lead","session":"c2a5…","gid":"9821…","ip":"147.45.197.19",
 "user_agent":"Mozilla/5.0 …","action":"ide.session_view","operation":"access","severity":"notice",
 "target_kind":"dev_session","target":"ses_7f3a…","summary":"Просмотрена сессия разработки alice",
 "detail":{"op":"dev_session_feed","login":"alice","project":"shop-web"},"ok":true,"error":null,
 "prev_hash":"e5ac…","hash":"81df…"}
```

У выгрузки — `"action":"ide.session_export"` и описание «Выгружена сессия разработки (alice)».

## Что не записывается намеренно

- **Запрос кода входа и ожидание подтверждения** — консоль спрашивает и ждёт; событием
  считается решение человека.
- **Вызовы моделей** — это расход, он записан там, где списывается: в сессии разработчика и
  биллинге.
- **Чтение базы знаний и репозиториев проекта** из Buff Code — чтение, как и в кабинете.
- **Список своих сессий и просмотр своей сессии** — чтение своего.
- **Вызовы инструментов подключений** — их ведёт [журнал вызовов коннектора](/docs/buff-code/tools#где-виден-каждый-вызов)
  с именем разработчика.
- **Тела запросов и ответов, знания, учётные данные, коды входа, токены и ключ устройства** — никогда.

## Кому это нужно

Право читать журнал аудита выдаётся отдельно — например, офицеру информационной безопасности.
Он увидит, кто разрешал вход на устройства, кто смотрел чужие сессии и что выгружал, — с
выгрузкой в CSV или JSON Lines и цепочкой хешей, как описано в [Выгрузка журнала](/docs/audit-log/export).
