July 24th, 2026
Improved
Integrations

Until now, the S3 node did one thing: watch a bucket and feed new files into a RAG flow. Useful, but limited: if you wanted to actually do something with a file, you were stuck writing custom code or bolting on another tool.
Not anymore. The S3 node now works in two modes, picked per node.

Trigger mode is the S3 node you already know: it watches a bucket on a schedule and syncs files into a flow for RAG. Unchanged, your existing flows keep working exactly as they did.
Action mode is brand new. Drop an S3 node anywhere in a flow and pick an operation from the Action dropdown: upload, fetch, list, move, copy, delete, check existence, read metadata, or manage folders. Ten operations, each showing only the fields it needs.
Upload File: write text, Markdown, JSON, CSV, or HTML into the bucket, straight from the flow. JSON gets validated before anything is written.
Upload File from URL: hands off a download to the bucket. Locked down since the URL is flow-controlled: only http/https, no private/internal addresses, capped at 100 MB / 120 seconds.
Get File / List Files in Folder: grab a signed URL for one file, or browse a folder with glob filtering.
Move / Copy File: relocate or duplicate files, even across buckets, with checks against overwriting a file with itself.
Delete File / Delete Folder / Create Folder / Get File Metadata: the rest of the toolkit.
Every action returning a URL lets you set Signed URL Expiry from 15 minutes to 7 days.

Point the new Endpoint field at Supabase Storage, MinIO, Cloudflare R2, or anything else speaking the S3 API; leave it empty, and it's AWS, as before. An AWS Region field was added too, used to sign requests correctly.

On the permissions side: Trigger mode still only needs read access. Action mode needs s3:PutObject (upload, copy, create folder) and s3:DeleteObject (delete, move) added to your IAM policy; we've documented a combined example so you're not guessing at the JSON.
One more small fix: Trigger mode's document_url used to be an s3:// path. It's now a signed HTTPS URL, valid for 5 hours, ready to use directly.