Skip to content

chore(deps): update dependency github:mongodb/kingfisher to v2 - #46

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/github-mongodb-kingfisher-2.x-lockfile
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/github-mongodb-kingfisher-2.x-lockfile

Conversation

@renovate

@renovate renovate Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
github:mongodb/kingfisher tools major 1.110.0 → v2.16.0

Release Notes

mongodb/kingfisher (github:mongodb/kingfisher)

v2.16.0

Compare Source

Added
  • Embed five detection-only connection-string password rules
    by default in the CLI, kingfisher-rules, and Python SDK, including PostgreSQL/MySQL/MariaDB
    JDBC query passwords and SQL Server JDBC properties. The catalog now has 501 rules;
    broad generic Betterleaks rules remain excluded.
    #​558
Changed
  • Refresh Betterleaks to v2.0.0-rc.5 with eight new Labelbox, NuGet, and Tailscale
    content detectors. Filename-only rules remain excluded;
    selected Veles rules are unchanged.
  • Detect AWS access IDs without a nearby secret key; validation and revocation
    still require a matching secret.
  • Refresh API-compatible Rust, Python, documentation, and CI dependencies, including
    Vectorscan 0.1.2, Rustls 0.23.46 for the four open Rustls security advisories,
    ZIP 9.1.3 for extraction security fixes, and BIP32 0.6.0 for updated key-derivation crypto.
    Prepare core 1.0.6 for updated dependency minimums; public Rust APIs remain unchanged.
Fixed
  • Detect each connection-string password when multiple connections share a source line,
    including Base64-encoded input, rather than skipping the first password.
  • Keep GCS authentication and JWT validation on the same crypto backend after dependency
    updates, avoiding an uninitialized-provider panic while retaining legacy RSA verification.
  • Parse local let declarations and expression sequences inside Betterleaks
    predicates, including rc.5's generic XML filters. Existing rules need no edits.
  • Keep generated validation and revocation commands concise while preserving required
    component values and named captures, including AWS access-key revocation bindings.
    Omit AWS validation commands when the matching secret component is absent.
  • Reject malformed private-key fixtures with short or numbered placeholder bodies, and
    stop private-key findings at their END marker without consuming nearby source or keys.
    Preserve real private keys pasted with cat -n or editor line-number prefixes.
  • Reject PEM source wrappers without a plausibly encoded key payload using bounded
    structural checks shared by the CLI and SDKs, without matching placeholder or method names.
  • Prepare rules/scanner 3.0.1 and Python SDK 1.6.1 for the shared private-key detection fix.
  • Log PDF extraction failures and limits at DEBUG while continuing to scan raw bytes.
    Hide lopdf reader warnings and errors unless --debug/--verbose is enabled.
  • Show finding details when clicking Investigate in the Overview's Investigation
    Queue, and restore page scrolling and focus when closing the dialog.

v2.15.0

Compare Source

Added
  • Support Betterleaks v2 validation, analysis, and explicit revocation programs,
    including inheritance, custom path-only rules, keywords, specificity, and named
    component captures. Kingfisher YAML also accepts Expr source.
    #​562
  • Add jwt_sign to construct complete RS256 JWTs from JSON claims and PEM keys.
    #​552
  • Add offline, resource-bounded PDF page-text extraction for CLI file, Git-history,
    and archive scans alongside raw-byte scanning. Rust exposes PDF extraction APIs;
    Python users opt in with expand_content(..., pdf=True). See
    extraction scope, limits, and fallback behavior.
  • Add versioned blast-radius assessments with capability risk, authorization
    evidence, coverage limitations, and collection-time timestamps, separate from
    legacy severity. The report viewer provides an investigation-focused workspace
    with searchable policy, role, and resource evidence and system-aware themes.
  • Include provider-issued repository IDs in Git metadata and TOON reports across
    supported SCMs, keeping fork findings distinct. Discovery reuses API metadata;
    explicit remote targets use best-effort, instance-scoped lookups. Local checkout
    scans remain offline. #​564
  • Add KF_GITHUB_MAX_RETRY_WAIT_SECS to configure how long scans wait through
    GitHub quota resets. #​560
Changed
  • Add up to two opt-in HTTP fallback environments through --fallbacks (CLI),
    http_fallbacks=True (Python), or .http_fallbacks(true) (Rust). Validation and
    revocation logic reuse are independent, default to false, and require explicit
    replacement URLs; primary target URLs are never inherited. CLI
    revoke --fallbacks validates to select one environment, while SDK result-based
    revocation retains its validated snapshot. Mutations never fail over.
    Behavior change: legacy HTTP request.url: [primary, secondary, ...] lists
    now use only the primary by default; enabling fallbacks tries at most the primary
    and two alternatives. Existing YAML/TOML rule files still load without edits.
    #​553
  • Behavior change: apply --max-file-size (default 256 MB) to Git-history
    blobs before reading their content. --max-file-size 0 and --no-limits disable
    this size limit without disabling timeouts.
    #​567,
    #​568
  • Behavior change: HTTP revocation no longer follows redirects, including for
    legacy direct-primary rules. Anthropic, Terraform, and DigitalOcean access-map
    requests also refuse redirects; configure final canonical URLs instead.
  • Prepare Python SDK 1.6.0 with explicit analysis and source-attribute scanning,
    and rules/scanner crates 3.0.0 for public Rust schema changes. Existing
    YAML/TOML rule files and Python APIs remain compatible; core uses the compatible 1.0.5 patch.
    Rust callers should follow the 3.0 migration guide.
