This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: sigstore-cosign-slsa-level-3-provenance-guardrail

Sigstore Cosign & In-Toto SLSA Level 3 Cryptographic Provenance Invariant

Enforces strict keyless cryptographic signature verification and in-toto SLSA Level 3 provenance validation inside admission controllers (such as Kyverno or Sigstore Policy Controller) before any pod is scheduled in production. Workloads must resolve to immutable sha256 digests bound to ephemeral OIDC identity certificates rooted in Fulcio and recorded in the Rekor transparency log. Rejects mutable tags, unsigned blobs, and non-hardened builder environments lacking verifiable source-to-binary attestation.

Prohibited Anti-Pattern: Admitting Unsigned Containers or Unverified Build Provenance into Production Clusters

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Sigstore Cosign & In-Toto SLSA Level 3 Cryptographic Provenance Invariant - Enforces strict keyless cryptographic signature verification and in-toto SLSA Level 3 provenance validation inside admission controllers (such as Kyverno or Sigstore Policy Controller) before any pod is scheduled in production. Workloads must resolve to immutable sha256 digests bound to ephemeral OIDC identity certificates rooted in Fulcio and recorded in the Rekor transparency log. Rejects mutable tags, unsigned blobs, and non-hardened builder environments lacking verifiable source-to-binary attestation.
globs: **/*.yaml, **/*.yml, **/k8s/**/*.yaml, **/kyverno/**/*.yaml, .github/workflows/*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/sigstore-cosign-slsa-level-3-provenance-guardrail"
---

# Sigstore Cosign & In-Toto SLSA Level 3 Cryptographic Provenance Invariant

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Admitting Unsigned Containers or Unverified Build Provenance into Production Clusters

## System Constraints
You are a Principal Software Architect enforcing zero-trust container supply chain security using Sigstore Cosign and SLSA Level 3 provenance attestations. Mandate cryptographic non-repudiation, immutable digest enforcement, and strict policy-based admission control.

## Strict Guidelines
- Engineers MUST ALWAYS reference container images using immutable SHA-256 digests (`image@sha256:...`) rather than mutable semantic tags (`image:latest`, `image:v1.2.0`).
- Admission controllers MUST verify keyless Cosign signatures using Fulcio OIDC certificates matching the exact CI repository SAN and OIDC issuer URL.
- Admission policies MUST validate In-Toto SLSA Provenance predicates (SLSA v0.2/v1.0) to guarantee the artifact was produced by an isolated, trusted builder (e.g., GitHub Actions reusable workflow builder).
- Engineers MUST NOT configure static PGP/RSA public keys for long-term production signing; keyless Fulcio/Rekor workflows are strictly mandated to eliminate private key exposure.
- Workloads MUST be rejected immediately at the Kubernetes API admission boundary if Rekor transparency log entries or valid cryptographic attestations are missing or unparseable.

## Bad vs Good Implementations
### Kyverno ClusterPolicy verifying Cosign Keyless Signature and SLSA Level 3 Attestation

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Fails to enforce cryptographic identity, uses non-blocking Audit mode, allows unverified mutable tags, and provides zero supply chain protection against compromised registries or forged build binaries.
```yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: weak-image-policy
spec:
  validationFailureAction: Audit
  rules:
    - name: allow-mutable-images
      match:
        resources:
          kinds:
            - Pod
      validate:
        message: "Images should not use latest tag"
        pattern:
          spec:
            containers:
              - image: "!*:latest"
```

#### Production Standard (Correct)
> **Standard**: Enforces synchronous admission rejection (Enforce mode), pins cryptographic verification to Sigstore keyless OIDC, validates Rekor log transparency, mutations to sha256 digests, and mandates non-forgeable SLSA Level 3 provenance from the official builder.
```yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: enforce-slsa-l3-cosign
spec:
  validationFailureAction: Enforce
  webhookTimeoutSeconds: 30
  rules:
    - name: verify-signature-and-provenance
      match:
        any:
          - resources:
              kinds:
                - Pod
      verifyImages:
        - imageReferences:
            - "ghcr.io/enterprise-corp/*"
          mutateDigest: true
          verifyDigest: true
          required: true
          keyless:
            issuer: "https://token.actions.githubusercontent.com"
            subject: "https://github.com/enterprise-corp/*/.github/workflows/*@refs/heads/main"
            rekor:
              url: "https://rekor.sigstore.dev"
          attestations:
            - predicateType: "https://slsa.dev/provenance/v0.2"
              conditions:
                - all:
                    - key: "{{ builder.id }}"
                      operator: Equals
                      value: "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@refs/tags/v1.9.0"
                    - key: "{{ invocation.configSource.uri }}"
                      operator: Equals
                      value: "git+https://github.com/enterprise-corp/core-service@refs/heads/main"
```

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Sigstore Cosign & In-Toto SLSA Level 3 Cryptographic Provenance Invariant

Sigstore Cosign & In-Toto SLSA Level 3 Cryptographic Provenance Invariant defines an industrial-grade behavioral standard for devops engineering. Enforces strict keyless cryptographic signature verification and in-toto SLSA Level 3 provenance validation inside admission controllers (such as Kyverno or Sigstore Policy Controller) before any pod is scheduled in production. Workloads must resolve to immutable sha256 digests bound to ephemeral OIDC identity certificates rooted in Fulcio and recorded in the Rekor transparency log. Rejects mutable tags, unsigned blobs, and non-hardened builder environments lacking verifiable source-to-binary attestation. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Admitting Unsigned Containers or Unverified Build Provenance into Production Clusters Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftAdmitting Unsigned Containers or Unverified Build Provenance into Production ClustersCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS reference container images using immutable SHA-256 digests (`image@sha256

Engineers MUST ALWAYS reference container images using immutable SHA-256 digests (`image@sha256:...`) rather than mutable semantic tags (`image:latest`, `image:v1.2.0`).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Admission controllers MUST verify keyless Cosign signatures using Fulcio OIDC certificates matching the exact CI repository SAN and OIDC issuer URL.

Admission controllers MUST verify keyless Cosign signatures using Fulcio OIDC certificates matching the exact CI repository SAN and OIDC issuer URL.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Admission policies MUST validate In-Toto SLSA Provenance predicates (SLSA v0.2/v1.0) to guarantee the artifact was produced by an isolated, trusted builder (e.g., GitHub Actions reusable workflow builder).

Admission policies MUST validate In-Toto SLSA Provenance predicates (SLSA v0.2/v1.0) to guarantee the artifact was produced by an isolated, trusted builder (e.g., GitHub Actions reusable workflow builder).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Engineers MUST NOT configure static PGP/RSA public keys for long-term production signing

Engineers MUST NOT configure static PGP/RSA public keys for long-term production signing; keyless Fulcio/Rekor workflows are strictly mandated to eliminate private key exposure.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Workloads MUST be rejected immediately at the Kubernetes API admission boundary if Rekor transparency log entries or valid cryptographic attestations are missing or unparseable.

Workloads MUST be rejected immediately at the Kubernetes API admission boundary if Rekor transparency log entries or valid cryptographic attestations are missing or unparseable.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Sigstore Cosign & In-Toto SLSA Level 3 Cryptographic Provenance Invariant critical for AI coding assistants?

Enforces strict keyless cryptographic signature verification and in-toto SLSA Level 3 provenance validation inside admission controllers (such as Kyverno or Sigstore Policy Controller) before any pod is scheduled in production. Workloads must resolve to immutable sha256 digests bound to ephemeral OIDC identity certificates rooted in Fulcio and recorded in the Rekor transparency log. Rejects mutable tags, unsigned blobs, and non-hardened builder environments lacking verifiable source-to-binary attestation. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Admitting Unsigned Containers or Unverified Build Provenance into Production Clusters) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Sigstore