カスタムポリシーを作成する
- ダッシュボード
- CLI
- Admin → ポリシーエディタに移動し、新規ポリシーを選択して、防止したい障害を説明します。
- ポリシーのソースを追加し、エディタで期待されるマッチと安全な非マッチをテストします。すべてのバリデーションエラーを解消してください。
- ドラフトを保存し、バージョンを公開を選択してイミュータブルなバージョンを作成します。
-
Admin → 適用に移動し、observeモードでテストマシンにバージョンをデプロイして、適用前にObserve → ポリシーで判断内容を確認します。

狭いルールから始める
このポリシーは、コマンドがプロダクション環境を対象とする場合にのみ、破壊的なKubernetesコマンドをブロックします。その障害モード以外はすべてallow()を返します。
allow()を返してください。
判断を選択する
リカバリーが必要なエージェント向けに理由を記述してください。検出された内容と代わりに行うべきことを説明します。
ポリシーオブジェクト
ツールのフィルタリングは
fnの内部で行ってください。match.toolNamesはパブリックなカスタムポリシー型には含まれていません。
ポリシーコンテキスト
すべてのポリシーはPolicyContextを受け取ります。
オプショナルな値はすべて本当にオプショナルとして扱ってください。エージェントのバージョンやイベントタイプによって、提供されるフィールドが異なります。
一般的なツール入力
Failproof AI はサポートされているハーネス全体で一般的なツールを正規化するため、ポリシーは通常1つの入力形式を使用できます。
ツール入力値は
unknown型であるため、防御的な型変換を使用してください:
イベントを選択する
イベントの可用性とブロッキング動作はエージェントハーネスによって異なります。混合フリートでイベントを利用する前にエージェントハーネスを参照してください。
すべてのポリシーイベント名
すべてのポリシーイベント名
SessionStart, SessionEnd, UserPromptSubmit, PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, Notification, SubagentStart, SubagentStop, TaskCreated, TaskCompleted, Stop, StopFailure, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove, PreCompact, PostCompact, Elicitation, ElicitationResult, UserPromptExpansion, PostToolBatch, Setup一般的なポリシーパターンを作成する
保護されたパスへの書き込みをブロックする
ノンブロッキングガイダンスを提供する
セッション完了をゲートする
ポリシーファイルを読み込む
コンベンションファイル
コンベンションファイルは自動的に読み込まれます:- プロジェクトとユーザーのポリシーディレクトリは両方読み込まれます。
- ファイルは各ディレクトリ内でアルファベット順に読み込まれます。
- ファイル名は
policies.js、policies.mjs、またはpolicies.tsで終わる必要があります。 - 1つのファイル内で複数の
customPolicies.add()呼び出しがサポートされています。 - ローカルモジュールからの相対インポートがサポートされています。
- プロジェクトポリシーはコミットできるため、同じルールがリポジトリに従います。
明示的なファイル
バリデーションや設定でエントリーファイルを直接指定する場合は、明示的なパスを使用してください:バリデーションとテスト
バリデーションはプロダクションローダーを通じてモジュールを実行し、少なくとも1つのポリシーが登録されることを確認します。- マッチして意図したポリシー理由を生成するアクション1つ。
allow()を返す必要がある、類似しているが安全なアクション1つ。- ツールフィールドの欠如または不正な形式。
- コマンド構文、パス、クォート、大文字小文字、空白の代替パターン。
- 利用不可能なサブプロセスまたはネットワーク依存関係。
ランタイムの動作
- 組み込みポリシーはカスタムポリシーより先に評価されます。
- 最初の
denyでそれ以降のポリシー評価が停止します。 - いずれのポリシーもイベントを拒否しない場合、複数の
instruct結果を組み合わせることができます。 - ポリシー関数には10秒の実行期限があります。
- スローされた例外またはタイムアウトはログに記録され、
allow()として扱われます。 - 読み込みに失敗したコンベンションファイルはスキップされ、他のカスタムファイルと組み込みポリシーは続行されます。
- トップレベルのモジュール読み込みにも10秒の期限があります。
- クラウドのobserveモードはポリシーを実行しますが、non-allowの判断を適用せずに記録します。
fn内の処理に上限を設け、依存関係の失敗をキャッチし、その失敗がアクションを許可するか拒否するかを意図的に選択してください。
APIエクスポート
TypeScriptは
PolicyContext、PolicyResult、CustomHook、PolicyDecision、PolicyFunctionをエクスポートします。
カスタムポリシーをデプロイする
バージョンを公開し、observeモードでデプロイして、判断内容を確認してから適用に移行する。

