npm @rigour-labs/mcpstdioMITupdated 17d ago
Your AI agent just tried to commit an AWS secret. Rigour blocked it in <100ms.
What can you do with rigour?
Rigour
Your AI agent just tried to commit an AWS secret. Rigour blocked it in <100ms.
Agent Transaction Firewall (v6): treat the agent as an untrusted proposer. Rigour decidesβdeterministicallyβwhat it may write, run, call, and ship. No AI judge on the allow/deny path.
Try it now (zero config)
npx rigour-scan
Works on any repo. No init, no config, no setup. Instant results in your terminal:
HARDCODED SECRET DETECTED
AWS_SECRET_ACCESS_KEY found in src/config.ts:23
+ 22 more violations across 847 files (2.1s)
Score ββββββββββββββββββββ 34/100
AI Health βββββββββββββββββββββ 28/100
Gates: β
file-size β security β ast β
deps
Brain: learned 12 patterns Β· trend: improving β
Add to your AI IDE (30 seconds)
{ "mcpServers": { "rigour": { "command": "npx", "args": ["-y", "@rigour-labs/mcp@latest"] } } }
| IDE / Agent | MCP Tools | Live Dashboard | Real-Time Feed |
|---|---|---|---|
| Claude Desktop | β | β MCP App | β Logging |
| VS Code Copilot | β | β MCP App | β Logging |
| ChatGPT | β | β MCP App | β Logging |
| Goose | β | β MCP App | β Logging |
| Claude Code | β | β | β Logging |
| Cursor | β | β | β Logging |
| Cline | β | β | β Logging |
| Windsurf | β | β | β Logging |
| Codex | β | β | β Logging |
Then install hooks so writes are checked in real time:
npx @rigour-labs/cli hooks init --tool cursor # or claude, cline, windsurf
# or via MCP: rigour_hooks_init
Does the firewall run automatically?
Short answer: quality gates + DLP + mediated rigour_run paths run when MCP/hooks are installed. It does not yet sit in front of every third-party MCP tool (GitHub/Slack/etc.)βthat gateway is designed but not the default proxy.
| Surface | Automatic once installed? | What you get |
|---|---|---|
MCP server (@rigour-labs/mcp) |
Yes for Rigour tools the agent calls | rigour_check, Fix Packets, memory DLP, agent register, Studio events |
rigour_run / rigour_run_supervised |
Yes when those tools are used | Typed argv allowlist (no free-form shell: true), fail-closed human arbitration (timeout = deny), one-time Studio token |
| IDE hooks (Cursor/Claude/Cline/Windsurf) | Yes after hooks init |
Per-write checks (secrets, imports, size, protected paths). If agents are registered, set RIGOUR_AGENT_ID so scope binds to the writer (fail-closed; no union-allow) |
rigour_agent_register |
Yes when called | Rejects **/* / sensitive globs unless operator scopes or RIGOUR_ALLOW_AGENT_SCOPE_AUTHORITY=1 |
| CLI firewall | On demand / CI | firewall adversarial, firewall transact, firewall admit |
| Third-party MCP proxy | Not yet | Capability broker + McpGateway interfaces exist; Rigour is not yet a MITM for all MCP servers |
Agent proposes action
β
Hooks / MCP mediation (when on the path)
β
Deterministic deny/allow + rule id
β
Studio evidence Β· CI attestation (admit)
Agent Transaction Firewall
npx @rigour-labs/cli firewall status
npx @rigour-labs/cli firewall adversarial # deterministic corpus β unexpected allows fail CI
npx @rigour-labs/cli firewall transact --agent <id> --scope 'packages/foo/**'
npx @rigour-labs/cli firewall admit # CI: valid attestation + PASS + bound git tree
npx @rigour-labs/cli studio # Firewall tab: decisions, attestation, mediation health
Guarantees (on mediated paths): fail-closed arbitration Β· typed commands Β· per-agent scope Β· signed attestation bound to commit/tree Β· adversarial replay as regression fuelβnot an AI red-team product.
See ADR 001.
Live governance dashboard (MCP App)
In supported editors, a real-time dashboard appears automatically as your agent works:
ββ Rigour Governance βββββββββββββββββββββββββββ
β Score: 94/100 β
PASS β
β β
β 14:32:01 rigour_check β FAIL (34/100) β
β 14:32:03 fix_packet β 8 fixes β
β 14:32:15 rigour_check β 71/100 (+37) β
β 14:32:22 rigour_check β β
PASS 94/100 β
β β
β Brain: 47 patterns Β· trend: improving β β
βββββββββββββββββββββββββββββββββββββββββββββββββ
No extra commands. The dashboard appears when the agent calls Rigour tools. Watch your agent self-heal in real time. Open Firewall in Studio for allow/deny decisions and mediation status (partial until the MCP gateway is fully wired).
What it catches
| Category | Gates |
|---|---|
| Security | Hardcoded secrets (29+ patterns), SQL injection, XSS, CSRF, prototype pollution, Shannon entropy |
| Structural | File size, cyclomatic complexity, method count, parameter count, nesting depth, TODO/FIXME |
| AI Drift | Hallucinated imports, phantom APIs, context drift, retry loop detection |
| Governance | Agent team isolation, checkpoint supervision, memory DLP |
| Firewall | Out-of-scope writes, undeclared MCP tools, disallowed shell, fail-closed timeouts |
AST-based. Not heuristics. TypeScript, JavaScript, Python, Go, Ruby, C#, Java, Kotlin, Rust.
How it works
Agent writes code β Hooks / gates fire β FAIL? β Fix Packet (JSON)
β
Agent reads exact instructions
β
Agent fixes β PASS β
Mediated run (rigour_run) β typed allowlist β human arbitration (fail-closed)
β
execute or deny + evidence
Voluntary rigour_check is a quality workflow, not the security boundary. Hard guarantees require installed hooks/MCP mediation and (for CI) firewall admit.
The Brain β learns your codebase
Every scan reinforces patterns. Patterns decay when absent. At strength: 0.9, they promote to hard rules. Your project's own immune system β trained locally, zero telemetry.
First week: catches 12 violations
First month: catches 8 violations β learning your patterns
Third month: catches 3 violations β your agents have adapted
How it's different
| Rigour | ESLint | βAI security agentsβ | |
|---|---|---|---|
| Runs locally, zero telemetry | β | β | often β |
| Learns YOUR codebase (Brain) | β | β | β |
| Agent self-healing (Fix Packets) | β | β | β |
| Deterministic execution firewall | β | β | usually LLM judge |
| Works offline (GGUF sidecar) | β | β | β |
| AI-native drift detection | β | β | β |
| MCP-native | β | β | varies |
Used in production
- 19,000+ total installs across CLI and MCP
- Organically forked by Alibaba iFlow
- OWASP project β listed
- Cursor MCP directory β listed
Quick reference
npx rigour-scan # zero-config scan
npx @rigour-labs/cli init # add gates to your project
npx @rigour-labs/cli hooks init --tool cursor
npx @rigour-labs/cli check # run gates
npx @rigour-labs/cli check --deep # + local AI analysis
npx @rigour-labs/cli check --deep --provider claude -k sk-ant-xxx # cloud AI
npx @rigour-labs/cli studio # monitoring + Firewall tab
npx @rigour-labs/cli firewall adversarial
npx @rigour-labs/cli firewall admit
Architecture
| Package | Purpose |
|---|---|
@rigour-labs/core |
Gate engine, AST, Fix Packets, Brain, firewall kernel |
@rigour-labs/cli |
init, check, scan, run, studio, firewall |
@rigour-labs/mcp |
MCP server β governance tools for agent integration |
rigour-scan |
Zero-config shortcut: npx rigour-scan |
Stack: TypeScript strict, web-tree-sitter, Zod, Vitest.
Full docs | Technical Spec | Philosophy | Firewall ADR
MIT Β© Rigour Labs β Built by Ashutosh
If Rigour caught something real in your codebase β tell us.
Install
Add rigour to your client. Pick the one you use.
claude mcp add mcp -- npx -y @rigour-labs/mcpcodex mcp add mcp -- npx -y @rigour-labs/mcpamp mcp add mcp -- npx -y @rigour-labs/mcp{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@rigour-labs/mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@rigour-labs/mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"mcp","command":"npx","args":["-y","@rigour-labs/mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@rigour-labs/mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@rigour-labs/mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@rigour-labs/mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@rigour-labs/mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"@rigour-labs/mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y @rigour-labs/mcpRun `goose configure`, choose **Add Extension β Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance25/25
- Trust16/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 10 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 5.2.7 | Mar 18, 2026 |
| 5.2.6 | Mar 17, 2026 |
| 5.2.5 | Mar 17, 2026 |
| 5.2.4 | Mar 17, 2026 |
| 5.2.3 | Mar 15, 2026 |
| 5.2.2 | Mar 12, 2026 |
| 5.2.1 | Mar 11, 2026 |
| 5.2.0 | Mar 11, 2026 |
| 5.1.2 | Mar 9, 2026 |
| 5.1.1 | Mar 9, 2026 |
| 5.1.0 | Mar 9, 2026 |
| 5.0.1 | Mar 7, 2026 |
| 5.0.0 | Mar 7, 2026 |
| 4.3.6 | Mar 7, 2026 |
| 4.3.5 | Mar 6, 2026 |
| 4.3.4 | Mar 6, 2026 |
| 4.3.2 | Mar 4, 2026 |
| 4.3.1 | Mar 4, 2026 |
| 4.3.0 | Mar 4, 2026 |
| 4.2.3 | Mar 3, 2026 |
| 4.2.2 | Mar 2, 2026 |
| 4.2.1 | Mar 2, 2026 |
| 4.2.0 | Mar 2, 2026 |
| 4.1.1 | Feb 27, 2026 |
| 4.1.0 | Feb 27, 2026 |
| 4.0.5 | Feb 26, 2026 |
| 4.0.4 | Feb 25, 2026 |
| 4.0.3 | Feb 25, 2026 |
| 4.0.2 | Feb 25, 2026 |
| 4.0.1 | Feb 21, 2026 |
| 4.0.0 | Feb 21, 2026 |
| 3.0.6 | Feb 18, 2026 |
| 3.0.5 | Feb 18, 2026 |
| 3.0.4 | Feb 18, 2026 |
| 3.0.3 | Feb 18, 2026 |
| 3.0.2 | Feb 18, 2026 |
| 3.0.1 | Feb 18, 2026 |
| 3.0.0 | Feb 17, 2026 |
| 2.22.0 | Feb 17, 2026 |
| 2.21.2 | Feb 17, 2026 |
| 2.21.1 | Feb 17, 2026 |
| 2.21.0 | Feb 17, 2026 |
| 2.20.0 | Feb 10, 2026 |
| 2.19.2 | Feb 10, 2026 |
| 2.19.1 | Feb 9, 2026 |
| 2.19.0 | Feb 9, 2026 |
| 2.18.2 | Feb 9, 2026 |
| 2.18.1 | Feb 6, 2026 |
| 2.18.0 | Feb 4, 2026 |
| 2.17.2 | Feb 4, 2026 |
| 2.17.1 | Feb 3, 2026 |
| 2.17.0 | Feb 1, 2026 |
| 2.16.0 | Feb 1, 2026 |
| 2.15.0 | Feb 1, 2026 |
| 2.14.0 | Jan 30, 2026 |
| 2.13.0 | Jan 30, 2026 |
| 2.12.0 | Jan 30, 2026 |
| 2.11.0 | Jan 30, 2026 |
| 2.9.4 | Jan 28, 2026 |
| 2.9.3 | Jan 27, 2026 |