synthetiq infra provision registers the infrastructure with your Synthetiq organization, so it runs with a Synthetiq identity. Locally that’s your own login. In CI it’s a service account — a machine member of your org — authenticated via an OIDC trust: no stored token, the workflow exchanges its GitHub-issued token for a short-lived Synthetiq token on each run.
You need one service account, on the built-in CI Provision Apply role (holds the Synthetiq platform’s infra:provision scope), trusted for your infra repo’s main branch.
Create it
- Find the id of the built-in CI Provision Apply role:
- Create the service account — prints the service account’s id on creation:
Running
service-account create requires the org:service-accounts scope in your Synthetiq organization. Contact your admin if you do not have it.- Create the trust on it — tokens matching this issuer and subject authenticate as the service account:
Running
trust create requires the org:trusts scope in your Synthetiq organization. Contact your admin if you do not have it.- Default — keys are fetched from the issuer’s OIDC discovery endpoint, which must be reachable from the Synthetiq platform. Key rotation is handled automatically. The right choice for public issuers like GitHub.com.
- Static keys — pass
--jwks <path>with a JWK Set file ({ "keys": [...] }) of the issuer’s signing keys, validated when the trust is created. Verification uses only these keys and never contacts the issuer — for issuers the platform can’t reach, such as a firewalled GitHub Enterprise Server. Update the trust when the issuer rotates its keys.