Improvements
  • Correct crates.io release metadata for the packaged core regression tests and
    verify the regenerated rules-manifest hash during crates-only recovery. Verified
    metadata-only recovery does not require another Python SDK release.
  • Reduce malformed-container and recognized-placeholder false positives with
    conservative, bounded offline private-key checks shared by the CLI and SDKs.
    These checks do not establish cryptographic or live validity. See the
    private-key filter scope.
  • Improve Git file links for punctuation, spaces, Unicode, and literal backslashes
    while preserving directory separators and line anchors.
    #​565,
    #​566
  • Strip clone credentials from reported Git remote URLs and redact OAuth2
    service-authentication credentials from rule-inspection output.

v2.14.0

Compare Source

  • Prepare Python SDK kingfisher-secret-scanner 1.5.0 so the pending shared Rust and Python changes are not skipped as the already-published 1.4.0 release. The Python API remains compatible.

  • Add independent make release crates and make release kingfisher-secret-scanner commands. Infer committed package versions, reject immutable-version conflicts and invalid release contexts before dispatch, and retain verified-artifact publication guards. SDK runtime changes without a required version bump fail before wheel builds.

  • Cache GitHub App installation tokens across workers, coordinate refresh before expiry, and retry rate-limited exchanges with shared failure cooldowns. #​556

  • Improved rules check to verify negative_examples and apply scan-time capture selection, entropy, safe-list, pattern requirements, checksums, and rule filters to both positive and negative examples. Positive examples rejected only by ignore_if_contains remain warnings (errors with --warnings-as-errors) for compatibility with runtime filtering; independent entropy, safe-list, checksum, and rule-filter failures remain errors. #​555

  • Fixed Rust/Python scanning to enforce YAML pattern requirements for raw and Base64 candidates; added offline luhn_valid and iban_valid Liquid checksum filters. #​554

  • Aligned SDK rule execution with the CLI: added typed URI syntax checks, compact full-match component context, shared bounded candidate verification and per-batch validation request grouping. Python preserves finding locations and serialization; Rust exposes additive context APIs. No-options context scans isolate raw and decoded-buffer components; explicit detection options retain their selected matching policy.

  • Rust source API migration only — existing rule files require no changes: prepared kingfisher-rules 2.0.0 and kingfisher-scanner 2.0.0 for the exhaustive HttpValidation.auth field and public rules types/re-exports. OAuth2 service authentication is opt-in; existing Kingfisher YAML and Betterleaks TOML rules continue to load without an auth block or OAuth2 credentials. Only Rust code constructing HttpValidation struct literals needs auth: None, or Some(Box::new(HttpValidationAuth { oauth2: config })) with OAuth2Config/OAuth2PasswordCredentials; Rust scanner consumers must use rules 2.x types. The crates.io packages use core 1.0.4 for the Unicode-decoding fast path already shipped in the CLI; CLI 2.14.0 and Python SDK 1.4.0 are unchanged, with no Python API major break. See the Rust migration guide.

  • Memoize only definitive active/inactive validation results within a batch, keyed by rule and resolved inputs; inconclusive failures and cancellation remain retryable, and shrinking candidate-attempt budgets do not duplicate successful checks.

  • Sped up large Git history scans with candidate-first metadata, subtree pruning and exact ancestor summaries, preserving commit/path attribution without persisting scan data between runs.

  • Reduced memory and decoding overhead with compact indexes, copy-on-write ancestry bitmaps, per-worker Git caches and SIMD Unicode checks.

  • Losslessly packed the tokenizer vocabulary and prioritized scan throughput with release opt-level = 3 (previously "s"); cold-crate size-focused overrides remain.

  • Corrected pairing-budget diagnostics when dependency candidate lists are capped.

  • Added rsa_sha256 Liquid signing for RS256 JWT validation with PKCS#1/PKCS#8 PEM keys. #​552

  • Added Azure Blob Storage scanning with SAS, account-key, Entra-token, and anonymous authentication.

  • Added shared path/extension selection across files, Git sources, and archive members; S3, GCS, Azure Blob, and Hugging Face storage scans filter before downloading and support resumable listings and incremental caching with complete reports.

  • Made storage page checkpoints append-only with end-of-scan compaction; retry changed Azure/GCS objects with current version identities and skip deleted objects with warnings.

  • Enforced S3/GCS/Azure Blob download caps while streaming and honored Azure timeout controls; improved per-object failure handling without marking failed pages complete. Isolated cache entries by endpoint/selection policy and removed stale, orphaned and abandoned temporary objects safely.

  • Preserved literal ! in source/archive-member paths, rejected empty path prefixes and retained nonempty slash-suffixed storage objects. Skip malformed Hugging Face entries without losing valid files, reject unsafe/repeated pagination links and bound Confluence pagination without visible progress.

  • Preserved repository links, commit IDs and file paths with --commit-metadata=false while hiding author, committer and date details.

  • Added OAuth2 password-grant authentication for custom HTTP validators, with environment-backed credentials, token reuse/refresh, failure cooldowns, and fixed-origin delivery. HTTPS token/verifier requests retain strict TLS and environment proxy/NO_PROXY handling; explicitly allowed loopback plain-HTTP token/verifier requests connect directly without proxies. Redirects stay disabled for both; other validators' TLS/proxy policies are unchanged.

  • Added Jira access checks and project exclusions; hardened Jira/Confluence rate-limit handling, pagination, and API context paths. Expanded target/authentication examples in the README and guides.

  • Jira migration: API requests no longer follow redirects, including same-origin redirects. Reverse-proxy installations must pass the final canonical --url, including any context path such as /jira.

  • Retry transient GitHub API failures and rate limits with bounded backoff and server-provided cooldowns. #​551

  • Behavior change: --no-limits lifts content caps and preserves timeouts; add --no-timeouts to disable scan operation deadlines. Bound SMTP cleanup and SQLite lock waits. #​524

