メインコンテンツへスキップ
アプリケーションがコードをモデルに送るとき — レビューしたり、補完したり、 エージェントを通じて実行したり — リスクのある部分についてモデルに警告し、同じ パスでワークスペースがシークレットを漏らすのを止めたいでしょう。コードセキュリティ ガードレールはまさにそれを行います:アップストリームモデルが 1 トークンも目に する前に、リクエストに対してあなたのコードセキュリティルールを実行します。 これは焦点を当てた着地ページです。完全なガードレールエンジン — ルールの種類、 ステージ、解決、テストサンドボックス — については、 ガードレールリファレンスガードレール概要を参照してください。

1. コードセキュリティガードレールが実際に行うこと

OrcaRouter は、テンプレートピッカーから適用する code_security プリセット ファミリーを同梱します。各々は通常のガードレールルール — ワークスペーススコープ、順序付き、任意のキーにアタッチ可能 — でコード向けに チューニングされています:

.env / Secret-File Block

.env スタイルのシークレット代入(DATABASE_URL=AWS_SECRET_ACCESS_KEY=API_TOKEN=…)と貼り付けられた複数行の設定ダンプを、 プロバイダに到達する前にブロックします。値ではなく代入の構文で判定します。

License Compliance (copyleft)

強いコピーレフトヘッダー — GPL / AGPL / LGPL / SSPL の SPDX タグまたはフル ライセンス名 — を運ぶリクエストをフラグするため、レビュアーがそのコードを パーミッシブなコードベースに混ぜても安全か確認できます。flag のみ。

GPL/AGPL Provenance (output)

コピーレフトのプロベナンス署名を運ぶモデルの提案に対する出力ステージの flag — モデルがコピーレフトの訓練データを生成コードに吐き戻した可能性のある マーカーです。

Insecure-API Advisory

