Trusted-shim activation
Sigil Sign enforces trusted-shim tightening when a Policy2.1.x Warrant
contains a repository, filesystem, git, or database block. Parsing and
authoring remain lossless: false or absent require_shim values can still be
imported and migrated, but hosted activation fails closed.
Every present destructive block must set require_shim: true. If the same
policy contains execution_limits, that block must also set
require_shim: true. Standalone execution limits are not classified as a
destructive resource profile.
Deploy request
POST /v1/warranty/deploy accepts:
warranty.md. Authoring tools must not insert
it into the policy, coerce require_shim, change signed bytes, or re-sign a
policy automatically.
JWT contract
The protected header usesalg=EdDSA, typ=JWT, and an exact trusted-anchor
kid. Required claims are:
activation_schema:sigil-trusted-shim-activation/v1iss: the registered issuersub: the registered shim identityaud: the exact Sign activation endpointiatandexp: a maximum 300-second lifetimejti: a one-time 16 to 128 character nonceshim_version: an exact allowlisted versionpolicy_hash: the canonical policy hashoperator_key_fingerprint: lowercase SHA-256 of the UTF-8operator_public_keyrequest valuecapabilities: the allowlisted capabilities required by the policy
https://sign.sigilcore.com/v1/warranty/deploy. The test audience is
https://sign-test.sigilcore.com/v1/warranty/deploy.
Capabilities are profile.repository, profile.filesystem, profile.git,
profile.database, and profile.execution_limits.
Trust and versions
An API keytrusted_shim flag alone is insufficient. Activation also requires
a non-revoked public anchor bound to that key and a non-revoked exact shim
version whose capability allowlist covers the policy. Runtime provenance keeps
checking recorded activation identity and version state.
Private shim and operator keys never go to Sigil Sign.
Exceptions
An exception can waive only a false or absentrequire_shim declaration while
a policy migrates. It cannot waive the cryptographic attestation or any
identity, issuer, audience, version, capability, freshness, policy-binding, or
replay check.
An exception binds one API key to one exact policy hash, uses reason code
require_shim_declaration_migration, identifies its approver and approval
record, contains a justification, expires, and can be revoked. There are no
wildcard or default exceptions.
Stable activation denial codes
SIGIL_TRUSTED_SHIM_REQUIREDSIGIL_TRUSTED_SHIM_ATTESTATION_REQUIREDSIGIL_TRUSTED_SHIM_ATTESTATION_MALFORMEDSIGIL_TRUSTED_SHIM_UNTRUSTEDSIGIL_TRUSTED_SHIM_VERSION_REQUIREDSIGIL_TRUSTED_SHIM_VERSION_UNSUPPORTEDSIGIL_TRUSTED_SHIM_ISSUER_INVALIDSIGIL_TRUSTED_SHIM_AUDIENCE_INVALIDSIGIL_TRUSTED_SHIM_IDENTITY_INVALIDSIGIL_TRUSTED_SHIM_ATTESTATION_EXPIREDSIGIL_TRUSTED_SHIM_NONCE_INVALIDSIGIL_TRUSTED_SHIM_ATTESTATION_REPLAYEDSIGIL_TRUSTED_SHIM_CAPABILITY_MISSINGSIGIL_TRUSTED_SHIM_POLICY_BINDING_INVALID