Add feature flags for Pinecone, Cloudinary, and GitLab OAuth detectors (#4961)

* Add feature flags for new detectors

* Slight rename, ensure the flags are false by default

* Missed a name change

* Turn on new detectors for OSS user

* Instead of only adding flagged detectors when their flag is enabled, remove them when their flag is disabled

* Thank you cursorbot

* Excempt the flagged detectors from a test
This commit is contained in:
Charlie Gunyon
2026-05-26 10:25:18 -04:00
committed by GitHub
parent 0ec3634f6c
commit ec67ff26cd
4 changed files with 34 additions and 5 deletions
+5
View File
@@ -525,6 +525,11 @@ func run(state overseer.State, logSync func() error) {
// OSS Default using github graphql api for issues, pr's and comments
feature.UseGithubGraphQLAPI.Store(false)
// New detector flags
feature.PineconeDetectorEnabled.Store(true)
feature.CloudinaryDetectorEnabled.Store(true)
feature.GitLabOAuthDetectorEnabled.Store(true)
conf := &config.Config{}
if *configFilename != "" {
var err error
+23 -5
View File
@@ -1,6 +1,8 @@
package defaults
import (
"slices"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/abuseipdb"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/abyssale"
@@ -56,6 +58,9 @@ import (
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atera"
atlassianv1 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassian/v1"
atlassianv2 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassian/v2"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassiandatacenter/bitbucketdatacenter"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassiandatacenter/confluencedatacenter"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassiandatacenter/jiradatacenterpat"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/audd"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/auth0managementapitoken"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/auth0oauth"
@@ -96,7 +101,6 @@ import (
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/billomat"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bingsubscriptionkey"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitbar"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassiandatacenter/bitbucketdatacenter"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitbucketapppassword"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitcoinaverage"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitfinex"
@@ -188,7 +192,6 @@ import (
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/commercejs"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/commodities"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/companyhub"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassiandatacenter/confluencedatacenter"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/confluent"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/contentfulpersonalaccesstoken"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/conversiontools"
@@ -402,7 +405,6 @@ import (
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/ipquality"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/ipstack"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jdbc"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassiandatacenter/jiradatacenterpat"
jiratokenv1 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jiratoken/v1"
jiratokenv2 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jiratoken/v2"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jotform"
@@ -866,11 +868,12 @@ import (
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/zohocrm"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/zonkafeedback"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/zulipchat"
"github.com/trufflesecurity/trufflehog/v3/pkg/feature"
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/detector_typepb"
)
func buildDetectorList() []detectors.Detector {
return []detectors.Detector{
dets := []detectors.Detector{
&abyssale.Scanner{},
// &abstract.Scanner{},
&abuseipdb.Scanner{},
@@ -1216,10 +1219,10 @@ func buildDetectorList() []detectors.Detector {
&githubapp.Scanner{},
&githubv1.Scanner{},
&githubv2.Scanner{},
&gitlaboauth2.Scanner{},
&gitlabv1.Scanner{},
&gitlabv2.Scanner{},
&gitlabv3.Scanner{},
&gitlaboauth2.Scanner{},
&gitter.Scanner{},
&glassnode.Scanner{},
&gocanvas.Scanner{},
@@ -1766,6 +1769,21 @@ func buildDetectorList() []detectors.Detector {
&zonkafeedback.Scanner{},
&zulipchat.Scanner{},
}
dets = slices.DeleteFunc(dets, func(d detectors.Detector) bool {
switch d.(type) {
case *pinecone.Scanner:
return !feature.PineconeDetectorEnabled.Load()
case *cloudinary.Scanner:
return !feature.CloudinaryDetectorEnabled.Load()
case *gitlaboauth2.Scanner:
return !feature.GitLabOAuthDetectorEnabled.Load()
default:
return false
}
})
return dets
}
func DefaultDetectors() []detectors.Detector {
+3
View File
@@ -117,10 +117,13 @@ var excludedFromDefaultList = map[detector_typepb.DetectorType]struct{}{
// to buildDetectorList() — discovered by TestAllDetectorTypesAreInDefaultList.
// They are not added immediately out of caution for the impact on customers/users.
// Remove each entry once its detector has been carefully added.
detector_typepb.DetectorType_Cloudinary: {},
detector_typepb.DetectorType_DatadogApikey: {},
detector_typepb.DetectorType_GitLabOauth2: {},
detector_typepb.DetectorType_Guru: {},
detector_typepb.DetectorType_IPInfo: {},
detector_typepb.DetectorType_Lob: {},
detector_typepb.DetectorType_Pinecone: {},
detector_typepb.DetectorType_Rev: {},
detector_typepb.DetectorType_TLy: {},
detector_typepb.DetectorType_Tru: {},
+3
View File
@@ -16,6 +16,9 @@ var (
GitlabProjectsPerPage atomic.Int64
UseGithubGraphQLAPI atomic.Bool // use github graphql api to fetch issues, pr's and comments
HTMLDecoderEnabled atomic.Bool
PineconeDetectorEnabled atomic.Bool
CloudinaryDetectorEnabled atomic.Bool
GitLabOAuthDetectorEnabled atomic.Bool
)
type AtomicString struct {