Sending files to a session
Agents work with what they can see. Uploading puts a file on the host, next to the session, and hands the agent its path, so “look at this screenshot” or “here is the failing log” works from any device.
On macOS
Section titled “On macOS”- Drag and drop files onto a session card. Several at once is fine.
- Or click the paperclip, Upload Files, in the card’s action pill and pick one file or several.
An overlay shows progress with an index/total count while a batch runs.
On iPhone and iPad
Section titled “On iPhone and iPad”The command bar has an upload button with three sources:
| Source | For |
|---|---|
| Photo Library | screenshots and images you already took |
| Camera | photograph something in front of you, right now |
| Files | anything already on the device or in iCloud Drive |
The camera path takes about five seconds: a whiteboard, a device screen or a sheet of paper, photographed straight into the agent’s context.
From the share sheet
Section titled “From the share sheet”Offsite is a share target. In Photos, Files, Safari or any other app, tap Share and pick Offsite: the sheet shows the files as cards to swipe through (the image, a PDF’s first page, the file’s icon for the rest), then the host, the workspace and the agent session the app last had in front, each changeable with a tap. Send copies the files over, opens Offsite and runs the same path as a drop on a session card: images stop in the annotation editor, the rest goes straight up, the paths land in the session’s prompt.
- The session list offers the workspace’s agent sessions (Claude, Codex, Grok), its worktrees’ sessions in their own groups, and New agent session: pick the agent, model and effort, and Offsite starts the session for the files when it opens. A plain terminal has no agent to read the files.
- Each file can be up to 30 MB; a larger one is marked in the sheet and stays behind, the rest is still sent.
- A host the app has not been connected to since the share target exists is listed too; its workspace and session are chosen in Offsite after the jump.
- If the chosen session is gone by the time Offsite runs the share, the app asks for a session with the files still in hand.
Images stop for a moment first
Section titled “Images stop for a moment first”An image on its way to a session opens in the annotation editor: circle what you mean, number it, write a line per number. The agent gets the marked picture and your notes as text. Anything that is not an image uploads directly, and the editor can be switched off in Settings. The film on Marking up what you send shows the whole way, from the drop on a card to the prompt.
What the agent sees
Section titled “What the agent sees”Each session has its own upload directory on the host. Uploaded files land there with a short random prefix and a sanitized filename, and the path is pasted into the session’s prompt so the agent can read it directly. Nothing is submitted; you add your words and press Enter.
Because the file is on the host, the agent can do real work with it: open it, diff it, run it through a tool, instead of only seeing an inlined image.
Details
Section titled “Details”- Upload path:
~/.offsite/uploads/<session-id>/<8 hex>-<name>on the host, for exampleuploads/s-1a2b3c4d/3f9c2a1b-crash.log. The prefix keeps two uploads with the same name apart. - Filenames are sanitized to
A-Z a-z 0-9 . _ -; a name that reduces to nothing becomesupload. Directory components are stripped, so an upload can never escape its session directory. - One file can be up to 32 MB. For anything larger, put it on the host with the Files card and give the agent its path.
- Uploads take files; a folder dropped on a card is skipped.
- Uploads are user-initiated only. An agent cannot pull a file off your device.
- The transport gives no per-byte progress, which is why a batch shows a spinner plus a file count rather than a percentage.
- Uploads are not cleaned up automatically; the directory is yours to prune.