Integrations and automated evidence are typically managed by workspace admins.
See Evidence & audits for how automated evidence fits
alongside manual evidence.
What it’s used for
Keldyn uses the data it reads from GitHub to keep evidence for source-code access, change management, testing of changes, version control, secure development, and vulnerability management current. Each refresh updates the evidence and freshness status shown in the integration’s Controls covered table. The integration contributes evidence to these ISO 27001 controls:
It also contributes evidence to these SOC 2 controls:
Full coverage means the data is the artifact the control asks for.
Partial coverage means the data usefully contributes but does not, on its
own, replace everything the control requires. For example, pull-request
reviews support a secure development life cycle but do not prove that the
complete life cycle is defined and followed. Full, once confirmed means
the data is the artifact the control asks for, but only after you tell Keldyn
which workflow or secret plays that role — see Confirm your workflow
mappings. Keldyn labels partial coverage so
it isn’t mistaken for complete coverage.
GitHub’s own scanners cover application and dependency vulnerability
scanning only (Dependabot alerts, code scanning, and the code-scanning
analysis run history), so on their own they leave Vulnerability scans
Partial. If you already scan more broadly through your own GitHub Actions
workflow, confirming that workflow closes the gap: its run history evidences
scans running on your schedule with their results recorded, whatever they
scan. Otherwise, infrastructure-level scanning still needs a Tenable/Qualys-style
source connected separately.
Before you begin
1
Use a GitHub organization owner
Installing the Keldyn GitHub App on an organization requires organization
owner approval. If you aren’t an owner, GitHub may leave the installation
pending until an owner approves it.
2
Choose the repositories to include
During installation, choose whether Keldyn can read all repositories or only
selected repositories. Evidence only covers repositories included in the
GitHub App installation.
3
Keldyn only ever reads
The GitHub App uses read-only repository and organization permissions.
Keldyn never changes repository settings, merges code, edits branches, or
modifies security alerts.
Set up the integration
1
Open Integrations
In the Keldyn web app, go to Integrations and select GitHub.
2
Connect
Select Connect. GitHub opens the Keldyn GitHub App installation flow.
Choose the organization and repositories to connect, review the requested
read-only access, and approve the installation.
3
Authorize your GitHub account
Complete the GitHub authorization request. Keldyn uses it to verify that
your GitHub account can access the installation; it does not store your
user access token.
4
Run the first sync
After GitHub returns you to Keldyn, select Sync now to pull evidence
immediately, or wait for the scheduled refresh. The Controls covered and
Evidence sources tables then show what was collected and how fresh it is.
Confirm your workflow mappings
Keldyn can read what your GitHub Actions workflows are configured to do — that one runs a scanner every Monday, that another runs your test suite on each pull request. What it cannot know is which of them your compliance posture actually rests on. A workflow namedsecurity.yml might be a real scan or an experiment someone left behind, and a job that never mentions “test” might still be the suite that gates your releases.
So Keldyn proposes, and you confirm. After the first sync, the Workflow and secret mappings card on the GitHub integration page lists each workflow and automation secret Keldyn thinks plays a role, along with the signal that prompted the proposal — the schedule it runs on, the actions it invokes.
For each proposal you can:
- Confirm it, which records your name and the time against the mapping and starts collecting that workflow’s run history on the next sync.
- Reject it, which stops Keldyn proposing it again. A rejected mapping is never revived by a later sync.
What data Keldyn collects and why
Keldyn requests read-only access and collects only the data needed to build control evidence.Keldyn does not collect pull-request titles, commit messages, workflow file
contents, artifact contents, or secret values. If Dependabot or code scanning
is disabled, Keldyn records that state as evidence instead of treating the
sync as a technical failure. A repository with no branch protection, no
required status checks, or no recorded deployment approval is likewise
recorded as real (unfavorable) evidence rather than a sync failure.
Permissions
The Keldyn GitHub App requests these read-only permissions:
Keldyn stores the GitHub App installation ID and organization metadata. It mints short-lived installation tokens when it refreshes evidence and does not store a per-user GitHub token.
Troubleshooting “Access required”
A control shows Access required when the GitHub App cannot read the matching data. Common causes include:- The repository isn’t included in the GitHub App installation.
- The installation is waiting for organization owner approval.
- A required read permission isn’t granted to the GitHub App.
- Organization administration access isn’t available for the 2FA requirement.
- The Environments, Checks, or Contents permission isn’t granted, which blocks deployment-approval, CI-status, or version-control-history evidence respectively.
- The Actions permission isn’t granted, which blocks workflow definitions, run history, and run artifacts — so no mappings are proposed and the controls that depend on a confirmed workflow stay unsatisfied.
- The Secrets permission isn’t granted, which blocks rotation evidence for A.5.17.
- GitHub Actions is disabled for a repository. Keldyn records this as an empty workflow list rather than a failure.
Keeping evidence current
Keldyn refreshes access, authentication, change-management, testing, version-control, workflow-definition, run-history, run-artifact, and secret-rotation evidence daily. Dependabot, code-scanning alert, and code-scanning analysis-run evidence refreshes hourly. Evidence that hasn’t refreshed within its expected cadence is marked stale, and failed pulls are marked failed so you can spot gaps. You can also trigger an immediate refresh at any time with Sync now. Confirmed workflows are additionally judged against their own schedule, not Keldyn’s refresh cadence: a workflow you confirmed as a weekly scan fails its control if it hasn’t run in roughly two weeks, however recently Keldyn last synced.GitHub deletes workflow run artifacts after 90 days, and ages out run history.
Keldyn therefore accumulates run and artifact evidence rather than
replacing it on each refresh, so a record captured while it was live stays
available as evidence for an audit period longer than GitHub’s own retention
window. This also means the evidence for these controls builds up over time —
the first sync after connecting shows only what GitHub still holds.
Next steps
Evidence & audits
Learn how automated integration evidence works alongside manual evidence and
audits.