Skills Agentes

Protect Mcp Setup

Configura la aplicación de políticas Cedar y recibos firmados con Ed25519 para las llamadas a herramientas de Claude Code, dando rastros de auditoría criptográficos y evidencia lista para cumplimiento.

Reemplaza a: El log de sesión de Claude Code sin firmar ni auditar

Estrellas
39.8k

en todo el repo

Actividad
51

0–100, la ruta de este skill

Actualizado
hace 2 meses

último commit aquí

Commits
1

últimos 90 días

Contexto
1.6k tok

58 tok en reposo

Paquete
1 archivo

6 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add wshobson/agents --skill protect-mcp-setup --agent claude-code

Se instala solo en este repositorio.

Este skill reads environment config.

Qué hace

  • Evalúa cada llamada a herramientas de Claude Code contra una política Cedar antes de ejecutarla
  • Firma un recibo Ed25519 tras cada ejecución con hash de entrada/salida, política y decisión
  • Encadena los recibos mediante hash a través de parent_receipt_id
  • Bloquea la llamada (exit code 2) si Cedar deniega la acción
  • Permite verificar recibos offline con npx @veritasacta/verify

Úsalo cuando

  • Necesitas rastros de auditoría criptográficos para las acciones del agente
  • Quieres ejecución de herramientas controlada por políticas (policy-gated)
  • Trabajas en contextos regulados (finanzas, salud, investigación) que requieren evidencia verificable de cumplimiento

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • “Configura protect-mcp en mi proyecto de Claude Code”
    • “Necesito recibos firmados de cada llamada a Bash y Edit”
    • “Añade políticas Cedar para bloquear rm -rf en mis herramientas”

    SKILL.md

    En inglés

    protect-mcp — Policy Enforcement + Signed Receipts

    Cryptographic governance for every Claude Code tool call. Each invocation is evaluated against a Cedar policy and produces an Ed25519-signed receipt that anyone can verify offline.

    Overview

    Claude Code runs powerful tools: Bash, Edit, Write, WebFetch. By default there is no audit trail, no policy enforcement, and no way to prove what was decided after the fact. protect-mcp closes all three gaps:

    • Cedar policies (AWS's open authorization engine) evaluate every tool call before execution. Cedar deny is authoritative.
    • Ed25519 receipts record each decision with its inputs, the policy that governed it, and the outcome. Receipts are hash-chained.
    • Offline verification via npx @veritasacta/verify. No server, no account, no trust in the operator.

    Problem

    AI agents make decisions that affect money, safety, and rights. The Claude Code session log records what happened, but the log is:

    • Mutable — anyone with access can edit it
    • Unsigned — there is no way to prove integrity
    • Operator-bound — verification requires trusting whoever holds the log

    For compliance contexts (finance, healthcare, regulated research), this is not sufficient. You need tamper-evident evidence that can be verified by third parties without trusting you.

    Solution

    Add protect-mcp to your Claude Code project:

    # 1. Install the plugin (adds hooks + skill to your project)
    claude plugin install wshobson/agents/protect-mcp
    
    # 2. Configure hooks in .claude/settings.json (see below)
    
    # 3. Start the receipt-signing server (runs locally, no external calls)
    npx protect-mcp@latest serve --enforce
    
    # 4. Use Claude Code normally. Every tool call is now policy-evaluated
    #    and produces a signed receipt in ./receipts/
    

    Hook Configuration

    Add the following to your project's .claude/settings.json:

    {
      "hooks": {
        "PreToolUse": [
          {
            "matcher": ".*",
            "hook": {
              "type": "command",
              "command": "npx protect-mcp@latest evaluate --policy ./protect.cedar --tool \"$TOOL_NAME\" --input \"$TOOL_INPUT\" || exit 2"
            }
          }
        ],
        "PostToolUse": [
          {
            "matcher": ".*",
            "hook": {
              "type": "command",
              "command": "npx protect-mcp@latest sign --tool \"$TOOL_NAME\" --input \"$TOOL_INPUT\" --output \"$TOOL_OUTPUT\" --receipts ./receipts/"
            }
          }
        ]
      }
    }
    

    What each hook does

    PreToolUse — Runs BEFORE the tool executes. Evaluates the tool call against your Cedar policy file. If Cedar returns deny, the hook exits with code 2 and Claude Code blocks the tool call entirely.

    PostToolUse — Runs AFTER the tool completes. Signs a receipt containing the tool name, input hash, output hash, decision, policy digest, and timestamp. Writes the receipt to ./receipts/<timestamp>.json.

    Cedar Policy File

    Create ./protect.cedar at the project root:

    // Allow read-only tools by default
    permit (
        principal,
        action in [Action::"Read", Action::"Glob", Action::"Grep", Action::"WebFetch"],
        resource
    );
    
    // Require explicit allow for destructive tools
    permit (
        principal,
        action == Action::"Bash",
        resource
    ) when {
        // Allow safe commands only
        context.command_pattern in ["git", "npm", "ls", "cat", "echo", "pwd", "test"]
    };
    
    // Never allow recursive deletion
    forbid (
        principal,
        action == Action::"Bash",
        resource
    ) when {
        context.command_pattern == "rm -rf"
    };
    
    // Require confirmation for writes outside the project
    forbid (
        principal,
        action in [Action::"Edit", Action::"Write"],
        resource
    ) when {
        context.path_starts_with != "."
    };
    

    Verification

    Verify a single receipt:

    npx @veritasacta/verify receipts/2026-04-15T10-30-00Z.json
    # Exit 0 = valid
    # Exit 1 = tampered
    # Exit 2 = malformed
    

    Verify the entire chain:

    npx @veritasacta/verify receipts/*.json
    

    Use the plugin's slash commands from within Claude Code:

    /verify-receipt receipts/latest.json
    /audit-chain ./receipts/ --last 20
    

    Receipt Format

    Each receipt is a JSON file with this structure:

    {
      "receipt_id": "rec_8f92a3b1",
      "receipt_version": "1.0",
      "issuer_id": "claude-code-protect-mcp",
      "event_time": "2026-04-15T10:30:00.000Z",
      "tool_name": "Bash",
      "input_hash": "sha256:a3f8...",
      "decision": "allow",
      "policy_id": "autoresearch-safe",
      "policy_digest": "sha256:b7e2...",
      "parent_receipt_id": "rec_3d1ab7c2",
      "public_key": "4437ca56815c0516...",
      "signature": "4cde814b7889e987..."
    }
    
    • Ed25519 signatures (RFC 8032)
    • JCS canonicalization (RFC 8785) before signing
    • Hash-chained to the previous receipt via parent_receipt_id
    • Offline verifiable — no network call, no vendor lookup

    Why This Matters

    Before After
    "Trust me, the agent only read files" Cryptographically provable: every Read logged and signed
    "The log shows it happened" The receipt proves it happened, and no one can edit it
    "You'd have to audit our system" Anyone can verify every receipt offline
    "Logs might be different by now" Ed25519 signatures lock the record at signing time

    Standards

    • Ed25519 — RFC 8032 (digital signatures)
    • JCS — RFC 8785 (deterministic JSON canonicalization)
    • Cedar — AWS's open authorization policy language
    • IETF draft — draft-farley-acta-signed-receipts

    Related

    Reproducido de wshobson/agents bajo licencia MIT. Leer esta página en markdown.

    Archivos

    1 archivo en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere instalar el plugin protect-mcp, npx protect-mcp@latest serve --enforce corriendo localmente y un archivo ./protect.cedar en la raíz del proyecto.

    Necesita en el PATH:npx

    Variables de entorno:TOOL_INPUTTOOL_NAMETOOL_OUTPUT

    Detalles

    Creador
    wshobson
    Categoría
    Seguridad
    Licencia
    MIT
    Recursos incluidos
    Solo SKILL.md
    Repositorio
    wshobson/agents
    Código fuente
    Ver SKILL.md

    Etiquetas