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@latest2. List archived URLs for a domain, skipping images and fonts
gau --blacklist png,jpg,gif,svg,woff example.com3. Include subdomains, keep only pages from 2023 on, and save to a file
gau --subs --from 202301 --o urls.txt example.comIf 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
| Check | Result |
|---|---|
| Secrets | None found. |
| Suspicious code | None found. |
| Install-time code | None: nothing runs at install beyond the package manager itself. |
| Committed binaries | None. |
| CI workflows | 2 workflows. None use pull_request_target. 5 of 5 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 4 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 vulnerabilities | 28 advisories across 26 pinned packages: 0 critical, 3 high, 4 moderate, 0 low, 21 unrated. go.mod: 26 packages, 28 advisories. |
| Project hygiene | Has licence file. Missing security policy, automated dependency updates, CodeQL, contributing guide. |
| OpenSSF Scorecard | 4.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)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-4f99-4q7p-p3gh | high | github.com/sirupsen/logrus@1.8.1 | Logrus is vulnerable to DoS when using Entry.Writer() |
| GHSA-fx95-883v-4q4h | high | github.com/valyala/fasthttp@1.31.0 | Path traversal in github.com/valyala/fasthttp |
| GHSA-259r-337f-4rfw | high | github.com/klauspost/compress@1.13.4 | Compress/s2: Integer Overflow or Wraparound and Out-of-bounds Write in compress |
| GHSA-4v7x-pqxf-cx7m | moderate | golang.org/x/net@0.17.0 | net/http, x/net/http2: close connections when receiving too many headers |
| GHSA-5cv4-jp36-h3mw | moderate | golang.org/x/net@0.17.0 | Go Net HTML parser is vulnerable to denial of service |
| GHSA-qxp5-gwg8-xv66 | moderate | golang.org/x/net@0.17.0 | HTTP Proxy bypass using IPv6 Zone IDs in golang.org/x/net |
| GHSA-vvgc-356p-c3xw | moderate | golang.org/x/net@0.17.0 | golang.org/x/net vulnerable to Cross-site Scripting |
| GO-2026-4950 | unknown | github.com/valyala/fasthttp@1.31.0 | Authorization bypass via double-encoded paths in github.com/valyala/fasthttp |
| GHSA-w32m-9786-jp63 | unknown | golang.org/x/net@0.17.0 | Non-linear parsing of case-insensitive content in golang.org/x/net/html |
| GHSA-w4gw-w5jq-g9jh | unknown | golang.org/x/net@0.17.0 | Quadratic parsing complexity in golang.org/x/net/html |
| CVE-2025-58190 | unknown | golang.org/x/net@0.17.0 | Infinite parsing loop in golang.org/x/net |
| CVE-2026-33814 | unknown | golang.org/x/net@0.17.0 | Infinite loop in HTTP/2 transport when given bad SETTINGS_MAX_FRAME_SIZE in net/http/internal/http2 in golang.org/x/net |
| CVE-2026-42506 | unknown | golang.org/x/net@0.17.0 | Invoking incorrect handling of namespaced elements in foreign content in golang.org/x/net/html |
| CVE-2026-39821 | unknown | golang.org/x/net@0.17.0 | Invoking failure to reject ASCII-only Punycode-encoded labels in golang.org/x/net/idna |
| CVE-2026-42502 | unknown | golang.org/x/net@0.17.0 | Invoking incorrect handling of HTML elements in foreign content in golang.org/x/net/html |
| CVE-2026-25681 | unknown | golang.org/x/net@0.17.0 | Invoking incorrect handling of character references in DOCTYPE nodes in golang.org/x/net/html |
| CVE-2026-27136 | unknown | golang.org/x/net@0.17.0 | Invoking duplicate attributes can cause XSS in golang.org/x/net/html |
| CVE-2026-46600 | unknown | golang.org/x/net@0.17.0 | Parsing an invalid SVCB or HTTPS RR can panic in golang.org/x/net/dns/dnsmessage |
| CVE-2026-78659 | unknown | golang.org/x/net@0.17.0 | HTTP/2 server memory exhaustion due to Trailer headers in net/http |
| CVE-2026-78660 | unknown | golang.org/x/net@0.17.0 | HTTP/2 transport accepts malformed framing-related headers in net/http |
| CVE-2026-78669 | unknown | golang.org/x/net@0.17.0 | Excessive CPU consumption from repeated initial window changes in net/http |
| CVE-2026-78663 | unknown | golang.org/x/net@0.17.0 | Double flow control refund on HTTP/2 server streams in net/http |
| CVE-2026-97032 | unknown | golang.org/x/net@0.17.0 | HTTP/2 server crash due to HPACK encoder race in net/http |
| CVE-2026-78661 | unknown | golang.org/x/net@0.17.0 | Avoid quadratic complexity when coalescing text nodes in html in golang.org/x/net |
By the numbers
| Stars | 5,150 |
|---|---|
| Forks | 527 |
| Contributors | 23 |
| Commits | 180 |
| Open issues | 23 |
| Open pull requests | 6 |
| Releases | 22 |
| Latest release | v2.2.4 |
| Licence | MIT |
| Main language | Go |
| Project age | 6 years |
| Last push | Oct 12, 2026 |
| Tracked files | 25 |
| Lines of code | 1,462 |
| Checkout size | 48 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.
Is it legal to use gau on a domain I do not own?
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.
