Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
gitleaks_8.28.0_windows_armv6.zip | 2025-07-20 | 7.7 MB | |
gitleaks_8.28.0_windows_armv7.zip | 2025-07-20 | 7.6 MB | |
gitleaks_8.28.0_linux_x32.tar.gz | 2025-07-20 | 7.6 MB | |
gitleaks_8.28.0_checksums.txt | 2025-07-20 | 1.1 kB | |
gitleaks_8.28.0_darwin_arm64.tar.gz | 2025-07-20 | 7.9 MB | |
gitleaks_8.28.0_darwin_x64.tar.gz | 2025-07-20 | 8.3 MB | |
gitleaks_8.28.0_linux_arm64.tar.gz | 2025-07-20 | 7.6 MB | |
gitleaks_8.28.0_linux_armv6.tar.gz | 2025-07-20 | 7.5 MB | |
gitleaks_8.28.0_linux_armv7.tar.gz | 2025-07-20 | 7.5 MB | |
gitleaks_8.28.0_linux_x64.tar.gz | 2025-07-20 | 8.2 MB | |
gitleaks_8.28.0_windows_x32.zip | 2025-07-20 | 7.9 MB | |
gitleaks_8.28.0_windows_x64.zip | 2025-07-20 | 8.4 MB | |
README.md | 2025-07-20 | 7.0 kB | |
v8.28.0 source code.tar.gz | 2025-07-20 | 302.6 kB | |
v8.28.0 source code.zip | 2025-07-20 | 500.7 kB | |
Totals: 15 Items | 87.1 MB | 1 |
Changelog
- 4fb4382 cant count
- b1c9c7e Composite rules (#1905)
- 72977e4 feat: add Anthropic API key detection (#1910)
- 7b02c98 fix(git): handle port (#1912)
- 2a7bcff dont prematurely calculate fragment newlines (#1909)
- bd79c3e feat(allowlist): promote optimizations (#1908)
- 7fb4eda Fix: CVEs on go and go crypto (#1868)
- a044b81 feat: add artifactory reference token and api key detection (#1906)
- bf380d4 silly
- f487f85 Update gitleaks.yml
- 958f55a add just like that, no leaks
Optimizations
[#1909] waits to find newlines until a match. This ends up saving a boat load of time since before we were finding newlines for every fragment regardless if a rule matched or not. [#1908] promoted @rgmz excellent stopword optimization
Composite Rules (Multi-part or required
Rules) [#1905]
In v8.28.0 Gitleaks introduced composite rules, which are made up of a single "primary" rule and one or more auxiliary or required
rules. To create a composite rule, add a [[rules.required]]
table to the primary rule specifying an id
and optionally withinLines
and/or withinColumns
proximity constraints. A fragment is a chunk of content that Gitleaks processes at once (typically a file, part of a file, or git diff), and proximity matching instructs the primary rule to only report a finding if the auxiliary required
rules also find matches within the specified area of the fragment.
Proximity matching: Using the withinLines
and withinColumns
fields instructs the primary rule to only report a finding if the auxiliary required
rules also find matches within the specified proximity. You can set:
withinLines: N
- required findings must be within N lines (vertically)withinColumns: N
- required findings must be within N characters (horizontally)- Both - creates a rectangular search area (both constraints must be satisfied)
- Neither - fragment-level matching (required findings can be anywhere in the same fragment)
Here are diagrams illustrating each proximity behavior:
p = primary captured secret
a = auxiliary (required) captured secret
fragment = section of data gitleaks is looking at
*Fragment-level proximity*
Any required finding in the fragment
┌────────┐
┌──────┤fragment├─────┐
│ └──────┬─┤ │ ┌───────┐
│ │a│◀────┼─│✓ MATCH│
│ ┌─┐└─┘ │ └───────┘
│┌─┐ │p│ │
││a│ ┌─┐└─┘ │ ┌───────┐
│└─┘ │a│◀──────────┼─│✓ MATCH│
└─▲─────┴─┴───────────┘ └───────┘
│ ┌───────┐
└────│✓ MATCH│
└───────┘
*Column bounded proximity*
`withinColumns = 3`
┌────────┐
┌────┬─┤fragment├─┬───┐
│ └──────┬─┤ │ ┌───────────┐
│ │ │a│◀┼───┼─│+1C ✓ MATCH│
│ ┌─┐└─┘ │ └───────────┘
│┌─┐ │ │p│ │ │
┌──▶│a│ ┌─┐ └─┘ │ ┌───────────┐
│ │└─┘ ││a│◀────────┼───┼─│-2C ✓ MATCH│
│ │ ┘ │ └───────────┘
│ └── -3C ───0C─── +3C ─┘
│ ┌─────────┐
│ │ -4C ✗ NO│
└──│ MATCH │
└─────────┘
*Line bounded proximity*
`withinLines = 4`
┌────────┐
┌─────┤fragment├─────┐
+4L─ ─ ┴────────┘─ ─ ─│
│ │
│ ┌─┐ │ ┌────────────┐
│ ┌─┐ │a│◀──┼─│+1L ✓ MATCH │
0L ┌─┐ │p│ └─┘ │ ├────────────┤
│ │a│◀──┴─┴────────┼─│-1L ✓ MATCH │
│ └─┘ │ └────────────┘
│ │ ┌─────────┐
-4L─ ─ ─ ─ ─ ─ ─ ─┌─┐─│ │-5L ✗ NO │
│ │a│◀┼─│ MATCH │
└────────────────┴─┴─┘ └─────────┘
*Line and column bounded proximity*
`withinLines = 4`
`withinColumns = 3`
┌────────┐
┌─────┤fragment├─────┐
+4L ┌└────────┴ ┐ │
│ ┌─┐ │ ┌───────────────┐
│ │ │a│◀┼───┼─│+2L/+1C ✓ MATCH│
│ ┌─┐└─┘ │ └───────────────┘
0L │ │p│ │ │
│ └─┘ │
│ │ │ │ ┌────────────┐
-4L ─ ─ ─ ─ ─ ─┌─┐ │ │-5L/+3C ✗ NO│
│ │a│◀┼─│ MATCH │
└───-3C────0L───+3C┴─┘ └────────────┘