Перейти к основному содержанию
failproofai поставляется с 30 встроенными политиками, которые перехватывают распространённые режимы сбоя агентов. Каждая политика срабатывает на определённый тип события хука и имя инструмента. Девять политик принимают параметры, которые позволяют настроить их поведение без написания кода. Четыре политики рабочего процесса обеспечивают выполнение конвейера commit → push → PR → CI перед остановкой Claude.

Обзор

Политики сгруппированы по категориям:
КатегорияПолитикиТип хука
Опасные командыblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
Секреты (санитайзеры)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
Окружениеblock-env-files, protect-env-varsPreToolUse
Доступ к файламblock-read-outside-cwd, block-secrets-writePreToolUse
Gitblock-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-stagedPreToolUse
База данныхwarn-destructive-sql, warn-schema-alterationPreToolUse
Предупрежденияwarn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-installPreToolUse
Рабочий процессrequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stopStop
  • block- — остановить агента от продолжения.
  • warn- — дать агенту дополнительный контекст, чтобы он мог самокорректироваться.
  • sanitize- — удалить чувствительные данные из выходных данных инструмента перед тем, как их увидит агент.
  • require- — блокировать событие Stop до выполнения условий.

Каждая политика поддерживает необязательное поле hint в policyParams. Подсказка добавляется к сообщению deny или instruct, которое видит Claude, предоставляя практическое руководство без изменения кода политики. Работает со встроенными, пользовательскими и условными политиками. Подробнее см. в разделе Конфигурация → hint.

Опасные команды

Предотвратите выполнение агентами операций, которые трудно отменить или которые могут повредить хост-систему.

block-sudo

События: PreToolUse (Bash)
По умолчанию: Отклоняет любую команду sudo.
Блокирует вызовы, содержащие ключевое слово sudo. Сопоставление шаблонов выполняется на разобранных токенах команд, а не на исходной строке, чтобы предотвратить обход через инъекцию операторов shell. Параметры:
ПараметрТипПо умолчаниюОписание
allowPatternsstring[][]Точные префиксы команд, которые разрешены. Каждая запись сопоставляется с разобранными токенами argv.
Пример:
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
С такой конфигурацией sudo systemctl status nginx разрешён, но sudo rm /etc/hosts запрещён.
Шаблоны сопоставляются с разобранными токенами, а не с исходной командной строкой. Это предотвращает обход через добавленные операторы shell (например, sudo systemctl status x; rm -rf / не соответствует sudo systemctl status *).

block-rm-rf

События: PreToolUse (Bash)
По умолчанию: Отклоняет rm -rf, rm -fr и аналогичные формы рекурсивного удаления.
Параметры:
ПараметрТипПо умолчаниюОписание
allowPathsstring[][]Пути, которые безопасно рекурсивно удалять (например, /tmp).
Пример:
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

События: PreToolUse (Bash)
По умолчанию: Отклоняет curl <url> | bash, curl <url> | sh, wget <url> | bash и аналогичные шаблоны.
Нет параметров.

block-failproofai-commands

События: PreToolUse (Bash)
По умолчанию: Отклоняет команды, которые бы удалили или отключили failproofai (например, npm uninstall failproofai, failproofai policies --uninstall).
Нет параметров.

Секреты (санитайзеры)

Предотвратите утечку учётных данных агентом в его контекст или выходные данные. Политики санитайзеров срабатывают на событиях PostToolUse. Когда Claude запускает команду Bash, читает файл или вызывает любой инструмент, эти политики проверяют выходные данные перед возвратом Claude. Если обнаружен шаблон секрета, политика возвращает решение deny, которое предотвращает передачу выходных данных обратно.

sanitize-jwt

События: PostToolUse (все инструменты)
По умолчанию: Скрывает JWT-токены (три сегмента base64url, разделённые .).
Нет параметров.

sanitize-api-keys

