Inferensys

Prompt

Package Provenance and Attestation Verification Prompt

A practical prompt playbook for using Package Provenance and Attestation Verification Prompt in production AI workflows.
Operations team reviewing AI workflow automation on laptop, workflow builder visible, casual office setup.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the exact job-to-be-done, the ideal user, and the operational boundaries for the Package Provenance and Attestation Verification Prompt.

This prompt is designed for security engineers and DevSecOps teams who need to verify that a package update meets organizational supply chain security policies before it is merged or deployed. The core job-to-be-done is automated, consistent policy enforcement: you have collected raw provenance data and attestation bundles from a package registry or build system, and you need a structured verification report that compares expected versus actual provenance, flags missing attestations or unsigned artifacts, and checks compliance against your defined SLSA-based policies. The ideal user is a platform security engineer integrating this check into a CI/CD pipeline or a manual review workflow where every dependency change must pass a provenance gate before acceptance.

Use this prompt when you already have the input artifacts—a target package identity, its provenance file (such as an in-toto attestation), any available signature bundles, and a machine-readable policy definition specifying required levels, trusted builders, and expected source repositories. The prompt is designed to consume these structured inputs and produce a deterministic verification report with clear pass/fail criteria per policy rule. It works best as a step in a larger supply chain security pipeline, positioned after artifact collection and before merge or deployment approval. Do not use this prompt for initial package selection, vulnerability scanning, or license compliance; those are separate workflows covered by sibling playbooks in this content group. This prompt also does not perform dynamic analysis, reachability assessment, or exploitability scoring—it strictly verifies the integrity and policy compliance of the provenance trail.

Before wiring this prompt into production, ensure you have a reliable mechanism for collecting provenance data from your registries and build systems. The prompt assumes inputs are complete and well-formed; garbage provenance in will produce garbage verification out. You should also define your policy schema clearly—ambiguous policy rules lead to inconsistent verification results. For high-risk deployments, always pair this automated check with a human review step for any policy failures or edge cases the prompt flags with low confidence. The next section provides the copy-ready prompt template you can adapt to your specific policy structure and output format requirements.

PRACTICAL GUARDRAILS

Use Case Fit

Where this prompt works and where it introduces operational risk.

01

Good Fit: SLSA-Compliant Registries

Use when: packages originate from registries with stable, machine-readable attestation APIs (npm with Sigstore, Maven Central with SLSA, PyPI with PEP 740). The prompt reliably compares expected vs. actual provenance. Guardrail: pre-fetch attestation data and pass it as structured [CONTEXT] rather than asking the model to retrieve it.

02

Bad Fit: Proprietary or Internal Registries

Avoid when: the registry has no attestation API, uses custom signing, or requires VPN access. The model cannot verify what it cannot see. Guardrail: route to a human review workflow with a manual evidence checklist. Do not let the prompt hallucinate verification for unverifiable artifacts.

03

Required Inputs

Risk: missing or stale attestation data produces a false sense of security. Guardrail: require [PACKAGE_IDENTIFIER], [EXPECTED_PROVENANCE], [ACTUAL_ATTESTATION_PAYLOAD], and [POLICY_RULES] as explicit inputs. Validate each field is non-empty before invoking the prompt.

04

Operational Risk: Policy Drift

Risk: verification policies change (new SLSA level, new signature authority) but the prompt template is not updated. Guardrail: version the [POLICY_RULES] input separately from the prompt. Run a periodic eval suite that includes policy-violation test cases to detect stale rules.

05

Operational Risk: Volume and Latency

Risk: running this prompt on every dependency update in a large monorepo can saturate API rate limits and slow CI pipelines. Guardrail: batch verification for low-risk updates. Reserve per-package deep verification for new dependencies, major version bumps, and packages with recent security advisories.

06

Human-in-the-Loop Boundary

Risk: the prompt flags a critical attestation mismatch but the pipeline auto-approves. Guardrail: any output with verification_status: FAILED or policy_compliance: VIOLATION must block the CI pipeline and require human approval. The prompt is a decision-support tool, not an auto-approval gate.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A reusable prompt template for verifying SLSA provenance, attestations, and build signatures against your organization's supply chain security policies.

