Attachments & account files
In the web chat you work with files in both directions: you attach what the agent needs to read and you receive what it produces. This page covers both.
Attach files to a message
Three ways to attach:
- Paperclip — the 📎 button in the composer opens the file picker (you can pick several).
- Drag and drop — drag files onto the window; the "Drop files to attach" area appears.
- Paste — paste a file (or an image from the clipboard) straight into the message field.
Each attachment shows up as a chip with an icon, name, size, and a progress bar. Images show a thumbnail. The × removes an attachment — including cancelling an upload in progress.
Sending waits for the upload
The file goes to storage before the message is sent. If you press Enter while an attachment is still uploading, the message isn't rejected: it is armed and goes out by itself when the upload finishes (the banner says "Uploading the attachment… the message will go out automatically when it's done").
If an attachment fails, sending is disarmed and you'll see "An attachment failed — remove it and send again." — remove the failed chip and resend.
Limits
| Limit | Value |
|---|---|
| Size per file | 50 MB |
| Total attachments per message | 150 MB |
| Attachments per message | 10 |
Accepted types
| Category | Extensions |
|---|---|
| Images | .png .jpg .jpeg .webp .gif |
| Documents | .pdf .docx .doc .odt .rtf |
| Spreadsheets | .xlsx .xls .ods .csv .tsv |
| Presentations | .pptx .ppt .odp |
| Text and code | .txt .md .json .yaml .yml .xml .html .css .js .ts .py .go .java .c .h .cpp .sh .sql .log .conf .ini .toml |
| Archives | .zip .tar .gz .tgz |
The server checks the file's actual signature — renaming an executable to .pdf doesn't fool validation. Archives that expand disproportionately are rejected too. If a type isn't accepted, the chat says "Unsupported type" before sending.
Where attachments live
Attachments are stored with the conversation: they appear in the message bubble (with a thumbnail, for images) and stay downloadable when you reopen the chat — including from another computer.
Because the run happens on the server and may start minutes later, the agent fetches the bytes from storage, not from your browser: closing the tab after sending interrupts nothing.
The Files panel
The Files item in the sidebar opens your account's file storage — what the agent delivered to you across conversations.
Each row shows the type icon, the name, the size, and the Download and Delete actions.
Available storage
At the top of the panel, a bar shows how much of your storage you've used. The default capacity is 100 MB per user; the percentage also appears next to the Files item in the menu and turns amber past 80%.
When storage runs out, you'll see "Your storage is full. Delete files to free up space." — remove what you no longer need.
Why some files show as "unavailable"
Download is offered only for files that are actually stored. An old file whose content no longer exists is marked as unavailable instead of showing a button that would break.
The file system the agent works in is ephemeral — it disappears when the run ends. Exactly two things survive: the files you attached and the files the agent delivered as results. Helper scripts, caches, and intermediates are gone by design.
Compared with the local surfaces
| Web chat | Desktop / TUI / VS Code | |
|---|---|---|
| Input | You attach the files | The agent reads from disk (@mention, + Context) |
| Output | Cards in the conversation + the Files panel | Files written to outputs/, generated-images/, etc. |
| Persistence | In your account, on the server (100 MB) | On your disk, with no product limit |
See Files & artifacts for the full picture across every surface.
See also
Was this page helpful?
Report a problem on this pageDo not send passwords, keys, tokens, or customer data.