配置作用域
共有三个配置作用域,按优先级顺序进行评估:| 作用域 | 文件路径 | 用途 |
|---|---|---|
| project | .failproofai/policies-config.json | 每个代码仓库的配置,提交到版本控制 |
| local | .failproofai/policies-config.local.json | 个人级别的仓库覆盖配置,已加入 .gitignore |
| global | ~/.failproofai/policies-config.json | 适用于所有项目的用户级默认配置 |
合并规则
enabledPolicies — 取三个作用域的并集。在任意级别启用的策略均处于激活状态。
policyParams — 最先定义某策略参数的作用域完全优先。策略参数内部的值不进行深度合并。
customPoliciesPath — 最先定义该字段的作用域优先。
llm — 最先定义该字段的作用域优先。
配置文件格式
字段参考
enabledPolicies
类型:string[]
要启用的策略名称列表。名称必须与 failproofai policies 显示的策略标识符完全匹配。完整列表请参阅内置策略。
不在 enabledPolicies 中的策略处于非激活状态,即使在 policyParams 中有对应条目也同样如此。
policyParams
类型:Record<string, Record<string, unknown>>
各策略的参数覆盖配置。外层键为策略名称,内层键为策略专属参数。每个策略的可用参数详见内置策略。
如果某策略有参数但未指定,则使用该策略的内置默认值。未配置 policyParams 的用户将获得与之前版本完全相同的行为。
策略参数块中的未知键在 hook 触发时会被静默忽略,但运行 failproofai policies 时会显示为警告。
hint(通用字段)
类型:string(可选)
当策略返回 deny 或 instruct 时,附加到原因末尾的消息。使用它可以在不修改策略本身的情况下,为 Claude 提供可操作的指导建议。
适用于任何类型的策略——内置策略、自定义策略(custom/)、项目约定策略(.failproofai-project/)或用户约定策略(.failproofai-user/)。
hint,行为保持不变(向后兼容)。
customPoliciesPath
类型:string(绝对路径)
包含自定义 hook 策略的 JavaScript 文件路径。此字段由 failproofai policies --install --custom <path> 自动设置(路径在存储前会解析为绝对路径)。
每次 hook 事件触发时都会重新加载该文件,不存在缓存机制。关于编写自定义策略的详情,请参阅自定义策略。
基于约定的策略
除显式指定的customPoliciesPath 外,failproofai 还会自动发现并加载 .failproofai/policies/ 目录中的策略文件:
| 级别 | 目录 | 作用域 |
|---|---|---|
| 项目 | .failproofai/policies/ | 通过版本控制与团队共享 |
| 用户 | ~/.failproofai/policies/ | 个人级别,适用于所有项目 |
*policies.{js,mjs,ts} 模式的文件(例如 security-policies.mjs、workflow-policies.js),目录中的其他文件将被忽略。
无需配置: 约定策略无需在 policies-config.json 中添加任何条目。只需将文件放入对应目录,下次 hook 事件触发时即可自动加载。
联合加载: 项目级和用户级约定目录都会被扫描。两个级别中所有匹配的文件都会被加载(与 customPoliciesPath 的首个作用域优先规则不同)。
更多详情和示例请参阅自定义策略。
llm
类型:object(可选)
适用于需要进行 AI 调用的策略的 LLM 客户端配置。大多数场景下无需配置。
通过 CLI 管理配置
policies --install 和 policies --uninstall 命令会写入 Claude Code 的 settings.json(hook 入口点),而 policies-config.json 则是由你直接管理的文件。两者相互独立:
settings.json— 告知 Claude Code 在每次工具调用时执行failproofai --hook <event>policies-config.json— 告知 failproofai 要评估哪些策略以及使用什么参数
policies-config.json,修改将在下次 hook 事件触发时立即生效,无需重启。
示例:包含团队默认值的项目级配置
将.failproofai/policies-config.json 提交到代码仓库:
.failproofai/policies-config.local.json(已加入 .gitignore)进行个人覆盖配置,而不会影响其他团队成员。
