Интеграция Grok Build
Интеграция grok управляет Grok Build, терминальным агентом, с хоста, где он запущен. В
режиме только для чтения она читает конфигурацию TOML, профиль sandbox, имена серверов MCP,
системные требования и файл, отключающий хуки. Она также может принимать трассы OTLP. Это не
коннектор API xAI: он не запрашивает удалённые модели и не требует секрета провайдера.
Превентивный контроль инструментов использует olivares grok-hook и отдельный локальный PEP.
Добавление Grok Build
Заголовок раздела «Добавление Grok Build»Предварительные требования
Заголовок раздела «Предварительные требования»- Olivares AI и Grok Build установлены на одном хосте либо пути конфигурации Grok смонтированы на хосте коннектора только для чтения.
- UUID тенанта, которому будет приписана поза.
- Разрешение для сервисной учётной записи Olivares читать
~/.grok/config.toml,/etc/grok/requirements.toml,~/.grok/disabled-hooksи, если настроен, совместимый файлmanaged-settings.json. - Учётная запись superadmin с повышением AAL3, если источник создаётся из консоли.
Не вводите ключ xAI для этого источника. У него нет секретного поля, и он не делает вызовов API инференса.
- Откройте Control console (
/console) и выберите вкладку Connectors. - Добавьте источник типа
grokс именемgrok-demo— или стабильным именем хоста —, тенантом, пакетным интервалом и включённым состоянием.60секунд позволяют видеть изменения позы во время пилота, не превращая локальное чтение файлов в непрерывный цикл. - Сохраните источник, выберите Test и перезагрузите реестр. Строка подтверждает запись в
реестре; файлы читает и находки выдаёт первый последующий
Gather.
Настройка Grok Build
Заголовок раздела «Настройка Grok Build»1. Инвентарь и требования хоста
Заголовок раздела «1. Инвентарь и требования хоста»| Настройка источника | По умолчанию | Что измеряется |
|---|---|---|
agent_ref | grok-build | Стабильная ссылка, включаемая в находки. |
config_path | ~/.grok/config.toml | Заявленный пользователем профиль sandbox и имена серверов MCP. |
requirements_path | /etc/grok/requirements.toml | Системный уровень, ограничивающий эффективную конфигурацию. |
disabled_hooks_path | ~/.grok/disabled-hooks | Имена отключённых пользователем хуков, по одному на строку. |
managed_settings_path | пусто | Совместимый с Claude Code managed-settings.json, учитываемый Grok; пусто означает «не измерено». |
otlp_http | false | Приёмник трасс, отключённый до резервирования порта оператором. |
В Linux минимальное требование для принудительного применения sandbox таково:
[sandbox]profile = "strict"Распространяйте его в /etc/grok/requirements.toml с административным владельцем. strict
ограничивает запись workspace, ~/.grok/ и временными каталогами и блокирует сетевой доступ в
рамках документированной гарантии Linux. То же значение в ~/.grok/config.toml — лишь
пользовательское предпочтение: параметры командной строки и окружение могут влиять на
конфигурацию, тогда как requirements.toml является ограничивающим уровнем.
Чтобы ограничить MCP, объявите в requirements.toml только таблицы
[mcp_servers.<nombre-aprobado>], которыми может пользоваться парк. Olivares инвентаризирует
имена, а не команды, URL или учётные данные внутри этих таблиц. Отсутствующий файл, нечитаемый
файл и существующий файл без [mcp_servers] создают разные состояния; «не измерено» никогда не
показывается как «нет».
Для совместимости Grok также может читать /etc/claude-code/managed-settings.json. Задавайте
managed_settings_path, только если Olivares должен измерять эту поверхность. Не используйте
повторно хук Claude без проверки: payload Grok применяет ключи camelCase и события
snake_case, для него требуется olivares grok-hook.
2. Управляемый хук
Заголовок раздела «2. Управляемый хук»Установите olivares grok-hook через нативный механизм обнаружения развёрнутой версии Grok:
либо файл настроек JSON, из которого Grok читает ключ hooks, либо файл *.json в каталоге
хуков, например ~/.grok/hooks/. Grok загружает эти файлы по имени. Olivares не определяет
полную оболочку авторства, и это дерево её не хранит; используйте схему установленной версии и
задайте команду в точности как:
olivares grok-hookPEP монтируется, когда при запуске Olivares OLIVARES_GROK_HOOK_PEP_CONFIG указывает на
корректную конфигурацию:
{ "listen": "127.0.0.1:8449", "tenant": "11111111-1111-4111-8111-111111111111"}Каждый экземпляр управляет одним тенантом и требует твёрдую идентичность. Клиент читает
OLIVARES_GROK_HOOK_URL, OLIVARES_GROK_HOOK_TOKEN, OLIVARES_GROK_HOOK_TENANT,
OLIVARES_GROK_HOOK_AGENT, OLIVARES_GROK_HOOK_ORG и OLIVARES_GROK_HOOK_ACCOUNT. Передавайте
эти значения через процесс и менеджер секретов; токену не место в JSON хука.
Имя, присвоенное хуку, имеет значение. Пользователь может добавить его в
~/.grok/disabled-hooks, после чего dispatcher пропустит его независимо от происхождения из
управляемого уровня. Ни requirements.toml, ни MDM не ограничивают этот файл. Коннектор читает
его и выдаёт находку высокой критичности с отключёнными именами, но не может предотвратить
отключение.
3. Необязательные трассы OTLP
Заголовок раздела «3. Необязательные трассы OTLP»При otlp_http=true приёмник по умолчанию слушает 127.0.0.1:4318 и принимает
POST /v1/traces — путь, измеренный для Grok Build. Этот неаутентифицированный вход должен
оставаться на loopback. Если другой коннектор уже занимает 4318, выберите свободный локальный
порт и примените то же значение к otlp_http_addr и OTLP-эндпоинту агента.
Сбор сводит трассы к атрибуции, имени span и session_id; содержимое не сохраняется. В этой
версии следующий опрос выдаёт агрегированную находку с числом span, сессий и отброшенных записей.
Для временной шкалы и контроля отдельных инструментов используйте хук.
Использование CLI
Заголовок раздела «Использование CLI»Следующие примеры выполнены 30 августа 2026 года бинарным файлом из worktree. Общие сообщения запуска опущены.
Регистрация локального источника
Заголовок раздела «Регистрация локального источника»olivares sources set \ --data-dir /var/lib/olivares \ --name grok-demo \ --kind grok \ --tenant 11111111-1111-4111-8111-111111111111 \ --poll-seconds 60 \ --actor platform-operator \ --reason integration-guide-rolloutcreated source "grok-demo" (kind "grok", tenant "11111111-1111-4111-8111-111111111111", enabled true) kind: - → grok tenant: - → 11111111-1111-4111-8111-111111111111 poll_seconds: - → 60 enabled: - → true→ reload a running engine to apply: POST /v1/console/runtime/reload, or `kill -HUP <pid>` (it also applies at next boot)С SQLite остановите движок перед офлайн-изменением реестра или используйте активную консоль. С
PostgreSQL команда может выполняться параллельно с движком. --actor и --reason атрибутируют
изменение происхождения.
Для нестандартных путей добавьте явные значения конфигурации:
olivares sources set \ --data-dir /var/lib/olivares \ --name grok-demo \ --config config_path=/srv/grok-home/.grok/config.toml \ --config requirements_path=/etc/grok/requirements.toml \ --config disabled_hooks_path=/srv/grok-home/.grok/disabled-hooks \ --config managed_settings_path=/etc/claude-code/managed-settings.json \ --actor platform-operator \ --reason grok-paths-for-service-userПроверка соединения и фактическое чтение файлов
Заголовок раздела «Проверка соединения и фактическое чтение файлов»Воспроизводимое измерение на хосте снимков экрана 30 августа 2026 года дало такой результат:
olivares sources test \ --data-dir /var/lib/olivares \ --name grok-demo \ --timeout 20sconfiguration: VALID (everything that can be decided without the network)source "grok-demo" (grok): ANSWERED — the connector opened with this configuration and was closed againNO SOURCE ROW WAS WRITTEN and nothing was wired into a running engine.Процесс завершился с кодом 0. На хосте была активная сессия Grok и файл
~/.grok/config.toml; /etc/grok/requirements.toml и ~/.grok/disabled-hooks отсутствовали.
sources test не прочитал ни один из них: Open только разрешает конфигурацию, а test сразу
закрывается без вызова Gather. Следовательно, ANSWERED не доказывает сессию, sandbox или
находки. Чтобы проверить чтение файлов, перезагрузите движок и изучите находки следующего опроса.
Проверка fail-closed поведения клиента хука
Заголовок раздела «Проверка fail-closed поведения клиента хука»При ненастроенном эндпоинте:
printf '%s' '{"hookEventName":"pre_tool_use","sessionId":"s-1","toolName":"Bash"}' | olivares grok-hookСтандартный вывод:
{"decision":"deny","reason":"no governance endpoint is configured (deny-closed)"}Стандартная ошибка:
no governance endpoint is configured (deny-closed)Код выхода — 2, что Grok интерпретирует как запрет для pre_tool_use. Для других событий отказ
записывается, но не может предотвратить действие; клиент сообщает об этом в stderr, не утверждая
enforcement.
Control console
Заголовок раздела «Control console»| Расположение | Что показано | Операционное ограничение |
|---|---|---|
Control console > Connectors (/console) | Реестр grok, настроенные пути, интервал, режим и действия Test/Save/Reload. | Тест открывает и закрывает коннектор; он не читает файлы TOML. |
Health > Connectors (/health) | Состояние источника, сообщение, тренд и последний опрос. | Состояние процесса не доказывает управление отсутствующим файлом. |
Observability > Ingestion (/observability) | Находки от olivares.grok, первая/последняя запись и, при включении, агрегированная активность OTLP. | Общепроцессные счётчики с запуска; они сбрасываются и не относятся к отдельному тенанту. |
Security (/security) | Наблюдаемый и принудительно применяемый профиль sandbox, имена MCP, наличие/валидность требований, совместимость managed settings и имена отключённых хуков. | «Нечитаемо» остаётся неизвестным, а не превращается в отсутствие. |
Sessions (/sessions) | Сессия, действие, идентичность, режим разрешений, последняя активность и поза enforced или observed. | Требуются события хука. Локальный инвентарь не создаёт сессию. |
Audit (/audit) | Атрибутируемые решения PEP и сцепленные свидетельства. | Существует только для вызовов, дошедших до PEP; отключённый хук оставляет пробел. |
Не ожидайте каталог моделей, расходы xAI или промпты: этот источник не использует API xAI, а приёмник OTLP отбрасывает содержимое.
Использование в production
Заголовок раздела «Использование в production»- Базовые уровни конечных устройств Linux: распространяйте
requirements.tomlкак файл, принадлежащий root, и опрашивайте каждый хост. Отсутствие становится требующей действия находкой, а не зелёным значением по умолчанию. - Контроль MCP: сравнивайте заявленные пользователем имена с зафиксированными администратором.
Переменная
GROK_CONFIGне может добавлять чувствительные таблицы вроде MCP, аутентификации или egress; эту защиту предоставляет Grok, а Olivares сообщает о ней, не дублируя. - Canary хука: начните с безвредного инструмента и подтвердите событие, решение и эффект. Затем
постоянно отслеживайте
disabled-hooks, поскольку контроль может исчезнуть по имени. - Общие эндпоинты: настройте абсолютные пути к фактическому
HOMEучётной записи, запускающей Grok.~сервиса Olivares может разрешиться в другого пользователя и дать точное измерение неверного профиля хоста. - Минимальная телеметрия: включайте OTLP только при необходимости агрегированного сигнала и резервируйте отдельный локальный сокет. Для превентивного управления приоритетна надёжная работа хука.
Что принудительно применяется, а что только наблюдается
Заголовок раздела «Что принудительно применяется, а что только наблюдается»| Поверхность | Фактическое поведение |
|---|---|
Источник grok | Наблюдается, только для чтения. Читает файлы и выдаёт находки; не изменяет Grok Build и не вызывает xAI. |
/etc/grok/requirements.toml | Принудительно применяет в агенте ограниченные значения sandbox и MCP. Olivares проверяет его наличие и заявленный эффект. |
~/.grok/config.toml | Наблюдаемое предпочтение. Само по себе не является административной политикой. |
olivares grok-hook для pre_tool_use | Может предотвратить инструмент, когда команда запускается и завершается с 2. Клиент закрывается отказом по принципу deny-closed, если PEP отсутствует или даёт сбой. |
| Другие события Grok | Наблюдаются. Отказ остаётся свидетельством, но у события нет равноценного запрета. |
| Timeout, сбой или хук, который не запустился | Агент работает fail-open. Grok продолжает работу; внутреннее fail-closed поведение olivares grok-hook действует только при вызове процесса. |
~/.grok/disabled-hooks | Может отключить даже управляемый хук. Olivares обнаруживает это постфактум, но ни один уровень требований не предотвращает отключение. |
| Приёмник OTLP | Наблюдает агрегаты. Не аутентифицирует, не сохраняет содержимое и не заменяет временную шкалу хука. |
Развёртывание нельзя объявлять «enforced» лишь потому, что sandbox зафиксирован. Для завершения
нужны эффективные требования, действительно запускающийся хук, непрерывный контроль его
отсутствия в disabled-hooks, видимое событие и продемонстрированный запрет pre_tool_use.