freshcrate
Skin:/
Home > MCP Servers > ClosedSSPM

ClosedSSPM

An open-source SSPM tool written in Go

Why this rank:Release freshnessHealthy release cadenceStrong adoption

Description

An open-source SSPM tool written in Go

README

ClosedSSPM

CI CodeQL Go Report Card License Go Version Release OpenSSF Baseline OpenSSF Scorecard

Open Source SaaS Security Posture Management (SSPM) tool. Audits SaaS platforms for security misconfigurations across ServiceNow, Snowflake, Google Workspace, and Microsoft Entra ID.

ClosedSSPM HTML Report

Features

  • Multi-platform architecture โ€” pluggable connector registry; add new SaaS platforms without touching core code (ServiceNow, Snowflake, Google Workspace, Entra ID)
  • 166 security checks across four platforms covering identity, access control, configuration, network, scripts, integrations, secret scanning, OAuth grants, and credential hygiene
  • Policy-as-code โ€” audit checks defined in YAML, easily extensible with custom policies
  • Embedded policies โ€” all checks are baked into the binary; no external files needed at runtime
  • HTML reports โ€” self-contained, dark-themed HTML reports with posture scoring
  • JSON output โ€” machine-readable output for pipeline integration
  • CSV export โ€” spreadsheet-friendly output for compliance workflows
  • MCP server โ€” AI-assisted audit analysis via Model Context Protocol (works with Claude, OpenCode, etc.)
  • Offline analysis โ€” collect data once, analyze many times with snapshot persistence
  • Parallel collection โ€” concurrent API requests with configurable rate limiting
  • SARIF output โ€” SARIF 2.1.0 format for GitHub Code Scanning integration
  • GitHub Action โ€” run audits directly in CI/CD pipelines with PiotrMackowski/ClosedSSPM
  • --fail-on threshold โ€” exit with code 2 when findings meet or exceed a severity level

Installation

Homebrew (macOS / Linux)

brew tap PiotrMackowski/closedsspm
brew install closedsspm

Binary (GitHub Releases)

Download the latest release for your platform from the Releases page.

# Linux amd64
curl -Lo closedsspm.tar.gz https://github.com/PiotrMackowski/ClosedSSPM/releases/latest/download/closedsspm_Linux_amd64.tar.gz
tar xzf closedsspm.tar.gz
sudo mv closedsspm closedsspm-mcp /usr/local/bin/

Debian / Ubuntu (.deb)

# Download the .deb from the latest release
sudo dpkg -i closedsspm_*.deb

Red Hat / Fedora (.rpm)

# Download the .rpm from the latest release
sudo rpm -i closedsspm_*.rpm

Docker

docker pull ghcr.io/piotrmackowski/closedsspm:latest

# Run an audit
docker run --rm \
  -e SNOW_INSTANCE=https://mycompany.service-now.com \
  -e SNOW_USERNAME=audit_user \
  -e SNOW_PASSWORD=secret \
  -v "$(pwd):/out" \
  ghcr.io/piotrmackowski/closedsspm:latest audit --output /out/report.html

Build from Source

git clone https://github.com/PiotrMackowski/ClosedSSPM.git
cd ClosedSSPM
make all

Quick Start

Run an Audit

# --- Option 1: Basic auth ---
export SNOW_INSTANCE=https://mycompany.service-now.com
export SNOW_USERNAME=audit_user
export SNOW_PASSWORD=secret

# --- Option 2: OAuth (client credentials) ---
export SNOW_INSTANCE=https://mycompany.service-now.com
export SNOW_CLIENT_ID=your_client_id
export SNOW_CLIENT_SECRET=your_client_secret

# --- Option 3: Key pair (JWT bearer) ---
export SNOW_INSTANCE=https://mycompany.service-now.com
export SNOW_CLIENT_ID=your_client_id
export SNOW_CLIENT_SECRET=your_client_secret
export SNOW_PRIVATE_KEY_PATH=/path/to/private-key.pem
export SNOW_KEY_ID=your_key_id
export SNOW_JWT_USER=svc_audit_user

# --- Option 4: API Key ---
export SNOW_INSTANCE=https://mycompany.service-now.com
export SNOW_API_KEY=your_api_key

# Full audit: collect + evaluate + report (ServiceNow is the default platform)
closedsspm audit --output report.html

