Skip to main content
Пользовательские политики позволяют вам писать правила для любого поведения агента: обеспечивать соблюдение соглашений проекта, предотвращать дрейф, контролировать деструктивные операции, обнаруживать застрявших агентов или интегрироваться с Slack, рабочими процессами одобрения и другим. Они используют ту же систему событий перехвата и решения allow, deny, instruct, что и встроенные политики.

Быстрый пример

Установите её:

Два способа загрузки пользовательских политик

Способ 1: На основе соглашений (рекомендуется)

Поместите файлы *policies.{js,mjs,ts} в .failproofai/policies/ — они загружаются автоматически, никаких флагов или изменений конфигурации не требуется. Это работает как git хуки: положите файл, и всё просто работает.
Как это работает:
  • Сканируются оба каталога проекта и пользователя (объединение — не первое совпадение)
  • Файлы загружаются в алфавитном порядке в каждом каталоге. Префиксуйте с 01-, 02- для управления порядком
  • Загружаются только файлы, совпадающие с *policies.{js,mjs,ts}; остальные файлы игнорируются
  • Каждый файл загружается независимо (отказоустойчивая загрузка для каждого файла)
  • Работает вместе с явным --custom и встроенными политиками
Политики на основе соглашений — это самый простой способ установить стандарт качества для вашей организации. Зафиксируйте .failproofai/policies/ в git, и каждый член команды автоматически получит одинаковые правила — никакой предварительной настройки для каждого разработчика не требуется. По мере того как ваша команда обнаруживает новые режимы отказа, добавляйте политику и отправляйте её. Со временем они становятся живым стандартом качества, который совершенствуется с каждым вкладом.

Способ 2: Явный путь к файлу

Разрешённый абсолютный путь сохраняется в policies-config.json как customPoliciesPath. Файл загружается заново при каждом событии перехвата — кеширование между событиями отсутствует.

Использование обоих вместе

Политики на основе соглашений и явный файл --custom могут сосуществовать. Порядок загрузки:
  1. Явный файл customPoliciesPath (если настроен)
  2. Файлы соглашений проекта ({cwd}/.failproofai/policies/, в алфавитном порядке)
  3. Файлы соглашений пользователя (~/.failproofai/policies/, в алфавитном порядке)

API

Импорт

customPolicies.add(hook)

Регистрирует политику. Вызывайте столько раз, сколько нужно для нескольких политик в одном файле.

Вспомогательные функции решений

deny(message) — сообщение отображается Claude с префиксом "Blocked by failproofai:". Единственное deny прекращает все дальнейшие оценки. instruct(message) — сообщение добавляется в контекст Claude для текущего вызова инструмента. Все сообщения instruct накапливаются и доставляются вместе.
Вы можете добавить дополнительное руководство к любому сообщению deny или instruct, добавив поле hint в policyParams — без изменения кода. Это работает для пользовательских (custom/), проектных соглашений (.failproofai-project/) и пользовательских соглашений (.failproofai-user/) политик. См. Конфигурация → hint для получения информации.

Информационные сообщения allow

allow(message) разрешает операцию и отправляет информационное сообщение обратно Claude. Сообщение доставляется как additionalContext в ответе stdout обработчика перехвата — тот же механизм, используемый instruct, но семантически отличный: это обновление статуса, а не предупреждение. Случаи использования:
  • Подтверждения статуса: allow("All CI checks passed.") — сообщает Claude, что всё в порядке
  • Объяснения отказоустойчивости: allow("GitHub CLI not installed, skipping CI check.") — сообщает Claude, почему проверка была пропущена, чтобы у него был полный контекст
  • Множественные сообщения накапливаются: если несколько политик возвращают allow(message), все сообщения объединяются с переводами строк и доставляются вместе

Поля PolicyContext

Поля SessionMetadata

Типы событий


Порядок оценки

Политики оцениваются в этом порядке:
  1. Встроенные политики (в порядке определения)
  2. Явные пользовательские политики из customPoliciesPath (в порядке .add())
  3. Политики соглашений из проектной .failproofai/policies/ (файлы в алфавитном порядке, .add() порядок внутри)
  4. Политики соглашений из пользовательской ~/.failproofai/policies/ (файлы в алфавитном порядке, .add() порядок внутри)
Первое deny прекращает все последующие политики. Все сообщения instruct накапливаются и доставляются вместе.

Переходящие импорты

Файлы пользовательских политик могут импортировать локальные модули, используя относительные пути:
Все относительные импорты, доступные из файла записи, разрешены. Это реализуется путём переписывания импортов from "failproofai" на фактический путь dist и создания временных файлов .mjs для обеспечения совместимости ESM.

Фильтрация типов событий

Используйте match.events для ограничения срабатывания политики:
Опустите match полностью, чтобы срабатывать для каждого типа события.

Обработка ошибок и режимы отказа

Пользовательские политики являются отказоустойчивыми: ошибки никогда не блокируют встроенные политики и не сбивают обработчик перехвата.
Для отладки ошибок пользовательских политик наблюдайте за файлом журнала:

Полный пример: несколько политик


Примеры

Каталог examples/ содержит готовые к использованию файлы политик:

Использование примеров явного файла

Использование примеров на основе соглашений

Команда установки не требуется — файлы автоматически подбираются при следующем событии перехвата.