Added
-
honeytoken plantcan now plant kubeconfig honeytokens (--type kubeconfig,--method kubeconfig). The decoy context, cluster and user are merged into~/.kube/confignext to the user's real entries and removed again when the honeytoken is revoked. On a fresh kubeconfig the decoy becomes thecurrent-context; an existing active context is never changed, so the owner's ownkubectlcannot trip the decoy. -
ggshield machine setupnow registers the machine on the GitGuardian Endpoints page, so it is listed before its first scan. -
ggshield secret scan pre-commit,pre-pushandai-hooknow 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: falsein.gitguardian.yaml, orGGSHIELD_NO_ENDPOINT_REGISTRATIONto 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 setupandmachine doctorno longer crash when git is not installed: the git hooks step is skipped with a warning, anddoctorreports it as skipped without failing. -
secret scan path --use-gitignorereports 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-19445andCVE-2026-19553in the bundled interpreter.
Fixed
-
honeytoken plantno longer echoes a line of~/.aws/credentialswhen 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-receivenow uses the system trust store in its child process, which no longer inherited it on Python 3.14 (#1508). -
ggshield secret scan ai-hooknow verifies the instance's TLS certificate against the OS trust store. -
ggshield secret scan ai-hooknow honorsREQUESTS_CA_BUNDLEandCURL_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,
ggshieldstarts on machines without the Microsoft Visual C++ Redistributable. Since 1.54.0 it exited silently there, because the launcher neededVCRUNTIME140.dll.install.ps1also reports an error when the installedggshieldcannot 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.