
scopeblind-gateway v0.13.1
Подписанные Ed25519 квитанции + политики Cedar для ИИ-агентов. Финансовый мандатный шлюз (Legate), пакеты доказательств, 3 IETF Internet-Drafts. npx protect-mcp
protect-mcp
Шлюз политик Cedar с отказом по умолчанию плюс подписанные квитанции для вызовов инструментов ИИ-агента.
protect-mcp — это шлюз, который стоит перед вызовами инструментов ИИ-агента. Он проверяет
каждый вызов на соответствие политике Cedar (тот же язык,
который AWS использует для IAM), блокирует то, что нарушает правила, до запуска и подписывает
проверяемую офлайн квитанцию Ed25519 о каждом решении. Он работает локально, никуда не отправляет
телеметрию о ваших решениях и распространяется под лицензией MIT.
Чем он отличается
- Отказ по умолчанию. При любой ошибке политики, отсутствии движка или
сбое оценки решение — DENY. Шлюз никогда не разрешает молча. Существует
режим наблюдения для теневого развёртывания, но даже там вызов, который был бы
заблокирован, помечается
would_deny: true, так что сбой никогда не остаётся незамеченным. - Он доказывает собственную сдержанность.
serve --enforceиdoctorзапускают при старте самотестирование и отказываются взводить шлюз, если не могут показать, что известное запрещённое действие действительно отклоняется. Шлюз, который не может доказать, что отклоняет, не запускается. - Каждое решение — это квитанция, которую может проверить любой. Решения подписываются
Ed25519 и проверяются офлайн с помощью
@veritasacta/verify. Доверие к поставщику не требуется: математике всё равно, кто её запускает.
Быстрый старт: от установки до первого полезного доказательства```bash
1. Generate an Ed25519 keypair, config template, and sample policy.
npx protect-mcp init
2. Wrap any MCP server in shadow mode. Nothing is blocked yet; calls are logged.
npx protect-mcp wrap -- node your-mcp-server.js
3. Inspect the local-only dashboard: tool inventory, risk, approvals, receipts.
npx protect-mcp dashboard --open
4. Draft a reviewable policy from observed calls.
npx protect-mcp recommend --write
5. When reviewed, restart the wrapper in enforce mode with that policy.
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.
Шлюз как MCP-сервер
Если вы предпочитаете вызывать шлюз как инструменты, а не подключать хуки 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 — это операторское представление для перехода от видимости к принудительному применению:
- Инвентаризация инструментов: каждый наблюдаемый инструмент, количество вызовов, высокий/средний/низкий риск, а также наличие в активной политике точного правила, wildcard-запасного варианта или отсутствие правила.
- Покрытие политики: локальное редактирование политики в один клик для
Require approval,BlockилиObserve. Перезапустите wrapper после проверки изменений. - Очередь одобрения точных действий: точный инструмент, действие, назначение, предпросмотр отредактированной полезной нагрузки, хеш полезной нагрузки, основание политики и причина фиксируются до того, как человек одобрит, отклонит, отредактирует или перехватит управление.
- Цепочка receipt: идентификаторы запросов, сопоставленные с хешами подписанных receipt, чтобы аудитор мог видеть, какие решения имеют криптографическое подтверждение.
- Экспорт аудита: загружает офлайн-проверяемый пакет аудита, когда существуют подписанные receipt. Если существуют только неподписанные локальные журналы, панель объясняет, что сначала необходимо включить подпись.
Для резервных одобрений в реальном времени на рабочем столе запустите панель с локальной конечной точкой одобрения шлюза и 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.
Размещённый режим привязывает только хеши квитанций, идентификаторы запросов, публичные ключи организации и
метаданные биллинга. Он не загружает необработанные квитанции или конфиденциальный контекст.