v2.13.0

Compare Source

  • Refreshed workspace Cargo dependencies to compatible releases.

  • Added bounded, read-only Amazon Bedrock discovery to AWS blast-radius mapping: regional foundation-model and inference-profile visibility, per-model authorization/entitlement/agreement/region availability sampled across providers, and explicit partial-permission, timeout, and coverage limits. JSON and both HTML viewers retain region/model context without invoking or enabling models; the standalone graph uses model IDs as labels with full ARNs in the details.

  • Fixed crates.io publication by bumping kingfisher-rules to 1.2.1 for the regex confirmation changes shipped in v2.12.0 and updating the CLI and scanner dependency requirements. The unchanged core remains at 1.0.3, and the unpublished scanner release remains at 1.4.0.

  • Fixed rejection of GitHub usernames ending in - for --user and --user-file. #​547

  • Fixed startup segfaults in dynamically linked Linux builds, including nixpkgs with glibc 2.44, by disabling mimalloc's native allocator overrides while retaining it for Rust allocations. Added a regression test for free(NULL) before process initialization. #​549

v2.12.0

Compare Source

  • Avoided redundant regex confirmation widening in the CLI and SDK while preserving matches when iterator alignment shifts. #​545

  • Fixed prepared validation outcome parity, preserved scan state during credential preparation, and retained completed revocation evidence across cancellation.

  • Preserved per-rule revocation results after failures; HTTP revocation now defaults to no retries and retries HTTP 429 only on read-only lookup steps. Custom mutations are never retried, and mutating 429 responses have unknown outcomes. AWS IAM mutations retry definitive throttling without repeating ambiguous failures.

  • Removed secret-bearing URLs from CLI HTTP revocation errors and capped Docker API export downloads before writing excess bytes to disk, preserving explicit unlimited mode.

  • Isolated the Docker CLI test fixture from system executables on Windows.

  • Fixed Docker host precedence, surfaced local image export failures, preserved files named layer.tar, and isolated image output directories without deleting existing caller files.

  • Fixed Python source-package fixtures and Windows Docker test executables, preserved the stable Rust credential URI API, and distinguished revocation failures before mutation from unknown submitted outcomes.

  • Enforced release tag ancestry, matching changelog notes and existing release commit identity; SDK publish retries now upload missing PyPI distributions.

  • Added local image scanning through the Docker Engine API via Bollard, with active-context support, Docker CLI/OCI fallbacks, and cleanup of failed local attempts.

  • Added SMTP credential validation through STARTTLS or implicit TLS without sending email, including credential URIs, a separate-field custom rule example, common-port fallback, and distinct accepted, rejected, and inconclusive outcomes. #​544

  • Added offline Python revocation preparation with exact rule IDs/names or deterministic provider families, explicit candidate validation and advisory-only typo suggestions.

  • Added source-text/file revocation preparation, structured missing-input diagnostics, and explicit batch revocation with complete-input deduplication and retained interruption outcomes.

  • Documented custom YAML revocation actions in the Python SDK and added custom catalog options to the preparation and batch examples.

  • Added resolved credential inputs and result-based Python revocation, automatically reusing validated AWS pairs and other supporting values.

  • Fixed slow scans with dense newline-separated findings for eligible unbounded regex rules, including Auth0 domains and eBay client IDs, without changing findings. #​537

  • Made AWS access-key revocation safer and more reliable by resolving the IAM username explicitly, rejecting temporary ASIA credentials, and reporting indeterminate mutation outcomes as unknown.

  • Added opt-in AWS responder credentials through a named profile or the default credential chain, explicit target usernames and regions, and explicit deactivate or delete actions; deletion is never an automatic fallback.

  • Released kingfisher-scanner 1.4.0 with the structured AWS revocation options and outcome API.

  • Bumped the Python SDK to 1.4.0 for the new validation and revocation workflows and SMTP support.

