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 // OSS Default using github graphql api for issues, pr's and comments
feature.UseGithubGraphQLAPI.Store(false) feature.UseGithubGraphQLAPI.Store(false)
// New detector flags
feature.PineconeDetectorEnabled.Store(true)
feature.CloudinaryDetectorEnabled.Store(true)
feature.GitLabOAuthDetectorEnabled.Store(true)
conf := &config.Config{} conf := &config.Config{}
if *configFilename != "" { if *configFilename != "" {
var err error var err error
+23 -5
View File
@@ -1,6 +1,8 @@
package defaults package defaults
import ( import (
"slices"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/abuseipdb" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/abuseipdb"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/abyssale" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/abyssale"
@@ -56,6 +58,9 @@ import (
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atera" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atera"
atlassianv1 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassian/v1" atlassianv1 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassian/v1"
atlassianv2 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/atlassian/v2" 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/audd"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/auth0managementapitoken" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/auth0managementapitoken"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/auth0oauth" "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/billomat"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bingsubscriptionkey" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bingsubscriptionkey"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitbar" "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/bitbucketapppassword"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitcoinaverage" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitcoinaverage"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/bitfinex" "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/commercejs"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/commodities" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/commodities"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/companyhub" "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/confluent"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/contentfulpersonalaccesstoken" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/contentfulpersonalaccesstoken"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/conversiontools" "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/ipquality"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/ipstack" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/ipstack"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jdbc" "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" jiratokenv1 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jiratoken/v1"
jiratokenv2 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jiratoken/v2" jiratokenv2 "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jiratoken/v2"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/jotform" "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/zohocrm"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/zonkafeedback" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/zonkafeedback"
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors/zulipchat" "github.com/trufflesecurity/trufflehog/v3/pkg/detectors/zulipchat"
"github.com/trufflesecurity/trufflehog/v3/pkg/feature"
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/detector_typepb" "github.com/trufflesecurity/trufflehog/v3/pkg/pb/detector_typepb"
) )
func buildDetectorList() []detectors.Detector { func buildDetectorList() []detectors.Detector {
return []detectors.Detector{ dets := []detectors.Detector{
&abyssale.Scanner{}, &abyssale.Scanner{},
// &abstract.Scanner{}, // &abstract.Scanner{},
&abuseipdb.Scanner{}, &abuseipdb.Scanner{},
@@ -1216,10 +1219,10 @@ func buildDetectorList() []detectors.Detector {
&githubapp.Scanner{}, &githubapp.Scanner{},
&githubv1.Scanner{}, &githubv1.Scanner{},
&githubv2.Scanner{}, &githubv2.Scanner{},
&gitlaboauth2.Scanner{},
&gitlabv1.Scanner{}, &gitlabv1.Scanner{},
&gitlabv2.Scanner{}, &gitlabv2.Scanner{},
&gitlabv3.Scanner{}, &gitlabv3.Scanner{},
&gitlaboauth2.Scanner{},
&gitter.Scanner{}, &gitter.Scanner{},
&glassnode.Scanner{}, &glassnode.Scanner{},
&gocanvas.Scanner{}, &gocanvas.Scanner{},
@@ -1766,6 +1769,21 @@ func buildDetectorList() []detectors.Detector {
&zonkafeedback.Scanner{}, &zonkafeedback.Scanner{},
&zulipchat.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 { func DefaultDetectors() []detectors.Detector {
+3
View File
@@ -117,10 +117,13 @@ var excludedFromDefaultList = map[detector_typepb.DetectorType]struct{}{
// to buildDetectorList() — discovered by TestAllDetectorTypesAreInDefaultList. // to buildDetectorList() — discovered by TestAllDetectorTypesAreInDefaultList.
// They are not added immediately out of caution for the impact on customers/users. // They are not added immediately out of caution for the impact on customers/users.
// Remove each entry once its detector has been carefully added. // Remove each entry once its detector has been carefully added.
detector_typepb.DetectorType_Cloudinary: {},
detector_typepb.DetectorType_DatadogApikey: {}, detector_typepb.DetectorType_DatadogApikey: {},
detector_typepb.DetectorType_GitLabOauth2: {},
detector_typepb.DetectorType_Guru: {}, detector_typepb.DetectorType_Guru: {},
detector_typepb.DetectorType_IPInfo: {}, detector_typepb.DetectorType_IPInfo: {},
detector_typepb.DetectorType_Lob: {}, detector_typepb.DetectorType_Lob: {},
detector_typepb.DetectorType_Pinecone: {},
detector_typepb.DetectorType_Rev: {}, detector_typepb.DetectorType_Rev: {},
detector_typepb.DetectorType_TLy: {}, detector_typepb.DetectorType_TLy: {},
detector_typepb.DetectorType_Tru: {}, detector_typepb.DetectorType_Tru: {},
+3
View File
@@ -16,6 +16,9 @@ var (
GitlabProjectsPerPage atomic.Int64 GitlabProjectsPerPage atomic.Int64
UseGithubGraphQLAPI atomic.Bool // use github graphql api to fetch issues, pr's and comments UseGithubGraphQLAPI atomic.Bool // use github graphql api to fetch issues, pr's and comments
HTMLDecoderEnabled atomic.Bool HTMLDecoderEnabled atomic.Bool
PineconeDetectorEnabled atomic.Bool
CloudinaryDetectorEnabled atomic.Bool
GitLabOAuthDetectorEnabled atomic.Bool
) )
type AtomicString struct { type AtomicString struct {