diff --git a/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java b/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java index a57e5d37882..40d5753c478 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java @@ -142,6 +142,7 @@ public final class ConfigDefaults { static final boolean DEFAULT_APP_LOGS_COLLECTION_ENABLED = false; static final String DEFAULT_APPSEC_ENABLED = "inactive"; + static final String DEFAULT_APPSEC_AGENTIC_ONBOARDING = ""; static final int DEFAULT_APPSEC_TRACE_RATE_LIMIT = 100; static final boolean DEFAULT_APPSEC_WAF_METRICS = true; static final int DEFAULT_APPSEC_WAF_TIMEOUT = 100000; // 0.1 s diff --git a/dd-trace-api/src/main/java/datadog/trace/api/config/AppSecConfig.java b/dd-trace-api/src/main/java/datadog/trace/api/config/AppSecConfig.java index 5c45f8901eb..67a2705e984 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/config/AppSecConfig.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/config/AppSecConfig.java @@ -4,6 +4,7 @@ public final class AppSecConfig { public static final String APPSEC_ENABLED = "appsec.enabled"; + public static final String APPSEC_AGENTIC_ONBOARDING = "appsec.agentic_onboarding"; public static final String APPSEC_RULES_FILE = "appsec.rules"; public static final String APPSEC_IP_ADDR_HEADER = "appsec.ipheader"; public static final String APPSEC_TRACE_RATE_LIMIT = "appsec.trace.rate.limit"; diff --git a/internal-api/src/main/java/datadog/trace/api/Config.java b/internal-api/src/main/java/datadog/trace/api/Config.java index 2016b2f5243..7d6df22df1c 100644 --- a/internal-api/src/main/java/datadog/trace/api/Config.java +++ b/internal-api/src/main/java/datadog/trace/api/Config.java @@ -11,6 +11,7 @@ import static datadog.trace.api.ConfigDefaults.DEFAULT_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT; import static datadog.trace.api.ConfigDefaults.DEFAULT_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS; import static datadog.trace.api.ConfigDefaults.DEFAULT_API_SECURITY_SAMPLE_DELAY; +import static datadog.trace.api.ConfigDefaults.DEFAULT_APPSEC_AGENTIC_ONBOARDING; import static datadog.trace.api.ConfigDefaults.DEFAULT_APPSEC_BODY_PARSING_SIZE_LIMIT; import static datadog.trace.api.ConfigDefaults.DEFAULT_APPSEC_MAX_FILE_CONTENT_BYTES; import static datadog.trace.api.ConfigDefaults.DEFAULT_APPSEC_MAX_FILE_CONTENT_COUNT; @@ -222,6 +223,7 @@ import static datadog.trace.api.config.AppSecConfig.API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT; import static datadog.trace.api.config.AppSecConfig.API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS; import static datadog.trace.api.config.AppSecConfig.API_SECURITY_SAMPLE_DELAY; +import static datadog.trace.api.config.AppSecConfig.APPSEC_AGENTIC_ONBOARDING; import static datadog.trace.api.config.AppSecConfig.APPSEC_AUTOMATED_USER_EVENTS_TRACKING; import static datadog.trace.api.config.AppSecConfig.APPSEC_AUTO_USER_INSTRUMENTATION_MODE; import static datadog.trace.api.config.AppSecConfig.APPSEC_BODY_PARSING_SIZE_LIMIT; @@ -1088,6 +1090,7 @@ public static String getHostName() { private final int appSecTraceRateLimit; private final boolean appSecWafMetrics; private final int appSecWafTimeout; + private final String appSecAgenticOnboarding; private final String appSecObfuscationParameterKeyRegexp; private final String appSecObfuscationParameterValueRegexp; private final String appSecHttpBlockedTemplateHtml; @@ -2508,6 +2511,10 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment()) appSecWafTimeout = configProvider.getInteger(APPSEC_WAF_TIMEOUT, DEFAULT_APPSEC_WAF_TIMEOUT); + // RFC-1113: reported verbatim in configuration telemetry; always emitted (empty when unset). + appSecAgenticOnboarding = + configProvider.getString(APPSEC_AGENTIC_ONBOARDING, DEFAULT_APPSEC_AGENTIC_ONBOARDING); + appSecObfuscationParameterKeyRegexp = configProvider.getString(APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP, null); appSecObfuscationParameterValueRegexp = @@ -6659,7 +6666,9 @@ public String toString() { + appSecHttpBlockedTemplateHtml + ", appSecWafTimeout=" + appSecWafTimeout - + " us, appSecHttpBlockedTemplateJson=" + + " us, appSecAgenticOnboarding=" + + appSecAgenticOnboarding + + ", appSecHttpBlockedTemplateJson=" + appSecHttpBlockedTemplateJson + ", apiSecurityEnabled=" + apiSecurityEnabled diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index fb257673d3a..d6b02fbfa28 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -241,6 +241,14 @@ "aliases": [] } ], + "DD_APPSEC_AGENTIC_ONBOARDING": [ + { + "version": "A", + "type": "string", + "default": "", + "aliases": [] + } + ], "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING": [ { "version": "C",