Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.
Coding-agent traces carry live credentials: a key pasted into a prompt, an .env file a tool read, a connection string in a stack trace. Redaction runs in the ingestion pipeline, before storage, and replaces each credential it recognizes with a [SECRET] marker. The text around the marker stays intact, and detection uses three layers, from exact vendor rules to context.It is on by default. A data privacy rule can turn redaction off for its scope.
Known vendors. Keys with a recognized prefix: AWS, GitHub, OpenAI, Anthropic, Slack, Google, Stripe, plus JWTs, private key blocks, database connection-string passwords and bearer tokens.
Shape. A vendor-style prefix followed by a high-entropy body is redacted even when the vendor has no built-in rule, so a key from a provider with no rule of its own is still caught.
Context. A credential named in prose and then given a value, for example “the admin password is …”, is redacted from the naming alone. Values under obviously sensitive attribute names such as authorization are covered the same way.
Layers 2 and 3 only fire when the value’s entropy and character mix look like a real credential, because over-redaction is treated as a bug of the same severity as a leak: ordinary identifiers, commit hashes and UUIDs stay readable, and a placeholder such as YOUR_API_KEY is left alone.One credential produces one marker. LangWatch scans large payloads in slices within the ingestion budget, and still catches a credential that straddles a slice boundary.
The replacement is typed: [SECRET], not a generic blank. In the trace view you see that a credential was scrubbed at this spot, and the secrets evaluator can still count leaks even though the value itself is gone.
Add company-specific token shapes, for example acme_live_..., as regular expressions on a data privacy rule under Settings → Data privacy. LangWatch rejects a pattern that risks catastrophic backtracking when you save the rule. Patterns add up across scopes: a team’s patterns apply on top of the organization’s.
A data privacy rule can disable secrets redaction for its scope.
With secrets redaction off, any credential pasted into a prompt or returned by a tool is stored in
the clear. Turn it off only when you are certain no real credentials transit the projects in
scope.
langwatch report, the command that sends an issue report to LangWatch, runs the same redaction rules on the title, summary and transcript on your machine, before anything is uploaded. Run it with --dry-run to read exactly what would leave.Also check:Privacy for who can read what, and Data privacy policy for PII redaction and the drop controls.
Last modified on October 12, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"LangWatch","description":"LangWatch is an open-source LLMOps platform for observability, evaluations, prompt optimization, and agent testing.","colors":{"primary":"#e17100","light":"#fe9a00","dark":"#e17100"},"logo":{"light":"https://mintcdn.com/langwatch/RHmZel47SBF9eSZV/logo/dark.svg?fit=max\u0026auto=format\u0026n=RHmZel47SBF9eSZV\u0026q=85\u0026s=27fe16868ec581a9af33ced4398a0671","dark":"https://mintcdn.com/langwatch/RHmZel47SBF9eSZV/logo/light.svg?fit=max\u0026auto=format\u0026n=RHmZel47SBF9eSZV\u0026q=85\u0026s=08e9fbfe7cc5eff149cf77ee0809fe4f"},"favicon":"https://mintcdn.com/langwatch/AB8PLEfk80GQISzj/favicon.svg?fit=max\u0026auto=format\u0026n=AB8PLEfk80GQISzj\u0026q=85\u0026s=2f4e9559be1b98d8ad4afe23097bfbc3","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["python","typescript","curl"]}},"appearance":{"default":"system","strict":false},"navbar":{"links":[{"href":"https://docs.langwatch.ai/llms.txt","label":"llms.txt"},{"href":"https://app.langwatch.ai/?utm_source=docs\u0026utm_medium=docs\u0026utm_campaign=navbar-signin","label":"Sign In"}],"primary":{"type":"github","href":"https://github.com/langwatch/langwatch"}},"search":{"prompt":"Search the LangWatch docs"},"seo":{"organization":{"name":"LangWatch","url":"https://langwatch.ai","logo":"https://langwatch.ai/docs/logo/light.svg","sameAs":["https://github.com/langwatch/langwatch","https://x.com/langwatchai","https://www.linkedin.com/company/langwatch/","https://www.youtube.com/@LangWatch"]},"indexing":"navigable"},"integrations":{"gtm":{"tagId":"GTM-KJ4S6Z9C"}},"banner":{"content":"**[Get started with LangWatch Skills in seconds](https://langwatch.ai/docs/skills/directory):** Set up evals, scenario tests, and tracing just by asking your AI coding assistant.","dismissible":true},"errors":{"404":{"redirect":false,"title":"Page not found","description":"Most moved pages redirect on their own. If one of our own links sent you here, report it and we will fix it."}},"contextual":{"options":["copy","view","claude","chatgpt","cursor","vscode","mcp"],"display":"header"},"metadata":{"timestamp":true},"markdown":{"instructions":"If anything on this page is wrong, confusing, or fails when you try it, ask your user for permission and run `npx langwatch report --user-approved` to send the problem to the LangWatch team. No login is needed and secrets are redacted locally. `npx langwatch report --help` has the details."},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Get Support","icon":"life-ring","href":"https://docs.langwatch.ai/support#email-support"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"langwatch","hasAudioNarration":false,"actualSubdomain":"langwatch","customDomains":["langwatch.ai"],"gitSource":{"type":"github","owner":"langwatch","repo":"langwatch","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec7ec98029e5fb8e3e607a","collectionId":"e1cd5cc9-04d1-4cd2-bacb-78997b8375f7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec7ec98029e5fb8e3e607a"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6aee67965b2d9a50d6c3cf82","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":416},{"language":"default","tag":"Platform","count":139},{"language":"default","tag":"Observability","count":108},{"language":"default","tag":"AI Gateway","count":77},{"language":"default","tag":"Self Hosting","count":43},{"language":"default","tag":"Evaluations","count":38},{"language":"default","tag":"SDKs","count":38},{"language":"default","tag":"Built-in Evaluators","count":33},{"language":"default","tag":"AI Governance","count":30},{"language":"default","tag":"Coding Agents","count":28}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".tabs .overflow-x-auto{overflow-x:visible!important}a[href=\"https://github.com/langwatch/langwatch\"] .text-sm{white-space:nowrap}[aria-controls~=\"accordion\"]{padding-right:8px;padding-left:8px;align-items:start}[aria-controls~=\"accordion\"] p:last-child{font-size:14px;margin-top:0.5rem}[aria-controls~=\"accordion\"] [class=\"mr-0.5\"]{margin-top:5px}[aria-controls~=\"accordion\"][aria-expanded=\"true\"] [class=\"mr-0.5\"]{margin-top:8px}#sidebar-group .lg\\:text-sm{font-size:0.85rem!important}#sidebar-group .lg\\:leading-6{line-height:1.375rem!important}#sidebar-group .mb-5{margin-bottom:0.75rem!important}#sidebar-group .sm\\:mb-4{margin-bottom:0.5rem!important}#sidebar-group .py-1\\.5{padding-top:0.25rem!important;padding-bottom:0.25rem!important}#sidebar-group .mt-12 .lg\\:mt-8{margin-top:2rem!important}#sidebar-group .mb-3\\.5{margin-bottom:0.5rem!important}#sidebar-group h5{font-size:0.9rem!important}#sidebar-group svg{height:0.8rem!important;width:0.8rem!important}#sidebar-group svg[viewBox=\"0 -9 3 24\"]{stroke-width:1px!important;height:28px!important;width:12px!important;opacity:0.8!important}#sidebar-group .group{position:relative!important;padding-right:20px!important}#sidebar-group .group svg[viewBox=\"0 -9 3 24\"]{position:absolute!important;right:8px!important;top:50%!important;transform:translateY(-50%)!important}#sidebar-group .duration-75{transform:none!important}#sidebar-group .group svg[viewBox=\"0 -9 3 24\"].duration-75{transform:translateY(-50%)!important}#sidebar-group .group svg[viewBox=\"0 -9 3 24\"].duration-75.rotate-90{transform:translateY(-50%) rotate(90deg)!important}.line-highlight{background:rgb(85 215 153 / 0.2)!important}.line-highlight:before{background:rgb(85 215 153 / 0.2)!important;border-left:4px solid rgb(85 215 153)!important}.line-highlight:after{background:rgb(85 215 153 / 0.2)!important}code{max-width:100%;overflow-x:auto}.lw-copy-prompt{border:1px solid #e5e7eb;border-radius:12px;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;transition:all 0.15s;margin-bottom:8px}.lw-copy-prompt:hover{background:#f9fafb}.lw-copy-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;border:1px solid #e5e7eb;background:transparent;cursor:pointer;font-size:13px;font-weight:500;transition:all 0.15s;white-space:nowrap;color:inherit}.lw-copy-btn .lw-check-icon{display:none}.lw-copy-btn .lw-copy-icon{display:flex;align-items:center;gap:6px}.lw-copy-btn[data-copied] .lw-copy-icon{display:none}.lw-copy-btn[data-copied] .lw-check-icon{display:flex;align-items:center;gap:6px}.lw-copy-btn[data-copied]{background:#ecfdf5;color:#059669;border-color:#059669}.lw-copy-prompt[data-copied] .lw-copy-line-icon{display:none!important}.lw-copy-prompt[data-copied] .lw-copy-line-check{display:flex!important}.dark .lw-copy-prompt{border-color:#374151}.dark .lw-copy-prompt:hover{background:transparent;border-color:#6b7280}.dark .lw-copy-prompt:hover span{color:#f9fafb}.dark .lw-copy-btn{border-color:#374151}.dark .lw-copy-prompt:hover .lw-copy-btn{border-color:#6b7280;color:#f9fafb}.dark .lw-copy-btn[data-copied]{background:rgba(5, 150, 105, 0.15);border-color:rgba(5, 150, 105, 0.4);color:#059669}.lw-skill-install{border:1px solid #e5e7eb;border-radius:12px;padding:20px 24px;margin-bottom:16px}.lw-skill-install.lw-skill-highlighted{border-color:rgba(225, 113, 0, 0.4);background:rgba(225, 113, 0, 0.06)}.dark .lw-skill-install{border-color:#374151}.dark .lw-skill-install.lw-skill-highlighted{border-color:rgba(225, 113, 0, 0.4)}.lw-inline-copy-btn{display:inline-flex;align-items:center;padding:2px;border:none;background:transparent;color:#9ca3af;cursor:pointer;transition:color 0.15s;vertical-align:middle}.lw-inline-copy-btn:hover{color:#6b7280}.dark .lw-inline-copy-btn:hover{color:#d1d5db}.lw-info-box{display:flex;gap:12px;padding:16px;border:1px solid #e5e7eb;border-radius:12px;background:#f9fafb;margin-bottom:16px;margin-top:32px}.lw-info-box-icon{flex-shrink:0;color:#6b7280;margin-top:6px}.lw-info-box-content{flex:1;min-width:0;font-size:14px}.lw-info-box-content p{margin:0 0 8px}.lw-info-box-content p:last-child{margin-bottom:0}.lw-info-box-content pre{margin:8px 0 0!important}.lw-info-box-content [data-component-part=\"code-block-root\"]{padding-top:6px!important}.lw-info-box-content .code-block{margin-bottom:0!important}.dark .lw-info-box{border-color:#374151;background:rgba(255, 255, 255, 0.03)}.dark .lw-info-box-icon{color:#9ca3af}.lw-accordion{border:1px solid #e5e7eb;border-radius:12px;margin-bottom:8px;overflow:hidden}.lw-accordion-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;cursor:pointer;transition:background 0.15s;list-style:none}.lw-accordion-header:hover{background:#f9fafb}.lw-accordion-title{font-size:14px}.lw-accordion-chevron{flex-shrink:0;transition:transform 0.2s;color:#9ca3af}.lw-accordion[data-open] .lw-accordion-chevron{transform:rotate(180deg)}.lw-accordion-body{display:none;padding:0 16px 16px;border-top:1px solid #e5e7eb}.lw-accordion[data-open] .lw-accordion-body{display:block}.lw-accordion-static .lw-accordion-header{cursor:default}.lw-accordion-static .lw-accordion-header:hover{background:transparent}.lw-prompt-source{display:none}.lw-accordion-commands{display:flex;gap:16px;margin-top:12px}.lw-accordion-cmd-col{flex:1;min-width:0}.lw-accordion-cmd-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:#6b7280;margin-bottom:6px}.lw-accordion-cmd-box{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb;cursor:pointer;transition:border-color 0.15s}.lw-accordion-cmd-box:hover{border-color:#d1d5db}.lw-accordion-cmd-box code{font-size:13px;font-family:var(--font-mono, monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;background:transparent!important;padding:0!important;border:none!important}.lw-slash-command{color:#e17100;font-weight:600}.lw-accordion-cmd-box[data-copied]{border-color:#059669;background:#ecfdf5}.lw-accordion-cmd-box[data-copied] .lw-copy-line-icon{display:none!important}.lw-accordion-cmd-box[data-copied] .lw-copy-line-check{display:inline-flex!important}.lw-accordion-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.lw-accordion-action{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border:1px solid #e5e7eb;border-radius:8px;background:transparent;cursor:pointer;text-decoration:none;color:inherit;transition:all 0.15s;text-align:left}.lw-accordion-action:hover{background:#f9fafb;border-color:#d1d5db}.lw-accordion-action-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;flex-shrink:0}.lw-accordion-action-text{display:flex;flex-direction:column;line-height:1.2}.lw-accordion-action-title{font-size:13px;font-weight:500}.lw-accordion-action-subtitle{font-size:11px;font-weight:400;color:#9ca3af}.lw-accordion-action[data-copied]{background:#ecfdf5;border-color:#059669}.lw-accordion-action[data-copied] .lw-copy-line-icon{display:none!important}.lw-accordion-action[data-copied] .lw-copy-line-check{display:flex!important}.dark .lw-accordion{border-color:#374151}.dark .lw-accordion-header:hover{background:rgba(255, 255, 255, 0.03)}.dark .lw-accordion-static .lw-accordion-header:hover{background:transparent}.dark .lw-accordion-body{border-top-color:#374151}.dark .lw-accordion-cmd-box{background:rgba(255, 255, 255, 0.05);border-color:#374151}.dark .lw-accordion-cmd-box:hover{border-color:#6b7280}.dark .lw-accordion-cmd-box[data-copied]{background:rgba(5, 150, 105, 0.15);border-color:rgba(5, 150, 105, 0.4)}.dark .lw-accordion-action{border-color:#374151}.dark .lw-accordion-action-icon{border-color:#374151}.dark .lw-accordion-action:hover{background:rgba(255, 255, 255, 0.03);border-color:#6b7280}.dark .lw-accordion-action[data-copied]{background:rgba(5, 150, 105, 0.15);border-color:rgba(5, 150, 105, 0.4)}.dark .lw-accordion-chevron{color:#6b7280}.dark .lw-slash-command{color:#fe9a00}#sidebar-group .group>img{align-self:center}#footer{flex-wrap:wrap;row-gap:0}.lw-agent-report{flex:0 0 100%;font-size:14px;color:#9ca3af;padding-bottom:12px}.lw-agent-report a{color:inherit;text-decoration:underline;text-underline-offset:2px}.lw-agent-report a:hover{color:#6b7280}.lw-agent-report code{font-size:13px;white-space:nowrap;background:rgba(0, 0, 0, 0.04);border:1px solid #e5e7eb;border-radius:4px;padding:1px 5px}.dark .lw-agent-report{color:#6b7280}.dark .lw-agent-report a:hover{color:#9ca3af}.dark .lw-agent-report code{background:rgba(255, 255, 255, 0.05);border-color:#374151}"}],"page":{"pagePath":"coding-agents/secrets-redaction","slug":"/coding-agents/secrets-redaction","pageMetadata":{"title":"Secrets Redaction in Coding Agent Traces","sidebarTitle":"Secrets Redaction","description":"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.","keywords":["secrets redaction","api key redaction","credential scrubbing","claude code secrets","redact secrets from llm traces"],"href":"/coding-agents/secrets-redaction"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Coding-agent traces carry live credentials: a key pasted into a prompt, an `,_jsx(_components.code,{children:`.env`}),` file a tool read, a connection string in a stack trace. Redaction runs in the ingestion pipeline, before storage, and replaces each credential it recognizes with a `,_jsx(_components.code,{children:`[SECRET]`}),` marker. The text around the marker stays intact, and detection uses three layers, from exact vendor rules to context.`]}),`\n`,_jsxs(_components.p,{children:[`It is on by default. A `,_jsx(_components.a,{href:`/platform/data-privacy#secrets-redaction`,children:`data privacy rule`}),` can turn redaction off for its scope.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-detection-works`,children:`How detection works`}),`\n`,_jsx(_components.p,{children:`Three layers, from exact to contextual:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Known vendors.`}),` Keys with a recognized prefix: AWS, GitHub, OpenAI, Anthropic, Slack, Google, Stripe, plus JWTs, private key blocks, database connection-string passwords and bearer tokens.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Shape.`}),` A vendor-style prefix followed by a high-entropy body is redacted even when the vendor has no built-in rule, so a key from a provider with no rule of its own is still caught.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Context.`}),` A credential named in prose and then given a value, for example “the admin password is …”, is redacted from the naming alone. Values under obviously sensitive attribute names such as `,_jsx(_components.code,{children:`authorization`}),` are covered the same way.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Layers 2 and 3 only fire when the value’s entropy and character mix look like a real credential, because over-redaction is treated as a bug of the same severity as a leak: ordinary identifiers, commit hashes and UUIDs stay readable, and a placeholder such as `,_jsx(_components.code,{children:`YOUR_API_KEY`}),` is left alone.`]}),`\n`,_jsx(_components.p,{children:`One credential produces one marker. LangWatch scans large payloads in slices within the ingestion budget, and still catches a credential that straddles a slice boundary.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-marker`,children:`The marker`}),`\n`,_jsxs(_components.p,{children:[`The replacement is typed: `,_jsx(_components.code,{children:`[SECRET]`}),`, not a generic blank. In the trace view you see that a credential was scrubbed at this spot, and the secrets evaluator can still count leaks even though the value itself is gone.`]}),`\n`,_jsx(Heading,{level:`2`,id:`custom-patterns`,children:`Custom patterns`}),`\n`,_jsxs(_components.p,{children:[`Add company-specific token shapes, for example `,_jsx(_components.code,{children:`acme_live_...`}),`, as regular expressions on a data privacy rule under `,_jsx(_components.strong,{children:`Settings → Data privacy`}),`. LangWatch rejects a pattern that risks catastrophic backtracking when you save the rule. Patterns add up across scopes: a team’s patterns apply on top of the organization’s.`]}),`\n`,_jsx(Heading,{level:`2`,id:`turning-it-off`,children:`Turning it off`}),`\n`,_jsx(_components.p,{children:`A data privacy rule can disable secrets redaction for its scope.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`With secrets redaction off, any credential pasted into a prompt or returned by a tool is stored in\nthe clear. Turn it off only when you are certain no real credentials transit the projects in\nscope.`})}),`\n`,_jsx(Heading,{level:`2`,id:`the-cli-scrubs-locally-too`,children:`The CLI scrubs locally too`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`langwatch report`}),`, the command that sends an issue report to LangWatch, runs the same redaction rules on the title, summary and transcript `,_jsx(_components.strong,{children:`on your machine`}),`, before anything is uploaded. Run it with `,_jsx(_components.code,{children:`--dry-run`}),` to read exactly what would leave.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Also check:`}),` `,_jsx(_components.a,{href:`/coding-agents/privacy`,children:`Privacy`}),` for who can read what, and `,_jsx(_components.a,{href:`/platform/data-privacy`,children:`Data privacy policy`}),` for PII redaction and the drop controls.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Secrets Redaction in Coding Agent Traces","sidebarTitle":"Secrets Redaction","description":"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.","keywords":["secrets redaction","api key redaction","credential scrubbing","claude code secrets","redact secrets from llm traces"],"href":"/coding-agents/secrets-redaction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How detection works","slug":"how-detection-works","depth":2,"children":[]},{"title":"The marker","slug":"the-marker","depth":2,"children":[]},{"title":"Custom patterns","slug":"custom-patterns","depth":2,"children":[]},{"title":"Turning it off","slug":"turning-it-off","depth":2,"children":[]},{"title":"The CLI scrubs locally too","slug":"the-cli-scrubs-locally-too","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/langwatch/1c7dbbb4aa0b0c87/expand-menus.js","/docs/_mintlify/custom/langwatch/fdd2d1ee81d630a0/posthog.js"],"subdomain":"langwatch","siteName":"LangWatch","title":"Secrets Redaction in Coding Agent Traces - LangWatch","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-12T08:13:59.710Z","gitLastModified":"2026-10-12T08:12:32.000Z","originalFileLocation":"coding-agents/secrets-redaction.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.\">\u003cmeta data-mint-head name=\"application-name\" content=\"LangWatch\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Secrets Redaction in Coding Agent Traces - LangWatch\">\u003cmeta data-mint-head property=\"og:description\" content=\"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LangWatch\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://langwatch.ai/docs/coding-agents/secrets-redaction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://langwatch.mintlify.site/docs/_mintlify/api/og/v2?division=Privacy+%26+Security\u0026amp;title=Secrets+Redaction+in+Coding+Agent+Traces\u0026amp;description=Credentials+that+appear+in+prompts+or+tool+output+are+replaced+with+a+typed+marker+at+ingestion%2C+before+storage.+On+by+default+for+every+project.\u0026amp;theme=c82022416a7a1873b973b6a4\u0026amp;signature=6897fcf6af16f9707858592f893b63a5b6468487c97f31b420dfb5b946a8ec0f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Secrets Redaction in Coding Agent Traces - LangWatch\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://langwatch.mintlify.site/docs/_mintlify/api/og/v2?division=Privacy+%26+Security\u0026amp;title=Secrets+Redaction+in+Coding+Agent+Traces\u0026amp;description=Credentials+that+appear+in+prompts+or+tool+output+are+replaced+with+a+typed+marker+at+ingestion%2C+before+storage.+On+by+default+for+every+project.\u0026amp;theme=c82022416a7a1873b973b6a4\u0026amp;signature=6897fcf6af16f9707858592f893b63a5b6468487c97f31b420dfb5b946a8ec0f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/langwatch/kXoUUhFGtPYqSZK4/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"LangWatch\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#e17100\">\u003clink data-mint-head rel=\"canonical\" href=\"https://langwatch.ai/docs/coding-agents/secrets-redaction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/coding-agents/secrets-redaction.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://langwatch.ai/#organization\",\"name\":\"LangWatch\",\"url\":\"https://langwatch.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://langwatch.ai/docs/logo/light.svg\"},\"sameAs\":[\"https://github.com/langwatch/langwatch\",\"https://x.com/langwatchai\",\"https://www.linkedin.com/company/langwatch/\",\"https://www.youtube.com/@LangWatch\"]},{\"@type\":\"WebSite\",\"@id\":\"https://langwatch.ai/docs#website\",\"name\":\"LangWatch\",\"url\":\"https://langwatch.ai/docs\",\"publisher\":{\"@id\":\"https://langwatch.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction#webpage\",\"url\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction\",\"name\":\"Secrets Redaction in Coding Agent Traces\",\"description\":\"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.\",\"dateModified\":\"2026-10-12T08:12:32.000Z\",\"isPartOf\":{\"@id\":\"https://langwatch.ai/docs#website\"},\"breadcrumb\":{\"@id\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Privacy \u0026 Security\",\"item\":\"https://langwatch.ai/docs/coding-agents/privacy\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Secrets Redaction in Coding Agent Traces\",\"item\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction#article\",\"headline\":\"Secrets Redaction in Coding Agent Traces\",\"name\":\"Secrets Redaction in Coding Agent Traces\",\"description\":\"Credentials that appear in prompts or tool output are replaced with a typed marker at ingestion, before storage. On by default for every project.\",\"url\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction\",\"mainEntityOfPage\":{\"@id\":\"https://langwatch.ai/docs/coding-agents/secrets-redaction#webpage\"},\"dateModified\":\"2026-10-12T08:12:32.000Z\",\"keywords\":\"secrets redaction, api key redaction, credential scrubbing, claude code secrets, redact secrets from llm traces\",\"publisher\":{\"@id\":\"https://langwatch.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://langwatch.ai/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"LangWatch\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"LangWatch","nav":{"global":{"anchors":[{"anchor":"Get Support","icon":"life-ring","href":"https://docs.langwatch.ai/support#email-support"}]},"anchors":[{"anchor":"Platform","icon":"book-open","pages":[{"title":"Platform","href":"/introduction"}]},{"anchor":"Observability","icon":"plug","pages":[{"title":"Observability","href":"/integration/overview"}]},{"anchor":"AI Gateway","icon":"route","pages":[{"title":"AI Gateway","href":"/ai-gateway/overview"}]},{"anchor":"AI Governance","icon":"shield-check","pages":[{"title":"AI Governance","href":"/ai-governance/overview"}]},{"anchor":"Coding Agents","icon":"square-terminal","groups":[{"group":"Get Started","pages":[{"title":"Coding Agent Monitoring and Cost Tracking","sidebarTitle":"Overview","href":"/coding-agents/overview"},{"title":"Coding Agent Quickstart","sidebarTitle":"Quickstart","href":"/coding-agents/quickstart"},{"title":"Track Your Claude Code Usage","sidebarTitle":"Track your Claude Code usage","href":"/coding-agents/claude-code-usage"}]},{"group":"Set Up Your Agent","pages":[{"group":"Claude Code","icon":"/images/logos/claude-code.svg","pages":[{"title":"Claude Code Monitoring with OpenTelemetry","sidebarTitle":"Claude Code","href":"/coding-agents/claude-code"}]},{"group":"Codex","icon":"/images/logos/codex.svg","pages":[{"title":"OpenAI Codex CLI Monitoring with OpenTelemetry","sidebarTitle":"OpenAI Codex","href":"/coding-agents/openai-codex"}]},{"group":"GitHub Copilot","icon":"/images/logos/github-copilot.svg","pages":[{"title":"GitHub Copilot CLI Monitoring and Usage Tracking","sidebarTitle":"GitHub Copilot","href":"/coding-agents/github-copilot-cli"}]},{"group":"Gemini CLI","icon":"/images/logos/gemini.svg","pages":[{"title":"Gemini CLI Monitoring with OpenTelemetry","sidebarTitle":"Gemini CLI","href":"/coding-agents/gemini-cli"}]},{"group":"OpenCode","icon":"/images/logos/opencode.svg","pages":[{"title":"OpenCode Monitoring with OpenTelemetry","sidebarTitle":"OpenCode","href":"/coding-agents/opencode"}]},{"group":"Grok CLI","icon":"/images/logos/grok.svg","pages":[{"title":"Grok CLI Monitoring with OpenTelemetry","sidebarTitle":"Grok CLI","href":"/coding-agents/grok-cli"}]},{"group":"pi","icon":"terminal","pages":[{"title":"pi Monitoring with OpenTelemetry","sidebarTitle":"pi","href":"/coding-agents/pi"}]}]},{"group":"See Your Usage","pages":[{"title":"Coding Agent Sessions and Terminal Replay","sidebarTitle":"Sessions","href":"/coding-agents/sessions"},{"title":"Pull Request Cost for Coding Agents","sidebarTitle":"Pull Requests","href":"/coding-agents/pull-requests"},{"title":"Coding Agent Usage Analytics and Cost","sidebarTitle":"Usage","href":"/coding-agents/usage-analytics"},{"title":"Repository and Pull Request Attribution","sidebarTitle":"Repo \u0026 PR Attribution","href":"/coding-agents/repository-and-pr-attribution"}]},{"group":"Teams \u0026 Fleets","pages":[{"title":"Team Projects for Coding Agents","sidebarTitle":"Team Projects","href":"/coding-agents/team-projects"},{"title":"Headless Machines and CI","sidebarTitle":"Headless \u0026 CI","href":"/coding-agents/headless-and-ci"}]},{"group":"Privacy \u0026 Security","pages":[{"title":"Coding Agent Privacy","sidebarTitle":"Privacy","description":"Where your coding-agent data lands, who can read it, and the controls that limit or remove content.","href":"/coding-agents/privacy"},{"title":"Secrets Redaction in Coding Agent Traces","sidebarTitle":"Secrets Redaction","href":"/coding-agents/secrets-redaction"}]},{"group":"Investigate With Your Agent","pages":[{"title":"Explore your usage with your own agent","sidebarTitle":"Explore usage with your agent","description":"Point Claude Code or any coding agent at your own LangWatch usage. One device login, one pasted prompt, and the agent answers where your tokens went.","href":"/coding-agents/explore-your-usage-with-your-own-agent"},{"title":"Reduce Coding Agent Cost","sidebarTitle":"Reduce Cost","href":"/coding-agents/reduce-coding-agent-cost"},{"title":"Find Your Context Sweet Spot","sidebarTitle":"Context Sweet Spot","href":"/coding-agents/find-your-context-sweet-spot"},{"title":"Compare Provider Costs","sidebarTitle":"Compare Provider Costs","href":"/coding-agents/compare-provider-costs"},{"title":"Run Your Own Cost Experiments","sidebarTitle":"Cost Experiments","href":"/coding-agents/cost-experiments"},{"title":"Test How Your Codebase Steers an Agent","sidebarTitle":"Codebase A/B Experiment","href":"/coding-agents/codebase-experiment"}]}]},{"anchor":"Langy","icon":"robot","pages":[{"title":"Langy","href":"/langy/overview"}]},{"anchor":"Self Hosting","icon":"server","pages":[{"title":"Self Hosting","href":"/self-hosting/overview"}]},{"anchor":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Secrets Redaction in Coding Agent Traces - LangWatch","buildId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","deploymentId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","dynamics":["10e4515597"],"chunks":["BannerMarkdown-B5WzX-8C.js","dist-BPypQKlo.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-6wHzaN2_.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}