redact-secret · Report · Detector
Convex deployment keys
Format evidence
- Provider documentation convex-backend 032e81e: format_admin_key / split_admin_key / remove_type_prefix, ADMIN_KEY_VERSION = 1, encrypt_proto + const_hex::encode (re-checked 2026-09-28) · observed 2026-09-28 · provider code (ruling R1): an optional prod:/dev: + cloud name or preview:/project: + two slugs lead, the deployment or instance name, exactly one |, then 01 + lowercase hex whose even length 74–96 is derived from the generator (29-byte envelope plus a 8–19-byte AdminKey proto); the docs show the typed leads and the | join
- Reference 1
- Reference 2
- Reference 3
- Reference 4
- Reference 5
- Reference 6
- Reference 7
- Reference 8
- Reference 9
- Reference 10
- Reference 11
- Reference 12
- Reference 13
- Reference 14
- Reference 15
Arrival evidence (#436, product redact-secret#912; #860 handoff convex.md, READY for the hex body). T1 under ruling R1: the provider backend joins {deployment_name}|{encrypted_part}, writes version byte 01, a 12-byte nonce, the AES-GCM-SIV ciphertext and a 16-byte tag, and hex-encodes it in lower case; the 74–96 even length is derived from the proto fields the broker always sets. The CLI accepts prod:/dev: + a cloud name and preview:/project: + two slugs; the slug grammar is project policy (bounded, no source). The secret span is the whole key, name included, because it is the one string the CLI consumes. Excluded: CONVEX_DEPLOYMENT=dev:<name> selectors (no |), convex.cloud URLs, pre-0.16.0 bare keys, team and OAuth tokens, docs placeholders whose body fails the grammar. The current cloud deploy-key body (eyJ2…) is issuance-gated: ruling R4 fixes only its prefix, so no fixture asserts it either way. Neither pinned peer has a Convex rule. Graduated to a registry detector at the 1127bf9 re-pin (redact-secret PR #938).
What the run recorded, by group
| Group | Fixtures | Leaked or false alarms | Near-twins | Outcomes | Other scanners, same cell |
|---|---|---|---|---|---|
| Must not flag · Tool-corroborated | 17 | False alarmsat most 18.4%0 of 17 controls flagged | 17 quiet · 0 flagged |
| |
| Must not flag · Project policy | 8 | False alarmsat most 32.4%0 of 8 controls flagged | 8 quiet · 0 flagged |
| |
| Must redact · Provider-documented | 16 | Secret spans left readableat most 19.4%0 of 16 spans | Near-twins told apartat least 72.2%10 of 10 pairs | 16 redacted · 0 too much · 0 partly exposed · 0 missed |
|
- Fixtures
- 41
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
Fixtures for this detector
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
convex-deployment-key-actions-deployconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-bare-proseconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-bearer-headerconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-chat-pasteconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-compose-self-hostedconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-curl-authorization-convexconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-dotenvconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-exportconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-json-api-keyconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-json-tokenconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-key-shape-bareconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-key-shape-quotedconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-key-shape-unicode-crlfconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-mcp-envconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-sdk-kwargconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-x-api-key-headerconvex · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
convex-deployment-key-actions-secret-referenceconvex · templated-reference | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-adjective-animal-placeholderconvex · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-body-72-twinconvex · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-body-98-twinconvex · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-body-variable-referenceconvex · templated-reference | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-deployment-selector-public-idconvex · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
convex-deployment-key-deployment-urls-public-idconvex · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
convex-deployment-key-digest-after-pipe-encoded-valueconvex · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
convex-deployment-key-docs-name-and-key-placeholderconvex · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-double-separator-twinconvex · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-g-in-body-twinconvex · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-key-guidance-proseconvex · prose-mention | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-label-proseconvex · benign-lookalike | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-maskconvex · benign-lookalike | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-odd-length-body-twinconvex · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-prefix-onlyconvex · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
convex-deployment-key-prod-selector-public-idconvex · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
convex-deployment-key-referenceconvex · benign-lookalike | Must not flagT3 · Project policy | Quiet |
convex-deployment-key-short-bodyconvex · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
convex-deployment-key-space-before-separator-twinconvex · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-table-cell-near-missconvex · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
convex-deployment-key-trailing-glue-twinconvex · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-underscore-name-twinconvex · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-uppercase-hex-byte-twinconvex · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
convex-deployment-key-version-02-twinconvex · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |