Skip to content

Composer & slash commands

The message box keeps the selected chat’s name if its session row is briefly missing during a refresh. Switching to a different chat never borrows the previous chat’s name.

Action Keys
Send Return
New line ⇧ Return or ⌥ Return
Send, even inside a code block ⌘ Return
Stop the current run ⌘ .

Return sends when you type on a hardware keyboard: on a Mac, and on iPad or iPhone with a keyboard attached. On the on-screen keyboard, Return starts a new line, and you send with the Send button.

In a code block, between a pair of lines, <kbd>Return</kbd> starts a new line instead of sending, so you can type or paste multi-line code. This includes the opening line. ⌘ Return and the Send button still send.

Return does nothing when the message can’t be sent, such as when it’s empty, or it’s a slash command while you’re offline (⇧ Return still starts a new line). While you’re typing with an input method that composes text, such as Japanese or Chinese, Return confirms the candidate first; press it again to send.

If you’re offline, or a message can’t be sent, it stays in the chat marked Queued or Failed — Retry. See Offline sending & retry.

The message box is plain Markdown, and your message is sent exactly as you typed it. Pincer styles it as you go: bold looks bold, code is monospaced, headings are bold, and links take the accent color. The Markdown marks (**, _, `, #, list bullets and so on) stay in the text, dimmed. Nothing is hidden, so what you see is what’s sent. Inside a code block, no other styling applies.

Action Keys
Bold ⌘ B
Italic ⌘ I
Code ⌘ E
Strikethrough ⇧ ⌘ X
Link (with text selected) ⌘ K
Bulleted list ⇧ ⌘ 7 or ⇧ ⌘ 8
Numbered list ⇧ ⌘ 9
Quote ⌘ ’
Heading ⇧ ⌘ H
Indent or outdent a list item Tab / ⇧ Tab

The style shortcuts wrap your selection in its marks, or remove them if they’re already there. A selection that spans several lines is wrapped line by line. With nothing selected, they insert an empty pair and put the cursor between them. ⌘ K turns the selected text into [text](url) and selects url so you can paste a link. Press it again inside a link to unwrap it. With no text selected, ⌘ K still opens the command palette; use Link in the Format menu to insert [](url) without a selection. ⇧ ⌘ 7 adds or removes - on every selected line, and ⇧ ⌘ 9 does the same with 1., 2., 3.; either one switches lines that are already the other kind of list. ⌘ ’ adds > to every selected line, or removes one level of quoting when they’re all quoted. ⇧ ⌘ H makes the line a ## heading, or removes the heading. Formatting does nothing inside a code block. These shortcuts work on a Mac, and on iPad with a hardware keyboard.

  • A new line on a list item continues the list with the same indent and marker. Numbers count up (3. becomes 4.), and task items continue as - [ ] . Quotes (> ) continue too. Use ⇧ Return or ⌥ Return for the new line; Return still sends. On the on-screen keyboard, Return does it.
  • A new line on an empty item ends it. On a nested item, it moves the item out one level and continues the list there (2. after 1.). On a top-level item, it removes the marker and ends the list.
  • Tab indents the list item the cursor is on, and ⇧ Tab outdents it. The item takes the marker of the list it joins: a numbered item indented under 3. starts a new sublist at 1., and one outdented after 2. becomes 3.. On a list item, Tab indents instead of moving focus. ⇧ Tab on a top-level item does nothing. Anywhere else, Tab behaves as before, including while suggestions are showing. - Numbered lists stay in order. When you add, delete, indent or outdent an item, or paste lines into a list, the items after it are renumbered (one undo puts the numbers back). The first item keeps its number, so a list that starts at 3. still does. A blank line ends the list, and lines in a code block are never renumbered.
  • Typing </code> or `~~~` on its own line adds the matching closing fence below it and leaves the cursor after the opening one, so you can type a language and press <kbd>Return</kbd> to start the code. A fence only closes on the same character, at least as many of them, so a <code> line inside a ~~~ block is just code.
  • A line indented four spaces (or a tab) after a blank line is an indented code block, as in standard Markdown. It’s styled as code, and formatting, smart lists and paste conversion leave it alone. Indented lines under a list item stay part of the item.

On a Mac, use the Format menu in the menu bar, or right-click the message box and choose Format. On iPhone and iPad, select text and choose Format in the edit menu. It lists bold, italic, strikethrough, code, link, bulleted list, numbered list, quote and heading. On iPhone and iPad you can also show a formatting bar above the keyboard; it’s off by default.

When you paste from another app, such as a web page or a document, bold, italic, links, headings, lists, quotes and code come across as Markdown. Plain text is pasted as is. Code copied from Xcode, Terminal or VS Code is pasted as plain text, and anything you paste inside a code block is plain. Pasting a URL while text is selected turns the selection into a link, [selection](url). To paste without any conversion, choose Paste and Match Style: ⌥ ⇧ ⌘ V on a Mac, or the edit menu on iPhone and iPad. It always pastes plain text. Pasting an image or file still adds an attachment. Copying from the message box on iPhone and iPad copies plain Markdown.

In Settings → Chats, under Composer, turn off Style Markdown as you type to show your text plain. This only turns off the styling: the shortcuts, smart lists and paste conversion keep working. On iPhone and iPad, Show formatting bar adds the bar above the keyboard.

Styling skips text you’re still composing with an input method, such as Japanese, and catches up when you confirm it. You can try all of this in the built-in demo: the Release notes chat has a message written in Markdown.

In Settings → Privacy → Location, turn on Share location context with the agent. It starts off. With permission, Pincer requests a one-time location while the app is active and sends a recent fix as agent context. The context is separate from your message text. Pincer keeps the coordinates supplied by the device and reports the provider’s horizontal accuracy; system privacy settings may reduce precision.

Location acquisition happens separately from sending. If permission is denied, the device cannot obtain a fix, or the last observation is more than five minutes old, the message sends without location. Settings shows the current permission or acquisition status and offers recovery. Pincer uses one-shot requests while the app is active and clears its location cache when it goes into the background. This requires OpenClaw 2026.9.6 or newer; if an older Gateway explicitly rejects the work-context field, Pincer sends the authored message without location and shows a compatibility notice.

Slash and bang commands, edits, and regenerated messages do not add a new location. Share extensions do not acquire location. Queued messages retain the context captured when you sent them, and retrying does not replace it with your new position. Turning sharing off clears the device-location cache and stops future captures; to remove context already in a queued message, delete that message and send it again with sharing off. The Gateway can retain context metadata in chat history, but Pincer displays the original authored message text.

You can try the setting in the built-in demo; its canned reply can use the shared context while the user message remains unchanged.

After you choose Reply on a message (see Replies), a Replying to chip sits above the composer with who wrote the message and how it starts. The composer takes focus, so you can start typing. Send as usual and your message is sent as a reply to that one, and the chip goes away.

The composer takes focus immediately even for a very long message; the short opening preview fills in separately. Sending before that preview appears still quotes the message you chose. Changing or canceling the chip afterward does not change a reply you have already sent. While its quote is being prepared, later messages in the same chat wait their turn; other chats can continue sending. The chip shows only a short opening of the original message. If Pincer cannot prepare that opening, it keeps your draft and asks you to choose Reply again; it does not send an empty or outdated quote.

  • To cancel, click the ✕ in the chip, or press Esc. When slash command suggestions are showing, Esc hides them first.
  • Choosing Reply on another message replaces the one you’re replying to.
  • Each chat keeps its own reply while you switch between chats. Replies aren’t saved in drafts, so they’re gone after you quit Pincer.
  • Slash commands aren’t sent as replies. The chip stays for your next message.
  • Replies you send while offline are queued with the rest of your messages and still go out as replies. See Offline sending & retry.

The gateway gives the agent the message you replied to, so your text is sent as you wrote it. Older gateways don’t accept replies. With those, Pincer quotes the original at the start of your message instead, as > **Claw:** …, and keeps doing so on that connection.

Reply Last chooses the newest committed message that can receive a reply. A committed user message is available immediately. While Pincer checks a newly received assistant message, Reply Last can be unavailable briefly; it becomes available when the check finishes. It waits for the correct target instead of choosing an older message.

Paste or drag in images and files, or pick them with the + button next to the text box. It opens a menu:

  • On iPhone and iPad: Take Photo (only on devices with a camera), Photo Library (up to 6 photos at a time), Choose File… and Paste Image. The first time you take a photo, iOS asks for camera access. If you’ve turned it off, Pincer tells you to allow it in Settings → Privacy & Security → Camera.
  • On the Mac: Choose File… and Photos…, which picks from your Photos library.

Images are downscaled to fit the gateway’s limits before they’re sent. The + button is unavailable while attachments need a connection.

While you’re offline, attachments queue with their message and go out when you reconnect, even after quitting Pincer, up to the outbox’s size limit. Over the limit, the composer says Too large to queue offline — sends when you’re connected and keeps the message in your draft. See Offline sending & retry.

To send something from another app, use the share sheet. See Share to Pincer.

Click or tap the microphone button next to the text box and start talking. Your words appear in the text box as you speak. They go where your cursor is. If you’ve selected text, your words replace it once Pincer hears them; if you say nothing, the selection stays. If the text box isn’t focused when you start, they go at the end. Pincer never sends a dictated message on its own: read it over, fix anything, then send it as usual.

You can also press ⇧ ⌘ D (Dictate Message), or choose Dictate Message (Stop Dictation while listening) in the command palette. The palette command targets the window where you opened it, even if the same chat is open in another window. On an iPad, the shortcut works with a hardware keyboard. In split view, it toggles the pane you’re using. To change it, see Keyboard shortcuts.

Dictation stops when you:

  • click or tap the microphone again,
  • press Esc, which keeps the text,
  • start typing, or
  • send the message or switch to another chat. The text is kept as it is.

When you send while still listening, Pincer waits a moment for the last words to be recognized, so they’re included in the message.

Starting dictation stops Read Aloud if a reply is being read.

The first time, Pincer asks for permission to use the microphone and speech recognition. If you said no, the microphone button shows why and offers Open Settings, where you can allow it. On a Mac, that’s System Settings → Privacy & Security.

To keep your voice on the device, turn on Settings → Chats → Dictation → On-device only. When on, your speech is recognized on this device and isn’t sent to Apple. When off, Apple’s servers may be used for languages that don’t have an on-device model. If your language has no on-device model while it’s on, Settings says so (“On-device dictation isn’t available for language, so dictation won’t work while this is on.”), and the microphone button explains it and doesn’t dictate. Turn the setting off to use Apple’s servers.

The microphone button doesn’t appear if speech recognition isn’t available for your language.

Each chat keeps what you haven’t sent yet, both the text and any attachments, when you switch to another chat or quit Pincer. Come back and it’s still there.

  • Drafts are saved a moment after you stop typing.
  • A draft is deleted when you send it, when its chat is deleted, or when you remove its gateway.
  • Drafts stay on this device. They don’t sync.

Where drafts are stored, and how to turn them off, is in Security & privacy.

A small ring next to Send shows how full the chat’s context window is. It appears once the gateway has reported how many tokens the chat uses, and a limit is known.

  • The ring turns orange at 85% and red at 95%, and shows the percentage inside from 85%.
  • Hover over it for the numbers, such as “Context: 172k / 200k tokens (86%)”.
  • A “~” means the number is an estimate from before the last run. It doesn’t change color.

Click the ring for details:

  • Context Window (or Prompt Budget, when the session has one): tokens used, the limit and the percentage;
  • a hint when it’s filling up. At 95% the agent will compact on its own soon;
  • Last run: tokens in and out;
  • Instructions (optional) and Compact Now.

macOS

Context Window popover showing 172k of 200k tokens, optional instructions, and Compact Now.
Built-in demo, Lobster theme. Open the ring to inspect usage before compacting. Open image for full size.

iOS

iPhone Context Window showing 172k of 200k tokens and Compact Now.
Inspect the demo context usage before compacting. Open image for full size.

Compact Now summarizes older messages to free up room, like OpenClaw does on its own when the context is full. Add instructions to tell it what to keep. When it’s done, Pincer shows the result, such as “Compacted 172k → 31k tokens.”

Compact Now is greyed out while the agent is working. Wait for the current run to finish.

With Full Management and no instructions, Pincer asks the gateway to compact the session directly. Otherwise it sends /compact, or /compact followed by your instructions, as a message. Either way it stays the same chat. See Compaction.

Next to the model picker in the chat header, the thinking-level picker (the brain icon) shows how hard the agent thinks before it replies, and changes it for this chat. Only new messages use the new level. The choices are the levels the chat’s model offers, as the gateway reports them, such as Off, Low, Medium, High, Extra High and Ultra. Pincer uses the gateway’s own names for the levels when it sends them.

  • Default follows the level the chat inherits from its agent or the gateway, shown in brackets, such as Default (Medium). Hover over the picker to see “Thinking level: Medium (inherited default)”.
  • High and above (Extra High, Max, Ultra) are marked with an orange warning triangle, in the menu and in the header, because they can make replies much slower and cost more. A chat left on Ultra shows the warning until you change it. Adaptive lets the model decide and isn’t marked.
  • The picker is greyed out while the gateway is disconnected, for an agent’s home chat that has no messages yet, and when the gateway doesn’t report the model’s thinking levels. Hover over it (or listen to its VoiceOver hint) to see why; in the last case, use /think instead.
  • The level is saved on the gateway with the session, not on this device, so it applies to the chat wherever you open it, and a change made with /think shows up in the picker too.

On a compact iPhone layout, the picker is in the chat options menu, next to Model, titled with the current level, such as Thinking Level: Ultra. When the chat runs at High or above, the chat options button turns into an orange warning triangle, so a slow, costly level is visible without opening the menu, and VoiceOver reads it as, for example, “Ultra thinking, may be slower and cost more”. In the demo, Scout’s Paper digest chat is left on Ultra, and Forge’s chat inherits High.

A long model name in the header is shortened in the middle (for example claude-op…026-10-29), so the header’s other controls keep their place; hover over it or use VoiceOver for the full name. On iPad the model and thinking-level pickers are separate buttons in the header’s toolbar.

Type / to see the commands the gateway offers for this chat: built-ins, skills and plugins. After you pick one, Pincer suggests its arguments too:

  • listed choices, such as /verbose on;
  • the agent’s models, for /model;
  • the session’s thinking levels, for /think.
Action Keys
Move through suggestions ↑ ↓
Complete Tab or Return
Hide suggestions Esc
Send a complete command Return

A few notes:

  • /clear is sent as /reset, like the Control UI.
  • Gateways that don’t support commands.list get a built-in list of common commands.

On Mac, when suggestions are closed and the cursor isn’t on a list item, Tab and ⇧ Tab move to the next or previous keyboard control. Use ⌥ Tab to insert a tab in the draft. While suggestions are open, plain Tab completes the selected command.

With VoiceOver, moving through suggestions speaks the selected command or argument choice. Changing the query announces the number of suggestions, including when none match. Announcements pause while an input method is composing text or the caret is away from the end of the draft.

macOS

Slash command suggestions above the composer, including help, status, compact, and model.
Type / without sending it to browse available commands. This example uses the built-in demo. Open image for full size.

iOS

Slash command suggestions above the iPhone keyboard.
Type / to browse commands in the built-in demo. Open image for full size.
Command What it does
/reasoning on Save and stream the agent’s reasoning for this session.
/model Switch the session’s model.
/think Set the session’s thinking level.
/compact Summarize older messages to free up context. Add instructions after it to say what to keep.
/reset or /clear Start the session fresh.

The exact list depends on your gateway, its skills and its plugins.

On macOS, you can send to any chat from any app with ⌃ ⇧ Space, without switching to Pincer. See Quick Capture.

On compact iPhone layouts, a centered animated companion sits above the chat-name capsule in a compact header. Behind the header, the conversation is blurred with native materials, more strongly near the top of the screen, and washed toward the chat background (including your theme’s chat background color), so the status bar area reads as the page itself. The wash eases off across the chat-name capsule and the blur eases out a little below it, with no visible band edge, and the title and controls keep their glass styling. The header expands for larger accessibility text, and Reduce Transparency uses an opaque system background. The sidebar or back control stays on the left and chat options stay on the right. Open chat options for Model, Thinking Level, the branch menu when the chat has multiple branches, and Show Runs. The companion follows the same animation preference, Reduce Motion, and inactive-scene pauses as other agent avatars. Regular-width iPad, split view, and Mac keep their existing header controls.

Selected photos and files stay with the draft where you picked them, even if you switch chats while they are being prepared. The composer shows Preparing attachments… and waits to enable Send until that draft’s preparation finishes. Typing remains available. If you edit an earlier message, media selected for your normal draft stays with that saved draft and returns when you cancel the edit. Replacing a draft cancels its pending preparation, so other attachments don’t wait behind it; its results never appear in the replacement draft. If one photo or file takes more than a minute to read or prepare (an iCloud file that hasn’t downloaded, say, or a slow network drive), Pincer stops waiting, says … took too long to prepare. Try attaching it again., and moves on to the next attachment.

Send waits briefly for dictation’s final words. Cancelling an edit, replacing its draft, or leaving that composer cancels the pending send; the restored normal draft stays unsent.

When dictation is canceled and restarted, a delayed callback from the previous recognition cannot replace the new recognition’s words. This also protects the current final result when recognition ends without additional text.