# Explicitly specify a platform
closedsspm audit --platform servicenow --output report.html

# Or step by step:
closedsspm collect --output snapshot.json
closedsspm evaluate --snapshot snapshot.json --output report.html

Snowflake Audit

# --- Option 1: Basic auth ---
export SNOWFLAKE_ACCOUNT=xy12345.us-east-1
export SNOWFLAKE_USER=audit_user
export SNOWFLAKE_PASSWORD=secret

# --- Option 2: Key pair (JWT) ---
export SNOWFLAKE_ACCOUNT=xy12345.us-east-1
export SNOWFLAKE_USER=audit_user
export SNOWFLAKE_PRIVATE_KEY_PATH=/path/to/rsa_key.p8

# --- Option 3: OAuth ---
export SNOWFLAKE_ACCOUNT=xy12345.us-east-1
export SNOWFLAKE_TOKEN=your_oauth_access_token

# --- Option 4: Programmatic Access Token (PAT) ---
export SNOWFLAKE_ACCOUNT=xy12345.us-east-1
export SNOWFLAKE_USER=audit_user
export SNOWFLAKE_PAT=your_programmatic_access_token
# Optional: override defaults
export SNOWFLAKE_ROLE=SECURITYADMIN       # default: SECURITYADMIN
export SNOWFLAKE_WAREHOUSE=COMPUTE_WH     # default: COMPUTE_WH

# Run the audit
closedsspm audit --platform snowflake --output report.html

Google Workspace Audit

# Service Account with domain-wide delegation
export GW_CREDENTIALS_FILE=/path/to/service-account.json
export GW_DELEGATED_USER=admin@yourdomain.com

# Run the audit
closedsspm audit --platform googleworkspace --output report.html

Entra ID (Azure AD) Audit

# App registration with Microsoft Graph API permissions
export ENTRA_TENANT_ID=your-tenant-id
export ENTRA_CLIENT_ID=your-client-id
export ENTRA_CLIENT_SECRET=your-client-secret

# Run the audit
closedsspm audit --platform entra --output report.html

List Available Checks

closedsspm checks list

MCP Server (AI-Assisted Analysis)

# Start MCP server with a snapshot
closedsspm mcp --snapshot snapshot.json

Add to your MCP client configuration:

{
  "mcpServers": {
    "closedsspm": {
      "command": "/path/to/closedsspm",
      "args": ["mcp", "--snapshot", "/path/to/snapshot.json"]
    }
  }
}

Custom Policies Directory

By default the binary uses its embedded policies. To override with external policies:

closedsspm audit --policies /path/to/my/policies --output report.html

CLI Reference

closedsspm audit

Run a full security audit: connect to a SaaS platform, collect data, evaluate policies, and generate a report.

Flags:
  --platform string       SaaS platform to audit (default "servicenow")
  --instance string       Platform instance URL (or set via env var)
  --output string         Output file path (default "report.html")
  --format string         Report format: html, json, csv, or sarif (default "html")
  --policies string       Path to custom policies directory (default: embedded)
  --save-snapshot string  Also save the raw snapshot to this file
  --concurrency int       Max parallel API requests (default 5)
  --rate-limit float      Max API requests per second (default 10)
  --fail-on string        Exit with code 2 if findings at or above this severity (CRITICAL, HIGH, MEDIUM, LOW, INFO)

closedsspm collect

Collect data from a SaaS platform and save a snapshot for offline analysis.

Flags:
  --platform string    SaaS platform to collect from (default "servicenow")
  --instance string    Platform instance URL (or set via env var)
  --output string      Output snapshot file path (default "snapshot.json")
  --concurrency int    Max parallel API requests (default 5)
  --rate-limit float   Max API requests per second (default 10)

closedsspm evaluate

Evaluate policies against a previously saved snapshot.

Flags:
  --snapshot string   Path to snapshot file (default "snapshot.json")
  --output string     Output file path (default "report.html")
  --format string   Report format: html, json, csv, or sarif (default "html")
  --policies string   Path to custom policies directory (default: embedded)
  --fail-on string  Exit with code 2 if findings at or above this severity (CRITICAL, HIGH, MEDIUM, LOW, INFO)

closedsspm mcp

Start a Model Context Protocol server over stdio for AI-assisted audit analysis.

