编写自定义策略
- 控制台
- CLI
- 前往 Admin → 策略编辑器,选择 新建策略,并描述您希望防止的故障。
- 添加策略源码,然后在编辑器中测试预期匹配项和安全的非匹配项,解决所有验证错误。
- 保存草稿并选择 发布版本,创建一个不可变版本。
-
前往 Admin → 执行,以 观察 模式将版本部署到测试机器,并在 Observe → policy 下验证其决策,然后再执行强制执行。

从精准规则开始
以下策略仅在命令指向生产环境时才阻止破坏性的 Kubernetes 命令,不在该故障模式范围内的所有情况均返回allow()。
allow()。
选择决策类型
原因说明是为需要从中恢复的 Agent 而写的,请解释检测到了什么以及 Agent 应该怎么做。
策略对象
请在
fn 内部过滤工具,match.toolNames 不属于公共自定义策略类型。
策略上下文
每个策略都会收到一个PolicyContext。
请将所有可选值视为真正可选的。不同的 Agent 版本和事件类型不一定提供相同的字段。
常见工具输入
Failproof AI 对所有支持 harness 中的常用工具输入进行了规范化,因此策略通常可以使用统一的输入结构。
由于工具输入值的类型为
unknown,请使用防御性类型转换:
选择事件
事件的可用性及阻止行为取决于 Agent harness。在混合机群中依赖某个事件之前,请参阅 Agent harnesses。
所有策略事件名称
所有策略事件名称
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结尾。 - 支持在一个文件中多次调用
customPolicies.add()。 - 支持从本地模块进行相对导入。
- 项目策略可以提交到代码库,使相同规则随仓库一起流转。
显式文件
当验证或配置需要直接指定入口文件时,使用显式路径:验证与测试
验证会通过生产加载器执行模块,并确认其至少注册了一个策略。- 一个必须匹配并产生预期策略原因的操作。
- 一个相近但安全的操作,必须返回
allow()。 - 缺失或格式错误的工具字段。
- 不同的命令语法、路径、引号、大小写和空白符。
- 不可用的子进程或网络依赖。
运行时行为
- 内置策略先于自定义策略执行。
- 第一个
deny会停止后续所有策略的评估。 - 当没有策略拒绝事件时,多个
instruct结果可以合并。 - 策略函数的执行超时限制为 10 秒。
- 抛出的异常或超时会被记录,并被视为
allow()。 - 加载失败的约定文件会被跳过,其他自定义文件和内置策略继续运行。
- 顶层模块加载同样有 10 秒的超时限制。
- 云观察模式会运行策略,但记录非 allow 决策而不强制执行。
fn 内部限制操作范围,捕获依赖失败,并有意识地决定该失败应该 allow 还是 deny 操作。
API 导出
TypeScript 导出
PolicyContext、PolicyResult、CustomHook、PolicyDecision 和 PolicyFunction。
部署自定义策略
发布版本、以观察模式部署、验证决策,然后进入强制执行阶段。

