| 1 | # Messages and context |
| 2 | |
| 3 | Give the agent a task in the composer. Add files, quote a previous response, or |
| 4 | include a skill when the task needs more context. |
| 5 | |
| 6 | Messages can contain up to 120,000 characters. Longer drafts stay in the composer |
| 7 | so you can shorten them or split them into several messages. |
| 8 | |
| 9 | Pasting 32 KiB or more of text adds that fragment as a text-file attachment so |
| 10 | the agent can inspect it without filling the model context. A smaller paste also |
| 11 | becomes an attachment when inserting it would exceed the message limit. On a |
| 12 | hardware keyboard, use `Cmd+Shift+V` on Apple devices or `Ctrl+Shift+V` elsewhere |
| 13 | to keep a large paste editable in the composer instead. |
| 14 | |
| 15 | ## Formatting |
| 16 | |
| 17 | The composer writes Markdown and shows it styled as you type. Markers such as |
| 18 | `**` stay in the text and show beside the styled words when your cursor is on |
| 19 | them. Lines starting with `- `, `1. `, `- [ ] `, `> `, `# ` or `---` become lists, |
| 20 | task lists, quotes, headings and rules; ` ``` ` followed by Enter opens a code |
| 21 | block. What you typed is what the agent receives, markers and numbering |
| 22 | included, and `#1234` without a space still looks up a pull request. |
| 23 | |
| 24 | Enter sends. In a list or quote, **Shift+Enter** continues it, and Shift+Enter |
| 25 | on an empty line leaves it; **Tab** nests a list item. In a code block, Enter |
| 26 | starts a new line at the current indentation, **Tab** and **Shift+Tab** indent |
| 27 | the selected lines, and a closing ` ``` ` followed by Enter, or two blank lines |
| 28 | at the end, leave the block. **Backspace** at the start of a code block turns it |
| 29 | back into plain lines. Choose the language in a code block's corner to change |
| 30 | it. Very large code blocks are shown without syntax highlighting. |
| 31 | |
| 32 | ## Attach files |
| 33 | |
| 34 | Attach up to 100 files per message. Each image can be up to 10 MiB, with at most |
| 35 | 80 MiB of images in one message. Other files, including videos, can be up to |
| 36 | 50 MiB each, subject to the environment's upload support and limit. The agent |
| 37 | receives them on the environment's machine. Provider and model limits still |
| 38 | apply, including images already in the conversation. A video attachment gives |
| 39 | the agent a file path; it does not enable native video input. |
| 40 | |
| 41 | Uploads begin when you add an attachment. All uploads must finish before the |
| 42 | message can send. Retry or remove a failed upload. On web and desktop, reloading |
| 43 | before an upload finishes requires you to attach that file again. |
| 44 | |
| 45 | You can drag or paste images into the web or desktop composer. HEIC and HEIF |
| 46 | photos are converted to JPEG there and when selected from the mobile photo |
| 47 | library; photos over the image limit are also resized to fit. On mobile, you can |
| 48 | also send files to T3 Code through another app's system share sheet. |
| 49 | |
| 50 | See [images and videos](#images-and-videos-in-messages) for previewing and saving media. |
| 51 | |
| 52 | ## Send while the agent is working |
| 53 | |
| 54 | On web and desktop, choose **Settings → General → Follow-up behavior** to queue |
| 55 | new messages for a later turn or steer the running turn immediately. The setting |
| 56 | applies to this client; already queued messages keep their place. Queued messages |
| 57 | are saved on the server and can be edited, reordered, or removed above the composer. |
| 58 | `Cmd+Enter` on macOS or `Ctrl+Enter` on Windows and Linux uses the opposite action: |
| 59 | it steers when your default is Queue and queues when your default is Steer. |
| 60 | |
| 61 | Use `Cmd+Shift+Enter` on macOS or `Ctrl+Shift+Enter` on Windows and Linux to send |
| 62 | the oldest queued message as a steer. This leaves the current draft intact and |
| 63 | requires an active turn that supports steering. Change |
| 64 | `thread.steerQueuedMessage` in **Settings → Keybindings** to use another shortcut. |
| 65 | |
| 66 | Press `Option+Up` on macOS or `Alt+Up` on Windows and Linux with the cursor at the |
| 67 | start of the composer to edit the most recently queued message. Change |
| 68 | `thread.editQueuedMessage` to use another shortcut. |
| 69 | |
| 70 | Mobile has the same choice under **Settings → Follow-ups**. While a turn is |
| 71 | running the send button shows which action it will take. Long-press it to use the |
| 72 | other action for a single message, or hold `Cmd` while sending from a hardware |
| 73 | keyboard. The button only offers Steer when the running agent supports it. |
| 74 | |
| 75 | ## Queue messages offline on mobile |
| 76 | |
| 77 | Mobile keeps local copies of draft attachments, so you can preview them and queue |
| 78 | messages while disconnected. Uploads resume when you reconnect. Drafts and queued |
| 79 | messages survive app restarts. Signing out of T3 Connect keeps that work on your |
| 80 | device until you sign back into the same account. |
| 81 | |
| 82 | ## Custom models |
| 83 | |
| 84 | On web and desktop, use Settings → Providers → **Models** to add an unlisted model with a custom |
| 85 | name and options. Only options supported by the provider integration affect turns. Antigravity |
| 86 | uses its account catalog and does not support custom models. |
| 87 | |
| 88 | To rename a built-in model on every client, edit the server's `settings.json` in its `userdata` |
| 89 | directory. Add a custom model entry with the built-in model ID and a new name under that provider |
| 90 | instance: |
| 91 | |
| 92 | ```json |
| 93 | { |
| 94 | "providerInstances": { |
| 95 | "codex": { |
| 96 | "driver": "codex", |
| 97 | "config": { "customModels": [{ "slug": "gpt-5.5", "name": "Team GPT" }] } |
| 98 | } |
| 99 | } |
| 100 | } |
| 101 | ``` |
| 102 | |
| 103 | ## Model defaults |
| 104 | |
| 105 | T3 Code remembers your provider, model, and model options for new threads. A |
| 106 | project's configured model takes precedence; resetting that project setting |
| 107 | returns to the remembered selection. |
| 108 | |
| 109 | Leaving reasoning level or service tier unset uses the provider's own configuration. |
| 110 | |
| 111 | ## Quote an assistant response |
| 112 | |
| 113 | On web and desktop, select text within one assistant response and choose |
| 114 | **Cite in composer**. You can add a comment about the quote and write instructions |
| 115 | around it. |
| 116 | |
| 117 | Select the quote in a draft or sent message to return to its source. If the source |
| 118 | is unavailable or has changed, the saved quote remains readable. |
| 119 | |
| 120 | The chip shows your comment when it has one, or a short quote preview otherwise. Use the pencil |
| 121 | button to add or change the comment. To remove the citation, place the caret beside its chip and |
| 122 | delete it like other inline context. Copying, reloading, and restoring a |
| 123 | [stashed prompt](#prompt-stash) keep each comment |
| 124 | with its quote, and sending tells the agent which words were quoted and which comment you wrote. |
| 125 | The quoted text and comment count toward the message limit. |
| 126 | |
| 127 | Mobile displays saved quotes and comments, but does not create citations or |
| 128 | navigate to their sources. |
| 129 | |
| 130 | ## Recall a sent prompt |
| 131 | |
| 132 | Press `ArrowUp` in an empty composer to bring back the last prompt you sent in this thread. Press |
| 133 | `ArrowUp` again to go further back, and `ArrowDown` to come forward. Moving forward past the newest |
| 134 | prompt clears the composer. Recall walks the prompts loaded in the thread. Attachments, terminal |
| 135 | context, and other extras from the original message are not restored, only the text you typed. A |
| 136 | composer that holds an attachment or a picked element does not count as empty. |
| 137 | |
| 138 | When the composer has text, the arrow keys move the caret as usual. Recall takes over only while |
| 139 | the text is an unedited recalled prompt, with the caret on the first visual line for `ArrowUp` or |
| 140 | the last visual line for `ArrowDown`, counting wrapped lines. Editing a recalled prompt turns it |
| 141 | into a normal draft. |
| 142 | |
| 143 | ## Edit an earlier prompt |
| 144 | |
| 145 | On web and desktop, choose **Edit from here** beneath a sent message to rewind |
| 146 | the conversation to before that message. Choose **Revert and keep changes** to |
| 147 | leave workspace files as they are, or **Revert files too** to restore them as well. |
| 148 | File restore is only offered for threads running in a worktree, and it is |
| 149 | refused when another thread or agent session also uses that directory, a folder |
| 150 | inside it, or a folder that contains it, since |
| 151 | restoring would erase their changes. A thread that works in the project directory |
| 152 | rewinds the conversation only. The selected prompt and its attachments return to the composer for editing and |
| 153 | resending. Any unsent draft stays above the restored prompt. |
| 154 | |
| 155 | This removes the selected message and later conversation from the active thread |
| 156 | and provider history. It does not undo external actions or separate provider |
| 157 | memory. The action is available only when the provider supports rewind. |
| 158 | |
| 159 | ## Prompt stash |
| 160 | |
| 161 | On web and desktop, press `Cmd+S` on macOS or `Ctrl+S` on Windows and Linux to save |
| 162 | the current prompt and its attachments for later. Wait for uploads to finish first. |
| 163 | With an empty composer, the same shortcut restores a single stash or opens the |
| 164 | stash menu when there are several. |
| 165 | |
| 166 | Stashes containing uploaded files must be restored in their original environment. |
| 167 | Those files are retained for 24 hours. After an upload expires, restore the prompt |
| 168 | and use **Attach again** or remove the missing file before sending. |
| 169 | |
| 170 | ## Voice input on iPhone |
| 171 | |
| 172 | On supported iPhones with iOS 26 or later, use the composer's microphone to record, |
| 173 | then confirm to transcribe. Text is inserted where your selection was when |
| 174 | recording started, ready for you to review and edit before sending. |
| 175 | |
| 176 | The first use may download Apple's speech model and needs a network connection. |
| 177 | Later transcription works offline for that language. Recordings can be up to five |
| 178 | minutes long. Canceling, leaving the screen, or an audio interruption discards the |
| 179 | recording and preserves your existing draft. While recording, the screen stays |
| 180 | awake; it can sleep normally once recording stops. |
| 181 | |
| 182 | Voice input records from the first connected microphone in **Settings → Microphone**. |
| 183 | The list mixes kinds (built-in, other wired, other Bluetooth, CarPlay) with wired and |
| 184 | Bluetooth devices you have dictated with, listed by name. Drag to rank them together: |
| 185 | for example, put **Other Bluetooth** above your AirPods so a new headset is preferred |
| 186 | while the AirPods microphone stays low. By default, CarPlay comes after the built-in |
| 187 | microphone. |
| 188 | |
| 189 | Transcription runs on your device. T3 Code deletes the temporary audio after |
| 190 | transcription or cancellation; only the message text is sent when you submit. |
| 191 | |
| 192 | ## Queued messages |
| 193 | |
| 194 | On web and desktop, the composer shows **Interrupt** while the agent is working and the draft is |
| 195 | empty. Adding text or attachments replaces it with a steer arrow. Click it to send a message into |
| 196 | the active turn, or press `Enter` on desktop. Hold `Cmd` on macOS or `Ctrl` on Windows and Linux to |
| 197 | switch the button to a queue icon. Click while holding that key, or press `Cmd+Enter` or |
| 198 | `Ctrl+Enter` on desktop, to queue the message for after the active turn. |
| 199 | |
| 200 | Queued messages appear above the composer. Rows show a thumbnail of any attached image alongside |
| 201 | the text. Drag a row by its handle to reorder it, use the handle's arrow keys, promote the message |
| 202 | to a steer, or remove it. |
| 203 | |
| 204 | If the server restarts, saved queued messages keep their order and are held. Press |
| 205 | **Resume** in an empty composer on web or desktop, or **Resume queue** in the queue |
| 206 | sheet on mobile, to continue. You can edit, reorder, or remove held messages without starting them. |
| 207 | |
| 208 | The pencil on a queued row opens that message in the composer for editing. The original message |
| 209 | stays in the queue until you save, and its row is highlighted while you edit. The message's |
| 210 | attachments appear above the text with a remove control, and new images can be added the usual way. |
| 211 | The checkmark saves the queued message in place; **Cancel** on its row leaves it unchanged. Whatever |
| 212 | you had typed in the composer before starting the edit is restored afterwards. If the queued |
| 213 | message starts or is removed while you are editing, the edit ends: changed content moves into the |
| 214 | composer when it is empty, and is discarded otherwise. |
| 215 | |
| 216 | ## Commands and skills |
| 217 | |
| 218 | Type `/` for commands or `$` to add a skill from the selected environment and |
| 219 | provider. On mobile, both are also available before starting a thread on |
| 220 | **New task**. |
| 221 | |
| 222 | The slash menu also includes skills unless you turn off **Settings → General → |
| 223 | Show skills in slash menu**. Only skills enabled for the provider are listed. |
| 224 | |
| 225 | After you add or change skills, plugins, or MCP servers, use **Restart agent |
| 226 | session** in the command palette on web and desktop. The conversation continues, |
| 227 | and your next message starts the agent again with the new setup. |
| 228 | |
| 229 | Provider commands must start the message to run. T3 Code commands such as |
| 230 | `/model` and `/plan`, and skill mentions, work on any line. |
| 231 | |
| 232 | Send `/compact` in an existing conversation to reduce context usage when the |
| 233 | provider supports it. Web and desktop also offer compaction from the context meter. |
| 234 | |
| 235 | ## Goals |
| 236 | |
| 237 | With Codex and Claude, send `/goal` followed by what "done" means, for example |
| 238 | `/goal all tests in packages/api pass`. The agent keeps working across turns |
| 239 | until it judges the goal met. The thread shows **Goal** while it works, and a |
| 240 | row above the composer shows the goal and its progress. |
| 241 | |
| 242 | - `/goal` alone shows the current goal. `/goal clear` removes it. |
| 243 | - Codex also supports `/goal pause` and `/goal resume`. Stopping a Codex goal |
| 244 | pauses it. |
| 245 | - Stopping Claude ends the current turn, but the goal stays set. Claude checks it |
| 246 | again at the end of your next message. |
| 247 | |
| 248 | ## Context in your message |
| 249 | |
| 250 | Context you attach lands where your cursor is, as a chip inside your text: a terminal excerpt, |
| 251 | a review comment from a diff or file, a preview annotation, or a file. You can type before and |
| 252 | after a chip, move it by cutting and pasting, and delete it like a character. Hover a chip for |
| 253 | its brief details. Select a terminal excerpt to open its captured output, or select a review |
| 254 | comment, picked element, or preview annotation to open its full details. Chips read as "Terminal |
| 255 | excerpt, Terminal 1 lines 3-4" and similar to screen readers. |
| 256 | |
| 257 | A pull request appears as its icon and number. Its color reflects whether it was open, draft, |
| 258 | merged, or closed when it was attached. Select it to inspect the captured title and branches, |
| 259 | then choose **Open pull request** to visit the pull request. On web and desktop, type `#` to browse the newest |
| 260 | pull requests in the current project's repository. Pull requests linked to the thread are included |
| 261 | from any repository and listed first, after any exact number match. Continue typing digits to filter the recent list |
| 262 | by any part of its pull request numbers. A complete number is also resolved directly, even when that |
| 263 | pull request is older than the recent list. Type a single word after `#` to search pull requests in |
| 264 | the repository by text. Choose a result to insert it as a chip. |
| 265 | |
| 266 | Another thread can be context too. Type `@` followed by part of its title to pick one from |
| 267 | the same server, or on web and desktop drag a thread out of the sidebar and drop it on the |
| 268 | composer; a multi-selection drops together. The chip shows the thread's current title and |
| 269 | opens it when selected. Your prompt only carries a reference: the agent reads the thread's |
| 270 | history on demand, so attaching a long thread costs nothing until the agent looks. Attaching a |
| 271 | thread does not change it, and the agent cannot send messages to it unless you ask. |
| 272 | |
| 273 | Dropping a thread from another environment attaches a saved transcript file. The source |
| 274 | environment must be connected and up to date. The transcript includes the visible history and |
| 275 | saved text context at the time of the drop; later messages and the contents of attached files |
| 276 | are not copied. The agent can read the saved transcript after the source disconnects. Normal |
| 277 | file attachment limits apply. |
| 278 | |
| 279 | Images keep their thumbnail shelf above the text and also get a chip at your cursor, so you can |
| 280 | say exactly which image you mean. Deleting an image chip leaves the image on the shelf; removing |
| 281 | the thumbnail asks first when the image is still mentioned in your text, then removes both. Files |
| 282 | exist only as chips: deleting a file's last chip removes the file from the message. |
| 283 | |
| 284 | Copy text that holds chips and paste it into another draft, in the same thread or another one, |
| 285 | and the chips come along with what they point to. Images and files are fetched again from the |
| 286 | environment they came from; while that happens the chip shows a dashed outline, and if it cannot |
| 287 | complete T3 Code tells you and leaves the chip for you to remove or replace. A chip whose |
| 288 | context is no longer available shows the same dashed outline; hover it for what to do. |
| 289 | |
| 290 | Copying a message with the copy button, or copying text out of it, gives other apps readable |
| 291 | Markdown with a link in place of each chip. Older messages that were sent before chips still |
| 292 | show their context. Stashing a prompt keeps its chips and what they point to; restoring brings |
| 293 | them back. |
| 294 | |
| 295 | On mobile, tap a chip to inspect its content. File references open the current file; attached |
| 296 | files show the copy that was attached to the message. |
| 297 | |
| 298 | ## Attached files |
| 299 | |
| 300 | Select a file chip in your draft or a sent message to preview it. Code and JSON use syntax |
| 301 | highlighting; Markdown, HTML, CSV, and TSV offer rendered and raw views. Audio files have |
| 302 | playback controls. Large text files show a limited preview; save the file to read it in full. |
| 303 | |
| 304 | On web and desktop, files open beside the conversation with the same controls as a workspace |
| 305 | file: a header row with the view toggle, **Copy contents** and **Save file**. On mobile, documents |
| 306 | open in the same file screen as workspace files; its menu holds **Copy contents**, **Save or |
| 307 | share** and **Open in file viewer**. Pictures, videos and PDFs keep their native viewers, and |
| 308 | other document formats such as Word or Pages open in the device's own viewer when it has one. |
| 309 | If nothing on the device can show a format, save or share it to open it elsewhere. |
| 310 | |
| 311 | ## Images and videos in messages |
| 312 | |
| 313 | Select an image or video attachment or link to preview it. Playback support depends |
| 314 | on your browser or device; save an unsupported video to open it in another app. |
| 315 | |
| 316 | On web and desktop, right-click media to save it or copy its path or URL. On mobile, |
| 317 | touch and hold an image or video thumbnail and choose **Save or share**. On iOS, |
| 318 | return to the thumbnail to open this menu after watching a full-screen video. |
| 319 | |
| 320 | File links refer to the environment's machine, including when you connect remotely. |
| 321 | Previews use the original file, even outside the workspace. Moving or deleting it |
| 322 | can break the preview, so save a copy if you need to keep it. |
| 323 | |
| 324 | ## Workspace files |
| 325 | |
| 326 | On web and desktop, Markdown files open in an editable preview. Select text to reveal |
| 327 | its Markdown syntax; changes save automatically. Use the source toggle to edit raw |
| 328 | Markdown. Control-click or Command-click a link to open it, or place the caret in the |
| 329 | link and press Control+Enter or Command+Enter. Open files and folders update when |
| 330 | files change on the environment's machine, including over a remote connection. |
| 331 | |
| 332 | ## Files outside the workspace |
| 333 | |
| 334 | Follow an agent's file link to read a report or other file outside the workspace. |
| 335 | These files open read-only. An HTML file outside the workspace cannot load scripts, |
| 336 | styles, or images from neighboring files. |
| 337 | |
| 338 | ## HTML and PDF files in the file viewer |
| 339 | |
| 340 | On web and desktop, HTML and PDF files open as rendered pages. Switch an HTML |
| 341 | file to source view to read its markup; a link to a specific line opens source |
| 342 | automatically. HTML previews cannot access your T3 Code session. |
| 343 | |
| 344 | The file viewer recognizes images, HTML, and PDF files by their filename extension, |
| 345 | including filenames or folders containing `#` or `?`. |
| 346 | |
| 347 | On mobile, select a PDF attachment or link to open it. iOS uses the native viewer; |
| 348 | Android opens a compatible installed file viewer. |