{"record":{"id":"4b28b731106ddb46","repo":"spring-projects/spring-ai","slug":"you-have-enabled-logging-out-the-prompt-content-wi","errorCode":null,"errorMessage":"You have enabled logging out the prompt content with the risk of exposing sensitive or private information. Please, be careful!","messagePattern":"You have enabled logging out the prompt content with the risk of exposing sensitive or private information\\. Please, be careful!","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"auto-configurations/models/chat/observation/spring-ai-autoconfigure-model-chat-observation/src/main/java/org/springframework/ai/model/chat/observation/autoconfigure/ChatObservationAutoConfiguration.java","lineNumber":66,"sourceCode":"/**\n * Auto-configuration for Spring AI chat model observations.\n *\n * @author Thomas Vitale\n * @author Jonatan Ivanov\n * @since 1.0.0\n */\n// afterName: CompositeMeterRegistryAutoConfiguration declares a MeterRegistry bean that\n// some beans here are conditional on\n@AutoConfiguration(\n\t\tafterName = \"org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration\")\n@ConditionalOnClass(ChatModel.class)\n@EnableConfigurationProperties(ChatObservationProperties.class)\npublic class ChatObservationAutoConfiguration {\n\n\tprivate static final Log logger = LogFactory.getLog(ChatObservationAutoConfiguration.class);\n\n\tprivate static void logPromptContentWarning() {\n\t\tlogger.warn(\n\t\t\t\t\"You have enabled logging out the prompt content with the risk of exposing sensitive or private information. Please, be careful!\");\n\t}\n\n\tprivate static void logCompletionWarning() {\n\t\tlogger.warn(\n\t\t\t\t\"You have enabled logging out the completion content with the risk of exposing sensitive or private information. Please, be careful!\");\n\t}\n\n\t@Bean\n\t@ConditionalOnMissingBean\n\t@ConditionalOnBean(MeterRegistry.class)\n\tChatModelMeterObservationHandler chatModelMeterObservationHandler(ObjectProvider<MeterRegistry> meterRegistry) {\n\t\treturn new ChatModelMeterObservationHandler(meterRegistry.getObject());\n\t}\n\n\t@Configuration(proxyBeanMethods = false)\n\t@ConditionalOnClass(Tracer.class)\n\t@ConditionalOnBean(Tracer.class)","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/spring-projects/spring-ai/blob/98a7beda4f29d80a71c5837eb4053b03a93a46f7/auto-configurations/models/chat/observation/spring-ai-autoconfigure-model-chat-observation/src/main/java/org/springframework/ai/model/chat/observation/autoconfigure/ChatObservationAutoConfiguration.java#L48-L84","documentation":"ChatObservationAutoConfiguration.logPromptContentWarning emits this warning when chat model observation logging of prompt content is enabled. Prompt text may contain sensitive user data, so the library warns whenever the property opts you into logging it in observations.","triggerScenarios":"Setting spring.ai.chat.observation.log-prompt-content=true (via ChatObservationProperties) so the conditional logPromptContentWarning bean method runs during auto-configuration.","commonSituations":"Turning on observation content logging for tracing in dev and promoting the config to production; compliance requirements (GDPR/PII) violated by prompt traces in log backends; copying sample tracing configs.","solutions":["Set spring.ai.chat.observation.log-prompt-content=false in production.","Scope the property to dev/test profiles only.","If tracing needs content, use a telemetry backend with redaction and restricted access."],"exampleFix":"// before (application.yml)\nspring.ai.chat.observation.log-prompt-content: true\n// after\nspring.ai.chat.observation.log-prompt-content: false","handlingStrategy":"validation","validationCode":"boolean loggingPrompts = env.getProperty(\n    \"spring.ai.chat.observation.log-prompt-content\", Boolean.class, false);\nif (loggingPrompts && isProduction) {\n    throw new IllegalStateException(\"Prompt content observation logging must be off in production\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Default log-prompt-content to false in shared config.","Gate content logging behind dev/test profiles.","Use a redacting telemetry processor if content tracing is mandatory."],"tags":["logging","security","privacy","observation","chat-model"],"backgroundTag":"sensitive-data-logging","analyzedSha":"98a7beda4f29d80a71c5837eb4053b03a93a46f7","analyzedAt":"2026-09-11T14:15:49.441Z","contentChangedAt":"2026-09-11T14:15:49.441Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}