Интеграция Claude Code
Эта интеграция подключает Claude Code к control plane управления, не превращая Olivares AI в
обязательный прокси. Коннектор claude получает телеметрию OTLP и события хуков, сопоставляет
сессии и записывает доступ R/RW, затраты и находки. Когда нужен превентивный контроль,
управляемый хук olivares claude-hook запрашивает локальный PEP Olivares перед каждым применением
инструмента. Эти два контура независимы: получение телеметрии не означает, что политика
принудительно применяется.
Добавление Claude Code
Заголовок раздела «Добавление Claude Code»Предварительные требования
Заголовок раздела «Предварительные требования»- Бинарный файл Olivares AI, включающий собственный коннектор
claude. - UUID enterprise-тенанта, которому будут приписаны наблюдения.
- Claude Code, установленный на управляемых конечных устройствах. Локальному приёмнику не нужен ключ API Anthropic.
- Локальное соединение Claude Code с приёмником Olivares. Значения по умолчанию:
127.0.0.1:4317для OTLP/gRPC и127.0.0.1:4318для OTLP/HTTP и кооперативных хуков. - Исполняемый временный путь для сервиса Olivares.
claudeзапускается как изолированный плагин; в системах, где/tmpсмонтирован сnoexec, задайтеTMPDIRв unit-файле сервиса как отдельный каталог, принадлежащий сервисной учётной записи Olivares.
Не открывайте приёмники OTLP и кооперативный эндпоинт за пределами loopback. Они не аутентифицируют отправителя, поэтому любой доступный им хост может сфабриковать телеметрию. Управляемый PEP — отдельная поверхность: он использует собственный локальный сокет, аутентифицирует каждый запрос и записывает каждое решение.
- Откройте Control console (
/console) и выберите вкладку Connectors. Реестр коннекторов глобальный: необходима учётная запись superadmin, а сохранение, тестирование и перезагрузка требуют повышения AAL3. - Добавьте источник типа
claudeсо стабильным рабочим именем, напримерclaude-code-prod, нужным тенантом, режимомlive, интервалом0и включённым состоянием. Нулевой интервал корректен: этот коннектор поддерживает приёмники, а не опрашивает их пакетами. - Сохраните источник и выберите Reload. Строка подтверждает имя, тип, режим и состояние.
Тест в консоли недоступен для
claude, поскольку это внепроцессный коннектор; проверка выполняется при сохранении, а полный тест открытия используетolivares sources test, который запускает плагин.
Настройка Claude Code
Заголовок раздела «Настройка Claude Code»Распространяйте вместе две конфигурации: источник наблюдений и управляемую политику агента.
1. Приёмник и минимизация данных
Заголовок раздела «1. Приёмник и минимизация данных»Безопасная начальная конфигурация совпадает со значениями по умолчанию:
| Настройка источника | Начальное значение | Результат |
|---|---|---|
enable_grpc | true | Обслуживает OTLP/gRPC на grpc_addr (127.0.0.1:4317). |
enable_http | true | Обслуживает OTLP/HTTP и кооперативный хук на http_addr (127.0.0.1:4318). |
hook_path | /hooks | Путь кооперативного хука внутри HTTP-приёмника. |
content_capture | пусто | Сохраняет структуру, но не промпты, тела инструментов или API. Расширенное рассуждение всегда скрывается. |
enforcement | пусто | Наблюдает хуки; этот источник не возвращает превентивных решений. |
allow_public_bind | false | Запрещает bind за пределами loopback. |
Если на хосте работают несколько приёмников OTLP, назначьте каждому отдельный loopback-адрес и
используйте то же значение в конфигурации агента. Claude, Codex и Grok в некоторых режимах по
умолчанию используют 4318 и не могут одновременно занять один сокет.
2. Managed settings и управляемый PEP
Заголовок раздела «2. Managed settings и управляемый PEP»Создайте системный файл Claude Code бинарным файлом Olivares:
olivares agent managed-settings \ --otel-endpoint http://127.0.0.1:4317 \ --out /etc/claude-code/managed-settings.jsonГенератор устанавливает allowManagedHooksOnly: true, хук PreToolUse, запускающий
olivares claude-hook, и хук маскирования данных PostToolUse. Он также включает OTLP с протоколом
grpc, поэтому указанный выше эндпоинт использует приёмник 4317, а не HTTP-приёмник 4318.
Файл относится к управляемому системному уровню, а не к HOME сессии.
Сервер PEP включается, когда Olivares запускается с файлом, указанным в
OLIVARES_HOOK_PEP_CONFIG. Ниже приведён корректный пример политики для одного тенанта:
{ "listen": "127.0.0.1:8447", "tenants": [ { "tenant": "11111111-1111-4111-8111-111111111111", "require_firm_identity": true, "enforcement": "enforce", "policy": { "version": "claude-prod-v1", "default": "allow", "rules": [ { "tool": "Bash", "decision": "ask", "reason": "Shell commands require human confirmation" } ] } } ]}Запущенные Olivares сессии получают краткоживущие значения для OLIVARES_HOOK_PEP_URL,
OLIVARES_HOOK_PEP_TOKEN, OLIVARES_HOOK_PEP_TENANT и атрибуции агента. Для независимо
запущенной сессии оператор должен передать эти значения через канал секретов; не записывайте их
в managed-settings.json. Если эндпоинт отсутствует или недоступен, olivares claude-hook
возвращает deny.
Для начального неблокирующего развёртывания используйте режим observe с будущим временем RFC3339
в observe_until. Это временное разрешение: отсутствующее, неверное или истёкшее время приводит
к enforce. Инварианты платформы — включая идентичность, тенант, kill switch, firewall и ошибки
fail-closed — продолжают принудительно применяться, пока бизнес-правила наблюдаются.
Использование CLI
Заголовок раздела «Использование CLI»Следующие фрагменты вывода измерены 30 августа 2026 года с бинарным файлом, собранным из этого worktree. Общие сообщения запуска движка опущены.
Регистрация источника
Заголовок раздела «Регистрация источника»При использовании SQLite остановите движок перед изменением реестра из CLI, поскольку применяется профиль с одним писателем. С PostgreSQL операция может выполняться параллельно с движком. Для изменений SQLite на ходу используйте консоль.
olivares sources set \ --data-dir /var/lib/olivares \ --name claude-code-prod \ --kind claude \ --tenant 11111111-1111-4111-8111-111111111111 \ --poll-seconds 0 \ --config mode=live \ --actor platform-operator \ --reason integration-guide-rolloutcreated source "claude-code-prod" (kind "claude", tenant "11111111-1111-4111-8111-111111111111", enabled true) kind: - → claude tenant: - → 11111111-1111-4111-8111-111111111111 poll_seconds: - → 0 enabled: - → true config.mode: - → live→ reload a running engine to apply: POST /v1/console/runtime/reload, or `kill -HUP <pid>` (it also applies at next boot)--actor и --reason обязательны, поскольку это изменение влияет на происхождение данных и
записывается в журнал аудита.
Проверка и открытие коннектора
Заголовок раздела «Проверка и открытие коннектора»olivares sources validate \ --data-dir /var/lib/olivares \ --name claude-code-prod
olivares sources test \ --data-dir /var/lib/olivares \ --name claude-code-prod \ --timeout 20ssource "claude-code-prod"configuration: VALID (everything that can be decided without the network) ? not checked here: the "claude" connector runs out-of-process, so its connector identity is only known once the binary is launched (`olivares sources test` launches it)configuration: VALID (everything that can be decided without the network) ? not checked here: the "claude" connector runs out-of-process, so its connector identity is only known once the binary is launched (`olivares sources test` launches it)source "claude-code-prod" (claude): ANSWERED — the connector opened with this configuration and was closed againNO SOURCE ROW WAS WRITTEN and nothing was wired into a running engine.validate не открывает сокеты. test вызывает Open и Close, но не вызывает Gather, не
подключает источник к движку и не доказывает, что Claude Code отправляет телеметрию. Если плагин
завершается с permission denied, хотя бит исполнения установлен, проверьте, не расположен ли
TMPDIR процесса на томе noexec.
Подтверждение fail-closed поведения хука
Заголовок раздела «Подтверждение fail-closed поведения хука»Если намеренно не настраивать эндпоинт, клиент возвращает отказ в формате, ожидаемом Claude Code:
printf '%s\n' '{"hook_event_name":"PreToolUse","tool_name":"Read","tool_input":{"file_path":"/repo/README.md"}}' | olivares claude-hook{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"governed PEP endpoint not configured (deny-closed)"}}Эта проба проверяет локальный клиент, а не удалённое решение политики. В production также
проверьте разрешающее правило, запрещающее правило и запрос ask с твёрдой идентичностью до
расширения развёртывания.
Control console
Заголовок раздела «Control console»Добавление источника не создаёт исторические данные. После перезагрузки реестра и получения первого события операторам доступны следующие представления:
| Расположение | Что показано | Как понимать состояние |
|---|---|---|
Control console > Connectors (/console) | Имя, тип claude, режим, несекретная конфигурация, состояние реестра и действия сохранения/перезагрузки. | «Сохранено» доказывает персистентность. Это не доказывает получение события. |
Health > Connectors (/health) | Состояние коннектора, рабочее сообщение, тренд и последний известный опрос или активность. | Открытый приёмник может быть исправен, пока агент молчит. |
Observability > Ingestion (/observability) | Записи по источнику, типы edge, cost и finding, сигнал, первое и последнее событие. | Это общепроцессные счётчики с момента запуска; они сбрасываются при перезапуске и не относятся к отдельному тенанту. |
Sessions (/sessions) | Сессия, состояние, действие, модель, токены, стоимость, последняя активность и поза enforced или observed. | Поза суммирует свидетельства событий; она не выводится из регистрации коннектора. |
Access map (/access-map) | Рёбра R/RW, атрибутированные по наблюдаемым инструментам, MCP и ресурсам. | Наблюдаемое ребро описывает активность и не равнозначно предварительной авторизации. |
Cost & FinOps (/finops) | Образцы стоимости и токенов, выведенные из полученной телеметрии. | Покрытие ограничено тем, что экспортирует парк; вызовы, не отправившие OTLP, восстановить нельзя. |
Security (/security) | Пробелы телеметрии, поза sandbox/MCP и другие выданные находки. | Отсутствующая находка не делает ненаблюдаемую поверхность соответствующей требованиям. |
Claude Policy (/claude-policy) | Авторство, распространение, версии и состояние check-in управляемых поверхностей Claude Code. | Распространение и проверка дрейфа — разные факты, показанные отдельно. |
Использование в production
Заголовок раздела «Использование в production»- Поэтапное развёртывание: начните со структурного содержимого и правил в наблюдаемом режиме
со сроком действия. Проверьте ложные срабатывания, затем переведите каждый тенант в
enforce. - Администрирование парка: распространяйте
/etc/claude-code/managed-settings.jsonчерез RPM, неизменяемый образ, Ansible, Salt или эквивалентный корпоративный менеджер конфигурации. Проверяйте активный файл вторым источникомmanaged-settings, чтобы обнаруживать отсутствие или дрейф. - Разделение обязанностей: команда платформы поддерживает приёмники и доступность; команда
безопасности версионирует правила; владельцы тенантов рассматривают запросы
askи находки. Каждое привилегированное изменение остаётся атрибутированным. - Минимизация данных: оставляйте
content_captureпустым, если нет утверждённой форензической потребности с заданными местом хранения и сроком. Структурных данных обычно достаточно для анализа внедрения и затрат. - Укреплённые хосты: оставляйте приёмники на loopback, предоставьте плагину минимальный
исполняемый временный каталог и сделайте политику доступной только для чтения. Не ослабляйте
noexecглобально ради запуска коннектора.
Что принудительно применяется, а что только наблюдается
Заголовок раздела «Что принудительно применяется, а что только наблюдается»| Поверхность | Фактическое поведение |
|---|---|
Телеметрия OTLP и кооперативный хук коннектора claude | Наблюдаются. Отправитель сотрудничает; loopback-приёмник не аутентифицирует, и локальный процесс может пропустить или сфабриковать сигнал. |
Пустая настройка enforcement источника | Наблюдается. Это значение по умолчанию, и оно не блокирует инструменты. |
olivares claude-hook + PEP + managed settings | Принудительно применяет allow, ask или deny к событиям, которые Claude Code может запретить, и записывает решение. Сбой эндпоинта приводит к отказу по принципу deny-closed. |
allowManagedHooksOnly на управляемом уровне | Укрепляет установку против пользовательских или проектных хуков, способных конкурировать с PEP. |
PostToolUse | Наблюдает и маскирует данные после действия. Не может отменить уже произведённые инструментом эффекты. |
| Действия вне процесса и хука Claude Code | Не охвачены этим подключением. Используйте средства ОС, нативный аудит и сетевые политики как дополнительные барьеры. |
Для операционной проверки нужны четыре независимых контроля: сохранённый реестр, открытый коннектор, видимое в Ingestion событие и инструмент, действительно заблокированный PEP. Ни один из них не заменяет остальные три.