# Drafts, attachments and message editing

Canonical: https://synthcrew.io/docs/attachments

## Prepare a request [#prepare-a-request]

State the intended result, relevant dimensions or files, constraints and the checks you expect. Select the correct project before sending. `Enter` sends while the composer has focus; `Shift+Enter` adds a line. A failed connection or missing model should leave your draft available.

## Attach context [#attach-context]

Use the paperclip, select files and inspect their chips before sending. Remove anything unrelated. The app stages its own attachment copies so a later change to the selected source does not silently change the request's evidence.

Default bounds are **10 attachments**, **50 MiB per file** and **100 MiB total**. A rejected attachment must not erase the draft. Images require provider/model support; an attachment is supplied context, not permission to execute a program.

Only send material you are authorized to share with the remote provider. Local project storage does not mean AI inference is local. See [privacy and security](/docs/security).

## Edit a previous request [#edit-a-previous-request]

1. Find the latest editable user message and choose **Edit**.
2. Make the change, or choose **Cancel** to keep the original.
3. If a turn is running, stop it before resending an edited request.
4. Inspect the new run separately from the original revision.

Editing does not undo candidate files, roll back an applied model or inherit earlier Apply consent. Existing candidate work remains a separate artifact to inspect.

## Copy output [#copy-output]

Use the final-output Copy action for the assistant's combined response. Select text directly when you need an excerpt. Copying does not export candidate files or validate their contents.

## If something goes wrong [#if-something-goes-wrong]

Keep the draft and read the specific failure. For a size limit, remove or reduce only the rejected item. For missing credentials or models, restore the connection first and send deliberately—never assume the app retried automatically. For an interrupted request, follow [interrupted-run recovery](/docs/interrupted-runs).

