paperclipai/paperclip · error · Error
No active conversation issue is available for image…
Error message
No active conversation issue is available for image attachments.
What it means
Error "No active conversation issue is available for image attachments." thrown in paperclipai/paperclip.
Solutions
- Open an active conversation issue before attaching images.
When it happens
Trigger: Thrown at ui/src/pages/Pipelines.tsx:2401 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-08-18).
Data as JSON: /api/errors/926406b06187de7d.
Report an issue: GitHub.
Appendix: source
Thrown at ui/src/pages/Pipelines.tsx:2401
targetId: commentId,
vote,
reason: options?.reason,
allowSharing: options?.allowSharing,
});
await queryClient.invalidateQueries({ queryKey: queryKeys.issues.feedbackVotes(conversationIssueId) });
}, [conversationIssueId, queryClient]);
const handleConversationImageUpload = useCallback(async (file: File) => {
if (!conversationIssueId || !conversationCompanyId) {
throw new Error("No active conversation issue is available for image uploads.");
}
const attachment = await issuesApi.uploadAttachment(conversationCompanyId, conversationIssueId, file);
return attachment.contentPath;
}, [conversationCompanyId, conversationIssueId]);
const handleConversationAttachImage = useCallback(async (file: File) => {
if (!conversationIssueId || !conversationCompanyId) {
throw new Error("No active conversation issue is available for image attachments.");
}
return issuesApi.uploadAttachment(conversationCompanyId, conversationIssueId, file);
}, [conversationCompanyId, conversationIssueId]);
const handleDeleteConversationComment = useCallback(async (commentId: string) => {
if (!conversationIssueId) return;
await issuesApi.deleteComment(conversationIssueId, commentId);
await queryClient.invalidateQueries({ queryKey: queryKeys.issues.comments(conversationIssueId) });
}, [conversationIssueId, queryClient]);
const handleInterruptConversationQueuedRun = useCallback(async (runId: string | null) => {
if (!conversationIssueId) return;
try {
await issuesApi.interruptLatestQueuedComments(conversationIssueId, runId);
pushToast({ title: "Interrupt requested", body: "Queued messages will be sent when the previous run has stopped.", tone: "success" });
} catch (error) {
pushToast({ title: "Interrupt failed", body: error instanceof Error ? error.message : "Unable to send queued messages", tone: "error" });
} finally {View on GitHub (pinned to 3f1d897a7c)