Skip to main content

Data handling & privacy

Endpoint Protection detects secrets in two ways, and each one handles your data differently.

A machine scan walks the disk of a company machine on a schedule. Detection runs on the endpoint, and file contents are never transmitted to GitGuardian's servers. A full disk holds far more than the credentials we look for, so none of that content needs to leave the machine.

AI Hooks work like every other ggshield scan: the GitGuardian API scans the content, exactly as it does when ggshield scans a commit or a push. That is what lets a hook block a secret before it reaches a model. Those calls do not create incidents. On GitGuardian SaaS, each detection is logged, including matches that ggshield later ignores.

What a machine scan sends

The only data sent during a machine scan is:

  • Hashed fingerprints of detected secrets (see below)
  • Metadata such as file path, timestamp, and scan context
  • Machine and user inventory metadata: the machine identifier, hostname, operating system and hardware characteristics, and the username and display name of local accounts.

Outbound calls made during a scan include:

  • Provider validity checks (e.g., AWS, GitHub): these go directly from the endpoint to the provider to verify whether a secret is valid and retrieve metadata such as scopes or owner. These calls do not go through GitGuardian's servers.

How secrets are hashed

A machine scan never sends plaintext secrets to GitGuardian. Instead, it hashes them on the endpoint using GitGuardian's HasMySecretLeaked (HMSL) protocol.

The hashing scheme uses a 256-bit Scrypt hash, which is intentionally slow and memory-hard to make brute-forcing impractical at scale. Like any one-way hash, it is not reversible. The main residual risk is offline guessing against very weak secrets, which the slow hash design mitigates.

Scan scope and personal files

Scan scope is policy-configurable. See Configuration reference for details.

A few important points:

  • Endpoint Protection is a corporate control deployed on company-issued machines via MDM.
  • A machine scan sends only credential hashes and metadata, not file contents.
  • System directories and personal files outside the configured scope can be excluded entirely.

What the AI layer sends

DataWhen it is sentWhat it is for
The content being scanned: a prompt, or the file read, shell command, or MCP call an agent is about to runOn every interaction, once AI Hooks are installedDetecting the secret so the hook can block the action before the content reaches a model
MCP tool call records: the tool and server name, the agent and model, the working directory, and the tool inputOn every MCP tool call, once AI Hooks are installedReporting MCP activity in your dashboard, and returning the allow or deny decision to the AI tool
Configuration metadata about installed agents and configured MCP servers, whether AI Hooks are installed for each agent, and the assistant subscription emailOn every ggshield ai discover runReporting which AI tooling runs across your fleet, your hook coverage per machine, and whether a developer signed in with a company or a personal subscription
MCP tool call records rebuilt from agent transcriptsOnly when you add --history to ggshield ai discoverBackfilling MCP activity from before the hooks were installed, so an investigation can cover that period too

The assistant subscription email is read locally from the configuration of Claude Code, Codex, and Cursor. It can be a personal address, which is what makes the company versus personal subscription distinction possible in the first place.

The inventory parses configuration files and transcripts on the endpoint. It uploads the records described above, not the files themselves.

Where your data is stored

Findings, machine metadata, and the inventory records above are stored in your GitGuardian workspace. MCP tool call records are retained, because they are what your MCP activity view is built from. Secret scans do not create incidents. On SaaS they still produce detection logs, as described in What the scan API stores.

See Data retention for how long GitGuardian keeps workspace data, and the Trust Center for our security and compliance documentation.

If you need to share data protection and privacy details with internal audiences, reach out to your GitGuardian contact to request a dedicated document.