5 min read

gau: Pull Every Archived URL for a Domain (GitHub, Scanned)

Lists every URL the Wayback Machine, Common Crawl, OTX and URLScan have seen for a domain.

gau logo
✅
Scan: safe. Nothing malicious, and it only talks to four public archives. One thing to know: its dependencies date from 2021 to 2023, so the scan lists 28 known advisories, though none affects how gau uses those libraries. Scanned Oct 28, 2026; the full report is below.

gau, short for getallurls, asks four archives what they know about a domain and prints every URL they return: the Internet Archive's Wayback Machine, Common Crawl, AlienVault's Open Threat Exchange and URLScan. Filters trim the flood by file extension, status code, MIME type and date range, --subs widens it to subdomains, and --fp collapses URLs that differ only in parameter values. It reads domains from stdin and writes URLs to stdout, so it chains with everything else on this list.

Its value is history. A crawler like katana sees what a site links to today; gau shows what used to be there, including old API paths, forgotten admin pages, retired file uploads and query parameters that still work. It never contacts the target, only the archives, which makes it useful for verification and journalism too: checking what a page said before it was edited or removed.

Corben Leo wrote it in 2020, inspired by Tom Hudson's waybackurls, and it is MIT-licensed with about 5,200 stars and 23 contributors. It is small, at about 1,200 lines of Go, and maintained in bursts: the latest release, v2.2.4, dates from October 2024, though fixes for retries and URLScan pagination were merged on 12 October 2026.

  • Repository: github.com/lc/gau
  • Licence: MIT (MIT License)
  • Language: Go. Stars: 5,150. Forks: 527. Last push: Oct 12, 2026.
  • Scan: safe, Oct 28, 2026, commit 4eabace

Who it is for

Security teams and bug bounty hunters looking for forgotten endpoints on their own or in-scope domains, OSINT researchers and journalists checking a site's past pages, and SEO or web teams auditing old URLs before a migration.

Getting started

1. Install with Go (or download a release binary, or run the sxcurity/gau Docker image)

go install github.com/lc/gau/v2/cmd/gau@latest

2. List archived URLs for a domain, skipping images and fonts

gau --blacklist png,jpg,gif,svg,woff example.com

3. Include subdomains, keep only pages from 2023 on, and save to a file

gau --subs --from 202301 --o urls.txt example.com

If you use Oh My Zsh, its git plugin already defines gau as an alias for git add --update; run unalias gau or call the binary by its full path. URLScan results are fuller with a free API key in ~/.gau.toml.

Safety scan

We cloned lc/gau at commit 4eabace on Oct 28, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secrets, no pattern hits, no install hooks and no committed binaries in 25 files and about 1,500 lines. The only network hosts in the code are the four providers: web.archive.org, index.commoncrawl.org, otx.alienvault.com and urlscan.io.
  • go.mod targets Go 1.20 and pins 26 packages with 28 advisories: 3 high, 4 moderate, the rest unrated. The highs are a logrus denial of service in Entry.Writer, which gau does not call; a fasthttp path traversal in its file server, while gau uses fasthttp only as a client; and klauspost/compress's S2 format. Most of the rest are in golang.org/x/net 0.17.0. Low practical risk, but a sign the project is lightly maintained.
  • Two workflows, one building release binaries and one pushing the Docker image, neither using pull_request_target; the 5 third-party action uses are pinned to tags, not commits. Scorecard finds signed release artifacts, which is unusual for a tool this size.
  • No security policy, Dependabot, CodeQL or contributing guide; the OpenSSF Scorecard is 4.4. Issues are answered slowly, with 23 open.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious codeNone found.