The following prompt template is designed to be wired into a package ingestion or CI/CD pipeline. It expects structured input from your package registry, build system, and policy store. Replace each square-bracket placeholder with real data before sending the prompt to the model. The prompt instructs the model to act as a supply chain security analyst, comparing expected provenance metadata against actual attestation data and flagging discrepancies, missing signatures, or policy violations. The output is a structured verification report suitable for automated gating decisions or human review queues.

text
You are a supply chain security analyst verifying package provenance and attestation integrity.

## TASK
Verify the provenance and attestation data for a package update against the organization's supply chain security policy. Produce a structured verification report.

## PACKAGE CONTEXT
- Package Name: [PACKAGE_NAME]
- Version: [PACKAGE_VERSION]
- Registry: [REGISTRY_URL]
- Digest (SHA256): [PACKAGE_DIGEST]

## EXPECTED PROVENANCE (from policy or trusted source)
- Expected Builder ID: [EXPECTED_BUILDER_ID]
- Expected Source Repository: [EXPECTED_SOURCE_REPO]
- Expected Build Invocation: [EXPECTED_BUILD_INVOCATION]
- Required Attestation Types: [REQUIRED_ATTESTATION_TYPES]
- Minimum SLSA Level: [MINIMUM_SLSA_LEVEL]

