GitHub Evidence Fetcher
Pull GitHub branch protection, CODEOWNERS, webhooks, and org team evidence into compliance items with confidence scoring.
Flow's GitHub Evidence Fetcher helps teams collect live technical evidence for selected compliance controls without leaving the platform. From a compliance item's Evidence tab, you can fetch GitHub artifacts, review what was found, add an auditor-friendly narrative, and save the result as evidence.
Overview
The GitHub Evidence Fetcher is designed for controls where GitHub configuration is part of the proof. It currently supports selected SOC 2 control families and fetches artifacts directly from the GitHub REST API using a GitHub Personal Access Token (PAT).
What this feature provides:
- In-product evidence collection - Fetch GitHub evidence from inside a compliance item
- Control-aware artifact selection - Only fetches artifacts mapped to the current control family
- Confidence scoring - Scores the completeness of the returned evidence as
LOW,MEDIUM, orHIGH - Narrative capture - Add an explanation of what the artifacts demonstrate before saving
- Evidence traceability - Saves the result into Flow's evidence library linked to the compliance item
Supported Controls
The fetcher currently appears only for compliance requirements whose controlFamily is mapped to GitHub evidence collection.
| Control family | Typical use | Artifacts fetched |
|---|---|---|
CC6 |
Logical access and change governance | Branch protection, CODEOWNERS, organization teams |
CC7 |
Change monitoring and detection | Repository webhooks |
CC8 |
Change management safeguards | Branch protection |
If a compliance item does not belong to one of these control families, the GitHub fetcher is not shown.
Requirements
Before fetching evidence, you need:
- A GitHub organization name
- A repository name inside that organization
- A GitHub Personal Access Token with
read:organdreposcopes
The token is used only for the live fetch. The UI does not persist it after use, and the backend strips it out of request logging before writing diagnostic logs.
How To Use It
- Open Compliance and select a compliance item that maps to
CC6,CC7, orCC8. - Open the Evidence tab in the compliance item detail dialog.
- In the Fetch from GitHub panel, enter:
- Your GitHub organization name
- Your repository name
- A PAT with
read:organdrepo
- Click Fetch artifacts.
- Review the returned artifacts and confidence level.
- Write an evidence narrative describing what the artifacts prove for the control.
- Click Save as evidence.
After saving, the evidence item is linked to the current compliance item and appears alongside manually uploaded evidence.
What Flow Fetches
Flow chooses GitHub endpoints based on the current control family:
For CC6
- Branch protection from the repository's default branch
- The repository
CODEOWNERSfile - Organization teams from the GitHub org
For CC7
- Repository webhooks
For CC8
- Branch protection from the repository's default branch
Flow automatically resolves the repository's default branch before fetching branch protection settings.
Confidence Scoring
Confidence is based on how many expected artifacts were found for the control family:
| Score | Coverage |
|---|---|
LOW |
0-33% of expected artifacts found |
MEDIUM |
34-66% of expected artifacts found |
HIGH |
67-100% of expected artifacts found |
Examples:
CC6with 1 of 3 artifacts found results inLOWCC6with 2 of 3 artifacts found results inMEDIUMCC6with 3 of 3 artifacts found results inHIGHCC7orCC8with the single expected artifact found results inHIGH
When the evidence is saved:
HIGHandMEDIUMconfidence are marked as reliable evidenceLOWconfidence is still saved, but Flow adds a note recommending manual verification
Missing Artifacts And Errors
Not every missing artifact is treated as a hard failure.
- If an optional artifact such as
CODEOWNERSis not present, Flow marks it as not found and lowers confidence. - If the PAT is invalid during the initial repository lookup, Flow returns a token error.
- If the token lacks organization access during the initial repository lookup, Flow returns a scope/access error.
- If GitHub rate limits the initial repository lookup, Flow surfaces a retry message.
- If the repository is private and the token lacks
repo, Flow reports the repository as inaccessible. - For individual artifact fetches, non-success GitHub responses are currently treated as missing artifacts rather than hard failures, which lowers confidence instead of blocking the fetch.
This makes the fetcher useful even when evidence is only partially available.
Best Practices
- Use a PAT created specifically for audit and evidence collection workflows, with only the scopes the current fetcher requires.
- Review artifacts before saving and explain why they satisfy the control.
- Treat
LOWconfidence results as supporting evidence, not final proof. - Re-fetch after major GitHub policy changes such as new branch protection rules or webhook updates.
- Pair fetched artifacts with policies, procedures, and review records for stronger audit packages.