
Règles de sécurité portables pour la limite d'action des agents IA
Donnez à vos agents des frontières que vous pouvez lire. Obtenez des décisions que vous pouvez vérifier.
Quoi · Démarrage rapide · Fonctionnement · SDKs · CLI · Politiques · Docs · Spec
HushSpec est une spécification ouverte pour les contrôles de sécurité sous lesquels opère un agent IA. Écrivez une politique en YAML, évaluez-la en Rust, TypeScript, Python ou Go, et produisez des reçus qui relient chaque décision à la politique qui la sous-tend.
Elle couvre ce que les agents touchent réellement : fichiers, réseaux, shells, outils, navigateurs,
et exécution de code. La spécification définit les règles et leur signification ; votre runtime
applique la frontière via HushGuard ou sa propre intégration.
| Déclarer | Appliquer | Prouver |
|---|---|---|
| Du YAML auditable avec des politiques de base réutilisables et des permissions explicites. | Des décisions cohérentes allow, warn et deny au moment de l'action. | Des reçus de décision, des signatures de politique et des journaux vérifiables. |
La spec 1.0.0 est stable. Le format du document, la sémantique d'évaluation, la forme canonique, et les formats d'échange sont figés pour la série 1.x. Voir la politique de versionnage et la matrice de conformité des SDK pour les contrats et leur couverture de tests.
La version 1.0 des SDK n'est pas encore publiée. Voir le statut de livraison pour l'implémentation, la qualification et les preuves de publication.
Le contrôleur de conformité externe expérimental teste un exécutable capturé contre le corpus L0-L3 et conserve ses entrées, sorties et identité. L'adaptateur Go est un amorçage first-party, pas une qualification indépendante du moteur ou de la frontière d'exécution.
Le coordinateur d'invocation de confiance expérimental vérifie un outil MCP qualifié par l'hôte et ses effets contre un instantané de politique authentifié, enregistre un permis durable, puis dispatche. Son pilote de codage isolé teste de vraies modifications, des opérations bloquées et des preuves de crash. Il s'agit d'une démonstration first-party à périmètre limité, pas d'une adoption externe ni d'un confinement MCP général.
Construisez la CLI h2h depuis ce checkout :
cargo install --path crates/hushspec-cli --locked
Enregistrez ceci sous policy.yaml. Cela protège les identifiants, restreint l'accès réseau,
et demande confirmation avant qu'un outil puisse écrire un fichier ou pousser du code.
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
Validez-la, puis essayez trois décisions :
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
Ces commandes évaluent des actions ; elles ne les exécutent pas. eval se termine avec
0 pour allow, 1 pour deny, et 4 pour warn. Un runtime doit traiter la décision
avant de dispatcher l'action. Intégrez-le dans votre agent →
| Méthode | Installation |
|---|---|
| Cargo | cargo install hushspec-cli |
| Homebrew | brew install backbay-labs/tap/h2h |
| npm | npm install -g @hushspec/cli |
| Binaires précompilés | GitHub Releases, avec sommes de contrôle et attestations de provenance |
Les installateurs packagés dépendent du fait que le pipeline de publication ait publié les artefacts correspondants. L'installation depuis les sources ci-dessus compile directement depuis ce checkout.
Pour une politique et une suite de tests échafaudées, exécutez h2h init --preset default.
Voir le guide de première politique pour le workflow complet.
HushGuard charge la politique et rassemble l'évaluation, les modes d'application, la confirmation,
les sinks de reçus et les observateurs. Appelez enforce avant de dispatcher un outil :
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.
Une politique qui échoue à la vérification de signature requise produit un guard refusé :
chaque action est refusée avec __hushspec_policy_unverified__. Un rechargement à chaud échoué
maintient la dernière politique valide en vigueur. Les champs inconnus et les documents invalides sont
rejetés explicitement.