v2.11.1

Compare Source

  • Fixed RPM upgrade file conflicts by restoring the kingfisher package name and replacing misnamed packages.
  • Added Linux package metadata checks and Amazon Linux 2023 upgrade tests for x64 and ARM64.

v2.11.0

Compare Source

  • Handled malformed Git tree modes without panics, guarded staged tree ancestry, normalized legacy index modes, and avoided revisiting reachable commits when including unreachable objects.

  • Propagated strict archive member errors, removed partial ZIP/TAR files, preserved TAR/ZIP bytes when no output directory is supplied, and bounded best-effort SQLite schema listing with skipped-table warnings.

  • Pruned stale compiled-cache temporary files, preserved existing entries when replacement fails, reported cache rejection reasons once per process, and bound line-filter cache keys to source identity without cloning patterns on hits.

  • Validated Python archive/content options eagerly, excluded case variants of .git, rejected unrepresentable Git hour bounds, and clarified extraction budgets and format-specific entry accounting.

  • Preserved separately encoded secrets in nested Base64 siblings by scoping CLI and SDK containment checks to each decoded buffer.

  • Refreshed the Betterleaks catalog to v2.0.0-rc.1,
    adding Bitbucket Data Center HTTP access tokens, Cloudflare cfut_/cfat_ tokens and their
    account-ID helper, and fixing Tableau personal access tokens beginning with + or /.
    The legacy Cloudflare rule is now betterleaks.cloudflare-api-key.1; the family selector
    continues to cover both formats. Updated expression-helper support preserves upstream
    validation checks. Built-in coverage is now 488 rules (462 Betterleaks and 26 Veles),
    with 255 supporting validation. Regenerated the bundle, provenance, source archive, and docs.

  • Preserved every repeated TAR member during extraction and made SDK compressed-stream budget exhaustion fail before returning partial archive members.

  • Reused compiled rule caches across compatible deployments with exact engine build identity and automatic recompilation on native CPU/version rejection. #​538

  • Enabled Python SDK caching by default with Rules(cache_dir=...) and Rules(cache=False) controls.

  • Fixed SDK lazy-span scan slowdowns (up to 50× faster) without changing findings. #​536

  • Fixed dense-finding scan slowdowns in regex confirmation, catalog/component matching, URI overlap, and inline-ignore checks. #​537

  • Improved dense scans with long lines, chained components, Base64 URIs, and HTML/CSS; fixed inconsistent source locations.

  • Added regression benchmarks: up to 144× faster SDK and 74× faster CLI on the issue reproducer, with unchanged finding counts and comparable or improved repository and Git-history scan times.

  • Added composable Python filesystem and Git-history enumeration through ScanInput, filesystem(), git_history(), and Scanner.scan_inputs(). Callers can supply their own Python iterators or use native enumeration without changing existing SDK signatures or behavior.

  • Added explicit Python archive expansion with shared CLI extractors, nested-depth and per-root budgets, cooperative controls, and source/Git metadata retained with each findings group.

  • Added commented Python examples for filesystem enumeration, native versus Python-managed Git history, and archive scanning from files or bytes; documented composition, limits, and validation grouping.

  • Preserved invalid UTF-8 secrets during HTML/CSS context filtering in the CLI and SDK.

  • Added opt-in Python DetectionScanner and Rust detection options for shared CLI confirmation/component-window semantics, credential-URI fallback and secret containment suppression, bounded two-level Base64 decoding, inline-ignore and HTML/CSS context filtering. Existing SDK signatures and defaults remain unchanged.

  • Isolated new CLI helper APIs behind explicitly unstable features, kept optimized confirmation state opaque, and preserved exhaustive matches of the existing embedding confirmation enum.

  • Added CLI/SDK parity, nested Base64 limit, full-match component-anchor, and context-phase interruption regressions; interrupted scans return no partial findings or dedup commits.

  • Added composable expand_content() for shared SQLite SQL and Python bytecode string extraction from files, historical blobs and archive members, with source provenance, per-input budgets and controls retained.

  • Added native git_inputs() with GitScope history baselines, inclusive branch roots, time windows, snapshots, net diffs, staged index content and unreachable object coverage; GitInput retains multiple scoped occurrences, author/committer identities and times, parents and messages without modifying repositories.

  • Added commented detection, SQLite/bytecode and Git-scope examples, contract/regression tests and updated SDK/Rust documentation.

  • Added frozen Python DetectionPolicy configuration, direct native finding properties and structured result conversion, and scanning of borrowed Python bytes.

  • Improved dense multiline credential scanning by reusing confirmed matches while preserving capture values and offsets.

  • Shared native Git scope enumeration with the Rust library, skipped unchanged subtrees, shared commit metadata, and added blob/preparation limits, non-UTF-8 path provenance and explicit missing-object handling.

  • Enforced nested extraction budgets while writing, hardened SQLite parsing, supported temporary-directory selection and reported malformed-content fallback diagnostics. Corrected Python 3.11+ marshal code-object parsing and handled Python 3.14 slice constants.

  • Added cancellable validation/revocation batch deadlines, Ctrl-C handling and safe revocation error categories.

  • Hardened compiled cache ownership/permissions and payload integrity, removed the shared temporary fallback, and preserved exact native engine build identity.

  • Bumped kingfisher-core to 1.0.3, kingfisher-rules to 1.2.0 and kingfisher-scanner and Python SDK to 1.3.0.