高リスクのシンク — eval( / exec( / os.system( / subprocess.run( / pickle.loads( / child_process.exec( — を参照するとき、セキュリティ アドバイザリでプロンプトを注記します。非ブロッキング。
最初の 3 つは、すでに知っているアクション — blockflag — を再利用します。 Insecure-API Advisory は annotate を使います:リクエストを拒否したりリダクトする 代わりに、モデルが応答する前に読むノートでそれを補強します。同じプリミティブが CVE/SBOM 装飾(下記)を支えます。
code_security プリセットは決定的です — 純粋な正規表現、ネットワーク呼び出しなし、 ホットパス上で安全。ネットワーク化されたスキャナ(CVE ルックアップ、SBOM、SAST)は、 プリセットではなく別個の外部接続です。 §3を参照。

2. annotate — トラフィックを変えずにモデルに警告する

ガードレールで設定するアクションは、block(呼び出しを拒否、HTTP 400)、 mask(マッチをリダクト)、flag(ログのみ)です。コードセキュリティは内部で 4 つ目の挙動を加えます:annotate で、ブロックもマスクもしません。annotate ルールがマッチすると、ゲートウェイは短いノートを記録し、リレーがそれをシステム アドバイザリとしてアップストリームに注入します — そのためモデルは、例えば *「このリクエストは高リスクの API(コード eval、シェル実行、安全でない逆シリアル化)を 参照しています。より安全な代替を優先してください」*と、応答する前に伝えられ ます。ユーザーのテキストは決して拒否されず、決して書き換えられません。

ひとつの具体例

Insecure-API Advisory プリセットをガードレールに適用し、キーにアタッチします。 それから危険なシンクを呼び出すコードを送ります:
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)"}
    ]
  }'
リクエストは変更されずに通過します — 同じコンテンツ、同じモデル — が、ゲートウェイは モデルが最初に読むセキュリティアドバイザリを先頭に付加します。完了は、あなたの アプリケーションのコード変更なし、2 回目のラウンドトリップなしで、パラメータ化された API と入力検証に向けて舵を切られて戻ってきます。
annotate は他のアクションと組み合わさります。ひとつのガードレールがシークレットを maskかつ同じリクエストを annotate できます — テキストがリダクトされ、 ノートがひとつのパスで追加されます。

3. 外部スキャナによる CVE と SBOM 装飾

アドバイザリプリミティブは一般化します。コードセキュリティスキャナを 外部ベンダーとして接続すると、 その発見が同じ annotate パスに乗ります:
リクエストテキストからインポートとマニフェストのピンを抽出し、公開 OSV 脆弱性データベースに対して相互参照します。ヒットはプロンプトを、例えば *「requests@2.0.0 has CVE-2014-1830 (HIGH). Fixed in 2.20.0.」*で装飾します — そのためモデルは、使うよう求められたパッケージの既知の脆弱性について伝えられ ます。無料かつ認証不要なので、API キーフィールドはありません。デフォルトは annotate です。代わりに flag または block に設定できます。
SBOM(ソフトウェア部品表)または SAST(静的解析)スキャナを、任意の外部 ベンダーを接続するのと同じ方法で接続します — ベース URL とクレデンシャル、 暗号化保存され読み取り時にマスクされます。各発見は安定したアイデンティティを 運ぶため、すでにトリアージした発見がすべてのリクエストで再発火することはありません。
外部スキャナは、すべての高度なルールと同じフェイルオープンデフォルトに従います: スキャナエラーまたはタイムアウトはテレメトリとして記録され、リクエストは継続します。 見逃されたスキャンが許容できないポリシーでは、ルールの fail_openfalse に 設定してフェイルクローズにします。

4. シークレットとライセンスルールとのペアリング

コードセキュリティガードレールは単独で乗ることはまれです。一般的な形は、いくつかの ルールを持つひとつのガードレールです:
目標ルール
貼り付けられたクレデンシャルを止める.env / Secret-File Block(block
インラインのシークレット値を捕捉するSecrets Blockerblock
コピーレフトコードをゲートするLicense Compliance(flag
危険なシンクへ舵を切るInsecure-API Advisory(annotate
それらをすべてひとつの名前付きポリシーに追加し、あなたのコーディングエージェントの キーにアタッチすれば、すべてのリクエストがスクリーニングされます — 明白な違反は block し、判断を要するものは annotate し、残りはレビュー用に flag します。
ブロックされたリクエストは HTTP 400 guardrail_blocked を返し、クォータを 消費しません — 入力ステージのブロックはメータリングの前に発火します。skip-retry とも マークされるため、同じプロンプトを別のチャネルに対して再実行してもまたブロックされる だけです。 guardrail_blocked エラーを参照。

5. 設定する(コンソール + ロール)

ここでのすべては、リレーキー経由ではなくコンソールで設定されます。管理ルート (/api/guardrail/*)は sk- リレーキーではなく、あなたのセッション / アクセス トークンで認証します。読み取り — ガードレールと Matches フィードの一覧 — は すべてのワークスペースメンバーに開放されています。書き込み(作成 / 編集 / 削除) テストサンドボックスには、Developer ロール以上が必要です:サンドボックスは 有料のモデル呼び出しとアウトバウンドのベンダーリクエストを発火し得るため、書き込みと 同様にゲートされます。
1

ガードレールを作成する

コンソールで Guardrails → New guardrail を開きます。スプリットボタンが テンプレートライブラリに導きます — 出発点として Code security プリセットを 選びます。
2

自由に編集する

プリセットはシードであり、ロックではありません。正規表現をチューニングし、 Secrets Blocker ルールを追加し、アクションを変更します。キーにアタッチする前に、 ルールが期待どおりにサンプルテキストに対して発火することを証明するには Test タブを使います。
3

キーをアタッチする

API キーにガードレールを設定(guardrail_id)するか、ワークスペースデフォルトと してマークします。バインディングはゲートウェイのキー上に存在するため、ガードレールの 編集はアタッチされた全キーを次の呼び出しでシフトします。
発見はワークスペースの Matches フィード(ルールの種類、アクション、ステージ、 detail)に着地します。マッチした部分文字列は、Log raw content がオンのとき のみ記録されます — デフォルトはオフ、プライバシー保守的な姿勢です。 ロギングとプライバシーを参照。

6. 次にどこへ