Vizier Guard

io.github.vassiliylakhonin由 GitHub 帳號 vassiliylakhonin 發布v0.3.2更新於 Oct 24, 2026

Deterministic authorization and security guard for AI agent actions with signed receipts.

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

Vizier Guard 依所有者簽署的權限檢查 AI 代理擬執行的動作,回傳 ALLOW、BLOCK 或 REVIEW 及回執。

可以做什麼
Vizier Guard 是針對代理動作的確定性授權守衛。它把擬執行的動作與委派授權提交給驗證服務,由服務檢查簽章、身分、到期時間與權限綁定,再依允許的動作、目標、金額限制與敏感操作等政策判定。它回傳 ALLOW、BLOCK 或 REVIEW,並附上政策結果與綁定請求的回執;整合方應在驗證通過後才呼叫受保護的工具。MCP 強制代理可攔截已設定的工具呼叫,只轉送被允許的呼叫。
適用情境
適用於代理或週期性工作流程的動作邊界,例如在部署、儲存庫寫入、資料庫變更、發送訊息或呼叫付款 API 之前,讓所有者保留簽章金鑰控制權,同時授予短期、限定範圍的權限。它不能取代從代理移除直接的工具憑證。
執行需求
以本機程序方式透過 uvx 執行 PyPI 套件 vizier-guard,或使用託管驗證端點。需要整合 API 金鑰(VIZIER_API_KEY)與所有者簽發的授權檔案(VIZIER_GRANT_FILE),以及已在營運方註冊的主體公開金鑰。託管部署要求簽章授權(VIZIER_SIGNED_GRANT_MODE=required)。TypeScript SDK 與代理套件需要 Node.js 24+。
安裝前請注意
簽章私密金鑰必須保存在執行操作的代理之外。舊版驗證回執本身未簽章,只有 principal_signed 判定背後的授權由所有者簽章;回執只證明授權,不證明工具執行成功。持有直接工具憑證的代理或管理員可繞過該整合,短期授權也不是一次性執行保留。自架可選模式允許呼叫方自行宣稱權限,其回執不構成所有者委派。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Vizier Guard,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Vizier

Scoped authorization for AI agents before they act.

[CI] [Deploy] [Release] [License: MIT]

Vizier checks a proposed agent action against permissions signed by its owner and returns ALLOW, BLOCK, or REVIEW together with policy results and a receipt bound to the request.

Use it at the action boundary of an agent or recurring workflow: before a deployment, repository write, database change, message, or payment API call. A continuously running agent can receive short-lived permissions for specific actions and targets while the owner keeps control of the signing key.

Playground · Live API reference · OpenAPI · Quickstart · Delegation setup · Threat model

Why this matters

AI agents can act quickly, but not every action should be allowed just because the model or workflow requested it. Vizier adds a deterministic authorization layer between an agent's intent and the protected tool call.

This is useful when you need to enforce:

  • owner-controlled permissions for agent actions
  • short-lived delegated authority
  • exact target scoping and action constraints
  • review-before-execution for sensitive operations
  • auditable receipts for action decisions

What this project does

Vizier provides a policy and authorization service for agent actions.

It can validate:

  • whether an action is allowed for a specific agent and principal
  • whether the grant is signed by an owner
  • whether the action matches the grant scope and constraints
  • whether the request should be blocked, allowed, or escalated to human review

It does not decide whether the action is factually correct or ethically acceptable. It decides whether the action is authorized according to the signed authority model and policy rules.

Quick start

1) Install the SDK

Node.js 24+ is required for the TypeScript SDK and deployment adapter.

sh
npm install @agenda-intelligence/[email protected]

2) Verify an action with a signed delegation

ts
import { readFile } from "node:fs/promises";import { Vizier } from "@agenda-intelligence/vizier-sdk";
const client = new Vizier({  baseUrl: "https://vizier.agendamcp.dpdns.org",  apiKey: process.env.VIZIER_API_KEY,});
const grantPath = process.env.VIZIER_GRANT_FILE;if (!grantPath) throw new Error("An owner-issued grant file is required.");const grant = (await readFile(grantPath, "utf8")).trim();
const result = await client.verify({  agent: { id: "release-agent", owner: "platform-owner" },  principal: { id: "platform-owner" },  action: {    type: "deploy_worker",    target: "worker:example-worker",    parameters: { commit: "reviewed-commit" },  },  authority: {    allowed_actions: ["deploy_worker"],    constraints: {      allowed_targets: ["worker:example-worker"],      allowed_sensitive_actions: ["deploy_worker"],    },  },  context: { request_id: null, timestamp: null, source: "rest" },  grant,});
if (result.decision !== "ALLOW") {  throw new Error(`Authorization failed: ${result.decision}`);}
console.log("Authorized request:", result.receipt.id);

3) Gate the protected tool call

The service authorizes the action. Your integration still enforces the outcome before calling the protected tool.

How it works

