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

  1. 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)