为你的代理设定可读的边界。获得可验证的决策。
是什么 · 快速开始 · 工作原理 · SDK · CLI · 策略 · 文档 · 规范
HushSpec 是一项开放规范,用于定义 AI 代理运行时所受的安全控制。 用 YAML 编写策略,在 Rust、TypeScript、Python 或 Go 中求值,并生成 将每个决策与其背后策略关联起来的回执。
它覆盖代理实际接触的内容:文件、网络、shell、工具、浏览器
和代码执行。规范定义规则及其含义;你的运行时
通过 HushGuard 或其自身的集成来执行边界。
| 声明 | 执行 | 证明 |
|---|---|---|
| 可审查的 YAML,包含可复用的基础策略和显式权限。 | 在操作点做出一致的 allow、warn 和 deny 决策。 | 决策回执、策略签名和可验证日志。 |
规范 1.0.0 已稳定。 文档格式、求值语义、规范形式 和传输格式在 1.x 系列中已冻结。有关契约及其测试覆盖, 请参阅版本管理策略和 SDK 一致性矩阵。
1.0 SDK 版本尚未发布。有关实现、资格认证和发布证据, 请参阅交付状态。
实验性的外部一致性控制器 针对 L0-L3 语料库测试捕获的可执行文件,并保留其输入、 输出和身份。Go 适配器是第一方启动工作,并非独立的 引擎或运行时边界资格认证。
实验性的可信调用协调器 针对一个经过认证的策略快照检查主机限定的 MCP 工具及其效果, 记录持久许可,然后进行分发。其隔离编码试点 测试真实编辑、被阻止的操作和崩溃证据。这是一项有范围限定的 第一方演示,并非外部采用或通用 MCP 遏制。
从此检出构建 h2h CLI:
cargo install --path crates/hushspec-cli --locked
将其保存为 policy.yaml。它保护凭据、限制网络访问,
并在工具写入文件或推送代码前请求确认。
hushspec: "1.0.0"
name: production-agent
rules:
forbidden_paths:
patterns: ["**/.ssh/**", "**/.aws/**", "/etc/shadow"]
egress:
allow: ["api.openai.com", "*.anthropic.com", "api.github.com"]
default: block
tool_access:
allow: [file_read, search]
block: [shell_exec, run_command]
require_confirmation: [file_write, git_push]
default: block
验证它,然后尝试三个决策:
h2h validate policy.yaml
h2h eval policy.yaml --type egress --target api.openai.com
# allow
h2h eval policy.yaml --type tool_call --target shell_exec
# deny
h2h eval policy.yaml --type tool_call --target file_write
# warn: confirmation required
这些命令对操作进行求值;它们不会执行操作。eval 在允许时以
0 退出,拒绝时以 1 退出,警告时以 4 退出。运行时必须在分发操作前
处理该决策。将其接入你的代理 →
| 方式 | 安装 |
|---|---|
| Cargo | cargo install hushspec-cli |
| Homebrew | brew install backbay-labs/tap/h2h |
| npm | npm install -g @hushspec/cli |
| 预构建二进制文件 | GitHub Releases,附带校验和与来源证明 |
打包安装程序依赖于发布流水线已发布相应的 制品。上面的源码安装直接从本检出构建。
如需脚手架生成的策略和测试套件,请运行 h2h init --preset default。
完整工作流请参阅首个策略指南。
HushGuard 加载策略,并将求值、执行模式、确认、
回执接收器和观察者整合在一起。在分发工具前调用 enforce:
import { HushGuard } from '@hushspec/core';
const guard = HushGuard.fromFile('./policy.yaml');
guard.enforce({ type: 'tool_call', target: 'shell_exec' });
// Throws HushSpecDenied under the quickstart policy.
未通过必需签名验证的策略会产生被拒绝的 guard:
每个操作都会以 __hushspec_policy_unverified__ 被拒绝。热重载失败时
会保留最后一个有效策略继续生效。未知字段和无效文档
会被明确拒绝。
执行边界是运行时的责任。HushSpec 提供 可移植的策略契约和 SDK 原语来构建它。 运行时集成指南 →
审计求值接收已解析的策略,并返回一个回执,其中包含其
规范 content_hash、决策、执行者上下文、规则和检测轨迹,
以及执行处置。操作内容由其哈希和字节
大小表示,不嵌入原始内容。
# Inspect the receipt for one evaluated action.
h2h eval policy.yaml --type egress --target api.openai.com --format receipt
证据可以超越运行时传播:
| 制品 | 你可以验证什么 |
|---|---|
| 策略签名 | 哪个密钥签署了已解析的策略,包括其继承的规则。 |
| 决策回执 | 哪个策略和记录的规则结果产生了该决策。 |
| 回执日志 | 条目之间的哈希链接,第一个断开的链接按行标识。 |
| 策略包 | 对描述策略的 in-toto 语句的 DSSE 证明。 |
Ed25519 签名覆盖已解析策略的内容哈希,因此重新格式化文件
会保留其签名,而更改继承的规则会使其失效。签名、
回执验证和包验证在所有四个 SDK 中均可用;
Rust 需要 signing feature,Python 需要 signing extra。
一种策略语言,横跨四个 SDK。共享语料库检查求值、 规范字节、策略哈希和回执格式在各实现之间的一致性。
在 1.0 发布之前,请使用此源码检出。下面的注册表命令 适用于即将发布的版本,并非当前可用的 1.0 包。
| SDK | 发布后通过注册表安装 | 参考 |
|---|---|---|
| Rust | cargo add hushspec | Crate |
| TypeScript | npm install @hushspec/core | Package |
| Python | pip install hushspec | Package |
| Go | go get github.com/backbay-labs/hush/packages/[email protected] | Module |
Go SDK 发布将使用嵌套的 packages/go/v1.0.0 标签。
如需签名,在 Rust 中使用 hushspec = { version = "1.0", features = ["signing"] },
或在 Python 中使用 pip install "hushspec[signing]"。
use hushspec::HushSpec;
let yaml_str = "hushspec: \"1.0.0\"\nname: example\n";
let spec = HushSpec::parse(yaml_str)?;
let result = hushspec::validate(&spec);
assert!(result.is_valid());
import { parseOrThrow, validate } from '@hushspec/core';
const yamlString = 'hushspec: "1.0.0"\nname: example\n';
const spec = parseOrThrow(yamlString);
const result = validate(spec);
console.log(result.valid); // true
from hushspec import parse_or_raise, validate
yaml_string = 'hushspec: "1.0.0"\nname: example\n'
spec = parse_or_raise(yaml_string)
result = validate(spec)
assert result.is_valid
import (
"fmt"