Install-time codeNone: nothing runs at install beyond the package manager itself.
Committed binariesNone.
CI workflows2 workflows. None use pull_request_target. 5 of 5 third-party actions pinned to a tag rather than a commit.
Network hosts4 distinct hosts referenced from source; most often index.commoncrawl.org, otx.alienvault.com, urlscan.io, web.archive.org. No URLs to bare IP addresses.
Known vulnerabilities28 advisories across 26 pinned packages: 0 critical, 3 high, 4 moderate, 0 low, 21 unrated. go.mod: 26 packages, 28 advisories.
Project hygieneHas licence file. Missing security policy, automated dependency updates, CodeQL, contributing guide.
OpenSSF Scorecard4.4 out of 10, as of Oct 26, 2026.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Worst known vulnerabilities (24 of 28)
AdvisorySeverityPackageSummary
GHSA-4f99-4q7p-p3ghhighgithub.com/sirupsen/logrus@1.8.1Logrus is vulnerable to DoS when using Entry.Writer()
GHSA-fx95-883v-4q4hhighgithub.com/valyala/fasthttp@1.31.0Path traversal in github.com/valyala/fasthttp
GHSA-259r-337f-4rfwhighgithub.com/klauspost/compress@1.13.4Compress/s2: Integer Overflow or Wraparound and Out-of-bounds Write in compress
GHSA-4v7x-pqxf-cx7mmoderategolang.org/x/net@0.17.0net/http, x/net/http2: close connections when receiving too many headers
GHSA-5cv4-jp36-h3mwmoderategolang.org/x/net@0.17.0Go Net HTML parser is vulnerable to denial of service
GHSA-qxp5-gwg8-xv66moderategolang.org/x/net@0.17.0HTTP Proxy bypass using IPv6 Zone IDs in golang.org/x/net
GHSA-vvgc-356p-c3xwmoderategolang.org/x/net@0.17.0golang.org/x/net vulnerable to Cross-site Scripting
GO-2026-4950unknowngithub.com/valyala/fasthttp@1.31.0Authorization bypass via double-encoded paths in github.com/valyala/fasthttp
GHSA-w32m-9786-jp63unknowngolang.org/x/net@0.17.0Non-linear parsing of case-insensitive content in golang.org/x/net/html
GHSA-w4gw-w5jq-g9jhunknowngolang.org/x/net@0.17.0Quadratic parsing complexity in golang.org/x/net/html
CVE-2025-58190unknowngolang.org/x/net@0.17.0Infinite parsing loop in golang.org/x/net
CVE-2026-33814unknowngolang.org/x/net@0.17.0Infinite loop in HTTP/2 transport when given bad SETTINGS_MAX_FRAME_SIZE in net/http/internal/http2 in golang.org/x/net
CVE-2026-42506unknowngolang.org/x/net@0.17.0Invoking incorrect handling of namespaced elements in foreign content in golang.org/x/net/html
CVE-2026-39821unknowngolang.org/x/net@0.17.0Invoking failure to reject ASCII-only Punycode-encoded labels in golang.org/x/net/idna
CVE-2026-42502unknowngolang.org/x/net@0.17.0Invoking incorrect handling of HTML elements in foreign content in golang.org/x/net/html
CVE-2026-25681unknowngolang.org/x/net@0.17.0Invoking incorrect handling of character references in DOCTYPE nodes in golang.org/x/net/html
CVE-2026-27136unknowngolang.org/x/net@0.17.0Invoking duplicate attributes can cause XSS in golang.org/x/net/html
CVE-2026-46600unknowngolang.org/x/net@0.17.0Parsing an invalid SVCB or HTTPS RR can panic in golang.org/x/net/dns/dnsmessage
CVE-2026-78659unknowngolang.org/x/net@0.17.0HTTP/2 server memory exhaustion due to Trailer headers in net/http
CVE-2026-78660unknowngolang.org/x/net@0.17.0HTTP/2 transport accepts malformed framing-related headers in net/http
CVE-2026-78669unknowngolang.org/x/net@0.17.0Excessive CPU consumption from repeated initial window changes in net/http
CVE-2026-78663unknowngolang.org/x/net@0.17.0Double flow control refund on HTTP/2 server streams in net/http
CVE-2026-97032unknowngolang.org/x/net@0.17.0HTTP/2 server crash due to HPACK encoder race in net/http
CVE-2026-78661unknowngolang.org/x/net@0.17.0Avoid quadratic complexity when coalescing text nodes in html in golang.org/x/net

By the numbers

Stars5,150
Forks527
Contributors23
Commits180
Open issues23
Open pull requests6
Releases22
Latest releasev2.2.4
LicenceMIT
Main languageGo
Project age6 years
Last pushOct 12, 2026
Tracked files25
Lines of code1,462
Checkout size48 KB

Lines by language: Go 1,219, Markdown 114, YAML 109, TOML 20.

Questions

Is gau free?

Yes. gau is MIT-licensed and free for any use. The archives it reads are free too, though URLScan limits keyless requests, and the README asks heavy users to consider donating to the Internet Archive and Common Crawl.

gau only reads public archives and never touches the domain itself, so listing archived URLs is generally lawful. Requesting those URLs from the live site, or testing the parameters you find, is a different matter: do that only on your own sites or with the owner's permission.

How is gau different from waybackurls?

waybackurls, by Tom Hudson, asks only the Wayback Machine. gau adds Common Crawl, AlienVault OTX and URLScan, plus filters for status codes, MIME types, dates and parameters, and a config file for defaults.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.