Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.
There is no Gitleaks-backed secrets provider. Earlier revisions of this page
described one, with a curated rule pack and a secrets_detection provider type;
it does not exist in the gateway. Secret detection is done with the regex
provider type, which does work, and this page shows how.
Credentials move through an LLM gateway two ways. A developer pastes a .env
file into a prompt asking why a service will not start, and the key is now in a
third-party provider’s logs. Or a model, having been shown a credential earlier
in a conversation or in retrieved context, repeats it in an answer.A regex guardrail with apply_to: "both" covers both directions with the same
rule.
Patterns are RE2. No backtracking, no lookahead, no backreferences. That is
why a pattern cannot hang the gateway, and it is also why some expressions
written for PCRE will be rejected. A rejected pattern is refused at save time
with the reason and its position in the list.Blocking is the only outcome. There is no redaction: a request containing a
key is refused, not stripped of it. There is also no log-only mode, so a new
pattern cannot be piloted without enforcing it — introduce patterns a few at a
time.False positives block real work.eyJ… matches any base64 JSON object, not
only a JWT, and a long sk- prefixed identifier that is not a key will match
too. Start with the vendor-prefixed patterns, which are specific, and add the
generic ones once you have seen the traffic.Responses are scanned only if you ask.apply_to defaults to input. The
configuration above sets both explicitly.Streaming is scanned as it arrives, not only at the end, so the stream is cut
at the first chunk that completes a match. Chunks already sent cannot be
recalled — see the warning in Guardrails.
The gaps that matter for credentials specifically:
File uploads and batch payloads are not scanned. Uploading a file
containing keys goes through unexamined, and that is the highest-volume way to
move credentials through a gateway.
Guardrails — the policy model, coverage, and what is
not implemented.
Custom Regex — the same provider type
applied to organisation-specific policy.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Vikat","colors":{"primary":"#0C3B43","light":"#07C983"},"logo":{"light":"https://mintcdn.com/vikat-ai/Xw_qzY8whhWmfPh3/media/vikat-logo.png?fit=max\u0026auto=format\u0026n=Xw_qzY8whhWmfPh3\u0026q=85\u0026s=1bce49f93b955ed9b64346a96466adfd","dark":"https://mintcdn.com/vikat-ai/dtGbonSkiZn6zZKE/media/vikat-logo-dark.png?fit=max\u0026auto=format\u0026n=dtGbonSkiZn6zZKE\u0026q=85\u0026s=97f9b62ceea92c66a50178a7a9d91a0e"},"favicon":"https://mintcdn.com/vikat-ai/NdGPuqWLiDOdPaJ6/favicon.ico?fit=max\u0026auto=format\u0026n=NdGPuqWLiDOdPaJ6\u0026q=85\u0026s=e571d9644566f9530b0f3d4fa084753f","navbar":{"links":[{"icon":"github","href":"https://vikat.local","label":"GitHub"}]},"footer":{"socials":{"github":"https://vikat.local"}},"styling":{"latex":true},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vikat-ai","hasAudioNarration":false,"actualSubdomain":"vikat-ai","customDomains":["docs.vikat.ai"],"gitSource":{"type":"github","owner":"vikat-ai","repo":"vikat-gateway","deployBranch":"rebrand/vikat-gateway","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"}},"buildId":"6ab6c9d4dcef7527f446a72e","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API","count":404},{"language":"default","tag":"API Reference","count":404},{"language":"default","tag":"OSS","count":103},{"language":"default","tag":"Governance","count":49},{"language":"default","tag":"OpenAI Integration","count":47},{"language":"default","tag":"Integrations","count":43},{"language":"default","tag":"Providers \u0026 Guides","count":38},{"language":"default","tag":"Deployment Guides","count":36},{"language":"default","tag":"Logging","count":30},{"language":"default","tag":"Supported Providers","count":29}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","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":".nav-logo{height:1.50rem}#sidebar-group>li>button>div{line-height:normal}"}],"page":{"pagePath":"enterprise/guardrails/secrets-detection","slug":"/enterprise/guardrails/secrets-detection","pageMetadata":{"title":"Secrets Detection","description":"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.","icon":"key","href":"/enterprise/guardrails/secrets-detection"},"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: \"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.\"\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`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[`There is no Gitleaks-backed secrets provider. Earlier revisions of this page\ndescribed one, with a curated rule pack and a `,_jsx(_components.code,{children:`secrets_detection`}),` provider type;\nit does not exist in the gateway. Secret detection is done with the `,_jsx(_components.code,{children:`regex`}),`\nprovider type, which does work, and this page shows how.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`why-this-matters-in-both-directions`,children:`Why this matters in both directions`}),`\n`,_jsxs(_components.p,{children:[`Credentials move through an LLM gateway two ways. A developer pastes a `,_jsx(_components.code,{children:`.env`}),`\nfile into a prompt asking why a service will not start, and the key is now in a\nthird-party provider’s logs. Or a model, having been shown a credential earlier\nin a conversation or in retrieved context, repeats it in an answer.`]}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`regex`}),` guardrail with `,_jsx(_components.code,{children:`apply_to: \"both\"`}),` covers both directions with the same\nrule.`]}),`\n`,_jsx(Heading,{level:`2`,id:`a-working-configuration`,children:`A working configuration`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`20`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`20`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"secret-shapes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Credential shapes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"regex\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"enabled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"apply_to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"both\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"This request was blocked because it appears to contain a credential.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"patterns\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"AKIA[0-9A-Z]{16}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ASIA[0-9A-Z]{16}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"sk-[A-Za-z0-9]{20,}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"sk-ant-[A-Za-z0-9`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-_]{20,}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"gh[pousr]_[A-Za-z0-9]{36}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"glpat-[A-Za-z0-9`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-_]{20}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"xox[baprs]-[A-Za-z0-9`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-]{10,}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"AIza[0-9A-Za-z`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-_]{35}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"-----BEGIN (?:RSA |EC |OPENSSH |PGP )?PRIVATE KEY-----\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"eyJ[A-Za-z0-9_`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-]{10,}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.[A-Za-z0-9_`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-]{10,}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.[A-Za-z0-9_`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\\\\`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`-]{10,}\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Paste it into the `,_jsx(_components.code,{children:`providers`}),` array of the guardrails plugin config, or build the\nsame thing on the `,_jsx(_components.strong,{children:`Guardrails → Providers`}),` page in the console.`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-each-pattern-catches`,children:`What each pattern catches`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Pattern`}),_jsx(_components.th,{children:`Catches`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`AKIA…`}),` / `,_jsx(_components.code,{children:`ASIA…`})]}),_jsx(_components.td,{children:`AWS access key IDs, long-lived and temporary.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`sk-…`})}),_jsx(_components.td,{children:`OpenAI-style secret keys.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`sk-ant-…`})}),_jsx(_components.td,{children:`Anthropic API keys.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`gh[pousr]_…`})}),_jsx(_components.td,{children:`GitHub personal, OAuth, user, server and refresh tokens.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`glpat-…`})}),_jsx(_components.td,{children:`GitLab personal access tokens.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`xox[baprs]-…`})}),_jsx(_components.td,{children:`Slack bot, app, user and refresh tokens.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AIza…`})}),_jsx(_components.td,{children:`Google API keys.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`-----BEGIN … PRIVATE KEY-----`})}),_jsx(_components.td,{children:`PEM private keys of any type.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`eyJ…`})}),_jsx(_components.td,{children:`JWTs, which frequently carry session identity.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`things-to-know-before-turning-this-on`,children:`Things to know before turning this on`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Patterns are RE2.`}),` No backtracking, no lookahead, no backreferences. That is\nwhy a pattern cannot hang the gateway, and it is also why some expressions\nwritten for PCRE will be rejected. A rejected pattern is refused at save time\nwith the reason and its position in the list.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Blocking is the only outcome.`}),` There is no redaction: a request containing a\nkey is refused, not stripped of it. There is also no log-only mode, so a new\npattern cannot be piloted without enforcing it — introduce patterns a few at a\ntime.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`False positives block real work.`}),` `,_jsx(_components.code,{children:`eyJ…`}),` matches any base64 JSON object, not\nonly a JWT, and a long `,_jsx(_components.code,{children:`sk-`}),` prefixed identifier that is not a key will match\ntoo. Start with the vendor-prefixed patterns, which are specific, and add the\ngeneric ones once you have seen the traffic.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Responses are scanned only if you ask.`}),` `,_jsx(_components.code,{children:`apply_to`}),` defaults to `,_jsx(_components.code,{children:`input`}),`. The\nconfiguration above sets `,_jsx(_components.code,{children:`both`}),` explicitly.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Streaming is scanned as it arrives`}),`, not only at the end, so the stream is cut\nat the first chunk that completes a match. Chunks already sent cannot be\nrecalled — see the warning in `,_jsx(_components.a,{href:`/enterprise/guardrails#responses-and-streaming`,children:`Guardrails`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`coverage-limits`,children:`Coverage limits`}),`\n`,_jsx(_components.p,{children:`The gaps that matter for credentials specifically:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`File uploads and batch payloads are not scanned.`}),` Uploading a file\ncontaining keys goes through unexamined, and that is the highest-volume way to\nmove credentials through a gateway.`]}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Non-JSON passthrough bodies are not scanned.`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`MCP tool arguments and results are not scanned.`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The full list is in `,_jsx(_components.a,{href:`/enterprise/guardrails#known-gaps-in-coverage`,children:`Known gaps in coverage`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/enterprise/guardrails`,children:`Guardrails`}),` — the policy model, coverage, and what is\nnot implemented.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/enterprise/guardrails/custom-regex`,children:`Custom Regex`}),` — the same provider type\napplied to organisation-specific policy.`]}),`\n`]})]})}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 Detection","description":"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.","icon":"key","href":"/enterprise/guardrails/secrets-detection"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Why this matters in both directions","slug":"why-this-matters-in-both-directions","depth":2,"children":[]},{"title":"A working configuration","slug":"a-working-configuration","depth":2,"children":[{"title":"What each pattern catches","slug":"what-each-pattern-catches","depth":3,"children":[]}]},{"title":"Things to know before turning this on","slug":"things-to-know-before-turning-this-on","depth":2,"children":[]},{"title":"Coverage limits","slug":"coverage-limits","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/vikat-ai/75ed5d49c5b6d441/baseUrlSwitcher.js","/_mintlify/custom/vikat-ai/d8c2d2af23ad55cd/jsonLd.js","/_mintlify/custom/vikat-ai/c6dc09a69a0e6891/supportWidget.js","/_mintlify/custom/vikat-ai/aa532cead633d329/tally-embed.js"],"subdomain":"vikat-ai","siteName":"Vikat","title":"Secrets Detection - Vikat","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-09T20:32:25.430Z","originalFileLocation":"enterprise/guardrails/secrets-detection.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=\"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vikat\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_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=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Secrets Detection - Vikat\">\u003cmeta data-mint-head property=\"og:description\" content=\"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vikat\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vikat-ai.mintlify.site/_mintlify/api/og/v2?division=Guardrails\u0026amp;title=Secrets+Detection\u0026amp;description=Catch+leaked+API+keys%2C+tokens+and+private+keys+in+prompts+and+responses+using+regex+guardrails.\u0026amp;theme=06807847904dd7332c4171c0\u0026amp;signature=8114dc7a1fe633c2d519cc956b8ff3baa19f76f17ac10ba9d584c94da07cc170\">\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 Detection - Vikat\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vikat-ai.mintlify.site/_mintlify/api/og/v2?division=Guardrails\u0026amp;title=Secrets+Detection\u0026amp;description=Catch+leaked+API+keys%2C+tokens+and+private+keys+in+prompts+and+responses+using+regex+guardrails.\u0026amp;theme=06807847904dd7332c4171c0\u0026amp;signature=8114dc7a1fe633c2d519cc956b8ff3baa19f76f17ac10ba9d584c94da07cc170\">\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=\"/mintlify-assets/_mintlify/favicons/vikat-ai/emJQBbmxc0Co5JmP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vikat\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C3B43\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/enterprise/guardrails/secrets-detection.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.vikat.ai/#organization\",\"name\":\"Vikat\",\"url\":\"https://docs.vikat.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vikat-ai/Xw_qzY8whhWmfPh3/media/vikat-logo.png?fit=max\u0026auto=format\u0026n=Xw_qzY8whhWmfPh3\u0026q=85\u0026s=1bce49f93b955ed9b64346a96466adfd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.vikat.ai#website\",\"name\":\"Vikat\",\"url\":\"https://docs.vikat.ai\",\"publisher\":{\"@id\":\"https://docs.vikat.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection#webpage\",\"url\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection\",\"name\":\"Secrets Detection\",\"description\":\"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.\",\"dateModified\":\"2026-09-09T20:32:25.430Z\",\"isPartOf\":{\"@id\":\"https://docs.vikat.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.vikat.ai/enterprise/user-provisioning\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guardrails\",\"item\":\"https://docs.vikat.ai/enterprise/guardrails\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Secrets Detection\",\"item\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection#article\",\"headline\":\"Secrets Detection\",\"name\":\"Secrets Detection\",\"description\":\"Catch leaked API keys, tokens and private keys in prompts and responses using regex guardrails.\",\"url\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection\",\"mainEntityOfPage\":{\"@id\":\"https://docs.vikat.ai/enterprise/guardrails/secrets-detection#webpage\"},\"dateModified\":\"2026-09-09T20:32:25.430Z\",\"publisher\":{\"@id\":\"https://docs.vikat.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.vikat.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vikat\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Vikat","nav":{"global":{"anchors":[]},"tabs":[{"tab":"OSS","icon":"book-open-cover","pages":[{"title":"OSS","href":"/overview"}]},{"tab":"Enterprise","icon":"building","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"Vikat Enterprise Gateway","icon":"building","href":"/enterprise/overview"}]},{"group":"Moving from OSS","icon":"globe","pages":[{"title":"Overview","icon":"book","href":"/enterprise/moving-from-oss/overview"},{"title":"Sizing \u0026 redundancy","icon":"server","href":"/enterprise/moving-from-oss/sizing"},{"title":"Cross-region deployment","icon":"earth-americas","href":"/enterprise/moving-from-oss/cross-region"},{"title":"Security hardening","icon":"shield-halved","href":"/enterprise/moving-from-oss/security-hardening"},{"title":"Versioning","icon":"code-branch","href":"/enterprise/moving-from-oss/versioning"}]},{"group":"Release Cadence","icon":"calendar","pages":[{"title":"Release Cadence","icon":"box-open","href":"/enterprise/release-cadence"}]},{"group":"Migration Guides","icon":"arrow-up-right-dots","pages":[{"title":"Migrating to Enterprise v1.4.0","href":"/enterprise/migration-guides/v1.4.0"}]},{"group":"Features","icon":"bolt","pages":[{"title":"User Provisioning (OIDC + SCIM)","icon":"users-gear","href":"/enterprise/user-provisioning"},{"title":"Access Profiles","icon":"id-card","href":"/enterprise/access-profiles"},{"title":"Role-Based Access Control","icon":"user-shield","href":"/enterprise/rbac"},{"title":"Sign-in security","icon":"key","href":"/enterprise/sign-in-security"},{"title":"Data Access Control (DAC)","icon":"user-shield","href":"/enterprise/data-access-control"},{"title":"MCP Tool Groups","icon":"layer-group","href":"/enterprise/mcp-tool-groups"},{"group":"Guardrails","icon":"road-barrier","pages":[{"title":"Guardrails","description":"Content policy for LLM traffic: keyword, regular-expression, PII and model-based rules applied to prompts and to responses.","icon":"road-barrier","href":"/enterprise/guardrails"},{"title":"Secrets Detection","icon":"key","href":"/enterprise/guardrails/secrets-detection"},{"title":"Custom Regex","description":"Write organisation-specific content rules with RE2 regular expressions, and use the built-in PII patterns.","icon":"code","href":"/enterprise/guardrails/custom-regex"}]},{"title":"Audit Logs","icon":"scroll","href":"/enterprise/audit-logs"},{"title":"Secret Management","icon":"vault","href":"/enterprise/secret-management"},{"title":"Log Exports","icon":"download","href":"/enterprise/log-exports"},{"title":"Datadog","icon":"dog","href":"/enterprise/datadog-connector"},{"title":"Running multiple replicas","icon":"server","href":"/enterprise/clustering"},{"title":"Adaptive Load Balancing","icon":"brain","href":"/enterprise/adaptive-load-balancing"},{"title":"Circuit breaker","icon":"bolt","href":"/enterprise/circuit-breaker"},{"title":"In-VPC Deployments","icon":"cloud","href":"/enterprise/invpc-deployments"}]},{"group":"Security","icon":"shield","pages":[{"title":"Security at Vikat","icon":"shield","sidebarTitle":"Security","href":"/security"}]}]},{"tab":"Edge","icon":"globe","groups":[{"group":"Overview","pages":[]},{"group":"Governance \u0026 Control","icon":"shield-halved","pages":[]},{"group":"Admin controls","icon":"sliders","pages":[]},{"group":"Deployment","icon":"cloud-arrow-up","pages":[]},{"group":"Reference","icon":"list","pages":[]}]},{"tab":"Integrations","icon":"plug","groups":[{"group":"CLI Agents \u0026 Editors","icon":"command","pages":[{"title":"Overview","icon":"Book","href":"/cli-agents/overview"},{"title":"Cursor","icon":"arrow-pointer","href":"/cli-agents/cursor"},{"title":"LibreChat","icon":"message","href":"/cli-agents/librechat"},{"title":"Claude Code","icon":"star-of-life","href":"/cli-agents/claude-code"},{"title":"Claude Desktop","icon":"desktop","href":"/cli-agents/claude-desktop"},{"title":"Claude for Office","icon":"file-word","href":"/cli-agents/claude-for-office"},{"title":"Codex CLI","icon":"openai","href":"/cli-agents/codex-cli"},{"title":"Gemini CLI","icon":"diamond","href":"/cli-agents/gemini-cli"},{"title":"Qwen Code","icon":"q","href":"/cli-agents/qwen-code"},{"title":"Opencode","icon":"codepen","href":"/cli-agents/opencode"},{"title":"Zed Editor","icon":"z","href":"/cli-agents/zed-editor"},{"title":"Roo Code","icon":"code","href":"/cli-agents/roo-code"},{"title":"Open WebUI","icon":"globe","href":"/cli-agents/open-webui"}]},{"group":"SDKs \u0026 Frameworks","icon":"code","pages":[{"group":"OpenAI SDK","icon":"openai","pages":[{"title":"Overview","icon":"book","href":"/integrations/openai-sdk/overview"},{"title":"Files and Batch API","tag":"Beta","icon":"folder-open","href":"/integrations/openai-sdk/files-and-batch"}]},{"group":"Anthropic SDK","icon":"asterisk","pages":[{"title":"Overview","icon":"book","href":"/integrations/anthropic-sdk/overview"},{"title":"Files and Batch API","tag":"Beta","icon":"folder-open","href":"/integrations/anthropic-sdk/files-and-batch"}]},{"group":"Bedrock SDK","icon":"aws","pages":[{"title":"Overview","icon":"book","href":"/integrations/bedrock-sdk/overview"},{"title":"Files and Batch API","tag":"Beta","icon":"folder-open","href":"/integrations/bedrock-sdk/files-and-batch"}]},{"group":"GenAI SDK","icon":"diamond","pages":[{"title":"Overview","icon":"book","href":"/integrations/genai-sdk/overview"}]},{"title":"LiteLLM SDK","icon":"train","href":"/integrations/litellm-sdk"},{"title":"Langchain SDK","icon":"crow","href":"/integrations/langchain-sdk"},{"title":"Pydantic AI SDK","icon":"triangle","href":"/integrations/pydanticai-sdk"},{"title":"Passthrough","icon":"route","href":"/integrations/passthrough"}]},{"group":"Identity Providers (SSO)","icon":"id-card","pages":[{"group":"Okta","icon":"/media/okta-icon.svg","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-okta/oidc"},{"title":"Setup SCIM","href":"/enterprise/setting-up-okta/scim"}]},{"group":"Microsoft Entra","icon":"microsoft","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-entra/oidc"}]},{"group":"Zitadel","icon":"/media/zitadel-icon.svg","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-zitadel/oidc"}]},{"group":"Keycloak","icon":"/media/keycloak-icon.svg","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-keycloak/oidc"}]},{"group":"Google Workspace","icon":"google","pages":[{"title":"Setting up Google Workspace","icon":"google","href":"/enterprise/setting-up-google-workspace"}]},{"group":"Auth0","icon":"/media/auth0-icon.svg","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-auth0/oidc"}]},{"group":"Generic OIDC","icon":"fingerprint","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-generic-oidc/oidc"},{"title":"Setup SCIM","description":"Enable real-time user and group provisioning from any SCIM 2.0-capable identity provider to Vikat Enterprise.","href":"/enterprise/setting-up-generic-oidc/scim"}]}]},{"group":"Content Safety (Guardrails)","icon":"road-barrier","pages":[{"title":"Secrets Detection","icon":"key","href":"/enterprise/guardrails/secrets-detection"},{"title":"Custom Regex","description":"Write organisation-specific content rules with RE2 regular expressions, and use the built-in PII patterns.","icon":"code","href":"/enterprise/guardrails/custom-regex"}]},{"group":"Observability","icon":"binoculars","pages":[{"title":"Built-in Observability","icon":"cube","href":"/features/observability/default"},{"title":"OpenTelemetry (OTel)","icon":"bolt","href":"/features/observability/otel"},{"title":"Prometheus","icon":"chart-line","href":"/features/observability/prometheus"},{"title":"Kafka","icon":"database","href":"/features/observability/kafka"}]},{"group":"Vector Databases","icon":"database","pages":[{"title":"Weaviate","icon":"database","href":"/integrations/vector-databases/weaviate"},{"title":"Redis / Valkey","icon":"database","href":"/integrations/vector-databases/redis"},{"title":"Qdrant","icon":"database","href":"/integrations/vector-databases/qdrant"},{"title":"Pinecone","icon":"database","href":"/integrations/vector-databases/pinecone"}]}]},{"tab":"Deployment Guides","icon":"server","pages":[{"title":"Deployment Guides","href":"/deployment-guides/k8s"}]},{"tab":"API","icon":"code","pages":[{"title":"API","href":"/api-reference/models/list-available-models"}]},{"tab":"Contributing","icon":"code-pull-request","pages":[{"title":"Contributing","href":"/contributing/setting-up-repo"}]},{"tab":"Benchmarks","icon":"chart-line","pages":[{"title":"Benchmarks","href":"/benchmarking/getting-started"}]}]},"basePath":"","title":"Secrets Detection - Vikat","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":[],"chunks":[]}