Vizier by Vassiliy Lakhonin / эксперимент v0.1

Проверка политики между AI-агентом и инструментом.

Vizier сопоставляет предложенное действие с переданными полномочиями. До вызова MCP-инструмента, API, A2A-агента или внутреннего сервиса он возвращает ALLOW, REVIEW или BLOCK.

Текущий статус: действующий API. Публичный endpoint принимает запросы в evaluation mode. Такой запрос не вернет ALLOW. Решение, разрешающее исполнение, требует закрытых учетных данных интеграции, недоступных самому агенту. Это эксперимент v0.1 без платящих клиентов. Vizier не проверяет фактическую истинность и не выдает юридическое, compliance, security, финансовое или инвестиционное заключение. Автоматического обращения к live sources нет. REVIEW требует решения человека до любого коммерческого действия.

Зачем нужна эта проверка

Модель предлагает действие, но не определяет собственные полномочия.

Prompt injection, устаревший контекст или ошибочный план могут изменить цель и параметры tool call. Если агент развертывает код, записывает данные, меняет права или отправляет сообщение, ошибка выходит за пределы чата.

Vizier проверяет действие, цель, параметры и переданные полномочия детерминированным кодом до исполнения.

Проверка находится вне модели.

Интеграция вызывает Vizier перед инструментом. Это явный policy decision point, а не прозрачный proxy.

  1. 01 / Agent Предлагает tool call action + target + parameters
  2. 02 / Vizier Проверяет политику principal + supplied authority
  3. 03 / Decision ALLOW · REVIEW · BLOCK reason codes + request-bound receipt
  4. 04 / Caller Исполняет, ставит в очередь или останавливает контроль остается у вызывающей системы
Граница работает только тогда, когда агент не может обойти ее через прямой доступ к credentials инструмента.

Одна проверка внутри control plane AI-агентов.

Vizier принимает решение по политике до исполнения. Идентификация, изоляция исполнения, сетевые ограничения и хранение аудита остаются в окружающей инфраструктуре.

Что проверяет Vizier

  • Класс действия, цель, параметры, машинный principal и переданные делегированные полномочия.
  • Разрешенные действия и цели, лимиты значений и полномочия на чувствительные действия.
  • Решение ALLOW, REVIEW или BLOCK до исполнения инструмента.
  • reason_codes и SHA-256-привязку решения к запросу для внешнего аудита вызовов.

Что остается в инфраструктуре

  • OAuth 2.1, OIDC, token exchange и отзыв токенов, mTLS, SPIFFE/SPIRE и машинные идентичности.
  • Проверка схемы аргументов MCP, идемпотентность и техническое ограничение побочных эффектов.
  • Sandbox инструментов, network policy, egress-фильтрация и удаление прямых credentials у агента.
  • Жизненный цикл сессий, постоянное хранилище политик и receipts, хранение аудита и post-execution proof.

Первый тест

Один сценарий в shadow mode.

Начните со сценария, который развертывает код, меняет инфраструктуру или данные, выдает права, отправляет внешнее сообщение либо запускает другую систему.

Vizier записывает решение, не блокируя текущий путь. Тест должен ответить на четыре вопроса:

  • Прошло ли вперед действие, которое политика должна остановить?
  • Увидел ли человек точные параметры, цель и среду перед решением?
  • Может ли агент обойти проверку через shell или прямые credentials?
  • Оставит ли команда эту проверку в обычном пути исполнения?

Тест охватывает один сценарий. Объем, безопасная работа с данными, сроки и оплата согласуются до выдачи доступа.

Узкая область применения.

Vizier нужен командам, где AI-агент вызывает инструменты с внешним эффектом.

Подходит для теста

  • Агент пишет в production или в ценное staging-состояние.
  • Подтверждение сейчас хранится в prompt, сообщении или ручном чек-листе.
  • За последствия отвечает владелец platform, SRE, security или AI operations.
  • Команда может дать один обезличенный журнал действия и действующее правило подтверждения.

Не подходит

  • Агент работает только на чтение и не создает внешнего эффекта.
  • IAM и действующая policy enforcement уже проверяют точное действие и payload.
  • Нужны проверка фактической истинности, модерация контента или доказательство результата после исполнения.
  • Нет названного владельца действия, инцидента и решения о тесте.

Технический контракт

Один запрос до исполнения.

Основной путь принятия решения не вызывает LLM. Он проверяет тип действия, наличие principal, лимиты значений, ограничения целей, полномочия на sensitive actions и доверие к интеграции.

