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.
Prompt
Package Provenance and Attestation Verification Prompt

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.
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.
Use Case Fit
Where this prompt works and where it introduces operational risk.
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.
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.
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.
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.
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.
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.
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.
textYou 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.
Prompt Variables
Inputs the prompt needs to work reliably. Validate these before sending the prompt to avoid runtime errors or hallucinated analysis.
| Placeholder | Purpose | Example | Validation 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 |
[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 |
[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 | {"predicateType": "https://slsa.dev/provenance/v1", "minSignatures": 1, "requireSourceURI": true} | Must be valid JSON. Schema check: |
[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 | |
[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: |
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.
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 Element | Type or Format | Required | Validation 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 |
Common Failure Modes
What breaks first when verifying package provenance and how to guard against it.
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.
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.
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.
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.
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.
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.
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.
| Criterion | Pass Standard | Failure Signal | Test 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 |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
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.
codeYou 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

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.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us