События: PostToolUse (все инструменты)
По умолчанию: Скрывает распространённые форматы API-ключей: Anthropic (sk-ant-), OpenAI (sk-), GitHub PATs (ghp_), AWS access keys (AKIA), Stripe keys (sk_live_, sk_test_), и Google API keys (AIza).
Параметры:
ПараметрТипПо умолчаниюОписание
additionalPatterns{ regex: string; label: string }[][]Дополнительные regex-шаблоны для трактовки как секретов.
Пример:
{
  "policyParams": {
    "sanitize-api-keys": {
      "additionalPatterns": [
        { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo internal API key" },
        { "regex": "pat_[0-9a-f]{40}", "label": "Internal PAT" }
      ]
    }
  }
}

sanitize-connection-strings

События: PostToolUse (все инструменты)
По умолчанию: Скрывает строки подключения к базе данных, содержащие встроенные учётные данные (например, postgresql://user:password@host/db).
Нет параметров.

sanitize-private-key-content

События: PostToolUse (все инструменты)
По умолчанию: Скрывает PEM-блоки (-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY----- и т.д.).
Нет параметров.

sanitize-bearer-tokens

События: PostToolUse (все инструменты)
По умолчанию: Скрывает заголовки Authorization: Bearer <token>, где токен состоит из 20 или более символов.
Нет параметров.

Окружение

Защитите чувствительную конфигурацию окружения от чтения или раскрытия агентами.

block-env-files

События: PreToolUse (Bash, Read)
По умолчанию: Отклоняет чтение файлов .env через cat .env, вызовы инструмента Read с .env в качестве пути файла и т.д.
Не блокирует .envrc или другие файлы, связанные с окружением — только файлы, названные ровно .env. Нет параметров.

protect-env-vars

События: PreToolUse (Bash)
По умолчанию: Отклоняет команды, которые выводят переменные окружения: printenv, env, echo $VAR.
Нет параметров.

Доступ к файлам

Держите агентов внутри границ проекта и подальше от чувствительных файлов.

block-read-outside-cwd

События: PreToolUse (Read, Bash)
По умолчанию: Отклоняет чтение файлов вне текущего рабочего каталога (корня проекта).
Параметры:
ПараметрТипПо умолчаниюОписание
allowPathsstring[][]Префиксы абсолютных путей, которые разрешены даже если вне cwd.
Пример:
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

События: PreToolUse (Write, Edit)
По умолчанию: Отклоняет записи в файлы, обычно используемые для приватных ключей и сертификатов: id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Параметры:
ПараметрТипПо умолчаниюОписание
additionalPatternsstring[][]Дополнительные шаблоны имён файлов (glob-стиль) для блокировки.
Пример:
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

Предотвратите случайные пуши, force-пуши и ошибки ветвей, которые трудно отменить.

block-push-master

События: PreToolUse (Bash)
По умолчанию: Отклоняет git push origin main и git push origin master.
Параметры:
ПараметрТипПо умолчаниюОписание
protectedBranchesstring[]["main", "master"]Имена ветвей, в которые нельзя пушить напрямую.
Пример:
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
Чтобы разрешить пуши во все ветви (фактически отключив эту политику без удаления её из enabledPolicies), установите protectedBranches: [].

block-work-on-main

События: PreToolUse (Bash)
По умолчанию: Отклоняет проверку (checkout) ветвей main или master напрямую.
Параметры:
ПараметрТипПо умолчаниюОписание
protectedBranchesstring[]["main", "master"]Имена ветвей, которые нельзя проверять напрямую.

block-force-push

События: PreToolUse (Bash)
По умолчанию: Отклоняет git push --force и git push -f.
Нет специфических параметров политики. Используйте кросс-элементный hint для предложения альтернатив:
{
  "policyParams": {
    "block-force-push": {
      "hint": "Создайте новую ветвь из вашего текущего HEAD (например, `git checkout -b <new-branch>`) и пушьте её вместо этого."
    }
  }
}

warn-git-amend

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude действовать осторожно при запуске git commit --amend. Не блокирует команду.
Нет параметров.

warn-git-stash-drop

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude подтвердить перед запуском git stash drop. Не блокирует команду.
Нет параметров.

warn-all-files-staged

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude просмотреть то, что он ставит на сцену, при запуске git add -A или git add .. Не блокирует команду.
Нет параметров.

База данных

Перехватите деструктивные SQL-операции перед их выполнением на вашей базе данных.

warn-destructive-sql

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude подтвердить перед запуском SQL, содержащего DROP TABLE, DROP DATABASE или DELETE без предложения WHERE.
Нет параметров.

warn-schema-alteration

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude подтвердить перед запуском операторов ALTER TABLE.
Нет параметров.

Предупреждения

Дайте агентам дополнительный контекст перед потенциально рискованными, но неразрушительными операциями.

warn-large-file-write

События: PreToolUse (Write)
По умолчанию: Инструктирует Claude подтвердить перед записью файлов размером более 1024 КБ.
Параметры:
ПараметрТипПо умолчаниюОписание
thresholdKbnumber1024Порог размера файла в килобайтах, выше которого выводится предупреждение.
Пример:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
Обработчик хука обеспечивает ограничение stdin в 1 МБ на полезные нагрузки. Для тестирования этой политики с малым содержимым установите thresholdKb на значение значительно ниже 1024.

warn-package-publish

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude подтвердить перед запуском npm publish.
Нет параметров.

warn-background-process

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude быть осторожным при запуске фоновых процессов через nohup, &, disown или screen.
Нет параметров.

warn-global-package-install

События: PreToolUse (Bash)
По умолчанию: Инструктирует Claude подтвердить перед запуском npm install -g, yarn global add или pip install без виртуального окружения.
Нет параметров.

Поведение ИИ

Обнаружьте, когда агенты застревают или ведут себя неожиданно.

warn-repeated-tool-calls

События: PreToolUse (все инструменты)
По умолчанию: Инструктирует Claude пересмотреть, когда один и тот же инструмент вызывается 3 и более раз с идентичными параметрами — распространённый признак того, что агент застрял в цикле.
Нет параметров.

Рабочий процесс

Обеспечьте дисциплинированный рабочий процесс конца сеанса. Эти политики срабатывают на событии Stop и запрещают Claude останавливаться до выполнения каждого условия. Они следуют естественной цепочке зависимостей: commit → push → PR → CI. Если политика запрещает, более поздние политики в цепочке пропускаются (deny прерывает поток). Все политики рабочего процесса fail-open: если требуемый инструмент недоступен (например, gh не установлен, нет git remote), политика разрешает с информационным сообщением, объясняющим, почему проверка была пропущена.

require-commit-before-stop

События: Stop
По умолчанию: Отклоняет остановку, когда есть незафиксированные изменения (изменённые, подготовленные или неотслеживаемые файлы). Возвращает информационное сообщение, когда рабочий каталог чист.
Нет параметров.

require-push-before-stop

События: Stop
По умолчанию: Отклоняет остановку, когда есть неотправленные коммиты или когда текущая ветвь не имеет ветви отслеживания remote. Предлагает git push -u для создания ветви отслеживания при необходимости. Fail open, если remote не настроен.
Параметры:
ПараметрТипПо умолчаниюОписание
remotestring"origin"Имя remote для пуша.
Пример:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

События: Stop
По умолчанию: Отклоняет остановку, когда pull request не существует для текущей ветви, или когда существующий PR закрыт/объединён. Инструктирует Claude создать PR с помощью gh pr create.
Нет параметров.
Эта политика требует установки и аутентификации GitHub CLI (gh). Запустите gh auth login с личным токеном доступа, имеющим область repo для чтения доступа к pull request. Если gh не установлен или не аутентифицирован, политика fail open и сообщает причину Claude.

require-ci-green-before-stop

События: Stop
По умолчанию: Отклоняет остановку, когда CI проверки не пройдены или ещё выполняются на текущей ветви. Проверяет как запуски рабочих процессов GitHub Actions, так и сторонние bot проверки (например, CodeRabbit, SonarCloud, Codecov). Рассматривает выводы skipped как успех. Возвращает информационное сообщение, когда все проверки пройдены.
Нет параметров.
Эта политика требует установки и аутентификации GitHub CLI (gh). Запустите gh auth login с личным токеном доступа, имеющим область repo для чтения доступа к запускам рабочих процессов Actions и API проверок. Если gh не установлен или не аутентифицирован, политика fail open и сообщает причину Claude.


Отключение отдельных политик

Удалите конкретную политику из enabledPolicies в вашей конфигурации или переключите её в панели Policies на главной панели.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
Политики, не указанные в enabledPolicies, не запускаются, даже если существуют записи policyParams для них.