v2.10.0

Compare Source

  • Fixed Windows Git timeout cleanup and long-path support; added KF_GIT_BINARY, KF_GIT_SSL_BACKEND, and Git for Windows CI coverage.
  • Pinned builds to Rust 1.99.0 and fuzzing to nightly-2026-10-02; added latest-stable CI coverage. Minimum Rust is now 1.99.
  • Simplified Unicode decoding and resolved Rust 1.99 Clippy warnings.
  • Consolidated native scanner pooling and split application internals into private modules while preserving public APIs.
  • Added Clippy and API documentation checks to CI; fixed Windows test runtime setup and flaky fixtures.
  • Corrected source comments, API documentation, and CLI help; removed obsolete annotations.
  • Prepared kingfisher-core 1.0.2, kingfisher-rules 1.1.0, kingfisher-scanner 1.2.0, and Python SDK 1.1.0 for the toolchain, matching, and embedding updates.
  • Documented version-specific release verification, linked it from the README, and added a maintainer runbook for tag-based publishing. #​531
  • Fixed repeated-candidate scan slowdowns in the SDK and CLI while preserving regex match semantics. #​532
  • Reduced span-tracking costs and filter input copying.
  • Replaced Git subprocesses with gix for faster repository audit metadata.
  • Added optional cooperative scan timeouts and cancellation to the Rust and Python SDKs.
  • Added Python rule-detail inspection and a Rust embedding example for regexes, filters, dependencies, validation and revocation definitions.
  • Expanded Python examples and documentation for directory scans, filtering, validation, deduplication, and cancellation.

v2.9.1

Compare Source

  • Updated PyO3 to 0.29.3 to fix Python binding memory-safety and thread-safety advisories.
  • Fixed crates.io packaging and bumped kingfisher-core to 1.0.1.
  • Enabled Python SDK publishing on merges to main, preserving every pending release.
  • Added Rust and Python homepage quick starts and clarified the open-source revocation comparison.

v2.9.0

Compare Source

  • Fixed the validation-phase message to appear when credential validation begins.
  • Reduced scan CPU use in Base64 and Unicode detection without changing scan results.
  • Library behavior change: validation timeout(Duration::ZERO) and max_response_bytes(0) now disable their respective limits instead of returning a build error.
  • Added --no-limits for unlimited scan budgets and timeouts. Behavior change: --extraction-depth 0 disables the archive depth limit; use --no-extract-archives to disable extraction. #​524
  • GitHub user/org and GitLab user/group scans now overlap discovery, cloning, and scanning; added --user-file for both providers. Behavior change: clone limits select the first unique repositories discovered per provider in API order; explicit Git URLs and added wiki URLs are not counted. #​525
  • Added --since-hours N for recent Git history scans. Behavior change: --since-commit now scans all refs by default; use --branch HEAD to retain the previous scope. --branch restricts either scan. #​526

v2.8.0

