
Reçus signés Ed25519 + politiques Cedar pour les agents IA. Finance mandate gate (Legate), packs de preuves, 3 Internet-Drafts IETF. npx protect-mcp
Portail de politique Cedar à échec fermé (fail-closed) plus reçus signés pour les appels d'outils d'agents IA.
protect-mcp est un portail qui se place devant les appels d'outils d'un agent IA. Il évalue
chaque appel par rapport à une politique Cedar (le même langage
qu'AWS utilise pour IAM), bloque ce qui enfreint les règles avant son exécution, et signe un
reçu Ed25519 vérifiable hors ligne de chaque décision. Il s'exécute localement, n'envoie aucune
télémétrie de vos décisions où que ce soit, et est sous licence MIT.
would_deny: true, ainsi un échec n'est jamais silencieux.serve --enforce et doctor exécutent un auto-test au
démarrage et refusent d'armer le portail à moins de pouvoir démontrer qu'une action
connue comme interdite est effectivement refusée. Un portail qui ne peut pas prouver qu'il
refuse ne démarre pas.@veritasacta/verify.
Aucune confiance envers un fournisseur requise : les mathématiques ne se soucient pas de qui l'exécute.npx protect-mcp init
npx protect-mcp wrap -- node your-mcp-server.js
npx protect-mcp dashboard --open
npx protect-mcp recommend --write
npx protect-mcp --policy protect-mcp.recommended.json --enforce -- node your-mcp-server.js
Pour Claude Desktop, exécutez d'abord un patch de configuration en dry-run, puis appliquez-le :```bash
npx protect-mcp wrap --claude-desktop
npx protect-mcp wrap --claude-desktop --write
npx protect-mcp dashboard --open
Le tableau de bord se lie à 127.0.0.1, ne lit que les fichiers de journaux/reçus locaux et ne téléverse rien. Utilisez npx protect-mcp connect uniquement si vous souhaitez explicitement un tableau de bord ScopeBlind hébergé.
Si vous préférez appeler la passerelle en tant qu'outils plutôt que de configurer les hooks Claude Code, exécutez-la en tant que serveur MCP :```bash npx protect-mcp mcp
Il parle MCP via stdio et expose quatre outils en lecture seule, toute la boucle :
- **`evaluate_action`** : décide d'un appel d'outil proposé selon une politique Cedar inline, en échec fermé (toute erreur de politique est DENY). Retourne `{ allowed, decision, reason, policy_digest }`.
- **`sign_decision`** : transforme une décision en un reçu signé Ed25519 (un refus signe un `gateway_restraint`, une autorisation un `decision_receipt`). Retourne le reçu et sa clé publique ; génère une clé éphémère si vous n'en fournissez pas.
- **`verify_receipt`** : vérifie un reçu signé hors ligne par rapport à une clé publique. Retourne `{ valid, error, type, kid, issuer }`.
- **`self_test`** : le prouve, sans entrées. Une action connue comme interdite est refusée, puis un reçu signé fait un aller-retour et une copie falsifiée échoue.
Pointez n'importe quel hôte MCP vers lui, par exemple Claude Desktop :```json
{
"mcpServers": {
"protect-mcp": { "command": "npx", "args": ["-y", "protect-mcp", "mcp"] }
}
}
Les reçus sont compatibles octet pour octet avec ceux que la passerelle signe à l'exécution, donc un reçu généré ici se vérifie avec @veritasacta/verify et le vérificateur du navigateur de la même manière.
protect-mcp dashboard est la vue opérateur pour passer de la visibilité à l'application des règles :
Require approval, Block, ou Observe. Redémarrez le wrapper après avoir examiné les modifications.Pour les approbations de repli sur bureau en direct, démarrez le tableau de bord avec le point de terminaison d'approbation de la passerelle locale et le nonce affichés par le wrapper :```bash
npx protect-mcp dashboard --open
--approval-endpoint http://127.0.0.1:9876
--approval-nonce "$PROTECT_MCP_APPROVAL_NONCE"
`Approve` est transmis à la passerelle locale active lorsque ces indicateurs sont présents.
`Deny`, `Edit` et `Take over` sont enregistrés localement en tant qu'enregistrements
de résolution d'approbation ; utilisez-les comme instruction de l'opérateur et relancez l'outil si nécessaire.
### MVP de la frontière payante : ancrage de digest, pas de téléversement de données
Les reçus auto-signés locaux restent gratuits et vérifiables hors ligne. La frontière payante est
une preuve indépendante que ScopeBlind a vu un digest de reçu à un moment donné, sous une identité
d'organisation, sans recevoir le prompt brut, la charge utile de l'outil, la sortie, la clé privée ou
le reçu brut.```bash
# Create or refresh a local org identity and public-key directory.
npx protect-mcp registry init --org "Meridian Global Macro" --billing-account acct_meridian
# Local preview: writes a digest registry and shareable static verifier page.
npx protect-mcp registry anchor
# Hosted mode: uploads receipt digests only for independent anchoring.
SCOPEBLIND_TOKEN=... npx protect-mcp registry anchor \
--hosted \
--endpoint https://api.scopeblind.com \
--verifier-base https://scopeblind.com
L'aperçu local est délibérément étiqueté local-preview-not-independent.
Le mode hébergé n'ancre que les hachages de reçus, les identifiants de requête, les clés publiques d'organisation et
les métadonnées de facturation. Il ne téléverse pas les reçus bruts ni le contexte sensible.