pypi ggshield 1.56.0

5 hours ago

Added

  • honeytoken plant can now plant kubeconfig honeytokens (--type kubeconfig, --method kubeconfig). The decoy context, cluster and user are merged into ~/.kube/config next to the user's real entries and removed again when the honeytoken is revoked. On a fresh kubeconfig the decoy becomes the current-context; an existing active context is never changed, so the owner's own kubectl cannot trip the decoy.

  • ggshield machine setup now registers the machine on the GitGuardian Endpoints page, so it is listed before its first scan.

  • ggshield secret scan pre-commit, pre-push and ai-hook now send the machine hostname, from which GitGuardian registers the users of these hooks. Other scan commands and the native AI hook do not send it, and no scan sends it on CI.

  • Set endpoint_registration: false in .gitguardian.yaml, or GGSHIELD_NO_ENDPOINT_REGISTRATION to a non-empty value, to turn both off.

Changed

  • Commands that need git now say so in their --help, and when git is not installed they report which command it needs, and how to install it.

  • machine setup and machine doctor no longer crash when git is not installed: the git hooks step is skipped with a warning, and doctor reports it as skipped without failing.

  • secret scan path --use-gitignore reports that it requires git instead of failing with an unexpected error.

  • The Linux and macOS release binaries now bundle Python 3.14.8 instead of 3.14.6, fixing CVE-2026-19445 and CVE-2026-19553 in the bundled interpreter.

Fixed

  • honeytoken plant no longer echoes a line of ~/.aws/credentials when the file cannot be parsed. The parser quotes the offending line, so a corrupt credentials file printed the user's real secret key on stderr, and into the fleet logs when plant runs under an MDM. Only the error type and the line number are reported now.

  • ggshield secret scan pre-receive now uses the system trust store in its child process, which no longer inherited it on Python 3.14 (#1508).

  • ggshield secret scan ai-hook now verifies the instance's TLS certificate against the OS trust store.

  • ggshield secret scan ai-hook now honors REQUESTS_CA_BUNDLE and CURL_CA_BUNDLE, from the environment or .env, like the rest of ggshield. A path that does not exist makes the scan fail, as it already does for other commands.

  • On Windows, ggshield starts on machines without the Microsoft Visual C++ Redistributable. Since 1.54.0 it exited silently there, because the launcher needed VCRUNTIME140.dll. install.ps1 also reports an error when the installed ggshield cannot run.

  • Secret scans no longer fail with a server error when a batch of files goes over the API payload limit once JSON-encoded (escaped quotes, newlines, non-ASCII or control characters). Batches are now sized by their encoded length, and a file too large to fit in any request is skipped with a message.

  • The AI hook no longer lets a tool call through unscanned when its content goes over the API payload limit once JSON-encoded: batches are sized the same way.

  • The AI hook no longer has Claude Code echo the blocked prompt back: a prompt blocked because it holds a secret used to be shown again after "Original prompt:" in the block message, secret included. The hook now sets suppressOriginalPrompt.

  • When the GitGuardian API fails with an HTML error page, for example on a scan that runs past the server time limit, ggshield now prints a one-line error with the HTTP status instead of the page. The page is still logged with --debug.

Don't miss a new ggshield release

NewReleases is sending notifications on new releases.