| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| ggshield-1.55.0-x86_64-apple-darwin.tar.gz | 2026-09-24 | 30.5 MB | |
| ggshield-1.55.0-x86_64-pc-windows-msvc.msi | 2026-09-24 | 29.1 MB | |
| ggshield-1.55.0-x86_64-unknown-linux-gnu.tar.gz | 2026-09-24 | 32.7 MB | |
| ggshield-1.55.0-arm64-apple-darwin.tar.gz | 2026-09-24 | 31.9 MB | |
| ggshield-1.55.0-1.x86_64.rpm | 2026-09-24 | 34.1 MB | |
| ggshield-1.55.0-aarch64-unknown-linux-gnu.tar.gz | 2026-09-24 | 32.4 MB | |
| ggshield-1.55.0-x86_64-pc-windows-msvc.zip | 2026-09-24 | 32.7 MB | |
| ggshield.1.55.0.nupkg | 2026-09-24 | 33.1 MB | |
| ggshield-1.55.0-1.aarch64.rpm | 2026-09-24 | 33.9 MB | |
| ggshield-1.55.0-arm64-apple-darwin.pkg | 2026-09-24 | 32.0 MB | |
| ggshield-1.55.0-x86_64-apple-darwin.pkg | 2026-09-24 | 30.5 MB | |
| ggshield_1.55.0-1_amd64.deb | 2026-09-24 | 33.4 MB | |
| ggshield_1.55.0-1_arm64.deb | 2026-09-24 | 33.3 MB | |
| 1.55.0 source code.tar.gz | 2026-09-24 | 1.3 MB | |
| 1.55.0 source code.zip | 2026-09-24 | 1.7 MB | |
| README.md | 2026-09-24 | 7.0 kB | |
| Totals: 16 Items | 422.6 MB | 0 | |
Added
-
ggshield now supports Amazon Kiro, both the IDE and the CLI.
ggshield machine setupinstalls the secret-scanning hooks in~/.kiro/hooks/, and MCP servers, tool calls and past usage are reported like they are for every other assistant. -
ggshield now supports Junie CLI, JetBrains' terminal coding agent.
ggshield machine setupinstalls the secret-scanning hooks in~/.junie/config.json, and MCP servers and past usage are reported like they are for every other assistant. Junie inside a JetBrains IDE is not covered: it embeds Junie over ACP, which invokes no hooks. -
The time ggshield waits for the GitGuardian API to answer, until now fixed at 60 seconds, can be changed with the
api_timeoutconfig key or theGITGUARDIAN_API_TIMEOUTenvironment variable, which takes precedence. It accepts 1 to 3600 seconds. Raise it if a large scan fails with a read timeout.
Changed
-
The README now warns, at the top, that upgrading to 1.54.0 on macOS triggers a Keychain prompt for
ggshield-py, the second binary that reads the saved token, and that clicking Always Allow settles it for good. -
The Linux rpm now owns its bundle directories, so upgrades no longer leave empty
*.dist-infodirectories behind. -
When the AI hook finds a secret in a tool output on Claude Code or Codex, the output is now withheld from the assistant instead of being passed to it with a warning attached. The assistant reads the block message in place of the output, so the secret stays out of its context and out of the session transcript on disk, and the message no longer tells you to revoke a credential the assistant never read. Agents with no way to replace a tool output are unchanged and keep reporting the secret as leaked.
- On Codex, a blocked tool output was already hidden from the assistant, but the message still said the secret had been exposed and told you to revoke it. It now reports the output as withheld.
-
Mistral Vibe behaves the same way as Codex and now reports a blocked tool output as withheld rather than leaked.
-
The Docker image now ships bytecode for the standard library, so ggshield starts faster in containers.
-
secret scan pre-receiveno longer checks for a new ggshield version unless--check-for-updatesis passed. -
The API key check fetches server metadata and token scopes concurrently instead of one after the other, saving a round trip on every scan.
-
ggshield now requires
py-gitguardian1.35.0.
Fixed
-
Report the raw
mcp_{server}_{tool}name VSCode gives us when the server cannot be identified from the local configuration, instead of guessing a server name that the API cannot match. The API splits the name against the whole inventory. -
The Linux rpm package could crash on startup after an in-place upgrade, because empty
*.dist-infodirectories were left behind. They are now removed during the upgrade. -
ggshield auth logincan now be interrupted with Ctrl+C on Windows while it waits for the browser callback. The local callback server used to block indefinitely, so the interrupt was only noticed once the login completed. -
The AI hook no longer rejects a hook event whose payload starts with a UTF-8 BOM, which Cursor on Windows prepends. Prompts and tool calls were reaching the agent unscanned.
-
Installing the AI hook for Codex now says that Codex will not run the hook until it is approved in the Codex hook review, so the install no longer looks complete while nothing is being scanned.
-
ggshield machine doctorand the AI discovery no longer report an assistant as unprotected when its hook command points at a live binary that a next upgrade would break. Only a missing or dead command now reads as not installed, and the command found in the settings file is reported either way. -
The AI hook no longer mistakes another assistant for Claude Code when the transcript path merely contains "claude". A Cursor session working in a project directory such as
claude-toolswas answered in Claude Code's output format, which Cursor ignores, so a blocked tool call ran anyway. Every assistant is now identified by a field only it sends, and Claude Code answers for what remains, whatever directory it keeps its transcripts in. -
A scan request that times out waiting for the server's response now fails immediately instead of being retried for several minutes. The server has already accepted the request by the time this happens, so retrying only made it redo the same (possibly large) scan up to six times while the user waited.
-
Commit scans (
secret scan repo,commit-range,changes,ci,pre-push,pre-receive) processed batches one at a time, ignoringGG_MAX_WORKERS. Batches now run in parallel, which can speed up large scans considerably. -
When two ggshield AI hooks are configured for the same event, the second one no longer exits without a verdict. Both now answer with the same decision, and the event still costs a single scan.
-
The AI hook no longer stops recognising Copilot CLI when its hook payload carries a field ggshield has not seen before. Copilot CLI was identified by an exact set of payload keys, so the first release adding any field would have left its payloads claimed by no assistant at all, and an unrecognised payload exits without a verdict and lets the tool call through unscanned.
-
ggshield --no-check-for-updates <command>was ignored when the option came before the subcommand. -
Running a command without an API key for a self-hosted instance now says how to authenticate against that instance, instead of reporting
Unknown instance. -
ggshieldno longer hangs when the working directory contains a.envFIFO with no writer attached, as mounted by 1Password Environments. -
ggshield machine setupandggshield machine doctorno longer treat a global or system git hook generated by an older ggshield as correctly configured. Those hooks skip the repository's own hook in linked worktrees. Generated hooks now carry a version stamp;doctorfails on an outdated one andsetuprewrites the block it generated, leaving any other line in the file untouched. -
ggshield machine setupnow exits non-zero when a non-ggshield git hook is already present, instead of reporting success on a machine with no ggshield hook. -
ggshield machine doctorandggshield machine setupnow judge only the hooks directorycore.hooksPathactually points at. Leftover files in the directory ggshield installs into used to sway the verdict, andsetupcould repair such a hook and report success without ever pointing git at it.
Security
- The Docker image now installs its Python dependencies from
uv.lockinstead of re-resolving the version ranges inpyproject.tomlat build time. The image therefore gets the same hash-verified versions as CI, and the rollingexclude-newer = "3 days"quarantine now applies to it too.