
Безопасность во время выполнения для ИИ-агентов: обнаружение агентов, картирование их разрешений и контроль того, что они могут делать.
<img src="https://raw.githubusercontent.com/kontext-security/kontext-cli/main/assets/kontext-computer-wordmark.gif" alt="Kontext animated wordmark" width="100%" />
<div align="center">
<p>
<a href="https://kontext.security">Website</a>
|
<a href="https://docs.kontext.security/getting-started/welcome">Documentation</a>
|
<a href="https://app.kontext.security">Dashboard</a>
|
<a href="https://discord.gg/gw9UpFUhyY">Discord</a>
</p>
<p>
<a href="https://github.com/kontext-security/kontext-cli/blob/main/LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-152822?labelColor=0d1714"></a>
<a href="https://github.com/kontext-security/kontext/releases"><img alt="Latest release" src="https://img.shields.io/github/v/release/kontext-security/kontext?color=152822&labelColor=0d1714"></a>
<img alt="Built with Go" src="https://img.shields.io/badge/Go-1.25-152822?labelColor=0d1714">
</p>
</div>
# Остановите рискованные действия AI-агентов до их выполнения
AI-агенты не просто предлагают код. Они выполняют shell-команды, читают файлы, вызывают
сервисы, изменяют инфраструктуру и взаимодействуют с production-системами.
**Kontext ставит локальную политику между AI-агентами и инструментами, которые они вызывают.** Он
наблюдает поддерживаемые действия, оценивает политику до выполнения значимых действий
и записывает решение и результат в журнал авторизации.
Начните в режиме наблюдения. Посмотрите, какие действия остановила бы политика. Переводите поддерживаемые границы
в режим принуждения, когда будете готовы.
Ошибки оценки политики разрешают вызов инструмента, в том числе в режиме принуждения, и
остаются видимыми как сбои в записи активности. Завершённые отказы политики и
недоступные обязательные подтверждения по-прежнему блокируются. Этот откат при ошибке не меняет
поведение, когда демон недоступен или у принуждения нет пригодной политики.
- **Локальные решения:** оценка политики происходит рядом с агентом.
- **Принуждение до действия:** совпадающие действия могут быть отклонены на поддерживаемых
синхронных хуках.
- **Без команды-обёртки:** установите Kontext один раз и продолжайте использовать своих агентов
как обычно.
- **Атрибутируемые доказательства:** сохраняются агент, сессия, действие, решение
политики и результат.
- **Управляемое развёртывание:** распространяйте политику и просматривайте отредактированные записи по всей
организации.
В настоящее время Kontext поддерживает **Claude Code, Claude Cowork и Codex**. Точный
охват событий и принуждения зависит от агента — см.
[матрицу поддержки агентов](https://github.com/kontext-security/kontext-cli/blob/main/docs/coverage.md).
Управляемые хуки Claude распознают сессии Cowork как с полными, так и с сокращёнными
именами каталогов сессий, сохраняя их идентичность Cowork в записях активности.
---
## Быстрый старт
### Установите Kontext
```bash
brew install kontext-security/tap/kontext
```
### Подключите этот Mac
Создайте install-токен в
[панели Kontext](https://app.kontext.security), затем выполните:
```bash
kontext setup
```
Опциональной локальной модели риска нужен llama.cpp: выполните `brew install llama.cpp`, затем `kontext setup --with-local-llm`.
Настройка:
- сохраняет install-токен в связке ключей входа macOS;
- устанавливает хуки для поддерживаемых агентов;
- запускает локальный демон Kontext;
- подключает установку к вашей организации Kontext.
Проверьте установку:
```bash
kontext doctor
```
Затем продолжайте использовать Claude Code или Codex как обычно. Вам не нужно запускать
агента через отдельную обёртку.
> Самостоятельная настройка в настоящее время поддерживает macOS. Управляемые и облачные среды могут
> запускать ту же локальную среду выполнения, когда они предоставляют поддерживаемый контракт хуков,
> хранилище и жизненный цикл демона.
---
## Что меняется после настройки?
Без политики до действия действие агента выполняется до того, как команда безопасности сможет
просмотреть его логи:
```text
agent requests an action
|
v
action executes
|
v
activity appears in a log
```
С Kontext:
```text
agent requests an action
|
v
Kontext receives it through a supported hook
|
v
local policy evaluates the action
|
+---- allow ----------> action continues
|
+---- would deny -----> action continues and evidence is recorded
| (observe mode)
|
+---- deny -----------> action is stopped before execution
(enforce mode)
|
v
decision and outcome enter the authorization ledger
```
Это создаёт точку принятия решения до действия, а не только запись после него.
---
## Сначала наблюдение. Принуждение — когда готовы.
Блокировка каждого незнакомого действия в первый же день создаёт шум и прерывает
разработчиков. Разрешение каждого действия бесконечно оставляет политику пассивным
мониторингом.
Kontext разделяет развёртывание на два режима:
### Режим наблюдения
Режим наблюдения записывает решение политики, не прерывая агента.
Используйте его, чтобы ответить:
- Какие инструменты вызывают агенты?
- Какие действия отклонила бы текущая политика?
- Какие репозитории, файлы и системы задействованы?
- Где принуждение прервало бы законную работу?
- Какие поверхности событий действительно могут остановить действие?
### Режим принуждения
Режим принуждения возвращает реальный отказ, когда детерминированная политика совпадает на
поддерживаемом синхронном хуке до действия.
Политики могут определять границы вокруг таких действий, как:
- деструктивные команды;
- доступ к конфиденциальным файлам;
- операции с production-системами;
- доступ к учётным данным;
- экспорт данных.
Принуждение намеренно ограничено поверхностями событий, где агент ждёт
Kontext перед продолжением. Kontext не утверждает, что получение события
означает возможность остановить любое действие этого агента.
---
## Знайте, что произошло — и почему
Каждое поддерживаемое событие, достигающее Kontext, может внести доказательства в локальный
журнал авторизации.
Запись может включать:
- агента и сессию;
- событие жизненного цикла или инструмента;
- имя инструмента и доступные входные данные;
- локальное решение политики;
- политику, ответственную за это решение;
- доступный результат действия;
- отредактированные доказательства для последующего просмотра.
Kontext записывает активность инструментов и доказательства решений. Он не захватывает рассуждения
модели и не восстанавливает полную историю разговора.
Управляемые развёртывания могут экспортировать отредактированные записи в панель Kontext для
просмотра, хранения и расследования по всей организации.
Экспорты журнала и heartbeat простоя сообщают релиз CLI работающего демона как
`device.cli_version`, отдельно от маркера пакета в
`device.deployment_version` (или его самостоятельного резервного значения). Обновление маркера пакета
не меняет сообщаемый релиз CLI, пока демон, запущенный с новым бинарником,
не отправит телеметрию.
---
## Политика там, где работает агент
Путь принятия решения остаётся локальным:
```text
Claude Code / Cowork / Codex
|
v
supported hook
|
v
local Kontext runtime
|
+-----+------+
| |
v v
policy decision local ledger
|
v
allow / would deny / deny
```
Хостинговому сервису не нужно отвечать на каждый вызов инструмента.
Управляемые развёртывания добавляют конфигурацию организации, распространение политики, экспорт записей,
идентичность и хранение. Они не выводят синхронный путь принятия решения
за пределы среды агента.
---
## Поддерживаемые агенты
«Поддерживаемый» означает больше, чем приём события. Kontext документирует, какие события
он получает, какие события могут блокировать и как устанавливается каждая интеграция.
| Агент | Что записывает Kontext | Блокировка до действия | Установка |
| --- | --- | --- | --- |
| **Claude Code** | Жизненный цикл сессии, pre-tool-use, успешный и неуспешный post-tool-use | Pre-tool-use | Устанавливается через `kontext setup` |
| **Codex** | Запуск сессии, pre-tool-use, post-tool-use, отправка промпта, остановка | Pre-tool-use | Устанавливается через `kontext setup`; хуки должны быть доверенными в Codex |
| **Claude Cowork** | Совместимые с Claude Code события сессии и инструментов | Pre-tool-use | Настройте хук внутри среды Cowork |
См. [матрицу поддержки агентов](https://github.com/kontext-security/kontext-cli/blob/main/docs/coverage.md) для точного поведения, области
развёртывания и известных пробелов. Это авторитетный источник по охвату принуждения.
---
## Kontext и песочницы решают разные задачи
Песочница процесса спрашивает:
> К каким файлам, сетевым назначениям, учётным данным и ресурсам операционной системы
> может получить доступ этот процесс?
Kontext спрашивает:
> Какой агент пытается выполнить какое действие, какая политика применяется, должно ли
> действие продолжиться и какие доказательства подтверждают решение?
Песочницы уровня ядра — это сильные границы изоляции. Kontext обеспечивает семантическую
политику и атрибуцию на поддерживаемых хуках агентов и инструментов.
Они дополняют друг друга:
```text
Kontext
decides whether the action is authorized
|
v
sandbox
constrains what the process can physically access
```
Kontext не заявляет об изоляции на уровне ядра. Используйте подходящую песочницу, когда
модель угроз требует изоляции процесса, файловой системы или сети.
---
## Почему бы просто не собирать логи агентов?
Логи говорят вам, что агент сообщил после события.
Kontext создаёт решение об авторизации до выполнения поддерживаемых значимых
действий, а затем связывает это решение с доступным результатом.
Это различие важно во время:
- развёртывания политики;
- расследования инцидентов;
- проверки доступа к production;
- обработки исключений для разработчиков;
- проверки соответствия и аудита.
Результат — не просто «агент вызвал инструмент». Это доказательство того, что было
запрошено, какая политика применилась, было ли разрешено и что произошло
дальше.
---
## Запустите Kontext по всей организации
Управляемые развёртывания добавляют:
- централизованно управляемую детерминированную политику;
- корпоративную идентичность и средства управления организацией;
- развёртывание от наблюдения к принуждению;
- поддержку управляемого развёртывания агентов и облака;
- экспорт отредактированных доказательств;
- хранение для аудита;
- мониторинг работоспособности развёртывания и очереди;
- адаптацию для команд безопасности и платформы.
Для планирования развёртывания и адаптации организации свяжитесь с
[[email protected]](mailto:[email protected]) или
[забронируйте разговор](https://calendar.superhuman.com/book/11W5Y8b5JsB8dOzQbd/YECs9).
---
## Диагностика установки
```bash
kontext doctor
```
`doctor` проверяет:
- установленные хуки агентов;
- работоспособность и версию демона;
- работоспособность управляемого экспорта;
- очередь ожидающего экспорта.
Он завершается с ненулевым кодом, когда настроенная установка неработоспособна.
Проверка хуков Claude принимает эквивалентное экранирование shell, при этом по-прежнему требуя
ожидаемый исполняемый файл, аргументы и настройки событий. Диагностика хуков Codex
проверяет как системные, так и пользовательские файлы: отсутствующий или пустой файл допустим, когда другой
содержит полную установку. Некорректные или неполные непустые файлы и
конфликтующие установки по-прежнему сообщают о неработоспособной настройке.
Когда в принадлежащем Claude drop-in отсутствуют только события, требуемые текущей
версией, doctor называет отсутствующие события и команду `hooks install` для конкретной области.
Самостоятельные исправления запрашивают sudo только для обновления системного файла Claude;
исправления организации требуют `sudo` с `--scope system`. `doctor --fix` не
переустанавливает хуки.
Когда самостоятельный демон устарел:
```bash
kontext doctor --fix
```
Смените install-токен, снова выполнив setup:
```bash
kontext setup
```
Удалите самостоятельную установку:
```bash
kontext setup --uninstall
```
---
## Обработка данных
- Решения политики принимаются локально.
- Активность инструментов и доказательства решений хранятся локально.
- Конфиденциальные значения редактируются перед локальным хранением и управляемым экспортом.
- Kontext не хранит рассуждения модели или полную историю разговора.
- Управляемые развёртывания могут экспортировать отредактированные записи в панель
организации.
См. [документацию Guard](https://github.com/kontext-security/kontext-cli/blob/main/docs/guard.md) о среде выполнения и границе данных.
---
## Разработка
```bash
go build -o bin/kontext ./cmd/kontext
go test ./...
go test -race ./...
go vet ./...
```
## Сообщество
- Прочитайте [SUPPORT.md](https://github.com/kontext-security/kontext-cli/blob/main/SUPPORT.md) о каналах поддержки.
- Прочитайте [CONTRIBUTING.md](https://github.com/kontext-security/kontext-cli/blob/main/CONTRIBUTING.md) перед отправкой вклада.
- Сообщайте об уязвимостях через нашу [Политику безопасности](https://github.com/kontext-security/kontext-cli/blob/main/SECURITY.md).
- Kontext выпускается под [лицензией MIT](https://github.com/kontext-security/kontext-cli/blob/main/LICENSE).
### Отчёт о полномочиях
`kontext report` показывает обнаруженных агентов и полномочия точно в том виде, в каком они были последний раз приняты
облаком. Используйте `kontext report --json` для необработанных данных. До первой
успешной отправки он не сообщает данных.
Установите `KONTEXT_AUTHORITY_SCAN=off` в окружении демона, чтобы отключить сбор
и передачу полномочий на этом Mac.