
signet-eval
Deterministic policy enforcement that sits between Claude and tool execution. Every tool call passes through user-defined YAML rules before running,no LLM in the authorization path, 25ms end-to-end. Ships with locked self-protection rules that prevent agents from disabling their own guardrails. Supports spending limits via encrypted vault ledger, conditional blocks based on parameters or patterns, and probabilistic advisory injection for nudges. Integrates via PreToolUse hooks in Claude Code or Codex, plus an MCP management interface for conversational policy updates. Conditions include spend tracking, credential checks, regex matching, and recent action history. Rules can be locked to prevent agent modification, and the vault uses three-tier encryption with Argon2id key derivation.
- GitHub stars
- 4
- tools
- 17
- last updated
- Aug 28, 2026
Tools
17 toolsPublic tool metadata for what this MCP can expose to an agent.
signet_list_rulesShow all rules with locked status
Show all rules with locked status
No parameter schema in public metadata yet.
signet_add_ruleAdd a new rule (appended after locked rules)
Add a new rule (appended after locked rules)
No parameter schema in public metadata yet.
signet_remove_ruleRemove a rule (refuses on locked rules)
Remove a rule (refuses on locked rules)
No parameter schema in public metadata yet.
signet_edit_ruleModify rule properties (refuses on locked rules)
Modify rule properties (refuses on locked rules)
No parameter schema in public metadata yet.
signet_reorder_ruleMove a rule (refuses on locked, prevents placing above locked)
Move a rule (refuses on locked, prevents placing above locked)
No parameter schema in public metadata yet.
signet_set_limitSet a spending limit for a category
Set a spending limit for a category
No parameter schema in public metadata yet.
signet_testTest a tool call against the current policy
Test a tool call against the current policy
No parameter schema in public metadata yet.
signet_validateCheck policy for errors
Check policy for errors
No parameter schema in public metadata yet.
signet_condition_helpShow available condition functions
Show available condition functions
No parameter schema in public metadata yet.
signet_statusVault status, spending totals, credential count
Vault status, spending totals, credential count
No parameter schema in public metadata yet.
signet_recent_actionsShow recent action log
Show recent action log
No parameter schema in public metadata yet.
signet_store_credentialStore a Tier 3 credential
Store a Tier 3 credential
No parameter schema in public metadata yet.
signet_use_credentialRequest a credential through capability constraints
Request a credential through capability constraints
No parameter schema in public metadata yet.
signet_list_credentialsList credential names
List credential names
No parameter schema in public metadata yet.
signet_delete_credentialDelete a credential
Delete a credential
No parameter schema in public metadata yet.
signet_sign_policyHMAC-sign the policy file
HMAC-sign the policy file
No parameter schema in public metadata yet.
signet_reset_sessionClear spending counters
Clear spending counters
No parameter schema in public metadata yet.
Sponsors
Readme
signet-eval
Deterministic policy enforcement for AI agent tool calls. Integrated tool calls pass through user-defined rules before execution. No LLM in the authorization path. Advisory nudges are separate from authorization.
Install
# crates.io
cargo install signet-eval
# from source
git clone https://github.com/wandercom/signet-eval
cd signet-eval
cargo install --path .
There is no npm or PyPI package for signet-eval. The public distribution path is
crates.io plus source install from GitHub. The MCP Registry listing points at
the repository metadata; the runtime is the local signet-eval serve stdio
server.
Quick Start
The command-hook adapters below remain supported and independent. For Claude Code's optional early-access function hooks, see the function adapter. It is disabled by default; installing/building this package does not activate it or change user settings.
1. Hook into Claude Code — add to ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "",
"hooks": [{"type": "command", "command": "signet-eval", "timeout": 2000}]
}]
}
}
Details
- Repository
- github.com/jmcentire/signet-eval
- Website
- github.com/jmcentire/signet-eval
- Category
- AI & LLM Tools
- Registry
- MCP registry, active