Compare Source

  • Behavior change: --since-commit now scans full commit ranges by default, catching secrets later deleted. Use --git-history none for net-diff scanning. #​518
  • Added Git author name and email alongside committer information in finding metadata. #​519
  • Improved --branch scan performance by avoiding per-commit Git index setup.
  • Branch-only remote scans now fetch just the selected branch and keep branch-specific clones separate from full-repository clones. #​514
  • Added the optional native wizard (gui) for configuring scans, tracking progress, and inspecting JSON/JSONL or SARIF reports with filters, exports, and Git provenance.
  • Added independent report tabs and native Kingfisher desktop icons for macOS, Linux, and Windows.
  • Improved wizard readability with comma-separated counts, compact column controls, clickable commit links, and a Local Web Viewer action that preserves imported reports.
  • Library behavior changes: ScannerConfig::enable_dedup now defaults to false (previously true). Opt-in deduplication keys on both blob ID and source path, preserving identical content at different paths. Betterleaks filter evaluation errors now fail the scan call instead of silently keeping the finding.
  • Stabilized the 1.0.0 embedding APIs for kingfisher-core, kingfisher-rules, and kingfisher-scanner, with runnable examples and version-aware crates.io publishing for all crates, including kingfisher-bin.
  • Switched to the published kingfisher-vectorscan crate and its checksum-verified prebuilt archives, removing the local Vectorscan CMake build on supported targets. Windows builds use GNU/LLVM MinGW; MSVC is unsupported.
  • Replaced the temporary MongoDB driver Git pin with crates.io 3.8.0, retaining SRV validation and the Hickory 0.26 DNS fix.
  • Fixed scan-time validation requests to send a User-Agent, preventing services such as GitHub from rejecting them. Thanks @​wingc-canva. #​512

v2.7.0

Compare Source

  • Added opt-in bounded verification for ambiguous credential components, with ranked candidates for AWS, BrowserStack, ClickHouse Cloud, MongoDB Atlas, PlanetScale, Razorpay, and Wiz.
  • Kept unresolved pairings inconclusive: searches try at most 16 combinations within 30 seconds, and only authoritative validation success selects a pair. Candidate verification requires supported fixed destinations, disables HTTP redirects, and keeps unselected secrets out of reports.

v2.6.0

Compare Source

  • Added opt-in GitHub gist scanning #​508, plus GitLab and Bitbucket Cloud snippet scanning, with full Git history.
  • Reduced peak scan memory: findings now deduplicate on exact cryptographic digests alone (the Bloom prefilter and its dependency were removed), the Git object index stores each object ID once, and raw matcher bookkeeping was slimmed.
  • Added opt-in --disk-offload to reduce accumulated finding memory across repositories; it falls back to memory with a warning when temporary storage fills up.
  • Fixed HTML report validation filters to match displayed states, including assumed-valid, invalid-material, and skipped-canary findings.

v2.5.0

Compare Source

  • Behavior change: scan --branch <ref> now scans all reachable history by default, finding secrets deleted in later commits, including merged history. Use --git-history none to retain snapshot-only scanning; explicit diff options keep their existing scope. Full-history scans may need more time and memory, and history enumeration shares the repository’s --git-repo-timeout budget. #​503

v2.4.0

Compare Source

  • Fixed scans missing secrets in UTF-16 and UTF-32 files, including little-/big-endian files with or without a BOM.
  • Hardened the HTML report viewer with safer imported-data rendering, restricted external links, and a tighter browser security policy.

v2.3.0

Compare Source

  • Improved report filtering, grouped selection, command copying, and finding details in the local viewer and standalone HTML reports.
  • Fixed probabilistic deduplication dropping unique findings by confirming duplicates with exact keys.
  • Recorded terminal scan coverage for streamed non-Git inputs, including Docker images.
  • Pinned release Docker images to the requested release version.
  • Limited the pretty report's REPOSITORY COVERAGE section to scans that request --audit-log.
  • Fixed --no-dedup scans to reuse validation results across duplicate findings and parallel scan phases.
  • Fixed dependent-secret validation stalls and duplicate provider requests caused by concurrent waiters.
  • Added overlay-derived bare detection for contextual Betterleaks API-key rules (DeepSeek, Kimi, ZAI, and Voyage AI).
  • Fixed CredentialUri TLS-mode handling, dependency-aware deduplication, and ambiguous dependency pairing so validation does not guess an endpoint. #​500
  • Reused dependent validation when credential and dependency values match across source locations.
  • Made direct validation reject ambiguous short rule selectors instead of trying an unintended rule. #​500

v2.2.0

Compare Source

  • Added repository coverage manifests and incremental --audit-log JSONL events, including
    discovery, fetch, scan outcome, Git scope, and per-repository scan statistics.
  • Added read-only Google API-key blast-radius probes for Identity Toolkit, Generative Language,
    Translation, and YouTube services.
  • Updated Cargo dependencies, including AWS SDK, Git, TLS, and runtime libraries.
  • Explicitly enabled HTTP/2 for outbound validation requests to improve connection reuse and multiplexing.
  • Refreshed the pinned Betterleaks catalog to commit
    95237cf,
    adding the Voyage AI API-key detector. Built-in coverage is now 485 rules (459 Betterleaks and
    26 Veles), with 246 rules supporting validation. The OSV-SCALIBR Veles audit found no new secret
    detectors since the existing pinned revision.

v2.1.0

