Security
Auth Model
- this repository does not expose its own runtime API
- repo metadata is file-based and checked into Git
- consumed auth is limited to:
- optional
fabric_auth_tokenfor Fabric HTTP reads - optional registry credentials outside the repo for private image pulls
- optional provider credentials outside the repo for mutating cloud runs
- optional
OAuth is not documented here because this repository is not an OAuth-facing runtime service.
OAuth would only become relevant if all of the following changed:
- external users interact directly with a runtime surface from this repository
- a multi-tenant access pattern is introduced
- access from outside the trusted platform network becomes part of the contract
OAuth is not required today when:
- communication is internal and service-to-service
- Fabric-driven reads happen without user context
- no direct user-facing runtime surface exists in this repository
Access Control
- control of this repo happens through Git and CI permissions
- mutating infrastructure actions require manual, environment-aware execution
- shared-host and provider credentials must stay outside the repository
Sensitive Data Types
- provider credentials
- registry credentials
- optional Fabric auth token
- runtime secrets passed to test stacks, such as database passwords
Secrets Model
- no secrets are stored in Git
- no secrets are embedded in workflows
- helper scripts and IaC variables may accept sensitive values, but they must come from the caller environment or external secret storage
Standalone vs Integrated Credential Contract
| Mode | implemented | planned | never in repo |
|---|---|---|---|
standalone (openclaw-only and local test scenarios) | optional private-registry credentials for OCI pulls, provided by operator/runtime environment | caller-side secret resolver may pre-render explicit artifact inputs before the IaC lifecycle | registry tokens, provider keys, runtime passwords |
integrated (openclaw-plus-fabric*) | optional fabric_auth_token for read-only Fabric context surfaces, optional registry credentials for private images | caller may hand over the same credentials to the existing execution contract without adding IaC-side secret discovery | Fabric write credentials, host mutation credentials, long-lived tokens |
Operational credential and mutation controls:
docs/REGISTRY_CREDENTIALS_RUNBOOK.mddocs/MUTATION_WINDOW_POLICY.mdenvironments/test/scripts/verify-host-sudo-credential-rotation.sh| cloud mutation (hetzner-staging) | provider credentials injected outside Git for explicitly approved runs | stronger operator guardrails and rotation runbook | provider keys, cloud secrets |
Credential handoff rule:
jhf-deploymentconsumes provided credentials only as execution inputs- no credential generation, rotation, or persistence is implemented in this repository
- remediation checks must pass credentials via stdin, not command-line interpolation
- deployment runbooks must not include inline
sudosecret pipelines
Protected Interfaces
- Docker socket and host selection
- Fabric datasource auth if enabled
- private OCI registry access
- cloud-provider credential use
Artifact Trust Boundaries
Allowed:
- explicit pinned artifact inputs via
artifact_sources - resolver handoff through explicit
tfvars.jsonfiles package_referenceas provenance evidence only
Disallowed:
- implicit
latestor auto-latest fallback - mixed coordinate style in one artifact entry (
imageplus repository/tag) - hidden resolver behavior inside IaC modules
Required review points:
- changes to artifact input validation rules
- new registry/repository trust boundaries
- runtime-mode changes from probe to native-service
Inputs That Must Never Be Left Open
- unaudited
terraform apply/destroytriggered by external systems - direct write access from Fabric into this repo's working directories or state
- broad remote Docker control on shared hosts
Actions That Must Never Be Uncontrolled
- destructive Terraform runs against shared environments
- artifact source widening to unpinned
latest - secret injection into committed files
- remote host mutation on
<internal-runtime-redacted>without explicit intent and verification - Fabric-triggered mutation of IaC lifecycle commands
Primary Risks
- wrong host or provider target during mutation
- silent drift caused by unpinned artifacts
- leaked credentials in operator environments or CI
- Fabric being mis-modeled as a write controller instead of a read source
License: AGPLv3 Source and governance: https://helpifyr.com