paperclipai/paperclip · error
The requested file has no accessible delivery evidence. Use…
Error message
The requested file has no accessible delivery evidence. Use register_deliverable and cite deliverable:<attachmentId>, or cite an accessible work product registered by this run for this task. Empty evidence, prior-run output, and a verification result cannot substitute for the requested file. Continue publishing or report a concrete blocker; no human completion approval was created.
What it means
Final fallback in validateNativeDeliverableEvidence: a file was explicitly requested but no valid registered attachment was cited, and no registered work product for this issue/run carries an accessible http(s) URL cited in the refs. Empty evidence, prior-run output, and verification results do not substitute for the requested file, so the completion is rejected.
Solutions
- Call register_deliverable and cite deliverable:<attachmentId> from the receipt
- Or publish the file (e.g. via paperclip-page/S3) and cite the resulting https URL or work_product:<id> for a work product registered by this run for this task
- If delivery is impossible, report the concrete blocker in the completion report rather than claiming completion
Example fix
// before "The file is ready (verified via tests)." // after register_deliverable(out.csv) -> "Deliverable: deliverable:<attachmentId>" or cite "https://.../out.csv" work product
Defensive patterns
Strategy: fallback
Validate before calling
if (fileRequested && !citedAttachmentReceipt && !(await hasAccessibleWorkProductUrl(issueId, runId))) {
throw new Error("Publish the requested file (register_deliverable or accessible URL) before reporting completion.");
} Type guard
const accessibleProductCited = (product, refs) => typeof product.url === "string" && /^https?:\/\//i.test(product.url) && [product.url, `work_product:${product.id}`, `work-product:${product.id}`, `artifact:${product.id}`].some(r => refs.has(r)); Try / catch
try { await feedback(payload); } catch (e) { if (e.message.includes("no accessible delivery evidence")) { /* publish file or report concrete blocker instead of completing */ } else throw e; } Prevention
- Treat 'file requested' as a hard requirement: register_deliverable OR an accessible published URL/work product, always
- Never substitute test results, logs, or prior-run outputs as delivery evidence
- If publishing fails, report the blocker explicitly rather than claiming completion
When it happens
Trigger: nativeCompletionFeedback with fileRequested=true where the loop above registered no attachment (registeredAttachment stays false) and either no issueWorkProducts exist or none has an http(s) product.url matching refs (url, work_product:<id>, work-product:<id>, or artifact:<id>).
Common situations: Agent finished the file but never published it anywhere accessible; agent cites a verification command result as proof of delivery; work product was created without a public URL or with a non-http scheme; refs cite a work product from a different run.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Completion cites no registered attachment on this task. Use…
- A full lowercase source SHA is required.
- A reusable lease cannot be replaced and reacquired in the…
- A reusable lease handoff requires an execution workspace…
- A safe, unique --revision is required
AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-09-18).
Data as JSON: /api/errors/285fcf2855c67e42.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/services/native-runtime/native-deliverable-feedback.ts:151
if (localFile && (fileRequested || artifactRefs.has(value))) {
throw new Error("Completion cites a workspace-only file that the user cannot download. Before finishing, use register_deliverable for requested file outputs and cite deliverable:<attachmentId> from the receipt, with /api/attachments/<attachmentId>/content as the download link. For repository changes, cite an accessible PR or registered work product instead. No human completion approval was created.");
}
}
if (fileRequested && !registeredAttachment) {
const products = refs.size ? await db.select().from(issueWorkProducts).where(and(
eq(issueWorkProducts.companyId, binding.companyId), eq(issueWorkProducts.issueId, binding.issueId),
)) : [];
const accessibleProduct = products.some(product => {
if (product.createdByRunId !== binding.runId) return false;
if (["failed", "cancelled", "archived"].includes(product.status)) return false;
// A workspace_file resource is only a locator: registration neither checks
// its current bytes nor keeps them alive after workspace cleanup. Requested
// files need a published URL or the verified attachment receipt above.
const accessible = typeof product.url === "string" && /^https?:\/\//iu.test(product.url);
return accessible && [product.url, `work_product:${product.id}`, `work-product:${product.id}`, `artifact:${product.id}`]
.some(ref => typeof ref === "string" && refs.has(ref));
});
if (!accessibleProduct) throw new Error("The requested file has no accessible delivery evidence. Use register_deliverable and cite deliverable:<attachmentId>, or cite an accessible work product registered by this run for this task. Empty evidence, prior-run output, and a verification result cannot substitute for the requested file. Continue publishing or report a concrete blocker; no human completion approval was created.");
}
}
View on GitHub (pinned to 3f1d897a7c)