Skip to main content

v0.0.181

Released Nov 13, 2026


Release Notes

Reports now tell you where a site actually lives: a new host section lists its IPv4 and IPv6 addresses, a connect time and the country (offline, from a bundled DB-IP Lite snapshot), and names the CDN or WAF in front of it separately from the origin. Every report also says whether robots.txt was honoured and how many pages it kept out. A site that blocks every AI crawler with one wildcard rule gets one row instead of one per crawler, installs and updates verify the release's GitHub build attestation when gh is available, and discovery probes you never approved show up as coverage gaps instead of false verdicts.

Added

  • Every report says whether the audit honoured robots.txt and how many pages it kept out of the audit (#1782): the console, text, markdown, HTML and LLM reports carry one plain sentence, and the JSON report (schema 1.19) carries meta.respectRobots and meta.robotsBlockedPages. A run with respect_robots = false says robots.txt was not honoured and pages it disallows were audited too. Reports the audit engine assembles (buildV1Report, buildV2Report) stamp the same two fields on scanScope when the caller passes a scanScope option, so a hosted run reports them too.
  • Reports show a host section with the resolved IPv4 and IPv6 addresses, a TCP connect time and the GeoIP country of the first address, from a bundled offline DB-IP Lite snapshot (CC BY 4.0). When the site runs on Cloudflare, CloudFront, Vercel, Netlify, Fastly or Akamai, the country is labelled an edge location, not the origin's, in every output format (#10)
  • The report's host section now names the edge (CDN, proxy or WAF) apart from the origin: host.edge carries the edge provider, the sources that matched it (response headers, published IP ranges, ASN) and the origin when it is known, and host.cloudRange marks an address inside a whole-cloud range as provider information, never an edge. Edge detection uses bundled published IP ranges and an offline ASN snapshot. The JSON report schema is now 1.18 (#1807).
  • Installs and updates verify the release's GitHub build attestation (#169). When gh is installed and logged in, install.sh, install.ps1 and squirrel self update run gh attestation verify <file> --repo squirrelscan/squirrelscan on the downloaded binary after the SHA-256 check and fail, installing nothing, on a mismatch. When gh is missing, too old or logged out, they print a warning and rely on the checksum alone. The trust root is GitHub's attestation service, not the download origin. The install docs gain a "Verifying a release" section with the manual command.

Fixed

  • Discovery probes that were not approved, not sent or refused now appear as coded coverage gaps in notChecked, keeping previous findings open; an approved AGENTS.md probe answered with 404 is reported as absent (#1794).
  • ax/ai-crawlers reports one grouped row when only User-agent: * blocks the AI crawlers (#1780), instead of one row per crawler. The row (ai-crawlers-wildcard-blocked) names the wildcard rule and lists the affected crawlers, and stays info when crawl/robots-txt already fails on the same whole-site block. Crawlers the file blocks by name keep their own rows. When User-agent: * with Disallow: / is the only decision (no AI crawler or search engine named, no Allow exception), that row is the only check the rule emits, at info, pointing at crawl/robots-txt; a named group that decides differently (for example a Googlebot group allowing the site) keeps the search-engine-access check. Those crawlers no longer count toward ai-answer-access or archive-crawler-access, so some scores move.
  • Pricing version 13 adds the llm_rules_page credit feature: 2 credits per page when an audit opts into LLM rules. Audits that do not opt in cost the same as before.

Changed

  • The TLS certificate handshake is shared by the CLI and the cloud worker (#3922). It moves from apps/cli to the @squirrelscan/fetchers/tls-probe subpath, which only the CLI and the worker import: the rules, the crawler and the audit engine still receive it as an injected TlsProbeFn and open no socket. A new requireProxy option makes a handshake that would go out directly unavailable instead, so a cloud worker without its egress proxy fails closed. CLI behaviour is unchanged.

Update to this version

squirrelscan will auto-update, or run this command to update now:

$

Downloads

macOS

Detected
Intel
squirrel-0.0.181-darwin-x64 · 113.7 MB
Download
SHA-256
Apple Silicon (M-series)
squirrel-0.0.181-darwin-arm64 · 105.1 MB
Download
SHA-256

Linux

x64
squirrel-0.0.181-linux-x64 · 124.0 MB
Download
SHA-256
ARM64
squirrel-0.0.181-linux-arm64 · 124.0 MB
Download
SHA-256
x64 (musl/Alpine)
squirrel-0.0.181-linux-x64-musl · 117.9 MB
Download
SHA-256
ARM64 (musl/Alpine)
squirrel-0.0.181-linux-arm64-musl · 116.8 MB
Download
SHA-256

Windows

x64 (Intel/AMD)
squirrel-0.0.181-windows-x64.exe · 129.8 MB
Download
SHA-256

Audit your site in one command

SEO, performance, security, accessibility and agent experience issues, with exact fixes for your coding agent.

Install
$

No account needed for the CLI. Cloud audits include free monthly credits.