redact-secret · Report · Detector
PyPI tokens
Format evidence
- Provider documentation pypi- prefix, base64-serialized PyMacaroon, {85,} length floor · observed 2026-09-21 · docs.pypi.org's own detection-format page publishes this contract's exact regex, pypi-[A-Za-z0-9-_]{85,}: the pypi- prefix, a "-" separator, a base64 PyMacaroon serialization, an 85-character floor and no ceiling
- trufflehog 3.97.4
- gitleaks 8.30.1
- Reference 1
Re-checked 2026-09-21 (#104/#107, docs/decisions/2026-09-21-author-pypi-macaroon-positives-synthetically.md): the prior review here read "no lexical length contract" from pypi.org/help alone; docs.pypi.org/api/secrets instead publishes the exact regex now used as this contract's pattern, and #104 verified it is also what the pinned scanners and this project's own product key on. A positive is additionally constructed as a well-formed libmacaroons v2 body (VERSION, LOCATION("pypi.org"), IDENTIFIER, one caveat, SIGNATURE) per the linked decision record, not merely an arbitrary {85,}-byte run.
What the run recorded, by group
Detector views overlap, so their groups are never summed across detectors. Other scanners are reference values on the same inputs, in run order.
| Group | Fixtures | Leaked or false alarms | Near-twins | Outcomes | Other scanners, same cell |
|---|---|---|---|---|---|
| Must not flag · Tool-corroborated | 13 | False alarmsat most 22.8%0 of 13 controls flagged | 13 quiet · 0 flagged |
| |
| Must not flag · Project policy | 4 | False alarmsinsufficient-evidence0 of 4 controls flagged | 4 quiet · 0 flagged |
| |
| Must redact · Provider-documented | 9 | Secret spans left readableat most 29.9%0 of 9 spans | Near-twins told apartat least 70.1%9 of 9 pairs | 9 redacted · 0 too much · 0 partly exposed · 0 missed |
|
- Fixtures
- 26
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
Fixtures for this detector
26 fixtures. Choose "Every scanner" to see each scanner's outcome for the same rows.
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
pypi-token-gitlab-ci-variablespypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-noxfile-publishpypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-public-idpypi · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
pypi-token-pypircpypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-shape-1-barepypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-shape-1-length-bare-twinpypi · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-length-quoted-twinpypi · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-length-unicode-crlf-twinpypi · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-quotedpypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-shape-1-unicode-crlfpypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-twine-envpypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-twine-upload-flagpypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-uv-publish-tokenpypi · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
pypi-token-encoded-valuepypi · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
pypi-token-label-prosepypi · benign-lookalike | Must not flagT3 · Project policy | Quiet |
pypi-token-maskpypi · benign-lookalike | Must not flagT3 · Project policy | Quiet |
pypi-token-ordinary-prosepypi · benign-lookalike | Must not flagT3 · Project policy | Quiet |
pypi-token-prefix-onlypypi · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
pypi-token-referencepypi · benign-lookalike | Must not flagT3 · Project policy | Quiet |
pypi-token-shape-1-alphabet-bare-twinpypi · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-alphabet-quoted-twinpypi · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-alphabet-unicode-crlf-twinpypi · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-bare-twinpypi · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-quoted-twinpypi · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-shape-1-unicode-crlf-twinpypi · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
pypi-token-short-bodypypi · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |