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 Terraform Cloud to keep infrastructure change-approval evidence current. Each nightly refresh updates the evidence and the freshness status shown on the integration’s Controls covered table. Every workspace the connected team can see is in scope. There is no production-workspace picker. The integration 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. Keldyn labels partial coverage
in the auto-generated evidence so it isn’t mistaken for complete coverage.
Testing of changes stays Partial because Terraform Cloud covers the
infrastructure policy gate only. Application-code test results still come from
your code platform. Production environment
restriction stays Partial: audit-trail actors support who confirmed each
apply, but your cloud platform’s access listing remains the source of record
for who can reach production.
Before you begin
1
Use a Terraform Cloud organization owner or teams admin
You need permission to create a team, assign a custom workspace role, and
generate a team token in the organization you want to evidence.
2
Create a dedicated team — do not use the built-in Read role
The built-in workspace Read role can read full state files. Org-level
“View all workspaces” is too broad for the same reason. Create a dedicated
team (for example
KeldynEvidence) and grant it a custom role instead.3
Decide whether you need apply-approver identity
Recording who confirmed each apply needs HCP Terraform Standard or
Premium plus a separate organization or audit-trail token. On the Free
plan, or without that token, Keldyn still evidences that applies were
gated and confirmed; approver identity comes from the code platform
instead. Terraform Enterprise does not expose the organization audit-trail
API.
4
Keldyn only ever reads
The connector uses a runs-and-outputs-only team token. Keldyn never
applies runs, overrides policies, locks workspaces, or reads state or
variable values.
Set up the integration
Do the Terraform Cloud work first, then paste the results into Keldyn.1. Create the team and custom role in Terraform Cloud
1
Create a team
In HCP Terraform, open Organization
settings → Teams (or use Teams)
and create a team named something stable, such as
KeldynEvidence.2
Grant a custom workspace role
On each workspace you want evidenced — or on a project that covers those
workspaces — open Settings → Team access, add
KeldynEvidence, and
choose Custom permissions:Leave policy-override, lock/unlock, and admin permissions off. See
HashiCorp’s custom workspace
permissions
for the official definitions.
3
Create a team token
Open the same team → API tokens → Create a team token. Copy the token
immediately — you will not see it again. That is Team token in Keldyn.Do not paste a user token. User tokens inherit that person’s full
access and are the wrong identity for a connector.
2. Optional: create an audit-trail token
Skip this if you are on the Free plan or do not need apply-approver identity from Terraform Cloud.1
Confirm the plan
The organization must be on HCP Terraform Standard or Premium. Free
does not keep an organization audit trail.
2
Create the token
Open Organization settings → API tokens. Create either an
organization token or a purpose-built audit trail token. Team
tokens and user tokens cannot call the audit-trail API.
3. Connect in Keldyn
1
Open Integrations
In the Keldyn web app, go to Integrations and select Terraform
Cloud.
2
Paste the connection details
Enter:
- Organization name — the HCP Terraform organization slug (for
example
acme-corp), not the display name. - Team token — the runs-and-outputs-only token from step 1.
- Audit-trail token (optional) — the organization or audit-trail token from step 2, if you have one.
3
Connect
Select Connect. Keldyn checks that the team token can read the
organization. Tokens are stored encrypted and never shown again.
4
Run the first sync
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.
What data Keldyn collects and why
Keldyn requests read-only access and collects only the data needed to build control evidence. State files, variable values, and plan JSON are never read.A workspace with auto-apply enabled, an apply with no confirmation
timestamp, or an applied run with no policy check is recorded as real
(unfavorable) evidence rather than a sync failure — that is what surfaces
as a gap on the matching control.
Authentication
Keldyn authenticates with the team token you paste (and, optionally, a separate audit-trail token). Both are stored encrypted. The UI only ever shows[redacted].
Disconnecting in Keldyn does not revoke the tokens. Rotate or delete them in
Terraform Cloud yourself.
Troubleshooting “Access required”
A control or evidence source shows Access required when Keldyn cannot read the matching data. Common causes include:- The team token cannot see the organization, or was revoked.
- The custom role is not assigned on any workspace, so there is nothing to evidence.
- The audit-trail source is blocked because no organization / audit-trail token was provided, the organization is on the Free plan, or that token cannot read the trail. Workspace and policy evidence still refresh.
- A newly pasted audit-trail token was a user or team token (
401). Create an organization or audit-trail token instead.
401), Keldyn marks the connection
Reauth required. Create a new team token on the same team and use
Update credentials. Leave the audit-trail field blank so the stored
audit-trail token is kept — Keldyn never echoes it back.
Keeping evidence current
Keldyn refreshes Terraform Cloud evidence automatically each day. 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.Terraform Cloud ages out run history, and the audit trail only retains
fourteen days. Keldyn accumulates run, apply, policy-check, and
audit-trail records rather than replacing them on each refresh, so a record
captured while it was live stays available for an audit period longer than
Terraform’s own retention window. The first sync after connecting shows
only what Terraform still holds.
Rotate tokens
Next steps
Evidence & audits
Learn how automated integration evidence works alongside manual evidence
and audits.
GitHub
Connect the code platform for pull-request approvals and application-code
test results that complete the change-management picture.