const request = {
  agent: { id: "release-agent-01", owner: "platform-team" },
  principal: { id: "platform-team" },
  action: {
    type: "deploy_worker",
    target: "worker:production-api",
    parameters: { environment: "production" }
  },
  authority: {
    allowed_actions: ["deploy_worker"],
    constraints: {
      allowed_targets: ["worker:staging-api"]
    }
  },
  context: {
    request_id: "deploy-447",
    timestamp: null,
    source: "rest"
  }
};

const decision = await vizier.verify(request);

if (decision.decision !== "ALLOW") {
  stopOrQueueForReview(decision);
  return;
}

await executeAction();

Публичные discovery, документация и evaluation calls открыты. Решение, разрешающее исполнение, требует backend credential, который не передается агенту.

Запустите проверку без доступа.

A2A endpoint принимает анонимные запросы в evaluation mode. Он вернет полное решение, результаты политик и receipt, но не сможет вернуть ALLOW.

curl -sS https://vizier.vassiliy-lakhonin.workers.dev/a2a \
  -H 'Content-Type: application/json' \
  -H 'A2A-Version: 1.0' \
  -d '{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "SendMessage",
  "params": { "message": {
    "messageId": "probe-1",
    "role": "ROLE_USER",
    "parts": [{ "data": {
      "agent": { "id": "release-agent-01", "owner": "platform-team" },
      "principal": { "id": "platform-team" },
      "action": {
        "type": "deploy_worker",
        "target": "worker:production-api",
        "parameters": { "environment": "production" }
      },
      "authority": {
        "allowed_actions": ["deploy_worker"],
        "constraints": { "allowed_targets": ["worker:staging-api"] }
      },
      "context": {
        "request_id": "deploy-447",
        "timestamp": null,
        "source": "a2a"
      }
    }}]
  }}
}'

Ответ

"decision": "BLOCK",
"risk_score": 1,
"reason_codes": [
  "AUTHORITY_SOURCE_UNTRUSTED",
  "TARGET_NOT_ALLOWED",
  "SENSITIVE_ACTION_REVIEW"
]

Запрос нацелен на production, хотя переданные полномочия разрешают только staging. Полный ответ содержит результаты каждой политики и request-bound receipt.

AUTHORITY_SOURCE_UNTRUSTED показывает границу anonymous lane: такой вызов сам описывает свои полномочия, поэтому решение ограничено значениями REVIEW и BLOCK.

Три способа вызова

  • REST: POST /v1/verify.
  • A2A: JSON-RPC SendMessage, protocol v1.0.
  • MCP: revision 2026-07-28, tool vizier_verify_action.

Agent Card содержит ES256 JWS в signatures[]. Подпись проверяется через опубликованный key set, но покрывает только карточку. Она не аутентифицирует caller, delegation или receipt.

Граница v0.1

v0.1 представляет собой легкую stateless-проверку для одного сценария с высоким последствием. Интеграция передает полномочия, а Vizier аутентифицирует интеграцию и проверяет предложенное действие.

Receipt привязан к запросу через SHA-256. Постоянное хранение receipts, независимая аутентификация principal и доказательство результата после исполнения остаются во внешней системе.

Процесс с неограниченным shell-доступом и cloud credentials может обойти wrapper. Vizier становится enforcement point только тогда, когда другого пути к защищаемой системе у агента нет.

Vizier не проверяет фактическую истинность, не обращается к live sources, не доказывает результат после исполнения и не выдает юридическое, compliance, security, финансовое или инвестиционное заключение. REVIEW требует решения человека.

Вопросы перед тестом.

Границы текущей версии важнее roadmap.

Vizier заменяет IAM или API Gateway?

Нет. IAM управляет credentials и доступом к ресурсу. Vizier проверяет предложенное действие по переданным полномочиям непосредственно перед исполнением.

ALLOW доказывает, что действие выполнено правильно?

Нет. Он означает только то, что переданное действие прошло переданную политику. Post-execution evidence является отдельной задачей.

Что можно отправить в запросе на тест?

GitHub-форма публична. Укажите публичный репозиторий или профиль, класс действия, текущее правило подтверждения и обезличенную почти произошедшую ошибку. Не отправляйте секреты, закрытые журналы, данные клиентов, идентификаторы production-систем, учетные данные или конфиденциальный текст политики.

Каков начальный объем интеграции?

Один ограниченный сценарий, сначала в shadow mode. Расширение рассматривается только после того, как команда увидит, находит ли проверка значимые для политики действия и мешает ли обычному процессу.

Следующий шаг

Начните с действия, которое затронет рабочую систему.

Откройте публичную GitHub-форму. Укажите публичный репозиторий или профиль, класс действия, действующее правило подтверждения и обезличенную почти произошедшую ошибку. Не добавляйте закрытые или production-данные.

Предложить тестовый сценарий

Алматы, Казахстан · UTC+5 · Обновлено 21 августа 2026