mermaid
flowchart LR    Owner[Owner-controlled signer] -->|Scoped, expiring grant| Guard[Tool guard or MCP proxy]    Agent[Agent proposes action] --> Guard    Guard -->|Action + grant| Vizier[Vizier policy service]    Vizier -->|Decision + receipt| Guard    Guard -->|Validated ALLOW| Tool[Protected tool]    Guard -->|Submit REVIEW explicitly| Human[Human review workflow]
  1. The owner signs an ES256 delegation: principal, agent, permitted actions, constraints, and expiry.
  2. The integration submits the intended action and grant to /v1/verify.
  3. Vizier verifies the signature, identities, expiry, and exact authority binding, then applies deterministic policies.
  4. The guard validates the response and request binding before invoking the tool.

Important: an API key authenticates the caller; a delegation grant proves the owner's permission. They are separate roles.

Important boundaries

  • Vizier is an authorization service, not a fact checker.
  • It does not prove that a tool executed successfully.
  • It does not establish factual truth, legal clearance, payment settlement, or customer demand.
  • A receipt records authorization, not a guarantee of a successful side effect.
  • Self-hosted optional mode permits caller-asserted authority; receipts do not establish owner delegation.

Choose your integration

Your taskStart herePrerequisites
Try the deployment adapter locallySynthetic preparation exampleNode 24+; no keys for the preparation step
Verify an action with signed delegationSDK setupAn operator API key, registered public key and owner-issued grant
Protect existing MCP toolsPrivate MCP proxyOperator-owned upstream credentials and a restricted tool route
Inspect the hosted APIAPI referencePublic documentation; execution permissions are separate

Control an agent's infrastructure deployment

For platform and security teams operating a DevOps agent: pin one existing Cloudflare Worker and require owner-signed scope plus human approval of the exact uploaded version before changing its traffic. Changed versions, out-of-scope targets, expired permissions, and repeated approval claims stop before execution.

Install the v0.5.16 SDK and deployment adapter from npm:

sh
npm install @agenda-intelligence/[email protected] @agenda-intelligence/[email protected]npx --no-install vizier-worker-deploy prepare \  --scope node_modules/@agenda-intelligence/vizier-gated-deploy/examples/scope.json \  --plan node_modules/@agenda-intelligence/vizier-gated-deploy/examples/plan.json

Preparation is local, uses synthetic IDs, and needs no keys. Follow the integration and recovery guide before submitting a real review or executing anything.

Start with signed delegation

Experimental. The runnable examples pin published npm clients at v0.5.16.

sh
npm install @agenda-intelligence/[email protected]

First register a principal public key and mint a grant from an owner-controlled signer. This example requires a grant for platform-owner → release-agent with exactly this authority:

json
{  "allowed_actions": ["deploy_worker"],  "constraints": {    "allowed_targets": ["worker:example-worker"],    "allowed_sensitive_actions": ["deploy_worker"]  }}

Keep the private signing key outside the action-taking agent. Supply the integration API key and a current grant file to the trusted guard.

Connect through MCP

For a client with Streamable HTTP support, use:

text
https://vizier.agendamcp.dpdns.org/mcp

The hosted service exposes a tool catalog and verification endpoint. Discovery requires no API key. Read the tool schema and metadata before constructing a request.

For a copyable Node 24 connection with no dependencies, run one explicit read-only profile from this checkout:

sh
node examples/mcp-connect.ts --profile sessionnode examples/mcp-connect.ts --profile stateless

For a stdio-only client, this pinned transport adapter connects to the same hosted tool:

json
{  "mcpServers": {    "vizier": {      "command": "npx",      "args": [        "-y", "[email protected]",        "https://vizier.agendamcp.dpdns.org/mcp",        "--transport", "http-only"      ]    }  }}

This configuration sends calls to the hosted service and is anonymous: verification can return BLOCK or REVIEW, never ALLOW.

Interfaces and capabilities

SurfaceRole
REST /v1/verifyAction checks with deterministic policies, delegation provenance and request-bound receipts
TypeScript SDKValidates response contracts and bindings; includes explicit human-review helpers
Python SDKStandard-library client, function guards and framework adapters
MCP serviceDiscover and call verification tools
MCP enforcement proxyIntercepts configured tool calls, validates authorization, and forwards permitted calls
A2AVerification adapter and agent card discovery
Human review queueSeparate reviewer credential, signed approval tokens and atomic server claims

Working integrations

The Agenda fleet uses Vizier in an owner-operated deployment workflow. This is concrete operational use by the same maintainer; it is not external customer adoption.

WorkflowProtected actionEvidence
Agenda Worker fleetTarget-scoped deploy_worker authorization before deploymentPublic workflow

The workflow separates signer and execution steps and supplies short-lived owner-signed grants. Missing or expired grants and invalid required receipts stop that deployment path.

Receipts and trust boundary

A /v1/verify receipt records the request hash, decision, rule results, and authority provenance. The legacy verification receipt itself is unsigned; the grant behind a principal_signed decision is owner-signed. The SDK checks response consistency and recomputes the request hash over canonical JSON.

Visualization of the trust boundary:

  • the integration enforces the decision
  • the agent or operator with direct tool credentials can bypass that integration
  • short-lived grants are not single-use execution reservations
  • authorization does not replace human judgment or operational controls

Development

Node.js 24+ is required for the Worker and TypeScript packages.

sh
npm cinpm run check

check runs package builds, type checks, migration checks, lint, tests, and a Worker deployment dry run. It does not publish or deploy.

Useful references:

License

MIT License.

來源:README.md,提交 e9f83e1

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分