File Attachments
Attach files to tasks and messages — from the dashboard or directly from Claude Code via MCP. Share diffs, screenshots, specs, logs, and any other file as part of your human-agent workflow.
Overview
Attachments are files associated with a task or a message within a task. They can be added at two points: when a task is first created, or inline with any reply message. Every attachment is stored server-side and referenced by a unique UUID attachment ID.
- Images (PNG, JPG, GIF, WebP, SVG)
- Code files (.go, .ts, .py, .diff, etc.)
- Text documents and logs
- PDFs and documents
- Any binary file
- Stored server-side in AgentRQ
- Referenced by UUID attachment ID
- Scoped to workspace (private)
- Downloadable via MCP or dashboard
- Persisted for the lifetime of the task
Attaching Files from the Dashboard
The dashboard provides two places where you (the human) can attach files. These attachments become part of the task's message thread and are visible to both you and any connected Claude Code agent.
In the "New Task" dialog, the attachment area appears below the task body field. Drag and drop files onto it, or click to open a file picker. Multiple files can be attached in one go.
- Click the attachment zone or drag files directly
- Attach multiple files in one task creation
- Files appear as attachment chips before you submit
In the task detail view, the reply box includes an attachment button (paperclip icon). Attach files inline with your reply — they land in the message thread alongside your text.
- Click the paperclip icon in the reply composer
- Files appear inline in the message thread
- Download links shown for each attachment
spec.pdf or requirements.md when creating a task for Claude. Claude can then read it with downloadAttachment before starting work — no need to paste long documents into the task body.
Attaching Files from Claude Code
Both createTask and reply accept an optional attachments array. Each attachment object carries the file content as base64-encoded data so it can be transmitted over the MCP protocol and stored server-side.
Unique identifier for this attachment
Display name shown in the dashboard
MIME type (e.g. text/plain, image/png)
Full file content, base64-encoded
Example: Claude has finished reviewing code changes and wants the human to approve a diff before merging. It creates a task with the diff attached:
{
"title": "Review this diff",
"body": "I've made the changes — here's the diff for your review.",
"attachments": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"filename": "changes.diff",
"mimeType": "text/plain",
"data": "base64encodedcontent..."
}
]
}
The same pattern works with reply — Claude can attach a screenshot of a test result, a generated report, or error logs as part of a progress update:
{
"taskId": "TASK_ID",
"message": "Tests are passing. See attached output for details.",
"attachments": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"filename": "test-output.txt",
"mimeType": "text/plain",
"data": "base64encodedcontent..."
}
]
}
Downloading Attachments with downloadAttachment
When a human attaches a file to a task or message, Claude Code can retrieve it using the downloadAttachment MCP tool. The tool searches all tasks and messages in the workspace for the given attachment ID and returns the base64-encoded file content.
downloadAttachment(attachment_id: string)
Returns:
{
id: string,
filename: string,
mimeType: string,
data: string // base64-encoded file content
}
A typical workflow: the human attaches a specification document when creating a task, and Claude reads it before beginning work.
payment-spec.pdfdownloadAttachment("attachment-uuid-here") — receives base64-encoded PDF content// Claude calls downloadAttachment with the ID from the task
downloadAttachment("3f2504e0-4f89-11d3-9a0c-0305e82c3301")
// Returns:
{
"id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"filename": "payment-spec.pdf",
"mimeType": "application/pdf",
"data": "JVBERi0xLjQKJcfsj6IK..."
}
Best Practices
- Diffs and patch files for review
- Screenshots of errors or UI states
- Test output and logs
- Specification documents and PRDs
- Config files and environment templates
- Generated reports or summaries
- Keep individual file sizes reasonable — large binaries slow down transfer
- Attachments are stored server-side — avoid attaching sensitive credentials
- Self-hosters: back up the
_storagedirectory regularly - Images are displayed inline in the dashboard for quick review