Перейти к содержимому

Интеграция Claude Code

Эта интеграция подключает Claude Code к control plane управления, не превращая Olivares AI в обязательный прокси. Коннектор claude получает телеметрию OTLP и события хуков, сопоставляет сессии и записывает доступ R/RW, затраты и находки. Когда нужен превентивный контроль, управляемый хук olivares claude-hook запрашивает локальный PEP Olivares перед каждым применением инструмента. Эти два контура независимы: получение телеметрии не означает, что политика принудительно применяется.

  • Бинарный файл 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 — отдельная поверхность: он использует собственный локальный сокет, аутентифицирует каждый запрос и записывает каждое решение.

  1. Откройте Control console (/console) и выберите вкладку Connectors. Реестр коннекторов глобальный: необходима учётная запись superadmin, а сохранение, тестирование и перезагрузка требуют повышения AAL3.
  2. Добавьте источник типа claude со стабильным рабочим именем, например claude-code-prod, нужным тенантом, режимом live, интервалом 0 и включённым состоянием. Нулевой интервал корректен: этот коннектор поддерживает приёмники, а не опрашивает их пакетами.
  3. Сохраните источник и выберите Reload. Строка подтверждает имя, тип, режим и состояние. Тест в консоли недоступен для claude, поскольку это внепроцессный коннектор; проверка выполняется при сохранении, а полный тест открытия использует olivares sources test, который запускает плагин.
Настройте, кто получает доступ и чем может администрировать: подключайте пользователей, настраивайте SSO и формируйте рабочие области и группы агентов. Настройте, кто получает доступ и чем может администрировать: подключайте пользователей, настраивайте SSO и формируйте рабочие области и группы агентов.

Распространяйте вместе две конфигурации: источник наблюдений и управляемую политику агента.

Безопасная начальная конфигурация совпадает со значениями по умолчанию:

Настройка источникаНачальное значениеРезультат
enable_grpctrueОбслуживает OTLP/gRPC на grpc_addr (127.0.0.1:4317).
enable_httptrueОбслуживает OTLP/HTTP и кооперативный хук на http_addr (127.0.0.1:4318).
hook_path/hooksПуть кооперативного хука внутри HTTP-приёмника.
content_captureпустоСохраняет структуру, но не промпты, тела инструментов или API. Расширенное рассуждение всегда скрывается.
enforcementпустоНаблюдает хуки; этот источник не возвращает превентивных решений.
allow_public_bindfalseЗапрещает bind за пределами loopback.

Если на хосте работают несколько приёмников OTLP, назначьте каждому отдельный loopback-адрес и используйте то же значение в конфигурации агента. Claude, Codex и Grok в некоторых режимах по умолчанию используют 4318 и не могут одновременно занять один сокет.

Создайте системный файл 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 — продолжают принудительно применяться, пока бизнес-правила наблюдаются.

Требуется усиленная аутентификация — AAL3 (аппаратная, устойчивая к фишингу) Требуется усиленная аутентификация — AAL3 (аппаратная, устойчивая к фишингу)

Следующие фрагменты вывода измерены 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-rollout
created 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 20s
source "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 again
NO SOURCE ROW WAS WRITTEN and nothing was wired into a running engine.

validate не открывает сокеты. test вызывает Open и Close, но не вызывает Gather, не подключает источник к движку и не доказывает, что Claude Code отправляет телеметрию. Если плагин завершается с permission denied, хотя бит исполнения установлен, проверьте, не расположен ли TMPDIR процесса на томе noexec.

Если намеренно не настраивать эндпоинт, клиент возвращает отказ в формате, ожидаемом 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 > 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.Распространение и проверка дрейфа — разные факты, показанные отдельно.
Оперативная работа агентов — что каждая сессия делает прямо сейчас, её токены, стоимость и ритм, обновляемые по живому потоку. Оперативная работа агентов — что каждая сессия делает прямо сейчас, её токены, стоимость и ритм, обновляемые по живому потоку. Находки ограничителей, состояние принуждения, очередь аномалий и форензика инцидентов с защитой от подделки. По умолчанию плоскость работает в детективном режиме — она фиксирует, но сама по себе ничего не блокирует, пока принуждение не включено и не поставлено под управление. Находки ограничителей, состояние принуждения, очередь аномалий и форензика инцидентов с защитой от подделки. По умолчанию плоскость работает в детективном режиме — она фиксирует, но сама по себе ничего не блокирует, пока принуждение не включено и не поставлено под управление.
  • Поэтапное развёртывание: начните со структурного содержимого и правил в наблюдаемом режиме со сроком действия. Проверьте ложные срабатывания, затем переведите каждый тенант в 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. Ни один из них не заменяет остальные три.