@grafana/plugin-ui 0.17.3 → 0.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/NOTICE +18 -0
  2. package/dist/cjs/index.cjs +3 -3
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/secret-scanner.cjs +3032 -0
  5. package/dist/cjs/secret-scanner.cjs.map +1 -0
  6. package/dist/cjs/secret-scanner.d.cts +273 -0
  7. package/dist/esm/node_modules/js-yaml/dist/js-yaml.js +3 -3
  8. package/dist/esm/node_modules/js-yaml/dist/js-yaml.js.map +1 -1
  9. package/dist/esm/secret-scanner/core/constants.js +4 -0
  10. package/dist/esm/secret-scanner/core/constants.js.map +1 -0
  11. package/dist/esm/secret-scanner/core/detection/embedded.js +80 -0
  12. package/dist/esm/secret-scanner/core/detection/embedded.js.map +1 -0
  13. package/dist/esm/secret-scanner/core/detection/entropy.js +19 -0
  14. package/dist/esm/secret-scanner/core/detection/entropy.js.map +1 -0
  15. package/dist/esm/secret-scanner/core/detection/highEntropy.js +24 -0
  16. package/dist/esm/secret-scanner/core/detection/highEntropy.js.map +1 -0
  17. package/dist/esm/secret-scanner/core/detection/literals.js +135 -0
  18. package/dist/esm/secret-scanner/core/detection/literals.js.map +1 -0
  19. package/dist/esm/secret-scanner/core/detection/nameDetector.js +48 -0
  20. package/dist/esm/secret-scanner/core/detection/nameDetector.js.map +1 -0
  21. package/dist/esm/secret-scanner/core/detection/placeholders.js +10 -0
  22. package/dist/esm/secret-scanner/core/detection/placeholders.js.map +1 -0
  23. package/dist/esm/secret-scanner/core/detection/position.js +39 -0
  24. package/dist/esm/secret-scanner/core/detection/position.js.map +1 -0
  25. package/dist/esm/secret-scanner/core/detection/ruleDetectors.js +59 -0
  26. package/dist/esm/secret-scanner/core/detection/ruleDetectors.js.map +1 -0
  27. package/dist/esm/secret-scanner/core/k6Rewriter.js +44 -0
  28. package/dist/esm/secret-scanner/core/k6Rewriter.js.map +1 -0
  29. package/dist/esm/secret-scanner/core/memoizeLatest.js +18 -0
  30. package/dist/esm/secret-scanner/core/memoizeLatest.js.map +1 -0
  31. package/dist/esm/secret-scanner/core/scanCode.js +70 -0
  32. package/dist/esm/secret-scanner/core/scanCode.js.map +1 -0
  33. package/dist/esm/secret-scanner/core/scanText.js +51 -0
  34. package/dist/esm/secret-scanner/core/scanText.js.map +1 -0
  35. package/dist/esm/secret-scanner/core/secretScanner.utils.js +33 -0
  36. package/dist/esm/secret-scanner/core/secretScanner.utils.js.map +1 -0
  37. package/dist/esm/secret-scanner/monaco/installSecretScanner.js +117 -0
  38. package/dist/esm/secret-scanner/monaco/installSecretScanner.js.map +1 -0
  39. package/dist/esm/secret-scanner/panel/SecretReferenceModal.js +21 -0
  40. package/dist/esm/secret-scanner/panel/SecretReferenceModal.js.map +1 -0
  41. package/dist/esm/secret-scanner/panel/SecretScannerPanel.js +75 -0
  42. package/dist/esm/secret-scanner/panel/SecretScannerPanel.js.map +1 -0
  43. package/dist/esm/secret-scanner/react/useIgnoredSecrets.js +25 -0
  44. package/dist/esm/secret-scanner/react/useIgnoredSecrets.js.map +1 -0
  45. package/dist/esm/secret-scanner/react/useLocalStorageList.js +38 -0
  46. package/dist/esm/secret-scanner/react/useLocalStorageList.js.map +1 -0
  47. package/dist/esm/secret-scanner/react/useMonacoSecretScanner.js +28 -0
  48. package/dist/esm/secret-scanner/react/useMonacoSecretScanner.js.map +1 -0
  49. package/dist/esm/secret-scanner/react/useSecretScanner.js +57 -0
  50. package/dist/esm/secret-scanner/react/useSecretScanner.js.map +1 -0
  51. package/dist/esm/secret-scanner/rules/rules.generated.js +2083 -0
  52. package/dist/esm/secret-scanner/rules/rules.generated.js.map +1 -0
  53. package/dist/esm/secret-scanner.d.ts +273 -0
  54. package/dist/esm/secret-scanner.js +15 -0
  55. package/dist/esm/secret-scanner.js.map +1 -0
  56. package/package.json +37 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-scanner.cjs","sources":["../../src/secret-scanner/core/detection/literals.ts","../../src/secret-scanner/core/detection/placeholders.ts","../../src/secret-scanner/core/detection/position.ts","../../src/secret-scanner/rules/rules.generated.ts","../../src/secret-scanner/core/detection/ruleDetectors.ts","../../src/secret-scanner/core/detection/entropy.ts","../../src/secret-scanner/core/detection/embedded.ts","../../src/secret-scanner/core/detection/highEntropy.ts","../../src/secret-scanner/core/detection/nameDetector.ts","../../src/secret-scanner/core/memoizeLatest.ts","../../src/secret-scanner/core/scanCode.ts","../../src/secret-scanner/core/scanText.ts","../../src/secret-scanner/core/constants.ts","../../src/secret-scanner/core/k6Rewriter.ts","../../src/secret-scanner/core/secretScanner.utils.ts","../../src/secret-scanner/monaco/installSecretScanner.ts","../../src/secret-scanner/react/useLocalStorageList.ts","../../src/secret-scanner/react/useIgnoredSecrets.ts","../../src/secret-scanner/react/useSecretScanner.ts","../../src/secret-scanner/react/useMonacoSecretScanner.ts","../../src/secret-scanner/panel/SecretScannerPanel.tsx","../../src/secret-scanner/panel/SecretReferenceModal.tsx"],"sourcesContent":["import { Parser, type Options } from 'acorn';\nimport * as acornLoose from 'acorn-loose';\nimport { tsPlugin } from 'acorn-typescript';\n\n// acorn extended with a TypeScript-aware plugin\nconst TsParser = Parser.extend(tsPlugin() as unknown as Parameters<typeof Parser.extend>[0]);\n\nconst PARSE_OPTIONS: Options = { ecmaVersion: 'latest', sourceType: 'module' };\n\n/**\n * Parses the script into an offset-accurate AST, preferring fidelity but never\n * throwing.\n *\n * Three tiers, fastest first:\n *\n * 1. Plain acorn. It is ~5x faster than the TS-aware parser and succeeds on\n * plain-JS scripts (the common case for k6). Crucially, plain JS has no\n * type positions, so there is no type-position literal to mis-flag — a file\n * acorn accepts is genuinely JS. Any TypeScript syntax makes it throw, which\n * just falls through to tier 2.\n * 2. The TS-aware parser (`acorn` + `acorn-typescript`). Handles type\n * annotations and distinguishes type-position literals (`type K = 'AKIA…'`,\n * `x: 'live' | 'test'`) from runtime values, so it won't flag a\n * secret-shaped string that only appears in a type. It rejects the whole\n * file on a construct `acorn-typescript` doesn't implement (e.g.\n * `satisfies`) or on a mid-edit syntax error.\n * 3. `acorn-loose`. Recovers around bad tokens and always returns a best-effort\n * tree with source-accurate offsets, so one unsupported construct or a\n * transient syntax error no longer blanks every finding in the file. The\n * loose tree is not TS-aware, so a type-position literal in a recovered file\n * may be flagged; a low-confidence false positive in an already-unusual file\n * is preferable to missing a secret.\n *\n * Returns null only if even the loose parse throws, which it is not expected to.\n */\nfunction parseScript(script: string): AstNode | null {\n try {\n return Parser.parse(script, PARSE_OPTIONS) as unknown as AstNode;\n } catch {\n try {\n return TsParser.parse(script, PARSE_OPTIONS) as unknown as AstNode;\n } catch {\n try {\n return acornLoose.parse(script, PARSE_OPTIONS) as unknown as AstNode;\n } catch {\n return null;\n }\n }\n }\n}\n\nexport interface StringLiteral {\n body: string;\n literalStart: number;\n literalEnd: number;\n contentStart: number;\n contentEnd: number;\n kind: 'string' | 'template';\n name?: string;\n embeddedOnly?: boolean;\n}\n\ninterface AstNode {\n type: string;\n start: number;\n end: number;\n [key: string]: unknown;\n}\n\nfunction isNode(value: unknown): value is AstNode {\n return typeof value === 'object' && value !== null && typeof (value as AstNode).type === 'string';\n}\n\n/**\n * Depth-first walk that appends every string / template literal to `out`.\n *\n * A plain recursive function rather than a generator: on a large AST the\n * `yield*` delegation and per-node iterator allocation of a generator walk cost\n * more than the traversal itself. This visits the same nodes with none of that\n * overhead.\n */\nfunction collectStringLiterals(node: unknown, parent: AstNode | null, out: StringLiteral[]): void {\n if (Array.isArray(node)) {\n for (const item of node) {\n collectStringLiterals(item, parent, out);\n }\n return;\n }\n if (!isNode(node)) {\n return;\n }\n\n if (node.type === 'Literal' && typeof node.value === 'string') {\n out.push({\n body: node.value.trim(),\n literalStart: node.start,\n literalEnd: node.end,\n contentStart: node.start + 1,\n contentEnd: node.end - 1,\n kind: 'string',\n name: resolveAssignedName(node, parent),\n });\n } else if (node.type === 'TemplateLiteral' && Array.isArray(node.expressions)) {\n const quasis = node.quasis as Array<{ start: number; end: number; value: { cooked?: string | null } }>;\n if (node.expressions.length === 0) {\n const cooked = quasis[0]?.value.cooked ?? '';\n out.push({\n body: cooked.trim(),\n literalStart: node.start,\n literalEnd: node.end,\n contentStart: node.start + 1,\n contentEnd: node.end - 1,\n kind: 'template',\n name: resolveAssignedName(node, parent),\n });\n } else {\n for (const quasi of quasis) {\n const cooked = quasi.value.cooked ?? '';\n if (cooked.length === 0) {\n continue;\n }\n out.push({\n body: cooked.trim(),\n literalStart: quasi.start,\n literalEnd: quasi.end,\n contentStart: quasi.start,\n contentEnd: quasi.end,\n kind: 'template',\n embeddedOnly: true,\n });\n }\n }\n }\n\n for (const key of Object.keys(node)) {\n collectStringLiterals(node[key], node, out);\n }\n}\n\nfunction identifierName(id: unknown): string | undefined {\n return isNode(id) && id.type === 'Identifier' ? (id.name as string) : undefined;\n}\n\n/** Name of an object/class member key: `foo`, `'foo'` or `['foo']`. */\nfunction memberName(key: unknown): string | undefined {\n if (!isNode(key)) {\n return undefined;\n }\n if (key.type === 'Identifier') {\n return key.name as string;\n }\n if (key.type === 'Literal' && typeof key.value === 'string') {\n return key.value;\n }\n return undefined;\n}\n\n/** Name an assignment targets: `foo = …` or `obj.foo = …`. */\nfunction assignmentTargetName(target: unknown): string | undefined {\n if (!isNode(target)) {\n return undefined;\n }\n if (target.type === 'Identifier') {\n return target.name as string;\n }\n if (target.type === 'MemberExpression') {\n return memberName(target.property);\n }\n return undefined;\n}\n\nfunction resolveAssignedName(node: AstNode, parent: AstNode | null): string | undefined {\n if (!parent) {\n return undefined;\n }\n switch (parent.type) {\n case 'VariableDeclarator':\n return parent.init === node ? identifierName(parent.id) : undefined;\n case 'Property':\n case 'PropertyDefinition':\n return parent.value === node ? memberName(parent.key) : undefined;\n case 'AssignmentExpression':\n return parent.right === node ? assignmentTargetName(parent.left) : undefined;\n default:\n return undefined;\n }\n}\n\n/**\n * Every string / template literal in the script, in source order, with its\n * decoded body and original offsets. An interpolated template yields one entry\n * per static chunk (`embeddedOnly`) rather than a single whole-value entry.\n */\nexport function iterateStringLiterals(script: string): StringLiteral[] {\n const ast = parseScript(script);\n if (!ast) {\n return [];\n }\n\n const literals: StringLiteral[] = [];\n collectStringLiterals(ast, null, literals);\n return literals;\n}\n","// cspell:ignore changeme\n\n// Values that look secret-shaped but are obviously placeholders. Skipping these\n// keeps the warning noise down so the real findings stand out.\nconst PLACEHOLDER_PATTERN =\n /^(your|my|the|some|example|sample|changeme|placeholder|todo|xxx+|test|dummy|<.*>|\\{\\{.*\\}\\})/i;\n\nexport function isPlaceholder(value: string): boolean {\n if (PLACEHOLDER_PATTERN.test(value)) {\n return true;\n }\n\n // A single repeated character (aaaa…, xxxx…, 0000…) is never a real secret.\n return /^(.)\\1+$/.test(value);\n}\n","/**\n * Converts a character offset into a 1-based {line, column}.\n */\nexport function offsetToPosition(text: string, offset: number) {\n let line = 1;\n let column = 1;\n const end = Math.min(offset, text.length);\n\n for (let i = 0; i < end; i++) {\n if (text[i] === '\\n') {\n line++;\n column = 1;\n } else {\n column++;\n }\n }\n\n return { line, column };\n}\n\n/**\n * Builds a reusable offset→{line, column} resolver for one document.\n */\nexport function createPositionResolver(text: string) {\n // lineStarts[i] = offset where line (i + 1) begins. Line 1 starts at 0.\n const lineStarts = [0];\n for (let i = 0; i < text.length; i++) {\n if (text[i] === '\\n') {\n lineStarts.push(i + 1);\n }\n }\n\n return function positionAt(offset: number) {\n const target = Math.min(Math.max(offset, 0), text.length);\n let lo = 0;\n let hi = lineStarts.length - 1;\n while (lo < hi) {\n const mid = (lo + hi + 1) >> 1;\n if (lineStarts[mid]! <= target) {\n lo = mid;\n } else {\n hi = mid - 1;\n }\n }\n return { line: lo + 1, column: target - lineStarts[lo]! + 1 };\n };\n}\n","/* eslint-disable */\n// GENERATED FILE — DO NOT EDIT.\n// Produced by `yarn gen:secret-rules` from ./custom.toml and ./gitleaks.toml.\n//\n// GITLEAKS_RULES is derived from the gitleaks default configuration\n// (https://github.com/gitleaks/gitleaks), Copyright (c) 2019 Zachary Rice,\n// licensed under the MIT License. Full text: ./gitleaks-LICENSE\n\n/** A secret-detection rule in gitleaks rule format, narrowed to the fields we use. */\nexport interface SecretRule {\n id: string;\n description?: string;\n regex?: string;\n confidence?: 'high' | 'medium' | 'low';\n entropy?: number;\n keywords?: string[];\n}\n\n/** Grafana's tuned patterns. Authoritative over the gitleaks long tail. */\nexport const CUSTOM_RULES: SecretRule[] = [\n {\n \"id\": \"private-key\",\n \"description\": \"Identified a private key, which may compromise cryptographic security and sensitive data encryption.\",\n \"regex\": \"-----BEGIN (?:RSA |EC |OPENSSH |DSA |PGP )?PRIVATE KEY-----\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"-----begin\"\n ]\n },\n {\n \"id\": \"aws-access-key-id\",\n \"description\": \"Identified an AWS access key ID, risking unauthorized access to cloud resources and data breaches on AWS platforms.\",\n \"regex\": \"(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA)[A-Z0-9]{16}\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"akia\",\n \"asia\",\n \"agpa\",\n \"aida\",\n \"aroa\",\n \"anpa\"\n ]\n },\n {\n \"id\": \"github-token\",\n \"description\": \"Uncovered a GitHub token, potentially leading to unauthorized repository access and sensitive content exposure.\",\n \"regex\": \"(?:ghp|gho|ghu|ghs|ghr|github_pat)_[A-Za-z0-9_]{20,}\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"ghp_\",\n \"gho_\",\n \"ghu_\",\n \"ghs_\",\n \"ghr_\",\n \"github_pat\"\n ]\n },\n {\n \"id\": \"slack-token\",\n \"description\": \"Identified a Slack token, which may compromise bot integrations and communication channel security.\",\n \"regex\": \"xox[baprs]-[A-Za-z0-9-]{10,}\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"xox\"\n ]\n },\n {\n \"id\": \"google-api-key\",\n \"description\": \"Uncovered a Google API key, which could lead to unauthorized access to Google Cloud services and data breaches.\",\n \"regex\": \"AIza[0-9A-Za-z_-]{35}\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"aiza\"\n ]\n },\n {\n \"id\": \"grafana-token\",\n \"description\": \"Discovered a Grafana token, posing a risk of compromised monitoring services and data integrity.\",\n \"regex\": \"gl(?:sa_[A-Za-z0-9]{16,}_[A-Za-z0-9]{6,}|c_[A-Za-z0-9+/=_-]{32,}|api_[A-Za-z0-9]{16,})\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"glsa_\",\n \"glc_\",\n \"glapi_\"\n ]\n },\n {\n \"id\": \"stripe-key\",\n \"description\": \"Found a Stripe key, posing a risk to payment processing services and sensitive financial data.\",\n \"regex\": \"(?:sk|rk|pk)_(?:live|test)_[0-9A-Za-z]{16,}\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"sk_\",\n \"rk_\",\n \"pk_\"\n ]\n },\n {\n \"id\": \"jwt\",\n \"description\": \"Uncovered a JSON Web Token, which may lead to unauthorized access to web applications and sensitive user data.\",\n \"regex\": \"eyJ[A-Za-z0-9_/+-]{6,}={0,2}(?:\\\\.[A-Za-z0-9_/+-]{6,}={0,2}){2}\",\n \"confidence\": \"high\",\n \"keywords\": [\n \"eyj\"\n ]\n },\n {\n \"id\": \"authorization-bearer\",\n \"description\": \"Detected an Authorization Bearer token, which may grant unauthorized access to protected APIs and services.\",\n \"regex\": \"(?i)bearer\\\\s+([a-z0-9._~+/=-]{20,})\",\n \"confidence\": \"medium\",\n \"entropy\": 3,\n \"keywords\": [\n \"bearer\"\n ]\n },\n {\n \"id\": \"basic-auth-url-credentials\",\n \"description\": \"Detected credentials embedded in a URL (user:password@host), risking exposure of account passwords and unauthorized access.\",\n \"regex\": \"://[^:@/\\\\s]+:([^@/\\\\s]{6,})@\",\n \"confidence\": \"medium\",\n \"keywords\": [\n \"://\"\n ]\n }\n];\n\n/** The vendored gitleaks long tail. */\nexport const GITLEAKS_RULES: SecretRule[] = [\n {\n \"id\": \"1password-secret-key\",\n \"description\": \"Uncovered a possible 1Password secret key, potentially compromising access to secrets in vaults.\",\n \"regex\": \"\\\\bA3-[A-Z0-9]{6}-(?:(?:[A-Z0-9]{11})|(?:[A-Z0-9]{6}-[A-Z0-9]{5}))-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}\\\\b\",\n \"entropy\": 3.8,\n \"keywords\": [\n \"a3-\"\n ]\n },\n {\n \"id\": \"1password-service-account-token\",\n \"description\": \"Uncovered a possible 1Password service account token, potentially compromising access to secrets in vaults.\",\n \"regex\": \"ops_eyJ[a-zA-Z0-9+/]{250,}={0,3}\",\n \"entropy\": 4,\n \"keywords\": [\n \"ops_\"\n ]\n },\n {\n \"id\": \"adafruit-api-key\",\n \"description\": \"Identified a potential Adafruit API Key, which could lead to unauthorized access to Adafruit services and sensitive data exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:adafruit)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9_-]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"adafruit\"\n ]\n },\n {\n \"id\": \"adobe-client-id\",\n \"description\": \"Detected a pattern that resembles an Adobe OAuth Web Client ID, posing a risk of compromised Adobe integrations and data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:adobe)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"adobe\"\n ]\n },\n {\n \"id\": \"adobe-client-secret\",\n \"description\": \"Discovered a potential Adobe Client Secret, which, if exposed, could allow unauthorized Adobe service access and data manipulation.\",\n \"regex\": \"\\\\b(p8e-(?i)[a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"p8e-\"\n ]\n },\n {\n \"id\": \"age-secret-key\",\n \"description\": \"Discovered a potential Age encryption tool secret key, risking data decryption and unauthorized access to sensitive information.\",\n \"regex\": \"AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}\",\n \"keywords\": [\n \"age-secret-key-1\"\n ]\n },\n {\n \"id\": \"airtable-api-key\",\n \"description\": \"Uncovered a possible Airtable API Key, potentially compromising database access and leading to data leakage or alteration.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:airtable)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{17})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"airtable\"\n ]\n },\n {\n \"id\": \"airtable-personnal-access-token\",\n \"description\": \"Uncovered a possible Airtable Personal AccessToken, potentially compromising database access and leading to data leakage or alteration.\",\n \"regex\": \"\\\\b(pat[[:alnum:]]{14}\\\\.[a-f0-9]{64})\\\\b\",\n \"keywords\": [\n \"airtable\"\n ]\n },\n {\n \"id\": \"algolia-api-key\",\n \"description\": \"Identified an Algolia API Key, which could result in unauthorized search operations and data exposure on Algolia-managed platforms.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:algolia)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"algolia\"\n ]\n },\n {\n \"id\": \"alibaba-access-key-id\",\n \"description\": \"Detected an Alibaba Cloud AccessKey ID, posing a risk of unauthorized cloud resource access and potential data compromise.\",\n \"regex\": \"\\\\b(LTAI(?i)[a-z0-9]{20})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"ltai\"\n ]\n },\n {\n \"id\": \"alibaba-secret-key\",\n \"description\": \"Discovered a potential Alibaba Cloud Secret Key, potentially allowing unauthorized operations and data access within Alibaba Cloud.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:alibaba)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{30})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"alibaba\"\n ]\n },\n {\n \"id\": \"anthropic-admin-api-key\",\n \"description\": \"Detected an Anthropic Admin API Key, risking unauthorized access to administrative functions and sensitive AI model configurations.\",\n \"regex\": \"\\\\b(sk-ant-admin01-[a-zA-Z0-9_\\\\-]{93}AA)(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"sk-ant-admin01\"\n ]\n },\n {\n \"id\": \"anthropic-api-key\",\n \"description\": \"Identified an Anthropic API Key, which may compromise AI assistant integrations and expose sensitive data to unauthorized access.\",\n \"regex\": \"\\\\b(sk-ant-api03-[a-zA-Z0-9_\\\\-]{93}AA)(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"sk-ant-api03\"\n ]\n },\n {\n \"id\": \"artifactory-api-key\",\n \"description\": \"Detected an Artifactory api key, posing a risk unauthorized access to the central repository.\",\n \"regex\": \"\\\\bAKCp[A-Za-z0-9]{69}\\\\b\",\n \"entropy\": 4.5,\n \"keywords\": [\n \"akcp\"\n ]\n },\n {\n \"id\": \"artifactory-reference-token\",\n \"description\": \"Detected an Artifactory reference token, posing a risk of impersonation and unauthorized access to the central repository.\",\n \"regex\": \"\\\\bcmVmd[A-Za-z0-9]{59}\\\\b\",\n \"entropy\": 4.5,\n \"keywords\": [\n \"cmvmd\"\n ]\n },\n {\n \"id\": \"asana-client-id\",\n \"description\": \"Discovered a potential Asana Client ID, risking unauthorized access to Asana projects and sensitive task information.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:asana)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9]{16})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"asana\"\n ]\n },\n {\n \"id\": \"asana-client-secret\",\n \"description\": \"Identified an Asana Client Secret, which could lead to compromised project management integrity and unauthorized access.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:asana)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"asana\"\n ]\n },\n {\n \"id\": \"atlassian-api-token\",\n \"description\": \"Detected an Atlassian API token, posing a threat to project management and collaboration tool security and data confidentiality.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:(?-i:ATLASSIAN|[Aa]tlassian)|(?-i:CONFLUENCE|[Cc]onfluence)|(?-i:JIRA|[Jj]ira))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{20}[a-f0-9]{4})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)|\\\\b(ATATT3[A-Za-z0-9_\\\\-=]{186})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"atlassian\",\n \"confluence\",\n \"jira\",\n \"atatt3\"\n ]\n },\n {\n \"id\": \"authress-service-client-access-key\",\n \"description\": \"Uncovered a possible Authress Service Client Access Key, which may compromise access control services and sensitive data.\",\n \"regex\": \"\\\\b((?:sc|ext|scauth|authress)_(?i)[a-z0-9]{5,30}\\\\.[a-z0-9]{4,6}\\\\.(?-i:acc)[_-][a-z0-9-]{10,32}\\\\.[a-z0-9+/_=-]{30,120})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"sc_\",\n \"ext_\",\n \"scauth_\",\n \"authress_\"\n ]\n },\n {\n \"id\": \"aws-access-token\",\n \"description\": \"Identified a pattern that may indicate AWS credentials, risking unauthorized cloud resource access and data breaches on AWS platforms.\",\n \"regex\": \"\\\\b((?:A3T[A-Z0-9]|AKIA|ASIA|ABIA|ACCA)[A-Z2-7]{16})\\\\b\",\n \"entropy\": 3,\n \"keywords\": [\n \"a3t\",\n \"akia\",\n \"asia\",\n \"abia\",\n \"acca\"\n ]\n },\n {\n \"id\": \"aws-amazon-bedrock-api-key-long-lived\",\n \"description\": \"Identified a pattern that may indicate long-lived Amazon Bedrock API keys, risking unauthorized Amazon Bedrock usage\",\n \"regex\": \"\\\\b(ABSK[A-Za-z0-9+/]{109,269}={0,2})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"absk\"\n ]\n },\n {\n \"id\": \"aws-amazon-bedrock-api-key-short-lived\",\n \"description\": \"Identified a pattern that may indicate short-lived Amazon Bedrock API keys, risking unauthorized Amazon Bedrock usage\",\n \"regex\": \"bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29t\",\n \"entropy\": 3,\n \"keywords\": [\n \"bedrock-api-key-\"\n ]\n },\n {\n \"id\": \"azure-ad-client-secret\",\n \"description\": \"Azure AD Client Secret\",\n \"regex\": \"(?:^|[\\\\\\\\'\\\"\\\\x60\\\\s>=:(,)])([a-zA-Z0-9_~.]{3}\\\\dQ~[a-zA-Z0-9_~.-]{31,34})(?:$|[\\\\\\\\'\\\"\\\\x60\\\\s<),])\",\n \"entropy\": 3,\n \"keywords\": [\n \"q~\"\n ]\n },\n {\n \"id\": \"beamer-api-token\",\n \"description\": \"Detected a Beamer API token, potentially compromising content management and exposing sensitive notifications and updates.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:beamer)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(b_[a-z0-9=_\\\\-]{44})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"beamer\"\n ]\n },\n {\n \"id\": \"bitbucket-client-id\",\n \"description\": \"Discovered a potential Bitbucket Client ID, risking unauthorized repository access and potential codebase exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:bitbucket)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"bitbucket\"\n ]\n },\n {\n \"id\": \"bitbucket-client-secret\",\n \"description\": \"Discovered a potential Bitbucket Client Secret, posing a risk of compromised code repositories and unauthorized access.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:bitbucket)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"bitbucket\"\n ]\n },\n {\n \"id\": \"bittrex-access-key\",\n \"description\": \"Identified a Bittrex Access Key, which could lead to unauthorized access to cryptocurrency trading accounts and financial loss.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:bittrex)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"bittrex\"\n ]\n },\n {\n \"id\": \"bittrex-secret-key\",\n \"description\": \"Detected a Bittrex Secret Key, potentially compromising cryptocurrency transactions and financial security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:bittrex)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"bittrex\"\n ]\n },\n {\n \"id\": \"cisco-meraki-api-key\",\n \"description\": \"Cisco Meraki is a cloud-managed IT solution that provides networking, security, and device management through an easy-to-use interface.\",\n \"regex\": \"[\\\\w.-]{0,50}?(?i:[\\\\w.-]{0,50}?(?:(?-i:[Mm]eraki|MERAKI))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3})(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9a-f]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"meraki\"\n ]\n },\n {\n \"id\": \"clickhouse-cloud-api-secret-key\",\n \"description\": \"Identified a pattern that may indicate clickhouse cloud API secret key, risking unauthorized clickhouse cloud api access and data breaches on ClickHouse Cloud platforms.\",\n \"regex\": \"\\\\b(4b1d[A-Za-z0-9]{38})\\\\b\",\n \"entropy\": 3,\n \"keywords\": [\n \"4b1d\"\n ]\n },\n {\n \"id\": \"clojars-api-token\",\n \"description\": \"Uncovered a possible Clojars API token, risking unauthorized access to Clojure libraries and potential code manipulation.\",\n \"regex\": \"(?i)CLOJARS_[a-z0-9]{60}\",\n \"entropy\": 2,\n \"keywords\": [\n \"clojars_\"\n ]\n },\n {\n \"id\": \"cloudflare-api-key\",\n \"description\": \"Detected a Cloudflare API Key, potentially compromising cloud application deployments and operational security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:cloudflare)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9_-]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"cloudflare\"\n ]\n },\n {\n \"id\": \"cloudflare-global-api-key\",\n \"description\": \"Detected a Cloudflare Global API Key, potentially compromising cloud application deployments and operational security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:cloudflare)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{37})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"cloudflare\"\n ]\n },\n {\n \"id\": \"cloudflare-origin-ca-key\",\n \"description\": \"Detected a Cloudflare Origin CA Key, potentially compromising cloud application deployments and operational security.\",\n \"regex\": \"\\\\b(v1\\\\.0-[a-f0-9]{24}-[a-f0-9]{146})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"cloudflare\",\n \"v1.0-\"\n ]\n },\n {\n \"id\": \"codecov-access-token\",\n \"description\": \"Found a pattern resembling a Codecov Access Token, posing a risk of unauthorized access to code coverage reports and sensitive data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:codecov)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"codecov\"\n ]\n },\n {\n \"id\": \"cohere-api-token\",\n \"description\": \"Identified a Cohere Token, posing a risk of unauthorized access to AI services and data manipulation.\",\n \"regex\": \"[\\\\w.-]{0,50}?(?i:[\\\\w.-]{0,50}?(?:cohere|CO_API_KEY)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3})(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-zA-Z0-9]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"cohere\",\n \"co_api_key\"\n ]\n },\n {\n \"id\": \"coinbase-access-token\",\n \"description\": \"Detected a Coinbase Access Token, posing a risk of unauthorized access to cryptocurrency accounts and financial transactions.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:coinbase)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9_-]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"coinbase\"\n ]\n },\n {\n \"id\": \"confluent-access-token\",\n \"description\": \"Identified a Confluent Access Token, which could compromise access to streaming data platforms and sensitive data flow.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:confluent)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{16})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"confluent\"\n ]\n },\n {\n \"id\": \"confluent-secret-key\",\n \"description\": \"Found a Confluent Secret Key, potentially risking unauthorized operations and data access within Confluent services.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:confluent)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"confluent\"\n ]\n },\n {\n \"id\": \"contentful-delivery-api-token\",\n \"description\": \"Discovered a Contentful delivery API token, posing a risk to content management systems and data integrity.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:contentful)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{43})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"contentful\"\n ]\n },\n {\n \"id\": \"curl-auth-header\",\n \"description\": \"Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource.\",\n \"regex\": \"\\\\bcurl\\\\b(?:.*?|.*?(?:[\\\\r\\\\n]{1,2}.*?){1,5})[ \\\\t\\\\n\\\\r](?:-H|--header)(?:=|[ \\\\t]{0,5})(?:\\\"(?i)(?:Authorization:[ \\\\t]{0,5}(?:Basic[ \\\\t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|(?:Api-)?Token)[ \\\\t]([\\\\w=~@.+/-]{8,})|([\\\\w=~@.+/-]{8,}))|(?:(?:X-(?:[a-z]+-)?)?(?:Api-?)?(?:Key|Token)):[ \\\\t]{0,5}([\\\\w=~@.+/-]{8,}))\\\"|'(?i)(?:Authorization:[ \\\\t]{0,5}(?:Basic[ \\\\t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|(?:Api-)?Token)[ \\\\t]([\\\\w=~@.+/-]{8,})|([\\\\w=~@.+/-]{8,}))|(?:(?:X-(?:[a-z]+-)?)?(?:Api-?)?(?:Key|Token)):[ \\\\t]{0,5}([\\\\w=~@.+/-]{8,}))')(?:\\\\B|\\\\s|\\\\z)\",\n \"entropy\": 2.75,\n \"keywords\": [\n \"curl\"\n ]\n },\n {\n \"id\": \"curl-auth-user\",\n \"description\": \"Discovered a potential basic authorization token provided in a curl command, which could compromise the curl accessed resource.\",\n \"regex\": \"\\\\bcurl\\\\b(?:.*|.*(?:[\\\\r\\\\n]{1,2}.*){1,5})[ \\\\t\\\\n\\\\r](?:-u|--user)(?:=|[ \\\\t]{0,5})(\\\"(:[^\\\"]{3,}|[^:\\\"]{3,}:|[^:\\\"]{3,}:[^\\\"]{3,})\\\"|'([^:']{3,}:[^']{3,})'|((?:\\\"[^\\\"]{3,}\\\"|'[^']{3,}'|[\\\\w$@.-]+):(?:\\\"[^\\\"]{3,}\\\"|'[^']{3,}'|[\\\\w${}@.-]+)))(?:\\\\s|\\\\z)\",\n \"entropy\": 2,\n \"keywords\": [\n \"curl\"\n ]\n },\n {\n \"id\": \"databricks-api-token\",\n \"description\": \"Uncovered a Databricks API token, which may compromise big data analytics platforms and sensitive data processing.\",\n \"regex\": \"\\\\b(dapi[a-f0-9]{32}(?:-\\\\d)?)(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"dapi\"\n ]\n },\n {\n \"id\": \"datadog-access-token\",\n \"description\": \"Detected a Datadog Access Token, potentially risking monitoring and analytics data exposure and manipulation.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:datadog)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"datadog\"\n ]\n },\n {\n \"id\": \"defined-networking-api-token\",\n \"description\": \"Identified a Defined Networking API token, which could lead to unauthorized network operations and data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:dnkey)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(dnkey-[a-z0-9=_\\\\-]{26}-[a-z0-9=_\\\\-]{52})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"dnkey\"\n ]\n },\n {\n \"id\": \"digitalocean-access-token\",\n \"description\": \"Found a DigitalOcean OAuth Access Token, risking unauthorized cloud resource access and data compromise.\",\n \"regex\": \"\\\\b(doo_v1_[a-f0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"doo_v1_\"\n ]\n },\n {\n \"id\": \"digitalocean-pat\",\n \"description\": \"Discovered a DigitalOcean Personal Access Token, posing a threat to cloud infrastructure security and data privacy.\",\n \"regex\": \"\\\\b(dop_v1_[a-f0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"dop_v1_\"\n ]\n },\n {\n \"id\": \"digitalocean-refresh-token\",\n \"description\": \"Uncovered a DigitalOcean OAuth Refresh Token, which could allow prolonged unauthorized access and resource manipulation.\",\n \"regex\": \"(?i)\\\\b(dor_v1_[a-f0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"dor_v1_\"\n ]\n },\n {\n \"id\": \"discord-api-token\",\n \"description\": \"Detected a Discord API key, potentially compromising communication channels and user data privacy on Discord.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:discord)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"discord\"\n ]\n },\n {\n \"id\": \"discord-client-id\",\n \"description\": \"Identified a Discord client ID, which may lead to unauthorized integrations and data exposure in Discord applications.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:discord)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9]{18})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"discord\"\n ]\n },\n {\n \"id\": \"discord-client-secret\",\n \"description\": \"Discovered a potential Discord client secret, risking compromised Discord bot integrations and data leaks.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:discord)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"discord\"\n ]\n },\n {\n \"id\": \"doppler-api-token\",\n \"description\": \"Discovered a Doppler API token, posing a risk to environment and secrets management security.\",\n \"regex\": \"dp\\\\.pt\\\\.(?i)[a-z0-9]{43}\",\n \"entropy\": 2,\n \"keywords\": [\n \"dp.pt.\"\n ]\n },\n {\n \"id\": \"droneci-access-token\",\n \"description\": \"Detected a Droneci Access Token, potentially compromising continuous integration and deployment workflows.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:droneci)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"droneci\"\n ]\n },\n {\n \"id\": \"dropbox-api-token\",\n \"description\": \"Identified a Dropbox API secret, which could lead to unauthorized file access and data breaches in Dropbox storage.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:dropbox)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{15})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"dropbox\"\n ]\n },\n {\n \"id\": \"dropbox-long-lived-api-token\",\n \"description\": \"Found a Dropbox long-lived API token, risking prolonged unauthorized access to cloud storage and sensitive data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:dropbox)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{11}(AAAAAAAAAA)[a-z0-9\\\\-_=]{43})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"dropbox\"\n ]\n },\n {\n \"id\": \"dropbox-short-lived-api-token\",\n \"description\": \"Discovered a Dropbox short-lived API token, posing a risk of temporary but potentially harmful data access and manipulation.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:dropbox)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(sl\\\\.[a-z0-9\\\\-=_]{135})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"dropbox\"\n ]\n },\n {\n \"id\": \"duffel-api-token\",\n \"description\": \"Uncovered a Duffel API token, which may compromise travel platform integrations and sensitive customer data.\",\n \"regex\": \"duffel_(?:test|live)_(?i)[a-z0-9_\\\\-=]{43}\",\n \"entropy\": 2,\n \"keywords\": [\n \"duffel_\"\n ]\n },\n {\n \"id\": \"dynatrace-api-token\",\n \"description\": \"Detected a Dynatrace API token, potentially risking application performance monitoring and data exposure.\",\n \"regex\": \"dt0c01\\\\.(?i)[a-z0-9]{24}\\\\.[a-z0-9]{64}\",\n \"entropy\": 4,\n \"keywords\": [\n \"dt0c01.\"\n ]\n },\n {\n \"id\": \"easypost-api-token\",\n \"description\": \"Identified an EasyPost API token, which could lead to unauthorized postal and shipment service access and data exposure.\",\n \"regex\": \"\\\\bEZAK(?i)[a-z0-9]{54}\\\\b\",\n \"entropy\": 2,\n \"keywords\": [\n \"ezak\"\n ]\n },\n {\n \"id\": \"easypost-test-api-token\",\n \"description\": \"Detected an EasyPost test API token, risking exposure of test environments and potentially sensitive shipment data.\",\n \"regex\": \"\\\\bEZTK(?i)[a-z0-9]{54}\\\\b\",\n \"entropy\": 2,\n \"keywords\": [\n \"eztk\"\n ]\n },\n {\n \"id\": \"etsy-access-token\",\n \"description\": \"Found an Etsy Access Token, potentially compromising Etsy shop management and customer data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:(?-i:ETSY|[Ee]tsy))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{24})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"etsy\"\n ]\n },\n {\n \"id\": \"facebook-access-token\",\n \"description\": \"Discovered a Facebook Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure.\",\n \"regex\": \"(?i)\\\\b(\\\\d{15,16}(\\\\||%)[0-9a-z\\\\-_]{27,40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"facebook\"\n ]\n },\n {\n \"id\": \"facebook-page-access-token\",\n \"description\": \"Discovered a Facebook Page Access Token, posing a risk of unauthorized access to Facebook accounts and personal data exposure.\",\n \"regex\": \"\\\\b(EAA[MC](?i)[a-z0-9]{100,})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"eaam\",\n \"eaac\"\n ]\n },\n {\n \"id\": \"facebook-secret\",\n \"description\": \"Discovered a Facebook Application secret, posing a risk of unauthorized access to Facebook accounts and personal data exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:facebook)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"facebook\"\n ]\n },\n {\n \"id\": \"fastly-api-token\",\n \"description\": \"Uncovered a Fastly API key, which may compromise CDN and edge cloud services, leading to content delivery and security issues.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:fastly)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"fastly\"\n ]\n },\n {\n \"id\": \"finicity-api-token\",\n \"description\": \"Detected a Finicity API token, potentially risking financial data access and unauthorized financial operations.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:finicity)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"finicity\"\n ]\n },\n {\n \"id\": \"finicity-client-secret\",\n \"description\": \"Identified a Finicity Client Secret, which could lead to compromised financial service integrations and data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:finicity)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{20})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"finicity\"\n ]\n },\n {\n \"id\": \"finnhub-access-token\",\n \"description\": \"Found a Finnhub Access Token, risking unauthorized access to financial market data and analytics.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:finnhub)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{20})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"finnhub\"\n ]\n },\n {\n \"id\": \"flickr-access-token\",\n \"description\": \"Discovered a Flickr Access Token, posing a risk of unauthorized photo management and potential data leakage.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:flickr)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"flickr\"\n ]\n },\n {\n \"id\": \"flutterwave-encryption-key\",\n \"description\": \"Uncovered a Flutterwave Encryption Key, which may compromise payment processing and sensitive financial information.\",\n \"regex\": \"FLWSECK_TEST-(?i)[a-h0-9]{12}\",\n \"entropy\": 2,\n \"keywords\": [\n \"flwseck_test\"\n ]\n },\n {\n \"id\": \"flutterwave-public-key\",\n \"description\": \"Detected a Finicity Public Key, potentially exposing public cryptographic operations and integrations.\",\n \"regex\": \"FLWPUBK_TEST-(?i)[a-h0-9]{32}-X\",\n \"entropy\": 2,\n \"keywords\": [\n \"flwpubk_test\"\n ]\n },\n {\n \"id\": \"flutterwave-secret-key\",\n \"description\": \"Identified a Flutterwave Secret Key, risking unauthorized financial transactions and data breaches.\",\n \"regex\": \"FLWSECK_TEST-(?i)[a-h0-9]{32}-X\",\n \"entropy\": 2,\n \"keywords\": [\n \"flwseck_test\"\n ]\n },\n {\n \"id\": \"flyio-access-token\",\n \"description\": \"Uncovered a Fly.io API key\",\n \"regex\": \"\\\\b((?:fo1_[\\\\w-]{43}|fm1[ar]_[a-zA-Z0-9+\\\\/]{100,}={0,3}|fm2_[a-zA-Z0-9+\\\\/]{100,}={0,3}))(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"fo1_\",\n \"fm1\",\n \"fm2_\"\n ]\n },\n {\n \"id\": \"frameio-api-token\",\n \"description\": \"Found a Frame.io API token, potentially compromising video collaboration and project management.\",\n \"regex\": \"fio-u-(?i)[a-z0-9\\\\-_=]{64}\",\n \"keywords\": [\n \"fio-u-\"\n ]\n },\n {\n \"id\": \"freemius-secret-key\",\n \"description\": \"Detected a Freemius secret key, potentially exposing sensitive information.\",\n \"regex\": \"(?i)[\\\"']secret_key[\\\"']\\\\s*=>\\\\s*[\\\"'](sk_[\\\\S]{29})[\\\"']\",\n \"keywords\": [\n \"secret_key\"\n ]\n },\n {\n \"id\": \"freshbooks-access-token\",\n \"description\": \"Discovered a Freshbooks Access Token, posing a risk to accounting software access and sensitive financial data exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:freshbooks)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"freshbooks\"\n ]\n },\n {\n \"id\": \"gcp-api-key\",\n \"description\": \"Uncovered a GCP API key, which could lead to unauthorized access to Google Cloud services and data breaches.\",\n \"regex\": \"\\\\b(AIza[\\\\w-]{35})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"aiza\"\n ]\n },\n {\n \"id\": \"generic-api-key\",\n \"description\": \"Detected a Generic API Key, potentially exposing access to various services and sensitive operations.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:access|auth|(?-i:[Aa]pi|API)|credential|creds|key|passw(?:or)?d|secret|token)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([\\\\w.=-]{10,150}|[a-z0-9][a-z0-9+/]{11,}={0,3})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"access\",\n \"api\",\n \"auth\",\n \"key\",\n \"credential\",\n \"creds\",\n \"passwd\",\n \"password\",\n \"secret\",\n \"token\"\n ]\n },\n {\n \"id\": \"github-app-token\",\n \"description\": \"Identified a GitHub App Token, which may compromise GitHub application integrations and source code security.\",\n \"regex\": \"(?:ghu|ghs)_[0-9a-zA-Z]{36}\",\n \"entropy\": 3,\n \"keywords\": [\n \"ghu_\",\n \"ghs_\"\n ]\n },\n {\n \"id\": \"github-fine-grained-pat\",\n \"description\": \"Found a GitHub Fine-Grained Personal Access Token, risking unauthorized repository access and code manipulation.\",\n \"regex\": \"github_pat_\\\\w{82}\",\n \"entropy\": 3,\n \"keywords\": [\n \"github_pat_\"\n ]\n },\n {\n \"id\": \"github-oauth\",\n \"description\": \"Discovered a GitHub OAuth Access Token, posing a risk of compromised GitHub account integrations and data leaks.\",\n \"regex\": \"gho_[0-9a-zA-Z]{36}\",\n \"entropy\": 3,\n \"keywords\": [\n \"gho_\"\n ]\n },\n {\n \"id\": \"github-pat\",\n \"description\": \"Uncovered a GitHub Personal Access Token, potentially leading to unauthorized repository access and sensitive content exposure.\",\n \"regex\": \"ghp_[0-9a-zA-Z]{36}\",\n \"entropy\": 3,\n \"keywords\": [\n \"ghp_\"\n ]\n },\n {\n \"id\": \"github-refresh-token\",\n \"description\": \"Detected a GitHub Refresh Token, which could allow prolonged unauthorized access to GitHub services.\",\n \"regex\": \"ghr_[0-9a-zA-Z]{36}\",\n \"entropy\": 3,\n \"keywords\": [\n \"ghr_\"\n ]\n },\n {\n \"id\": \"gitlab-cicd-job-token\",\n \"description\": \"Identified a GitLab CI/CD Job Token, potential access to projects and some APIs on behalf of a user while the CI job is running.\",\n \"regex\": \"glcbt-[0-9a-zA-Z]{1,5}_[0-9a-zA-Z_-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glcbt-\"\n ]\n },\n {\n \"id\": \"gitlab-deploy-token\",\n \"description\": \"Identified a GitLab Deploy Token, risking access to repositories, packages and containers with write access.\",\n \"regex\": \"gldt-[0-9a-zA-Z_\\\\-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"gldt-\"\n ]\n },\n {\n \"id\": \"gitlab-feature-flag-client-token\",\n \"description\": \"Identified a GitLab feature flag client token, risks exposing user lists and features flags used by an application.\",\n \"regex\": \"glffct-[0-9a-zA-Z_\\\\-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glffct-\"\n ]\n },\n {\n \"id\": \"gitlab-feed-token\",\n \"description\": \"Identified a GitLab feed token, risking exposure of user data.\",\n \"regex\": \"glft-[0-9a-zA-Z_\\\\-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glft-\"\n ]\n },\n {\n \"id\": \"gitlab-incoming-mail-token\",\n \"description\": \"Identified a GitLab incoming mail token, risking manipulation of data sent by mail.\",\n \"regex\": \"glimt-[0-9a-zA-Z_\\\\-]{25}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glimt-\"\n ]\n },\n {\n \"id\": \"gitlab-kubernetes-agent-token\",\n \"description\": \"Identified a GitLab Kubernetes Agent token, risking access to repos and registry of projects connected via agent.\",\n \"regex\": \"glagent-[0-9a-zA-Z_\\\\-]{50}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glagent-\"\n ]\n },\n {\n \"id\": \"gitlab-oauth-app-secret\",\n \"description\": \"Identified a GitLab OIDC Application Secret, risking access to apps using GitLab as authentication provider.\",\n \"regex\": \"gloas-[0-9a-zA-Z_\\\\-]{64}\",\n \"entropy\": 3,\n \"keywords\": [\n \"gloas-\"\n ]\n },\n {\n \"id\": \"gitlab-pat\",\n \"description\": \"Identified a GitLab Personal Access Token, risking unauthorized access to GitLab repositories and codebase exposure.\",\n \"regex\": \"glpat-[\\\\w-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glpat-\"\n ]\n },\n {\n \"id\": \"gitlab-pat-routable\",\n \"description\": \"Identified a GitLab Personal Access Token (routable), risking unauthorized access to GitLab repositories and codebase exposure.\",\n \"regex\": \"\\\\bglpat-[0-9a-zA-Z_-]{27,300}\\\\.[0-9a-z]{2}[0-9a-z]{7}\\\\b\",\n \"entropy\": 4,\n \"keywords\": [\n \"glpat-\"\n ]\n },\n {\n \"id\": \"gitlab-ptt\",\n \"description\": \"Found a GitLab Pipeline Trigger Token, potentially compromising continuous integration workflows and project security.\",\n \"regex\": \"glptt-[0-9a-f]{40}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glptt-\"\n ]\n },\n {\n \"id\": \"gitlab-rrt\",\n \"description\": \"Discovered a GitLab Runner Registration Token, posing a risk to CI/CD pipeline integrity and unauthorized access.\",\n \"regex\": \"GR1348941[\\\\w-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"gr1348941\"\n ]\n },\n {\n \"id\": \"gitlab-runner-authentication-token\",\n \"description\": \"Discovered a GitLab Runner Authentication Token, posing a risk to CI/CD pipeline integrity and unauthorized access.\",\n \"regex\": \"glrt-[0-9a-zA-Z_\\\\-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glrt-\"\n ]\n },\n {\n \"id\": \"gitlab-runner-authentication-token-routable\",\n \"description\": \"Discovered a GitLab Runner Authentication Token (Routable), posing a risk to CI/CD pipeline integrity and unauthorized access.\",\n \"regex\": \"\\\\bglrt-t\\\\d_[0-9a-zA-Z_\\\\-]{27,300}\\\\.[0-9a-z]{2}[0-9a-z]{7}\\\\b\",\n \"entropy\": 4,\n \"keywords\": [\n \"glrt-\"\n ]\n },\n {\n \"id\": \"gitlab-scim-token\",\n \"description\": \"Discovered a GitLab SCIM Token, posing a risk to unauthorized access for a organization or instance.\",\n \"regex\": \"glsoat-[0-9a-zA-Z_\\\\-]{20}\",\n \"entropy\": 3,\n \"keywords\": [\n \"glsoat-\"\n ]\n },\n {\n \"id\": \"gitlab-session-cookie\",\n \"description\": \"Discovered a GitLab Session Cookie, posing a risk to unauthorized access to a user account.\",\n \"regex\": \"_gitlab_session=[0-9a-z]{32}\",\n \"entropy\": 3,\n \"keywords\": [\n \"_gitlab_session=\"\n ]\n },\n {\n \"id\": \"gitter-access-token\",\n \"description\": \"Uncovered a Gitter Access Token, which may lead to unauthorized access to chat and communication services.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:gitter)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9_-]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"gitter\"\n ]\n },\n {\n \"id\": \"gocardless-api-token\",\n \"description\": \"Detected a GoCardless API token, potentially risking unauthorized direct debit payment operations and financial data exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:gocardless)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(live_(?i)[a-z0-9\\\\-_=]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"live_\",\n \"gocardless\"\n ]\n },\n {\n \"id\": \"grafana-api-key\",\n \"description\": \"Identified a Grafana API key, which could compromise monitoring dashboards and sensitive data analytics.\",\n \"regex\": \"(?i)\\\\b(eyJrIjoi[A-Za-z0-9]{70,400}={0,3})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"eyjrijoi\"\n ]\n },\n {\n \"id\": \"grafana-cloud-api-token\",\n \"description\": \"Found a Grafana cloud API token, risking unauthorized access to cloud-based monitoring services and data exposure.\",\n \"regex\": \"(?i)\\\\b(glc_[A-Za-z0-9+/]{32,400}={0,3})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"glc_\"\n ]\n },\n {\n \"id\": \"grafana-service-account-token\",\n \"description\": \"Discovered a Grafana service account token, posing a risk of compromised monitoring services and data integrity.\",\n \"regex\": \"(?i)\\\\b(glsa_[A-Za-z0-9]{32}_[A-Fa-f0-9]{8})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"glsa_\"\n ]\n },\n {\n \"id\": \"harness-api-key\",\n \"description\": \"Identified a Harness Access Token (PAT or SAT), risking unauthorized access to a Harness account.\",\n \"regex\": \"(?:pat|sat)\\\\.[a-zA-Z0-9_-]{22}\\\\.[a-zA-Z0-9]{24}\\\\.[a-zA-Z0-9]{20}\",\n \"keywords\": [\n \"pat.\",\n \"sat.\"\n ]\n },\n {\n \"id\": \"hashicorp-tf-api-token\",\n \"description\": \"Uncovered a HashiCorp Terraform user/org API token, which may lead to unauthorized infrastructure management and security breaches.\",\n \"regex\": \"(?i)[a-z0-9]{14}\\\\.(?-i:atlasv1)\\\\.[a-z0-9\\\\-_=]{60,70}\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"atlasv1\"\n ]\n },\n {\n \"id\": \"hashicorp-tf-password\",\n \"description\": \"Identified a HashiCorp Terraform password field, risking unauthorized infrastructure configuration and security breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:administrator_login_password|password)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(\\\"[a-z0-9=_\\\\-]{8,20}\\\")(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"administrator_login_password\",\n \"password\"\n ]\n },\n {\n \"id\": \"heroku-api-key\",\n \"description\": \"Detected a Heroku API Key, potentially compromising cloud application deployments and operational security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:heroku)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"heroku\"\n ]\n },\n {\n \"id\": \"heroku-api-key-v2\",\n \"description\": \"Detected a Heroku API Key, potentially compromising cloud application deployments and operational security.\",\n \"regex\": \"\\\\b((HRKU-AA[0-9a-zA-Z_-]{58}))(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"hrku-aa\"\n ]\n },\n {\n \"id\": \"hubspot-api-key\",\n \"description\": \"Found a HubSpot API Token, posing a risk to CRM data integrity and unauthorized marketing operations.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:hubspot)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"hubspot\"\n ]\n },\n {\n \"id\": \"huggingface-access-token\",\n \"description\": \"Discovered a Hugging Face Access token, which could lead to unauthorized access to AI models and sensitive data.\",\n \"regex\": \"\\\\b(hf_(?i:[a-z]{34}))(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"hf_\"\n ]\n },\n {\n \"id\": \"huggingface-organization-api-token\",\n \"description\": \"Uncovered a Hugging Face Organization API token, potentially compromising AI organization accounts and associated data.\",\n \"regex\": \"\\\\b(api_org_(?i:[a-z]{34}))(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"api_org_\"\n ]\n },\n {\n \"id\": \"infracost-api-token\",\n \"description\": \"Detected an Infracost API Token, risking unauthorized access to cloud cost estimation tools and financial data.\",\n \"regex\": \"\\\\b(ico-[a-zA-Z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"ico-\"\n ]\n },\n {\n \"id\": \"intercom-api-key\",\n \"description\": \"Identified an Intercom API Token, which could compromise customer communication channels and data privacy.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:intercom)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{60})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"intercom\"\n ]\n },\n {\n \"id\": \"intra42-client-secret\",\n \"description\": \"Found a Intra42 client secret, which could lead to unauthorized access to the 42School API and sensitive data.\",\n \"regex\": \"\\\\b(s-s4t2(?:ud|af)-(?i)[abcdef0123456789]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"intra\",\n \"s-s4t2ud-\",\n \"s-s4t2af-\"\n ]\n },\n {\n \"id\": \"jfrog-api-key\",\n \"description\": \"Found a JFrog API Key, posing a risk of unauthorized access to software artifact repositories and build pipelines.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:jfrog|artifactory|bintray|xray)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{73})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"jfrog\",\n \"artifactory\",\n \"bintray\",\n \"xray\"\n ]\n },\n {\n \"id\": \"jfrog-identity-token\",\n \"description\": \"Discovered a JFrog Identity Token, potentially compromising access to JFrog services and sensitive software artifacts.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:jfrog|artifactory|bintray|xray)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"jfrog\",\n \"artifactory\",\n \"bintray\",\n \"xray\"\n ]\n },\n {\n \"id\": \"jwt\",\n \"description\": \"Uncovered a JSON Web Token, which may lead to unauthorized access to web applications and sensitive user data.\",\n \"regex\": \"\\\\b(ey[a-zA-Z0-9]{17,}\\\\.ey[a-zA-Z0-9\\\\/\\\\\\\\_-]{17,}\\\\.(?:[a-zA-Z0-9\\\\/\\\\\\\\_-]{10,}={0,2})?)(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"ey\"\n ]\n },\n {\n \"id\": \"jwt-base64\",\n \"description\": \"Detected a Base64-encoded JSON Web Token, posing a risk of exposing encoded authentication and data exchange information.\",\n \"regex\": \"\\\\bZXlK(?:(?P<alg>aGJHY2lPaU)|(?P<apu>aGNIVWlPaU)|(?P<apv>aGNIWWlPaU)|(?P<aud>aGRXUWlPaU)|(?P<b64>aU5qUWlP)|(?P<crit>amNtbDBJanBi)|(?P<cty>amRIa2lPaU)|(?P<epk>bGNHc2lPbn)|(?P<enc>bGJtTWlPaU)|(?P<jku>cWEzVWlPaU)|(?P<jwk>cWQyc2lPb)|(?P<iss>cGMzTWlPaU)|(?P<iv>cGRpSTZJ)|(?P<kid>cmFXUWlP)|(?P<key_ops>clpYbGZiM0J6SWpwY)|(?P<kty>cmRIa2lPaUp)|(?P<nonce>dWIyNWpaU0k2)|(?P<p2c>d01tTWlP)|(?P<p2s>d01uTWlPaU)|(?P<ppt>d2NIUWlPaU)|(?P<sub>emRXSWlPaU)|(?P<svt>emRuUWlP)|(?P<tag>MFlXY2lPaU)|(?P<typ>MGVYQWlPaUp)|(?P<url>MWNtd2l)|(?P<use>MWMyVWlPaUp)|(?P<ver>MlpYSWlPaU)|(?P<version>MlpYSnphVzl1SWpv)|(?P<x>NElqb2)|(?P<x5c>NE5XTWlP)|(?P<x5t>NE5YUWlPaU)|(?P<x5ts256>NE5YUWpVekkxTmlJNkl)|(?P<x5u>NE5YVWlPaU)|(?P<zip>NmFYQWlPaU))[a-zA-Z0-9\\\\/\\\\\\\\_+\\\\-\\\\r\\\\n]{40,}={0,2}\",\n \"entropy\": 2,\n \"keywords\": [\n \"zxlk\"\n ]\n },\n {\n \"id\": \"kraken-access-token\",\n \"description\": \"Identified a Kraken Access Token, potentially compromising cryptocurrency trading accounts and financial security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:kraken)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9\\\\/=_\\\\+\\\\-]{80,90})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"kraken\"\n ]\n },\n {\n \"id\": \"kubernetes-secret-yaml\",\n \"description\": \"Possible Kubernetes Secret detected, posing a risk of leaking credentials/tokens from your deployments\",\n \"regex\": \"(?i)(?:\\\\bkind:[ \\\\t]*[\\\"']?\\\\bsecret\\\\b[\\\"']?(?s:.){0,200}?\\\\bdata:(?s:.){0,100}?\\\\s+([\\\\w.-]+:(?:[ \\\\t]*(?:\\\\||>[-+]?)\\\\s+)?[ \\\\t]*(?:[\\\"']?[a-z0-9+/]{10,}={0,3}[\\\"']?|\\\\{\\\\{[ \\\\t\\\\w\\\"|$:=,.-]+}}|\\\"\\\"|''))|\\\\bdata:(?s:.){0,100}?\\\\s+([\\\\w.-]+:(?:[ \\\\t]*(?:\\\\||>[-+]?)\\\\s+)?[ \\\\t]*(?:[\\\"']?[a-z0-9+/]{10,}={0,3}[\\\"']?|\\\\{\\\\{[ \\\\t\\\\w\\\"|$:=,.-]+}}|\\\"\\\"|''))(?s:.){0,200}?\\\\bkind:[ \\\\t]*[\\\"']?\\\\bsecret\\\\b[\\\"']?)\",\n \"keywords\": [\n \"secret\"\n ]\n },\n {\n \"id\": \"kucoin-access-token\",\n \"description\": \"Found a Kucoin Access Token, risking unauthorized access to cryptocurrency exchange services and transactions.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:kucoin)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{24})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"kucoin\"\n ]\n },\n {\n \"id\": \"kucoin-secret-key\",\n \"description\": \"Discovered a Kucoin Secret Key, which could lead to compromised cryptocurrency operations and financial data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:kucoin)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"kucoin\"\n ]\n },\n {\n \"id\": \"launchdarkly-access-token\",\n \"description\": \"Uncovered a Launchdarkly Access Token, potentially compromising feature flag management and application functionality.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:launchdarkly)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"launchdarkly\"\n ]\n },\n {\n \"id\": \"linear-api-key\",\n \"description\": \"Detected a Linear API Token, posing a risk to project management tools and sensitive task data.\",\n \"regex\": \"lin_api_(?i)[a-z0-9]{40}\",\n \"entropy\": 2,\n \"keywords\": [\n \"lin_api_\"\n ]\n },\n {\n \"id\": \"linear-client-secret\",\n \"description\": \"Identified a Linear Client Secret, which may compromise secure integrations and sensitive project management data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:linear)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"linear\"\n ]\n },\n {\n \"id\": \"linkedin-client-id\",\n \"description\": \"Found a LinkedIn Client ID, risking unauthorized access to LinkedIn integrations and professional data exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:linked[_-]?in)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{14})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"linkedin\",\n \"linked_in\",\n \"linked-in\"\n ]\n },\n {\n \"id\": \"linkedin-client-secret\",\n \"description\": \"Discovered a LinkedIn Client secret, potentially compromising LinkedIn application integrations and user data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:linked[_-]?in)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{16})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"linkedin\",\n \"linked_in\",\n \"linked-in\"\n ]\n },\n {\n \"id\": \"lob-api-key\",\n \"description\": \"Uncovered a Lob API Key, which could lead to unauthorized access to mailing and address verification services.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:lob)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}((live|test)_[a-f0-9]{35})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"test_\",\n \"live_\"\n ]\n },\n {\n \"id\": \"lob-pub-api-key\",\n \"description\": \"Detected a Lob Publishable API Key, posing a risk of exposing mail and print service integrations.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:lob)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}((test|live)_pub_[a-f0-9]{31})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"test_pub\",\n \"live_pub\",\n \"_pub\"\n ]\n },\n {\n \"id\": \"looker-client-id\",\n \"description\": \"Found a Looker Client ID, risking unauthorized access to a Looker account and exposing sensitive data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:looker)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{20})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"looker\"\n ]\n },\n {\n \"id\": \"looker-client-secret\",\n \"description\": \"Found a Looker Client Secret, risking unauthorized access to a Looker account and exposing sensitive data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:looker)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{24})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"looker\"\n ]\n },\n {\n \"id\": \"mailchimp-api-key\",\n \"description\": \"Identified a Mailchimp API key, potentially compromising email marketing campaigns and subscriber data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:MailchimpSDK.initialize|mailchimp)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{32}-us\\\\d\\\\d)(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"mailchimp\"\n ]\n },\n {\n \"id\": \"mailgun-private-api-token\",\n \"description\": \"Found a Mailgun private API token, risking unauthorized email service operations and data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:mailgun)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(key-[a-f0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"mailgun\"\n ]\n },\n {\n \"id\": \"mailgun-pub-key\",\n \"description\": \"Discovered a Mailgun public validation key, which could expose email verification processes and associated data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:mailgun)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(pubkey-[a-f0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"mailgun\"\n ]\n },\n {\n \"id\": \"mailgun-signing-key\",\n \"description\": \"Uncovered a Mailgun webhook signing key, potentially compromising email automation and data integrity.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:mailgun)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"mailgun\"\n ]\n },\n {\n \"id\": \"mapbox-api-token\",\n \"description\": \"Detected a MapBox API token, posing a risk to geospatial services and sensitive location data exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:mapbox)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(pk\\\\.[a-z0-9]{60}\\\\.[a-z0-9]{22})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"mapbox\"\n ]\n },\n {\n \"id\": \"mattermost-access-token\",\n \"description\": \"Identified a Mattermost Access Token, which may compromise team communication channels and data privacy.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:mattermost)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{26})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"mattermost\"\n ]\n },\n {\n \"id\": \"maxmind-license-key\",\n \"description\": \"Discovered a potential MaxMind license key.\",\n \"regex\": \"\\\\b([A-Za-z0-9]{6}_[A-Za-z0-9]{29}_mmk)(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"_mmk\"\n ]\n },\n {\n \"id\": \"messagebird-api-token\",\n \"description\": \"Found a MessageBird API token, risking unauthorized access to communication platforms and message data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:message[_-]?bird)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{25})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"messagebird\",\n \"message-bird\",\n \"message_bird\"\n ]\n },\n {\n \"id\": \"messagebird-client-id\",\n \"description\": \"Discovered a MessageBird client ID, potentially compromising API integrations and sensitive communication data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:message[_-]?bird)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"messagebird\",\n \"message-bird\",\n \"message_bird\"\n ]\n },\n {\n \"id\": \"microsoft-teams-webhook\",\n \"description\": \"Uncovered a Microsoft Teams Webhook, which could lead to unauthorized access to team collaboration tools and data leaks.\",\n \"regex\": \"https://[a-z0-9]+\\\\.webhook\\\\.office\\\\.com/webhookb2/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}/IncomingWebhook/[a-z0-9]{32}/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}\",\n \"keywords\": [\n \"webhook.office.com\",\n \"webhookb2\",\n \"incomingwebhook\"\n ]\n },\n {\n \"id\": \"netlify-access-token\",\n \"description\": \"Detected a Netlify Access Token, potentially compromising web hosting services and site management.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:netlify)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{40,46})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"netlify\"\n ]\n },\n {\n \"id\": \"new-relic-browser-api-token\",\n \"description\": \"Identified a New Relic ingest browser API token, risking unauthorized access to application performance data and analytics.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(NRJS-[a-f0-9]{19})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"nrjs-\"\n ]\n },\n {\n \"id\": \"new-relic-insert-key\",\n \"description\": \"Discovered a New Relic insight insert key, compromising data injection into the platform.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(NRII-[a-z0-9-]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"nrii-\"\n ]\n },\n {\n \"id\": \"new-relic-user-api-id\",\n \"description\": \"Found a New Relic user API ID, posing a risk to application monitoring services and data integrity.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"new-relic\",\n \"newrelic\",\n \"new_relic\"\n ]\n },\n {\n \"id\": \"new-relic-user-api-key\",\n \"description\": \"Discovered a New Relic user API Key, which could lead to compromised application insights and performance monitoring.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(NRAK-[a-z0-9]{27})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"nrak\"\n ]\n },\n {\n \"id\": \"notion-api-token\",\n \"description\": \"Notion API token\",\n \"regex\": \"\\\\b(ntn_[0-9]{11}[A-Za-z0-9]{32}[A-Za-z0-9]{3})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"ntn_\"\n ]\n },\n {\n \"id\": \"npm-access-token\",\n \"description\": \"Uncovered an npm access token, potentially compromising package management and code repository access.\",\n \"regex\": \"(?i)\\\\b(npm_[a-z0-9]{36})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"npm_\"\n ]\n },\n {\n \"id\": \"nuget-config-password\",\n \"description\": \"Identified a password within a Nuget config file, potentially compromising package management access.\",\n \"regex\": \"(?i)<add key=\\\\\\\"(?:(?:ClearText)?Password)\\\\\\\"\\\\s*value=\\\\\\\"(.{8,})\\\\\\\"\\\\s*/>\",\n \"entropy\": 1,\n \"keywords\": [\n \"<add key=\"\n ]\n },\n {\n \"id\": \"nytimes-access-token\",\n \"description\": \"Detected a Nytimes Access Token, risking unauthorized access to New York Times APIs and content services.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:nytimes|new-york-times,|newyorktimes)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9=_\\\\-]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"nytimes\",\n \"new-york-times\",\n \"newyorktimes\"\n ]\n },\n {\n \"id\": \"octopus-deploy-api-key\",\n \"description\": \"Discovered a potential Octopus Deploy API key, risking application deployments and operational security.\",\n \"regex\": \"\\\\b(API-[A-Z0-9]{26})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"api-\"\n ]\n },\n {\n \"id\": \"okta-access-token\",\n \"description\": \"Identified an Okta Access Token, which may compromise identity management services and user authentication data.\",\n \"regex\": \"[\\\\w.-]{0,50}?(?i:[\\\\w.-]{0,50}?(?:(?-i:[Oo]kta|OKTA))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3})(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(00[\\\\w=\\\\-]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"okta\"\n ]\n },\n {\n \"id\": \"openai-api-key\",\n \"description\": \"Found an OpenAI API Key, posing a risk of unauthorized access to AI services and data manipulation.\",\n \"regex\": \"\\\\b(sk-(?:proj|svcacct|admin)-(?:[A-Za-z0-9_-]{74}|[A-Za-z0-9_-]{58})T3BlbkFJ(?:[A-Za-z0-9_-]{74}|[A-Za-z0-9_-]{58})\\\\b|sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"t3blbkfj\"\n ]\n },\n {\n \"id\": \"openshift-user-token\",\n \"description\": \"Found an OpenShift user token, potentially compromising an OpenShift/Kubernetes cluster.\",\n \"regex\": \"\\\\b(sha256~[\\\\w-]{43})(?:[^\\\\w-]|\\\\z)\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"sha256~\"\n ]\n },\n {\n \"id\": \"perplexity-api-key\",\n \"description\": \"Detected a Perplexity API key, which could lead to unauthorized access to Perplexity AI services and data exposure.\",\n \"regex\": \"\\\\b(pplx-[a-zA-Z0-9]{48})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$|\\\\b)\",\n \"entropy\": 4,\n \"keywords\": [\n \"pplx-\"\n ]\n },\n {\n \"id\": \"pkcs12-file\",\n \"description\": \"Found a PKCS #12 file, which commonly contain bundled private keys.\"\n },\n {\n \"id\": \"plaid-api-token\",\n \"description\": \"Discovered a Plaid API Token, potentially compromising financial data aggregation and banking services.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:plaid)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(access-(?:sandbox|development|production)-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"plaid\"\n ]\n },\n {\n \"id\": \"plaid-client-id\",\n \"description\": \"Uncovered a Plaid Client ID, which could lead to unauthorized financial service integrations and data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:plaid)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{24})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"plaid\"\n ]\n },\n {\n \"id\": \"plaid-secret-key\",\n \"description\": \"Detected a Plaid Secret key, risking unauthorized access to financial accounts and sensitive transaction data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:plaid)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{30})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"plaid\"\n ]\n },\n {\n \"id\": \"planetscale-api-token\",\n \"description\": \"Identified a PlanetScale API token, potentially compromising database management and operations.\",\n \"regex\": \"\\\\b(pscale_tkn_(?i)[\\\\w=\\\\.-]{32,64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"pscale_tkn_\"\n ]\n },\n {\n \"id\": \"planetscale-oauth-token\",\n \"description\": \"Found a PlanetScale OAuth token, posing a risk to database access control and sensitive data integrity.\",\n \"regex\": \"\\\\b(pscale_oauth_[\\\\w=\\\\.-]{32,64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"pscale_oauth_\"\n ]\n },\n {\n \"id\": \"planetscale-password\",\n \"description\": \"Discovered a PlanetScale password, which could lead to unauthorized database operations and data breaches.\",\n \"regex\": \"(?i)\\\\b(pscale_pw_(?i)[\\\\w=\\\\.-]{32,64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"pscale_pw_\"\n ]\n },\n {\n \"id\": \"postman-api-token\",\n \"description\": \"Uncovered a Postman API token, potentially compromising API testing and development workflows.\",\n \"regex\": \"\\\\b(PMAK-(?i)[a-f0-9]{24}\\\\-[a-f0-9]{34})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"pmak-\"\n ]\n },\n {\n \"id\": \"prefect-api-token\",\n \"description\": \"Detected a Prefect API token, risking unauthorized access to workflow management and automation services.\",\n \"regex\": \"\\\\b(pnu_[a-zA-Z0-9]{36})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"pnu_\"\n ]\n },\n {\n \"id\": \"private-key\",\n \"description\": \"Identified a Private Key, which may compromise cryptographic security and sensitive data encryption.\",\n \"regex\": \"(?i)-----BEGIN[ A-Z0-9_-]{0,100}PRIVATE KEY(?: BLOCK)?-----[\\\\s\\\\S-]{64,}?KEY(?: BLOCK)?-----\",\n \"keywords\": [\n \"-----begin\"\n ]\n },\n {\n \"id\": \"privateai-api-token\",\n \"description\": \"Identified a PrivateAI Token, posing a risk of unauthorized access to AI services and data manipulation.\",\n \"regex\": \"[\\\\w.-]{0,50}?(?i:[\\\\w.-]{0,50}?(?:private[_-]?ai)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3})(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{32})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"privateai\",\n \"private_ai\",\n \"private-ai\"\n ]\n },\n {\n \"id\": \"pulumi-api-token\",\n \"description\": \"Found a Pulumi API token, posing a risk to infrastructure as code services and cloud resource management.\",\n \"regex\": \"\\\\b(pul-[a-f0-9]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"pul-\"\n ]\n },\n {\n \"id\": \"pypi-upload-token\",\n \"description\": \"Discovered a PyPI upload token, potentially compromising Python package distribution and repository integrity.\",\n \"regex\": \"pypi-AgEIcHlwaS5vcmc[\\\\w-]{50,1000}\",\n \"entropy\": 3,\n \"keywords\": [\n \"pypi-ageichlwas5vcmc\"\n ]\n },\n {\n \"id\": \"rapidapi-access-token\",\n \"description\": \"Uncovered a RapidAPI Access Token, which could lead to unauthorized access to various APIs and data services.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:rapidapi)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9_-]{50})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"rapidapi\"\n ]\n },\n {\n \"id\": \"readme-api-token\",\n \"description\": \"Detected a Readme API token, risking unauthorized documentation management and content exposure.\",\n \"regex\": \"\\\\b(rdme_[a-z0-9]{70})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"rdme_\"\n ]\n },\n {\n \"id\": \"rubygems-api-token\",\n \"description\": \"Identified a Rubygem API token, potentially compromising Ruby library distribution and package management.\",\n \"regex\": \"\\\\b(rubygems_[a-f0-9]{48})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"rubygems_\"\n ]\n },\n {\n \"id\": \"scalingo-api-token\",\n \"description\": \"Found a Scalingo API token, posing a risk to cloud platform services and application deployment security.\",\n \"regex\": \"\\\\b(tk-us-[\\\\w-]{48})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"tk-us-\"\n ]\n },\n {\n \"id\": \"sendbird-access-id\",\n \"description\": \"Discovered a Sendbird Access ID, which could compromise chat and messaging platform integrations.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:sendbird)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"sendbird\"\n ]\n },\n {\n \"id\": \"sendbird-access-token\",\n \"description\": \"Uncovered a Sendbird Access Token, potentially risking unauthorized access to communication services and user data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:sendbird)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"sendbird\"\n ]\n },\n {\n \"id\": \"sendgrid-api-token\",\n \"description\": \"Detected a SendGrid API token, posing a risk of unauthorized email service operations and data exposure.\",\n \"regex\": \"\\\\b(SG\\\\.(?i)[a-z0-9=_\\\\-\\\\.]{66})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"sg.\"\n ]\n },\n {\n \"id\": \"sendinblue-api-token\",\n \"description\": \"Identified a Sendinblue API token, which may compromise email marketing services and subscriber data privacy.\",\n \"regex\": \"\\\\b(xkeysib-[a-f0-9]{64}\\\\-(?i)[a-z0-9]{16})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"xkeysib-\"\n ]\n },\n {\n \"id\": \"sentry-access-token\",\n \"description\": \"Found a Sentry.io Access Token (old format), risking unauthorized access to error tracking services and sensitive application data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:sentry)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"sentry\"\n ]\n },\n {\n \"id\": \"sentry-org-token\",\n \"description\": \"Found a Sentry.io Organization Token, risking unauthorized access to error tracking services and sensitive application data.\",\n \"regex\": \"\\\\bsntrys_eyJpYXQiO[a-zA-Z0-9+/]{10,200}(?:LCJyZWdpb25fdXJs|InJlZ2lvbl91cmwi|cmVnaW9uX3VybCI6)[a-zA-Z0-9+/]{10,200}={0,2}_[a-zA-Z0-9+/]{43}(?:[^a-zA-Z0-9+/]|\\\\z)\",\n \"entropy\": 4.5,\n \"keywords\": [\n \"sntrys_eyjpyxqio\"\n ]\n },\n {\n \"id\": \"sentry-user-token\",\n \"description\": \"Found a Sentry.io User Token, risking unauthorized access to error tracking services and sensitive application data.\",\n \"regex\": \"\\\\b(sntryu_[a-f0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"sntryu_\"\n ]\n },\n {\n \"id\": \"settlemint-application-access-token\",\n \"description\": \"Found a Settlemint Application Access Token.\",\n \"regex\": \"\\\\b(sm_aat_[a-zA-Z0-9]{16})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"sm_aat\"\n ]\n },\n {\n \"id\": \"settlemint-personal-access-token\",\n \"description\": \"Found a Settlemint Personal Access Token.\",\n \"regex\": \"\\\\b(sm_pat_[a-zA-Z0-9]{16})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"sm_pat\"\n ]\n },\n {\n \"id\": \"settlemint-service-access-token\",\n \"description\": \"Found a Settlemint Service Access Token.\",\n \"regex\": \"\\\\b(sm_sat_[a-zA-Z0-9]{16})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"sm_sat\"\n ]\n },\n {\n \"id\": \"shippo-api-token\",\n \"description\": \"Discovered a Shippo API token, potentially compromising shipping services and customer order data.\",\n \"regex\": \"\\\\b(shippo_(?:live|test)_[a-fA-F0-9]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"shippo_\"\n ]\n },\n {\n \"id\": \"shopify-access-token\",\n \"description\": \"Uncovered a Shopify access token, which could lead to unauthorized e-commerce platform access and data breaches.\",\n \"regex\": \"shpat_[a-fA-F0-9]{32}\",\n \"entropy\": 2,\n \"keywords\": [\n \"shpat_\"\n ]\n },\n {\n \"id\": \"shopify-custom-access-token\",\n \"description\": \"Detected a Shopify custom access token, potentially compromising custom app integrations and e-commerce data security.\",\n \"regex\": \"shpca_[a-fA-F0-9]{32}\",\n \"entropy\": 2,\n \"keywords\": [\n \"shpca_\"\n ]\n },\n {\n \"id\": \"shopify-private-app-access-token\",\n \"description\": \"Identified a Shopify private app access token, risking unauthorized access to private app data and store operations.\",\n \"regex\": \"shppa_[a-fA-F0-9]{32}\",\n \"entropy\": 2,\n \"keywords\": [\n \"shppa_\"\n ]\n },\n {\n \"id\": \"shopify-shared-secret\",\n \"description\": \"Found a Shopify shared secret, posing a risk to application authentication and e-commerce platform security.\",\n \"regex\": \"shpss_[a-fA-F0-9]{32}\",\n \"entropy\": 2,\n \"keywords\": [\n \"shpss_\"\n ]\n },\n {\n \"id\": \"sidekiq-secret\",\n \"description\": \"Discovered a Sidekiq Secret, which could lead to compromised background job processing and application data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:BUNDLE_ENTERPRISE__CONTRIBSYS__COM|BUNDLE_GEMS__CONTRIBSYS__COM)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-f0-9]{8}:[a-f0-9]{8})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"bundle_enterprise__contribsys__com\",\n \"bundle_gems__contribsys__com\"\n ]\n },\n {\n \"id\": \"sidekiq-sensitive-url\",\n \"description\": \"Uncovered a Sidekiq Sensitive URL, potentially exposing internal job queues and sensitive operation details.\",\n \"regex\": \"(?i)\\\\bhttps?://([a-f0-9]{8}:[a-f0-9]{8})@(?:gems.contribsys.com|enterprise.contribsys.com)(?:[\\\\/|\\\\#|\\\\?|:]|$)\",\n \"keywords\": [\n \"gems.contribsys.com\",\n \"enterprise.contribsys.com\"\n ]\n },\n {\n \"id\": \"slack-app-token\",\n \"description\": \"Detected a Slack App-level token, risking unauthorized access to Slack applications and workspace data.\",\n \"regex\": \"(?i)xapp-\\\\d-[A-Z0-9]+-\\\\d+-[a-z0-9]+\",\n \"entropy\": 2,\n \"keywords\": [\n \"xapp\"\n ]\n },\n {\n \"id\": \"slack-bot-token\",\n \"description\": \"Identified a Slack Bot token, which may compromise bot integrations and communication channel security.\",\n \"regex\": \"xoxb-[0-9]{10,13}-[0-9]{10,13}[a-zA-Z0-9-]*\",\n \"entropy\": 3,\n \"keywords\": [\n \"xoxb\"\n ]\n },\n {\n \"id\": \"slack-config-access-token\",\n \"description\": \"Found a Slack Configuration access token, posing a risk to workspace configuration and sensitive data access.\",\n \"regex\": \"(?i)xoxe.xox[bp]-\\\\d-[A-Z0-9]{163,166}\",\n \"entropy\": 2,\n \"keywords\": [\n \"xoxe.xoxb-\",\n \"xoxe.xoxp-\"\n ]\n },\n {\n \"id\": \"slack-config-refresh-token\",\n \"description\": \"Discovered a Slack Configuration refresh token, potentially allowing prolonged unauthorized access to configuration settings.\",\n \"regex\": \"(?i)xoxe-\\\\d-[A-Z0-9]{146}\",\n \"entropy\": 2,\n \"keywords\": [\n \"xoxe-\"\n ]\n },\n {\n \"id\": \"slack-legacy-bot-token\",\n \"description\": \"Uncovered a Slack Legacy bot token, which could lead to compromised legacy bot operations and data exposure.\",\n \"regex\": \"xoxb-[0-9]{8,14}-[a-zA-Z0-9]{18,26}\",\n \"entropy\": 2,\n \"keywords\": [\n \"xoxb\"\n ]\n },\n {\n \"id\": \"slack-legacy-token\",\n \"description\": \"Detected a Slack Legacy token, risking unauthorized access to older Slack integrations and user data.\",\n \"regex\": \"xox[os]-\\\\d+-\\\\d+-\\\\d+-[a-fA-F\\\\d]+\",\n \"entropy\": 2,\n \"keywords\": [\n \"xoxo\",\n \"xoxs\"\n ]\n },\n {\n \"id\": \"slack-legacy-workspace-token\",\n \"description\": \"Identified a Slack Legacy Workspace token, potentially compromising access to workspace data and legacy features.\",\n \"regex\": \"xox[ar]-(?:\\\\d-)?[0-9a-zA-Z]{8,48}\",\n \"entropy\": 2,\n \"keywords\": [\n \"xoxa\",\n \"xoxr\"\n ]\n },\n {\n \"id\": \"slack-user-token\",\n \"description\": \"Found a Slack User token, posing a risk of unauthorized user impersonation and data access within Slack workspaces.\",\n \"regex\": \"xox[pe](?:-[0-9]{10,13}){3}-[a-zA-Z0-9-]{28,34}\",\n \"entropy\": 2,\n \"keywords\": [\n \"xoxp-\",\n \"xoxe-\"\n ]\n },\n {\n \"id\": \"slack-webhook-url\",\n \"description\": \"Discovered a Slack Webhook, which could lead to unauthorized message posting and data leakage in Slack channels.\",\n \"regex\": \"(?:https?://)?hooks.slack.com/(?:services|workflows|triggers)/[A-Za-z0-9+/]{43,56}\",\n \"keywords\": [\n \"hooks.slack.com\"\n ]\n },\n {\n \"id\": \"snyk-api-token\",\n \"description\": \"Uncovered a Snyk API token, potentially compromising software vulnerability scanning and code security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:snyk[_.-]?(?:(?:api|oauth)[_.-]?)?(?:key|token))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"snyk\"\n ]\n },\n {\n \"id\": \"sonar-api-token\",\n \"description\": \"Uncovered a Sonar API token, potentially compromising software vulnerability scanning and code security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:sonar[_.-]?(login|token))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}((?:squ_|sqp_|sqa_)?[a-z0-9=_\\\\-]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"sonar\"\n ]\n },\n {\n \"id\": \"sourcegraph-access-token\",\n \"description\": \"Sourcegraph is a code search and navigation engine.\",\n \"regex\": \"(?i)\\\\b(\\\\b(sgp_(?:[a-fA-F0-9]{16}|local)_[a-fA-F0-9]{40}|sgp_[a-fA-F0-9]{40}|[a-fA-F0-9]{40})\\\\b)(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"sgp_\",\n \"sourcegraph\"\n ]\n },\n {\n \"id\": \"square-access-token\",\n \"description\": \"Detected a Square Access Token, risking unauthorized payment processing and financial transaction exposure.\",\n \"regex\": \"\\\\b((?:EAAA|sq0atp-)[\\\\w-]{22,60})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"sq0atp-\",\n \"eaaa\"\n ]\n },\n {\n \"id\": \"squarespace-access-token\",\n \"description\": \"Identified a Squarespace Access Token, which may compromise website management and content control on Squarespace.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:squarespace)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"squarespace\"\n ]\n },\n {\n \"id\": \"stripe-access-token\",\n \"description\": \"Found a Stripe Access Token, posing a risk to payment processing services and sensitive financial data.\",\n \"regex\": \"\\\\b((?:sk|rk)_(?:test|live|prod)_[a-zA-Z0-9]{10,99})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 2,\n \"keywords\": [\n \"sk_test\",\n \"sk_live\",\n \"sk_prod\",\n \"rk_test\",\n \"rk_live\",\n \"rk_prod\"\n ]\n },\n {\n \"id\": \"sumologic-access-id\",\n \"description\": \"Discovered a SumoLogic Access ID, potentially compromising log management services and data analytics integrity.\",\n \"regex\": \"[\\\\w.-]{0,50}?(?i:[\\\\w.-]{0,50}?(?:(?-i:[Ss]umo|SUMO))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3})(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(su[a-zA-Z0-9]{12})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"sumo\"\n ]\n },\n {\n \"id\": \"sumologic-access-token\",\n \"description\": \"Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:(?-i:[Ss]umo|SUMO))(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{64})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3,\n \"keywords\": [\n \"sumo\"\n ]\n },\n {\n \"id\": \"telegram-bot-api-token\",\n \"description\": \"Detected a Telegram Bot API Token, risking unauthorized bot operations and message interception on Telegram.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:telegr)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9]{5,16}:(?-i:A)[a-z0-9_\\\\-]{34})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"telegr\"\n ]\n },\n {\n \"id\": \"travisci-access-token\",\n \"description\": \"Identified a Travis CI Access Token, potentially compromising continuous integration services and codebase security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:travis)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{22})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"travis\"\n ]\n },\n {\n \"id\": \"twilio-api-key\",\n \"description\": \"Found a Twilio API Key, posing a risk to communication services and sensitive customer interaction data.\",\n \"regex\": \"SK[0-9a-fA-F]{32}\",\n \"entropy\": 3,\n \"keywords\": [\n \"sk\"\n ]\n },\n {\n \"id\": \"twitch-api-token\",\n \"description\": \"Discovered a Twitch API token, which could compromise streaming services and account integrations.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:twitch)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{30})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"twitch\"\n ]\n },\n {\n \"id\": \"twitter-access-secret\",\n \"description\": \"Uncovered a Twitter Access Secret, potentially risking unauthorized Twitter integrations and data breaches.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:twitter)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{45})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"twitter\"\n ]\n },\n {\n \"id\": \"twitter-access-token\",\n \"description\": \"Detected a Twitter Access Token, posing a risk of unauthorized account operations and social media data exposure.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:twitter)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([0-9]{15,25}-[a-zA-Z0-9]{20,40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"twitter\"\n ]\n },\n {\n \"id\": \"twitter-api-key\",\n \"description\": \"Identified a Twitter API Key, which may compromise Twitter application integrations and user data security.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:twitter)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{25})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"twitter\"\n ]\n },\n {\n \"id\": \"twitter-api-secret\",\n \"description\": \"Found a Twitter API Secret, risking the security of Twitter app integrations and sensitive data access.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:twitter)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{50})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"twitter\"\n ]\n },\n {\n \"id\": \"twitter-bearer-token\",\n \"description\": \"Discovered a Twitter Bearer Token, potentially compromising API access and data retrieval from Twitter.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:twitter)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(A{22}[a-zA-Z0-9%]{80,100})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"twitter\"\n ]\n },\n {\n \"id\": \"typeform-api-token\",\n \"description\": \"Uncovered a Typeform API token, which could lead to unauthorized survey management and data collection.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:typeform)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(tfp_[a-z0-9\\\\-_\\\\.=]{59})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"tfp_\"\n ]\n },\n {\n \"id\": \"vault-batch-token\",\n \"description\": \"Detected a Vault Batch Token, risking unauthorized access to secret management services and sensitive data.\",\n \"regex\": \"\\\\b(hvb\\\\.[\\\\w-]{138,300})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 4,\n \"keywords\": [\n \"hvb.\"\n ]\n },\n {\n \"id\": \"vault-service-token\",\n \"description\": \"Identified a Vault Service Token, potentially compromising infrastructure security and access to sensitive credentials.\",\n \"regex\": \"\\\\b((?:hvs\\\\.[\\\\w-]{90,120}|s\\\\.(?i:[a-z0-9]{24})))(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"entropy\": 3.5,\n \"keywords\": [\n \"hvs.\",\n \"s.\"\n ]\n },\n {\n \"id\": \"yandex-access-token\",\n \"description\": \"Found a Yandex Access Token, posing a risk to Yandex service integrations and user data privacy.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:yandex)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(t1\\\\.[A-Z0-9a-z_-]+[=]{0,2}\\\\.[A-Z0-9a-z_-]{86}[=]{0,2})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"yandex\"\n ]\n },\n {\n \"id\": \"yandex-api-key\",\n \"description\": \"Discovered a Yandex API Key, which could lead to unauthorized access to Yandex services and data manipulation.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:yandex)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(AQVN[A-Za-z0-9_\\\\-]{35,38})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"yandex\"\n ]\n },\n {\n \"id\": \"yandex-aws-access-token\",\n \"description\": \"Uncovered a Yandex AWS Access Token, potentially compromising cloud resource access and data security on Yandex Cloud.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:yandex)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}(YC[a-zA-Z0-9_\\\\-]{38})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"yandex\"\n ]\n },\n {\n \"id\": \"zendesk-secret-key\",\n \"description\": \"Detected a Zendesk Secret Key, risking unauthorized access to customer support services and sensitive ticketing data.\",\n \"regex\": \"(?i)[\\\\w.-]{0,50}?(?:zendesk)(?:[ \\\\t\\\\w.-]{0,20})[\\\\s'\\\"]{0,3}(?:=|>|:{1,3}=|\\\\|\\\\||:|=>|\\\\?=|,)[\\\\x60'\\\"\\\\s=]{0,5}([a-z0-9]{40})(?:[\\\\x60'\\\"\\\\s;]|\\\\\\\\[nr]|$)\",\n \"keywords\": [\n \"zendesk\"\n ]\n }\n];\n","// Value-shape detectors built from data: tuned patterns in custom.toml plus the\n// vendored gitleaks file. Custom rules are authoritative — any gitleaks rule\n// whose keywords overlap a custom rule's is skipped, so the custom pattern wins\n// over gitleaks' file-oriented version of the same secret.\n//\n// The TOML is compiled ahead of time by `yarn gen:secret-rules`, so no TOML\n// parser is bundled. Edit the `.toml` files, then re-run the generator.\nimport { CUSTOM_RULES, GITLEAKS_RULES, type SecretRule } from '../../rules/rules.generated';\nimport type { SecretConfidence } from './types';\n\nexport interface RuleDetector {\n type: string;\n label: string;\n confidence: SecretConfidence;\n regex: RegExp;\n entropy?: number;\n keywords: string[];\n}\n\n/** Rewrites a gitleaks (Go/RE2) pattern into an equivalent the JS engine accepts. */\nfunction toJsRegex(source: string): RegExp | null {\n let body = source;\n let flags = 'gd';\n if (/\\(\\?i\\)/.test(body)) {\n body = body.replace(/\\(\\?i\\)/g, '');\n flags += 'i';\n }\n body = body.replace(/\\(\\?P</g, '(?<');\n try {\n return new RegExp(body, flags);\n } catch {\n return null;\n }\n}\n\nfunction normalizeLabelFromId(id: string): string {\n return id.replace(/-/g, ' ').toUpperCase();\n}\n\nfunction compile(rule: SecretRule, defaultConfidence: SecretConfidence): RuleDetector | null {\n if (typeof rule.regex !== 'string') {\n return null;\n }\n const regex = toJsRegex(rule.regex);\n if (regex === null) {\n return null;\n }\n return {\n type: rule.id,\n label: normalizeLabelFromId(rule.id),\n confidence: rule.confidence ?? defaultConfidence,\n regex,\n entropy: rule.entropy,\n keywords: (rule.keywords ?? []).map((k) => k.toLowerCase()),\n };\n}\n\nfunction build(): RuleDetector[] {\n // custom detectors first — they rank ahead of the gitleaks file.\n const custom = CUSTOM_RULES.map((r) => compile(r, 'high')).filter((d): d is RuleDetector => d !== null);\n\n const covered = custom.flatMap((d) => d.keywords);\n const isCovered = (keywords: string[]) =>\n keywords.some((k) => covered.some((p) => k.startsWith(p) || p.startsWith(k)));\n\n const supplemental: RuleDetector[] = [];\n for (const rule of GITLEAKS_RULES) {\n const keywords = (rule.keywords ?? []).map((k) => k.toLowerCase());\n if (isCovered(keywords)) {\n continue;\n }\n const detector = compile(rule, 'medium');\n if (detector !== null) {\n supplemental.push(detector);\n }\n }\n\n return [...custom, ...supplemental];\n}\n\nexport const RULE_DETECTORS: RuleDetector[] = build();\n","/** Shannon entropy in bits per character — high for random tokens. */\nexport function shannonEntropy(value: string): number {\n if (value.length === 0) {\n return 0;\n }\n\n const counts = new Map<string, number>();\n for (const char of value) {\n counts.set(char, (counts.get(char) ?? 0) + 1);\n }\n\n let entropy = 0;\n for (const count of counts.values()) {\n const p = count / value.length;\n entropy -= p * Math.log2(p);\n }\n\n return entropy;\n}\n","import { RULE_DETECTORS } from './ruleDetectors';\nimport { shannonEntropy } from './entropy';\nimport type { DetectionResult } from './types';\n\nexport interface EmbeddedMatch extends DetectionResult {\n index: number;\n length: number;\n}\n\nconst isTokenChar = (ch: string): boolean => ch !== '' && /[A-Za-z0-9]/.test(ch);\n\ninterface Candidate extends EmbeddedMatch {\n rank: number;\n}\n\nfunction better(next: Candidate, best: Candidate | null): boolean {\n if (best === null) {\n return true;\n }\n return next.index < best.index || (next.index === best.index && next.rank < best.rank);\n}\n\n/**\n * Every value-shape match in `text`, unordered and possibly overlapping. Shared\n * by `detectEmbedded` and `findAllEmbedded` so the matching rules — group\n * selection, entropy guard, token-boundary guard — live in one place.\n */\nfunction* iterateEmbeddedMatches(text: string): Generator<Candidate> {\n const lower = text.toLowerCase();\n\n for (let i = 0; i < RULE_DETECTORS.length; i++) {\n const rule = RULE_DETECTORS[i]!;\n if (rule.keywords.length > 0 && !rule.keywords.some((k) => lower.includes(k))) {\n continue;\n }\n const { regex } = rule;\n regex.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = regex.exec(text)) !== null) {\n const groupIndex = m.indices && m.indices[1] ? 1 : 0;\n const span = m.indices?.[groupIndex];\n const secret = m[groupIndex] ?? m[0];\n if (!span || secret.length === 0) {\n if (m.index === regex.lastIndex) {\n regex.lastIndex += 1;\n }\n continue;\n }\n const [start, end] = span;\n if (rule.entropy != null && shannonEntropy(secret) < rule.entropy) {\n continue;\n }\n if (isTokenChar(text[start - 1] ?? '') || isTokenChar(text[end] ?? '')) {\n continue;\n }\n yield {\n type: rule.type,\n label: rule.label,\n confidence: rule.confidence,\n secret,\n index: start,\n length: end - start,\n rank: i,\n };\n }\n }\n}\n\n/**\n * The leftmost secret in `text`, ties broken by detector priority (custom rules\n * first, then the gitleaks).\n */\nexport function detectEmbedded(text: string): EmbeddedMatch | null {\n let best: Candidate | null = null;\n for (const candidate of iterateEmbeddedMatches(text)) {\n if (better(candidate, best)) {\n best = candidate;\n }\n }\n\n if (best === null) {\n return null;\n }\n const { rank: _rank, ...match } = best;\n return match;\n}\n\n/**\n * Every secret in `text`, non-overlapping and in source order.\n */\nexport function findAllEmbedded(text: string): EmbeddedMatch[] {\n const candidates = [...iterateEmbeddedMatches(text)].sort((a, b) => a.index - b.index || a.rank - b.rank);\n\n const accepted: EmbeddedMatch[] = [];\n let lastEnd = -1;\n for (const candidate of candidates) {\n if (candidate.index < lastEnd) {\n continue;\n }\n const { rank: _rank, ...match } = candidate;\n accepted.push(match);\n lastEnd = candidate.index + candidate.length;\n }\n return accepted;\n}\n","import { shannonEntropy } from './entropy';\nimport type { DetectionResult } from './types';\n\n// The prefix-shaped detectors live as data in ../../rules/*.toml. This heuristic\n// is algorithmic — an entropy threshold, not a fixed pattern — so it can't be\n// expressed as a rule regex and stays here.\n\nexport function detectHighEntropy(value: string): DetectionResult | null {\n if (!/^[A-Za-z0-9+/=]{24,}$/.test(value)) {\n return null;\n }\n const hasDigit = /\\d/.test(value);\n const hasLetter = /[A-Za-z]/.test(value);\n if (!hasDigit || !hasLetter) {\n return null;\n }\n if (shannonEntropy(value) < 3.6) {\n return null;\n }\n return {\n type: 'high-entropy',\n label: 'HIGH ENTROPY STRING',\n confidence: 'low',\n secret: value,\n };\n}\n","// cspell:ignore apikey creds\nimport type { DetectionResult } from './types';\n\n// Variable / property names that, when assigned a string literal, suggest the\n// value is a credential even when the value itself looks unremarkable (e.g.\n// `const pass = 'hunter2'`). Matched per identifier *word* — split on\n// camelCase / snake / kebab boundaries — so `apiKey` matches but `keyboard`,\n// `author` and `monkey` do not.\nconst SENSITIVE_NAME_KEYWORDS = new Set([\n 'password',\n 'passwd',\n 'passphrase',\n 'pass',\n 'pwd',\n 'secret',\n 'token',\n 'apikey',\n 'key',\n 'auth',\n 'bearer',\n 'credential',\n 'credentials',\n 'cred',\n 'creds',\n 'session',\n 'signature',\n 'salt',\n 'certificate',\n 'cert',\n]);\n\nfunction splitIdentifierWords(name: string): string[] {\n return name\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n .split(/[^A-Za-z0-9]+/)\n .map((word) => word.toLowerCase())\n .filter(Boolean);\n}\n\nfunction isSensitiveName(name: string): boolean {\n return splitIdentifierWords(name).some((word) => SENSITIVE_NAME_KEYWORDS.has(word));\n}\n\n// A name-based hit is low signal, so only flag compact single-token values that\n// could plausibly be a credential — not sentences, URLs or empty strings.\nfunction isPlausibleNamedSecretValue(value: string): boolean {\n return value.length >= 4 && value.length <= 200 && !/\\s/.test(value) && !value.includes('://');\n}\n\n/**\n * Fallback for values that look unremarkable on their own, so an obvious\n * mistake like `const pass = 'function'` is still surfaced.\n */\nexport function detectFromName(body: string, name: string | undefined): DetectionResult | null {\n if (!isPlausibleNamedSecretValue(body)) {\n return null;\n }\n\n if (!name || !isSensitiveName(name)) {\n return null;\n }\n\n return {\n type: 'named',\n label: 'NAMED SECRET',\n confidence: 'low',\n secret: body,\n };\n}\n","/**\n * Memoizes the latest input only — a scanner sees an evolving document, so anything older is not relevant.\n */\nexport function memoizeLatest<T>(compute: (input: string) => T[]): (input: string) => T[] {\n let lastInput: string | null = null;\n let lastResult: T[] = [];\n\n return (input: string) => {\n if (!input) {\n return [];\n }\n if (input === lastInput) {\n return lastResult;\n }\n lastInput = input;\n lastResult = compute(input);\n return lastResult;\n };\n}\n","/**\n * Code-first scanner: flags likely hardcoded secrets in a script.\n *\n * String-literal aware (AST-based) rather than raw-text, so reported ranges line\n * up with what the user sees and a rewrite can edit the original text.\n *\n * For plain-text outside a literal, use `scanText`.\n *\n * Orchestration only; the detectors live in `./detection`.\n */\n\nimport { iterateStringLiterals } from './detection/literals';\nimport { isPlaceholder } from './detection/placeholders';\nimport { createPositionResolver } from './detection/position';\nimport { detectEmbedded } from './detection/embedded';\nimport { detectHighEntropy } from './detection/highEntropy';\nimport { detectFromName } from './detection/nameDetector';\nimport type { SecretFinding } from './detection/types';\nimport { memoizeLatest } from './memoizeLatest';\n\nfunction scan(script: string): SecretFinding[] {\n const findings: SecretFinding[] = [];\n const positionAt = createPositionResolver(script);\n\n for (const {\n body,\n literalStart,\n literalEnd,\n contentStart,\n contentEnd,\n kind,\n name,\n embeddedOnly,\n } of iterateStringLiterals(script)) {\n const literal = { start: literalStart, end: literalEnd };\n\n const embedded = detectEmbedded(script.slice(contentStart, contentEnd));\n if (embedded) {\n // A match covering the whole content means the literal *is* the secret\n const spansWholeLiteral = !embeddedOnly && embedded.index === 0 && embedded.length === contentEnd - contentStart;\n const secretStart = contentStart + embedded.index;\n const range = { start: secretStart, end: secretStart + embedded.length };\n const { line, column } = positionAt(range.start);\n\n findings.push({\n id: `${range.start}-${embedded.type}`,\n type: embedded.type,\n label: embedded.label,\n confidence: embedded.confidence,\n secret: embedded.secret,\n range,\n line,\n column,\n literal,\n rewrite: spansWholeLiteral ? 'literal' : kind === 'template' ? 'template-interpolation' : 'none',\n });\n continue;\n }\n\n if (!embeddedOnly && body.length > 0 && !isPlaceholder(body)) {\n const detected = detectHighEntropy(body) ?? detectFromName(body, name);\n if (detected) {\n const range = { start: contentStart, end: contentEnd };\n const { line, column } = positionAt(range.start);\n findings.push({\n id: `${range.start}-${detected.type}`,\n ...detected,\n range,\n line,\n column,\n literal,\n rewrite: 'literal',\n });\n }\n }\n }\n\n return findings;\n}\n\n/**\n * A code scanner with its own memo. Prefer this to the shared {@link scanCode}\n * when more than one surface scans independently — see `memoizeLatest`.\n */\nexport function createCodeScanner(): (script: string) => SecretFinding[] {\n return memoizeLatest(scan);\n}\n\n/** Shared code scanner, for a host with a single scanning surface. */\nexport const scanCode = createCodeScanner();\n\nexport { offsetToPosition } from './detection/position';\nexport { shannonEntropy } from './detection/entropy';\nexport type { SecretFinding, SecretConfidence, SecretRange, SecretRewrite } from './detection/types';\n","/**\n * Text-first counterpart to {@link scanCode}: runs the same value-shape\n * detectors over raw text rather than over parsed string literals, which is what\n * a natural-language surface (a prompt, a description) needs — there the\n * credential is typed inline, not quoted as a JS string.\n *\n */\nimport { type EmbeddedMatch, findAllEmbedded } from './detection/embedded';\nimport { detectHighEntropy } from './detection/highEntropy';\nimport { isPlaceholder } from './detection/placeholders';\nimport { createPositionResolver } from './detection/position';\nimport type { SecretFinding } from './detection/types';\nimport { memoizeLatest } from './memoizeLatest';\n\n// A run of high-entropy-alphabet characters, long enough to be a secret blob.\n// The alphabet mirrors `detectHighEntropy` (no `-`/`_`, so kebab/snake config\n// and identifiers aren't split into candidates), and the quotes/whitespace/\n// punctuation around a token in prose delimit it.\nconst HIGH_ENTROPY_TOKEN = /[A-Za-z0-9+/=]{24,}/g;\n\nfunction highEntropyMatches(text: string): EmbeddedMatch[] {\n const matches: EmbeddedMatch[] = [];\n HIGH_ENTROPY_TOKEN.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = HIGH_ENTROPY_TOKEN.exec(text)) !== null) {\n const token = m[0];\n if (isPlaceholder(token)) {\n continue;\n }\n const detected = detectHighEntropy(token);\n if (detected) {\n matches.push({ ...detected, index: m.index, length: token.length });\n }\n }\n return matches;\n}\n\nfunction scan(text: string): SecretFinding[] {\n const ruleMatches = findAllEmbedded(text);\n const overlapsRuleMatch = (m: EmbeddedMatch) =>\n ruleMatches.some((rule) => m.index < rule.index + rule.length && rule.index < m.index + m.length);\n\n const matches = [...ruleMatches, ...highEntropyMatches(text).filter((m) => !overlapsRuleMatch(m))].sort(\n (a, b) => a.index - b.index\n );\n\n const positionAt = createPositionResolver(text);\n return matches.map((match): SecretFinding => {\n const { line, column } = positionAt(match.index);\n return {\n id: `${match.index}-${match.type}`,\n type: match.type,\n label: match.label,\n confidence: match.confidence,\n secret: match.secret,\n range: { start: match.index, end: match.index + match.length },\n line,\n column,\n };\n });\n}\n\n/**\n * A text scanner with its own memo. Prefer this to the shared {@link scanText}\n * when more than one surface scans independently — see `memoizeLatest`.\n */\nexport function createTextScanner(): (text: string) => SecretFinding[] {\n return memoizeLatest(scan);\n}\n\n/** Shared text scanner, for a host with a single scanning surface. */\nexport const scanText = createTextScanner();\n","/**\n * How long to wait after the last edit before re-scanning. A scan runs every\n * detector over the whole document (and, for code scans, re-parses it), so\n * running it on every keystroke blocks typing. Debouncing coalesces a burst of\n * edits into one scan.\n */\nexport const DEFAULT_DEBOUNCE_MS = 1500;\n","/**\n * The k6 {@link SecretRewriter}: rewrites a detected hardcoded secret into a\n * reference to the managed Secrets store, matching the syntax documented in the\n * in-product Secrets guide:\n *\n * import secrets from 'k6/secrets'\n * const value = await secrets.get('my-secret')\n *\n * This is the only k6-specific piece of the library. Everything else — the\n * detectors, the finding shape, the hooks, the panel — is runtime-agnostic.\n */\nimport type { SecretFinding } from './detection/types';\nimport type { ApplyResult, SecretRewriter } from './rewrite';\n\nconst SECRETS_MODULE = 'k6/secrets';\n\nfunction findSecretsBinding(script: string): string | null {\n const match = script.match(/import\\s+([A-Za-z_$][\\w$]*)\\s+from\\s+['\"]k6\\/secrets['\"]/);\n return match?.[1] ?? null;\n}\n\nexport function buildSecretReference(secretName: string, binding = 'secrets'): string {\n return `await ${binding}.get('${secretName}')`;\n}\n\nfunction ensureSecretsImport(script: string): {\n script: string;\n binding: string;\n addedImport: boolean;\n} {\n const existing = findSecretsBinding(script);\n if (existing) {\n return { script, binding: existing, addedImport: false };\n }\n\n const importLine = `import secrets from '${SECRETS_MODULE}'\\n`;\n return {\n script: `${importLine}${script}`,\n binding: 'secrets',\n addedImport: true,\n };\n}\n\nexport function applySecretReference(script: string, finding: SecretFinding, secretName: string): ApplyResult {\n if (finding.rewrite === undefined || finding.rewrite === 'none') {\n return { text: script, addedImport: false, needsAsync: false, applied: false };\n }\n\n const target = finding.rewrite === 'literal' ? (finding.literal ?? finding.range) : finding.range;\n\n // Guard against stale offsets. `finding` is a snapshot; if the script moved\n // under it (auto-format, autosave, or a host migrating several findings from\n // one captured array), the recorded range may no longer contain this secret.\n if (!script.slice(target.start, target.end).includes(finding.secret)) {\n return { text: script, addedImport: false, needsAsync: false, applied: false };\n }\n\n const binding = findSecretsBinding(script) ?? 'secrets';\n const reference =\n finding.rewrite === 'template-interpolation'\n ? `\\${await ${binding}.get('${secretName}')}`\n : buildSecretReference(secretName, binding);\n\n const replaced = script.slice(0, target.start) + reference + script.slice(target.end);\n\n const { script: withImport, addedImport } = ensureSecretsImport(replaced);\n\n return { text: withImport, addedImport, needsAsync: true, applied: true };\n}\n\nexport const k6SecretRewriter: SecretRewriter = {\n apply: applySecretReference,\n reference: buildSecretReference,\n};\n","import type { SecretFinding } from './detection/types';\n\nconst MAX_NAME_LENGTH = 253;\n\n/**\n * Suggests a Secrets-store-compatible name for a finding. Secret names must be\n * lowercase and may only contain letters, numbers, dashes and periods (see\n * `secretSchema`), so we derive the suggestion from the detector type and\n * de-duplicate against existing names.\n */\nexport function suggestSecretName(finding: Pick<SecretFinding, 'type'>, existingNames: string[] = []): string {\n const base = `${finding.type}-secret`\n .toLowerCase()\n .replace(/[^a-z0-9.-]+/g, '-')\n .replace(/^[^a-z0-9]+/, '')\n .replace(/-+$/, '')\n .slice(0, MAX_NAME_LENGTH);\n\n const taken = new Set(existingNames);\n if (!taken.has(base)) {\n return base;\n }\n\n let suffix = 2;\n while (taken.has(`${base}-${suffix}`)) {\n suffix++;\n }\n return `${base}-${suffix}`;\n}\n\nexport function maskSecret(secret: string): string {\n if (secret.length <= 8) {\n return '•'.repeat(secret.length);\n }\n return `${secret.slice(0, 3)}${'•'.repeat(4)}${secret.slice(-2)}`;\n}\n\n/**\n * Stable signature for remembering an \"ignore\" choice across edits and reloads.\n * Hashing (FNV-1a) keeps the plaintext out of local storage, and deriving it\n * from content rather than position keeps it stable when the secret moves —\n * unlike the finding `id`.\n */\nexport function getFindingSignature(finding: Pick<SecretFinding, 'type' | 'secret'>): string {\n return `${finding.type}.${fnv1aHash(`${finding.type}:${finding.secret}`)}`;\n}\n\nfunction fnv1aHash(value: string): string {\n let hash = 0x811c9dc5;\n for (let i = 0; i < value.length; i++) {\n hash ^= value.charCodeAt(i);\n hash = Math.imul(hash, 0x01000193);\n }\n return (hash >>> 0).toString(16);\n}\n","import { createCodeScanner, DEFAULT_DEBOUNCE_MS, type SecretFinding } from '../core/index';\nimport type { IStandaloneCodeEditor, MonacoNamespace } from './types';\n\n/** Marker `code` identifying the scanner's diagnostics for the quick fix. */\nexport const SECRET_MARKER_CODE = 'hardcoded-secret';\n\nconst MARKER_OWNER = 'secret-scanner';\nconst DEFAULT_LANGUAGES = ['typescript', 'javascript'];\nconst DEFAULT_QUICK_FIX_TITLE = 'Move to Secrets Manager';\n\nexport interface InstallSecretScannerOptions {\n languages?: string[];\n enabled?: boolean;\n markerMessage?: (finding: SecretFinding) => string;\n quickFix?: { title?: string; run: (finding: SecretFinding) => void };\n scan?: (code: string) => SecretFinding[];\n debounceMs?: number;\n}\n\nexport interface SecretScannerInstallation {\n refresh(): void;\n dispose(): void;\n}\n\n/**\n * Gutter markers for detected secrets plus an optional \"Move to Secrets Manager\"\n * quick fix.\n */\nexport function installSecretScanner(\n monaco: MonacoNamespace,\n editor: IStandaloneCodeEditor,\n options: InstallSecretScannerOptions = {}\n): SecretScannerInstallation {\n const languages = options.languages ?? DEFAULT_LANGUAGES;\n const scan = options.scan ?? createCodeScanner();\n const debounceMs = options.debounceMs ?? DEFAULT_DEBOUNCE_MS;\n const markerMessage =\n options.markerMessage ??\n ((finding: SecretFinding) =>\n `Possible hardcoded secret (${finding.label}). Consider moving it to a managed secret.`);\n\n const disposables: Array<{ dispose(): void }> = [];\n\n const updateMarkers = () => {\n const model = editor.getModel();\n if (model === null) {\n return;\n }\n\n if (options.enabled === false) {\n monaco.editor.setModelMarkers(model, MARKER_OWNER, []);\n return;\n }\n\n const script = model.getValue();\n const markers = scan(script).map((finding) => {\n const start = model.getPositionAt(finding.range.start);\n const end = model.getPositionAt(finding.range.end);\n return {\n severity: monaco.MarkerSeverity.Warning,\n message: markerMessage(finding),\n code: SECRET_MARKER_CODE,\n startLineNumber: start.lineNumber,\n startColumn: start.column,\n endLineNumber: end.lineNumber,\n endColumn: end.column,\n };\n });\n\n monaco.editor.setModelMarkers(model, MARKER_OWNER, markers);\n };\n\n let debounceTimer: ReturnType<typeof setTimeout> | undefined;\n const cancelScheduled = () => {\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer);\n debounceTimer = undefined;\n }\n };\n const scheduleUpdate = () => {\n cancelScheduled();\n debounceTimer = setTimeout(() => {\n debounceTimer = undefined;\n updateMarkers();\n }, debounceMs);\n };\n const updateNow = () => {\n cancelScheduled();\n updateMarkers();\n };\n\n updateMarkers();\n disposables.push(editor.onDidChangeModelContent(() => scheduleUpdate()));\n disposables.push(editor.onDidChangeModel(() => updateNow()));\n disposables.push({ dispose: cancelScheduled });\n\n if (options.enabled !== false && options.quickFix) {\n const runQuickFix = options.quickFix.run;\n const title = options.quickFix.title ?? DEFAULT_QUICK_FIX_TITLE;\n\n const commandId = editor.addCommand(0, (_accessor: unknown, finding: SecretFinding) => runQuickFix(finding));\n\n if (commandId) {\n for (const language of languages) {\n disposables.push(\n monaco.languages.registerCodeActionProvider(language, {\n provideCodeActions(model, _range, context) {\n const secretMarkers = context.markers.filter((marker) => marker.code === SECRET_MARKER_CODE);\n\n if (secretMarkers.length === 0) {\n return { actions: [], dispose() {} };\n }\n\n const findings = scan(model.getValue());\n const actions = secretMarkers.flatMap((marker) => {\n const markerOffset = model.getOffsetAt({\n lineNumber: marker.startLineNumber,\n column: marker.startColumn,\n });\n const finding = findings.find((candidate) => candidate.range.start === markerOffset);\n\n if (finding === undefined) {\n return [];\n }\n\n return [\n {\n title,\n kind: 'quickfix',\n diagnostics: [marker],\n command: { id: commandId, title, arguments: [finding] },\n },\n ];\n });\n\n return { actions, dispose() {} };\n },\n })\n );\n }\n }\n }\n\n return {\n refresh: updateNow,\n dispose() {\n disposables.forEach((disposable) => disposable.dispose());\n const model = editor.getModel();\n if (model !== null) {\n monaco.editor.setModelMarkers(model, MARKER_OWNER, []);\n }\n },\n };\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nfunction read(key: string): string[] {\n try {\n const raw = localStorage.getItem(key);\n const parsed = raw ? JSON.parse(raw) : [];\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n}\n\ntype Updater = string[] | ((prev: string[]) => string[]);\n\nexport function useLocalStorageList(key: string): [string[], (updater: Updater) => void] {\n const [value, setValue] = useState<string[]>(() => read(key));\n const keyRef = useRef(key);\n\n useEffect(() => {\n if (keyRef.current !== key) {\n keyRef.current = key;\n setValue(read(key));\n }\n }, [key]);\n\n const set = useCallback(\n (updater: Updater) => {\n setValue((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater;\n try {\n localStorage.setItem(key, JSON.stringify(next));\n } catch {\n // Ignore write failures (private mode, quota, …).\n }\n return next;\n });\n },\n [key]\n );\n\n return [value, set];\n}\n","import { useCallback } from 'react';\n\nimport { getFindingSignature, type SecretFinding } from '../core/index';\nimport { useLocalStorageList } from './useLocalStorageList';\n\nconst DEFAULT_STORAGE_KEY = 'secretScanner.ignored';\n\ntype IgnorableFinding = Pick<SecretFinding, 'type' | 'secret'>;\n\n/**\n * Remembers which detected secrets the user chose to ignore, persisted in\n * localStorage under `storageKey` (namespace it per document). Tracked by a\n * content-derived signature, never the plaintext.\n */\nexport function useIgnoredSecrets(storageKey: string = DEFAULT_STORAGE_KEY) {\n const [ignored, setIgnored] = useLocalStorageList(storageKey);\n\n const isIgnored = useCallback(\n (finding: IgnorableFinding) => ignored.includes(getFindingSignature(finding)),\n [ignored]\n );\n\n const ignore = useCallback(\n (finding: IgnorableFinding) => {\n const signature = getFindingSignature(finding);\n setIgnored((current) => (current.includes(signature) ? current : [...current, signature]));\n },\n [setIgnored]\n );\n\n return { isIgnored, ignore };\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport {\n createCodeScanner,\n DEFAULT_DEBOUNCE_MS,\n k6SecretRewriter,\n type SecretFinding,\n type SecretRewriter,\n} from '../core/index';\nimport { useIgnoredSecrets } from './useIgnoredSecrets';\n\nexport interface UseSecretScannerParams {\n text: string;\n scan?: (text: string) => SecretFinding[];\n rewriter?: SecretRewriter;\n onChange?: (text: string) => void;\n enabled?: boolean;\n ignoreStorageKey?: string;\n debounceMs?: number;\n}\n\nexport interface SecretReference {\n finding: SecretFinding;\n secretName: string;\n reference: string;\n}\n\nexport interface SecretMigration {\n finding: SecretFinding | null;\n request: (finding: SecretFinding) => void;\n cancel: () => void;\n apply: (finding: SecretFinding, secretName: string) => void;\n}\n\n/** The fallback flow for a secret that couldn't be inserted automatically. */\nexport interface SecretReferenceFallback {\n pending: SecretReference | null;\n dismiss: () => void;\n}\n\nexport interface SecretScanner {\n /** Detected secrets, minus the ones the user ignored. */\n findings: SecretFinding[];\n ignore: (finding: SecretFinding) => void;\n migration: SecretMigration;\n reference: SecretReferenceFallback;\n}\n\n/**\n * Headless secret scanner over any string — a code editor's contents, a\n * textarea, a prompt field. Owns detection, debouncing, ignore state and the\n * rewrite.\n */\nexport function useSecretScanner(params: UseSecretScannerParams): SecretScanner {\n const {\n text,\n scan,\n rewriter = k6SecretRewriter,\n onChange,\n enabled = true,\n ignoreStorageKey,\n debounceMs = DEFAULT_DEBOUNCE_MS,\n } = params;\n\n const defaultScan = useMemo(() => createCodeScanner(), []);\n const scanner = scan ?? defaultScan;\n\n const { isIgnored, ignore } = useIgnoredSecrets(ignoreStorageKey);\n const [activeFinding, setActiveFinding] = useState<SecretFinding | null>(null);\n const [pendingReference, setPendingReference] = useState<SecretReference | null>(null);\n const [findings, setFindings] = useState<SecretFinding[]>(() => (enabled ? scanner(text) : []));\n useEffect(() => {\n if (!enabled) {\n setFindings([]);\n return;\n }\n const handle = setTimeout(() => setFindings(scanner(text)), debounceMs);\n return () => clearTimeout(handle);\n }, [text, debounceMs, enabled, scanner]);\n\n const visible = useMemo(() => findings.filter((finding) => !isIgnored(finding)), [findings, isIgnored]);\n\n const request = useCallback((finding: SecretFinding) => setActiveFinding(finding), []);\n const cancel = useCallback(() => setActiveFinding(null), []);\n const dismiss = useCallback(() => setPendingReference(null), []);\n const apply = useCallback(\n (finding: SecretFinding, secretName: string) => {\n const result = onChange ? rewriter.apply(text, finding, secretName) : undefined;\n if (result?.applied) {\n onChange!(result.text);\n } else {\n setPendingReference({ finding, secretName, reference: rewriter.reference(secretName) });\n }\n setActiveFinding(null);\n },\n [text, onChange, rewriter]\n );\n\n const migration = useMemo(\n () => ({ finding: activeFinding, request, cancel, apply }),\n [activeFinding, request, cancel, apply]\n );\n const reference = useMemo(() => ({ pending: pendingReference, dismiss }), [pendingReference, dismiss]);\n\n return { findings: visible, ignore, migration, reference };\n}\n","import { useEffect } from 'react';\n\nimport { installSecretScanner, type IStandaloneCodeEditor, type MonacoNamespace } from '../monaco/index';\nimport { useSecretScanner, type SecretScanner, type UseSecretScannerParams } from './useSecretScanner';\n\nexport interface UseMonacoSecretScannerParams extends UseSecretScannerParams {\n /** Monaco namespace + editor, injected from the host's editor mount. */\n monaco?: MonacoNamespace;\n editor?: IStandaloneCodeEditor;\n /** Whether the \"Move to secret\" quick fix is offered. Default true. */\n canMigrate?: boolean;\n /** Languages to register the quick fix for. Default: ts + js. */\n languages?: string[];\n}\n\n/**\n * Monaco adapter over {@link useSecretScanner}: adds gutter markers and a\n * \"Move to Secrets Manager\" quick fix on top of the headless scanner.\n *\n * The Monaco pieces are optional — until `monaco` and `editor` are both\n * provided, this behaves exactly like `useSecretScanner`, so a host can mount it\n * before its editor is ready.\n */\nexport function useMonacoSecretScanner(params: UseMonacoSecretScannerParams): SecretScanner {\n const { monaco, editor, canMigrate = true, languages, ...headless } = params;\n const { enabled = true, debounceMs, scan } = headless;\n\n const scanner = useSecretScanner(headless);\n const { request } = scanner.migration;\n\n const languageKey = (languages ?? []).join(',');\n useEffect(() => {\n if (monaco === undefined || editor === undefined) {\n return;\n }\n\n const installation = installSecretScanner(monaco, editor, {\n enabled,\n languages,\n debounceMs,\n scan,\n quickFix: canMigrate ? { run: request } : undefined,\n });\n\n return () => installation.dispose();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [monaco, editor, enabled, canMigrate, languageKey, debounceMs, scan, request]);\n\n return scanner;\n}\n","import React from 'react';\nimport { Alert, Badge, Button, Stack, Text, useStyles2 } from '@grafana/ui';\nimport type { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nimport { maskSecret, type SecretConfidence, type SecretFinding } from '../core/index';\nimport type { SecretScanner } from '../react/index';\n\nexport interface SecretFindingSummary {\n id: string;\n label: string;\n confidence: SecretConfidence;\n secret: string;\n line?: number;\n}\n\ninterface SecretFindingsPanelProps<T extends SecretFindingSummary> {\n findings: T[];\n onMove?: (finding: T) => void;\n onIgnore?: (finding: T) => void;\n hidden?: boolean;\n showLine?: boolean;\n description?: NonNullable<React.ReactNode>;\n moveLabel?: React.ReactNode;\n ignoreLabel?: React.ReactNode;\n}\n\ninterface SecretScannerPanelProps extends Omit<\n SecretFindingsPanelProps<SecretFinding>,\n 'findings' | 'onMove' | 'onIgnore'\n> {\n scanner: SecretScanner;\n readOnly?: boolean;\n}\n\nconst DEFAULT_DESCRIPTION =\n 'Hardcoded secrets in test scripts are stored in plaintext. Move them to Secrets Manager and reference them at runtime instead.';\nconst DEFAULT_MOVE_LABEL = 'Move to secret';\nconst DEFAULT_IGNORE_LABEL = 'Ignore';\n\nconst CONFIDENCE_BADGE: Record<SecretConfidence, { text: string; color: 'red' | 'orange' | 'blue' }> = {\n high: { text: 'high', color: 'red' },\n medium: { text: 'medium', color: 'orange' },\n low: { text: 'low', color: 'blue' },\n};\n\n/**\n * Presentational: takes findings and renders them. Accepts any finding shape\n * carrying the fields in `SecretFindingSummary`, so a host can pass its own.\n * For a panel driven by `useSecretScanner`, use `SecretScannerPanel`.\n */\nexport function SecretFindingsPanel<T extends SecretFindingSummary>({\n findings,\n onMove,\n onIgnore,\n hidden = false,\n showLine = true,\n description = DEFAULT_DESCRIPTION,\n moveLabel = DEFAULT_MOVE_LABEL,\n ignoreLabel = DEFAULT_IGNORE_LABEL,\n}: SecretFindingsPanelProps<T>) {\n const styles = useStyles2(getStyles);\n\n if (hidden || findings.length === 0) {\n return null;\n }\n\n const title = findings.length === 1 ? '1 potential secret detected' : `${findings.length} potential secrets detected`;\n\n return (\n <Alert severity=\"warning\" title={title}>\n <Text variant=\"bodySmall\">{description}</Text>\n\n <div className={styles.list}>\n {findings.map((finding) => (\n <div key={finding.id} className={styles.row}>\n <Stack alignItems=\"center\" gap={1} wrap=\"wrap\">\n <Badge text={finding.label} color={CONFIDENCE_BADGE[finding.confidence].color} />\n <code className={styles.value}>{maskSecret(finding.secret)}</code>\n <Text variant=\"bodySmall\" color=\"secondary\">\n {showLine && finding.line != null ? `line ${finding.line} · ` : ''}\n {CONFIDENCE_BADGE[finding.confidence].text} confidence\n </Text>\n </Stack>\n\n <Stack gap={1}>\n {onMove && (\n <Button size=\"sm\" variant=\"primary\" icon=\"shield\" onClick={() => onMove(finding)}>\n {moveLabel}\n </Button>\n )}\n {onIgnore && (\n <Button size=\"sm\" variant=\"secondary\" fill=\"outline\" onClick={() => onIgnore(finding)}>\n {ignoreLabel}\n </Button>\n )}\n </Stack>\n </div>\n ))}\n </div>\n </Alert>\n );\n}\n\n/**\n * \"Move to secret\" calls `scanner.migration.request(finding)`, which sets\n * `scanner.migration.finding`; render your own create-secret modal off that, and\n * call `scanner.migration.apply` once the secret exists.\n */\nexport function SecretScannerPanel({ scanner, readOnly = false, ...rest }: SecretScannerPanelProps) {\n return (\n <SecretFindingsPanel\n findings={scanner.findings}\n onMove={readOnly ? undefined : scanner.migration.request}\n onIgnore={scanner.ignore}\n {...rest}\n />\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n list: css`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing(1)};\n margin-top: ${theme.spacing(1)};\n /* Cap the list so a script with many findings can't grow the panel\n unbounded and push the editor out of view; scroll past ~8 rows. */\n max-height: ${theme.spacing(40)};\n overflow-y: auto;\n `,\n row: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${theme.spacing(2)};\n padding: ${theme.spacing(1)};\n border: 1px solid ${theme.colors.border.weak};\n border-radius: ${theme.shape.radius.default};\n background: ${theme.colors.background.secondary};\n flex-wrap: wrap;\n `,\n value: css`\n font-family: ${theme.typography.fontFamilyMonospace};\n font-size: ${theme.typography.bodySmall.fontSize};\n `,\n };\n}\n","import React from 'react';\nimport { ClipboardButton, Input, Modal, Stack, Text } from '@grafana/ui';\n\nimport type { SecretReference } from '../react/index';\n\ninterface SecretReferenceModalProps {\n reference: SecretReference | null;\n onDismiss: () => void;\n snippet?: string;\n title?: string;\n description?: NonNullable<React.ReactNode>;\n}\n\nconst DEFAULT_TITLE = 'Reference your secret';\n\n/**\n * Shown after a secret is created for a finding that couldn't be rewritten in\n * place. Purely presentational — render it off `scanner.reference.pending`.\n */\nexport function SecretReferenceModal({\n reference,\n onDismiss,\n snippet,\n title = DEFAULT_TITLE,\n description,\n}: SecretReferenceModalProps) {\n if (reference === null) {\n return null;\n }\n\n const text = snippet ?? reference.reference;\n const defaultDescription = (\n <Text variant=\"body\">\n The secret <code>{reference.secretName}</code> was created, but this value could not be replaced automatically.\n Copy the reference below and use it in place of the hardcoded value.\n </Text>\n );\n\n return (\n <Modal title={title} isOpen onDismiss={onDismiss}>\n <Stack direction=\"column\" gap={2}>\n {description ?? defaultDescription}\n\n <Input readOnly value={text} />\n </Stack>\n\n <Modal.ButtonRow>\n <ClipboardButton icon=\"copy\" variant=\"primary\" getText={() => text}>\n Copy reference\n </ClipboardButton>\n </Modal.ButtonRow>\n </Modal>\n );\n}\n"],"names":["Parser","tsPlugin","e","acornLoose","scan","useState","useRef","useEffect","useCallback","useMemo","useStyles2","React","Alert","Text","Stack","Badge","Button","css","Modal","Input","ClipboardButton"],"mappings":"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"}