Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
237 commits
Select commit Hold shift + click to select a range
cf31c26
Log non-critical chunk errors at V(2).Info instead of Error (#4928)
johnelliott Apr 29, 2026
8a12e8e
[INS-320] Cloudinary detector (#4747)
MuneebUllahKhan222 Apr 30, 2026
a4e3016
ci: bump JS actions to Node 24 majors (checkout v6, setup-go v6, code…
bryanbeverly May 1, 2026
5f47aad
chore: bump golangci-lint-action v7 → v9 (Node 24) (#4936)
bryanbeverly May 1, 2026
90ca685
Add default Content-Type: application/json header for custom detector…
MuneebUllahKhan222 May 5, 2026
ab5dd03
Make detector Result.SecretParts initialization stricter (#4948)
mcastorina May 5, 2026
ba0a524
Add Pinecone API key detector (#4917)
dylanTruffle May 7, 2026
37b7700
adding customizable successRanges and rotatedRanges to customDetector…
jordanTunstill May 11, 2026
e10ecbe
[INS-461] Add test to ensure new detectors are registered in defaults…
mustansir14 May 12, 2026
07a8605
[INS-455] Unify common logic in Atlassian Data Center detectors (#4907)
mustansir14 May 12, 2026
0c381f1
fix(github): cache repo info under original URL on redirect (#4958)
kashifkhan0771 May 12, 2026
ef9a56c
Added GitLab OAuth Detector (#4729)
shahzadhaider1 May 13, 2026
ada12e0
Box Detector: Extract Subject ID for Analyzer Integration (#4761)
shahzadhaider1 May 13, 2026
2edd4d3
[INS-346] SpectralOps Personal API Key Detector (#4770)
MuneebUllahKhan222 May 13, 2026
6c542a5
[INS-335] Added AWS Appsync Detector (#4803)
MuneebUllahKhan222 May 14, 2026
cd6b46a
fix(twilio): deduplicate matches to prevent O(N×M) result explosion (…
kashifkhan0771 May 15, 2026
3a022f9
Automate corpora testing in CI (#4927)
mustansir14 May 15, 2026
0fa069c
Enable errcheck and staticcheck for golangci-lint v2 and resolve all …
amanfcp May 15, 2026
d86254e
feat: add host, db and username to ExtraData for database detectors (…
mariocj89 May 18, 2026
79acbf4
Remove over speculation from Corpora CI workflow (#4974)
mustansir14 May 19, 2026
0ec3634
Fix line numbers for duplicate secrets within a chunk (#4910)
amanfcp May 22, 2026
ec67ff2
Add feature flags for Pinecone, Cloudinary, and GitLab OAuth detector…
camgunz May 26, 2026
52ebebb
Update Go security dependencies (#4986)
cursor[bot] May 27, 2026
36f6f69
Pin GitHub Actions to SHA digests (#4985)
bryanbeverly May 27, 2026
9f0b97f
Update CODEOWNERS: replace 5 slugs with scanning + integrations (#4983)
bryanbeverly May 29, 2026
6c8f640
Added source config flags to sharepoint proto (#4972)
MuneebUllahKhan222 Jun 1, 2026
26eae1f
[SCAN-795] HTML decoder: ASPX and entity-encoded HTML support (#4981)
mustansir14 Jun 1, 2026
d411fff
feat(apk): adds some debugging info for APKs and fixes issues parsing…
johannestaas-trufflesec Jun 1, 2026
5a0f877
Enigma detector enhance verification to prevent false verified findin…
shahzadhaider1 Jun 3, 2026
90a3efa
fix: scan files with lines exceeding bufio's default 64 KB token limi…
MuneebUllahKhan222 Jun 5, 2026
75add79
fix(postgres): honor ignore tags for default port URLs (#4968)
Edneam Jun 5, 2026
48f31cb
Move to github.com/moby/moby/client from docker/docker (#4987)
trufflesteeeve Jun 5, 2026
f405cc3
fix: avoid terminal probes before CLI output (#4994)
Hackerchen716 Jun 5, 2026
b328415
Update test containers dependency (#4978)
trufflesteeeve Jun 5, 2026
6cefc1e
Re-host pkg/handlers JSON fixtures under the org (#5023)
amanfcp Jun 8, 2026
ba02c92
[INS-465] Add datadogapikey detector to defaults.go (#4969)
mustansir14 Jun 9, 2026
c5ebff4
[INS-470] Add Tly detector to defaults.go, gate it behind feat flag a…
MuneebUllahKhan222 Jun 9, 2026
133cb39
[INS-473] Add wit detector to defaults.go, gate it behind feat flag a…
MuneebUllahKhan222 Jun 9, 2026
cc90719
Updating Klaviyo PK new format (#5009)
breetan Jun 9, 2026
28f515f
Restructure Klaviyo detector pattern tests (#5026)
martinlocklear Jun 9, 2026
5a1d434
Replace Renovate config with shared preset (high-risk tier) (#4992)
bryanbeverly Jun 9, 2026
b64cefe
set redacted value to last 4 characters of secret, to match how the s…
jordanTunstill Jun 10, 2026
d03d087
GitHub finegrain analyzer was improperly handling errors (#4498)
dustin-decker Jun 11, 2026
ac0805e
[INS-469] Added Rev detectors to defaults.go and gated it behind feat…
MuneebUllahKhan222 Jun 11, 2026
84a2b33
Fix Renovate lookup: update setup-captain version comment (#4999)
bryanbeverly Jun 12, 2026
7bcf376
[INS-472] [INS-515] Add user detector to defaults.go, gate it behind …
MuneebUllahKhan222 Jun 15, 2026
afbdaa8
Fix: Resolve known dedup issues in notifierWorker (#5028)
MuneebUllahKhan222 Jun 15, 2026
248ffd5
fix(dropbox): prevent long sl.u. tokens from being truncated before v…
lukem-ts Jun 16, 2026
36d680a
add filetype=sdist param so we get the correct response code (#4988)
lukem-ts Jun 16, 2026
f0739f1
close todo - embed small HTTP test fixtures (#5001)
amanfcp Jun 17, 2026
30d5bb9
S3: surface bucket listing failures and fix multi-role object count (…
shahzadhaider1 Jun 18, 2026
48cb542
fix(sources/filesystem): order resume comparison by path component (#…
genisis0x Jun 18, 2026
57caa0a
test(handlers): point APK test fixture at trufflehog-test-assets (#5053)
amanfcp Jun 18, 2026
9b6b532
fixed regex typo that was causing conf uuid's to be surfaced as non-l…
jordanTunstill Jun 18, 2026
092db2a
Fix GitHub App cross-org member enumeration using per-installation to…
dustin-decker Jun 22, 2026
6f52203
fix: add git worktree support in PrepareRepo (#4690)
andoniaf Jun 23, 2026
3d196c8
[INS-406] Braintrust detector (#4826)
MuneebUllahKhan222 Jun 24, 2026
4945fa3
huggingface: add bucket scanning (#5017)
julien-c Jun 24, 2026
2e4db5f
Skip reverification results during deduplication (#5069)
mcastorina Jun 24, 2026
8b85dcd
Bump shared renovate-config to v1.0.3 (#5044)
bryanbeverly Jun 24, 2026
39a1435
Add scan_all_installations option for multi-org GitHub App scanning (…
dustin-decker Jun 25, 2026
c1a1d6a
Expose `SecretParts` in the JSON output (#5073)
bradlarsen Jun 25, 2026
c09d726
[INS-497] Add Pganalyze Read Key Detector (#4993)
MuneebUllahKhan222 Jun 29, 2026
885fa2d
[INS-197] Add redhatpyxis api key detector (#4995)
MuneebUllahKhan222 Jun 29, 2026
f446421
[INS-407] Fixed AWS detector producing non deterministic output (#4836)
MuneebUllahKhan222 Jun 29, 2026
6261f5c
removed "unauthorized" as exception for rotated graphana secrets (#5068)
jordanTunstill Jun 29, 2026
f38f8f7
fix(azuresastoken): match SAS tokens regardless of parameter order (#…
genisis0x Jul 1, 2026
459d5a7
Add prometheus metrics for engine channels and workers (#5095)
mcastorina Jul 1, 2026
7f04a89
[INS-465] Skip unverified JWT Detector results when feature flag is e…
MuneebUllahKhan222 Jul 2, 2026
797f02b
[INS-334] Octopus Deploy detector (#4787)
MuneebUllahKhan222 Jul 2, 2026
4d3a66f
fixed syntax error (#5109)
MuneebUllahKhan222 Jul 2, 2026
00155c9
Include encoded resume info instead of clobbering it (#5110)
bill-rich Jul 2, 2026
f2cd191
feat: add OpenRouter detector (#4500)
McPatate Jul 3, 2026
9174f5d
Integrations fully codeowns detectors (#5104)
trufflesteeeve Jul 6, 2026
67339b2
[INS-332] Add New Relic Insights Insert key detector (#4778)
mustansir14 Jul 7, 2026
d3b5487
[INS-351] Added Duffel Token Detector (#4795)
MuneebUllahKhan222 Jul 7, 2026
53e6391
[INS-341] Added Shippo detector (#4820)
MuneebUllahKhan222 Jul 7, 2026
5c27626
[INS-467] Add IPinfo detector to default detectors list (#4970)
mustansir14 Jul 7, 2026
1675e17
fix: reject --include-repos/--exclude-repos with --repo in github sca…
kashifkhan0771 Jul 7, 2026
6c97970
[INS-468] Add improved lob detector to defaults.go (#4971)
mustansir14 Jul 7, 2026
f845f18
feat(action): add image input to allow registry mirror overrides (#4965)
eightseventhreethree Jul 8, 2026
d7dcc6d
feat: Support archived repo exclusion from GH org scans (#4875)
hibare Jul 8, 2026
33d9dad
[INT-715] Retry transient failures when verifying OpenAI keys (#5117)
bill-rich Jul 8, 2026
d328285
[INS-410] Added batch token detector (#4824)
MuneebUllahKhan222 Jul 9, 2026
27b0417
Don't log as error when git diff is too long (#5113)
bill-rich Jul 9, 2026
2073418
[INS-355] Added Hashicorp vault token detector (#4819)
MuneebUllahKhan222 Jul 10, 2026
09c9107
fix(jiratoken/v1): only verify when the response body contains the au…
shahzadhaider1 Jul 10, 2026
8feb77b
[INT-718] Add TargetNotFoundError for targeted scan targets missing f…
bill-rich Jul 10, 2026
7c724e5
Fix GitLab project metadata cache and switch to LRU (#4727)
kashifkhan0771 Jul 14, 2026
547fc64
Log analyze errors for Anthropic Analyzer (#5120)
kashifkhan0771 Jul 14, 2026
3cbcd39
Add metrics for chunks and results (#5128)
mcastorina Jul 14, 2026
e1f9e5d
Update Cloudflare detectors for 2026+ prefixed credential formats (in…
kashifkhan0771 Jul 15, 2026
a7bdcf9
[INS-312] Duo API Secret Key Detector (#4771)
MuneebUllahKhan222 Jul 16, 2026
23bc406
[Feature] Added SonarQube Cloud "Scoped Organization Token" Detector …
nabeelalam Jul 17, 2026
8708801
[INS-255] Updated datadog detector to set verificationError in case o…
MuneebUllahKhan222 Jul 17, 2026
1247638
Log analyze errors for Postgres analyzer (#5131)
kashifkhan0771 Jul 20, 2026
4ecd7d5
Log analyze errors for HuggingFace analyzer (#5130)
kashifkhan0771 Jul 20, 2026
ec20cb3
document Config.SourceManager (#5002)
amanfcp Jul 20, 2026
0eb1a81
Update module github.com/go-git/go-git/v5 to v5.19.1 [SECURITY] (#5034)
renovate[bot] Jul 20, 2026
38999f8
Retry git clone on transient network errors (#5132)
shahzadhaider1 Jul 20, 2026
4d82f21
Fix `scan_all_installations` Rejecting Org Member Personal Repos (#5142)
shahzadhaider1 Jul 21, 2026
e74404a
updated detector to include underscore char (#5121)
mattbrady-1 Jul 21, 2026
a2ef4f5
[chore] Change job_id in metric to source_type (#5149)
mcastorina Jul 22, 2026
05a5832
fix(detectors/posthog): widen phx_ key body to {43,48} (#5133)
mattbrady-1 Jul 23, 2026
6f3c981
fix(handlers): apk handler now doesnt check for apk extension since j…
johannestaas-trufflesec Jul 24, 2026
67d0241
fix(detectors/privatekey): report encrypted keys with uncrackable pas…
genisis0x Jul 29, 2026
8191645
Update module go.mongodb.org/mongo-driver to v1.17.7 [SECURITY] (#5058)
renovate[bot] Jul 29, 2026
d870725
Remove url tag from common HTTP client metrics (#5158)
mcastorina Jul 29, 2026
ac39a56
Update github.com/avast/apkparser digest to 7fcaee4 (#5037)
renovate[bot] Jul 29, 2026
f2d9ea7
[INS-318] Add New Relic License Key Detector (#4760)
mustansir14 Jul 30, 2026
5ca8517
[INS-348] Add New Relic Browser Key detector (#4769)
mustansir14 Jul 30, 2026
e6fc348
[INS-339] Add New Relic User Key detector (#4794)
mustansir14 Jul 30, 2026
f9c8139
[INS-345] Add New Relic Insights Query Key detector (#4781)
mustansir14 Jul 30, 2026
a0fc8c8
fix(sources): stop UnitHook Close racing in-flight Finish sends (#5154)
bill-rich Jul 30, 2026
d4d6275
Set CircleCI project count to 3 in tests (#5166)
trufflesteeeve Jul 30, 2026
4cc2098
Update github.com/shurcooL/githubv4 digest to 2402fdf (#5038)
renovate[bot] Jul 31, 2026
076331c
Update github-actions (#5036)
renovate[bot] Jul 31, 2026
f328fd5
Update aws-sdk-go-v2 monorepo (#4890)
renovate[bot] Jul 31, 2026
82df476
[INS-344] Add New Relic Mobile App Token Detector (#4810)
mustansir14 Jul 31, 2026
24c98ca
Give each clone its own directory under `--clone-path` (#5175)
shahzadhaider1 Aug 4, 2026
74bb454
feat(output): add SARIF output format for GitHub code scanning (#5165)
kashifkhan0771 Aug 5, 2026
7d8f10c
[SCAN-1018] Treat SlackWebhook invalid_token (HTTP 400) as determinat…
alafiand Aug 5, 2026
cff30f7
make cwd-changing normalization tests non-parallel to fix flaky clone…
jordanTunstill Aug 5, 2026
70cac36
[INS-456] Add Microsoft Teams Webhook V2 detector (#4902)
mustansir14 Aug 5, 2026
95dd07d
surface git clone errors at v(0) (#5162)
jordanTunstill Aug 5, 2026
d31c04e
Add Figma Personal Access Token v3 Detector (#4790)
shahzadhaider1 Aug 6, 2026
a7082b6
fix(github): fallback resource Name to avoid empty-string proto valid…
kashifkhan0771 Aug 7, 2026
bf17c56
Updated protos to support bitbucket Api token authentication (#5171)
MuneebUllahKhan222 Aug 11, 2026
43b8e37
Update regex pattern and 403 handling in the Lob detector to fix fals…
MachiavelliII Aug 11, 2026
58cb799
Deprecate AppOptics detector (#5198)
Ahsan-Sarbaz Aug 12, 2026
3539500
Anthropic detector: surface API error detail on non-2xx verification …
Ahsan-Sarbaz Aug 12, 2026
8b5a47c
Deprecated bingsubscriptionkey detector (#5179)
Ahsan-Sarbaz Aug 12, 2026
f9daad8
Add SolarWinds Observability detector (#5199)
Ahsan-Sarbaz Aug 12, 2026
96b593f
fix(jiratoken): stop 202 reverification retry loop (#5200)
Ahsan-Sarbaz Aug 12, 2026
55db46b
Add custom endpoint support to the S3 source (#5202)
shahzadhaider1 Aug 13, 2026
37ed218
fix blogger detector to use Google API prefix instead of generic hex …
unsmith Aug 13, 2026
ee476c7
update huggingface to fix unbounded resources bug (#5204)
unsmith Aug 13, 2026
f567838
Add AWS Secrets Manager metadata type (#5210)
rosecodym Aug 13, 2026
bcfcf73
fix(detectors/harness): allow underscore in PAT account segment (#5153)
mattbrady-1 Aug 13, 2026
bc3a3ae
Update module github.com/go-git/go-git/v5 to v5.19.2 [SECURITY] (#5196)
renovate[bot] Aug 17, 2026
bcbcab2
Fix GHEC with Data Residency (`*.ghe.com`) base URL (#4777)
shahzadhaider1 Aug 18, 2026
e12da3c
docs: add generic config-secret custom detector example (#5195)
pgmpofu Aug 18, 2026
925c1d0
fix(detectors/docker): don't greedy match in keyPat (#5214)
mariduv Aug 19, 2026
9d3f5d1
[SCAN-1020] neon scram pgx (#5217)
alafiand Aug 19, 2026
9610306
Doubled timeout, as MongoDB secrets are repeatedly hitting this and f…
jordanTunstill Aug 20, 2026
4ec7749
preallocate bindings capacity in dockerhub and groq, with unit tests …
jordanTunstill Aug 20, 2026
2cdb97d
[SCAN-101] s3 source accept persisted unit envelopes in UnmarshalSour…
amanfcp Aug 20, 2026
3ab759f
Refine SECURITY.md (#5216)
bradlarsen Aug 21, 2026
20652fb
Carry GitHub App installation ID on repo units (#5215)
bill-rich Aug 24, 2026
8ee3864
detectors/github/v2: differentiate token type in ExtraData (#5223)
hartsock Aug 24, 2026
34d1c87
Update dependency trufflesecurity/.github to v1.0.4 (#5228)
renovate[bot] Aug 25, 2026
1bc0db6
ci: let Renovate bump the golangci-lint pin in scripts/lint.sh (#5231)
bryanbeverly Aug 25, 2026
8871bde
Update github.com/trufflesecurity/ldap-verify digest to aa52b46 (#5172)
renovate[bot] Aug 25, 2026
a904c69
Update github-actions (#5197)
renovate[bot] Aug 25, 2026
0c0d704
Update aws-sdk-go-v2 monorepo (#5173)
renovate[bot] Aug 25, 2026
796ebe9
Update module github.com/aws/smithy-go to v1.27.9 (#5174)
renovate[bot] Aug 25, 2026
8c3e7ba
Add SOURCE_TYPE_AWS_SECRETS_MANAGER source type (#5234)
dipto-truffle Aug 25, 2026
d8ee59e
[INS-377] Add V2 for weights and biases detector (#4951)
mustansir14 Aug 26, 2026
1ea7fc1
expand result code in pagerduty detector (#5230)
unsmith Aug 26, 2026
0c952ac
De-base64 SourceUnit.UnitData in the GitHub Source (#5248)
camgunz Aug 27, 2026
2b75fd2
Implement Enumerate for the Jenkins source (#5229)
Ahsan-Sarbaz Aug 31, 2026
74dcf3f
Update link to Truffle Security documentation (#5256)
shahzadhaider1 Aug 31, 2026
cc1fe98
Retry git clone on secondary rate limit (bare 403/429) (#5260)
kashifkhan0771 Sep 1, 2026
ea33cd0
fix(s3): cut a child context per object so key/size log values don't …
mariduv Sep 3, 2026
8947a7f
Revert "De-base64 SourceUnit.UnitData in the GitHub Source (#5248)" (…
trufflesteeeve Sep 3, 2026
8a9a4c6
Made retry exaustion indeterminate for Twilio secrets and twilioapike…
jordanTunstill Sep 3, 2026
f537081
Improve the `json-enumerator` source (#5265)
bradlarsen Sep 3, 2026
363923b
added tests for twilio detector fixes (#5271)
jordanTunstill Sep 3, 2026
9a82dba
Update module github.com/rabbitmq/amqp091-go to v1.13.0 [SECURITY] (#…
renovate[bot] Sep 4, 2026
5701963
Update github-actions (#5250)
renovate[bot] Sep 4, 2026
30a032a
Update dependency golangci/golangci-lint to v2.13.2 (#5251)
renovate[bot] Sep 4, 2026
166bf18
Make GitHub App installationId optional when scanning all installatio…
kashifkhan0771 Sep 7, 2026
080c22f
[INT-942] Add HumioAPIToken detector (#5258)
unsmith Sep 8, 2026
54ff78b
Object filtering in S3 (#5286)
shahzadhaider1 Sep 9, 2026
e58aec6
feat(detectors): add Resend detector (#5103)
mwoss Sep 9, 2026
2bffafb
Clean up use of wasilibs/go-re2 (#5273)
bradlarsen Sep 9, 2026
4b7d1d3
Low-memory Git Scanning (#5257)
mariduv Sep 10, 2026
82fd19c
Adding no-ignore flag to allow reporting of "ignored" secrets (#5297)
jordanTunstill Sep 14, 2026
58bf481
Postgres: drop non-connection URI params before verifying (#5296)
jordanTunstill Sep 14, 2026
ce7b2b8
fix(detectors/ngrok): broaden valid bearer tokens matching (#5152)
mattbrady-1 Sep 14, 2026
5a6944e
ci: avoid Node 20 BuildPulse action (#5266)
dustin-decker Sep 14, 2026
07e3ac7
Introduce a new optional detector interface that will allow us to ver…
kvnphvm Sep 16, 2026
b1d7dae
perf(engine): lowercase prefilter chunks as ASCII in a pooled buffer …
kashifkhan0771 Sep 16, 2026
b8a71ee
Add documentation for CircleCI source (#5268)
kashifkhan0771 Sep 16, 2026
8d77a9d
Add filesystem source documentation (#5285)
kashifkhan0771 Sep 16, 2026
4ecb5c6
Add elasticsearch source documentation (#5284)
kashifkhan0771 Sep 16, 2026
f714bf4
[SCAN-177] Purge secret parts from verification cache (#5318)
casey-tran Sep 16, 2026
288a8a8
Clarify security policy (#5295)
bradlarsen Sep 16, 2026
4c36d40
Add git source documentation (#5326)
kashifkhan0771 Sep 22, 2026
df5b7ce
fix(gitparse): cheaper low-memory git scan, stop losing trailing comm…
kashifkhan0771 Sep 22, 2026
64d939a
analyzer/github: include is_fine_grained metadata and make gist enume…
unsmith Sep 22, 2026
ff8d20c
fix(postgres): recognise a missing database by SQLSTATE (#5312)
gaborbernat Sep 22, 2026
a8d2845
Improve Github App installation access token caching (#5324)
mariduv Sep 22, 2026
dc2edce
give git the real base..head range for diff scans (#5325)
kvnphvm Sep 22, 2026
19a2efa
gcs source documentation (#5319)
kashifkhan0771 Sep 23, 2026
ed32571
[PERF] Remove \b anchor from escaped-unicode codePointPat (#5320)
Ahsan-Sarbaz Sep 23, 2026
f516164
🐛 fix(engine): map decoded results to source lines (#5219)
gaborbernat Sep 23, 2026
013308d
Add Okta OAuth support in Okta detector (#5323)
shreyas-sriram Sep 23, 2026
7ee4d49
Add per detector verification timing to verification cache (#5341)
kvnphvm Sep 23, 2026
a5f3de5
Set all verification errors in detectors (#5253)
shahzadhaider1 Sep 23, 2026
ca9d3b3
[SCAN-162] Add Err() to JobProgress and JobProgressRef (#5346)
dipto-truffle Sep 23, 2026
a25ff85
ci: scope Smoke timeouts to trufflehog runs, not the build (#5317)
bryanbeverly Sep 23, 2026
16b566b
Update module github.com/aymanbagabas/go-osc52 to v1.2.2 (#5252)
renovate[bot] Sep 23, 2026
bbf9447
Update module github.com/gabriel-vasile/mimetype to v1.4.15 (#5283)
renovate[bot] Sep 23, 2026
4b8eb0e
make 401s for Basic auth verified false. (#5290)
jordanTunstill Sep 23, 2026
bad9901
Add version and comment_number lines to SharePoint source metadata (#…
camgunz Sep 24, 2026
449d8a3
Int 595 auth errors (#5259)
shahzadhaider1 Sep 24, 2026
4dd8831
Spruce up Makefile a little (#5347)
camgunz Sep 24, 2026
daea5a6
Int 595 verify asymmetry (#5261)
shahzadhaider1 Sep 24, 2026
4fbb4f5
return error body for fetchBearerToken (#5301)
jordanTunstill Sep 24, 2026
5522983
Update module github.com/charmbracelet/bubbletea to v1.3.10 (#5281)
renovate[bot] Sep 24, 2026
cd94550
Update github.com/trufflesecurity/ldap-verify digest to 3142cc9 (#5280)
renovate[bot] Sep 24, 2026
8852457
Don't reuse maps; editing them afterwards edits them for all results …
camgunz Sep 25, 2026
74d1c44
Only treat Square 403 as verified on INSUFFICIENT_SCOPES (#5367)
MuneebUllahKhan222 Sep 28, 2026
1a3fbcf
feat: add --no-ignore-tag to report secrets on trufflehog:ignore line…
thiswillnevermatch Sep 28, 2026
a3fcdde
Fix failing TestGHCRListImages test in CI (#5368)
MuneebUllahKhan222 Sep 28, 2026
54c65cd
Revert duplicate --no-ignore-tag changes from #5293 (#5369)
shahzadhaider1 Sep 28, 2026
b170a28
Show progress inside S3 buckets (#5330)
shahzadhaider1 Sep 29, 2026
8135b80
fix(output): escape special characters in --github-actions output (#5…
kenanyararbas Sep 29, 2026
48b58d3
fix(portainertoken): remove stray fmt.Printf on invalid URL (#5334)
Gracy769 Sep 29, 2026
5d8d4a3
resolve race condition in result deduplication cache (#5359)
kvnphvm Sep 30, 2026
c73dc64
added entropy filter and improved verification for gitlab v2/v3 (#5358)
jordanTunstill Sep 30, 2026
40b1278
Update Okta domain pat to account for mil and fedramp (#5355)
kvnphvm Sep 30, 2026
19f011a
Corpora bench reports clean when a detector produces zero matches on …
kvnphvm Sep 30, 2026
1012551
Add huggingface source documentation (#5373)
kashifkhan0771 Oct 1, 2026
b197c35
Add Gitlab source documentation (#5371)
kashifkhan0771 Oct 1, 2026
cdce527
Add Github source documentation (#5370)
kashifkhan0771 Oct 1, 2026
d5ef0f3
fix(detectors/auth0oauth): match Auth0 Private Cloud auth0app.com dom…
saghaulor Oct 1, 2026
e283608
List only the include prefixes in S3 scans (#5377)
shahzadhaider1 Oct 1, 2026
59e3b04
fix(github): switch back to fetching access token through apiClient, …
mariduv Oct 2, 2026
2b2c270
Fix NetSuite detector running out of memory on dense input (#5383)
shahzadhaider1 Oct 5, 2026
c56f0b1
Add Jenkins source documentation (#5388)
kashifkhan0771 Oct 5, 2026
bb9ed13
docs: point five internal links at files that exist (#5375)
CalvinTjoaquinn Oct 5, 2026
0186870
Add pkg/ssrf shared egress guard; use it for WithNoLocalIP and analyz…
bill-rich Oct 5, 2026
ab70932
Sync with upstream TruffleHog v3.98.0
infraguard-web Oct 5, 2026
c41bdd3
Merge fork main (scanner release workflow) into the v3.98.0 sync
infraguard-web Oct 8, 2026
aea5f86
Fix lint in the custom header tests after the upstream sync
infraguard-web Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 17 additions & 4 deletions .github/renovate.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
"extends": ["github>trufflesecurity/.github:renovate-config#v1.0.4"],
"customManagers": [
{
"description": "scripts/lint.sh pins the same golangci-lint version as .github/workflows/lint.yml",
"customType": "regex",
"managerFilePatterns": ["scripts/lint.sh"],
"matchStrings": ["GOLANGCI_LINT_VERSION=\"(?<currentValue>v[^\"]+)\""],
"depNameTemplate": "golangci/golangci-lint",
"datasourceTemplate": "github-releases"
}
],
"prConcurrentLimit": 3,
"prHourlyLimit": 2
"packageRules": [
{
"description": "Keep the workflow and script golangci-lint pins in one PR",
"matchDepNames": ["golangci/golangci-lint"],
"groupName": "golangci-lint"
}
]
}
10 changes: 5 additions & 5 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- name: Install Go
uses: actions/setup-go@v5
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
with:
go-version: "1.25"
go-version: "1.27"
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -56,4 +56,4 @@ jobs:
run: |
go build .
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4
266 changes: 266 additions & 0 deletions .github/workflows/detector-corpora-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
name: Corpora Test

on:
workflow_dispatch:
pull_request:
types: [opened]
paths:
- 'pkg/detectors/**'
- 'pkg/engine/defaults/defaults.go'
- '.github/workflows/detector-corpora-test.yml'
- 'scripts/test/detector_corpora_test.sh'
- 'scripts/test/diff_corpora_results.py'
- 'scripts/test/detect_changed_detectors.sh'

env:
DATASETS: |
s3://trufflehog-corpora-datasets/contents.2025-11-04.jsonl.zstd

jobs:
corpora-test:
if: ${{ github.repository == 'trufflesecurity/trufflehog' && !github.event.pull_request.head.repo.fork }}
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
with:
fetch-depth: 0
persist-credentials: false

- name: Install Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
with:
go-version: "1.27"

- name: Install dependencies
run: sudo apt-get install -y zstd jq

- name: Resolve merge-base
id: merge_base
shell: bash
run: |
set -o pipefail
git fetch --no-tags --prune origin main
MERGE_BASE=$(git merge-base origin/main HEAD)
echo "Merge base: $MERGE_BASE"
echo "sha=$MERGE_BASE" >> "$GITHUB_OUTPUT"

# Determine which detectors changed in this PR. The PR build scopes its
# scan to the full set; the main build excludes detectors that don't
# exist there yet (new detectors). If the set is empty, the workflow
# short-circuits with a skip comment — scoping is the entire point of
# Phase 2, falling back to scan-all defeats it.
- name: Detect changed detectors
id: detect
shell: bash
env:
BASE_REF: ${{ steps.merge_base.outputs.sha }}
run: |
set -o pipefail
chmod +x scripts/test/detect_changed_detectors.sh
PR_CSV=$(./scripts/test/detect_changed_detectors.sh --pr-csv || true)
MAIN_CSV=$(./scripts/test/detect_changed_detectors.sh --main-csv || true)
NEW_LIST=$(./scripts/test/detect_changed_detectors.sh --new-only || true)
NEW_CSV=$(echo "$NEW_LIST" | paste -sd, -)
echo "PR detectors: $PR_CSV"
echo "Main detectors: $MAIN_CSV"
echo "New detectors: $NEW_CSV"
echo "pr_csv=$PR_CSV" >> "$GITHUB_OUTPUT"
echo "main_csv=$MAIN_CSV" >> "$GITHUB_OUTPUT"
echo "new_csv=$NEW_CSV" >> "$GITHUB_OUTPUT"
if [[ -n "$PR_CSV" ]]; then
echo "any_changed=true" >> "$GITHUB_OUTPUT"
else
echo "any_changed=false" >> "$GITHUB_OUTPUT"
fi

# Sticky comment: find any prior detector-bench comment on the PR by
# the marker substring and update it in place. The marker — kept in
# sync with STICKY_COMMENT_MARKER in scripts/test/diff_corpora_results.py —
# has to appear in BOTH the skip body and the diff body so the same
# comment flips between them as iterative pushes change which path
# fires. Skip body is only posted on pull_request events; workflow_dispatch
# runs with no changed detectors silently finish without posting.
- name: Find existing skip comment
if: steps.detect.outputs.any_changed != 'true' && github.event_name == 'pull_request'
id: find_skip_comment
uses: peter-evans/find-comment@b30e6a3c0ed37e7c023ccd3f1db5c6c0b0c23aad # v4
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: '<!-- detector-bench -->'

- name: Post or update skip comment
if: steps.detect.outputs.any_changed != 'true' && github.event_name == 'pull_request'
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5
with:
comment-id: ${{ steps.find_skip_comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
edit-mode: replace
body: |
<!-- detector-bench -->
## Corpora Test Results

No detector regex or keyword changes in this PR. Bench skipped.

- name: Configure AWS credentials
if: steps.detect.outputs.any_changed == 'true'
uses: aws-actions/configure-aws-credentials@cbe3b392738ccf3f987d68400dafcf4b0624a56c # v6
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1

# Cache the main scan results by merge-base + scoped detector set.
# On subsequent pushes to the same PR without a rebase, both are
# identical, so the main scan (35 GB of S3 streaming + trufflehog) is
# skipped entirely.
- name: Restore main scan cache
id: main_scan_cache
if: steps.detect.outputs.any_changed == 'true' && steps.detect.outputs.main_csv != ''
uses: actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25 # v5
with:
path: /tmp/results-main.jsonl
key: main-scan-v1-${{ steps.merge_base.outputs.sha }}-${{ steps.detect.outputs.main_csv }}

# Two independent builds run in parallel:
# A) prepare main worktree → build main binary (git I/O then CPU)
# Skipped on main scan cache hit or when main_csv is empty
# (all changed detectors are new — no baseline needed).
# B) build PR binary (CPU, no dependencies)
- name: Build binaries
if: steps.detect.outputs.any_changed == 'true'
shell: bash
env:
MERGE_BASE: ${{ steps.merge_base.outputs.sha }}
MAIN_CSV: ${{ steps.detect.outputs.main_csv }}
MAIN_SCAN_CACHE_HIT: ${{ steps.main_scan_cache.outputs.cache-hit }}
run: |
set -o pipefail

# Chain A: prepare worktree, then build main binary.
# Skipped when main scan results are already cached, or when all
# changed detectors are new (main_csv empty — no baseline needed).
if [[ -n "$MAIN_CSV" && "$MAIN_SCAN_CACHE_HIT" != 'true' ]]; then
(
git worktree add /tmp/trufflehog-main-src "$MERGE_BASE"
cd /tmp/trufflehog-main-src
CGO_ENABLED=0 go build -o /tmp/trufflehog-main .
) &
PID_MAIN_BUILD=$!
fi

# Chain B: build PR binary (no dependencies).
CGO_ENABLED=0 go build -o /tmp/trufflehog-pr . &
PID_PR_BUILD=$!

[[ -n "${PID_MAIN_BUILD:-}" ]] && { wait $PID_MAIN_BUILD || { echo "Main binary build failed" >&2; exit 1; }; }
wait $PID_PR_BUILD || { echo "PR binary build failed" >&2; exit 1; }

# PR and main scans share a single S3 stream per dataset file, teed to
# both binaries simultaneously. The main side is skipped on a cache hit
# (results already in /tmp/results-main.jsonl) or when main_csv is empty
# (PR adds only new detectors — no overlap with main).
- name: Run corpora tests
if: steps.detect.outputs.any_changed == 'true'
shell: bash
env:
PR_CSV: ${{ steps.detect.outputs.pr_csv }}
MAIN_CSV: ${{ steps.detect.outputs.main_csv }}
MAIN_SCAN_CACHE_HIT: ${{ steps.main_scan_cache.outputs.cache-hit }}
run: |
set -o pipefail
files=()
while IFS= read -r dataset; do
[[ -z "$dataset" ]] && continue
files+=("$dataset")
done <<< "$DATASETS"

export TRUFFLEHOG_BIN=/tmp/trufflehog-pr
export OUTPUT_JSONL=/tmp/results-pr.jsonl
export INCLUDE_DETECTORS="$PR_CSV"

if [[ -n "$MAIN_CSV" && "$MAIN_SCAN_CACHE_HIT" != 'true' ]]; then
# Dual-binary: single S3 download teed to both PR and main binaries.
export TRUFFLEHOG_BIN_MAIN=/tmp/trufflehog-main
export OUTPUT_JSONL_MAIN=/tmp/results-main.jsonl
export INCLUDE_DETECTORS_MAIN="$MAIN_CSV"
elif [[ -z "$MAIN_CSV" ]]; then
echo "No overlapping detectors in main; skipping main scan."
: > /tmp/results-main.jsonl
else
echo "Main scan cache hit; skipping main scan."
fi

./scripts/test/detector_corpora_test.sh "${files[@]}" \
|| { echo "Corpora scan failed" >&2; exit 1; }

- name: Save main scan cache
if: steps.detect.outputs.any_changed == 'true' && steps.detect.outputs.main_csv != '' && steps.main_scan_cache.outputs.cache-hit != 'true'
uses: actions/cache/save@caa296126883cff596d87d8935842f9db880ef25 # v5
with:
path: /tmp/results-main.jsonl
key: main-scan-v1-${{ steps.merge_base.outputs.sha }}-${{ steps.detect.outputs.main_csv }}

- name: Diff results
if: steps.detect.outputs.any_changed == 'true'
shell: bash
env:
CHANGED: ${{ steps.detect.outputs.pr_csv }}
NEW_DETECTORS: ${{ steps.detect.outputs.new_csv }}
run: |
set -o pipefail
python3 scripts/test/diff_corpora_results.py \
/tmp/results-main.jsonl /tmp/results-pr.jsonl \
--changed-detectors="$CHANGED" \
--new-detectors="$NEW_DETECTORS" \
> /tmp/diff-report.md
cat /tmp/diff-report.md

# workflow_dispatch runs don't carry an issue context, so resolve the
# PR number by branch lookup. pull_request events fall through to the
# event's issue number. Output feeds the find/update pair below.
- name: Resolve PR number
if: steps.detect.outputs.any_changed == 'true'
id: resolve_pr
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
let issue_number;
if (context.eventName === 'workflow_dispatch') {
const pulls = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
head: `${context.repo.owner}:${context.ref.replace('refs/heads/', '')}`,
state: 'open',
});
if (pulls.data.length === 0) {
core.setFailed(`No open PR found for branch ${context.ref}`);
return;
}
issue_number = pulls.data[0].number;
} else {
issue_number = context.issue.number;
}
core.setOutput('issue_number', issue_number);

- name: Find existing diff comment
if: steps.detect.outputs.any_changed == 'true'
id: find_diff_comment
uses: peter-evans/find-comment@b30e6a3c0ed37e7c023ccd3f1db5c6c0b0c23aad # v4
with:
issue-number: ${{ steps.resolve_pr.outputs.issue_number }}
comment-author: 'github-actions[bot]'
body-includes: '<!-- detector-bench -->'

- name: Post or update diff comment
if: steps.detect.outputs.any_changed == 'true'
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5
with:
comment-id: ${{ steps.find_diff_comment.outputs.comment-id }}
issue-number: ${{ steps.resolve_pr.outputs.issue_number }}
edit-mode: replace
body-path: /tmp/diff-report.md
8 changes: 4 additions & 4 deletions .github/workflows/detector-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ jobs:
contents: "read"
id-token: "write"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
- name: Install gotestsum
uses: jaxxstorm/action-install-gh-release@v1.14.0
uses: jaxxstorm/action-install-gh-release@25e24d2d23ae098373794ef1d6faecb48ee52da8 # v3.0.0
with:
repo: gotestyourself/gotestsum
- uses: rwx-research/setup-captain@v1
- uses: rwx-research/setup-captain@f761ee3671e4c027299f8a5842a53fba8ddd8e37 # v1.4.1
- name: Test Go
run: |
export CGO_ENABLED=1
Expand Down
31 changes: 18 additions & 13 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,24 @@ jobs:
name: golangci-lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
with:
go-version: "1.25"
go-version: "1.27"
- name: golangci-lint
uses: golangci/golangci-lint-action@v7
uses: golangci/golangci-lint-action@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a # v9
with:
# NOTE: Version and args must match scripts/lint.sh
version: v2.11.4
args: --disable errcheck,staticcheck --enable bodyclose,copyloopvar,misspell --timeout 10m
version: v2.13.2
args: --enable bodyclose,copyloopvar,misspell --timeout 10m
man-page-staleness:
name: man-page-staleness
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
with:
go-version: "1.25"
go-version: "1.27"
- name: Regenerate man page
run: make man
- name: Check for staleness
Expand All @@ -48,17 +48,22 @@ jobs:
image: returntocorp/semgrep
if: (github.actor != 'dependabot[bot]')
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- run: semgrep --config=hack/semgrep-rules/detectors.yaml pkg/detectors/
checksecretparts:
# Reports detector packages that construct detectors.Result without
# populating SecretParts. See hack/checksecretparts/README.md.
name: checksecretparts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
with:
go-version: "1.25"
go-version: "1.27"
# hack/checksecretparts only needs the standard library, so this job
# finishes before any other and would otherwise claim the shared
# go.sum-keyed cache with an empty module cache. Cache keys are
# write-once, so that starves every later job on the branch.
cache: false
- name: Run checksecretparts
run: go run ./hack/checksecretparts -fail ./pkg/detectors
Loading
Loading