Compare Source

  • Added GitHub App authentication for GitHub organization scans. Configure
    KF_GITHUB_APP_ID, KF_GITHUB_APP_INSTALLATION_ID, and either
    KF_GITHUB_APP_PRIVATE_KEY or KF_GITHUB_APP_PRIVATE_KEY_PATH to let Kingfisher
    sign short-lived App JWTs and mint a fresh installation token immediately before
    each repository clone, allowing scans to run beyond GitHub's one-hour installation-token
    lifetime. A complete App configuration takes precedence over KF_GITHUB_TOKEN, which
    continues to support personal access tokens and pre-minted installation tokens. #​488
  • Further improved read-only AWS and GCP blast-radius role-impact analysis, included by default. AWS maps
    direct and one-hop assumable IAM roles; GCP maps impersonatable service accounts, inherited
    roles, and hierarchy scopes. Reachable roles and their policy grants are preserved in JSON,
    TOON, SARIF, and HTML reports/viewers.
  • Added direct single-finding blast-radius mapping with kingfisher blast-radius --rule <RULE> <SECRET>, including stdin and component variables. Exposed Blast Radius Cmd in all report formats, aligned pretty output labels, and documented JSON/jq command extraction in the defender workflow.
  • Added HTTPS Basic Auth validation for Betterleaks' generic-credential-uri rule. Kingfisher
    sends credentials only after an unauthenticated request receives an explicit Basic challenge;
    plaintext HTTP and endpoints without authoritative authentication evidence remain inconclusive.

v2.0.0

Compare Source

  • Added Kingfisher-side typed validation for Betterleaks' generic-credential-uri rule without
    changing its detector: PostgreSQL, MySQL/MariaDB, and MongoDB URI captures now use the
    corresponding live validator and feed validated credentials into blast-radius mapping, while
    unsupported URI schemes remain detected with validation not attempted. JDBC strings containing
    a credential-bearing PostgreSQL/MySQL URI are handled through that inner URI, and direct
    CredentialUri validation also dispatches supported jdbc: inputs.
  • Removed the Veles Paystack, PyPI, and Square OAuth application-secret adapters. PyPI upload-token and Square access-token detection remain covered by Betterleaks; Paystack and Square OAuth application-secret built-in coverage are no longer included.
  • Security: the MongoDB, MySQL, Postgres, and JDBC validators now enforce the same SSRF gate as the HTTP/gRPC/JWT validators. Previously they only rejected loopback/unspecified hosts, so a crafted connection string in scanned content could make Kingfisher open TCP connections to RFC1918, link-local (including 169.254.169.254), CGNAT, and other non-public addresses, turning the scan report into an internal-network reachability oracle. Every host in a Postgres multi-host URL and every MongoDB seed — including hosts resolved via mongodb+srv:// SRV records — is now checked, and blocked targets report a constant message instead of the driver's connection error. Use --allow-internal-ips to opt back in.
  • Breaking (library): validate_mongodb, validate_mysql, validate_postgres, and validate_jdbc take an additional allow_internal_ips: bool argument.
  • Restored per-rule tls_mode for built-in rules. The imported-rule capability overlay now accepts tls_mode: strict | lax | off, and betterleaks.mongodb-connection-string and betterleaks.jwt declare lax so self-managed clusters and self-hosted IdPs presenting private-CA or self-signed certificates validate again. This remains opt-in on both sides: it takes effect only when the operator also runs --tls-mode lax (or --tls-mode off). The build rejects an unknown tls_mode value, or a tls_mode on a rule with no validator.
  • Kingfisher 1.x rule selectors keep working. --rule, --exclude-rule, and rules.disabled entries naming kingfisher.* IDs now resolve to their 2.x replacements through a new alias table, with a one-time deprecation warning naming the selector to migrate to, instead of failing the scan. Exact kingfisher.* IDs still win when the 1.x catalog is loaded via --rules-path, and an unknown kingfisher.* selector is still an error.
  • Added a rule-coverage drift guard. crates/kingfisher-rules/data/legacy-rule-aliases.yml maps
    migrated Kingfisher 1.x families with known 2.x replacements, and a test asserts each alias target
    still resolves against the built-in catalog, so an upstream release that drops a replacement fails
    the build instead of silently breaking that compatibility path.
  • Restored scan-time access mapping for validated Veles rules (Slack app-level/config tokens, DigitalOcean, SendGrid), which previously reached the rule-ID dispatch and matched nothing.
  • Breaking: moved the candidate detector catalog to the Betterleaks rule format, with selected
    Veles detectors filling gaps, giving the community a well-designed shared format and a common
    place to develop generally useful rules.
  • Kingfisher now fetches and parses the Betterleaks catalog and selected Veles source files at build
    time; the Kingfisher rule format (YAML) remains supported for custom rules.
  • Preserved Kingfisher's engine capabilities around validation, blast-radius mapping, and credential revocation while allowing us to focus investment on scan performance, integrations, and analysis workflows.
  • All rules now use Vectorscan candidate detection, eliminating unconditional whole-blob regex fallbacks for Betterleaks' large generic credential patterns; Betterleaks path and finding-filter regex helpers are also compiled once with Vectorscan instead of being rebuilt per path or finding.