Flags:
  --snapshot string   Path to snapshot file (default "snapshot.json")
  --policies string   Path to custom policies directory (default: embedded)

closedsspm checks list

List all available security checks.

Flags:
  --policies string   Path to custom policies directory (default: embedded)

Environment Variables

All credentials are read from environment variables.

Each platform uses its own set of environment variables. The --platform flag (default: servicenow) determines which variables are read.

ServiceNow (--platform servicenow)

Variable Description Required
SNOW_INSTANCE ServiceNow instance URL (e.g. https://mycompany.service-now.com) Yes
SNOW_USERNAME Username for basic authentication For basic auth
SNOW_PASSWORD Password for basic authentication For basic auth
SNOW_CLIENT_ID OAuth 2.0 client ID For OAuth / key pair
SNOW_CLIENT_SECRET OAuth 2.0 client secret For OAuth / key pair
SNOW_PRIVATE_KEY_PATH Path to RSA private key PEM file For key pair
SNOW_KEY_ID Key ID from ServiceNow JWT Verifier Map For key pair
SNOW_JWT_USER ServiceNow username for JWT sub claim (cannot be admin) For key pair
SNOW_API_KEY API key token (from REST API Key table) For API key auth

Authentication method is auto-detected based on which variables are set:

Priority Method Required Variables
1 API key SNOW_API_KEY
2 Key pair (JWT bearer) SNOW_CLIENT_ID + SNOW_CLIENT_SECRET + SNOW_PRIVATE_KEY_PATH
3 OAuth (client credentials) SNOW_CLIENT_ID + SNOW_CLIENT_SECRET
4 Basic SNOW_USERNAME + SNOW_PASSWORD

New to API key auth in Servicenow? See docs/setup_apikey_auth.py

Snowflake (--platform snowflake)

Variable Description Required
SNOWFLAKE_ACCOUNT Account identifier (e.g. xy12345.us-east-1) Yes
SNOWFLAKE_USER Username For basic / key pair auth
SNOWFLAKE_PASSWORD Password For basic auth
SNOWFLAKE_PRIVATE_KEY_PATH Path to RSA private key PEM file For key pair (JWT)
SNOWFLAKE_TOKEN OAuth access token For OAuth
SNOWFLAKE_PAT Programmatic access token For PAT auth
SNOWFLAKE_ROLE Role to assume (default: SECURITYADMIN) No
SNOWFLAKE_WAREHOUSE Warehouse for queries (default: COMPUTE_WH) No
SNOWFLAKE_DATABASE Database (default: SNOWFLAKE for ACCOUNT_USAGE views) No

Authentication method is auto-detected based on which variables are set:

Priority Method Required Variables
1 Key pair (JWT) SNOWFLAKE_USER + SNOWFLAKE_PRIVATE_KEY_PATH
2 PAT SNOWFLAKE_USER + SNOWFLAKE_PAT
3 OAuth SNOWFLAKE_TOKEN
4 Basic SNOWFLAKE_USER + SNOWFLAKE_PASSWORD

Google Workspace (--platform googleworkspace)

Variable Description Required
GW_CREDENTIALS_FILE Path to Google service account JSON credentials file Yes
GW_DELEGATED_USER Email of a Google Workspace admin for domain-wide delegation Yes

Prerequisites:

  1. Create a GCP service account with domain-wide delegation enabled
  2. Grant the service account the following OAuth scopes in Google Workspace Admin Console โ†’ Security โ†’ API Controls โ†’ Domain-wide Delegation:
    • https://www.googleapis.com/auth/admin.directory.user.readonly
    • https://www.googleapis.com/auth/admin.directory.user.security
    • https://www.googleapis.com/auth/admin.reports.audit.readonly

Entra ID (--platform entra)

Variable Description Required
ENTRA_TENANT_ID Azure AD tenant ID Yes
ENTRA_CLIENT_ID App registration client (application) ID Yes
ENTRA_CLIENT_SECRET App registration client secret Yes

Prerequisites:

  1. Create an app registration in Entra ID (Azure AD)
  2. Grant the following Microsoft Graph Application permissions:
    • Application.Read.All
    • Directory.Read.All
    • AuditLog.Read.All
  3. Grant admin consent for the permissions

Architecture

closedsspm/
โ”œโ”€โ”€ cmd/
โ”‚   โ”œโ”€โ”€ closedsspm/
โ”‚   โ”‚   โ”œโ”€โ”€ main.go          # CLI commands (platform-agnostic)
โ”‚   โ”‚   โ”œโ”€โ”€ main_test.go     # CLI helper tests
โ”‚   โ”‚   โ””โ”€โ”€ platforms.go     # Blank imports to register platform connectors
โ”‚   โ””โ”€โ”€ mcp/                 # Standalone MCP server
โ”œโ”€โ”€ internal/
โ”‚   โ”œโ”€โ”€ collector/            # Collector interface & snapshot model
โ”‚   โ”œโ”€โ”€ connector/
โ”‚   โ”‚   โ”œโ”€โ”€ registry.go       # Platform connector registry
โ”‚   โ”‚   โ”œโ”€โ”€ entra/            # Microsoft Entra ID (Azure AD) client & collector
โ”‚   โ”‚   โ”œโ”€โ”€ googleworkspace/  # Google Workspace Admin SDK client & collector
โ”‚   โ”‚   โ”œโ”€โ”€ servicenow/       # ServiceNow API client & collector
โ”‚   โ”‚   โ””โ”€โ”€ snowflake/        # Snowflake SQL client & collector
โ”‚   โ”œโ”€โ”€ finding/              # Finding model & severity
โ”‚   โ”œโ”€โ”€ mcpserver/            # MCP server implementation
โ”‚   โ”œโ”€โ”€ policy/               # Policy engine (YAML loading & evaluation)
โ”‚   โ””โ”€โ”€ report/
โ”‚       โ”œโ”€โ”€ csv/             # CSV report generator
โ”‚       โ”œโ”€โ”€ html/            # HTML report generator
โ”‚       โ””โ”€โ”€ json/            # JSON report generator
โ”‚       โ”œโ”€โ”€ sarif/           # SARIF 2.1.0 report generator
โ””โ”€โ”€ policies/
    โ”œโ”€โ”€ entra/                # Entra ID policy definitions (YAML, embedded at build)
    โ”œโ”€โ”€ googleworkspace/      # Google Workspace policy definitions (YAML, embedded at build)
    โ”œโ”€โ”€ servicenow/           # ServiceNow policy definitions (YAML, embedded at build)
    โ””โ”€โ”€ snowflake/            # Snowflake policy definitions (YAML, embedded at build)

Subprojects

Repository Purpose Status
homebrew-closedsspm Homebrew tap โ€” hosts the formula for brew install closedsspm Active โ€” automatically updated by goreleaser on each release

Security Checks

ServiceNow (86 checks)

Category Count Examples
ACL 9 Unprotected ACLs, wildcard roles, public access, deny-unless audit
Roles 10 Admin role assignments, elevated privileges, role includes, security_admin, impersonator, oauth_admin
Scripts 6 eval() usage, client-callable script includes, global UI scripts
Integrations 7 Unauthenticated endpoints, basic auth, unvalidated MID servers
Instance Config 32 HTTPS enforcement, session timeout, password policy, CSRF, XSS prevention, TLS, sandbox, SAML signing, SSO bypass
Users 5 Never-logged-in accounts, locked-out active users, service account hygiene
SAST 17 Hardcoded credentials, eval(), GlideEvaluator, insecure HTTP, query injection, XSS sinks, workflow bypass

Snowflake (55 checks)

Category Count Examples
IAM 8 MFA not enabled, ACCOUNTADMIN/SYSADMIN default role, password-only auth, disabled users with roles, missing email/owner, MFA enrollment prompt
ACL 8 ACCOUNTADMIN/SECURITYADMIN/SYSADMIN grants, MANAGE GRANTS privilege, GRANT OPTION, role ownership, ACCOUNT ownership
Network 3 Missing network policies, no blocked IP list, network policy IP restrictions summary
Config 22 Unencrypted copy, storage integration, data exfiltration controls, encryption rekeying, session/password policies, warehouse monitors, MFA caching, session keep-alive, OAuth role blocking, network policy enforcement
Data Sharing 1 Outbound share review
Audit 3 Failed logins, logins without MFA, password-only logins
SAST 10 AWS keys in procedures/UDFs, private keys, eval(), new Function(), SQL injection, subprocess/os.system

Google Workspace (10 checks)

Category Count Examples
OAuth 10 Full Gmail/Drive/Admin SDK access tokens, Gmail send permission, contacts/calendar access, anonymous app tokens, native app tokens, OAuth authorization events, suspended user accounts

Entra ID (15 checks)

Category Count Examples
OAuth Permissions 8 Mail.ReadWrite, Mail.Send, Directory.ReadWrite.All, Files.ReadWrite.All, User.ReadWrite.All, RoleManagement.ReadWrite, Sites.FullControl.All, application permissions
Credential Hygiene 2 Expired credentials, password credentials (vs certificate)
OAuth Governance 1 Tenant-wide admin consent grants
Application Registration 1 Multi-tenant app registrations
Application Governance 1 App registrations without owners
Access Control 1 Service principals not requiring user assignment
Asset Hygiene 1 Disabled service principals

Run closedsspm checks list to see all individual rules.

MCP Server Interface

The MCP server exposes 6 tools and 2 resources over stdio transport for AI-assisted security audit analysis.

Tools

Tool Parameters Description
list_findings severity? category? List findings, optionally filtered by severity (CRITICAL/HIGH/MEDIUM/LOW/INFO) or category
get_finding finding_id (required) Get detailed information about a specific finding
get_summary (none) Overall audit summary with posture score and finding counts by severity/category
query_snapshot table (required) field? value? limit? Query raw ServiceNow records from the snapshot (default limit: 50, max: 500)
suggest_remediation finding_id (required) Get remediation steps and context for a specific finding
list_tables (none) List all collected tables with record counts

Resources

URI Description
closedsspm://summary Audit posture summary (JSON)
closedsspm://snapshot/meta Snapshot metadata: platform, instance URL, collection time, table count (JSON)

GitHub Action

Run ClosedSSPM audits directly in your CI/CD pipeline:

- name: Run ClosedSSPM audit
  id: audit
  uses: PiotrMackowski/ClosedSSPM@v0  # or pin to a specific release tag
  with:
    instance: ${{ secrets.SNOW_INSTANCE }}
    # --- Basic auth ---
    username: ${{ secrets.SNOW_USERNAME }}
    password: ${{ secrets.SNOW_PASSWORD }}
    # --- OR OAuth (client credentials) ---
    # client-id: ${{ secrets.SNOW_CLIENT_ID }}
    # client-secret: ${{ secrets.SNOW_CLIENT_SECRET }}
    # --- OR Key pair (JWT bearer) ---
    # client-id: ${{ secrets.SNOW_CLIENT_ID }}
    # client-secret: ${{ secrets.SNOW_CLIENT_SECRET }}
    # private-key: ${{ secrets.SNOW_PRIVATE_KEY }}
    # key-id: ${{ secrets.SNOW_KEY_ID }}
    # jwt-user: ${{ secrets.SNOW_JWT_USER }}
    # --- OR API Key ---
    # api-key: ${{ secrets.SNOW_API_KEY }}
    format: sarif
    fail-on: HIGH

- name: Upload SARIF to GitHub Code Scanning
  if: always()
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: ${{ steps.audit.outputs.sarif-path }}

Action Inputs

Input Required Default Description
instance Yes โ€” Platform instance URL
platform No servicenow SaaS platform to audit
username No โ€” Username for basic auth
password No โ€” Password for basic auth
client-id No โ€” OAuth 2.0 client ID
client-secret No โ€” OAuth 2.0 client secret
private-key No โ€” RSA private key PEM content for JWT key pair auth
key-id No โ€” Key ID from ServiceNow JWT Verifier Map
jwt-user No โ€” ServiceNow username for JWT sub claim (cannot be admin)
api-key No โ€” ServiceNow API key token
format No sarif Report format: html, json, csv, or sarif
fail-on No none Fail if findings at/above severity: CRITICAL, HIGH, MEDIUM, LOW, INFO

All credential inputs should be passed via GitHub encrypted secrets. Authentication method is auto-detected based on which inputs are provided (same priority as the CLI).

Action Outputs

Output Description
report-path Path to the generated report file
finding-count Total number of findings
posture-score Posture score grade (Aโ€“F)
sarif-path Path to SARIF file (only when format=sarif)

Security Best Practices

  • Snapshots may contain sensitive data โ€” treat them as confidential
  • The MCP server uses stdio transport only (no network exposure)
  • The tool is read-only โ€” it never writes to your SaaS platform
  • ServiceNow audit user should have read-only roles

Minimum ServiceNow Permissions

Create a dedicated audit user with these roles:

  • itil (read access to most tables)
  • security_admin (read access to ACLs and security config)

DefectDojo Integration

ClosedSSPM's SARIF output can be imported directly into DefectDojo for centralized vulnerability management. Generate a SARIF report and upload it via the DefectDojo API:

# Generate a SARIF report
closedsspm audit --platform servicenow --format sarif --output report.sarif

# Import into DefectDojo
curl -X POST "https://your-defectdojo.example.com/api/v2/reimport-scan/" \
  -H "Authorization: Token YOUR_DEFECTDOJO_API_TOKEN" \
  -F "scan_type=SARIF" \
  -F "file=@report.sarif" \
  -F "product_name=ClosedSSPM" \
  -F "engagement_name=SSPM Audit" \
  -F "auto_create_context=True"

Use reimport-scan (rather than import-scan) to deduplicate findings across successive runs.

Writing Custom Policies

Policies are YAML files organized by platform in the policies/ directory (e.g. policies/servicenow/):

id: CUSTOM-001
title: "Custom check description"
description: "Detailed explanation of what this checks"
severity: HIGH    # CRITICAL, HIGH, MEDIUM, LOW, INFO
category: Custom
platform: servicenow
query:
  table: sys_security_acl
  field_conditions:
    - field: "active"
      operator: "equals"     # empty, not_empty, equals, not_equals, contains
      value: "true"
remediation: "How to fix the issue"
references:
  - "https://docs.example.com"

Testing

Run the full test suite:

make test
# or directly:
go test ./...

Run static analysis:

make vet
go vet ./...

All pull requests must pass CI (tests + go vet) before merging.

Contributing

Contributions are welcome. Please follow these guidelines:

  1. Open an issue first โ€” describe the bug or feature before starting work
  2. Fork and branch โ€” create a feature branch from main
  3. Follow existing patterns โ€” match the project's code style and structure
  4. Add tests โ€” new features and bug fixes should include tests
  5. All CI checks must pass โ€” tests, go vet, CodeQL, and Trivy scans
  6. One PR per change โ€” keep pull requests focused and reviewable

See SECURITY.md for reporting vulnerabilities.

Reporting Issues

Found a bug or have a feature request? Open an issue on the GitHub Issues page.

When reporting a bug, please include:

  • ClosedSSPM version (closedsspm --version)
  • Operating system and architecture
  • Steps to reproduce the issue
  • Expected vs actual behavior
  • Any relevant error output

Reporting Vulnerabilities

Please use GitHub Security Advisories to report vulnerabilities privately. See SECURITY.md for full details including response timelines and scope.

Development

This project is developed with AI-assisted coding using OpenCode.

License

Apache 2.0 โ€” see LICENSE

Release History

VersionChangesUrgencyDate
v0.4.1## Changelog * c04014ef824c0d777a84e2d281be9d875e77aa72 chore(deps): consolidate dependency updates (#62) * 4e9df734e41df401a9a3cef6780bf8071a4da4dd deps: upgrade golang.org/x/net v0.50.0 โ†’ v0.51.0 (GO-2026-4559) (#54) * 30acc318ff0ca6b2088516a5c4dfefc30af569c0 feat: AGENTS.md, multi-platform Action, Entra cert auth, GW ADC, docs & tests (#64) Medium3/15/2026
v0.4.0## Changelog * 50bb200e7a75d28954651b3fa9f799794a900a7e feat(finding): add Platform field with HTML/CSV/SARIF support and merge-snapshot fix (#52) * 49291585832e9c7be77e74ec1ded7c32604b1594 feat: add Google Workspace and Entra ID OAuth security connectors (#49) * 5a1906b1d43414239d448dd290ab4fa0e199bcde feat: multi-platform scanning, ConnectorConfig refactor, slog, shared test infra, DefectDojo docs (#51) * 29a9915b76372ee63a367b7bffdb7d7343f1c8a9 feat: platform findings filter + security hardenLow3/7/2026
v0.3.1## Changelog * b852e6df7ad6525a4cdc62b31949d1a400af1424 fix(ci): fix Docker image provenance + add fuzz tests (#47) * b74b3836dee17dda57094440120f87117ce21e64 revert(ci): revert SLSA L3 provenance, restore cosign signing (#48) * 21fc68dbdf814240047b58d87700a81fdba21c49 style: apply gofmt -s to fix alignment and import ordering (#38) * f1609e54d954550ef57ef499c42ff60814b44662 style: apply gofmt -s to fix composite literal simplifications in tests (#45) Low3/6/2026
v0.3.0## Changelog * 0e47d55d15a9a4f075d5fb145f4c35dc81d6accb deps: bump golang.org/x/crypto (#35) * fa34756a2dcde0a705f2edbbea082624ec61192b feat(servicenow): add SAST-lite script scanning with 25 detection rules (#36) * d7bd42e83718e14fa98248a61e29e14c6e71dda2 feat: add Snowflake security posture connector with 30 policies (#34) * ec6bde8b88214de7a29f2e6b2367fc62347de0b0 fix(docs): prevent basic auth lockout in API key setup script (#37) Low3/3/2026
v0.2.3## Changelog * 6f2042b7b893976b7cadc8d11e20d2d14c9ec669 docs(readme): fix OpenCode repository URL (#33) Low3/1/2026
v0.2.2## Changelog * f55ef4e8ec30ca7c02d1f49f0cb861056302b3e1 chore: add build binaries and CSV reports to .gitignore * fc3f89dfcf7d7bbe0459761247d0d8576b135f62 docs(readme): add report screenshot, document CSV format, update architecture tree * a0a8ba63584e83b17ab77dfb53fff475258ce81f docs(readme): mention AI-assisted development with OpenCode (#31) * 20b49ad3f8c4586a02ece86e2605c4c085114d08 feat(policy): add 28 ServiceNow security hardening rules (#29) * 0e150515bd1361965da97368cf2b364d1257a761 featLow3/1/2026
v0.2.1## Changelog * a1fb128bf513589e3a085fd206a23f518e4f1a0e feat(report): add CSV output format with --format csv * 6c922e509a0ae3589d41c395ff5beb4cfd92bac5 feat(report): add collapsible groups, search box, and sticky toolbar * ba621fb563a5d87e7c9e9025b9b75815848a4b17 perf(report): embed findings as JSON with lazy DOM rendering * 4124db2fbb9ee559a66520418a54b5b5f7c4c75e refactor(finding): rename Evidence fields to SaaS-neutral names for multi-platform support * 4758cea39a969120f1db36187aa0a51ba4f77aLow2/28/2026
v0.2.0## Changelog * ff8c029eaf7e6acfaac1fee7b8c982d306c3c3d3 feat(connector): add platform connector registry * 73dcbd018cfc34bc96d92aede77cd9e4631562ed feat(connector): add platform connector registry * 65e4c320ddbec18ebad535370db6393d9f7acdb0 feat(release): sign checksums and Docker images with cosign keyless * 370df065ad58fb4571fac728b8325a278785a15e feat(report): add interactive severity filters and group-by controls to HTML report * fa6b9feaca647d5398e6b6a65633f3db0b40c14d fix(ci): pin Syft instLow2/28/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

mockdHigh-performance, multi-protocol mock server. HTTP, WebSocket, gRPC, MQTT, SSE, GraphQL, SOAP in one binary.v0.6.5
mcp-tidy๐Ÿงน Simplify your MCP servers with mcp-tidy, clearing server bloat to enhance performance and improve tool selection in Claude Code.main@2026-06-07
toolhive-registry-serverAn API server that implements the official MCP Registry API, providing standardised access to MCP servers from multiple backends, including file-based and other API-compliant registries.v1.4.6
toolhiveToolHive is an enterprise-grade platform for running and managing Model Context Protocol (MCP) servers.v0.29.0
olbHigh-performance zero-dependency L4/L7 load balancer written in Go. Single binary with Web UI, clustering, MCP/AI integration. 8.5K RPS, 39 E2E tests.v1.0.0

More in MCP Servers

claude-plugins-officialOfficial, Anthropic-managed directory of high quality Claude Code Plugins.
langchain4jLangChain4j is an open-source Java library that simplifies the integration of LLMs into Java applications through a unified API, providing access to popular LLMs and vector databases. It makes impleme
hyperframesWrite HTML. Render video. Built for agents.
claude-code-guideClaude Code Guide - Setup, Commands, workflows, agents, skills & tips-n-tricks go from beginner to power user!