Before you commit, know what broke. Pre-commit regression detection for Go projects.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Documented (README)
- !Install pipes a remote script into a shell (curl | sh)
git clone https://github.com/Bharath-code/regressGuard && cp regressGuard/*.md ~/.claude/agents/Resumen de Subagents
# RegressGuard
[](https://github.com/Bharath-code/regressguard/releases/latest)
[](LICENSE)
[](go.mod)
**Before you commit, know what broke.**
When an AI coding agent edits your app it can silently break an API contract — a removed field, a changed status code, a test that now fails — and still report success. RegressGuard records a known-good baseline and tells you (or the agent) exactly what regressed.
**It is built to live inside the agent's own loop.** RegressGuard ships as an [MCP](https://modelcontextprotocol.io) server, so agents like Claude Code and Cursor can verify their own work and self-correct *before* a human ever sees the diff — zero extra steps. The same engine also runs as a plain CLI for humans and CI.
```
# Agent-native (primary): the agent calls these as MCP tools in its loop
check → status # see "Agent-native verification (MCP)" below
# the baseline stays yours: agents cannot re-record it
# Human / CI (also works): two commands, no test-writing, under 15 seconds
regressguard snapshot # record the known-good state
regressguard check # compare after edits — see what broke
```

*Break → detect → fix → green. Reproduce it yourself: `./demo/demo.sh`.*
---
## Install
**macOS / Linux (recommended)**
```sh
curl -fsSL https://raw.githubusercontent.com/Bharath-code/regressguard/main/install.sh | sh
```
**Verify**
```sh
regressguard version # first line must say "RegressGuard"
```
> **Upgrading from v0.1.x?** The binary was renamed from `rg` to `regressguard` because `rg`
> collides with ripgrep. There is no `rg` shim and the old `rg upgrade` can't fetch v0.2.0:
> re-run the installer, delete the old `rg`, then run `regressguard hook install`
> (old hooks call `rg`; `regressguard doctor` flags them).
---
## Quickstart (3 minutes)
### 1. Initialize your project
```sh
cd your-project
regressguard init
```
RegressGuard detects your test command, framework, and dev server URL automatically.
### 2. Record the baseline before your AI session
Make sure your dev server is running, then:
```sh
regressguard snapshot
```
Output:
```
Snapshot
OK Tests 42 passed, 0 failed 6.8s
OK Routes 6 captured, 2 skipped
OK Schemas 6 hashed
Saved:
.regressguard/snapshot.json
Next:
Ask your AI agent to make the code change, then run:
regressguard check
```
### 3. Run your AI agent
Let Claude Code, Cursor, or Codex make its changes.
### 4. Check for regressions before committing
```sh
regressguard check
```
**Clean — safe to commit:**
```
Check
OK No regressions detected
Tests 42 passed, 0 failed
Routes 6 unchanged
Timing within tolerance
Safe to commit.
```
**Regression found — commit blocked:**
```
Check
X 2 regressions detected
Route Before After Change
GET /api/users schema schema schema
- role (string, removed)
+ age (number, added)
POST /api/user/update 200 500 status
Likely cause:
Auth/session behavior or routing changed during the last code edit.
Changed files since snapshot:
app/api/users/route.ts
internal/auth/session.go
Next:
regressguard check --verbose
git diff
Commit blocked.
```
Exit code `1` on critical — works with git hooks and CI.
---
## Git Hook (auto-protect every commit)
```sh
regressguard hook install
```
Now `regressguard check` runs automatically before every `git commit`. When a critical regression is detected, the commit is blocked with a compact output:
```
RegressGuard pre-commit
X 1 regression detected
POST /api/user/update status changed from 200 to 500
Run:
regressguard check --verbose
Commit blocked. Use --no-verify only if you accept the risk.
```
Bypass with `git commit --no-verify` only when you accept the risk.
---
## Agent-native verification (MCP)
This is RegressGuard's primary mode. Instead of waiting for a human to run `regressguard check`, the AI agent calls it **as a tool inside its own edit loop** — so it catches and fixes regressions it just introduced, before handing the change back to you.
Start the server (stdio transport):
```sh
regressguard mcp serve
```
**Register with Claude Code:**
```sh
claude mcp add regressguard -- regressguard mcp serve
```
**Register with Cursor** (`.cursor/mcp.json`):
```json
{
"mcpServers": {
"regressguard": { "command": "regressguard", "args": ["mcp", "serve"] }
}
}
```
The agent then has two tools:
| Tool | Purpose |
|---|---|
| `check` | Compare current state against the snapshot; returns structured findings with severity |
| `status` | Sub-second health check (snapshot age, route/config/hook status) — no tests run |
**The baseline is human-owned.** Agents get no `snapshot` tool by default. If they
could re-record the baseline, an agent could accept its own regression
(`check` fails → `snapshot` → `check` passes). You record the baseline with
`regressguard snapshot`. To let agents re-baseline anyway, set this in
`.regressguard/config.json` and restart the MCP server:
```json
{ "mcp": { "allowSnapshot": true } }
```
Tool responses are the **same machine-readable payload as `regressguard check --json`** — see [`docs/json-contract.md`](docs/json-contract.md). Every tool call is recorded to an append-only audit log under `.regressguard/` (tool, status, duration, timestamp).
A typical loop: the agent edits code → calls `check` → reads the structured findings → fixes the regression → calls `check` again → only then reports done.
---
## Commands
| Command | Purpose |
|---|---|
| `regressguard init` | Configure RegressGuard for this project |
| `regressguard quickstart` | Auto-configure and snapshot in one command |
| `regressguard snapshot` | Record the current passing state |
| `regressguard check` | Compare current state against the snapshot |
| `regressguard status` | Sub-second health check (snapshot age, routes, hook) — no tests run |
| `regressguard explain <route>` | Show before/after diff for a specific route |
| `regressguard watch` | Watch files and auto-run check on changes |
| `regressguard mcp serve` | Run the MCP server so AI agents can self-verify (see above) |
| `regressguard hook install` | Install the pre-commit git hook |
| `regressguard hook uninstall` | Remove the git hook |
| `regressguard config get <key>` | Read a config value |
| `regressguard config set <key> <value>` | Write a config value |
| `regressguard doctor` | Diagnose setup issues |
| `regressguard upgrade` | Update regressguard to the latest version |
| `regressguard completion <shell>` | Generate shell autocompletions (bash, zsh, fish) |
| `regressguard version` | Print version and build metadata |
Run `regressguard <command> --help` for flags, examples, and exit codes.
---
## Configuration
Config lives in `.regressguard/config.json` (human-readable, git-ignoreable).
```json
{
"version": 1,
"testCommand": "npm test",
"serverUrl": "http://localhost:3000",
"auth": {
"mode": "bearer",
"testToken": "your-test-token",
"headerName": "Authorization",
"prefix": "Bearer"
},
"ignoreFields": ["requestId", "traceId"],
"routes": [
{ "method": "GET", "path": "/api/health" },
{ "method": "GET", "path": "/api/users" },
{ "method": "GET", "path": "/api/admin", "skip": true }
]
}
```
**Auth modes:** `bearer` (Authorization header), `cookie` (Cookie header), or omit for public routes only.
**ignoreFields:** Fields to exclude from schema comparison — useful for volatile app-specific values like `requestId` or `traceId`.
---
## How it works
1. `regressguard snapshot` runs your test suite and hits each configured route. It records pass/fail counts, HTTP status codes, and a normalized schema hash for each response.
2. `regressguard check` reruns the same tests and routes, then diffs against the snapshot:
- **CRITICAL**: test suite newly failing, status code changed, response schema changed (e.g. field removed/added/changed)
- **WARNING**: response time increased >200ms and >50% of baseline
- **PASS**: everything within acceptable variance
3. Schema comparison automatically normalizes JSON payloads:
- **Default Dynamic Keys**: Strips 16 common dynamic keys (`id`, `uuid`, `token`, `nonce`, `timestamp`, `createdAt`, `updatedAt`, `deletedAt`, `created_at`, `updated_at`, `deleted_at`, `sessionId`, `accessToken`, `refreshToken`, `expiresAt`, `expires_at`) before hashing.
- **Pattern Detection**: Automatically detects ISO-8601 date strings, UUIDs, and JWTs, replacing them with generic type representations (`"date"`, `"uuid"`, `"token"`).
- **User Customization**: Respects custom `ignoreFields` defined in config.
This ensures the shape integrity of endpoints remains stable across runs even when database IDs and timestamps change.
4. A route whose only change is a non-blocking **WARNING** (e.g. a timing regression) is reported on its own line and is **not** counted in the "Routes: N unchanged" summary or in `summary.passed` of `--json` output.
### Known limitations
These are deliberate trade-offs in v1 — favoring zero false positives over exhaustive detection. They are on the roadmap, not accidental:
- **Test identity comparison is best-effort.** `regressguard check` records failing test *names* (jest, vitest, bun, go test output) and flags a CRITICAL when a test that passed at baseline starts failing — even if the net failure count is unchanged. When names cannot be parsed from your runner's output (or the baseline predates name recording), itLo que la gente pregunta sobre regressGuard
¿Qué es Bharath-code/regressGuard?
+
Bharath-code/regressGuard es subagents para el ecosistema de Claude AI. Before you commit, know what broke. Pre-commit regression detection for Go projects. Tiene 1 estrellas en GitHub y su última actualización registrada es del 2026-10-03.
¿Cómo se instala regressGuard?
+
Puedes instalar regressGuard clonando el repositorio (https://github.com/Bharath-code/regressGuard) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar Bharath-code/regressGuard?
+
Nuestro agente de seguridad ha analizado Bharath-code/regressGuard y le ha asignado un Trust Score de 79/100 (tier: Trusted). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene Bharath-code/regressGuard?
+
Bharath-code/regressGuard es mantenido por Bharath-code. La última actividad registrada en GitHub es del 2026-10-03, con 0 issues abiertos.
¿Hay alternativas a regressGuard?
+
Sí. En ClaudeWave puedes explorar subagents similares en /categories/agents, ordenados por popularidad o actividad reciente.
Despliega regressGuard en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/bharath-code-regressguard)<a href="https://claudewave.com/repo/bharath-code-regressguard"><img src="https://claudewave.com/api/badge/bharath-code-regressguard" alt="Featured on ClaudeWave: Bharath-code/regressGuard" width="320" height="64" /></a>Más Subagents
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
The agent that grows with you
Java 面试 & 后端通用面试指南,覆盖计算机基础、数据库、分布式、高并发、系统设计与 AI 应用开发
Build Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.
Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.
The agent engineering platform.