## ACTUAL PROVENANCE (from attestation bundle)
```json
[ACTUAL_ATTESTATION_PAYLOAD]

POLICY CONSTRAINTS

  • Allowed Builder IDs: [ALLOWED_BUILDER_IDS]
  • Required Signature Types: [REQUIRED_SIGNATURE_TYPES]
  • Blocked Source Repositories: [BLOCKED_SOURCE_REPOS]
  • Maximum Provenance Age (hours): [MAX_PROVENANCE_AGE_HOURS]
  • Require Non-Falsifiable Subject: [REQUIRE_NON_FALSIFIABLE_SUBJECT]

OUTPUT SCHEMA

Return a JSON object with the following structure: { "verification_status": "PASSED" | "FAILED" | "INCONCLUSIVE", "provenance_match": { "builder_id": { "expected": string, "actual": string, "match": boolean }, "source_repository": { "expected": string, "actual": string, "match": boolean }, "build_invocation": { "expected": string, "actual": string, "match": boolean }, "slsa_level": { "expected": string, "actual": string, "meets_minimum": boolean } }, "attestation_checks": [ { "attestation_type": string, "present": boolean, "signature_valid": boolean | null, "signer_identity": string | null, "policy_compliant": boolean, "finding": string } ], "policy_violations": [ { "rule": string, "severity": "BLOCKER" | "WARNING" | "INFO", "detail": string, "evidence": string } ], "missing_attestations": [string], "unsigned_artifacts": [string], "provenance_age_hours": number | null, "recommendation": "APPROVE" | "REJECT" | "MANUAL_REVIEW", "confidence": "HIGH" | "MEDIUM" | "LOW", "summary": string }

CONSTRAINTS

  • If any required attestation type is missing, set verification_status to "FAILED" and recommendation to "REJECT".
  • If the actual builder ID does not match the expected builder ID, flag as a BLOCKER policy violation.
  • If provenance age exceeds the maximum, flag as a WARNING and set recommendation to "MANUAL_REVIEW".
  • If signature validation cannot be performed due to missing public key material, set signature_valid to null and note the limitation in the finding.
  • Do not assume attestation content is trustworthy; cross-reference subject digest with the provided package digest.
  • If the attestation bundle is empty or unparseable, set verification_status to "INCONCLUSIVE" and confidence to "LOW".
  • Cite specific fields from the attestation payload as evidence for each finding.

EXAMPLES

[FEW_SHOT_EXAMPLES]

RISK LEVEL

[RISK_LEVEL]

To adapt this template for your environment, replace the [FEW_SHOT_EXAMPLES] placeholder with 2–3 annotated examples showing correct verification reports for known-good and known-bad attestation bundles. Set [RISK_LEVEL] to HIGH if the package has network access or runs in a production path, or STANDARD otherwise—this controls the strictness of the model's recommendation logic. The [ACTUAL_ATTESTATION_PAYLOAD] should be the raw attestation bundle from your registry (e.g., Sigstore bundle, in-toto attestation, or custom format), inserted as a JSON block. If your attestation format differs from SLSA/in-toto conventions, add a [ATTESTATION_FORMAT_NOTES] section describing field mappings before the output schema. Always validate the model's JSON output against the schema before acting on the recommendation, and route any MANUAL_REVIEW or INCONCLUSIVE result to a human security reviewer.

IMPLEMENTATION TABLE

Prompt Variables

Inputs the prompt needs to work reliably. Validate these before sending the prompt to avoid runtime errors or hallucinated analysis.

PlaceholderPurposeExampleValidation Notes

[PACKAGE_NAME]

Identifies the target package under review

lodash@4.17.21

Must match a valid npm/PyPI/Maven package name and version. Parse check: regex for name@version pattern. Reject if empty or contains only a namespace.

[PACKAGE_REGISTRY_URL]

Base URL of the package registry for fetching provenance metadata

Must be a valid HTTPS URL. Parse check: URL constructor succeeds. Reject non-HTTPS schemes. Default to the official registry for the ecosystem if null.

[ATTESTATION_BUNDLE]

The raw attestation bundle or file path to verify

attestation.json or inline JSON blob

Must be valid JSON. Schema check: top-level keys include payloadType, payload, signatures. Reject if not parseable. Null allowed only if the prompt is generating a request for attestations.

[EXPECTED_BUILDER_ID]

The expected SLSA builder ID for the trusted build environment

Must be a non-empty string. Validate against an allowlist of approved builder IDs if your policy enforces one. Reject if null when verification is required.

[POLICY_RULES]

A structured object defining required attestation predicates, signature requirements, and allowed materials

Must be valid JSON. Schema check: predicateType is a string, minSignatures is an integer >= 1. Reject if minSignatures is 0 or negative. Null allowed if using a default policy.

[SOURCE_REPOSITORY_URI]

The expected source repository for verifying the provenance subject

Must be a valid HTTPS URL. Parse check: URL constructor succeeds. Compare against the subject in the attestation payload. Reject if the hostname is not in an approved domain list.

[VERIFICATION_TIMESTAMP]

The time context for checking certificate validity and Rekor log entry inclusion

2024-05-15T14:30:00Z

Must be an ISO 8601 timestamp. Parse check: new Date() does not return Invalid Date. Reject future timestamps. Default to current UTC time if null.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Package Provenance and Attestation Verification Prompt into a CI/CD pipeline or security review workflow with validation, retries, and human escalation.

This prompt is designed to operate as a gating step in a CI/CD pipeline or as an asynchronous security review task. It should never be the sole decision-maker for blocking a production deployment. The harness must treat the model's output as a structured recommendation that requires deterministic policy enforcement and, for high-risk findings, human review. The primary integration points are: a pre-receive hook on package registries, a pull request check for manifest or lock file changes, or a scheduled audit job that re-verifies attestations for already-deployed packages.

Wiring the prompt into an application requires a multi-stage pipeline. First, a data collection stage must gather the package's provenance attestation (e.g., from Sigstore, a DSSE envelope, or a vendor's transparency log), the package's checksum, and the organization's verification policy (allowed signers, source repositories, and builder IDs). This stage should fail closed if the attestation cannot be retrieved. Second, the prompt execution stage sends the collected data to the model with the prompt template, requesting a structured JSON output that conforms to the [OUTPUT_SCHEMA]. Use a model with strong JSON mode and low latency for this task, such as gpt-4o or claude-3.5-sonnet. Third, a deterministic validation stage must parse the model's JSON output and enforce hard policy rules: if the model flags a missing attestation or a signer mismatch, the pipeline must independently verify this against the raw attestation data before acting. This stage should also check that the model's output schema is valid and that all required fields are present. If validation fails, retry the prompt once with a more explicit [CONSTRAINTS] block that includes the validation error. If it fails again, escalate to a human.

Logging and observability are critical. Every prompt execution should log: the package name and version, the attestation source URL, the full prompt and model response, the validation result, and the final pass/fail decision. This audit trail is essential for debugging false positives and for proving compliance during external audits. For high-risk or regulated environments, the harness must include a human approval gate for any finding categorized as HIGH severity or for any case where the model's confidence score (if included in the output schema) falls below a defined threshold. The approval queue should present the human reviewer with a diff view: the expected provenance attributes versus the actual ones, along with the model's analysis. The reviewer's decision (approve, reject, or override) should be logged and fed back into the system to improve future policy tuning. Do not use this prompt for real-time blocking of critical systems without a manual override and a fast rollback path.

IMPLEMENTATION TABLE

Expected Output Contract

Defines the structure, types, and validation rules for the verification report produced by the Package Provenance and Attestation Verification Prompt. Use this contract to parse the model's response and gate downstream workflows.

Field or ElementType or FormatRequiredValidation Rule

verification_id

string (UUID v4)

Must match regex ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

package_name

string

Must match the [PACKAGE_NAME] input exactly; case-sensitive comparison

package_version

string (semver)

Must match the [PACKAGE_VERSION] input exactly; validate against semver regex

overall_verdict

enum: PASS | FAIL | INCONCLUSIVE

Must be one of three allowed values; FAIL if any critical attestation is missing or signature verification fails

provenance_source

object

Must contain 'source_type' (enum: SLSA_BUILDER | REGISTRY | MANUAL) and 'source_uri' (valid URI); reject if source_type is MANUAL and no human approval flag is set

expected_provenance

object

Must contain 'builder_id', 'build_type', and 'source_repository' fields; compare against [EXPECTED_PROVENANCE] input and flag mismatches in 'delta_summary'

attestations_verified

array of objects

Each object must have 'attestation_type' (string), 'verified' (boolean), 'signer_identity' (string), and 'verification_error' (string or null); array must not be empty

policy_checks

array of objects

Each object must have 'policy_name' (string), 'passed' (boolean), and 'detail' (string); at least one policy check must reference [POLICY_RULES] input

missing_attestations

array of strings

If present, each string must match a known attestation type from the SLSA or in-toto specification; null allowed when no attestations are missing

unsigned_artifacts

array of strings

Each string must be a valid artifact digest in 'algorithm:hex' format; null allowed when all artifacts are signed

delta_summary

string

Must be non-empty; must explicitly mention any field where expected_provenance differs from provenance_source; must state 'No deltas detected' when all fields match

recommendation

string

Must be non-empty; must include one of: 'Proceed with update', 'Block update', or 'Manual review required'; must reference specific policy failures or missing attestations when not 'Proceed'

evidence_citations

array of strings

Each string must be a verifiable reference: builder log URL, transparency log entry, or attestation file path; array must not be empty for FAIL or INCONCLUSIVE verdicts

PRACTICAL GUARDRAILS

Common Failure Modes

What breaks first when verifying package provenance and how to guard against it.

01

Missing or Incomplete Attestation Data

What to watch: The model reports a clean verification when attestation files are absent, expired, or only partially present in the registry. This creates a false sense of security where unsigned artifacts pass review. Guardrail: Pre-fetch all attestation data and include a structured inventory in the prompt context. Require the model to explicitly list each expected attestation type and mark missing ones as MISSING before any verification logic runs.

02

Signature Verification Bypass via Hallucination

What to watch: The model fabricates signature verification results, claiming a signature is valid without actually checking cryptographic material. This is common when the prompt asks for verification but the model lacks tool access to perform cryptographic checks. Guardrail: Never rely on the model to perform actual cryptographic verification. Use deterministic tool calls for signature checking and pass only the tool output into the prompt. The model's role is comparing expected vs. actual results, not performing the math.

03

Provenance Chain Gaps in Transitive Dependencies

What to watch: The model verifies the direct dependency's provenance but ignores transitive dependencies that lack attestations entirely. Attackers target deep dependency chains where verification coverage is weakest. Guardrail: Include the full transitive dependency graph in the prompt context. Require the model to produce a coverage report showing what percentage of the total dependency tree has verified provenance, flagging any gaps below a defined threshold.

04

Policy Compliance Drift Over Time

What to watch: The model applies policy checks inconsistently across multiple verification runs, especially when policies are described in natural language rather than structured rules. This causes some updates to pass with violations that would have been caught in earlier reviews. Guardrail: Encode policy rules as a structured checklist or decision tree in the prompt. Require the model to output a per-policy pass/fail result with the specific rule reference, not a free-text compliance summary.

05

Build Environment Mismatch Blindness

What to watch: The model accepts provenance data that matches expected values but fails to detect that the build environment itself is compromised or differs from the organization's trusted builder pool. Provenance can be valid while the builder is untrusted. Guardrail: Include a trusted builder allowlist in the prompt context. Require the model to compare the attested builder identity against the allowlist and flag any provenance from unknown or unapproved build environments as requiring manual review.

06

Output Format Inconsistency Breaking Downstream Automation

What to watch: The model produces verification reports with varying field names, nested structures, or severity labels across runs, breaking CI/CD pipelines that parse the output for gating decisions. Guardrail: Provide a strict JSON schema in the prompt and validate the output against it before acting on the result. Use a retry loop with schema validation errors fed back to the model if the output doesn't conform.

IMPLEMENTATION TABLE

Evaluation Rubric

Criteria for testing the Package Provenance and Attestation Verification Prompt before production deployment. Each criterion targets a specific failure mode common in supply chain verification workflows.

CriterionPass StandardFailure SignalTest Method

Provenance Completeness Check

All expected attestation fields (subject, issuer, predicateType) are present in output for each artifact

Missing fields reported as 'not found' when they exist in the attestation bundle

Run against a known valid SLSA v1.0 provenance document and verify field extraction completeness

Signature Verification Status

Verification status correctly reports 'verified', 'failed', or 'missing' for each attestation signature

Verified signatures reported as 'failed' or unsigned artifacts reported as 'verified'

Test with a pre-signed attestation bundle and a deliberately tampered bundle; compare output to cosign verify results

Policy Compliance Accuracy

Policy violations correctly flagged when attestation data deviates from [POLICY_RULES]

Policy violations missed or false-positive violations on compliant attestations

Run against attestation bundles that intentionally violate one policy rule each and bundles that fully comply

Artifact-to-Attestation Mapping

Each [ARTIFACT_DIGEST] is correctly matched to its corresponding attestation entry

Artifact mapped to wrong attestation or orphan attestations not flagged

Provide a multi-artifact bundle with overlapping digests; verify one-to-one mapping correctness

Missing Attestation Detection

Artifacts without any attestation are explicitly flagged with severity level

Silent omission of unattested artifacts in the verification report

Submit a manifest containing both attested and unattested artifact digests; confirm unattested artifacts appear in output

Issuer Trust Evaluation

Issuer identity compared against [TRUSTED_ISSUERS] and correctly classified as trusted, untrusted, or unknown

Unknown issuer classified as trusted or trusted issuer flagged as untrusted

Test with attestations signed by a trusted issuer, an untrusted issuer, and an issuer not in the trusted list

Build Provenance Chain Integrity

Chain of provenance (materials, build steps, output artifacts) validated for logical consistency

Broken chain accepted as valid or intact chain incorrectly flagged as broken

Provide a provenance document with a deliberately broken materials-to-outputs chain and one with a valid chain

Report Structure Compliance

Output matches [OUTPUT_SCHEMA] exactly with all required fields populated and no extra fields

Schema violations, missing required fields, or hallucinated fields not in the schema

Validate output against the JSON Schema definition; reject any output that fails structural validation

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Wrap the prompt in a structured pipeline: extract attestation claims, validate against expected values, check policy compliance, and produce a machine-readable verification report. Add JSON schema enforcement and retry logic for malformed outputs.

Add explicit instructions for handling missing data, partial attestations, and ambiguous signer chains. Include confidence scoring per finding and require evidence citation for every claim.

code
You are verifying package provenance attestations.

Input:
- Attestation bundle: [ATTESTATION_JSON]
- Expected provenance: [EXPECTED_PROVENANCE_SCHEMA]
- Policy rules: [POLICY_RULES]

Output a strict JSON verification report following [OUTPUT_SCHEMA].
For each check, include:
- status: "pass" | "fail" | "missing_data" | "inconclusive"
- evidence: direct quote or field reference from attestation
- confidence: 0.0-1.0

If attestation data is missing, set status to "missing_data" and do not guess.

Watch for

  • Silent format drift when model subtly changes JSON field names
  • Missing human review gate for policy violations
  • Retry loops masking persistent extraction failures
  • Confidence scores that are consistently overconfident
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.