v1.113.0

Compare Source

  • Added repository-aware v2 baselines with safe multi-repository updates, atomic writes, and automatic migration while retaining legacy baseline compatibility.
  • Added configurable webhook finding filters, empty-alert suppression, dry-run previews, and access-map impact summaries.
  • Breaking: the alert payload field summary.filtered_total was removed; read summary.total (now always the per-sink filtered count) and the new summary.unfiltered_total for the whole-scan count.
  • Breaking (library): FindingsStore::access_map_results/set_access_map_results and AccessMapCollector::into_requests are no longer public.
  • Added Qwen, Solana, and Starknet detection rules, plus Databricks OAuth client-secret and Kubernetes ServiceAccount token rules.
  • Tightened MongoDB Atlas API key detection and stopped the Databricks workspace-host rule from matching azurewebsites.net.
  • Fixed Google API-key attribution and validation, including YouTube handling and documented Gemini header authentication; added Google Chat webhook detection and authoritative rule provenance.
  • Removed the duplicate Google OAuth rule and clarified Firebase FCM legacy server-key detection and documentation.
  • Refreshed built-in rule and revocation coverage documentation.

v1.112.0

Compare Source

  • Added offline Ethereum key/BIP-39 detection with explicit local-validation outcomes, inspired by #​468 from @​audityourcontracts.
  • Hardened validation caching and panic handling to avoid secret exposure.
  • Fixed remote Git URL scans hanging with --jobs 1. #​469

v1.111.0

Compare Source

  • Reduced Git scan metadata memory usage by interning repeated committer names and email addresses.
  • Reduced peak memory during large scans by bounding Git delta caches per worker and streaming matcher chunks; --jobs now controls the scanner worker pool.
  • Added first-class validation outcomes and --validation-filter actionable, allowing active credentials and high-confidence assumed-valid secrets such as private keys to remain visible together without labeling assumed findings active. --only-valid remains strict active filtering. Thanks @​wing-cheng. #​440
  • Expanded GCP coverage with validated generic and Express Mode API keys, GCS HMAC key pairs, and Application Default Credentials, drawing on Veles and Betterleaks.
  • Hardened GCP validation with Google-only OAuth endpoints, read-only multi-API key probes, and concise responses that avoid exposing minted access tokens or bucket metadata.
  • Fixed alert webhooks reporting a temporary stdin file instead of an explicitly requested non-path scan target in non-interactive runs. #​452
  • Fixed kingfisher scan - <path> discarding the sibling paths when staging stdin; stdin now replaces only the - placeholder.
  • Fixed direct validation for Atlassian API keys using the documented Organizations API. #​461
  • Fixed self-hosted Bitbucket scans to recognize http-labeled HTTPS clone links instead of falling back to SSH. #​462
  • Added Jira Cloud and Confluence Cloud scanning improvements, including complete pagination, full issue descriptions, and --all support. Thanks @​Safenein. #​460
  • Renamed "Access Map" to "Blast Radius" throughout the CLI, HTML and pretty reporters, the standalone and report viewers, and documentation; --blast-radius is now the primary flag, while the --access-map alias and access_map JSON field names remain unchanged for backwards compatibility.

Configuration

📅 Schedule: (in timezone UTC)

  • Branch creation
    • Between 12:00 AM and 03:59 AM, only on Monday (* 0-3 * * 1)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

🛡️ Plumber — CI/CD Security Compliance

✅ No Critical-severity findings

No findings on this branch.

View this run

@renovate
renovate Bot force-pushed the renovate/github-mongodb-kingfisher-2.x-lockfile branch 3 times, most recently from 3bdac7e to 1aaeeda Compare September 29, 2026 20:04
@renovate
renovate Bot force-pushed the renovate/github-mongodb-kingfisher-2.x-lockfile branch 5 times, most recently from ed18185 to dba1fe6 Compare October 8, 2026 02:09
@renovate
renovate Bot force-pushed the renovate/github-mongodb-kingfisher-2.x-lockfile branch 2 times, most recently from 062852f to b55c344 Compare October 13, 2026 04:31
@renovate
renovate Bot force-pushed the renovate/github-mongodb-kingfisher-2.x-lockfile branch 2 times, most recently from b3af2b0 to 1a46552 Compare October 26, 2026 18:48
@renovate
renovate Bot force-pushed the renovate/github-mongodb-kingfisher-2.x-lockfile branch from 1a46552 to 3dcf0c9 Compare October 28, 2026 03:05
@renovate
renovate Bot force-pushed the renovate/github-mongodb-kingfisher-2.x-lockfile branch from 3dcf0c9 to fd750c8 Compare October 30, 2026 05:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants