> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alpha.new/llms.txt
> Use this file to discover all available pages before exploring further.

# The composer

> Type, attach, dictate and mention: everything you can put in a message to the agent.

The composer is the box at the bottom of a session where you write to the agent: text, files, dictation, mentions and context picked from the workspace. Sending while the agent is still working has its own page, [Queue, steer or stop](https://docs.alpha.new/chat/queue-and-steer.md). For the composer before a session exists, see [The home screen](https://docs.alpha.new/sessions/home-screen.md).

![The Harbor bookings session, with the sidebar collapsed to a menu button at the top left, then the title Harbor bookings and the Codex mark. The chat takes the left quarter. It ends with the agent's message that three choices will shape the plan, a card titled The agent has questions with a green check, listing three questions each answered Left to the agent — it went with In app only, Until class starts and Current browser, and a Proposed plan card titled Automatic class waitlist with a copy button and a chevron. The composer below shows the placeholder Describe what to plan…, then the + button, the model chip reading gpt-6.… · high and the plan chip reading p… · on on the left, and the microphone and a dimmed round send button on the right. The workspace fills the rest. Its tab strip reads Plan, Preview (in front), Shell, Database, Secrets, README.md and server.js, then the round + button, and at the right end the GitHub button, Share, the Publish pill and the files button. Under it, the Preview toolbar shows the Desktop, Tablet and Mobile icons, Back, Forward, Reload, the port pill reading node · 3000 and Logs, with Draw, Select and Open in new tab at the right. The frame shows the Harbor Sailing School app: the headline Good days start on the water., a sailboat photo with a round LESS LAND MORE SEA badge, This week's classes with a count of 3 and the date pill Oct 26 – Nov 1, 2026 · This week, the filters All classes, Beginner, Intermediate and All levels, and three class cards: Beginner Dinghy, Wednesday, Oct 28, 09:00 – 12:00, with Maya Chen; Intermediate Keelboat, Friday, Oct 30, 13:00 – 16:00, with Oliver Brooks; and Sunset Sail, Saturday, Oct 31, 16:30 – 18:30, with Sophie Laurent.](https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/chat/chat-composer-overview.png?fit=max\&auto=format\&n=ObBpayiae_4aNgzN\&q=85\&s=788f6d241307bc80b0bfecd457f798ef)

Settings sit on the left of the composer. Voice and send sit on the right.

| Control | What it does |
| - | - |
| **+** (**Add Attachment**) | Uploads files into the session's machine |
| Model chip | Shows the model, plus the reasoning effort once you've picked one. Click it, or type `/model`, to [change them](https://docs.alpha.new/chat/agents-and-models.md). |
| **plan** chip | Opens a picker that turns [plan mode](https://docs.alpha.new/chat/plan-mode.md) **On** or **Off**. The chip reads **plan · on** while it's on. <kbd>⇧</kbd><kbd>Tab</kbd> switches it from the keyboard. |
| Microphone | Dictates into the composer |
| **↑** (**Send message**) | Sends the message |
| Square stop button (**Stop generating**) | Replaces send while the agent works and the composer is empty. It stops the turn, as <kbd>Esc</kbd> does. |

While the agent works and you've typed something, the send button queues or steers instead. Its tooltip names your default, such as "Queue · ⌘⏎ to steer".

## Send a message

Press <kbd>Enter</kbd> to send and <kbd>⇧</kbd><kbd>Enter</kbd> for a new line. A session still called "New session" takes its name from your message; `/rename` changes it later.

The placeholder tells you what the next message will do:

| Placeholder | When you see it |
| - | - |
| "Describe what to build — / for commands, @ for files…" | The agent is idle, plan mode is off and the session isn't a routine |
| "Describe what to plan — the agent explores and asks, then proposes a plan…" | Plan mode is on |
| "What should run, and when? The agent builds, tests and schedules it…" | The session is a [routine](https://docs.alpha.new/routines.md) |
| "Add a follow-up" | The agent is working, so your message queues or steers |

In a narrow composer the longer placeholders are cut to their first half, such as "Describe what to build…".

One message can be up to [100,000 characters](https://docs.alpha.new/reference/limits.md). A longer one is refused with "prompt too large", so attach long text as a file. If a send fails, the banner says why and your text goes back into the composer.

## Attach files

Click **+** or drag files onto the composer. Each file uploads as soon as you attach it, not when you send, into `/workspace/uploads/` on the session's machine, where the agent opens it with its ordinary tools. Attaching wakes a sleeping machine.

Your message gains one line per file, such as `[Attached file: uploads/harbor-classes.csv (12.4 KB)]`. Images up to [15 MB](https://docs.alpha.new/reference/limits.md) also reach the model as pictures, so a screenshot of a bug or a design works. A larger image arrives only as a file.

| You do | What happens |
| - | - |
| Attach a file whose name is taken | Alpha renames it, so `report.md` becomes `report-1.md` |
| Send before an upload finishes | The message shows at once with "Sending once the upload finishes…" and goes when the file lands |
| Click an image tile | Opens the image larger |
| Click a tile's X (**Remove file**) | Removes the tile and deletes the file from the machine |

Each file can be up to [256 MB per file (default)](https://docs.alpha.new/reference/limits.md). If an upload goes wrong, you see one of these. [Troubleshooting](https://docs.alpha.new/reference/troubleshooting.md) covers the rest.

| Message | Meaning |
| - | - |
| A red alert icon on the tile | The upload failed. Hover the tile for the reason ("Upload failed" when there is none), then remove it and attach the file again. |
| "An attachment failed to upload — the message wasn't sent." | A file that was still uploading when you sent failed. Your text is back in the composer. |
| "The session was switched before the upload finished — the message wasn't sent." | You sent, then opened another session before a file finished uploading. The message goes back into its own session's composer, so go back and send it again. |

Sent files show as tiles above your message in the transcript. [Files and uploads](https://docs.alpha.new/workspace/files.md) covers the `uploads` folder.

## Mention files, sessions and skills

Three characters open a list above the composer. Use <kbd>↑</kbd> <kbd>↓</kbd> to move, <kbd>Enter</kbd> to pick, and <kbd>Esc</kbd> to close.

| Type | Lists | Notes |
| - | - | - |
| `/` at the start of the message | Commands | Opens only when the message is the command. Codex commands Alpha doesn't run yet show **not in Alpha yet**. See [Slash commands](https://docs.alpha.new/reference/slash-commands.md). |
| `@` | Files and folders in the session's workspace | Up to 50 matches, with the matching letters highlighted. Picking one inserts `@path`, drawn as a badge. |
| `@session:` and one word | Your other sessions whose messages or title contain that word | Up to 15 sessions. Picking one inserts a link the agent can open and read. |
| `$` | The skills the agent can use | Codex sessions. Picking one inserts `$skill-name`. |
| `/` after other text | The skills the agent can use | Claude Code sessions, where a skill runs as `/name` |

You can also drag a file or folder from the file tree onto the composer to mention it. <kbd>Backspace</kbd> at the end of a mention removes all of it. [Skills](https://docs.alpha.new/skills/overview.md) explains what a skill adds.

### Point the agent at another session

Type `@session:` and a word from the session you mean, such as `@session:booking`. Each hit shows the session's title, the date it was last active and a line from where the word matched. The search takes one word: a space after it closes the list. The session you're in is never listed.

## Dictate a message

Click the microphone, or tap <kbd>⌘</kbd><kbd>.</kbd>, to start dictating. Tap again to stop. To talk only while you hold the keys, hold <kbd>⌘</kbd><kbd>.</kbd> and let go when you're done. Use Ctrl instead of ⌘ on Windows and Linux.

Speak any language; Alpha writes it in English. Text you type while dictating is never overwritten. After you stop, the button spins and its tooltip reads "Finishing…" while the last words settle. A dictation runs for up to [2 minutes](https://docs.alpha.new/reference/limits.md), then stops by itself.

| Message | Fix |
| - | - |
| "Microphone access was blocked — allow it in the browser to dictate." | Allow the microphone for Alpha in your browser's site settings |
| "Voice input disconnected — press the mic to try again." | Click the microphone again |
| "Voice input can't use this microphone's sample rate (…)" | Pick another microphone in your system or browser settings |

> [!NOTE]
>
> If you don't see the microphone, voice input isn't turned on for your Alpha, or your browser doesn't support it.

## What happens to my unsent text?

Alpha keeps your unsent text in this browser, one draft per session. Sending clears it.

| Event | Your draft |
| - | - |
| You reload, close the tab or switch sessions | The text is kept. Attachments are not. |
| The same session is open in two tabs | Both share one draft, and the last tab you typed in wins |
| The text looks like a key | It isn't saved to the browser at all |
| You sign out of Alpha | Every draft in this browser is cleared |

When the composer holds something shaped like a known key, a warning appears above your text: "That looks like an OpenAI API key. Keys typed here land in the transcript — add it under Secrets instead, and the agent gets it as an environment variable." A GitHub token points you to the **GitHub** tab instead. The warning never blocks sending.

> [!WARNING]
>
> A key you send stays in the session's transcript, readable by anyone you [share the session](https://docs.alpha.new/sharing.md) with. Alpha hides saved secrets' values in the transcript, but a key typed into a message isn't a saved secret. Add keys under [Secrets](https://docs.alpha.new/secrets.md) instead.

## Pick up a suggested next prompt

Claude Code only

After a turn, a Claude Code session may show a chip above the composer holding the prompt Claude Code predicts you'll want next. Hover it to read the whole prompt. A click replaces anything in the composer and sends the suggestion at once, so read it first. Codex sessions don't show these chips.

## Add context from the workspace

Selections and picks from the workspace wait above your text as chips: a selection in the code editor or a viewer (**Add to prompt**), an element picked in the Preview with **Select**, or the Preview's logs (**Attach the last lines to your next message**). Each chip has an X to remove it. On send, each chip's context goes ahead of your text, so the agent knows exactly which lines or element you mean. Marked-up pictures from **Add to chat** arrive as image attachments. [Point at and draw on your app](https://docs.alpha.new/workspace/point-and-draw.md) shows every source.

## Next steps

> **[Queue, steer or stop](https://docs.alpha.new/chat/queue-and-steer.md)**
>
> Send while the agent works: wait your turn, join the running turn, or stop it.

> **[Point at and draw on your app](https://docs.alpha.new/workspace/point-and-draw.md)**
>
> Pick an element in the Preview or mark up a screenshot, and it lands in the composer.

> **[Slash commands](https://docs.alpha.new/reference/slash-commands.md)**
>
> Every command in the `/` list, for Codex and Claude Code sessions.

> **[Secrets](https://docs.alpha.new/secrets.md)**
>
> Where API keys belong, so they never land in the transcript.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.