- Raw request/response content is **never** logged — only the masked version, and only when `log_masked_content` is enabled
- With `secrets_detection.action: route_local`, content is not logged at all when secrets are detected, since secrets stay unmasked for the local provider
- Only secret types are logged if `log_detected_types: true`
-- Masked content shows placeholders like `[[EMAIL_ADDRESS_1]]` and `[API_KEY_SK_1]`, not real values
+- Masked content shows placeholders like `[[EMAIL_ADDRESS_1]]` and `[[API_KEY_SK_1]]`, not real values
describe("shouldLogMaskedContent", () => {
// With action "mask", maskedContent has both PII and secrets replaced by
- // placeholders, e.g. "My key is [API_KEY_SK_1] and email [[EMAIL_ADDRESS_1]]".
+ // placeholders, e.g. "My key is [[API_KEY_SK_1]] and email [[EMAIL_ADDRESS_1]]".
// Storing it is safe even when secrets were detected (issue #91).
- const maskedWithSecret = "My key is [API_KEY_SK_1] and email [[EMAIL_ADDRESS_1]]";
+ const maskedWithSecret = "My key is [[API_KEY_SK_1]] and email [[EMAIL_ADDRESS_1]]";
const maskedPiiOnly = "Email [[EMAIL_ADDRESS_1]]";
test("logs masked content when secrets were detected and masked", () => {
* Decide whether masked content should be persisted to the request log.
*
* When secrets_detection.action is "mask" (the default), maskedContent has both
- * PII and secrets replaced by placeholders (e.g. "[API_KEY_SK_1]",
+ * PII and secrets replaced by placeholders (e.g. "[[API_KEY_SK_1]]",
* "[[EMAIL_ADDRESS_1]]") by the time it reaches the logger, so it is safe to
* store even when secrets were detected — gating follows log_masked_content.
*