Repository navigation
Releases: garagon/mcp-aguara
Release list
v0.8.0
Aguara MCP v0.8.0 aligns the server with Aguara core v0.27.0: agents now get the full 250-detection catalog, and scan_content gains the npm install-trust surface. This release is also the first one publishable to the Official MCP Registry.
npm install-trust posture via scan_content
Aguara v0.25 added an npm-policy analyzer that reads .npmrc and the package.json allowScripts policy for npm v12 install-trust weakenings. The analyzer keys on the exact .npmrc basename, leading dot included; the MCP filename sanitizer now preserves it (the same fix class .cursorrules got in v0.7.0), so the surface actually works end to end:
scan_content(content: "dangerously-allow-all-scripts=true", filename: ".npmrc")
-> NPM_DANGEROUS_ALL_SCRIPTS_001 (HIGH): bypasses the allowScripts policy entirely
The four NPM_* rules cover the dangerously-allow-all-scripts escape hatch, unpinned approvals, and allow-git / allow-remote relaxations.
Catalog
250 detections (193 YAML pattern rules + 57 analyzer-emitted) across twelve analyzers. list_rules and explain_rule resolve the new NPM_* rules and the npm v12 readiness INFO rules. No public API changes in core between v0.24.0 and v0.27.0; scan behavior is otherwise unchanged.
Official MCP Registry readiness
The Docker image now carries the io.modelcontextprotocol.server.name ownership label and server.json declares the ghcr.io/garagon/mcp-aguara:0.8.0 OCI package, so this version can be installed through registry-aware MCP clients once listed.
Install / upgrade
curl -fsSL https://raw.githubusercontent.com/garagon/mcp-aguara/main/install.sh | shOr Docker:
docker pull ghcr.io/garagon/mcp-aguara:0.8.0Add to Claude Code:
claude mcp add aguara -- aguara-mcpCompatibility
Drop-in upgrade from v0.7.0: same five tools, same parameters, same response shapes. The only behavior change is additive (.npmrc filenames now reach the npm-policy analyzer instead of being silently renamed).
Verify
Release archives are Cosign-signed with SPDX SBOMs; the multi-arch image (linux/amd64 + linux/arm64, digest sha256:8a646ba5891bf485322ddc5a1847b7ea1333df3b97bd7a9236c37047ad8d0838) is signed at digest with SLSA provenance and SBOM attestations:
VERSION=v0.8.0 .github/scripts/verify-release.shFull CHANGELOG
See CHANGELOG.md.
v0.7.0
Aligns mcp-aguara with Aguara v0.24.0 and unlocks the agent-trust surfaces through scan_content. An agent using this MCP can now vet the riskiest files a cloned repo ships for AI tools before trusting any of them: Claude Code project settings (.claude/settings.json, eight AGENTCFG_* rules for fetch-and-execute hooks, code-injection env vars, bypassPermissions, and more), agent instruction files (.cursorrules, .windsurfrules, .clinerules, AGENTS.md, copilot-instructions.md) as high-trust prompt surfaces, and pnpm supply-chain posture (pnpm-workspace.yaml, nine PNPM_* rules).
Two of these needed more than the core bump: the filename sanitizer used to strip paths to a bare basename, which silently kept the agent-policy analyzer and the instruction-dotfile routing out of reach. Both now have scoped exceptions, pinned end to end by a new regression suite.
Use it
Add the MCP server to your client (Claude Code, Cursor, anything that speaks MCP):
claude mcp add aguara -- aguara-mcpThen ask the agent things like:
- "This repo ships a .claude/settings.json - is it safe to trust this workspace?"
- "Scan this .cursorrules file for prompt injection before I open the project."
- "Does this pnpm-workspace.yaml weaken pnpm's supply-chain defaults?"
- "Is this MCP config exposing credentials?"
For repository-wide dependency checks (npm, PyPI, pnpm, Go, crates.io, Composer, RubyGems, Maven, NuGet), use the Aguara CLI directly - the check_project / audit_project MCP tools remain deferred until Aguara core exposes a stable public Check API.
Install / upgrade
# Quick install (Linux / macOS)
curl -sSL https://raw.githubusercontent.com/garagon/mcp-aguara/main/install.sh | sh
# Pinned install
curl -sSL https://raw.githubusercontent.com/garagon/mcp-aguara/main/install.sh | VERSION=v0.7.0 sh
# Docker
docker pull ghcr.io/garagon/mcp-aguara:0.7.0Provenance
- Release archives signed with Cosign (keyless OIDC), SPDX SBOM per archive via syft,
-trimpathfor reproducible builds. - Multi-arch Docker image (
linux/amd64,linux/arm64) atghcr.io/garagon/mcp-aguara:0.7.0@sha256:7033d6199bcda57dea340ba0bfd52b0bf05360f10045030062895b452deb3334signed at digest with SLSA Provenance (mode=max) and SBOM attestations. Base images pinned by multi-arch index digest. Runs as non-root UID 10001. - Verify locally:
VERSION=v0.7.0 .github/scripts/verify-release.shRuns cosign verify-blob on checksums.txt, sha256 match, binary --version check, cosign verify on the image, and SBOM + SLSA Provenance presence for the host platform.
Compatibility
- Aguara core: pinned to
v0.24.0. Catalog: 244 detections (193 YAML pattern rules + 51 analyzer-emitted) across eleven analyzers, including the newagent-trustcategory. - MCP tool surface unchanged:
scan_content,check_mcp_config,list_rules,explain_rule,discover_mcp. No input-schema changes; existing integrations keep working unchanged. Binary name unchanged (aguara-mcp). server.jsonreports0.7.0.
CHANGELOG
Aligns mcp-aguara with the Aguara v0.24.0 backend and unlocks the new
detection surfaces through scan_content. The agent layer Aguara added
between v0.19 and v0.24 is exactly the territory this MCP serves -- an
agent deciding whether to trust a cloned repo's configuration -- so this
release also fixes two filename-sanitization gaps that would have
silently kept those analyzers out of reach.
Added
- Claude Code settings posture via
scan_content. Passing
filename: ".claude/settings.json"(orsettings.local.json) now
reaches the agent-policy analyzer and its eightAGENTCFG_*rules
(categoryagent-trust): fetch-and-execute hooks, code-injection env
vars,bypassPermissions, MCP auto-approval, broad or secret-read
allow rules, repo-shipped credential helpers, weak default modes.
sanitizeFilenamepreviously stripped the path to a bare
settings.json, which the analyzer ignores; the.claude/suffix is
now preserved for exactly these two filenames, the same scoped
exception the.github/workflows/prefix already has. - Agent instruction files as high-trust prompt surfaces.
.cursorrules,.windsurfrules, and.clinerulesnow keep their
leading dot through sanitization, so they reach the prompt-injection
analyzer and get the high-trust confidence weighting Aguara v0.24
gives instruction files. Previously the sanitizer dropped the leading
dot and the content was scanned as generic text.AGENTS.mdand
copilot-instructions.mdalready passed through intact. - pnpm supply-chain posture via
scan_content. Passing
filename: "pnpm-workspace.yaml"reaches the pnpm-policy analyzer
and its ninePNPM_*rules for settings weakened below the pnpm v11
defaults (no sanitizer change needed; the basename was already
preserved). - v0.24 regression suite (
v024_regression_test.go) pinning the
new contract end to end throughsanitizeFilename: agent-policy on
.claude/paths, pnpm-policy onpnpm-workspace.yaml,
instruction-dotfile routing,agent-trustcategory size, and
analyzer-rule metadata viaexplain_rule.
Aligned
- Aguara core v0.18.2 -> v0.24.0. No public API surface changes; no
MCP input-schema changes. The catalog grows from 219 to 244 detections
(193 YAML + 51 analyzer-emitted) across eleven analyzers: the bump
inherits pyrisk and rsbuild (v0.22), the six Miasma-informed
behavioral detections (v0.23), and pnpm-policy, agent-policy, and
instruction-file weighting (v0.24). - Tool descriptions and README updated to the v0.24.0 surface:
catalog counts, analyzer lists, the newagent-trustcategory, and
the filename hints that route content to the new analyzers. server.jsonreportsversion: 0.7.0.
v0.6.1
Maintenance release. Aligns mcp-aguara with Aguara v0.18.2 - same five MCP tools, same 219-detection catalog, no schema changes. The relevant pickup from core is the sensitive: true flag on MCPCFG_003 ("Hardcoded secrets in MCP server env block"), so any MCP server config with a hardcoded API token in its env block now comes back with its matched text scrubbed to [REDACTED] from two layers (core's in-place scrub + the MCP's defensive guard).
Use it
Add the MCP server to your client (Claude Code, Cursor, anything that speaks MCP):
claude mcp add aguara -- aguara-mcpThen ask the agent things like:
- "Is this README asking me to run unsafe install commands?"
- "Does this skill try to read secrets or exfiltrate data?"
- "Which rule triggered, and why?"
For repository-wide dependency checks (npm, PyPI, pnpm, Go, crates.io, Composer, RubyGems, Maven, NuGet), use the Aguara CLI directly - those still live there until a stable public Check API lands.
Install / upgrade
# Quick install (Linux / macOS)
curl -sSL https://raw.githubusercontent.com/garagon/mcp-aguara/main/install.sh | sh
# Pinned install
VERSION=v0.6.1 curl -sSL https://raw.githubusercontent.com/garagon/mcp-aguara/main/install.sh | VERSION=v0.6.1 sh
# Docker
docker pull ghcr.io/garagon/mcp-aguara:0.6.1Provenance
- Release archives signed with Cosign (keyless OIDC), SPDX SBOM per archive via syft,
-trimpathfor reproducible builds. - Multi-arch Docker image (
linux/amd64,linux/arm64) atghcr.io/garagon/mcp-aguarasigned at digest with SLSA Provenance (mode=max) and SBOM attestations. Base images pinned by multi-arch index digest. Runs as non-root UID 10001. - Verify locally:
VERSION=v0.6.1 .github/scripts/verify-release.shRuns cosign verify-blob on checksums.txt, sha256 match, binary --version check, cosign verify on the image, and SBOM + SLSA Provenance presence for the host platform.
Compatibility
- Aguara core: pinned to
v0.18.2. Catalog: 219 detections (193 YAML pattern rules + 26 analyzer-emitted). - MCP tool surface unchanged from v0.6.0:
scan_content,check_mcp_config,list_rules,explain_rule,discover_mcp. No input-schema changes. Binary name unchanged (aguara-mcp). server.jsonnow reports0.6.1against the canonicalio.github.garagon/mcp-aguaraidentifier. Thepackages[]entry was dropped because the v0.2.0-era.mcpbartifact has not been regenerated on subsequent releases; future releases may reintroduce it under a build pipeline that tracks it.
CHANGELOG
Aligned
- Aguara core v0.17.0 → v0.18.2. No public API surface changes.
MCPCFG_003now ships withsensitive: trueat the rule level, so core'sRedactSensitiveFindingsscrubsMatchedTextin place before the finding reaches the MCP formatter. The MCP's defensiveformatScanResultguard already covered this case, so this change is defense-in-depth across two layers rather than a behaviour change. server.jsonaligned to the canonical repository. Bumped to0.6.1and switched to theio.github.garagon/mcp-aguaraidentifier.packages[]removed pending a release-flow story for.mcpbgeneration.
Added
v018_regression_test.go. End-to-end test that feeds an MCP config with a hardcodedGITHUB_TOKENthroughaguara.ScanContent, asserts the resulting finding hasSensitive=true, and assertsformatScanResultredacts the literal secret to[REDACTED].
Out of scope (still deferred to v0.7.0)
check_projectandaudit_projectMCP tools. Repository-wide dependency checks (including the May 2026 manually-curated threat intel for the AntV / Mini Shai-Hulud npm compromises) still require the Aguara CLI.
v0.6.0
mcp-aguara v0.6.0
This release aligns Aguara MCP with Aguara v0.17.0.
Aguara MCP is the local MCP adapter for Aguara: it lets agents scan untrusted content, MCP configs, and rule metadata through an in-process Go library, without shelling out to the aguara binary.
What changed
- Upgraded the embedded Aguara engine from v0.14.4 to v0.17.0.
list_rulesnow exposes the current 219 detection catalog.explain_rulenow resolves analyzer-emitted rules, including modern JS, CI trust, package metadata, NLP, toxic-flow, and rug-pull detections.- Added a defensive MCP redaction boundary so sensitive findings cannot leak raw secrets through
matched_text. - Preserved
.github/workflows/filenames during content scans so CI-trust analyzer rules can fire correctly from MCP. - Hardened
install.sh:- checksum verification now fails closed;
- archive extraction uses
tar -xzof; - installer behavior is covered by a cap-drop Docker test.
- Hardened release distribution:
- reproducible GoReleaser builds with
-trimpath; - signed checksums with Cosign;
- SPDX SBOMs;
- signed multi-arch Docker images for
linux/amd64andlinux/arm64; - SLSA provenance checks in
verify-release.sh.
- reproducible GoReleaser builds with
- Rewrote the README and CHANGELOG to reflect the actual v0.17 MCP surface.
What is intentionally not included
Aguara MCP does not expose repository-wide dependency checking yet.
For full project dependency checks, use the Aguara CLI:
aguara check .
aguara audit . --ciA future MCP release can add check_project after Aguara core exposes a stable public Check API. This release keeps the MCP server in-process, offline by default, and avoids subprocess-based CLI wrapping.
Install
curl -fsSL https://raw.githubusercontent.com/garagon/mcp-aguara/main/install.sh | shThen register it with your MCP client, for example:
claude mcp add aguara -- aguara-mcpv0.5.0
What's new
Aguara scanner upgraded from v0.9.1 to v0.14.4 - 5 minor releases, ~50 upstream commits, one high-severity bug fix that directly impacts this server's detection quality.
High-severity engine fix (v0.14.4)
The Aho-Corasick keyword prefilter silently dropped rule candidates whenever a shorter keyword was a prefix of a longer keyword at the same content position (e.g. bash vs bashrc). Before this upgrade, scan_content and check_mcp_config returned zero findings for content like cat payload >> ~/.bashrc even though the regex layer could have matched it. Every consumer of aguara-mcp on v0.4.0 or earlier was silently losing those detections. No user action required beyond upgrading.
NLP analysis now runs on JSON and YAML (v0.10.0)
Particularly relevant to check_mcp_config: its canonical input is a JSON MCP configuration, and until now the NLP layer was markdown-only. String values longer than 50 characters inside .json / .yaml / .yml files now go through authority-claim detection and credential-exfil-combo classification, not just pattern matching. Catches MCP tool description poisoning that pure regex rules miss.
Two new evasion decoders (v0.14.0)
Pattern matcher now decodes 8 encodings. The two new ones:
base32(RFC 4648, 40+ char runs, padding optional)- C-style octal escapes (
\NNN, 4+ contiguous digits)
Both feed the existing DecodeAndRescan pipeline and respect the shared per-file cap.
Upstream improvements (free with library upgrade)
- 189 rules across 13 categories (up from 177 / 13 in v0.4.0)
- Pattern matcher 3.7-6.4x speedup via Aho-Corasick keyword prefilter (v0.14.0). End-to-end impact on this server is small (overhead dominated by JSON-RPC + serialization) but scans on large inputs feel noticeably snappier.
- 4 regex-boundary fixes (
PROMPT_INJECTION_004,PROMPT_INJECTION_011,UNI_001,UNI_006in v0.14.3). Fewer false positives on legitimate documentation content. - RiskScore (0-100) on every
ScanResultwith diminishing returns weighting (v0.10.0) - Cross-file toxicflow correlation within the same directory (v0.10.0). Detects dangerous capability combinations across files.
- Proximity weighting in the NLP classifier (v0.10.0). Clustered keywords score higher, spread-out keywords score lower.
- Dynamic confidence scores replacing flat 0.85/0.70 values (v0.10.0)
- Configurable cross-rule dedup mode (v0.10.0). Consumers that need complete signal can opt into
DeduplicateSameRuleOnly. - Reproducible builds via
-trimpath(v0.14.0). Signed checksums via Cosign keyless, SPDX SBOM per archive.
Compatibility
No breaking changes to the MCP tool surface. scan_content, check_mcp_config, list_rules, explain_rule, and discover_mcp all accept the same arguments and return the same shape as in v0.4.0. server.json stays on its current identifier; users who pinned uses: garagon/mcp-aguara@v0.4.0 keep working until they bump.
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's new
Aguara scanner upgraded from v0.7.0 to v0.9.1 — 3 minor releases, 26 upstream commits, security audit in 3 phases.
Context-aware scanning
New tool_name parameter on scan_content enables false-positive reduction. When the originating tool is known (e.g. Bash, Edit, WebFetch), built-in exemptions filter out findings that are always FPs for that tool. Uses the new ScanContentAs() API.
Scan profiles
New scan_profile parameter on scan_content and check_mcp_config:
strict(default) — enforces all rulescontent-aware— reduced false positives for known toolsminimal— flag-only mode, no blocking
Verdict and remediation
- Scan responses now include a verdict field (
clean,flag, orblock) for quick pass/fail decisions - Each finding includes remediation guidance when the rule provides it
Upstream improvements (free with library upgrade)
- 177 rules across 13 categories (up from 173/12)
- New rules for .env file exposure and GitHub Actions workflow injection (community-contributed)
- Unicode NFKC normalization prevents evasion via fullwidth characters
- Security audit fixes — 12 fixes across 3 phases (performance, dedup, hardening, rules quality)
- Nil pointer fix in
ListRules/ExplainRule - Confidence scoring (0.0–1.0) on every finding
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- fix: add scan timeout and sanitize error messages by @garagon in #3
- fix: correct rule counts in coverage table by @garagon in #4
- refactor: migrate from mcp-go to official go-sdk by @garagon in #5
- docs: highlight official MCP SDK adoption by @garagon in #6
Full Changelog: v0.2.0...v0.3.0