Forgeplane secret management
Forgeplane treats secrets as governed project resources, not as free-form run inputs. The model separates three concerns:
- a logical secret that has a stable name, classification, policy, and lifecycle;
- a secret source that defines where the value is resolved; and
- a template binding that connects a declared secret input to the logical secret.
This separation lets teams change a source or binding without changing the template’s input contract. Secret values stay out of ordinary environment variables, template source, and normal API or UI resource fields.
Logical secrets
Section titled “Logical secrets”A logical secret is the stable object you govern over time. Its key properties include:
| Property | Values |
|---|---|
| Lifecycle state | draft, active, degraded, blocked, archived |
| Classification | low, medium, high, critical |
| Value contract | opaque_string, json_string, pem_certificate |
| Policy severity | none, warn, block |
Use classification and policy to express how the secret should be handled. A logical secret is not the same thing as the provider record that supplies its current value.
Secret sources
Section titled “Secret sources”A source points to the backend from which Forgeplane resolves a value. Supported source kinds include:
builtin_stored_valuevaultaws_secrets_managergcp_secret_managerazure_key_vault
Source behavior also records:
- selector mode:
fixedorfloating; - ownership mode:
referencedormanaged; and - health status:
unknown,healthy,degraded, orunhealthy.
A managed source is operated through Forgeplane’s governed lifecycle. A referenced source remains owned by its external system. Keep the source’s credentials and backend policy in the deployment’s secret-management boundary.
Bind secrets to templates
Section titled “Bind secrets to templates”A template input becomes a secret slot only when its schema marks it explicitly. Forgeplane accepts these annotations:
x-forgeplane-secret: truex-secret: truewriteOnly: true
Bindings connect a marked template slot to a logical secret at either project or environment scope. A binding is either bound or disabled.
Use Environments for deployment-specific bindings and policy. Do not place secret values in environment variables or ordinary input defaults.
Runtime flow
Section titled “Runtime flow”For a scheduled run:
- the coordinator validates the template schema, binding scope, trust state, and required secret material;
- the coordinator resolves the source and materializes the payload for the execution bundle;
- the worker validates the bundle’s trust metadata before tool execution; and
- the run fails closed when a required binding or trust check is not satisfied.
Resolved plaintext is used for tool execution. It is not returned as an ordinary API or UI field. See Connections for non-secret provider configuration and encrypted connection credentials.
Managed actions and approval
Section titled “Managed actions and approval”Destructive managed-source operations use a dedicated approval workflow rather than an immediate mutation. For example, delete_source uses these approval states:
pendingapprovedrejectedapplied
Timeouts and defaults are controlled by secret_approval_* system settings. Approval authorizes the specific managed action; it does not expose the secret value.
Governance settings
Section titled “Governance settings”Secret governance defaults include:
secret_approval_self_approval_default_enabledsecret_approval_pending_timeout_minutessecret_approval_maintenance_*secret_floating_behavior_modesecret_floating_drift_default_reactionsecret_floating_require_acksecret_approval_independent_min_classification
See System settings for exact defaults and valid ranges. Use the Permissions and roles reference to check which identities may manage, use, or approve secret-related operations.