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 the
current-context; an existing active context is never changed, so the owner's own
kubectlcannot 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.