> ## Documentation Index
> Fetch the complete documentation index at: https://help.dsalta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GitGuardian

> Secrets detection — members, sources, incidents & access

<Tabs>
  <Tab title="Overview">
    Connect GitGuardian with a read-only personal access token to sync workspace members with their roles and status, monitored sources, leaked-secret incidents and the audit log, and run access reviews. Read-only. Data feeds into your Access accounts, Inventory, Incidents and Changes pages.

    <Info>
      **Read-only access.** DSALTA only reads data from this integration. It never creates, modifies, or deletes anything in your environment, and every remediation step is performed by your team directly in the third-party product.
    </Info>

    <Info>
      **What you'll see.** The Access page lists the members of the one GitGuardian **workspace** the token belongs to, with their name (or their email address when GitGuardian has no name for them), their email, their workspace access level (**Owner**, **Manager**, **Member** or **Restricted**, or **Member** when GitGuardian reports none) and the date they joined the workspace. Pending invitations are kept on a separate GitGuardian list that DSALTA does not read, so they never appear. A member the workspace has deactivated is shown as **Inactive**; every other member is shown as **Active**. GitGuardian reports no per-user MFA state, so the **MFA** column is blank (shown as a dash).
    </Info>

    <Note>
      DSALTA collects this integration's data when you connect it — you can refresh it at any time with **Sync from integrations** on the **Integrations** page. The compliance checks below re-run once a day at 02:00 America/New\_York.
    </Note>

    ## What DSALTA reads

    DSALTA reads the GitGuardian workspace member roster — names, emails, access levels, activation state and join dates — which appears on your **Access** page; your monitored **sources**, which appear on your **Inventory** page with their type, visibility, health, criticality, open-incident count, whether monitoring is off and the date of their last scan (sources appear once a repository is monitored); the workspace's **secret incidents**, which appear on your **Incidents** page; and the workspace **audit log**, which appears on your **Changes** page. Each incident is titled with its detector and incident number and carries the secret's validity, whether it was revoked, its occurrence count, assignee, resolution date and dashboard link in the description; it is typed **secret**, its severity follows GitGuardian's own critical, high and medium ratings and is **Low** otherwise, and its status follows the incident's state — assigned shows **Investigating**, resolved shows **Resolved**, ignored shows **Closed**, and any other state, including a freshly triggered incident, shows **Open**. Incidents fills once GitGuardian has detected a secret. Each audit entry arrives as a change that has already happened — status **Deployed**, titled with the event name and the member or API token that caused it, with the action, IP address and time in the description and the workspace as the environment; an event about tokens, members, scopes, invitations, roles, SSO, SCIM, deletions or removals is recorded with priority **Medium**, any other with **Low**. At most 1,000 audit entries are read per sync. Members' last-login times, pending invitations, teams and the individual secret occurrences are not read.

    It calls these GitGuardian endpoints on `api.gitguardian.com` (or `api.eu1.gitguardian.com` when the region is `eu`):

    * `/v1/api_tokens/self` (the token's own scopes and status, used to validate)
    * `/v1/members`
    * `/v1/sources`
    * `/v1/incidents/secrets`
    * `/v1/audit_logs`

    Every request is a read. DSALTA has no code path that creates, modifies, or deletes anything in your GitGuardian environment.

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection is rejected">
        The token lacks the **members:read** scope — the message says so by name — or it has been revoked or has expired. Scopes are fixed when a token is created, so create a new personal access token with members:read ticked. A 401 with a hint about the region means the token was sent to the wrong host: only the exact value `eu` switches DSALTA to GitGuardian's EU host, and a token from one region is not accepted by the other.
      </Accordion>

      <Accordion title="Inventory, Incidents or Changes is empty while Access works">
        Sources, incidents and audit entries are read best-effort after the member roster: a failure on one of those calls leaves that page empty without failing the sync, and a token created without **sources:read**, **incidents:read** or **audit\_logs:read** leaves the matching page empty with no error. The audit log is readable only by the workspace Owner and Managers. Sources appear once a repository is monitored, and Incidents fills once a secret has been detected. Click **Sync from integrations** on the **Integrations** page to retry.
      </Accordion>

      <Accordion title="The Access page shows fewer members than expected">
        A personal access token only sees what its creator can see. Create the token from the workspace Owner or a Manager, then disconnect and connect again. Note that disconnecting permanently deletes the data already collected from GitGuardian.
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="How do I check whether the connection is healthy?">
        Open **Integrations** in the DSALTA sidebar, stay on the **Connected** tab, and click **Manage** on the integration's card. Open the **Status** tab: it shows either **Connected and working properly** or **Connection issues detected**.

        Use the **Status** tab, not **Overview** — Overview always reports **Connected** regardless of the real state.
      </Accordion>

      <Accordion title="A check shows Failed and nothing changed on my side">
        On an integration-powered check, **Failed** normally means DSALTA was blocked rather than that you are non-compliant. Open the test, go to **Source Data**, and read the result code: **403** is a missing permission, **428** is a setting DSALTA still needs, **500** is a failure on DSALTA's side.

        A real compliance gap shows **207** and leaves the test looking **Completed**. See [Understanding Test Results](/guides/compliance/test-results).
      </Accordion>

      <Accordion title="Data looks out of date">
        Compliance checks re-run once a day at 02:00 America/New\_York. To refresh sooner, open **Integrations → Connected** and click **Sync from integrations** at the top right — it refreshes every connected integration at once.
      </Accordion>

      <Accordion title="How do I repair a broken connection?">
        There is no Reconnect, Repair or Refresh Token button. The only repair available is to disconnect and connect again.

        <Warning>
          **Disconnecting is destructive and cannot be undone.** DSALTA removes the access records, inventory, vulnerabilities, code changes, incidents and device records collected from this integration, and deletes the test results tied to the connection. Export anything you still need as audit evidence first — see [Integration errors](/troubleshooting/integration-errors).
        </Warning>
      </Accordion>

      <Accordion title="Configure scope will not let me change anything">
        That is expected. **Configure scope** is read-only — it shows what DSALTA is permitted to read, and has no Save action. To change what DSALTA can see, change the permissions on the credential in the third-party product, then disconnect and connect again.
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="How to connect">
    A read-only GitGuardian personal access token created by the workspace Owner or a Manager. The workspace is detected automatically. Read-only.

    **Before you begin**

    * A GitGuardian workspace Owner or Manager account — a token only sees what its creator can see, and Restricted users can only create scan tokens.
    * Your workspace's region: US is the default; enter **eu** if your workspace lives in GitGuardian's EU region.

    You will need:

    | Field | Where to find it | Example |
    | - | - | - |
    | **Personal access token** | **API → Personal access tokens → Create token** | `gg_pat_…`, shown once |
    | **Region (optional)** | The region chosen when the workspace was created | `eu` for an EU workspace |

    <Steps>
      <Step title="Start in DSALTA">
        Open **Integrations** in the DSALTA sidebar, find **GitGuardian**, and click **Connect** to open the connect panel.
      </Step>

      <Step title="Sign in as the workspace Owner or a Manager">
        Sign in at [dashboard.gitguardian.com](https://dashboard.gitguardian.com). A personal access token only sees what its creator can see, so create it from the Owner or a Manager account.
      </Step>

      <Step title="Create a read-only personal access token">
        Open **API → Personal access tokens → Create token**. Name it, set the expiry to **never**, and tick **members:read** (required) plus **sources:read**, **incidents:read** and **audit\_logs:read** for the other pages. Do not tick write scopes.

        <Warning>
          **Copy the token when it is shown — GitGuardian shows it once.** Scopes cannot be changed later: a token created without members:read has to be replaced by a new one.
        </Warning>
      </Step>

      <Step title="Connect GitGuardian">
        Return to the connect panel and paste the token. Enter **eu** as the region only if your workspace lives in GitGuardian's EU region; leave it empty otherwise. Then click **Connect**.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the token when you click **Connect**, by reading the token's own record to confirm it carries members:read and is still active, then listing the workspace's members. On success the integration moves to the **Connected** tab, and **Manage → Status** reads **Connected and working properly**. Checks begin reporting after the first sync.
    </Check>

    <Warning>
      **If the connection is rejected.** An invalid token, the wrong region, a token without the members:read scope, a revoked or expired token, or a token whose member list comes back empty.

      The on-screen message is generic — see [Connection error messages](/troubleshooting/connection-error-messages).
    </Warning>
  </Tab>

  <Tab title="Automated checks">
    Each check below re-runs once a day, at 02:00 America/New\_York, while this integration is connected. Click any check for step-by-step remediation guidance.

    | Check | Severity | What it verifies |
    | - | - | - |
    | [User access to Critical System should be valid](/integrations/gitguardian/user-access-to-critical-system-should-be-valid) | Info | Checks that everyone with GitGuardian access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/gitguardian/offboarded-users-should-not-have-active-access) | High | Checks that offboarded employees no longer have active GitGuardian access. |
  </Tab>

  <Tab title="Useful links">
    | Topic | Link |
    | - | - |
    | Setup | [GitGuardian personal access tokens](https://docs.gitguardian.com/api-docs/personal-access-tokens) |
    | Remediation | [Workspace users](https://docs.gitguardian.com/platform/collaboration-and-sharing/users) |
    | General | [GitGuardian dashboard](https://dashboard.gitguardian.com) |
    | DSALTA | [Connection error messages](/troubleshooting/connection-error-messages) |
  </Tab>
</Tabs>
