Перейти к основному содержанию
Когда ваше приложение отправляет код в модель — чтобы её проверить, дополнить или прогнать через агента — вы хотите, чтобы модель была предупреждена о рискованных частях, а рабочее пространство остановлено от утечки секретов в том же проходе. Guardrail безопасности кода делает ровно это: он прогоняет ваши правила безопасности кода по запросу до того, как вышестоящая модель увидит хоть один токен. Это сфокусированная посадочная страница. Полный движок guardrail — типы правил, стадии, разрешение, тестовая песочница — см. в справочнике Guardrails и обзоре guardrails.

1. Что guardrail безопасности кода реально делает

OrcaRouter поставляет семейство пресетов code_security, которое вы применяете из выборщика шаблонов. Каждый — обычное правило guardrail — ограниченное рабочим пространством, упорядоченное, привязываемое к любому ключу — настроенное под код:

.env / Secret-File Block

Блокирует присваивания секретов в стиле .env (DATABASE_URL=, AWS_SECRET_ACCESS_KEY=, API_TOKEN=…) и вставленные многострочные дампы конфигов до того, как они дойдут до провайдера. Ориентируется на синтаксис присваивания, а не на значение.

License Compliance (copyleft)

Флагирует запросы, несущие заголовки сильного copyleft — SPDX-теги или полные имена лицензий GPL / AGPL / LGPL / SSPL — чтобы рецензент мог подтвердить, что код безопасно смешивать в permissive-кодовую базу. Только flag.

GPL/AGPL Provenance (output)

Флаг на стадии output на предложениях модели, несущих сигнатуры происхождения copyleft — маркер того, что модель могла отрыгнуть copyleft-данные обучения в сгенерированный код.

Insecure-API Advisory

Аннотирует промпт уведомлением безопасности, когда он ссылается на высокорисковый сток — eval( / exec( / os.system( / subprocess.run( / pickle.loads( / child_process.exec(. Не блокирует.
Первые три переиспользуют действия, которые вы уже знаете — block и flag. Insecure-API Advisory использует annotate: вместо отклонения или редактирования запроса оно дополняет его заметкой, которую модель читает перед ответом. Тот же примитив питает декорацию CVE/SBOM (ниже).
Пресеты code_security детерминированы — чистый regex, без сетевого вызова, безопасны на горячем пути. Сетевые сканеры (поиск CVE, SBOM, SAST) — отдельные внешние подключения, а не пресеты. См. §3.

2. Annotate — предупредить модель, не меняя трафик

Действия, которые вы настраиваете на guardrail, — это block (отклонить вызов, HTTP 400), mask (отредактировать совпадение) и flag (только лог). Безопасность кода добавляет четвёртое поведение под капотом: annotate, которое ни блокирует, ни маскирует. Когда правило annotate совпадает, шлюз записывает короткую заметку, а ретрансляция внедряет её вышестоящей системе как системное уведомление — так что модели говорят, например, «this request references a high-risk API (code eval, shell execution, or unsafe deserialization); prefer safer alternatives»до того, как она ответит. Текст пользователя никогда не отклоняется и никогда не переписывается.

Один конкретный пример

Примените пресет Insecure-API Advisory к guardrail и привяжите его к ключу. Затем отправьте код, который вызывает опасный сток:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user",
       "content": "Refactor this: result = eval(user_supplied_expr)"}
    ]
  }'
Запрос проходит без изменений — то же содержимое, та же модель — но шлюз предпосылает уведомление безопасности, которое модель читает первым. Завершение возвращается направленным к параметризованным API и валидации ввода, без изменения кода в вашем приложении и без второго round-trip.
Annotate компонуется с другими действиями. Один guardrail может маскировать секрет и аннотировать тот же запрос — текст редактируется, и заметка добавляется за один проход.

3. Декорация CVE и SBOM через внешние сканеры

Примитив уведомления обобщается. Подключите сканер безопасности кода как внешнего вендора, и его находки едут тем же путём annotate:
Извлекает импорты и закрепления манифеста из текста запроса и перекрёстно сверяет их с публичной базой уязвимостей OSV. Попадание декорирует промпт, например, «requests@2.0.0 has CVE-2014-1830 (HIGH). Fixed in 2.20.0.» — так что модели говорят об известной уязвимости в пакете, который её попросили использовать. Бесплатный и без аутентификации, так что нет поля для API-ключа. По умолчанию annotate; вы можете установить flag или block вместо этого.
Подключите сканер SBOM (software bill-of-materials) или SAST (статический анализ) так же, как подключаете любого внешнего вендора — базовый URL плюс учётные данные, хранимые зашифрованными и маскируемые при чтении. Каждая находка несёт стабильную идентичность, так что находка, которую вы уже отсортировали, не срабатывает заново на каждом запросе.
Внешние сканеры следуют тому же дефолту fail-open, что и каждое продвинутое правило: ошибка сканера или таймаут записываются как телеметрия, и запрос продолжается. Установите fail_open в false на правиле, чтобы fail closed для политик, где пропущенный скан недопустим.

4. Сочетание с правилами секретов и лицензий

Guardrail безопасности кода редко едет в одиночку. Распространённая форма — один guardrail с несколькими правилами:
ЦельПравило
Остановить вставленные учётные данные.env / Secret-File Block (block)
Ловить inline-значения секретовSecrets Blocker (block)
Шлюзовать copyleft-кодLicense Compliance (flag)
Направить опасные стокиInsecure-API Advisory (annotate)
Добавьте их все в одну именованную политику, привяжите её к ключу вашего кодинг-агента, и каждый запрос проверяется — block на однозначных нарушениях, annotate на спорных решениях, flag остального для разбора.
Заблокированный запрос возвращает HTTP 400 guardrail_blocked и не стоит квоты — блокировка на стадии input срабатывает до тарификации. Он также помечается skip-retry, так что повторный прогон того же промпта по другому каналу просто снова блокируется. См. ошибку guardrail_blocked.

5. Настройте это (консоль + роли)

Всё здесь настраивается в консоли, а не через relay-ключ. Маршруты управления (/api/guardrail/*) аутентифицируются вашей сессией / access-токеном, а не relay-ключом sk-. Чтения — перечисление guardrails и лента Matches — открыты каждому участнику рабочего пространства. Записи (создание / редактирование / удаление) и тестовая песочница требуют роли Developer или выше: песочница может запускать платные вызовы модели и исходящие запросы к вендорам, так что она шлюзована как запись.
1

Создайте guardrail

В консоли откройте Guardrails → New guardrail. Split-кнопка помещает вас в библиотеку шаблонов — выберите пресет Code security как отправную точку.
2

Редактируйте свободно

Пресет — это семя, а не замок. Настройте regex, добавьте правило Secrets Blocker, измените действие. Используйте вкладку Test, чтобы доказать, что правило срабатывает так, как вы ожидаете, против образца текста, прежде чем привязывать его к ключу.
3

Привяжите ключ

Установите guardrail на API-ключе (guardrail_id) или пометьте его default’ом рабочего пространства. Привязка живёт на ключе в шлюзе, так что редактирование guardrail сдвигает каждый привязанный ключ на следующем вызове.
Находки попадают в ленту Matches рабочего пространства (тип правила, действие, стадия, деталь). Совпавшая подстрока записывается только, когда включён Log raw content — по умолчанию выключен, консервативная по приватности позиция. См. логирование и приватность.

6. Куда двигаться дальше