
Подписанные Ed25519 квитанции + политики Cedar для ИИ-агентов. Финансовый мандатный шлюз (Legate), пакеты доказательств, 3 IETF Internet-Drafts. npx protect-mcp
Шлюз политик Cedar с отказом по умолчанию плюс подписанные квитанции для вызовов инструментов ИИ-агента.
protect-mcp — это шлюз, который стоит перед вызовами инструментов ИИ-агента. Он проверяет
каждый вызов на соответствие политике Cedar (тот же язык,
который AWS использует для IAM), блокирует то, что нарушает правила, до запуска и подписывает
проверяемую офлайн квитанцию Ed25519 о каждом решении. Он работает локально, никуда не отправляет
телеметрию о ваших решениях и распространяется под лицензией MIT.
would_deny: true, так что сбой никогда не остаётся незамеченным.serve --enforce и doctor запускают при старте
самотестирование и отказываются взводить шлюз, если не могут показать, что известное запрещённое
действие действительно отклоняется. Шлюз, который не может доказать, что отклоняет, не запускается.@veritasacta/verify.
Доверие к поставщику не требуется: математике всё равно, кто её запускает.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
Для Claude Desktop сначала выполните пробный патч конфигурации, затем примените его:```bash
npx protect-mcp wrap --claude-desktop
npx protect-mcp wrap --claude-desktop --write
npx protect-mcp dashboard --open
Панель управления привязывается к 127.0.0.1, читает только локальные файлы журналов и квитанций и ничего не загружает. Используйте npx protect-mcp connect, только если вам явно нужна размещённая панель ScopeBlind.
Если вы предпочитаете вызывать шлюз как инструменты, а не подключать хуки Claude Code, запустите его как MCP-сервер:```bash npx protect-mcp mcp
Он взаимодействует по MCP через stdio и предоставляет четыре инструмента только для чтения, весь цикл:
- **`evaluate_action`**: принимает решение по предлагаемому вызову инструмента на основе встроенной политики Cedar, с отказом при сбое (любая ошибка политики — DENY). Возвращает `{ allowed, decision, reason, policy_digest }`.
- **`sign_decision`**: превращает решение в подписанную квитанцию Ed25519 (отказ подписывает `gateway_restraint`, разрешение — `decision_receipt`). Возвращает квитанцию и её открытый ключ; генерирует эфемерный ключ, если вы его не предоставили.
- **`verify_receipt`**: проверяет подписанную квитанцию офлайн по открытому ключу. Возвращает `{ valid, error, type, kid, issuer }`.
- **`self_test`**: доказывает это, без входных данных. Известное запрещённое действие отклоняется, затем подписанная квитанция проходит полный цикл, а подделанная копия не проходит.
Направьте на него любой MCP-хост, например Claude Desktop:```json
{
"mcpServers": {
"protect-mcp": { "command": "npx", "args": ["-y", "protect-mcp", "mcp"] }
}
}
Receipts побайтово совместимы с теми, которые gate подписывает во время выполнения, поэтому receipt, созданный здесь, проверяется с помощью @veritasacta/verify и браузерным верификатором точно так же.
protect-mcp dashboard — это операторское представление для перехода от видимости к принудительному применению:
Require approval, Block или Observe. Перезапустите wrapper после проверки изменений.Для резервных одобрений в реальном времени на рабочем столе запустите панель с локальной конечной точкой одобрения шлюза и nonce, выведенным wrapper:```bash
npx protect-mcp dashboard --open
--approval-endpoint http://127.0.0.1:9876
--approval-nonce "$PROTECT_MCP_APPROVAL_NONCE"
`Approve` перенаправляет на живой локальный шлюз, когда эти флаги присутствуют.
`Deny`, `Edit` и `Take over` записываются локально как записи разрешения
одобрения; используйте их как инструкцию оператора и при необходимости перезапустите инструмент.
### Платная граница MVP: привязка дайджеста, а не загрузка данных
Локальные самоподписанные квитанции остаются бесплатными и проверяемыми офлайн. Платная граница —
это независимое доказательство того, что ScopeBlind видел дайджест квитанции в определённое время, под идентичностью организации,
не получая необработанный промпт, полезную нагрузку инструмента, вывод, приватный ключ или
саму квитанцию.```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
Локальный предпросмотр намеренно помечен как local-preview-not-independent.
Размещённый режим привязывает только хеши квитанций, идентификаторы запросов, публичные ключи организации и
метаданные биллинга. Он не загружает необработанные квитанции или конфиденциальный контекст.