[v1.98.0]
- Bounded disk usage for large multi-repo scans (e.g.
--include-contributors --repo-artifactsagainst orgs with thousands of repos): cloning, artifact fetching, and scanning now run concurrently through bounded channels, and each cloned repo is removed from the temp directory as soon as its scan completes. On-disk footprint stays roughlyO(num_jobs)regardless of total repo count instead of growing without bound.--keep-clonesand--git-clone-diropt out of the per-repo cleanup as before. - Parallelized
--repo-artifactsfetching withbuffer_unordered(num_jobs)so issue/PR/wiki API calls run concurrently and stream into the scan loop, replacing the previous per-repo serial loop that delayed the start of scanning by hours on large fan-outs. - Streamed
--format jsonoutput as compact one-envelope-per-line so concatenated per-repo emits from the parallel scan path produce valid JSONL thatkingfisher viewcan load. Pipe throughjq .for pretty-printed output. - Fixed a panic in the lexer when a string literal ends in a trailing backslash (
'... \); the escape handling now clamps past-EOF soextract_literal_valuesreturns instead of slicing out of bounds. - Added first-class Postman scanning target: new
kingfisher scan postmansubcommand (and equivalent--postman-*flags) fetches workspaces, collections, and environments via the Postman API and scans them for hard-coded credentials in requestauthblocks, pre-request/test scripts, saved example responses, and — notably —secret-typed environment variables, which the API returns in plaintext despite the UI mask. Selectors:--workspace,--collection,--environment,--all, with optional--include-mocks-monitorsand--api-urlfor self-hosted endpoints. Authenticates viaKF_POSTMAN_TOKEN(orPOSTMAN_API_KEY) sent asX-Api-Key; honorsX-RateLimit-RetryAfteron 429s. Findings link back tohttps://go.postman.co/...URLs in reports. - Fixed #359: added
kingfisher.github.9to detect the new ~520-character stateless GitHub App installation token format (ghs_<APP_ID>_<JWT>). The legacy 36-characterghs_rule (kingfisher.github.5) is retained for older / GHES-issued tokens that are still in circulation. - Added provider endpoint overrides for validation and revocation via global
--endpoint PROVIDER=URLand--endpoint-config FILE, with built-in support for self-hosted GitHub, GitLab, Gitea, Jira, Confluence, and Artifactory instances.