# Message Actions (https://www.librechat.ai/docs/features/message_actions)

# Message Actions

Message actions appear below a conversation turn when they are available. User turns use right-aligned bubbles, while assistant turns keep a full-width response layout. Actions that cannot apply to a response while it is still streaming are hidden until the response settles. On pointer devices, message metadata and controls reveal on hover or keyboard focus rather than requiring a click.

## Edit and Rerun

Choose **Edit** to change a user message or an editable assistant response. The editor offers two ways to apply the change:

- **Save** updates the existing message without generating another response.
- **Update & rerun** creates a new sibling response from the edited message.

Structured assistant responses use one editor for all editable text and reasoning parts. Tool calls, errors, artifacts, and text attached to tool calls remain visible but read-only. Empty edited parts cannot be saved.

If more than one assistant part changes, save the edits without rerunning; one rerun can carry one edited assistant part. Multi-part saves are applied in order, and any parts saved before an error remain reflected in the conversation.

Rerunning an edited user message preserves its files, selected manual Skills, and quoted context. Rerunning an edited assistant response replays the parent user turn with its selected manual Skills and quotes.

While editing, use `Ctrl`/`Cmd` + `S` to save, `Ctrl`/`Cmd` + `Enter` to update and rerun, or `Escape` to cancel.

## Copy and Fork

**Copy** writes the message text to the clipboard and converts supported citations into readable references. For structured assistant responses, LibreChat joins only the user-visible text parts in order; reasoning, tool calls, errors, artifacts, and text attached to tool calls are omitted. The action is unavailable for a response that is still streaming or has no copyable text, so it does not replace clipboard contents with a partial or empty value.

Use **Fork** to branch a conversation from a selected message. See [Forking Conversations](/docs/features/fork) for details. Endpoint and message state determine whether edit, rerun, continue, feedback, read-aloud, and fork actions are available.

## Quote Excerpts

Select text in a message and choose **Add to chat** to stage it as quoted context. You can attach up to 10 excerpts to one message, with up to 1,500 characters per excerpt. LibreChat sends the excerpts as Markdown blockquotes alongside the message text and any files.

During an active Agent run, quoted excerpts follow **Steer**, **Queue**, and **Interrupt & steer** messages and remain associated with the pending action across reconnects. On a current server, an ordinary queued follow-up also keeps its quoted excerpts through app restarts and replica handoffs. If an older replica cannot accept the quoted context during a rolling deployment, LibreChat returns it to the composer instead of silently dropping it. Manually selected Skills remain staged for the next full turn rather than being added to a mid-run steer. See [Steering and Queued Messages](/docs/features/agents#steering-and-queued-messages).

## Code Block Actions

Code blocks provide actions to copy their contents, run supported code through [Code Interpreter](/docs/features/code_interpreter), or download the block as a local file. Download names use the fenced language when possible, such as `code.py` or `code.tsx`; an unknown safe language hint becomes its extension, and an absent or invalid hint falls back to `code.txt`. Error blocks do not show the download action.

## Long Pasted Text

When the browser-local **Paste long text as a file** setting is enabled and [Upload as Text context uploads](/docs/features/upload_as_text#paste-long-text-as-a-file) are available, clipboard pastes longer than 2,500 characters become a `pasted-text.txt` attachment instead of filling the composer. Otherwise, the paste remains inline. Select the attachment before sending to edit the text in a larger dialog or choose **Move back into message** to return it to the composer.

LibreChat preserves pasted-text drafts and message provenance across normal draft restoration. Edits keep the original attachment until the replacement is ready, and starting an explicit **New Chat** clears the pasted text with the rest of the draft.

## Attachment-Only Turns

You can send one or more attached files without typing placeholder text. Attachment-only turns remain valid when editing and rerunning a message, and LibreChat uses attachment filenames when it needs title context.

An empty draft with no files is still rejected. Files also do not stand in for text while answering an Agent's paused **Ask User** form, because that response path accepts answer values rather than message attachments.
